Définition
Une organisation en couches des ressources de stockage et de cache (registres, plusieurs niveaux de cache, mémoire principale, stockage secondaire, niveaux d'archivage) agencées pour équilibrer capacité, latence, bande passante et coût afin que les accès fréquents soient servis par le niveau le plus rapide disponible.

Principe

Principe
Exploiter la localité de référence et les compromis coût/latence en disposant des niveaux de stockage où des couches plus petites, plus rapides et plus coûteuses conservent des sous-ensembles de données pour réduire le temps d'accès moyen et le coût global des ressources.

Démonstration

Démonstration
Un processeur exécutant un code qui accède de façon répétée à un petit ensemble de travail : les valeurs se trouvent d'abord dans les registres ou le cache L1, sinon dans les caches L2/L3, puis dans la DRAM et enfin sur SSD/HDD si elles ne sont pas présentes. Scénario illustratif : accélération d'une application lorsque les données chaudes tiennent dans les caches L1/L2 plutôt que de subir des attentes sur la DRAM ou l'E/S.

Mauvaise application

Mauvaise application
Supposer un coût d'accès uniforme entre les niveaux et concevoir des algorithmes provoquant un thrashing du cache fréquent ou ignorer la cohérence des caches dans des systèmes multi-cœur, ce qui engendre des performances plus mauvaises que prévu.

Conséquence

Conséquence
Un empilement correct réduit la latence moyenne et l'énergie par accès, permet des comportements de performance prévisibles et oriente la conception d'algorithmes et de structures de données (par exemple : blocage, prélecture) pour exploiter les niveaux rapides.

Inversion

Inversion
Un modèle mémoire plat avec coût d'accès uniforme ou un accès direct à une seule réserve de stockage (ignorant la mise en cache en couches) qui oblige le logiciel à gérer explicitement la localité et augmente souvent les temps d'accès moyens.

Limite

Limite
Concerne les caches matériel et logiciel bas niveau et les niveaux de stockage et leurs compromis ; exclut les caches applicatifs hauts niveaux, les abstractions de mémoire virtuelle qui masquent mais ne suppriment pas la hiérarchie, et les réseaux de stockage distribués sauf s'ils constituent des niveaux identifiables de la hiérarchie.

Tension sémantique

Tension sémantique
Tension entre hiérarchie de mémoire et systèmes de stockage par niveaux : les deux ont des couches, mais la hiérarchie mémoire met l'accent sur la latence et les caches gérés matériellement, tandis que le stockage par niveaux privilégie la capacité et les politiques de gestion sur des échelles temporelles plus longues.

Synthèse

Synthèse
La hiérarchie de mémoire est l'empilement conçu de niveaux de stockage qui échange vitesse, capacité et coût pour desservir les accès typiques depuis le niveau le plus rapide possible et guider la conception logicielle vers des motifs conscients de la localité.