Architectures RISC et exemples
[Previous]
[Next]
[Summary]
- Architectures RISC
- Exemples d'architectures
- Motorola 68040
- i860 d'Intel
- VMotorola 88000
- Les machines VLIW
- Quelques architectures RISC
Le principe de machine à jeu d'instructions réduit, ou RISC, a
été inventé par IBM. Le premier processeur de ce type,
apparu en 1975 (John Cocke) sous le nom IBM801 (le numéro du
bâtiment dans lequel ce projet a été poursuivi), est issu
d'un contrôleur de commutateur téléphonique. L'étude
de ce type d'architecture s'est ensuite poursuivie au sein des
universités de Stanford et Berkeley. Elle part de la constatation que,
le jeu d'instruction des machines classiques étant micro-codé, il
y a beaucoup de cycles de lecture de la ROM de micro-code. Cet état de
fait est lié à l'enrichissement excessif du jeu d'instructions.
Pour limiter ces effets, on a essayé de définir une architecture
sensiblement différente :
- Une instruction par cycle, ce qui impose aussi que le jeu d'instruction soit
limité. En corollaire la taille des programmes est
pénalisée (pas plus de 30% cependant),
- Un format fixe pour les instructions, d'où un décodage
simplifié et la réalisation d'un séquenceur
câblé et non microcodé. La place occupée par le
contrôle est bien inférieure (10 à 20%) par rapport aux
processeurs CISC (50 à 60%),
- Les seules instructions d'accès à la mémoire sont les
LOAD et STORE utilisant l'indirection sur registres. Cela
exige un nombre de registres assez important. En plus le concept de
fenêtres de registres, linéaire ou circulaire, est utilisé
pour limiter le nombre d'accès à la mémoire lors de
passages de paramètres aux procédures. Ainsi le RISC I (Berkeley)
dispose de 10+128 registres 32 bits organisés en 8 fenêtres
recouvrantes. Le transfert d'arguments est effectué sur 6 registres en
entrée et en sortie. Le Cypress CY601 mettant en oeuvre
l'architecture Sparc est doté de 128 registres organisés en 8
groupes de 24 registres 32 bits avec 8 registres en entrée et 8 en
sortie.
Les premiers IBM PC-RT sont les héritiers du projet IBM801 :
- Bus multiplexé 32 bits adresses/données par demi-cycle
d'horloge,
- Jeu d'instruction de 118 instructions,
- Une machine pas vraiment RISC.
Les développements ultérieurs ont été :
- A Berkeley : projets RISC I et II, projet SOAR (Smalltalk on a
RISC), projet SPUR (Symbolic Processor Using a RISC) avec
entre 6 à 12 processeurs pour faire tourner des programmes en Lisp :
tampon de 512 instructions, pipe-line à quatre étages, interface
coprocesseur,
- L'AMD 29300 bâti autour de plusieurs chips : un chip pour
les registres (fenêtres de registres recouvrantes : 6 en entrée, 6
en sortie, 10 en local, 10 en global), un pour l'ALU, un pour le
vérificateur de limites pour la mémoire,
- A Standford : projet Mips,
- Chez SUN l'architecture Sparc,
- Chez HP, l'architecture Spectrum pas tout à fait RISC car devant
assurer une certaine compatibilité avec la gamme 3000,
- L'ARM (Acorn RISC Machine) VL86C010 (46 types d'instruction / 32 bits).
2. Exemples d'architectures
Des représentants caractéristiques des microprocesseurs
CISC sont :
- 80286, 80386, 80486 chez Intel,
- Motorola 68020 : 192 000 transistors sur 80 mm2,
- Motorola 68030 : pipe-line à trois étages, transfert en
mode rafale de 16 octets en 5 cycles d'horloge. 300 000 transistors.
- Motorola 68040 : CMOS 0,8u, 1200000 transistors. Architecture interne de type
Harvard. Performances estimées : 20 Mips (à 25 Mhz : 80486 15
Mips, Sparc 18 Mips), 3,5 Mflops (80486 : 1 Mflops et Sparc 2,6 Mflops).
Le microprocesseur M68040 possède les caractéristiques suivantes
:
- Unité de traitement optimisée d'où des performances 3
fois supérieures à celles du 68030,
- Unité flottante intégrée (IEEE754) compatible 68881 et
68882 : performances 10 fois supérieures à celles du 68882,
- Deux caches instructions et données de 4Koctets avec logique pour
maintenir la cohérence des informations en cas de fonctionnement
multi-processeur. Un contrôleur assure que le trafic avec les caches sont
prioritaires,
- Unité de contrôle d'accès mémoire
séparés pour les instructions et les données,
- Horloge de base 25 MHz, prévue pour aller jusqu'à 50 Mhz, 179
pattes,
- A peu près 1,3 instruction/cycle,
- Les deux pipe-line sont indépendants,
- La réalisation est telle que l'occupation des bus externes soit minimale.
Les instructions les plus souvent utilisées ont vu leur
séquencement particulièrement optimisé. Le traitement des
branchements est traité par dédoublement des unités de
lecture et de décodage dans le pipe-line.
L'unité flottante ajoute 11 registres au jeu de registres de
l'unité de traitement. 8 sont des registres 80 bits, et les autres des
registres de contrôle, d'état et de commande. Les fonctions
transcendentales sont émulées (elles sont câblées
sur le 68882) à travers une interruption soft (grâce
à l'optimisation de l'exécution, elles sont 25% plus rapides sur
un 68040 à 25MHz que sur le 68882/33Mhz).
Les MMU assurent une gestion en mémoire virtuelle paginée (pages
de 4K ou 8K : le MMU du 68030 autorisait des pages de 256 octets à 32Ko)
de la mémoire. 93% de hit en lecture et 94% en écriture.

fig.1 Structure du M68040
On peut choisir le mode de gestion du TLB :
- Write Through (écriture simultanée en mémoire),
- Copy Back ou write back (on ne recopie que si c'est
nécessaire),
- Cache inhibé,
- Cache inhibé lors des entrées/sorties.
Une unité de scrutation du bus (snooper) permet de savoir si le
cache doit être mis à jour (dans le cas d'un accès en
DMA par exemple).
Le MMU est doté d'un cache de traduction TLB
(Translation Lookaside Buffer) (appelé ici ATC pour
Address Translation cache) de 64 entrées (le TLB du 68030
n'a que 32 entrées).
Le microprocesseur i860 possède une unité de contrôle
pipe-line à quatre étages fetch, decode,
execute et store. Additionneur et multiplicateur flottants
possédent trois niveaux de pipe-line. Parallélisme entre
instructions flottantes et les autres si c'est possible. Le programmeur peut
spécifier s'il veut exécuter en mode dual instruction. Il
faut noter qu'il est aussi possible d'exécuter en parallèle une
addition et une multiplication flottante (dual operation). On a ainsi 3
opérations possibles par cycle de base.
Les autres cacractéristiques en sont :
- Une unité graphique capable de traiter des changements
d'échelle, des rotations, traitements de luminosité, ... :
- Une unité de gestion mémoire (MMU) avec adressage sur 32 bits. Le MMU a un TLB à 64 entrées et assure une
pagination à deux niveaux semblable à celle qui est
utilisée dans les 386 et 486.
- Toutes les instructions sont codées sur 32 bits (jeu typiquement
RISC). Le format supporte trois opérandes. L'instruction
load s'exécute en 1 cycle. Utilisation de marquage de registres
(scoreboarding) : ce marquage consiste à garder trace des
registres qui sont en attente de chargement. Si la donnée est dans le
cache, il n'y a pas de cycle d'attente (wait). Les instructions
suivantes utilisent le marquage pour décider s'il faut attendre. Le
rôle du compilateur est ici primordial. Le jeu d'instructions est
doté de branchements différés. Le FPU utilise la
norme IEEE-754 de codage des nombres flottants et les entiers 32 et 64 bits.

fig.2 Structure du i860
Les performances annoncées à 40 MHz sont de l'ordre de 33 Mips
VAX, 80 Mflops en simple précision, 60 Mflops en double
précision. LINPACK donne 10 Mflops. Une FFT complexe 1024 points
peut s'y exécuter en 1 ms.
Le M88000 possède une séparation complète des bus. Le
composant intégré comporte 182 pattes pour 1,8 inch2.
Le processeur possède 32 registres 32 bits. L'unité flottante
intégrée permet une séparation complète des
exécutions de l'addition et de la multiplication. Celles-ci pouvent
opérer en parallèle. Il est possible de travailler poids fort ou
poids faible en tête.

fig.3 Structure du M88000
La version 88200 est dotée d'un cache de MMU. Celui-ci a une
taille de 16Ko. Il est associatif par bloc (4 blocs) et les modes
supportés sont write back ou write through.
Le bus d'instruction ou de données est appelé P-Bus
(pipe-lined protocol) : 80 Mo/s.
La coordination des tâches dans un calculateur faisant intervenir
"beaucoup de parallélisme" est délicate. Il est de plus peu
évident de paralléliser un algorithme. En réalité,
il semble plus facile de paralléliser le travail au niveau de quelques
instructions sur plusieurs processeurs. Les machines VLIW, Very Long
Instruction Word, fournissent une solution à priori satisfaisante.
Le problème des branchements peut aussi être partiellement
résolu en faisant traiter systématiquement les deux branches
d'exécution. Les problèmes de dépendance ne sont pas
résolus pour autant.
Le problème de compilation est particulièrement délicat.
Deux solutions :
- Trace scheduling Compiling où le compilateur construit un
chemin probable d'exécution du programme,
- Percolation Scheduling Compiling où le compilateur construit un arbre d'exécution. Ensuite il effectue un examen de chaque noeud voisin
pour savoir s'il peut les fusionner dans le cas où le
parallélisme est possible.
Exemples : l'i860 est sur le chemin des machines VLIW. La machine
Multiflow Computer offre sept opérations simultanées dans
sa version de base (modèle Trace7).
Le tableau suivant donne quelques caractéristiques de processeurs RISC.
Ces données sont insuffisantes pour effectuer une comparaison
sérieuse mais fournissent une petite idée des performances
relatives de ces machines.
Nom |Archi.|Horloge| Mips | Mflops | 16k+0 | Nb. | Alim.| Puis.
|(bits)| (Mhz) | | | |Trans.| (V) |(Watts)
---------------------------------------------------------------------------
Alpha21066A | 64 | 166 | 332 | 166 | 16k+0 | 1,7M | 3,3 | 21 50
Alpha21164 | 64 | 300 | 1200 | 600 | 112k+0 | 9,3M | 3,3 |
---------------------------------------------------------------------------
I80960HT | 32 | 75 | 125 | | 16k+8k | | 3,3 |
---------------------------------------------------------------------------
AM29030 | 32 | 25,3 | 40,2 | | | | 5 |
AM29240 | 32 | 20,2 | 47,6 | | 4k+2k | | 5 |
---------------------------------------------------------------------------
PowerPC601 | 32 | | | | 32k | | |
PowerPC602 | 32 | 66 | 40 | | 4k+4k | 1M | 3,3 | 1,2
PowerPC603 | 32 | 80 | 75* | 85* | 8k+8k | 1,6M | | 2,2
PowerPC603e | 32 | 100 | 120* | 105* | 16k+16k | 2,6M | 3,3 |
PowerPC604 | | | | | | | |
PowerPC620 | 64 | 133 | | | 32k+32k | 6,9M | 3,3 | 30
---------------------------------------------------------------------------
MicroSparcII| 32 |85-110 |85-110| 18-85 | 16k+8k | 2,3M | 3,3 | 9
SuperSparcII| 32 | 60-90 |20-75 | 44-75 | 20k+16k | 3,1M | 5 | 17
UltraSparc | 64 | 167 | | | 16k+16k | 5,2M | 3,3 | 30
---------------------------------------------------------------------------
(*)SPECint92 et SPECfp92
[Top]
[Previous]
[Next]
[Summary]