L'objectif de ce dossier est l'étude de la hiérarchie de
mémoires caches situées entre le ou les processeurs d'un ordinateur et la mémoire principale
. Il existe une différence de performance énorme entre les vitesses de fonctionnement d'un processeur et, plus généralement, les temps d'accès et les débits de transferts entre éléments de mémorisation situés sur une puce électronique et les temps d'accès et débits entre puces différentes. Entre un processeur et sa mémoire principale, il existe une hiérarchie de caches, certains sur la puce du processeur, et d'autres sur des puces externes, qui jouent le rôle d'adaptateurs de débit et de temps d'accès car les débits diminuent et les temps d'accès augmentent lorsque l'on s'éloigne du processeur. L'autre partie de la hiérarchie mémoire, située entre la mémoire principale et les disques et autres unités de stockage, fait l'objet d'un autre dossier.
Ce dossier présente les
principes de fonctionnement des caches
et les
techniques matérielles permettant d'améliorer les performances
, que ce soit pour des systèmes bas de gamme monoprocesseur, des systèmes avec processeur exécutant plusieurs instructions par cycle ou des systèmes parallèles utilisant des processeurs multicœurs ou des clusters de multicœurs. Les différentes techniques permettant d'assurer la cohérence des caches sont notamment présentées, des protocoles centralisés ou décentralisés de base aux protocoles pour architectures hiérarchiques.
Les
techniques pour limiter l'impact des caches
et les
relations entre le fonctionnement des caches et les mémoires secondaires
, notamment les traductions d'adresse liées à la mémoire virtuelle, sont également abordées.
Si le dossier se focalise essentiellement sur les techniques matérielles d'implantation de la hiérarchie de caches, l'
impact des caches sur les temps d'exécution des programmes
est souligné
via
la présentation des techniques d'optimisation logicielles classiques prenant en compte l'existence des caches.