Next: Caches de l'UltraSPARC Up: Hiérarchie mémoire Previous: Généralités sur les

Caches du MIPS R10000

Le MIPS R10000 implémente deux niveaux de caches. Un cache primaire d'instructions de 32 Koctets et un cache primaire de données de 32 Koctets sont intégrés sur le composant. Un cache unifié externe de 512 Koctets à 16 Moctets doit être ajouté. Les deux caches internes permettent un accès simultané aux instructions à charger, et aux données à charger ou à sauvegarder. Les deux niveaux de caches sont associatifs par ensemble à deux voies et utilisent une politique de remplacement de type Least Recently Used (LRU).

Cache primaire d'instructions

Au chargement d'une ligne d'instructions, les instructions sont partiellement décodées avant d'être placées dans le cache primaire d'instructions. Quatre bits supplémentaires sont alors associés à chaque instruction pour désigner l'unité d'exécution dans laquelle l'instruction doit être lancée.

Le MIPS R10000 intègre un cache primaire d'instructions de 32 Koctets (plus 4 Koctets de prédécodage). Ce cache est associatif par ensemble à deux voies. Une ligne du cache d'instructions est composée de 16 instructions de 36 bits (y compris 4 bits de prédécodage).

Le cache d'instructions est indexé avec l'adresse virtuelle et étiqueté avec l'adresse physique. Un bit de validité associé à chaque ligne permet de maintenir la cohérence du cache d'instructions avec la mémoire.

Cache primaire de données

Le MIPS R10000 intègre un cache primaire de données de 32 Koctets. Il est composé de deux bancs entrelacés (voir figure ). Chaque banc est associatif par ensemble à deux voies. L'entrelacement des deux bancs permet à la fois, la mise à jour du cache interne par une donnée en défaut, et l'accès par le microprocesseur. La taille d'une ligne de cache est de 32 octets. Le cache de données est non-bloquant.

Le cache de données utilise la politique d'écriture write-back. Ce cache est virtuellement indexé et physiquement étiqueté. L'indexation virtuelle permet au cache d'être indexé au même cycle que la génération de l'adresse virtuelle. Cependant, le cache est physiquement étiqueté pour maintenir la cohérence avec le cache secondaire.

Cache secondaire externe

Le MIPS R10000 intègre l'ensemble de la logique nécessaire à l'implémentation d'un cache secondaire unifié de taille comprise entre 512 Koctets et 16 Moctets. Seuls les composants mémoire sont à ajouter pour ce cache secondaire. Ce cache secondaire externe est obligatoire. Deux tailles de ligne sont possibles : 64 ou 128 octets. Ce cache externe est associatif par ensemble à deux voies et utilise un algorithme de remplacement de type LRU. Le cache secondaire est composé d'un tableau de données de largeur 138 bits (128 bits pour les données, 9 bits pour le code correcteur d'erreur et 1 bit de parité) et d'un tableau d'étiquettes de largeur 33 bits (26 bits pour les étiquettes et 7 bits pour le code correcteur d'erreur).

Le cache secondaire utilise la politique d'écriture write-back. Le cache est physiquement indexé et physiquement étiqueté.

Interface cache secondaire/MIPS R10000


Le cache secondaire utilise avec le microprocesseur une interface de 128 bits pour les données et une interface de 26 bits pour les étiquettes. Des cycles consécutifs sont utilisés pour transférer des blocs de données plus importants que la largeur du bus. Il est à remarquer que l'interface avec le système externe, se fait à travers le microprocesseur qui voit donc passer toutes les transactions (voir figure ). Cette approche est utilisée par MIPS (voir [4][2]) pour tous ses microprocesseurs. Le ratio entre l'horloge du MIPS R10000 et l'horloge du cache externe doit être pris parmi : 1, 2/3, 1/2, 2/5 et 1/3. Par exemple, pour une fréquence d'horloge du MIPS R10000 de 200 MHz, le système utilisera typiquement une fréquence d'horloge de 100 ou 133 MHz pour son cache secondaire. Pour simplifier la gestion des vitesses d'horloge, le cache externe utilise de la mémoire SRAM synchrone. Tous les signaux de contrôle du cache externe sont générés par le microprocesseur.

Prédiction du banc sur le cache secondaire


La mise en oeuvre d'un cache secondaire externe associatif par ensembles pose un problème majeur en terme de contrôle. Afin de limiter la latence d'accès, on désirerait accéder les données en parallèle avec les étiquettes. Sur un cache secondaire externe, ceci pose le problème du nombre de broches d'E/S du composant.

Le MIPS R10000 utilise un cache secondaire externe associatif par ensemble à deux voies. Afin de remédier au défaut mentionné ci-dessus, le banc du cache où est présente la donnée accédée est prédit à partir d'une table de 8 Kbits intégrée dans le MIPS R10000. Cette table mémorise le banc le plus récemment utilisé pour 8 Klignes de cache externe.

À chaque lecture du cache externe, le microprocesseur lit les données du banc prédit par la table. Au même moment, les étiquettes des deux bancs sont lues séparément à travers une interface. Il faut au moins deux cycles pour recharger une ligne des caches internes. Ceci est fait en même temps que la lecture des deux étiquettes. Trois solutions sont possibles après la comparaison des étiquettes :

La table de prédiction de banc peut couvrir jusqu'à 2 Moctets de mémoire du cache secondaire pour une taille de bloc de 128 octets. Si le cache secondaire excède cette taille, l'exactitude de la prédiction diminue légèrement. Ceci est toutefois compensé par les performances obtenues pour un cache secondaire plus grand.

En utilisant un cache externe deux fois moins rapide que le microprocesseur, la pénalité minimale d'un chargement depuis le cache externe est de six cycles pour une bonne prédiction du banc et de douze cycles pour une mauvaise. Mips Technology Inc estime que la prédiction de banc est bonne dans 90 % des cas.



Next: Caches de l'UltraSPARC Up: Hiérarchie mémoire Previous: Généralités sur les


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