Next: Les processeurs Alpha Up: Les microprocesseurs Alpha Previous: Les microprocesseurs Alpha

L'architecture Alpha

Caractéristiques générales

L'architecture Alpha AXP est une architecture RISC de type load/store, 64 bits. L'accent a été mis sur sa haute fréquence d'horloge, l'émission simultanée de plusieurs instructions, l'aspect multiprocesseur et le support de plusieurs systèmes d'exploitation.

N'ayant aucune compatibilité binaire à assurer, une architecture 64 bits a été définie. Tous les registres ont une taille de 64 bits (32 registres flottants et entiers) et toutes les opérations sont effectuées entre des registres de 64 bits. Toutes les instructions ont une taille fixe de 32 bits. Les seules opérations d'accès à la mémoire sont des opérations de lecture/écriture. Toutes les manipulations de données sont faites entre registres.

L'architecture Alpha supporte les types de données suivants :

L'architecture Alpha utilise un ensemble de routines, appelé Privileged Architecture Library code (PALcode), spécifique à un système d'exploitation et à une implémentation matérielle. Ces routines sont utilisées lors des changements de contexte, pour les interruptions et les exceptions ainsi que pour la gestion de la mémoire. Elles peuvent être invoquées soit par matériel, soit directement par l'intermédiaire de l'instruction Call_Pall.

L'une des particularités de l'architecture Alpha est qu'elle n'implémente aucune instruction de lecture/écriture d'octet ou de mot de 16 bits. Ces formats de données sont accédés par combinaison d'instructions de décalage, de masquage et d'extraction.

L'ordre des octets en mémoire est conforme au schéma little-endian. Le format big-endian est également supporté mais nécessite une instruction supplémentaire .

Le jeu d'instructions

L'architecture Alpha définit cinq formats d'instructions :

Trois modes d'adressage sont supportés : absolu, indirect et basé (le registre R31 est cablé à zéro). L'architecture Alpha n'implémente pas de branchement retardé (comme sur le MIPS). Ce type de branchement rend plus complexe la gestion d'un séquencement superscalaire.

Comme on l'a dit précédemment, l'architecture Alpha ne permet des accès à la mémoire que pour des mots de 32 bits. Ce choix a pour conséquence une pénalité sur l'ensemble des programmes manipulant des données de 8 ou 16 bits. DEC affirme que moins de 8%des références mémoires VAX/VMS concernent des quantités inférieures à 32 bits, et que beaucoup concernent des manipulations de chaînes de caractères qui peuvent être effectuées sur des double ou quadruple-mots (présence d'instructions de manipulation d'octets). Par contre, les données de 32 bits ne sont pas forcément alignées sur des frontières de 32 bits. Le jeu d'instructions comprend donc des instructions qui permettent d'accéder à ces données en ignorant les trois bits de poids faible. La gestion de ce type de données est particulièrement importante pour DEC amené à opérer sur des programmes VAX où des structures de données non alignées peuvent subsister malgré la recompilation.
Cette caractéristique a également un impact important sur les caches à écriture différée. DEC implémente un mécanisme de correction d'erreur de type ECC. Pour implémenter un cache à écriture différée accessible par octet avec une protection ECC, des bits de corrections et de tests doivent être associés à chaque octet. Ceci est relativement coûteux et pourrait être évité en abandonnant ce type de données.
Le jeu arithmétique entier définit par l'architecture Alpha est traditionnel. Les opérations d'addition, de soustraction et de multiplication sont fournies en version 32 et 64 bits. La division entière par une constante est effectuée en multipliant par l'inverse, la division par une variable est quant à elle émulée logiciellement (table de look-up et algorithme itératif).

Les instructions de déplacement conditionnel sont spécifiques à l'architecture Alpha mais commencent à se trouver sur d'autres jeu d'instructions (SPARC-V9 par exemple). Ces instructions recopient un registre source vers un registre destination si un troisième registre vérifie une condition. Cette condition est testée par rapport à zéro. Ces instructions permettent d'implémenter de manière élégante un cas fréquent sans provoquer de rupture dans le pipeline.

Nous n'expliciterons pas plus longuement les particularités de ce jeu d'instructions. nous renvoyons le lecteur à [4] et [8] pour plus de détails à ce sujet.



Next: Les processeurs Alpha Up: Les microprocesseurs Alpha Previous: Les microprocesseurs Alpha


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