Cours 5 : contrôle, exécution des instructions D`après les

publicité
Architecture Logicielle et matérielle
Cours 5 : contrôle, exécution des instructions
D’après les transparents de N. Louvet (univ Lyon1)
Laure Gonnord
http://laure.gonnord.org/pro/teaching/
[email protected]
Licence d’info - Université Lyon 1 - FST
Plan
1
Retour sur le Modèle de Van Neuman
2
Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Cycle d’instruction
3
Digression : programmation LC3 de base
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
2 / 32 Retour sur le Modèle de Van Neuman
1
Retour sur le Modèle de Van Neuman
2
Stockage des programmes/instructions en mémoire centrale
3
Digression : programmation LC3 de base
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
3 / 32 Retour sur le Modèle de Van Neuman
Rappels
une mémoire centrale, qui contient le programme et les
données ;
une unité centrale de traitement (UCT), qui exécute un
programme contenu en mémoire centrale ;
une (ou plusieurs) unité(s) d’entrée-sortie permettant
l’échange d’informations avec l’environnement de l’UCT.
Un système d’interconnexion permet l’interaction entre ces
unités.
Unité
d’entrée/sortie
Laure Gonnord (L2/FST/Univ Lyon1)
Unité
centrale de
traitement
Mémoire centrale
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
4 / 32 Retour sur le Modèle de Van Neuman
Ex d’instructions
En langage dit d’assemblage du LC3, on a par exemple les
instructions suivantes :
ADD R1 R1 R2 réalise une addition
ST R3 R1 0 réalise un stockage en mémoire du contenu
d’un registre
I plus de détails plus tard (cours 06)
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
5 / 32 Retour sur le Modèle de Van Neuman
Objectifs
Questions :
Comment les instructions sont-elles stockées en
mémoire ?
Comment sont-elles décodées et exécutées ?
I On prendra un exemple jouet, le LC3.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
6 / 32 Stockage des programmes/instructions en mémoire centrale
1
Retour sur le Modèle de Van Neuman
2
Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Cycle d’instruction
3
Digression : programmation LC3 de base
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
7 / 32 Stockage des programmes/instructions en mémoire centrale
Stockage des programmes en mémoire centrale
Chaque instruction est stockée en mémoire sous la forme d’un
ou plusieurs mots binaires.
Le code d’une instruction se décompose en :
un champ appelé code-opération ou opcode, qui spécifie
l’opération qui doit être réalisée lors de l’exécution de
l’instruction ;
éventuellement, un ou plusieurs champs opérandes qui
définissent les emplacements où l’instruction doit lire ses
sources et écrire son résultat.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
8 / 32 Stockage des programmes/instructions en mémoire centrale
Exemple
Sur une certaine machine, les instructions sont codées sur 16
bits :
15 14 13 12 11 10
9
8
7
opcode
6
5
4
3
2
1
0
adresse
Exemples d’opcodes hypothétiques :
0001 : charger le mot dont l’adresse est donnée dans ACC ;
0010 : stocker le mot contenu dans ACC à l’adresse
donnée ;
0101 : ajouter l’entier à l’adresse donnée à ACC.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
9 / 32 Stockage des programmes/instructions en mémoire centrale
Exemple, assembleur IA32
int a, b;
int main(void) {
int c;
a = 6; b = -5; c = a + b;
return(c);
}
Compilé avec avec gcc -O0 -Wa,-alh :
1
2
3
4
5
6
7
8 0000 55
9 0001 89E5
10 0003 83EC10
...
.file "test.c"
.comm a,4,4
.comm b,4,4
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
10 / 32 Stockage des programmes/instructions en mémoire centrale
Rôle de l’Unité de contrôle
UC : gestion de l’exécution des instructions d’un programme.
Deux registres importants :
Le registre d’instruction IR, qui contient l’instruction en
cours d’exécution.
Le compteur de programme PC, qui contient l’adresse en
mémoire centrale de la prochaine instruction a exécuter.
Ces registres ne sont pas directement accessibles au
programmeur.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
11 / 32 Stockage des programmes/instructions en mémoire centrale
Rôle de l’Unité de contrôle - suite
L’UC contient un circuit permettant le décodage des
instructions. Le décodage d’une instruction consiste à
déterminer quelle opération doit être effectuée, parmi toutes les
opérations possibles, en fonction de l’opcode de l’instruction.
L’UC se charge d’activer dans un ordre bien défini les circuits
nécessaires à l’exécution de l’instruction en cours. Elle est
synchronisée sur une horloge, dont la fréquence détermine
celle à laquelle sont executées les instructions.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
12 / 32 Stockage des programmes/instructions en mémoire centrale
Rôle de l’Unité de contrôle - suite
L’UCT doit échanger des données ou des instructions avec la
mémoire centrale. Elle utilise pour cela deux registres internes :
Un registre d’adresse AR, qui spécifie l’adresse de la
mémoire centrale où devra être réalisée la prochaine
lecture ou d’écriture. La taille du registre AR détermine le
nombre maximal de cases mémoires adressables.
Un registre de données mémoire MDR est utilisé pour
les accès en écriture et les accès en lecture. Le MDR peut
soit contenir la donnée qui doit être écrite en mémoire
centrale,
soit recevoir la donnée qui doit être lue en mémoire
centrale.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
13 / 32 Stockage des programmes/instructions en mémoire centrale
Communication
Mécanisme similaire pour les échanges avec les
périphériques :
un registre AR-E/S pour spécifier une adresse sur un
périphérique ;
un registre MDR-E/S pour le stockage temporaires de
données.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
14 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
1
Retour sur le Modèle de Van Neuman
2
Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Cycle d’instruction
3
Digression : programmation LC3 de base
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
15 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Classes d’instructions
On distingue essentiellement trois classes d’instructions :
Opération arithmétique et logique : opération sur des
données.
,→ addition, soustraction, ou, et, ou-exclusif. . .
Accés mémoire : transfert entre un registre de l’UCT et la
mémoire.
,→ LOAD : chargement du contenu d’une case mémoire dans
un registre.
,→ STORE : rangement du contenu d’un registre dans une
case mémoire.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
16 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Classes d’instructions 2/2
Contrôle du flux d’instructions : Le PC est incrémenté à
chaque cycle d’instruction, mais certaines instructions
peuvent modifier sa valeur.
,→ Instructions utilisées pour les boucles et les blocs
si-alors-sinon.
,→ Instructions de branchement, de saut, ou d’appel à des
routines.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
17 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Codage d’une instruction - Rappel
Chaque instruction est codée par un mot binaire, qui se
décompose en :
un champ opcode, qui spécifie l’opération a réaliser ;
éventuellement, un ou plusieurs champs opérandes qui
définissent les emplacements où l’instruction doit lire ses
sources et écrire son résultat.
Méthode de localisation des données = mode d’adressage
(registre, mémoire)
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
18 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Exemple du LC3 - deux modes pour ADD
Ex : Le LC3 dispose de 8 registres, notés R0,. . . ,R7. Dans le
langage d’assemblage, l’instruction d’addition se décline de
deux façons :
ADD DR, SR1, SR2, qui effectue DR <- SR1 + SR2.
,→ Tous les opérandes de l’instruction sont des registres :
adressage par registre.
,→ Exemple : ADD R1, R2, R3 effectue R1 <- R2 + R3.
ADD DR, SR1, imm5, qui effectue DR <- SR + imm5.
,→ Le dernier opérande est un immédiat, i.e., il est codé dans
l’instruction.
,→ Exemple : ADD R1, R2, 5 effectue R1 <- R2 + 5.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
19 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Exemple du LC3 - deux modes pour ADD
Dans le codage de l’instruction en langage machine, un bit
permet de spécifier quel mode d’adressage est utilisé pour le
troisième opérande :
assembleur
action
codage
opcode
F
E
D
arguments
C
B
A
9
8
7
6
5
ADD DR,SR1,SR2
DR <- SR1 + SR2
0001
DR
SR1
0
ADD DR,SR1,Imm5
DR <- SR1 + Imm5
0001
DR
SR1
1
Laure Gonnord (L2/FST/Univ Lyon1)
4
3
00
2
1
0
SR2
Imm5
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
20 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Exemple du LC3 - deux instructions d’accès mémoire
LD DR, add, effectue DR <- mem[add].
ST SR, add, effectue mem[add] <- SR.
I Adressage direct ici : add adresse, mem[add] la case
mémoire corresondante.
Adresse de chargement ou de rangement en mémoire codée 1
dans l’instruction :
assembleur
action
codage
opcode
F
E
D
arguments
C
B
A
9
8
7
6
5
4
LD DR,add
DR <- mem[add]
0010
DR
add
ST SR,add
mem[add] <- SR
0011
SR
add
3
2
1
0
1. Sous une forme particulière, que nous ne détaillerons pas tout de
suite. . .
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
21 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Ex du LC3 : branchement
branchement inconditionnel :
BR add, effectue PC <- add.
Dans ce cas, add désigne l’adresse mémoire de l’instruction qui
sera exécutée après l’instruction BR add. A nouveau, il s’agit
d’un adressage direct :
assembleur
action
codage
opcode
F
BR add
PC <- add
Laure Gonnord (L2/FST/Univ Lyon1)
E
D
0000
arguments
C
B
A
000
9
8
7
6
5
4
3
2
1
0
add
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
22 / 32 Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Résumé sur l’adressage
par registre lorsque l’emplacement désigné est
simplement un registre.
immédiat lorsque l’opérande est une valeur codée dans
l’instruction.
direct lorsque l’opérande est une adresse en mémoire
centrale.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
23 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
1
Retour sur le Modèle de Van Neuman
2
Stockage des programmes/instructions en mémoire centrale
Classes d’instructions et modes d’adressage
Cycle d’instruction
3
Digression : programmation LC3 de base
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
24 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
Cycle d’instruction
Lors de l’exécution d’un programme, l’UCT doit effectuer une
séquence de tâches pour exécuter chacune des instructions de
ce programme. Cette séquence de tâches, gérée par l’unité de
contrôle, est appelée cycle d’instruction.
On peut voir l’exécution d’un programme comme la réalisation
d’une succession de cycles d’instructions :
Début de
l’exécution
Chargement d’une
instruction
Laure Gonnord (L2/FST/Univ Lyon1)
Exécution de
l’instrution chargée
Fin de
l’exécution
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
25 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
Remarques
certaines parties du cycle peuvent varier d’une instruction
à l’autre,
les cycles d’instructions peuvent varier d’un processeur à
l’autre.
En effet, le découpage du cycle de chaque instruction dépend
de la microarchitecture mise en place.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
26 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
Étapes du cycle d’instructions
FETCH : chargement de l’instruction depuis la mémoire
centrale (phase commune à toutes les instructions).
,→ chargement de l’instruction à l’adresse donnée par le
PC dans IR.
,→ incrémentation de PC en vue de l’exécution de
l’instruction suivante.
DECODE : décodage de l’instruction par l’unité de contrôle
(phase commune à toutes les instructions).
,→ décision des phases suivantes en fonction de l’opcode.
EXECUTE : exécution l’instruction à proprement parler.
STORE RESULT : écriture des résultats en mémoire
centrale.
I Chaque phase : un ou plusieurs cycles de l’horloge de l’UCT.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
27 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
TD
Exercices :
codage des instructions
exécution d’une séquence d’instructions.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
28 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
Exemple : L’architecture LC-3
mémoire de 216 mots de 16 bits,
instructions codées sur 16 bits.
On dipose d’un simulateur pour cette architecture : c’est un
logiciel qui joue le rôle d’une couche micro-architecture
implantant l’architecture LC-3, et disposant d’un interface pour
voir ce qui se passe lors de l’exécution d’un programme.
L’architecture utilise les registres PC, IR, PSR (Program Status
Register). L’architecture présente 8 registres généraux,
R0,...,R7, que le programmeur peut utiliser pour effectuer des
calculs.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
29 / 32 Stockage des programmes/instructions en mémoire centrale
Cycle d’instruction
Exemple assembleur LC3 - démo
On considère par exemple le programme ci-dessous :
.ORIG x3000
; adresse de début de programme
; partie dédiée au code
LD R1,a
; charge le contenu de la case mémoire désignée par
; l'étiquette a dans le registre R1
LD R2,b
; charge le contenu de la case mémoire désignée par
; l'étiquette b dans le registre R2
ADD R0,R1,R2
; additionne les contenus de R1 et R2, puis place
; le résultat dans R0
ST R0,r
; range le contenu du registre R0 dans la case mémoire
; désignée par l'étiquette r
HALT
; directive de l'assembleur pour mettre fin au programme
; (rend la main à l'OS)
; partie dédiée aux données
a:
.FILL #5
; case mémoire contenant la valeur 5 (décimal)
b:
.FILL #2
; case mémoire contenant la valeur 2 (décimal)
r:
.BLKW #1
; case mémoire réservée pour le résultat a+b
.END
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
30 / 32 Digression : programmation LC3 de base
1
Retour sur le Modèle de Van Neuman
2
Stockage des programmes/instructions en mémoire centrale
3
Digression : programmation LC3 de base
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
31 / 32 Digression : programmation LC3 de base
Objectif
Comprendre le jeu d’instruction du LC3 avant de réaliser le
processeur en Logisim
Écrire des programmes en “langage d’assemblage”.
Laure Gonnord (L2/FST/Univ Lyon1)
ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions
2014
32 / 32 
Téléchargement