Next: Le Sparc64 Up: Les microprocesseurs SPARC Previous: L'HyperSPARC

L'UltraSPARC

L'UltraSPARC est le premier processeur de Sun Microsystems SPARC Technology Business à implémenter la nouvelle architecture 64 bits SPARC-V9. Annoncé en septembre 1994, sa commercialisation devrait prendre effet fin 1995. Ce processeur superscalaire de degré quatre, totalement compatible avec les applications 32 bits déjà existantes est destiné au marché des applications hautes performances. Il privilégie une haute fréquence d'horloge (167 MHz) et dispose en outre des caractéristiques additionnelles suivantes :

Nous détaillerons dans une première partie l'implémentation matérielle de ce processeur avant de revenir sur les caractéristiques de ce nouvel ensemble d'instructions qui, on le rappelle, constitue un ajout à la norme SPARC-V9.

Implémentation matérielle de l'UltraSPARC

Comme on l'a dit précédemment, l'UltraSPARC est un processeur superscalaire de degré quatre. Les quatre instructions émises à un cycle donné appartiennent aux combinaisons suivantes :

Les instructions sont émises dans l'ordre mais peuvent être exécutées dans le désordre. L'UltraSPARC met en oeuvre la technique du superpipeline avec neuf étages d'exécution. La figure détaille les diverses phases d'exécution des instructions.

Fetch - À cette étape, quatre instructions sont lues à partir du cache d'instructions ainsi que des informations de prédiction de branchement.

Decode - Les instructions sont décodées et placées dans un tampon d'instructions de 12 entrées qui permet de découpler l'exécution des instructions de leur chargement.

Group - Le banc de registres entiers est accédé en même temps que les quatre instructions les plus anciennes. Les conflits de dépendances et de ressources sont résolus à cet étage. Les instructions non consommées sont reconsidérées au cycle suivant.

Les pipelines entier, flottant et graphique diffèrent à partir de ce niveau. L'étage suivant dans le pipeline entier est un étage d'exécution où les instructions entières sont exécutées et les adresses virtuelles calculées. Les deux pipelines d'exécution entier ne sont pas identiques (en particulier les opérations de décalage ainsi que celles ayant trait aux codes conditions ne peuvent être exécutées que dans un pipeline).

Cache - Cet étage marque l'accès au cache de données ainsi qu'au TLB (accès à partir de l'adresse virtuelle). Les branchements sont également résolus au niveau de cet étage.

N1, N2, N3 - Durant l'étage N1, les défauts sur le cache de données sont détectés et sont envoyés vers le tampon de lecture (capacité de neuf entrées), en cas de succès la donnée est disponible.
L'étage N2 constitue un étage d'attente pour le pipeline entier vis à vis du pipeline flottant.
Durant l'étage N3, les deux pipelines convergent et toutes les exceptions sont résolues à ce niveau.

Write - L'étage d'écriture marque la mise à jour des deux bancs de registres.

En ce qui concerne le pipeline d'exécution flottant, les instructions sont émises à la fin de l'étage de groupement, puis :

Register - Cet étage marque la lecture des registres flottants. Un décodage complémentaire des instructions reçues est également effectué.

X1, X2, X3 - Ces trois étages constituent les phases d'exécution des instructions flottantes. Toutes les opérations flottantes et graphiques, à l'exception de la division et de la racine carrée, sont pipelinées et ont une latence de une à trois cycles.

.

Comme on peut le constater, le pipeline entier contient trois étages supplémentaires de synchronisation avec le pipeline flottant. Cette approche élimine, selon les concepteurs de l'UltraSPARC, le besoin d'implémenter une file pour les instructions flottantes et facilite par ailleurs la gestion des exceptions effectuée de manière précise pour toutes les instructions entières et flottantes.

Les instructions sont chargées à partir d'un cache d'instructions de 16 Ko associatif par ensemble à deux voies. La politique de remplacement est basée sur un algorithme de type LRU. Il est à noter que ce cache est légèrement différent des caches traditionnels dans la mesure où un mécanisme de prédiction permet de sélectionner directement le bon ensemble réduisant ainsi la consommation et fournissant le même temps d'accès qu'un cache à correspondance directe. Les deux étiquettes sont cependant lues afin de confirmer la prédiction. En cas d'erreur, deux cycles de pénalités sont insérés. Ce cache est physiquement adressé et testé. Un micro-TLB de une entrée permet de conserver la traduction de la dernière adresse accédée.

Comme tous les processeurs destinés à de hautes performances, l'UltraSPARC met en oeuvre une prédiction dynamique de branchement. Ce mécanisme prend ici la forme d'un cache d'adresse de branchement double-port de 2 Ko. Ce cache est lui aussi légèrement différent de ceux habituellement utilisés. Effectivement, en plus des bits d'état de la prédiction, et de l'adresse cible, il contient également les bits de prédiction de l'ensemble ainsi que les bits LRU. La prédiction utilisée sur l'UltraSPARC s'appuie sur l'algorithme de Smith à deux bits. La Next Field Ram contient un champ de prédiction à deux bits pour tout bloc de deux instructions et un champ d'adresse cible pour quatre instructions.

L'UltraSPARC contient neuf unités d'exécution concurrentes :

L'unité entière.

L'unité entière contient deux unités arithmétiques et logiques, une unité de calcul d'adresses et diverses unités de contrôle pour les fenêtres de registres ou pour le contrôle des pipelines (validation des chemins de bypass, écriture des résultats, etc...).
Le banc de registres inclut huit fenêtres de registres (soit un total de 144 registres entiers selon la norme SPARC-V9) avec sept ports de lecture (quatre pour les instructions entières, deux pour l'unité de calcul d'adresses et un dédié aux instructions d'écriture vers la mémoire) et trois ports d'écriture.

Les instructions entières sont généralement effectuées en un cycle (étage execute de la figure ). Les résultats sont alors inscrits dans une unité indépendante (la completion unit) qui permet d'attendre la fin d'exécution des instructions susceptibles de provoquer une exception. Si les instructions finissent leur exécution normalement le banc de registres est alors mis à jour. Des circuits de bypass permettent cependant de prélever les opérandes directement dans la completion unit.

L'unité flottante et graphique.

L'unité flottante et graphique (FGU) comprend cinq unités fonctionnelles et un banc de registres. À chaque cycle, deux opérations flottantes ou graphiques ainsi qu'une opération de lecture/écriture flottante peuvent être exécutées. Toutes les opérations, à l'exception de la division et de la racine carrée, sont pipelinées. De même que dans le cas de l'unité entière, les résultats issus des opérations sont inscrits dans la completion unit avant la mise à jour du banc de registres. Le banc de registres dispose de cinq ports de lecture et de trois ports d'écriture permettant l'exécution concurrente de deux opérations flottantes et d'une opération de lecture/écriture. Toutes les opérations flottantes sont conformes à la norme IEEE 754.

À noter : la présence des deux unités graphiques d'addition et de multiplication responsable de l'exécution des instructions du Visual Instruction Set (voir le chapitre ). Ces deux unités sont pipelinées et effectuent des opérations sur des pixels de 8 ou 16 bits.

L'unité de lecture/écriture.

Comme son nom l'indique, cette unité est responsable des transferts de données entre les deux bancs de registres et la hiérarchie mémoire. Elle inclut pour cela un tampon de lecture de douze entrées et un tampon d'écriture de huit entrées. Ce dernier dispose d'une faculté de compression des requêtes lorsque celles-ci adressent le même bloc de 16 octets.

Le cache de données est à correspondance directe et a une capacité de 16 Ko. Il est virtuellement indexé et physiquement testé. Ce cache n'a qu'un seul port d'accès mais la RAM d'étiquettes dispose d'un port de lecture et d'un deuxième port de lecture/écriture permettant ainsi l'exécution en parallèle d'une lecture des étiquettes avec une écriture précédente.

Un deuxième niveau de cache est obligatoire. Ce cache externe est utilisé pour les instructions et les données. Sa taille varie de 512 Ko à 4 Mo. Il est physiquement adressé et testé. Il implémente une protection par parité au niveau de chaque octet et supporte le protocole de cohérence de type MOESI pour les cinq états possibles ainsi que tout autre sous-ensemble (MESI, MSI). La pénalité d'accès à ce cache est de six cycles. À noter l'utilisation de Synchronous SRAM avec le même temps de cycle que le processeur.

L'unité de gestion mémoire.

L'UltraSPARC implémente deux unités de gestion de la mémoire indépendantes pour les instructions et les données. Chacune de ces MMU implémente une table de traduction d'adresses totalement associative de 64 entrées qui fournit la traduction d'une adresse virtuelle vers une adresse physique à chaque cycle. L'adresse virtuelle est codée sur 44 bits, l'adresse physique est quant à elle codée sur 41 bits. Il est à noter que pour accélérer le mécanisme de traduction d'adresse particulièrement vital pour les instructions, l'UltraSPARC implémente en plus un micro-TLB de une entrée pour les instructions.

Ces deux unités offrent une protection des données au niveau de chaque page. Quatre tailles de pages sont supportées : 8 Ko, 16 Ko, 512 Ko et 4 Mo. La gestion des TLB est assurée par logiciel.

l'UltraSPARC dispose de deux modes principaux de fonctionnement :

De plus l'UltraSPARC introduit un troisième mode de fonctionnement appelé RED_state (pour Reset, Error et Debug). Ce mode est spécifique aux états précédemment cités ou en cas d'erreur grave. Dans ce mode, la traduction d'adresse pour les instructions est invalidée (les données restent gérées normalement).

Tests et mise au point.

Les aspects de tests et de mise au point d'un microprocesseur sont rarement abordés. L'UltraSPARC est conforme à la norme IEEE 1149.1 et dispose d'un port d'accès de test et d'un contrôleur. Une interface standard à cinq broches est implémentée. Un registre d'instruction huit bits supporte cinq instructions publiques et 70 instructions privées. Les instructions publiques concernent principalement l'identification du composant, les tests d'interconnexion, etc... Les instructions privées sont principalement utilisées pour accéder à des caractéristiques de test de fabrication, d'analyse de défauts, tests des éléments mémoire, etc...
Par ailleurs, l'UltraSPARC inclut des caractéristiques de mise au point concernant le fonctionnement du composant telles que :

Nous n'expliciterons pas plus ces diverses fonctionnalités dans la mesure où elles s'adressent principalement à des experts de conception matérielle.

L'UltraSPARC intégre 5.2 millions de transistors. Il est réalisé en technologie CMOS à 0.5 m à quatre couches de métal. Séquencé à la fréquence de 167 MHz, les performances attendues sont de l'ordre de 250 SPECint92 et de 300 SPECfp92.

Les ajouts à la norme SPARC-V9

Comme nous l'avons dit précédemment, l'UltraSPARC comprend certaines caractéristiques n'appartenant pas à la norme SPARC-V9 :

L'instruction d'extinction du système concerne la mise en veille du composant durant des périodes de moindre activité. Cette instruction s'affiche dans une politique d'économie d'énergie mise en oeuvre par les USA et permet de diminuer la consommation de 30 Watt à 20 mWatt.
En plus du registre TICK défini par la norme SPARC-V9 (registre destiné à compter les cycles d'horloge), l'UltraSPARC fournit deux registres 32 bits accessibles par logiciel destinés à suivre certains évènements (défaut de cache, mauvaise prédiction de branchement, etc...)
Les instructions de lecture/écriture par bloc concernent le transfert de données vers ou à partir de la mémoire par bloc de 64 octets. Ceci permet à l'unité centrale de soutenir une bande passante de 600 Mo/sec.
La dernière caractéristique que nous aborderons concerne l'introduction d'instructions spécifiques au traitement vidéo (nommées Visual Instruction Set selon la terminologie utilisée par l'UltraSPARC). Ces instructions, au nombre de trente, visent directement le domaine des applications multimedia. Elles sont toutes pipelinées et opèrent sur plusieurs données de 8, 16 et 32 bits en parallèle. Elles permettent des traitements d'images 2-D et 3-D, des compressions et des décompressions, etc...
Son successeur l'UltraSPARC II est annoncé pour le deuxième trimestre 96.



Next: Le Sparc64 Up: Les microprocesseurs SPARC Previous: L'HyperSPARC


flloansi@IRISA.irisa.fr
Fri Jun 7 11:05:24 MET DST 1996