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

Caches de l'UltraSPARC

Cache primaire d'instructions

Le cache d'instructions de l'UltraSPARC est un cache de 16 Koctets <<pseudo-associatif>> par ensemble à deux voies. En effet, le mécanisme de génération d'adresse d'instruction génère un numéro de ligne de cache plus un bit de <<voie>> (voir prédiction de branchement page ). La lecture est donc à correspondance directe. Cependant, lors d'un remplacement, un bloc a deux positions possibles dans le cache. Le cache d'instructions est physiquement indexé et physiquement étiqueté. Une ligne de cache est composée de 8 instructions (32 octets). Le cache primaire d'instructions peut retourner jusqu'à quatre instructions (alignées ou non) appartenant à une même ligne de cache (si l'adresse pointe vers l'une des trois dernières instructions de la ligne, l'instruction pointée et les suivantes jusqu'à la fin de la ligne sont retournées).

Découplage du cache d'instructions et de l'exécution


L'UltraSPARC est un microprocesseur exécutant les instructions dans l'ordre. Cependant un défaut de cache d'instructions ne gèle pas le séquencement sur ce microprocesseur. Les instructions lues dans le cache d'instructions sont placées dans une file de 12 instructions et sont retirées dans l'ordre. L'exécution ne s'arrête que si cette file devient vide.

Cache primaire de données

Le cache de données, d'une taille de 16 Koctets, utilise une politique de placement en mémoire de type direct-mapped. Il utilise des secteurs de 32 octets et des lignes de 16 octets. Comme le cache de données du MIPS R10000, ce cache est virtuellement indexé et physiquement étiqueté. Le cache n'est pas associatif pour des raisons de temps de cycle. Il utilise une politique d'écriture simultanée, no-write-allocate.

La mémoire SRAM du cache de données utilise un seul port et peut supporter un load ou un store de 64 bits à chaque cycle. En cas de défaut de cache, un sous-bloc entier (de 16 octets) peut être chargé à chaque cycle.

Le cache de données de l'UltraSPARC est non-bloquant et supporte jusqu'à neuf défauts en lecture en attente de service grâce à un tampon de lecture de neuf entrées. Un tampon d'écriture (Write Buffer) de huit entrées est aussi implanté sur l'UltraSPARC (voir figure ) pour retarder l'écriture des données.

Cache secondaire externe

L'UltraSPARC intègre sur le composant l'ensemble de la logique nécessaire à l'implémentation d'un cache secondaire. Seuls les composants mémoires sont à ajouter pour ce cache secondaire. Il est à remarquer que l'interface avec le système externe, se fait à travers le microprocesseur qui voit transiter toutes les transactions.

Le cache secondaire externe de l'UltraSPARC est physiquement adressé et physiquement étiqueté. Ce cache est direct-mapped ; il utilise une politique d'écriture de type write-back. La taille d'une ligne est de 64 octets. Chaque entrée du cache externe d'étiquettes contient 25 bits d'adresse physique, 3 bits d'état pour la cohérence du cache et 8 bits de parité. Le cache externe a une taille comprise entre 512 Koctets et 4 Moctets. Il nécessite des composants SRAM synchrones. Par exemple, un cache externe de 512 Koctets peut être réalisé à l'aide de cinq mémoires SRAM 32Kx36 synchrones. Le cache doit fonctionner à la même fréquence que le microprocesseur. Une fréquence plus petite n'est pas supportée, ce qui rend onéreux l'implémentation de tout système à partir d'UltraSPARC.

Ainsi, une lecture sur le cache secondaire peut être effectuée à chaque cycle. La donnée sera envoyée au second cycle après l'adresse et les signaux de contrôle. De même, une écriture peut être effectuée à chaque cycle. La donnée est transmise au cycle suivant l'adresse et les signaux de contrôle. Un cycle sera cependant systématiquement perdu au changement de direction, écriture après lecture, sur le bus de données.



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


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