Architectures RISC et exemples


[Previous]  [Next]  [Summary]
  1. Architectures RISC
  2. Exemples d'architectures
    1. Motorola 68040
    2. i860 d'Intel
    3. VMotorola 88000
    4. Les machines VLIW
    5. Quelques architectures RISC

1. 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 :
  1. 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),
  2. 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%),
  3. 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 :
  1. Bus multiplexé 32 bits adresses/données par demi-cycle d'horloge,
  2. Jeu d'instruction de 118 instructions,
  3. Une machine pas vraiment RISC.
Les développements ultérieurs ont été :
  1. 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,
  2. 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,
  3. A Standford : projet Mips,
  4. Chez SUN l'architecture Sparc,
  5. Chez HP, l'architecture Spectrum pas tout à fait RISC car devant assurer une certaine compatibilité avec la gamme 3000,
  6. 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 :
  1. 80286, 80386, 80486 chez Intel,
  2. Motorola 68020 : 192 000 transistors sur 80 mm2,
  3. Motorola 68030 : pipe-line à trois étages, transfert en mode rafale de 16 octets en 5 cycles d'horloge. 300 000 transistors.
  4. 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).

2.1. Motorola 68040

Le microprocesseur M68040 possède les caractéristiques suivantes :
  1. Unité de traitement optimisée d'où des performances 3 fois supérieures à celles du 68030,
  2. Unité flottante intégrée (IEEE754) compatible 68881 et 68882 : performances 10 fois supérieures à celles du 68882,
  3. 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,
  4. Unité de contrôle d'accès mémoire séparés pour les instructions et les données,
  5. Horloge de base 25 MHz, prévue pour aller jusqu'à 50 Mhz, 179 pattes,
  6. A peu près 1,3 instruction/cycle,
  7. Les deux pipe-line sont indépendants,
  8. 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 :
  1. Write Through (écriture simultanée en mémoire),
  2. Copy Back ou write back (on ne recopie que si c'est nécessaire),
  3. Cache inhibé,
  4. 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).

2.2. i860 d'Intel

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 :

  1. Une unité graphique capable de traiter des changements d'échelle, des rotations, traitements de luminosité, ... :
  2. 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.
  3. 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.

2.3. Motorola 88000

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.

2.4. Les machines VLIW

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 :

  1. Trace scheduling Compiling où le compilateur construit un chemin probable d'exécution du programme,
  2. 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).

2.5.Quelques architectures RISC

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]