UltraSPARC IIi

From Wikipedia, the free encyclopedia

Processeur UltraSPARC IIi

L'UltraSPARC IIi, successeur de l'UltraSPARC, est un microprocesseur 64 bits de Sun Microsystems dont la distribution commença en 1997.

L'UltraSPARC IIi est basé sur les spécifications SPARC version 9, et équipe notamment les stations Sun allant de l'Ultra 5 à l'Ultra 60 ainsi que les premiers modèles de Sun Blade.

Les principaux composants formant l'UltraSPARC IIi sont :

  • IEU : Integer Execution Unit, effectue les opérations arithmétique grâce à ses 2 ALUs ;
  • FPU : Floating Point Unit, effectue les opérations arithmétiques sur des nombres à virgule flottante ;
  • GRU : GRaphic Unit, exécute les instructions graphiques (voir Jeu d'instructions) ;
  • LSU : Load/Store Unit, accède à la mémoire ;
  • PDU : Prefetch, Prediction and Dispatch Unit, contient la Prefetch queue et la logique pour le groupement des instructions ;
  • I-Cache & D-Cache : caches de données et d'instructions ;
  • I-MMU & D-MMU : Memory Management Unit, traduit les adresses virtuelles

Registres

L'UltraSPARC IIi implémente la technique de la fenêtre de registres, c'est-à-dire qu'il met à disposition de l'utilisateur plusieurs jeux de registres interchangeables.

En plus des 8 registres globaux (%g0 à %g7), qui sont dupliqués selon le mode de fonctionnement du microprocesseur (4 modes sont disponibles), l'utilisateur a accès à une fenêtre coulissante de 24 registres :

  • les registres d'entrée (%i0 à %i7), utilisés pour récupérer les arguments d'une fonction et lire la valeur de retour ;
  • les registres locaux (%l0 à %l7), offrant un stockage pour les variables locales ;
  • les registres de sortie (%o0 à %o7), permettant le passage d'argument à une fonction.

La fenêtre de registres est dite coulissante car dans le prologue d'une fonction, on fait appel à une instruction qui transforme les registres de sortie en registres d'entrée, et qui libère un nouveau jeu de 16 registres locaux et de sortie. Dans l'épilogue, on revient à l'ancienne fenêtre, ce qui a pour effet de restaurer les registres locaux et d'entrée.

L'UltraSPARC IIi offre 8 fenêtres de registres, au-delà, c'est au système d'exploitation d'assurer la sauvegarde des fenêtres précédentes contre l'écrasement. En effet, la fenêtre fonctionne de manière circulaire : une fois sur la dernière fenêtre, on reprend à la première.

La FPU offre 32 registres pouvant contenir soit des flottants simple précision soit des flottants double précision (IEEE 754).

Pipeline

Le pipeline de l'UltraSPARC IIi est composé de 9 étages :

  • fetch : lit un maximum de 4 instructions depuis le I-Cache ;
  • decode : pré-décode et identifie les instructions ;
  • group : choisit les instructions à exécuter (voir description ci-dessous) ;
  • execute : exécute les instructions arithmétiques (à l'aide des 2 ALUs) ;
  • cache : effectue la traduction d'adresse (voir Unité de gestion de la mémoire) ;
  • N1 : résolution des caches-misses au niveau du D-Cache ;
  • N2 : accès mémoire ;
  • N3 : résolution des traps ;
  • write-back : écriture des résultats finaux dans les registres.

L'UltraSPARC IIi est superscalaire de degré 4, c'est-à-dire qu'il peut exécuter selon certaines contraintes 4 instructions simultanément. Parmi ces contraintes :

  • la présence de 2 ALUs permet l'exécution simultanée de deux instructions arithmétiques au maximum par groupe ;
  • la FPU et la GRU permettent l'exécution d'un maximum de deux instructions simultanées, selon la nature des instructions dont il est question ;
  • une instruction de branchement peut être exécutée, seulement si elle est la dernière du groupe d'instructions ;
  • une instruction d'accès mémoire peut être exécutée par groupe.

Dans le cas des instructions FPU ou des instructions graphiques, la fin du pipeline diffère :

  • register : accède aux registres flottants ;
  • X1 : début de l'exécution des instructions ;
  • X2 : continue l'exécution ;
  • X3 : fin de l'exécution ;
  • write-back : idem que dans le pipeline classique.

Chaque instruction de branchement est suivi d'un delay slot, c'est-à-dire une instruction qui sera systématiquement exécutée même si le branchement est pris. Il est possible d'annuler l'effet du delay slot, en utilisant des instructions particulières.

Caches

Jeu d'instructions

Unité de gestion de la mémoire

Related Articles

Wikiwand AI