ANNÉES 1990

Sun UltraSPARC

Les recherches menées à Berkeley entre 1980 et 1984 sur les architectures RISC, conduites en parallèle de celles de Stanford sur MIPS, débouchèrent sur la création de Scalable Processor ARChitecture (SPARC) par Sun Microsystems en 1985. Quatre ans plus tard, Sun fonda SPARC International pour ouvrir cette architecture à d’autres constructeurs.

La première version SPARC V7 sortit en 1986. La V8 arriva en 1990 avec le support matériel des multiplications et divisions, une MMU et des opérations en virgule flottante sur 128 bits. La V9 franchit un cap : elle gérait les registres et opérations 64 bits, repensait la gestion des exceptions et intégrait le préchargement.

C’est en 1995 que Sun lança le premier UltraSPARC, premier processeur à intégrer SPARC V9. Marc Tremblay participa à sa conception. Ce microprocesseur superscalaire exécutait les instructions dans le désordre et en traitait quatre simultanément. Son pipeline comptait huit étages. Les ingénieurs avaient simplifié l’unité d’exécution par rapport au SuperSPARC pour gagner en fréquence, notamment en modifiant le branchement de l’UAL.

Le processeur comportait 32 registres 64 bits répartis en huit fenêtres, totalisant 144 registres. Cette technique évitait aux fonctions appelées de perdre du temps à sauvegarder puis restaurer les registres. Sept registres d’entrée et trois de sortie donnaient accès à deux UAL et à l’unité de gestion mémoire. Une seule UAL gérait multiplications et divisions.

L’unité virgule flottante se découpait en cinq blocs : additions et soustractions, multiplications, divisions et racines carrées, suivis par deux blocs dédiés aux instructions SIMD du Visual Instruction Set. Trente-deux registres 64 bits servaient ces opérations, dont cinq pour les entrées et trois pour les sorties.

Le cache primaire se divisait en deux parties de 16 Ko, l’une pour les instructions, l’autre pour les données. Un cache secondaire externe unifié devait compléter l’ensemble, avec une capacité entre 512 Ko et 4 Mo, accessible en un cycle. Ce cache utilisait de la SRAM synchrone cadencée à la vitesse du processeur.

Texas Instruments fabriqua UltraSPARC avec le procédé CMOS EPIC-3 en 0,5 μm sur quatre niveaux de métal. Le constructeur renonça au BiCMOS qui n’apportait guère d’avantages à cette finesse de gravure. La puce intégrait 3,8 millions de transistors dans un boîtier PBGA de 521 contacts.

Dix ans plus tard, l’UltraSPARC T1 rompit avec cette logique. Sun y matérialisa son concept de throughput computing, qui préférait multiplier cœurs et threads plutôt qu’augmenter les fréquences ou complexifier les pipelines. Dans sa version complète, le T1 comptait huit cœurs exécutant chacun quatre threads, soit 32 threads au total. Sun sacrifia performances en virgule flottante et taille des caches au profit du parallélisme.

Le T1 utilisait un pipeline court à exécution dans l’ordre : fetch, sélection de thread, décodage, exécution, mémoire et write-back. Ses UAL fonctionnaient avec une latence d’un cycle, les multiplicateurs et diviseurs sur plusieurs cycles. Une unique unité virgule flottante se partageait entre les huit cœurs. Chaque thread disposait de son propre buffer d’instructions.

Le processeur basculait entre threads selon plusieurs règles. Par défaut, il alternait entre threads disponibles selon une politique LRU. Les instructions longues déclenchaient un changement de thread pour maintenir le pipeline actif. Le cache L1 était traversant, le L2 incluait le L1. Le T1 se contentait volontairement d’un cache réduit : le grand nombre de threads masquait les latences mémoire.

L’UltraSPARC T1 embarquait un hyperviseur qui ajoutait un niveau de privilège au-dessus des modes utilisateur et superviseur. Cette couche logicielle légère offrait une interface de virtualisation complète aux systèmes invités. Sun documenta intégralement cette API et publia les sources VHDL du T1 sous licence libre, rebaptisé OpenSPARC T1.

Le T1 ne consommait pas plus de 70 watts, deux fois moins qu’un Xeon ou un Itanium. Cette sobriété comptait pour les centres de données où la climatisation pouvait coûter plus cher que le matériel lui-même.

Cette architecture convenait aux serveurs web, aux applications client-serveur et à certaines bases de données qui exploitaient son parallélisme élevé. Sun admettait que les charges scientifiques, surtout celles utilisant massivement la virgule flottante, n’étaient pas le terrain de prédilection de ces processeurs.

UltraSPARC reflète l’évolution des architectures processeurs, des premiers RISC aux designs massivement multicœurs. Il témoigne des stratégies explorées pour accroître les performances : complexification des pipelines d’un côté, parallélisation massive de l’autre.