Annoncé par Texas Instruments et Sun en août 1991, le SuperSPARC est le premier processeur superscalaire d'architecture SPARC. Destiné au marché des stations de travail, il comprend une unité entière intégrant deux ALUs, une unité flottante, une unité de gestion de la mémoire ainsi qu'un cache d'instructions et de données séparés. Par ailleurs, pour compléter l'unité de gestion de la mémoire, un TLB de 64 entrées est mis en oeuvre pour les instructions et les données. Ce microprocesseur est conforme à l'architecture SPARC-V8.
Commercialement, ce processeur n'a pas remporté un franc succès du fait des nombreux déboires survenus. Annoncé dans un premier temps à 50 MHz en 1991, les premiers processeurs seront livrés à 33 MHz du fait de problèmes de timing internes. Il faudra attendre début 1993 avant d'atteindre les 40 MHz, puis le commercialisé au deuxième semestre 1993 pour atteindre les 50 MHz. Les versions actuelles de SuperSPARC sont séquencées à 60 MHz, mais restent encore bien en dessous du niveau de performances atteint par d'autres architecture RISC. L'origine de ces difficultés peut être attribuée à la technique employée sur le banc de registres entiers (ainsi que sur la table de traduction d'adresses), véritable goulot d'étranglement du processeur au moment de l'augmentation de la fréquence d'horloge (technologie double-pump). Le concept de fenêtres de registres nécessite d'implémenter un grand nombre de registres. La mise en oeuvre d'un fichier de 136 registres avec huit vrais ports d'accès occupe une place énorme. Aussi, le banc de registres est en fait un faux double-port, le même port étant sollicité deux fois dans le même cycle afin de réduire la surface nécessaire.
Quatre instructions sont chargées directement à partir du cache vers deux files d'instructions. La première de ces files est destinée aux instructions du flot séquentiel, l'autre réceptionne les instructions issues des branchements (schéma similaire à l'architecture POWER). La profondeur de chacune de ces files est de six entrées. Le SuperSPARC précharge les deux chemins d'exécution. Quand le branchement est réellement pris, les instructions issues du flot séquentiel sont invalidées. Trois instructions peuvent être émises simultanément vers les diverses unités d'exécution. Cette émission se fait toujours dans l'ordre, cependant, un effort important a été fourni pour minimiser les gels du pipeline :
Le SuperSPARC utilise un pipeline entier de quatre cycles. Chaque cycle a deux phases. Le premier cycle (F0, F1) charge quatre instructions à partir du cache dans l'une des files. Puis, trois phases de décodage sont utilisées (D0, D1, D2) et enfin deux phases servent à l'exécution (E0, E1) avant la mise à jour du banc de registres (WB).
En accord avec la norme SPARC version 8, ce processeur inclut des instructions de multiplication et de division entières. Ces calculs sont exécutés par l'unité flottante (quatre cycle de latence pour la multiplication et 15 cycles pour la division).
Le SuperSPARC comprend deux caches d'instructions et de données séparés, tous deux physiquement adressés et testés. Le cache d'instructions a une taille de 20 Ko, il est associatif par ensemble à cinq voies. Un degré d'associativité minimal de cinq permet de bénéficier d'ensembles de taille inférieure ou égale à la taille des pages, facilitant ainsi l'adressage des éléments en utilisant les bits d'adresse de poids faible.
Le cache de données a quant à lui une taille de 16 Ko et est associatif par ensemble à quatre voies (ce degré d'associativité s'explique pour la même raison que le cache d'instructions). La politique de mise à jour de la mémoire est configurable en simultanée ou en différée.
Un second niveau de cache peut également être ajouté à ce processeur. Un contrôleur externe a été développé. Ce composant supplémentaire inclut les étiquettes de ce cache et permet l'ajout de 1 Mo à correspondance directe.
L'interface bus supporte deux protocoles : soit celui utilisé par le contrôleur de cache externe soit, si ce dernier est absent le MBus niveau-2 MBus.
Ce processeur est à rapprocher du R4000 dont l'architecture traduit une approche différente (superpipeline versus superscalaire, voir [2]). Le SuperSPARC comprend 3.1 millions de transistors et est réalisé en technologie BiCMOS à 0.6 m avec trois couches de métal. Ses performances sont de l'ordre de 89 SPECint92 et 103 SPECfp92 pour une fréquence de 60 MHz.
Ce processeur a été annoncé au premier semestre 1993 par Texas Instrument. Séquencé à la fréquence de 50 MHz, il est fonctionnellement équivalent au SuperSPARC si ce n'est qu'il permet l'exécution d'opérations dans un système multiprocesseur à travers l'interface du MBus (le SuperSPARC nécessite un contrôleur de cache externe pour de telles opérations).
Le ne supprime cependant pas la totalité des composants nécessaire à la réalisation d'un système multiprocesseur. Effectivement, l'unité centrale doit fonctionner à la fréquence du bus externe, les opérations au-dessus de 40 MHz, limite du MBus, nécessitent un contrôleur de cache externe qui fournit une interface asynchrone entre le processeur et le MBus. Ce composant est également sollicité par le deuxième niveau de cache.
Réalisé en technologie BiCMOS à 0.7 m, les performances annoncées de ce processeur sont de l'ordre de 65.2 SPECint92 et 83 SPECfp92
Annoncé fin 1994 par Sun's SPARC Technology Business, ce processeur vient combler le vide laissé entre l'arrivée de l'UltraSPARC et le SuperSPARC. Le design de ce dernier a subi de profondes modifications qui lui permettent d'atteindre une fréquence de 90 MHz et des performances de l'ordre de 135 SPECint92 et 145 SPECfp92.
Il est intéressant de remarquer les modifications survenues entre ces deux générations qui soulignent les points faibles du SuperSPARC.
La technique du double-pump sur le banc de registres entier a été abandonnée pour être remplacée par un ensemble de ports de lecture. Le fait d'éliminer ce goulot d'étranglement permet d'anticiper la lecture des registres d'où l'élimination d'une phase de décodage dans le pipeline entier. Le pipeline du SuperSPARC 2 reste cependant sur quatre cycles.
La capacité des files destinées à la réception des instructions issues des flots d'instructions cibles et séquentielles (douze entrées) a été doublée.
L'une des améliorations majeures concerne le cache de traduction d'adresses unifié, de 64 entrées, également accédé deux fois par cycle. Le SuperSPARC 2 inclut deux TLB d'instructions et de données distincts. Pour maintenir un taux de succès au moins équivalent au design précédent, les concepteurs ont conservé la même capacité pour les données (64 entrées) et ont introduit un cache de traduction d'adresses pour les instructions de 16 entrées.
Un troisième problème détecté sur le SuperSPARC concerne le multiplieur flottant qui sert également aux divisions et aux racines carrées (algorithme itératif). Pour permettre une fréquence d'horloge plus élevée, le SuperSPARC 2 simplifie cette unité en ajoutant une unité distincte pour les divisions et les racines carrées. Cette nouvelle organisation permet d'avoir une latence de trois cycles pour les multiplications mais allonge la latence des opérations de division et de racine carrée de 50%. L'augmentation de la fréquence d'horloge compense cependant cet allongement (gain de 40%entre les deux versions).
Les autres caractéristiques du SuperSPARC ont été peu modifiées. Le même procédé de fabrication a été utilisé que pour le SuperSPARC à 60 MHz (technologie BiCMOS à 0.6 m et à trois couches de métal).