Le premier microprocesseur (Intel 4004) a été inventé en 1971.
Depuis, la puissance des microprocesseurs augmente exponentiellement. Quels sont donc ces petits morceaux
de silicium qui dirigent nos ordinateurs?
Le processeur (CPU, pour Central Processing Unit) est le cerveau de l'ordinateur, c'est lui
effectue les calculs et exécute les instructions qui ont été programmées.
Toutes ces opérations permettent de manipuler des informations numériques,
c'est-à-dire des informations codées sous forme binaire.
Pour réaliser ces traitements, les microprocesseurs utilisent de "petits interrupteurs"
utilisant l'effet transistor découvert en 1947 par John Barden et Walter Brittan qui reçurent le prix Nobel l'année suivante pour cette découverte.
Il existe plusieurs millions de ces transistors sur un seul processeur !
Les éléments principaux d'un microprocesseur sont:
- Une horloge qui rythme le processeur. Entre deux tops d'horloge le processeur effectue une action. Une instruction nécessite une ou plusieurs actions du processeur.
Ainsi plus l'horloge a une fréquence élevée, plus le processeur effectue d'instructions par seconde (l'unité
retenue pour caractériser le nombre d'instructions traitées par unité de temps
est généralement le MIPS, Millions d'instructions par seconde).
Par exemple un ordinateur ayant une fréquence de 100 Mhz effectue 100 000 000 d'instructions par seconde
- Une unité de gestion des bus qui gère les flux d'informations entrant et sortant
- Une unité d'instruction qui lit les données arrivant, les décode puis les envoie à l'unité
d'exécution.
- Une unité d'exécution qui accomplit les tâches que lui a données l'unité d'instruction.
Le processeur travaille en fait grâce à un nombre très limité de fonctions (ET logique, Ou logique, addition ...),
celles-ci sont directement câblées sur les circuits électroniques. Il est impossible de mettre toutes les instructions sur
un processeur car celui-ci est limité par la taille de la gravure, ainsi pour mettre plus d'instructions il faudrait un processeur
ayant une très grande surface, or le processeur est constitué de silicium et le silicium coûte cher, d'autre part il chauffe
beaucoup. Le processeur traite donc les informations compliquées à l'aide d'instructions simples.
Le parallèlisme consiste à exécuter simultanément sur des processeurs
différents des instructions relatives à un même programme. Cela se traduit par
le découpage d'un programme en plusieurs processus qui seront traités par des processeurs
différents dans le but de gagner en temps d'exécution. Cela nécessite toutefois
une communication entre les différents processus. C'est le même principe de fonctionnement
que dans une entreprise: le travail est divisé en petits processus traités par des services
différents et qui ne servent à rien si la communication entre les services ne fonctionne pas
(ce qui est généralement le cas dans les entreprises...).
Le pipelining est un principe simple à comprendre.
Il permet de mettre à disposition du microprocesseur les instructions qu'il va devoir effectuer.
Les instructions font la "file" (d'où le nom de "pipeline") dans la mémoire cache.
Ainsi, pendant que le microprocesseur exécute une instruction, la suivante est mise à sa disposition.
Le pipelining permet donc en quelque sorte d'empiéter sur la fin d'une instruction
sur le début de la suivante.
En effet, une instruction se déroule selon trois phases :
- Récupération de la donnée (notée F pour Fetch) : recherche en mémoire de l'instruction, mise à jour du compteur ordinal ;
- Décodage (noté D pour Decode) : obtention des calculs à faire, des éléments de données concernés ;
- Exécution (notée E pour Execute) : calcul à proprement parler.
Dans une structure non pipelinée, il faut 9 temps pour faire 3 instructions :
F1-D1-E1-F2-D2-E2-F3-D3-E3 (dans l'ordre chronologique)
Dans une structure pipelinée idéale, on réalise plusieurs phases en même temps, ceci étant possible
en mettant les résultats des différentes phases dans des registres tampon :
F1 - D1+F2 - E1+D2+F3 - E2+D3 - E3 (dans l'ordre chronologique)
Il suffit ainsi de 5 temps uniquement. Ceci n'est cependant pas toujours possible, pour des questions de dépendance d'une instruction vis-à-vis du résultat de la précédente...
L'architecture CISC (Complex Instruction Set Computer, ce qui signifie "ordinateur avec jeu
d'instructions complexes") est utilisée par tous les processeurs de type x86, c'est-à-dire
les processeurs fabriqués par Intel, AMD, Cyrix, ...
Les processeurs basés sur l'architecture CISC peuvent traiter des instructions complexes, qui sont
directement câblées sur leurs circuits électroniques, c'est-à-dire que certaines
instructions difficiles à créer à partir des instructions de base sont directement imprimées
sur le silicium de la puce afin de gagner en rapidité d'exécution sur ces commandes.
L'inconvénient de ce type d'architecture provient justement du fait que des fonctions supplémentaires
sont imprimées sur le silicium, d'où un coût élevé.
D'autre part, les instructions sont de longueurs variables et peuvent parfois prendre plus d'un cycle
d'horloge ce qui les rend lentes à l'exécution étant donné qu'un processeur basé
sur l'architecture CISC ne peut traîter qu'une instruction à la fois!
Contrairement à l'architecture CISC, un processeur utilisant la technologie RISC (Reduced
Instruction Set Computer, dont la traduction est "ordinateur à jeu d'instructions réduit") n'a
pas de fonctions supplémentaires câblées. Cela exige donc des programmes
ayant des instructions simples à faire interpréter par le processeur, c'est-à-dire un
développement plus difficile et un compilateur plus puissant. Cependant vous vous dites qu'il peut exister des instructions
qui ne peuvent pas être effectuées à partir des instructions simples...
En fait ces instructions sont tellement peu nombreuses qu'il est possible de les câbler directement sur le circuit
imprimé sans alourdir de manière dramatique leur fabrication.
L'avantage d'une telle architecture est bien évidemment le coût réduit au niveau
de la fabrication des processeurs l'utilisant. De plus, les instructions, étant simples, sont exécutées
en un cycle d'horloge, ce qui rend l'exécution des programmes plus rapide qu'avec des processeurs
basés sur une architecture CISC.
De plus, de tels processeurs sont capables de traîter plusieurs instructions simultanément en les traitant en
parallèle.
A comparer les spécificités des deux types d'architecture on pourrait conclure
que les processeurs basé sur une architecture de type RISC sont les plus utilisés...
Cela n'est malheureusement pas le cas... En effet les ordinateurs construits autour d'une architecture RISC
nécessitent une quantité de mémoire plus importante que les ordinateurs de type CISC
|