Eduardo Sanchez
Laboratoire de Systèmes Logiques
Ecole Polytechnique Fédérale de Lausanne
Les processeurs à
plusieurs
niveaux de langage
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 2
Processeurs à plusieurs niveaux de langage
◆ Si l’on veut avoir un processeur non spécialisé, capable d’exécuter
plusieurs tâches, à volonté de l’utilisateur, il faut un processeur
avec un répertoire d’instructions.
Chaque instruction réalise un certain traitement sur les données
et il est possible de programmer l’algorithme à l’aide d’une suite
d’instructions
◆ Chaque instruction est donc une tâche simple, réalisée comme une
suite de micro-instructions
◆ Le répertoire d’instructions constitue le langage machine du
processeur ou langage d’assemblage
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 3
◆ Pour faciliter l’écriture du programme, il est possible d’utiliser
d’autres langages, à un plus grand niveau d’abstraction que le
langage machine: ce sont les langages de haut niveau, tels que
Pascal, C, etc
◆ Le programme écrit dans un langage de haut niveau est traduit en
langage machine par un programme appelé compilateur
◆ Le programme en langage machine est stocké dans la mémoire de
l’ordinateur et le processeur exécute (interprète) chaque
instruction comme une suite de micro-instructions. Le nombre de
micro-instructions par instruction est variable, selon la complexité
de l’instruction
Ed
ua
rdo
Sa
nc
he
z
Ec
ole
Po
lyt
ec
hn
iqu
e F
éd
éra
le d
e L
au
sa
nn
eP
ag
e 4 program toto;
varA,B,C : array [1..1000] of integer ;i : integer ;
begin••
for i:=1 to 1000 doC[i] := A[i] + B[i];
••
end.
••
MOVE.L #2001,A0MOVE.L #3001,A1MOVE.L #4000,A2
START: ABCD -(A0),-(A1)MOVE.B (A1),(A2)
TEST: CMPA #1001,A0BNE START
••
COMPILATEURCOMPILATEURCOMPILATEURCOMPILATEUR
mémoire
processeur
contrôle traitement
INTERPRETEURINTERPRETEURINTERPRETEURINTERPRETEUR
microprogramme
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 5
◆ Le processeur effectue sans arrêt une boucle composée de trois
phases:
✸ recherche (fetch) de l’instruction: l’adresse en mémoire de l’instruction à
exécuter est stockée en permanence dans un registre du processeur, appelé
PC (Program Counter). L’instruction pointée par le PC est cherchée dans la
mémoire et stockée dans un autre registre du proceesur: le IR (Instruction
Register)
✸ décodage de l’instruction (decode): chaque instruction est identifiée, grâce à
un code (opcode). En fonction de ce code, le processeur choisit la tâche à
exécuter, c’est-à-dire la séquence de micro-instructions à exécuter
✸ exécution (execute) de l’instruction: à la fin de cette phase, on retourne à la
première phase
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 6
lecture de l’instructionlecture de l’instruction
décodagedécodage
ADDADD MOVEMOVE LOADLOAD STORESTORE
initialisationinitialisation
•••••
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 7
Structure d’un ordinateur
processeur
mémoire entrées/sorties
bus d’adresse
bus de données
bus de contrôle
séquenceurséquenceur
micromémoiremicromémoire
registresregistres
opérateursopérateurs
contrôle traitement
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 8
MAR ← PCMDR← M[PC]
PC ← PC+1IR ← MDR
MAR ← PCMDR← M[PC]
PC ← PC+1IR ← MDR
chercher l’opérandechercher l’opérandeexécuterexécuter
PC ← adresse initialePC ← adresse initiale
décodification de IRdécodification de IR
opérandeopérande
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 9
Instructions machine
◆ Chaque instruction machine (assembleur) doit avoir les éléments
suivants:
✸ le code de l’opération (opcode): un code binaire identifiant l’opération à
réaliser (addition, décalage, etc)
✸ la référence de l’opérande source: il peut y en avoir plusieurs
✸ la référence de l’opérande destination
✸ la référence à la prochaine instruction à exécuter: une indication d’où
chercher la prochaine instruction. Dans la plupart de cas, cette référence
est inutile, implicite
◆ Les opérandes, source et destination, peuvent être cherchés à
trois endroits différents:
✸ la mémoire principale
✸ les registres internes
✸ les dispositifs d’entrée/sortie (périphériques)
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 10
◆ Représentation des instructions:
Chaque instruction est stockée dans la mémoire comme une chaîne
de bits. L’instruction est divisée en plusieurs champs,
correspondant à ses différents éléments. L’organisation de ces
différents champs est appelée le format de l’instruction.
Il est possible, pour un même processeur, d’avoir plusieurs formats,
de longueurs différentes.
Pour faciliter la lecture des programmes en langages machine, on
utilise une représentation symbolique, où les opcodes sont
représentés par des abréviations appélées mnémoniques. Des
exemples courants sont:
✸ ADD addition
✸ SUB soustraction
✸ LOAD chargement d’un registre interne à partir de la mémoire
✸ STORE chargement de la mémoire à partir d’un registre interne
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 11
◆ Types d’instruction:
Un processeur doit avoir un ensemble d’instructions machine (le
répertoire d’instructions) qui lui permettent de réaliser n’importe
quel traitement d’information. Vu d’une autre façon, le répertoire
d’instructions d’un processeur doit être capable d’interpréter
n’importe quelle instruction d’un langage de haut niveau.
En général, on peut diviser les instructions d’un processeur en 4
classes:
✸ traitement des données: instructions arithmétiques et logiques
✸ gestion de la mémoire
✸ mouvement des données
✸ contrôle: instructions de saut dans le programme
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 12
◆ Nombre d’opérandes:
Le nombre d’opérandes, ainsi que leur emplacement, a une très
grande importance, à cause de l’influence sur la taille des
instructions et sur la vitesse d’exécution.
Il est courant de trouver une classification des processeurs selon
ce paramètre:
✸ processeurs à accumulateur
✸ processeurs à registres généraux
✸ processeurs à pile
◆ Types d’opérandes:
Les principaux types de données traités directement par les
processeurs sont: adresses, nombres, caractères et données
logiques
◆ Modes d’adressage:
Cést la façon de spécifier l’adresse des opérandes
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 13
Processeurs à accumulateur
◆ Les résultats de toutes les opérations sont stockés dans un
registre particulier, l’accumulateur
◆ Toutes les variables sont stockées dans la mémoire
◆ Exemples: DEC PDP-8, Intel 8080, Motorola 6800
◆ Exemple de programme:
x := y + zLOAD y ACC ← M[y]ADD z ACC ← ACC + M[z]STORE x M[x] ← ACC
◆ Le format d’une instruction doit utiliser deux champs:
✸ le code de l’opération (opcode)
✸ l’adresse de l’opérande (l’accumulateur est toujours un opérande par défaut)
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 14
Processeurs à registres généraux
◆ Les variables utilisées le plus fréquemment sont stockées dans un
ensemble de registres internes:
✸ les accès sont plus rapides
✸ les adresses sont plus courtes
◆ Exemples: IBM 360/370, DEC PDP-11, Intel x86, Motorola 68000
◆ Les opérations peuvent avoir lieu seulement avec les registres
(architecture LOAD/STORE), ou avec un, deux ou trois opérandes en
mémoire. Exemples:
ADD Rx, Ry Rx ← Rx + Ry
ADD Rx, Ry, Rz Rx ← Rx + Ry + RzADD Rx, y Rx ← Rx + M[y]ADD x, y M[x] ← M[x] + M[y]ADD x, y, z M[x] ← M[y] + M[z]
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 15
Processeurs à pile
◆ Les opérandes se trouvent toujours au sommet d’une pile, dans la
mémoire. Et le résultat est toujours stocké au sommet de la pile.
En conséquence, une instruction typique ne contient pas d’adresse
d’opérande
◆ Un registre particulier du processeur, le stack pointer (SP),
pointe toujours au sommet de la pile
◆ Exemples: Burroughs B5000, HP 300
◆ Les instructions de base sont:
PUSH x M[SP] ← M[x]
POP x M[x] ← M[SP]
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 16
Exemple de compilation
◆ Phrase en langage de haut niveau:
P := (Q*R + S*T)*(U + V)
◆ Compilation pour un processeur à registres:
LD R0, QMUL R0, RLD R1, SMUL R1, TADD R0, R1LD R1, UADD R1, VMUL R0, R1ST R0, P
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 17
◆ Compilation pour un processeur à pile:
PUSH QPUSH RMULPUSH SPUSH TMULADDPUSH UPUSH VADDMULPOP P
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 18
Modes d’adressage
◆ Le processeur peut trouver ses données à trois endroits
différents: dans les instructions elles-mêmes, dans ses registres
internes ou dans la mémoire externe
◆ L’instruction doit indiquer l’adresse de la donnée ou la façon de la
calculer: c’est le mode d’adressage
◆ Immédiat
ADD R1,#cte
opcode opérande instruction
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 19
◆ Direct
Absolu: ADD R1,adr
opcode adresse
opérande
mémoire
instruction
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 20
◆ Direct
Registre: ADD R1,R2
opcode adresse
opérande
registres
instruction
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 21
◆ Indirect
ADD R1,( adr )
opcode adresse
adresse
mémoire
instruction
opérande
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 22
◆ Indirect
ADD R1,( R2)
opcode adresse instruction
opérande
adresse
registres
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 23
◆ Relatif
ADD R1,offset (PC)
opcode offset
mémoire
instruction
opérandePC +
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 24
◆ Relatif
ADD R1,offset ( R2)
opcode offset
mémoire
instruction
opérande+
adresse
adresse
registres
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 25
◆ Auto-incrémenté
ADD R1,( R2)+
opcode adresse
mémoire
instruction
opérandeadresse
registres
+
taille de l’opérande
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 26
◆ Auto-décrémenté
ADD R1,-( R2)
opcode adresse
mémoire
instruction
opérande
adresse
registres
-
taille de l’opérande
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 27
Organisation de la mémoire
◆ La plupart des processeurs adressent au niveau du byte, bien que
permettant l’accès à des données de plus grande taille
◆ Un processeur est appelé n-bits lorsque la taille standard de ses
opérandes est de n bits. Cela n’a rien à voir avec l’architecture du
processeur, ni avec l’organisation de sa mémoire, ni avec la
dimension de son bus de données
◆ Il existe deux façons d’organiser une donnée lorsque sa taille est
supérieure à un byte:
✸ little-endian: l’adresse de la donnée correspond à celle de son byte de poids
faible. Exemples: VAX, x86
✸ big-endian: l’adresse de la donnée corespond à celle de son byte de poids fort.
Exemples: IBM360, 68000
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 28
◆ ExempleExempleExempleExemple
12 34 56 78
12
34
56
78 12
34
56
780
1
2
3
0
1
2
3
donnée
big-endian little-endian
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 29
Processeurs RISC et CISC
◆ La performance d’un processeur est inversement proportionnel au
temps d’exécution d’un programme. Et ce temps d’exécution
dépend de trois facteurs: le nombre d’instructions machine
exécutées, le nombre moyen de cycles d’horloge par instruction
machine et la période d’horloge
◆ Il existe deux types de processeurs, selon le paramètre optimisé:
✸ processeurs CISC (Complex Instruction Set Computer)
✸ processeurs RISC (Reduced Instruction Set Computer)
Temps = 1/ performance =
(nombre d’instructions) x
(nombre de cycles par instruction) x
(période d’horloge)CISC
RISC
Eduardo Sanchez
Ecole Polytechnique Fédérale de LausannePage 30
Mesure de performance: SPEC95
◆ Performance en entiers: 8 programmes écrits en C (3 anciens,
modifiés). 33% plus grand
◆ Performance en virgule flottante: 10 programmes écrits en Fortran
(4 moins qu’en 92, avec 5 anciens modifiés)
◆ Remplacement du Vax 11/780 comme ordinateur de base par une
SparcStation 10/40 (SuperSparc à 40MHz, sans cache L2 et
64M de RAM)
◆ La valeur baseline est calculée avec un maximum de 4 flags de
compilation, les mêmes pour tous les programmes