© François Anceau 2000/2001 1
L'EVOLUTION DE L'ARCHITECTURE DES
MICROPROCESSEURS
François ANCEAU
CNAM, 292 rue St Martin, 75141 Paris Cedex 3, France, tel 01 40 27 24 33, [email protected]
1. Des calculateurs programmables aux ordinateurs
Depuis les années 40, l'informatique et l'électronique font cause commune. Comme les
ordinateurs sont des appareils très complexes, ils ont bénéficié des avancées successives de
l'électronique pour améliorer leur fiabilité, leurs performances et leur miniaturisation.
L'invention du transistor en 1947 n'a pu s'appliquer aux ordinateurs qu'une dizaine
d'années plus tard, lorsque ces composants sont devenu plus fiables et plus rapides par l'utilisation
du silicium. Cette évolution technologique, alliée à l'utilisation des mémoires à tore, permit aux
ordinateurs d'acquérir une certaine maturité. Durant les années 60 ces machines sont
progressivement passées du stade de machines à calculer à celui d'ordinateurs. L'on vit apparaître
des applications comme les traitements de texte, les bases de données, les applications
graphiques, l'analyse des langues naturelles, etc… qui n'étaient plus strictement du calcul.
L'invention des circuits intégrés par Jack Kilby (Texas Instruments) en 1958 permit, dès le
milieu des années 60 de réduire encore la taille des machines et leur consommation tout en
améliorant leur performances.
2. La fantastique évolution des microprocesseurs.
Le premier microprocesseur commercial fut l'Intel 4004 ®,. A partir de cette date, un
rythme très rapide d'évolution s'est installé. De nombreux autres modèles sont apparus, de plus en
plus puissants et de plus en plus complexes. Ce rythme d'évolution s'est maintenu sans fléchir
jusqu'à aujourd'hui. La complexité de ces machines monolithiques est passée de 2800 transistors,
pour l'Intel 4004 ®, à plusieurs dizaines de millions pour les microprocesseurs modernes. Pendant
la même durée, leur puissance de traitement est passée des 60 000 instructions exécutées par
seconde par l'Intel 4004 ® à plusieurs milliards par les machines actuelles les plus puissantes.
L'histoire des microprocesseurs sur les trente dernières années est certainement la plus formidable
évolution technologique de l'histoire humaine, tant en durée qu'en ampleur.
1 000
10 000
100 000
1 000 000
10 000 000
100 000 000
1970 1975 1980 1985 1990 1995 2000 2005
PPC620
I486
nombre de transistors
I4004
I8008
MC6800 I8086
I286
MC68000
MC68020 I386
MC68040
PPC601 Pentium
K6 Pentium II
Celeron
Pentium-Pro
0,01
0,1
1
10
100
1 000
10 000
1970 1975 1980 1985 1990 1995 2000 2005
I386/16
I486/25
P II/330
P III/800
P III/1,13G
PPC750/350
ALPHA/300 PP/133
Pentium/133
Pentium/66
I486/50
I286
I8088
I4004
PPC601/66
ALPHA/150
PPC604/133
Millions d'instructions/s
Figure 1. Evolution de la complexité et de la performance des microprocesseurs
2
Ce rythme d'évolution effréné est appelé loi de Moore (du nom du président de la
compagnie Intel qui l'a formulée dans les années 70). Il provient pour moitié de l'évolution
technologique des circuits intégrés, et, pour l'autre moitié, de l'évolution de l'architecture de ces
machines.
3. Types d'ordinateurs
Les ordinateurs peuvent être classés en deux grandes familles suivant que nous
connaissons, ou ignorons, leur existence.
Les ordinateurs visibles qui constituent tout ce que nous appelons ordinateur et
surtout ceux qui se présentent comme des machines universelles, bien qu'ils soient
souvent utilisés de manière spécifique.
Des ordinateurs cachés (aussi appelés embedded ou inclus) qui se présentent comme
des composants électroniques évolués et dont nous ignorons généralement l'existence.
Ceux-ci sont, et de loin, les plus nombreux. Ils apportent de l'intelligence aux objets
qui nous entourent et ils permettent l'occurrence de nouveaux objets inconcevables
sans leur présence.
4. Absorption des gammes d'ordinateur par les microprocesseurs
L'évolution des microprocesseurs se traduit par la mise sur le marché de machines de plus
en plus puissantes, appelées micro-ordinateurs, dont le coût reste au voisinage de 1000 à
2000 euros. Lorsque la puissance de ces micro-ordinateurs dépasse celle d'une gamme
traditionnelle d'ordinateurs (généralement de coût beaucoup plus élevé), celle-ci disparaît et sa
fonction vient s'ajouter à la liste, déjà longue, des applications des micro-ordinateurs. Ce
phénomène s'est d'abord produit pour la gamme des mini-ordinateurs, nés dans les années
soixante et absorbés à la fin des années 80. De même, les ordinateurs de centre de calcul, nés
avec l'informatique, se sont fait absorber (difficilement!) vers le milieu des années 90. L'histoire ne
s'arrête pas là, car la puissance de calcul des micro-ordinateurs va devenir comparable à celle des
super-ordinateurs avant la fin de la décennie, ce qui va provoquer l'absorption de cette gamme.
5. Evolution du prix des micro-processeurs
Le coût des microprocesseurs suit une évolution comparable à celle de tous les circuits
intégrés produits en grande série. Les nouveaux modèles sont introduits à un prix voisin de 1000 $
qui baisse ensuite assez rapidement dans les années suivantes pour se stabiliser autour de 10 à
100 $, avant que le produit ne disparaisse.
A chaque instant s'établit une hiérarchie de valeur basée sur le fait que le prix des anciens
modèles a baissé et que leurs performances sont plus faibles. Cet ordre des choses est
évidemment très éphémère, puisque les meilleurs modèles à un instant donné seront
inexorablement dépassés quelques années plus tard. Il est toujours difficile d'admettre qu'un
nouveau modèle, considéré comme extraordinaire, va, en quelques années, se banaliser jusqu'à
devenir un produit de grande consommation.
3
6. Structure d'un processeur
La technologie micro-électronique nous permet de construire des circuits pour le
traitement de l'information qui sont extrêmement rapides (une transition en quelques centaines de
pico-secondes) mais aussi beaucoup plus complexes (par un facteur de 5 à 50) que les circuits
capables de mémoriser de l'information. Comme le travail réalisé par une unité de traitement se
compose d'une longue suite d'opérations élémentaires, il est donc naturel de la réaliser sous la
forme d'une structure bouclée dans laquelle les informations sont puisées dans des organes de
mémorisation pour être fournies à un organe de transformation, appelé opérateur. Les résultats
des opérations (très simples) sont ensuite ré-écrits dans les organes de mémorisation. Cette
organisation bouclée permet de minimiser le matériel nécessaire par une forte réutilisation des
opérateurs dans un fonctionnement séquentiel. Le même opérateur est donc utilisé répétitivement
pour toutes les opérations. Comme il est très rapide, le nombre de cycles nécessaires à un
traitement "visible" peut être très important. Il transforme la rapidité de la machine en sa puissance
de traitement. Toutes les tentatives pour réaliser des machines à traiter l'information basées sur
d'autres principes ont échoué. Cela ne signifie pas que c'est impossible, mais vraisemblablement
que cette structure résulte d'une utilisation "optimale" des caractéristiques "profondes" de la
technologie que nous utilisons.
7. Hiérarchie mémoire
Les caractéristiques des différentes technologies utilisées pour réaliser les dispositifs de
mémorisation font que leur taille et leur vitesse varient de manière opposées. Plus un élément de
mémorisation est rapide, plus sa taille est réduite. Par exemple, les registres utilisés dans le
processeur ne permettent le stockage que de quelques dizaines, ou quelques centaines, d'octets
mais ils peuvent être accédés à la vitesse des cycles de la boucle de traitement. A l'opposé, les
disques magnétiques peuvent contenir des dizaines de milliards d'octets mais leur fonctionnement
séquentiel limite leur temps d'accès à la dizaine de millisecondes.
Comme l'idéal serait de disposer d'organes de mémorisation à la fois rapides et de
capacité importante, on les simule par l'utilisation de hiérarchies de mémoires dans lesquelles une
mémoire rapide de taille réduite est utilisée pour contenir les informations, utiles à un instant donné,
extraites d'une grande mémoire plus lente.
8. Les notions d'architecture externe et interne des ordinateurs
L'architecture externe des ordinateurs concerne essentiellement la vision qu'ils offrent à
leurs programmeurs en langage de bas niveau (assembleur). Il ne faut pas confondre ce point de
vue avec l'architecture interne qui correspond à l'organisation physique de ces machines.
Nous pouvons dire que l'architecture externe d'une machine concerne son utilisabilité,
tandis que son architecture interne concerne son coût et sa performance.
4
9. Les familles de processeurs
9.1. Les CISC et les RISC
On peut classer les processeurs en deux grandes familles suivant la complexité de leur jeu
d'instruction:
Les machines CISC (pour Complex Instruction Set Computers)
Ces machines sont directement issues de la longue histoire des ordinateurs. Leurs
instructions peuvent commander des opérations complexes comme par exemple la
recherche d'un caractère dans une table. Ces instructions, de format et de durée
d'exécution variables, lisent souvent leurs opérandes dans la mémoire centrale et
doivent donc en préciser le mode d'accès. Ce type de jeu d'instruction fut celui de
tous les processeurs conçus jusqu'au début des années 80.
Les machines RISC (pour Reduced Instruction Set Computers)
Ces machines sont nées à la suite des travaux de John Cocke sur le projet IBM 801
[8]. Ce projet était basé sur le fait que certaines instructions des machines CISC
avaient un taux d'utilisation très faible, qui ne justifiait pas le matériel mis en œuvre
pour les exécuter. Dans les machines RISC, les instructions sont très simples et très
rapides [9]. Leur format et leurs durées d'exécution sont standardisés. La majorité
d'entre elles n'accèdent qu'aux registres (qui sont plus nombreux). Les accès à la
mémoire centrale sont traités comme des accès aux organes périphériques. Cette
approche permet de tirer un meilleur parti du matériel mais provoque un allongement
sensible des programmes. Tous les processeurs conçus pendant les années 80 furent
de ce type.
9.2. Les machines langages et systèmes
En plus de cette classification, il est intéressant de distinguer deux sous-classes très
importantes des machines CISC. Celles ci ont été développées avec l'idée de faire migrer des
fonctions logicielles vers le matériel pour en améliorer les performances.
Les machines-langage qui possèdent un jeu d'instructions adapté à l'exécution des
langages informatiques évolués. De telles machines ont eu leur heure de gloire à la fin
des années 60 et au début des années 70. Depuis cette époque, des résurgences
périodiques font apparaître des machines de ce type pour des applications plus ou
moins spécifiques.
Les machines-système qui possèdent un jeu d'instructions adapté à l'exécution des
fonctions de base d'un système d'exploitation. Ce type de machine découle
directement du projet Multics développé au MIT à la fin des années 60. De
nombreuses machines de ce type ont été conçues au début des années 70. Depuis
l'Intel 286, tous les processeurs PC sont de ce type.
10. L'accélération de la vitesse de traitement
Le besoin en performance des microprocesseurs, des microcontrôleurs et des processeurs
de traitement du signal est insatiable. La demande potentielle des applications existantes, et surtout
5
des nouvelles, ne semble pas connaître de limite supérieure. La pression pour réaliser des
processeurs de plus en plus performants est donc énorme.
11. Les techniques d'accélération
11.1. Le problème des dépendances
Les techniques architecturales utilisées pour accélérer les processeurs consistent à
exécuter en parallèle plusieurs instructions initialement conçues pour être séquentielles. Toutefois, il
arrive fréquemment que l'exécution de certaines instructions nécessite l'utilisation de résultats
produits par celles qui le précèdent immédiatement. Lorsque l'on tente d'exécuter ces instructions
en parallèle, ces résultats intermédiaires peuvent ne plus être disponibles à temps ce qui produit un
blocage de l'exécution du programme. De tels phénomènes sont appelés des dépendances.
Statistiquement, la probabilité d'occurrence des dépendances croît avec le nombre d'instructions
que l'on désire exécuter en parallèle.
Des techniques spéciales deviennent nécessaires pour limiter l'effet des dépendances.
Celles-ci se déclinent en deux approches: la première consiste à accélérer, par des voies internes à
la machine, le transfert entre les organes qui produisent l'information et ceux qui l'utilisent. La
seconde consiste à deviner par des techniques statistiques les valeurs que prendront ces résultats
intermédiaires. Ces valeurs "devinées" vont permettre de poursuivre l'exécution des instructions
tant que celles-ci ne remettent pas en cause l'état "algorithmique" de la machine (l'état de la
mémoire et des registres). Cette exécution partielle est appelée spéculative. Dès que la valeur des
résultats intermédiaires est connue, soit ceux-ci sont identiques aux valeurs prédites, ce qui
entraîne que les exécutions spéculatives sont transformées en exécutions normales, soit ils sont
différents et les exécutions spéculatives doivent être détruites avant de relancer l'exécution avec les
bonnes valeurs. Ce retour en arrière est très coûteux, ce qui incite fortement à disposer des
mécanismes de prédiction les plus performants possibles.
L'exécution spéculative peut être poursuivie sur plusieurs instructions en utilisant des
copies des registres, appelées registres virtuels, pour passer l'information d'une instruction aux
suivantes sans altérer l'état des véritables registres.
Les dépendances de séquencement sont beaucoup plus nombreuses. Elles sont traitées
différemment. En effet, le comportement d'un programme est caractérisé par une très forte
probabilité de venir ré-exécuter le morceau de code que l'on vient d'exécuter (principe de localité
des programmes). Ceci signifie que les programmes sont surtout constitués de boucles qui
provoquent de nombreuses ré-exécutions des mêmes segments de code.
L'analyse statistique du comportement du programme pendant quelques exécutions d'un
segment particulier du code permet de prédire son comportement pour sa prochaine exécution.
Les techniques modernes arrivent à réaliser de telles prédictions avec un taux de succès pouvant
atteindre 95%.
11.2. Techniques dynamiques de prédiction des branchements
Les techniques dynamiques de prédiction consistent à mesurer le comportement de
chaque branchement dans les exécutions précédentes du segment de code pour en prédire le
comportement futur:
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !