Couche Jeu d`instruction

Transcription

Couche Jeu d`instruction
Couche Jeu d’Instruction
/ Instruction Set Architecture
(ISA)
L2 – I303
Séance 6
26/11/07
1
Architecture des ordinateurs
Introduction & Historique
3h
Cours
4h
TDs
Représentation des nombres
Couche physique, circuits logiq.
Circuits séquentiels
CC
Couche micro-architecture
Le chemin de donnée
Cycle d’exécution
Couche ISA
26/11/07
Conclusion
sur l’exécution
CC 2
Notion de micro-architecture
Les choix d’organisation du chemin de donnée
forment ce que l’on appelle la microarchitecture
du processeur :
• Le CdD dispose de 2 ou 3 bus
• Le nombre de registres
• L’architecture dispose d’un pipeline
• Elle est superscalaire
• Son contrôle est microprogrammé ou cablé
• …
Le contrôle de l’exécution d’une instruction se fait
par une séquence de commandes appellées
– micro-commandes
– ou micro-instructions
26/11/07
3
Plan
1.
2.
3.
4.
5.
Rôle et propriétés de la couche ISA
Organisation mémoire
Les registres de l’architecture
Types de données
Formats des instructions
26/11/07
4
a. Le rôle de la couche ISA
Programme
en Fortran
Programme en C
compilation
compilation
Couche ISA
Logiciel (software)
Matériel (hardware)
Exécution du programme ISA
Par matériel ou par microprogramme
Matériel
26/11/07
5
int main (){
int a = 3;
…
return a = b+c;
}
main : load a, R1
add R1, R2, R3
…
$0F47
0x03D810A2
26/11/07
Frontière
logiciel/matériel
6
b. Caractéristiques de la couche
ISA
• Modèle d’organisation mémoire de la
machine
• Ses registres
• Types de données manipulées
• Son jeu d’instruction
• …
26/11/07
7
c. Ce qui ne fait pas partie
de la couche ISA
Savoir si la microarchitecture
• Est microprogrammée ou cablée
• Si elle dispose d’un pipeline
• Si elle est superscalaire
• …
La couche ISA n’a pas de vision sur
l’implémentation des instructions!
26/11/07
8
2. Modèle d’organisation
mémoire
26/11/07
9
a. Hiérarchie mémoire
Capacité
Bandes
Indéfinie
1 Moctet
200 Mo/s
26/11/07
1ms
100 cycles
Mémoire principale
1 Goctet
133Mo/s
1 Koctet
800Mo/s
10ms
10k cycles
Disques optiques
Mémoire secondaire
Disque magnétique
1 Toctet
30Mo/s
Temps
d’accès
Cache
Registres
100ns
10 cycles
10ns
1 cycles
1ns
1 cycle
10
b. Temps d’accès mémoire
• Si le temps d’accès à la mémoire
secondaire représente 1000 cycles
processeur
• Le processeur doit être gelé pendant 1000
cycles => impossible
• Répartition des données dans la
hiérarchie et cohérence mémoire
• Mise en attente et/ou anticipation des
instructions d’accès mémoire
26/11/07
11
c. Organisation mémoire
• Les mots mémoires sont aujourd’hui multiple de l’octet
• Les adresses de ces mots sont alignées en mémoire
• On ne peut transférer que des mots alignés
• La taille d’un mot correspond généralement à l’architecture du
processeur (pas toujours)
26/11/07
12
Retour sur le protocole de
rangement
• Big Endian
0x12 34 56 78
– Motorola 68000, Sparc
• Little Endian
0x78 56 34 12
– Intel, AMD
• Les deux modes
– PowerPC
– MIPS
26/11/07
00
01
02
04
05
06
07
08
09
10
11
03
02
01
00
07
06
05
04
09
08
11
10
03
L’instruction BSWAP reg du x86
Inverse l’ordre des octets du registre reg de Big
13
à Little
Alignement des mots mémoire
• Historiquement les mots mémoire étaient
des mots de 8 bits (1 octet)
• Pour maintenir la compatibilité des
logiciels, et du code ASCII, le matériel
manipulant des mots de 32 bits est obligé
d’émuler des mots de 8 bits
• Les 2 bits de poids faible du bus d’adresse
n’existent en fait tout simplement pas!
• Les fils du bus d’adresse vont de 31 à 2 !
26/11/07
14
Exemple
• LOAD R1, [0x00000008] accède au mot de 4 octets dont
les adresses sont :
–
–
–
–
0000 0000 0000 0000 0000 0000 0000 1000
0000 0000 0000 0000 0000 0000 0000 1001
0000 0000 0000 0000 0000 0000 0000 1010
0000 0000 0000 0000 0000 0000 0000 1011
• LOAD R1, [0x…12] accède au mot de 4 octets dont les
adresses sont :
–
–
–
–
0000 0000 0000 0000 0000 0000 0001 0010
0000 0000 0000 0000 0000 0000 0001 0011
0000 0000 0000 0000 0000 0000 0001 0100
0000 0000 0000 0000 0000 0000 0001 0101
• Les accès mémoire dont les 2 bits d’adresse de poids
faible ne sont pas nuls (non multiples de 4) sont dit « out
of alignment »
•26/11/07
Dans le processeur un flag dans le registre d’état est 15
présent pour détecter ce type d’exception
Illustration
Conséquence :
• Lorsqu’on dit incrémenter le PC, L’opération n’est pas PC+1
Mais PC+4!
26/11/07
16
2. Les registres de
l’architecture
26/11/07
17
Les registres
• Les registres de la couche
microarchitecture ne sont pas tous visibles
depuis la couche ISA
• On peut de plus les classer en 2
catégories :
– Registres spécialisés
• PC, RI…
• Accèssible en mode système (kernel) : contrôle
des caches, des unités d’E/S, SR
– Registres généraux (R0, R1, R2…)
26/11/07
18
Jeu d’instruction du Pentium II
• Compatible depuis le 8086 (1978)!
• Depuis le 80386 le premier processeur 32 bits,
on appelle cette architecture IA-32
• 3 modes opératoires
– mode réel : les nouveautés sont ignorées, le pentium
II est un 8088!
– mode virtuel : exemple d’une commande DOS sous
windows
– Mode protégé : mode pentium II
26/11/07
19
Evolution chez Intel
• 8086
(1978)
– 16bits, 1Mo,
• 80286
(1982)
– 16 bits, mémoire étentue
• 80386
(1985)
– 32 bits
• 80486
(1989)
– 32 bits, cache de 8K
• Pentium
(1993)
– Double pipeline
• Pentium pro
(1995)
– Cache mémoire à 2 niveaux 8Ko + 256Ko
• Pentium II + Celeron + Xeon
– MMX
• Pentium III
26/11/07
• Pentium IV
(1997)
Compatibilité
(1999) ascendante
20
(2000)
Registres du processeur 8080 bits
8080
0
1
2
3
4
A
B
C
D
Bus de données
8bits
H
L
26/11/07
Bus d’adresse
8bits
255
21
Registres du processeur 8086 – 16
bits
8086
AX
AH AL
BX
BH BL
CX
CH CL
DX
DH DL
0
1
2
3
4
Bus de données
16bits
SI
DI
26/11/07
SP
BP
Bus d’adresse
16bits
65,535
22
Principaux registres du Pentium-II –
32bits
0
1
2
3
4
Bus de données
16bits
Bus d’adresse
20bits
26/11/07
4Go
23
Exemple d’instructions de l’IA32
Langage assembleur :
• MOV reg, reg
• MOV reg, imm
• ADD reg, reg
26/11/07
Langage machine (8 octets) :
• 0x 89 (11SS SDDD)2
• 1011 11DDD+4octets pour
imm
• 0x 01 (11SS SDDD)2
•
•
•
•
•
Codes des registres S et D :
EAX 000
ESP 100
ECX 001
EBP 101
EDX 010
ESI 110
EBX 011
EDI 111
24
Registres généraux de l’Ultrasparc
II
26/11/07
25
3. Types de données
26/11/07
26
Types de données
• Nous avons déjà vu que la représentation
binaire était à la base de la représentation de
différents types de données :
– Données numériques : entiers (signés ou non) ou
réels
– Données non-numériques : ASCII (7bits), UNICODE
(16 bits)
– Valeurs booléennes
– Adresses (entiers)
• Il existe des instructions dédiées à chacun de
ces
types
de
données
26/11/07
27
Données numériques manipulées par le Pentium II
Données numériques manipulées par l’UltraSparc II
26/11/07
28
4. Format des instructions
26/11/07
29
a. Formats des instructions
• Une instruction est découpée en champs
– Un code opération (opcode)
– Des informations complémentaires sur
l’emplacement des données sources et de la
destination
• La technique associée à la localisation des
opérandes d’une instruction s’appelle
l’adressage ou le mode d’adressage
(cours de L3).
26/11/07
30
Format général d’une instruction
• Une instruction désigne un ordre (minimal)
donné au processeur.
• CodeOp sur m bits = addition, multiplication,
rangement…
• 2m instructions = le jeu d’instruction du
processeur
Code opération
26/11/07
Désignation des opérandes
31
Format de chaque champ de
l’instruction
• b. Format du Code opération
• c. Nombre d’opérande
• d. Désignation des opérandes
26/11/07
32
b. Différents types d’instructions
• De déplacement de données entre mémoire et
registres : LOAD et STORE
• De recopie de donnée entre registres : MOVE
• De traitement de données : ADD, AND, CMP…
• D’entrées/sorties
• D’organisation du flux d’exécution : branchement
ou saut conditionnel (BEQ) ou non (JMP)
• Les appels de sous programmes (CALL, RET)
• Les instructions système (HALT, IRQ)
26/11/07
33
Les indicateurs de conditions de
l’ALU
• N : qui est mis à 1 si le résultat est négatif
• Z : qui est mis à 1 si le résultat est égal à 0
• V : qui est mis à 1 si le résultat provoque
un dépassement de capacité
• C : qui est mis à 1 si le résultat provoque
une retenue sortant
• P : qui est mis à 1 si le résultat présente
une parité paire
• …
26/11/07
34
c. Plusieurs nombres d’opérandes
maximum
• Selon le code opération, l’instruction peut
admettre 0, 1, 2 ou 3 opérandes. Si l’ordinateur
admet au plus :
• 0 opérande =
• 1 opérande =
• 2 opérandes =
• 3 opérandes =
26/11/07
35
Plusieurs nombres d’opérandes
maximum
• Selon le code opération, l’instruction peut
admettre 0, 1, 2 ou 3 opérandes. Si l’ordinateur
admet au plus :
• 0 opérande = instruction à pile / appel Système
• 1 opérande = architecture à accumulateur (1
entrée)
• 2 opérandes = architecture à 2 bus (1 entrée/1
sortie)
26/11/07
36
• 3 opérandes = architecture à 3 bus (2 entrées/1
Architecture à Pile
Pile
B
A
8
8
6
Commandes
26/11/07
ALU
N
Z
8
O
37
Architecture à accumulateur
Mémoire
B
A
8
8
6
Commandes
26/11/07
ALU
8
O
N
Z
Accumulateur
38
Architecture à chargement /
rangement
Banc de registres
B
A
8
8
6
Commandes
26/11/07
ALU
N
Z
8
O
39
d. Désignation de l’opérande
(du résultat)
• Architecture à 1 bus
• La désignation dépend de l’endroit au se trouve la
donnée
– Dans l’instruction elle-même (RI) : immédiat
– Dans un registre de travail
– Dans la mémoire
• Définition : Immédiat
– Un immédiat est une valeur numérique donnée
directement en décimale ou hexadécimale contrairement
à un adressage de positionnement de la valeur.
– La valeur est directement donnée dans l’instruction
– Elle est donc placée (indirectement ou directement) par
26/11/07 le programmeur
40
Exemple
Code opération Adressage immédiat Opérande = valeur imd
Ex = 3
Opérande = 3
Code opération Adressage registre
Opérande = No registre
Ex = 3
Opérande = Contenu
du registre 3 = 125
Code opération Adressage direct
Opérande = Adr mémoire
Ex = 3
Opérande = Contenu de la case
mémoire 3 = 0x34
Code opération Adressage indirect
26/11/07
Opérande = Adr mémoire
Ex = 3
Opérande = Contenu de41
la case
mémoire 34 = 7
Suite de l’exemple,
extrapolation pour 3 bus
Adressage direct
R3
Cste = 3
125
Adressage immédiat
Adressage registre
26/11/07
$003
0x34
Adressage indirect
$034
0x07
42
5. Un exemple d’architecture
de jeu d’instruction :
le MIPS R3000
26/11/07
43
Rappel : Chemin de donnée
Data In
Data Out
RES
Y
PC
RI
R(i)
ADR
DT
…
X
Adresse
OPX
26/11/07
OPY
ALU
RES
ADRW
EXCP
44
Jeu d’instruction de l’assembleur
MIPS
1. Instructions utilisant des données
immédiates
2. Instructions registres/registres
3. Adressage mémoire en mode indirect (le
seul supporté)
4. Branchements conditionnels et sauts
5. Instructions privilégiées et systèmes
26/11/07
45
Données immédiates
• cf. datasheet
26/11/07
46
Registres/registres
• cf. datasheet
26/11/07
47
Adressage mémoire indirect
• cf. datasheet
26/11/07
48
branchements
• cf. datasheet
26/11/07
49
système
• Cf. datasheet
26/11/07
50
8 types de manipulation
d’opérandes
1.
2.
3.
4.
Opération sans opérande
: op
Opération avec un registre : op $r1
Opération avec deux registres : op $r1 $r2
Opération avec trois registres : op $r1 $r2 $r3
6. Opération avec un imméndiat : op imm
7. Opération avec un registre et un imdt : op $r imm
8. Opération avec 2 registres et un imdt : op $r1 $r2
imm
10.Opération d’adressage mémoire : op $r1 m($r2)
26/11/07
51
De l’instruction assembleur à
l’instruction machine
• L’Assembleur traduit le code ascii
assembleur en code binaire.
• Ce code binaire correspond à une
instruction de jeu d’instruction machine du
processeur visé
• Cette instruction machine est décodée
– Pour déterminer le format de l’instruction
– Pour déterminer la séquence de microcommandes nécessaire à l’exécution de
l’instruction
26/11/07
52
Résumé
26/11/07
53
Bilan
Nature de l’opération
Code
assembleur
Code
binaire
Registre instruction
(avec données)
Chargement d’un
registre
LOAD
0x00
0x03 E7 6A 90
Rangement d’un
registre
Addition de registres
STORE
0x01
…
Add
0x02
Addition registre/Imd
Addi
0x03
Branchement
conditionnel
BEQ
0xFE
Branchement
inconditionnel
26/11/07
JMP
0xFF
…
54
int main (){
int a = 3;
…
return a = b+c;
}
main : load a, R1
add R1, R2, R3
…
$0F47
0x03D810A2
26/11/07
Frontière
logiciel/matériel
55
Couche des langages d’application
Niveau 5
Traduction (compilateur)
Couche du langage d’assemblage
Niveau 4
Traduction (assembleur)
Couche du système d’exploitation
Niveau 3
Interprétation partielle (OS)
Niveau 2
Couche architecture du jeu d’instruction
(ISA)
Interprétation (microprogramme)
ou exécution directe (cablé)
Niveau 1
Couche microarchitecture
Matériel
26/11/07
Niveau 0
Couche logique numérique
56
Parcours ‘architecture’
Architectures multimédia
M2 • Circuits reconfigurables
Architecture avancée
M1-S2 • Les classes d’architecture
Informatique embarquée
La programmation en assembleur
L’exécution des programmes
26/11/07
• Conception des SoC
• Les DSP
M1-S1
L3
• Architectures embarquée
• Couche OS - RTOS
• Couche ISA
• Couche assemblage
• Como – Systèmes E/S
L2 • Couche physique
• Couche micro-architecture
57
• Couche ISA
Quelques questions à se
poser…
• Les notions que vous • Cycle d’exécution
machine
devez être capable de
de définir :
–
–
–
–
–
–
–
26/11/07
Loi de Moore
PLA (RLP)
Chemin de donnée
Registre d’instruction
PC (CO)
Micro-instruction
instruction
•
•
•
•
Bus
Processeur
Hiérarchie mémoire
Alignement mémoire
• Langage machine – Jeu
d’instruction
• Langage d’assemblage
58
A voir en TD
26/11/07
59