Présentation
EnglishRÉSUMÉ
Entre le ou les processeurs d'un ordinateur et les organes de stockage existe une hiérarchie de mémoires, dont les temps d'accès augmentent et les débits diminuent lorsqu'on s'éloigne des processeurs. Cet article décrit les principes et le fonctionnement de cette hiérarchie comprise entre un processeur et la mémoire principale, pour les architectures monoprocesseurs et les architectures parallèles multiprocesseurs et multicoeurs. Après avoir introduit les principes de base et les techniques d'amélioration des performances, les protocoles de cohérence sont introduits ainsi que les relations entre les caches et l'autre partie de la hiérarchie, entre la mémoire principale et les mémoires secondaires. Les principales optimisations logicielles tenant compte des propriétés des caches sont également introduites.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
Daniel ETIEMBLE : Ingénieur INSA Lyon - Professeur à l'université Paris Sud
-
François ANCEAU : Ingénieur INPG Grenoble - Professeur émérite au CNAM
INTRODUCTION
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.
MOTS-CLÉS
fonctionnement des caches cohérence des caches Caches multiprocesseurs et multicoeurs Optimisations logicielles
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
2. Fonctionnement des caches
2.1 Principe de localité
L'utilisation d'une telle hiérarchie mémoire se base sur le caractère non uniforme des accès aux instructions et aux données dans la plupart des programmes informatiques, résumés parfois sous la forme de règle des 10 %-90 % : une minorité des instructions s'exécutent pendant la majorité du temps, et la majorité des instructions ne représentent qu'une faible partie du temps d'exécution. Cette non-uniformité des accès mémoire est encore appelée principe de localité, qui se manifeste sous deux aspects.
– Le premier aspect est spatial : lorsqu'une référence mémoire intervient, il y a de grandes chances pour que la prochaine référence mémoire soit pour une adresse voisine. Les instructions sont en séquence entre les branchements. Il existe des zones propres à chaque programme pour placer les données. De plus, les éléments des tableaux à une dimension sont placés à des adresses successives.
– Le second aspect est temporel : lorsqu'une référence mémoire est effectuée, il y a de grandes chances qu'elle soit à nouveau effectuée très bientôt ou très rarement, voire jamais. Le premier cas correspond aux parties principales des programmes qui sont le cœur de l'exécution et au fait que les données sont structurées et que ce sont souvent les mêmes données qui sont accédées. Le second cas, où il n'y a pas de localité temporelle, correspond aux initialisations, au traitement des cas exceptionnels des programmes…
Organiser la hiérarchie mémoire de telle sorte que les références les plus fréquentes correspondent à des instructions ou des données situées dans un cache conduit donc à une amélioration de performance significative. Nous avons vu que la hiérarchie mémoire est constituée de plusieurs niveaux de caches : L1, L2, L3. Lorsque les processeurs ne disposaient que d'un niveau de cache, comme pour le processeur Intel 80386, le niveau suivant était la mémoire principale et les requêtes provenaient du processeur. Avec plusieurs niveaux de cache, les niveaux successifs sont L1-L2, L2-L3 (lorsque L3 est présent) et L2-MP ou L3-MP. La figure 5 illustre le cas général entre deux niveaux successifs de la hiérarchie.
Pour un niveau de cache, l'unité de stockage d'information (instructions ou données) est appelée ligne. Elle est...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Fonctionnement des caches
BIBLIOGRAPHIE
-
(1) - HEWLETT PACKARD - Memory technology evolution : an overview of system memory technologies. - Technology brief, 9th edition (2010).
-
(2) - HENNESSY (J.-L.), PATTERSON (D.) - Architecture des ordinateurs – Une approche quantitative. - Vuibert Informatique (2003).
-
(3) - SICOLO (J.E.) - A multiported nonblocking cache for a superscalar uniprocessor. - MS Thesis, University of Illinois at Urbana Champaign (1992) http://impact.crhc.illinois.edu/ftp/report/ms-thesis-jim-sicolo.pdf.
-
(4) - ROTENBERG (E.), BENNETT (S.), SMITH (J.E.) - Trace cache : a low latency approach to high bandwidth instruction fetching. - In Proceedings of the 29th International Symposium on Microarchitecture, p. 24-34, déc. 1996.
-
(5) - KIN (J.), GUPTA (M.), MANGIONE-SMITH (W.H.) - The filter cache : an energy efficient memory structure. - In Proc. 43rd Hawaii International Conference on System Sciences (HICSS), p. 1-8, janv. 2010.
-
...
DANS NOS BASES DOCUMENTAIRES
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive