|
Les Microprocesseurs
Airault Fabrice & Bonis Alexis (Juin
2001)
I)
HISTORIQUE
II)
FABRICATION DES MICROPROCESSEURS
Les différentes étapes
de fabrication
III) ARCHITECTURE DES MICROPROCESSEURS
1) principe du Pipeline
2) Comparaison, évolution
RISC CISC
Analyse
d’un processeur Intel Pentium
Analyse
d'un processeur RISC
IV) PERFORMANCE PRIX
1) Performances Thermiques
2) Prix
3) Performance
CONCLUSION
I)Historique
- Le tout premier microprocesseur fut construit par Intel, Intel
signifiant Integrated Electronics, en 1971. Il s'appelait le 4004.
Ce processeur fonctionnait en 4 bits et ses instructions étaient
longues de 8 bits. Il tournait à une vitesse de 108 Kilohertz et il
était composé de seulement 2300 transistors. Le 4004 avait autant
de puissance qu'ENIAC
- Dans les années qui suivirent, de nombreux autres processeurs
sortirent sur le marché, entre autre le 8080 d'Intel. De nouvelles
compagnies se lancèrent aussi dans la fabrication de
microprocesseurs, ce fut le cas de Zilog qui lança le Z-80 et de
Motorola, qui lança le 6800 en 1974. Les processeurs Motorola sont
ceux qui furent utilisés par Commodore et Apple. Le processeur qui
fit sa marque par la suite fut le 8086 lancé par Intel en 1978,
suivit l'année suivante du 8088. Le 8086 était basé au départ
sur l'architecture du 8080, seulement les accès aux registres se
faisaient maintenant en 16 bits. La quantité de mémoire que le
8086 pouvait adresser était toutefois limitée à 1 Méga. Le 8086
était composé de 29000 transistors, alors que le 8080 n'en était
composé que de 6000. Le 8086 et le 8088 pouvaient fonctionner à
une vitesse d'environ 8 Mégahertz et furent les processeurs choisis
par IBM pour leur premier ordinateur personnel.
- C'est en 1979 que le premier microprocesseur 16 bits est sorti sur
le marché ; ce fut le 68000 de Motorola. Le 68000 ne connu
toutefois un grand succès qu'en 1984 lorsqu'il fut utilisé par
Apple pour la construction de leur premier ordinateur Macintosh.
- En 1982, Intel sortait le
80286. Le 286 peux fonctionner à une vitesse allant jusqu'à 12 Mégahertz
et adresse une plus grande quantité de mémoire que le 8086, il
peut adresser jusqu'à 16 Mégas de RAM et permet de plus
l'utilisation de mémoire virtuelle. Le 286 est un processeur 16
bits, il est composé de 134,000 transistors.
- En 1984 Motorola sorti le tout premier microprocesseur 32-bits, le
MC68020. Il était composé de 200,000 transistors et pouvait
adresser jusqu'à quatre Mégas de mémoire.
- Fin 1985, une nouvelle génération
de processeurs Intel sortit sur le marché; le 80386 divisés en
deux catégories, le SX et le DX (16bits et 32bits). La vitesse
ayant été améliorée au cours des années, elle varie de 16 à 33
Mégahertz. Le 386 peux adresser jusqu'à 16 Mégas de mémoire et
est composé de 275000 transistors.
- En 1985
SUN développe son processeur SPARC et les premiers produits sont
disponibles en 1987 (SUN 4).
- En 1987 MOTOROLA lance le développement
d'un processeur RISC le 88000. Mais les négociations avec SUN puis
MIPS créent la confusion autour du 88000. Faible réussite.
- En 1988 lancement du R3000 par MIPS.
- En 1989, Intel introduisit une nouvelle génération de
processeurs, les 80486. Encore une fois, les 486 furent divisés en
deux catégories, le SX et le DX. Les 486 furent les premiers
processeurs Intel avec le coprocesseur mathématique intégré. La
différence entre le DX et le SX est que le 486 DX contient le
coprocesseur mathématique alors que le SX ne le contient pas. Le
486 peut fonctionner à une vitesse allant de 33 à 100 Mégahertz,
il est composé de 1200,000 transistors et fonctionne en 32 bits. De
plus, il peut adresser jusqu'à 4 Gigas de mémoire.
- Fin 1991, MOTOROLA entre
dans l'alliance IBM/Apple pour développer la gamme POWERPC.
- Cyrix et AMD, deux autres compagnies de microprocesseurs, ont aussi
sortis leurs microprocesseurs 386 et 486, réutilisant le nom utilisé
par Intel. La législation internationale ne permet pas de protéger
un nom de produit composé uniquement de chiffres.
- C'est donc pour cette raison que la génération suivante de
microprocesseurs Intel ne portait pas le nom de 586, sorti en 1994
Il s'appelle Pentium, et c'est de nos jours le microprocesseur le
plus populaire. Pentium provient du grec Pente et du mot silicium.
Le terme Pente signifie cinq en grec, Pentium signifiant donc
microprocesseurs de cinquième génération, 586. Le Pentium est
composé de 3,300,000 transistors.
- Plusieurs sociétés sortent des
microprocesseurs qui fonctionnent avec l’architecture RISC,
on peut dénoter entre autre le SPARC de Sun
en 1991, le SPARC Ultra II en 1996 et le Sun UltraII en 1998.
En 1992 Digital et MIPS lancent aussi leurs processeurs :
Digital a fait le Alpha 21064 en 1992 et le 21064a en 1996 puis
l'année suivante en 1997 le 21264. Mips a fait le R4000 en 1992 et
le R10000 en 1996 en 1993 Motorola lance le 1er powerpc
le 601 suivi du powerpc 620 en 1995 et du powerpc 750 en 1998.
Eniac(1946)

Intel 4004 (1971)

II)
Fabrication des Microprocesseurs
Un microprocesseur est une catégorie de puce de silicium :
à l’intérieur d’un microprocesseur, on trouve en effet une petite
plaquette de silicium, qu’on appelle un “dé” et qui se compose de
millions de petits commutateurs, les transistors. Ces transistors sont
agencés d’une manière bien précise : c’est là d’où vient
l’appellation de “circuit intégré”.
Cette petite plaquette est composée de silice, autrement dit de sable.
La seule différence est que la silice dont sont faits les
microprocesseurs est beaucoup plus pure : on l’appelle “silicium”.
Le silicium est un semi-conducteur. Intel, Motorola ... achètent un
“lingot” de silicium, cylindre d’environ un mètre de long, pour
le découper en tranches très fines. Ensuite intervient une longue série
compliquée d’opérations destinées à transformer chacune de ces
tranches en un microprocesseur. Le délai de fabrication d’une de ces
puces est d’environ trois mois.
Pour exemple : Intel dispose d’environ dix usines qui fabriquent des
microprocesseurs. Chacune d’elle coûte au minimum un milliard de
dollars.
L’une des raisons pour lesquelles ces usines sont si chères à
construire est que l’atmosphère qui y règne est extrêmement pure.
Les microprocesseurs sont fabriqués par un procédé qu’on appelle
“photolithographie”, qui permet d’obtenir jusqu’à vingt couches
de transistors. Un transistor n’est rien d’autre qu’un commutateur
à deux positions allumé et éteint, que la machine interprète
respectivement comme 0 et 1.
| 1.Les
premières couches : Il faut prendre une galette de
silicium d’un diamètre d’environ 20 cm. Avec une seule
galette on réalise plusieurs centaines de microprocesseurs,
chacun d’eux mesurant moins d’un centimètre carré. |
 |
| 2.Couche
de silicium : Déposez sur la galette une couche
isolante de dioxyde de silicium (SiO2) : c’est elle qui
transmettra par conduction l’électricité à travers le
microprocesseur. |
 |
| 3.Agent
photorésistant : On recouvre alors la galette
d’une substance appelée “agent photorésistant”, qui
devient très molle et visqueuse lorsqu’elle est exposée aux
ultraviolets. |
 |
| 4.
Masquage
: Bien avant d’envisager le processus de production, il
a fallu d’abord concevoir le microprocesseur, c’est-à-dire
étudier comment il allait réaliser les opérations prévues.On
a donc au préalable réalisé un masque photographique du
circuit prévu pour ce microprocesseur ; ensuite, on place ce
masque sur la couche photorésistante. |
 |
| 5.
Exposition
: Le masque et la galette sont ensuite éclairés aux
ultraviolets, processus similaire à l’exposition d’une
pellicule photo dans un agrandisseur. Le masque laisse ainsi
passer la lumière sur certaines zones de la galette, mais pas
sur d’autres, ce qui imprime une image latente du circuit. |
 |
| 6.
Photogravure
: Les particules d’agent photorésistant, devenues
molles et visqueuses après exposition aux ultraviolets, sont
alors retirées à l’aide d’un solvant qui révèle le
dioxyde de silicium se trouvant en dessous. La dernière partie
de ce processus consiste à retirer le dioxyde de silicium ainsi
révélé, puis le reste de l’agent photorésistant. Le
masquage et la photogravure se répètent pour chaque couche de
circuits, c’est-à-dire autant de fois que la galette de
silicium compte de couches, autrement dit vingt fois pour les
plus complexes. Cette technique d’impression (d’où
l’appellation de “circuits imprimés”) a d’abord été
utilisée pour reproduire des dessins et motifs sur papier, sur
tissu et même sur bois. Dans la fabrication des
microprocesseurs, le processus de photogravure permet
d’obtenir des bandes de matériau conducteur, dont l’épaisseur
est bien inférieure à celle d’un cheveu, et d’agencer ces
sillons en un circuit. |
 |
| 7. Dopage : A présent, on plonge les zones exposées de la
galette de silicium dans un mélange chimique d’ions. Ce
processus modifie la conductivité des zones de silicium ainsi
“dopées”, ce qui permet au transistor de s’allumer ou de
s’éteindre ou bien de véhiculer des données. On recommence
autant de fois que le microprocesseur compte de couches, chacune
étant reliée aux autres par des fenêtres. Cette structure
ressemble à la cage d’escalier d’un bâtiment : les électrons
montent et descendent entre les différents “étages” à une
cadence de plusieurs centaines de Méga Hertz. On réalise les
fenêtres en répétant les étapes de masquage et de gravure
avec des masques différents. A présent que les fenêtres sont
en place, il est temps de les remplir. On remplit les fenêtres
d’aluminium, qui est l’un des métaux les plus communs.
Aujourd’hui le cuivre est beaucoup plus utilisé que
l’aluminium car il est meilleur conducteur et permet une
gravure plus fine |
 |
Les Processeurs CISC et RISC utilisent tous deux une
architecture avec pipeline qui permet d’augmenter considérablement
les performances du processeur.
Le déroulement d’une instruction est découpé en n phases consécutives
(profondeur du pipeline) pouvant être exécutées simultanément pour
des instructions différentes.
Toutes les phases démarrent au même instant et attendent la fin de la
phase la plus longue pour s’achever. Le cycle du pipe-line est la durée
de la phase la plus longue.
Le découpage en phases doit être le plus équitable possible, on doit
avoir le plus faible écart-type possible entre la durée que prennent
les phases, afin d’accroître les performances au maximum.
En réalité, selon le type d’instruction le pipeline est de longueur
différente au sein du même processeur. On considère alors qu’il y a
plusieurs pipelines logiques (même si différents types
d’instructions passent par les mêmes étages physiques).
Les instructions de calcul flottant et d’accès à la mémoire sont généralement
plus longues que les autres. On distingue trois types de pipeline.
-
Pipeline flottant (calcul en virgule flottante,
comparaisons)
-
Pipeline
mémoire (chargement, rangement)
-
Pipeline
entier (calcul entier, décalages, comparaisons, le reste des
instructions)
Le pipeline influence directement la
vitesse des processeurs. La vitesse maximale d'un processeur peut être
définie par le temps que prend la plus longue étape logique de son
pipeline. En effet, le processeur, qui doit traiter chaque donnée indépendamment
des autres, ne peut traiter qu'une seule donnée par étape de pipeline
par cycle. Si dans un processeur avec un pipeline de 1 étape, il faut
100 ns au processeur pour traiter chaque donnée, le processeur ne
pourra aller plus vite que 10 MHz (1/100ns=10 000 000 Hz). Mais à
chacun de ces 10 000 000 de cycle, le processeur produira une réponse.
Le temps pour produire la réponse, lui, est dépendant les transistors
du processeur. Bien que rapide, l'électricité ne voyage pas instantanément
et le temps requis pour faire "switcher" les transistors
correspond au temps pour réaliser l'étape. Donc, pour pouvoir
augmenter la vitesse de processeurs, 2 techniques peuvent être utilisées:
améliorer les transistors, ou bien diminuer la quantité de transistors
qui doivent "switcher" pour traiter des données.
Si, on change
l'architecture logique de notre processeur 10 MHz pour le transformer en
pipeline de 5 étapes, voyons voir ce qui se produira. Nous avons fait
attention pour les séparer en étapes moins difficiles à traiter, de
sorte que la quantité de transistors requise sera à peu près la même,
le temps requis sera aussi à peu près le même. Donc, chaque étape
prend maintenant 20 ns à compléter. Donc, la limite de vitesse passe
à 50 MHz. Mais, pourquoi ne pas construire des processeurs avec un
pipeline de 500 étapes pour atteindre des vitesses phénoménales??? Eh
bien, comme dans tout, il y a un inconvénient majeur à tout ceci.
Chaque cycle, les données n'avancent que d'1/5 du pipeline, donc chaque
donnée prends maintenant 5 cycles pour être traitées (avant, 1 seul
cycle suffisait). Bien sûr, le processeur peut maintenant traiter 5
données en même temps, mais à chaque fois que le processeur doit
traiter de petites données indépendantes (et non d'énormes données)
le processeur gaspille des cycles à attendre. Par exemple, si une donnée
est si petite qu'elle est divisée en 2 instructions à traiter, le
processeur devra utiliser 6 cycles pour traiter ces 2 instructions (5
cycles requis pour que la première aie parcouru le pipeline au complet
et 1 cycle de plus pour que la 2e instruction ne sorte). Mais si une
donnée se divise en 1000 instructions, le processeur gaspillera
effectivement les 4 premiers cycles en attendant la première sortie,
mais dès que la première instruction sortira au 5eme cycle, le
processeur sortira 1 instruction par cycle, et ira ainsi 5 fois plus
rapidement que l'ordinateur 10 MHz.
Un autre inconvénient d'un long pipeline est la pénalité d'une
mauvaise prédiction de l'opération à exécuter pour traiter chaque
instruction. En effet, le processeur doit "deviner" quelle opération
doit être utilisée pour chaque instruction, et à la sortie de cette
instruction à la fin du pipeline, il regarde si la réponse à du bon
sang. Si, par une mauvaise coïncidence non, le processeur interrompt
ses autres opérations, vide son pipeline et recommence à traiter son
instruction du début. Ce qui veut dire que dans un pipeline d'une étape,
une mauvaise prédiction, fait perdre 1 cycle, alors que dans un
pipeline, de 5 étapes, 5 cycles sont perdus.
Dans le monde réel, le pipeline est très influent sur la puissance du
processeur et sa vitesse, mais il interagit avec beaucoup d'autres
facteurs. Tout d'abord, le temps requis pour la plus longue étape du
pipeline détermine la fréquence maximale du processeur. Mais, ce temps
dépends de la qualité des transistors, et d'autres facteurs limitent
souvent la vitesse. Par exemple, dans le PIII Katmai (0.25 microns), la
vitesse maximale que le pipeline de 10 étapes permettait est d'environ
650 MHz, mais à 600 MHz, il chauffait tellement que le silicium gagnait
trop de conductivité (et les connecteurs en perdaient) et les signaux
devenaient peu clairs. Donc, pratiquement personne n'arrivait à pousser
un de ces processeurs plus haut que 600 MHz. Par contre, le Athlon, qui
a un pipeline de 11 étapes arrivait à atteindre 700 MHz. L'explication
la plus probable est que l'agencement des transistors dans le processeur
permet une meilleure efficacité et que les transistors de l’Athlon étaient
plus performants.
Dans un PIII Coppermine (0.18 microns), qui est pourtant du même
design que le Katmai, la vitesse maximale est augmentée à 1133 MHz. Grâce
à l'amélioration des procédés de fabrication des transistors,
ceux-ci "switchent" beaucoup plus vite et le courant voyage
aussi beaucoup plus vite entre les transistors. Donc, même sans avoir
modifié le pipeline, la fréquence maximal a été changée.
Mais pour le Pentium 4, Intel voulaient créer un processeur qui
vieillirait très bien et qui serait facile à améliorer sans avoir
besoin de redesign complet. C'est pourquoi ils ont conçu le pipeline du
P4 avec 20 étapes, le double du PIII. Le résultat est que le P4
devrait pouvoir atteindre la vitesses de 2 GHz dans sa forme actuelle
(0.18 microns, comme le PIII). Le seul inconvénient, de cette
architecture est que bien très rapide, le P4 n'offre souvent qu'une
performance très médiocre (parfois plus lent qu'un PIII 500 MHz). Ceci
est dû au fait que s'il traite beaucoup de petites données, le
gaspillage de cycle est colossal. Par contre, dans les applications
multimédias intensives, la performance est très bonne. Donc, tout
comme ça l’a été le cas pour le Pentium (qui introduisait un
pipeline géant de 5 étapes!!!), les logiciels devront être optimisés
pour envoyer un petit nombre de grosses instructions au processeur au
lieu d'envoyer beaucoup de petites instructions. C'est donc le temps qui
nous dira si un pipeline de 20 étapes est la voie de l'avenir ou si 10
étapes est le maximum possible pour garder des performances optimales.
Le processeur Pentium est un microprocesseur 300
fois plus rapide que le processeur du premier P.C. En effet, il est
capable de fonctionner jusqu'à plus de 100 millions d'instructions par
seconde à une vitesse d'horloge de seulement 60 Mhz. Il est deux fois
plus rapide que l'Intel 486 DX2 66Mhz. De plus, l'unité de calcul en
virgule flottante du Pentium offre des performances jusqu'à 5 fois supérieures
à celles du Intel 486 DX2 66Mhz pour des applications faisant
massivement appel aux mathématiques.
Le Pentium reprend partiellement l'architecture de l'Intel 486. Son cœur
est un moteur RISC à hautes performances ou, plutôt, deux moteurs de
type superscalaire. Il est doté de deux Unités Arithmétique et
Logique avec, pour nourrir en instructions et en opérandes, un pipeline
performant capable de gérer une queue de 8 instructions avec pré décodage.
Le tout réside sur une puce contenant 3,2 millions de transistors et se
présente en un boîtier céramique avec un radiateur de 55x55 mm.


Le Pentium possède en plus du Intel
486:
- Une mémoire cache.
Le processeur Pentium possède
des mémoires caches pour le code et les données, afin de réduire les
conflits entre mémoires caches et d'augmenter les performances globales
du système. Et comme l'antémémoire est intégrée au microprocesseur,
les informations essentielles restent toujours à portée de la chaîne
d'assemblage. Instructions et données sont constamment accessibles sans
perte de temps. Dans 95% des cas, l'information est à portée de main.
- Un bus de 64 Bits
Pour permettre aux informations
de mieux circuler, Intel double la taille du bus du processeur Pentium.
Deux fois plus d'informations peuvent ainsi être extraites à chaque
fois. Intel a ajouté un mode "rafale" pour le transfert de
données à haute vitesse. Résultat: davantage d'informations arrivent
plus rapidement à destination. De plus, pour être sûr que les bonnes
données vont là où il faut, le processeur Pentium contrôle
automatiquement l'intégrité des données.
- Une prévision de
branchement
Intel a doté le processeur
Pentium d'une intelligence qui lui est propre, sous forme d'une petite mémoire
cache plus connue sous le nom de Branch Target Buffer (mémoire-tampon
de destination de branchement). Elle émet une hypothèse vraisemblable
de branchements. Si la prédiction s'avère juste (ce qui se réalise
dans 90% des cas),l'ordre est exécuté instantanément ce qui augmente
d'autant plus la performance.
- Le superscalaire
Le processeur Pentium possède
deux pipelines parallèles pour les instructions sur les nombres
entiers. Il peut ainsi exécuter deux instructions à la fois. Après
avoir saisi et décodé partiellement une instruction, il décide alors
si elle peut être traitée en parallèle avec une autre instruction.
S'il ne détecte aucun lien d'interdépendance, les deux instructions
sont envoyées sur des pipelines parallèles pour être exécutées.
- Les calculs en virgule
flottante
Pour accélérer les trois opérations
arithmétiques courantes en virgule flottante - multiplication,
division, addition - le Pentium intègre des fonctions spécialisées
dans le silicium. Grâce à elles, la plupart des calculs
s'accomplissent en un seul cycle d'horloge. Autrement dit, c'est une
performance 5 fois supérieures à celle des ordinateurs basés sur le
processeur Intel486 DX2 66.
1) Introduction
Pour résumer la philosophie RISC, on pourrait dire que ses
supporters pensent qu'il est aujourd'hui indispensable de revoir les
principes mêmes de l'architecture des ordinateurs; ces derniers sont
devenus au fil du temps tellement complexes qu'il est nécessaire de
repenser leur structure pour en diminuer la complexité et bâtir une
nouvelle génération d'ordinateurs n'ayant plus rien de commun avec la
précédente. Les premiers ordinateurs étaient très simples, ils
n'avaient qu'un nombre d'instructions limité et un ou deux modes
d'adressage, les concepteurs ont ajouté alors des microprogrammes afin
d'élargir le jeu d'instructions. Mais, en quelques années, des
ordinateur comme le VAX disposent plus de 200 instructions et une
douzaine de modes d'adressage, le tout étant implémenté par des
microprogrammes tournant sur du matériel encore assez simple.
Cependant, les statistiques nous montrent que les applications utilisent
à 85% des affectations, des instructions if, et appels de procédure.


|
Pourcentages des instructions
employées dans un programme
|
|
Instructions
|
SAL
|
XPL
|
Fortran
|
C
|
Pascal
|
Moyenne
|
|
Affectation
If
Call
Boucle
Goto
Autres
|
47
17
25
6
0
5
|
55
17
17
5
1
5
|
51
10
5
9
9
16
|
38
43
12
3
3
1
|
45
29
15
5
0
6
|
47
23
15
6
3
6
|
Comme le langage machine devient plus gros
et plus complexe, son interpréteur, le microprogramme, devient plus
gros et donc plus lent. S'il y a plus d'instructions, on passe plus de
temps à décoder les codes opératoires. Plus important encore, s'il y
a nombreux modes d'adressage, l'analyse de l'adresse ne peut plus se
faire directement car cela conduirait à répéter le même microcode
des centaines de fois dans le microprogramme. Le pire de tout est que
l'on ralentit le fonctionnement de ces machines pour permettre aux
programmeurs de disposer d'instructions qu'au bout du compte ils préfèrent
ne pas utiliser. On a fini par se dire que les ordinateurs tourneraient
plus vite si chaque programme pouvait être compilé directement en
microcode, microcode qui serait placé dans une mémoire RAM rapide pour
l'exécution.
2) Très peu de micro-instructions
En bref une machine RISC est un ordinateur
disposant d'un petit nombre de micro-instructions. Les programmes
utilisateur sont compilés sous forme de suite de ces micro-instructions
et directement exécutés par le matériel, sans qu'il y ait besoin d'un
interpréteur. Le résultat est que lorsqu'on exécute quelque chose de
très simple, comme l'addition de deux registres, on le fait en une
seule micro-instruction. Les instructions les plus rapides du langage
machine d'un CISC classique prennent respectivement 8 à 15
micro-instructions. Ayant gagné un facteur 10 dans les cas les plus
courants, nous pouvons accepter une baisse sensible des performances
dans les cas exceptionnels et avoir au total un gain net appréciable.
De même, pour des raisons de vitesse comme de complexité, il n'est pas
souhaitable d'avoir de nombreux modes d'adressage.
En un certain sens, il s'agit d'un retour aux sources. Avant que Wilkes
n'invente la microprogrammation, tous les ordinateurs étaient des
machines RISC dont les instructions, très simples, étaient exécutées
directement par le RISC dont les instructions, très simples, étaient
exécutées directement par le matériel. Mais ce ne sont pas des progrès
du matériel qui ont permis aux machines RISC d'être crédibles, mais
une évolution des techniques du logiciel. C'est essentiellement l'amélioration
des techniques de compilation qui a rendu possible la génération
automatique d'un microcode aussi bon (sinon meilleur) que s'il avait été
fait à la main.
3) Les instructions RISC se font en un
seul cycle.
S'il est vrai que la plupart des machines
RISC ont relativement peu d'instructions, ce qui les distingue vraiment
des machines CISC c'est que les instructions RISC sont effectuées en
un seul cycle. En effet, ce cycle consiste à charger deux opérandes
pris dans le registre de travail, à les placer sur les bus internes, à
les exécuter dans l'Unité Arithmétique et Logique et à placer le résultat
dans le registre de travail. C'est tout cela qui prend un cycle
d'horloge et qui fait qu'une instruction RISC ressemble beaucoup à une
micro-instruction. Une instruction interprétée, au contraire, prend en
général 10 cycles d'horloge.
Ceci implique que toute instruction qu'on ne peut exécuter en un cycle
d'horloge doit être exclue du jeu d'instructions. C'est ainsi que de
nombreuses machines RISC ne disposent ni de la multiplication ni de la
division. En pratique, la plupart des multiplications mettent en jeu une
constante statique connue à la compilation, ce qui fait qu'on peut les
simuler par une suite d'additions ou de décalages. Les autres
multiplications et toutes les divisions sont exécutées par des
routines prises dans des bibliothèques. Les instructions en virgule
flottante, enfin, sont exécutées par un coprocesseur.
4) Deux instructions pour l'accès à
la mémoire.
Seulement, les instructions qui mettent en
jeu la mémoire pour le chargement et/ou le rangement sont trop longues
pour conserver cette règle d'or. Pour cela, les instructions ordinaires
peuvent n'avoir que des opérandes registre. Mais comme certaines
instructions doivent tout de même référencer la mémoire, on ajoute
à l'architecture des instructions spéciales LOAD (chargement) et STORE
(rangement). Il n'y a que ces instructions qui puissent référencer la
mémoire. Mais ceci n'est pas encore suffisant pour les exécuter en un
seul cycle. Pour cela, au lieu d'exiger à tout prix qu'une instruction
soit exécutée en un seul cycle, nous nous imposerons de démarrer une
instruction à chaque cycle, que la précédente soit terminée ou non.
Si au cours de plusieurs cycles nous parvenons plusieurs instructions,
nous aurons bien exécuté, en moyenne, une instruction par cycle. C'est
pour réaliser cela que toutes les machines RISC sont pipelinées et
c'est au compilateur de vérifier que l'instruction qui suit un LOAD
n'utilise pas l'élément qui est à charger. Si le compilateur ne peut
trouver une telle instruction à exécuter immédiatement après le LOAD,
il doit absolument insérer une instruction NO-OP (instruction vide)
pour attendre un cycle. On trouve une situation analogue après un STORE
mais qui ne pose en général pas de problème particulier sauf si
l'instruction qui suit le STORE n'a de sens que si le rangement est
terminé.
Qu'arriverait-il si un programme essayait, par erreur, d'utiliser un
registre en cours de chargement? Les diverses machines RISC réagissent
différemment. La plupart d'entre elles ont un dispositif de
verrouillage matériel qui insère automatiquement des instructions
vides jusqu'à ce que le registre soit chargé. Mais il existe aussi des
machines qui laissent utiliser une valeur de registre incorrecte. Si le
réorganisateur (programme qui redistribue les instructions en langage
d'assemblage de façon à remplir les trous derrière le LOAD) ne peut
remplir l'intervalle, il doit insérer une instruction vide, ce qui
augmente la taille du programme. L'avantage de cette méthode est
d'avoir une Unité Centrale plus simple donc plus rapide.
5) Les avantages de l'absence de
microcode.
La suppression de ce niveau d'interprétation
est le secret de la rapidité des machines RISC. Les défenseurs des
machines CISC disent souvent qu'il vaut mieux implémenter des
instructions complexes en microcode que d'avoir des instructions
utilisateur. Si une instruction complexe prend 10 micro-instructions de
100 nanosecondes chacune, son exécution sur une machine CISC prendra 1
microseconde. Sur une machine RISC, la même instruction prendra 10
instructions RISC au lieu de 10 micro-instructions. Et si les
instructions RISC prennent chacune 100 nanosecondes, cela fera encore 1
nanoseconde. Le seul avantage des CISC est qu'elles économisent un peu
de mémoire.
Puisqu'il n'y a pas de microcode, on a de la place libre sur la puce des
circuits RISC pour implémenter d'autres choses. Certaines machines
RISC, mais pas toutes, utilisent cette place disponible pour disposer
d'un grand nombre de registres (jusqu'à 500), ce qui permet de réduire
le nombre de LOAD et de STORE.
Dans un ordinateur classique, un grand pourcentage du trafic avec la mémoire
est directement lié aux appels de procédures. En effet, on doit passer
des paramètres, sauvegarder des registres, empiler l'adresse de retour
à l'appel et la dépiler à la fin. La méthodes des "fenêtres
glissantes de registres" permet de stocker ces informations dans
les registres. Ceci permet de supprimer la presque totalité de ce
trafic.
6) Les instructions en format fixe
Il est nécessaire d'avoir des
instructions en format fixe. Les différents bits de chaque instruction
servent d'entrée au décodeur du code opération et à d'autres parties
du matériel. Si l'on avait des instructions de longueur variable, de 1
à 17 octets (comme sur le 80386), cela ne pourrait fonctionner. Car la
seule façon pour que cela fonctionne est alors d'avoir un
microprogramme qui extraie les octets pris dans la file des instructions
et les analyse
7) La complexité dans le compilateur
le fait d'avoir un jeu d'instructions réduit
peut être gênant. Certaines instructions que les programmeurs de
compilateurs CISC imaginent comme allant de soi (par exemple MULTIPLY)
doivent être en fait synthétisées de nombreuse façons différentes
suivant leurs opérandes. De plus que les compilateurs RISC doit tenir
compte des chargements et rangements différés, ceux-ci augmentent
considérablement la complexité des compilateurs. Seulement, le fait
que les instructions ordinaires n'utilisent pas d'opérandes en mémoire
fait qu'il est essentiel que les compilateurs pour machines RISC
optimisent au mieux l'utilisation des registres.
Ainsi les machines RISC peuvent différer de leurs équivalents CISC de
huit façons qui sont résumées dans le tableau suivant:
|
Caractéristiques des
machines RISC et CISC
|
|
|
Machines RISC
|
Machines CISC
|
|
1
|
Instructions
simples ne prenant qu'un cycle
|
Instructions
complexes prenant plusieurs cycles
|
|
2
|
Seules les
instructions LOAD et STORE font des accès à la mémoire
|
Toutes les
instructions peuvent faire des accès à la mémoire
|
|
3
|
Traitement
pipeline
|
Peu ou pas de
traitement pipeline
|
|
4
|
Instructions exécutées
par le matériel
|
Instructions
interprétées par un microprogramme
|
|
5
|
Instructions au
format fixe
|
Instructions en
format variable
|
|
6
|
Peu
d'instructions et de modes d'adressage
|
Beaucoup
d'instructions et de modes d'adressage
|
|
7
|
Toute la
complexité est dans le compilateur
|
Toute la
complexité est dans le microprogramme
|
|
8
|
Plusieurs jeux
de registres
|
Un seul jeu de
registres
|
La
surface qu’occupent les processeurs RISC est
inférieure à celle occupée par les processeurs CISC, du fait
que ceux-ci contiennent moins d’instructions. il en découle que les
processeurs RISC dégagent moins de
chaleur que les CISC, ils consomment donc moins d’énergie. La technologie RISC est donc plus performante au
niveau de la consommation électrique et
du dégagement thermique. Ceci évite souvent d’avoir à mettre
un ventilateur sur les processeurs RISC ce qui est un avantage au moment
de la conception d’ordinateur portable, cela peut-être aussi un
confort auditif, car les ventilateurs sont bruyants
 

|
System
(Bus/Cache/CPU speed)
|
Integer
Index
|
Floating-Pt
Index
|
|
PowerBook
G3
(50/100/250)
|
6.998572
|
5.228775
|
|
Pentium
II 300
(66/150/300)
|
4.226743
|
4.829937
|
|
PowerBook
G3
(50/166/250)
|
7.071710
|
5.396240
|
|
Pentium
II 333
(66/166/333)
|
4.724942
|
5.398357
|
Le
prix de fabrication et de développement des processeurs RISC est
nettement inférieur à celui de ses cousins CISC, ceci est du au fait
que ses instructions sont à la fois moins nombreuses et plus simples.
Ceci dit le coût de développement du compilateur est supérieur, le
prix du processeur au final est donc à peu près
identique à celui d’un CISC pour des performances égales.
Deux
paramètres peuvent être utilisés pour mesurer la performance d’un
processeur :
L’amélioration
du temps de réponse implique toujours une amélioration du throughput.
Toutefois, le contraire n’est pas toujours vrai : une
augmentation du nombre de processeur d’un ordinateur augmente le
throughput, sans améliorer nécessairement le temps de réponse.
Nous allons considérer le temps d’exécution comme paramètre
principal pour le calcul de la performance d’un processeur.

Le rapport de performance entre deux
machines A et B est :

et l’on dit que A est n fois plus rapide
que B.
Pour le calcul de performance, on tient compte seulement de CPU time,
inférieur à elapsed time.
Le temps d’exécution dépend de trois facteurs
-
le
nombre d’instructions machine exécutées,
-
le nombre moyen de cycle d’horloge
par instruction machine et
-
la période d’horloge
Temps = 1/performance =
(nombre d’instructions)*(nombre de cycles par instruction)*(période
d’horloge)
Pour une architecture donnée (un certain
répertoire d’instructions), il est possible d’améliorer la
performance par trois moyens différents :
-
augmenter
la fréquence d’horloge
-
améliorer
l’organisation interne pour diminuer le nombre de cycle par
instruction
-
améliorer le compilateur pour
diminuer le nombre d’instructions ou pour augmenter le taux
d’utilisation des instructions avec un nombre de cycle par
instruction moindre
Lors de la conception d’une
architecture, il est possible de privilégier l’un ou l’autre des
paramètres qui interviennent dans la performance d’un processeur.
Temps
= 1/performance = (nombre
d’instructions)* ---------------------->CISC
(nombre de cycles par instruction)*------------>RISC
(période d’horloge)
Le CISC privilégie le nombre
d’instructions, alors que les RISC privilégie le nombre de cycles par
instruction.
Les technologies RISC et CISC ont chacune
leurs avantages et leurs inconvénients, cependant aujourd’hui la
technologie RISC semble prendre le pas sur la technologie CISC, néanmoins
les processeurs CISC restent compétitifs alors que depuis plusieurs années
cette technologie est dite à bout de souffle. Nous pensons qu’il est
plus intelligent de privilégier l’optimisation des processeurs plutôt
que de faire une course à la fréquence, car même compétitif, les
processeurs CISC restent moins puissants pour des fréquences pourtant
bien supérieur. L’avenir nous dira la quelle de ces technologies est
la plus efficace, à moins que d’ici là une autre technologie
voie le jour.
Retour
|