Next: Caches du MIPS Up: Hiérarchie mémoire Previous: Introduction

Généralités sur les caches

Nous rappelons ici quelques définitions usuelles sur les structures de cache avant d'étudier de manière plus détaillée la hiérarchie mémoire de chacun des microprocesseurs.

Placement des données

Un cache est constitué de lignes qui peuvent être organisées de diverses façons :

Stratégies de remplacement

Le chargement d'une ligne dans un cache se fait en général au détriment d'une ligne déjà présente. Un mécanisme matériel arbitre le remplacement des lignes dans un ensemble. Sur les caches associatifs, plusieurs stratégies de remplacement sont couramment utilisées :

Ces stratégies sont assez simples, mais pas toujours satisfaisantes en terme de performances. De nombreuses autres stratégies ont été envisagées, mais le problème reste ouvert.

Politique d'écriture

Les accès en lecture sur le cache sont les plus nombreux (lecture d'opérandes, accès aux instructions) et ne posent pas de réels problèmes, alors que les accès en écriture, moins nombreux, nécessitent une gestion rigoureuse de la cohérence des données au travers de la hiérarchie mémoire. Là encore, diverses politiques sont mises en oeuvre lors de la modification d'une donnée :

De plus, lorsque l'UC veut écrire une donnée dans une ligne absente du cache, l'une des deux options suivantes est généralement utilisée :

L'option write-allocate est généralement associée à la politique d'écriture write-back, et l'option no write-allocate à la politique d'écriture write-through (ce qui est cohérent dans la mesure où une écriture nécessitera sa mise à jour directement dans la mémoire, on évite ainsi des transferts supplémentaires).

Répartition physique des caches entre données et instructions

Les trois microprocesseurs étudiés utilisent tous des caches primaires séparés pour les données et les instructions. Cette configuration permet de réaliser au même cycle un accès à une donnée et à une instruction sans avoir recours à un cache multiport (plus coûteux à implémenter) et elle évite les interférences de référence mémoire entre les données et les instructions. Le cache secondaire, moins sollicité, est unifié sur les trois microprocesseurs.

Adresses et étiquettes physiques ou virtuelles

Un cache peut être indexé soit par l'adresse virtuelle directement fournie par le programme, soit par l'adresse physique après traduction de l'adresse virtuelle. L'adressage virtuel offre un temps d'accès au cache plus court car aucun mécanisme de traduction d'adresse ne doit être traversé avant l'indexage du cache, mais il induit des problèmes de cohérence de données entre processus.

L'étiquette indique le numéro du bloc. Elle est testée pour voir si elle correspond au numéro du bloc de l'adresse provenant de l'UC. L'étiquette peut être physique ou virtuelle. Utiliser une étiquette physique simplifie le maintien de la cohérence de données entre processus.

Secteurs

La terminologie n'est pas uniforme selon les constructeurs en ce qui concerne le sens des termes secteur et ligne. Nous avons conservé les notations utilisées dans [3], à savoir :

Cache non-bloquant

Les trois microprocesseurs étudiés implémentent des caches primaires de données dit <<non-bloquants>>. Les données d'un cache non-bloquant continuent à être accédées même si un défaut de cache est en cours de traitement. Sur un cache bloquant, le cache n'est plus accessible après un défaut tant que la donnée n'est pas revenue de la mémoire. L'exécution de toutes les instructions dans le microprocesseur s'arrête alors rapidement. La figure montre la différence de traitement de plusieurs défauts de cache, entre un cache bloquant et un cache non-bloquant.

Un cache non-bloquant peut en général supporter plusieurs défauts de cache, et les résoudre de manière pipelinée.



Next: Caches du MIPS Up: Hiérarchie mémoire Previous: Introduction


flloansi@IRISA.irisa.fr
Tue Jun 4 09:57:56 MET DST 1996