Les processeurs à plusieurs niveaux de langage

Transcription

Les processeurs à plusieurs niveaux de langage
Les processeurs à
plusieurs
niveaux de langage
Eduardo Sanchez
Laboratoire de Systèmes Logiques
Ecole Polytechnique Fédérale de Lausanne
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
Page 2
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ 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
Page 3
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Page 4
program toto;
var
A,B,C : array[1..1000] of integer;
i : integer;
begin
•
•
for i:=1 to 1000 do
C[i] := A[i] + B[i];
•
•
end.
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
COMPILATEUR
MOVE.L
MOVE.L
MOVE.L
START: ABCD
MOVE.B
TEST: CMPA
BNE
•
•
#2001,A0
#3001,A1
#4000,A2
-(A0),-(A1)
(A1),(A2)
#1001,A0
START
•
•
INTERPRETEUR
processeur
microprogramme
contrôle
mémoire
traitement
◆ 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
Page 5
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
initialisation
initialisation
lecture
lecture de
de l’instruction
l’instruction
décodage
décodage
ADD
ADD
Page 6
MOVE
MOVE
•••••
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
LOAD
LOAD
STORE
STORE
Structure d’un ordinateur
processeur
contrôle
traitement
séquenceur
séquenceur
registres
registres
mémoire
micromémoire
micromémoire
entrées/sorties
opérateurs
opérateurs
bus d’adresse
bus de données
bus de contrôle
Page 7
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
PC
PC ←
← adresse
adresse initiale
initiale
MAR
MAR ←
← PC
PC
MDR
MDR ←
← M[PC]
M[PC]
PC
PC ←
← PC+1
PC+1
IR
IR ←
← MDR
MDR
décodification
décodification de
de IR
IR
opérande
opérande
chercher
chercher l’opérande
l’opérande
exécuter
exécuter
Page 8
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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)
Page 9
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ 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:
✸
✸
✸
✸
Page 10
ADD
SUB
LOAD
STORE
addition
soustraction
chargement d’un registre interne à partir de la mémoire
chargement de la mémoire à partir d’un registre interne
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ 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:
✸
✸
✸
✸
Page 11
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 Lausanne
◆ 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
Page 12
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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 + z
LOAD
ADD
STORE
y
z
x
ACC ← M[y]
ACC ← ACC + M[z]
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)
Page 13
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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
ADD
ADD
ADD
ADD
Page 14
Rx, Ry
Rx, Ry, Rz
Rx, y
x, y
x, y, z
Rx ← Rx + Ry
Rx ← Rx + Ry + Rz
Rx ← Rx + M[y]
M[x] ← M[x] + M[y]
M[x] ← M[y] + M[z]
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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
POP
Page 15
x
x
M[SP] ← M[x]
M[x] ← M[SP]
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Exemple de compilation
◆ Phrase en langage de haut niveau:
P := (Q*R + S*T)*(U + V)
◆ Compilation pour un processeur à registres:
LD
MUL
LD
MUL
ADD
LD
ADD
MUL
ST
Page 16
R0,
R0,
R1,
R1,
R0,
R1,
R1,
R0,
R0,
Q
R
S
T
R1
U
V
R1
P
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Compilation pour un processeur à pile:
PUSH
PUSH
MUL
PUSH
PUSH
MUL
ADD
PUSH
PUSH
ADD
MUL
POP
Page 17
Q
R
S
T
U
V
P
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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
Page 18
opérande
instruction
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Direct
Absolu:
ADD
R1,adr
opcode
adresse
instruction
opérande
mémoire
Page 19
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Direct
Registre:
ADD
R1,R2
opcode
adresse
instruction
opérande
registres
Page 20
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Indirect
ADD
R1,(adr)
opcode
adresse
instruction
adresse
opérande
mémoire
Page 21
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Indirect
ADD
R1,(R2)
opcode
adresse
instruction
adresse
opérande
registres
Page 22
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Relatif
ADD
R1,offset(PC)
opcode
PC
offset
instruction
+
opérande
mémoire
Page 23
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Relatif
ADD
R1,offset(R2)
opcode
adresse
adresse
offset
+
instruction
opérande
registres
mémoire
Page 24
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Auto-incrémenté
ADD
R1,(R2)+
opcode
adresse
instruction
registres
adresse
opérande
mémoire
+
taille de l’opérande
Page 25
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Auto-décrémenté
ADD
opcode
R1,-(R2)
adresse
instruction
taille de l’opérande
registres
adresse
opérande
mémoire
Page 26
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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
Page 27
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
◆ Exemple
12
donnée
34
big-endian
Page 28
56
78
little-endian
12
0
78
0
34
1
56
1
56
2
34
2
78
3
12
3
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
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
Page 29
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
RISC
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
Page 30
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne