Couche micro-architecture

publicité
Le chemin de donnée
Une première notion
d’architecture
L2 – I303
Séance 5
26/11/07
1
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
2
Architecture des ordinateurs
Introduction & Historique
3h
Cours
4h
TDs
Représentation des nombres
Couche physique, circuits logiq.
Circuits séquentiels
Le chemin de donnée
CC
Couche micro-architecture
Cycle d’exécution
26/11/07
Conclusion sur l’exécution
CC 3
Plan
• Le microprocesseur, aspect externe
• Le chemin de donnée, aspect interne
• Le contôleur
• Le cycle d’exécution machine
• Illustration du principe d’exécution d’un processeur
• Résumé
26/11/07
4
Le microprocesseur,
aspect externe
26/11/07
5
Architecture de Von Neumann
(1952)
Mémoire (4096 mots de 40 bits)
Unité
arithmétique
et logique
Unité de
commande
Accumulateur
Entrées
26/11/07
Sorties
6
Le bus central
UC
Mémoire
Console
E/S
à ruban
Autres
E/S
Architecture du PDP-8 (1965) structurée autour d’un bus central :
• L’omnibus
26/11/07
7
Architecture actuelle de
l’ordinateur
UC / CPU
Unité de Contrôle
Disque
(HDD)
Unités d’entrée/sortie
Registres
UAL
Mémoire principale
Bus interne
26/11/07
Bus externe
• Données
• Adresses
8
• Commandes
Echanges entre le processeur et la
mémoire
• Le processeur exécute un programme
– Programme écrit en mémoire
– Transfert d’instructions
• Le programme manipule des variables
– Transfert de données
• Toutes ces informations sont rangées à un
certain emplacement
– Transfert d’adresses
26/11/07
9
Principe général d’exécution
UC / CPU
Unité de Contrôle
Disque
(HDD)
Unités d’entrée/sortie
Registres
UAL
Mémoire principale
Bus interne
26/11/07
1) Charger la
prochaine
instruction
10
Principe général d’exécution
UC / CPU
Unité de Contrôle
Disque
(HDD)
Unités d’entrée/sortie
Registres
UAL
Mémoire principale
Bus interne
26/11/07
2) Charger les données
sur lesquelles travaille
l’instruction 11
Principe général d’exécution
UC / CPU
Unité de Contrôle
Disque
(HDD)
Unités d’entrée/sortie
Registres
UAL
Mémoire principale
Bus interne
26/11/07
3) Exécuter l’instruction
et modifier la copie
locale des données12
Principe général d’exécution
UC / CPU
Unité de Contrôle
Disque
(HDD)
Unités d’entrée/sortie
Registres
UAL
Mémoire principale
Bus interne
4) Ranger le résultat en
mémoire
26/11/07
13
Principe général d’exécution
UC / CPU
Unité de Contrôle
Disque
(HDD)
Unités d’entrée/sortie
Registres
UAL
Mémoire principale
Bus interne
26/11/07
5) Envoyer l’adresse de
la prochaine instruction
Revenir à l’étape 1)14
Première vision du
cycle d’exécution machine
Un cycle d’exécution machine consiste à
2. Charger l’instruction
3. Charger ses données
4. Faire un traitement sur ces données
5. Ranger le résultat du traitement
6. Désigner la prochaine instruction
26/11/07
15
Interface du microprocesseur
Alimentation
et masse
Adresses
In
Out
InOut
26/11/07
Vcc
GND
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
M
I
C
R
O
P
R
O
C
E
S
S
O
R
D0
D1
D2
D3
D4
D5
D6
D7
Données
Read
Write
INTR
INTA
NMI
READY
Mémoire
Périphérique
PRÊT
Demande Bus
ACK. Bus
Horloge
16
Aspects internes
Le chemin de donnée
26/11/07
17
Contrôle de l’ALU
B
A
Fo F1
InvA,
EnA,
EnB
8
8
N
Z
ALU
Inc
8
O
26/11/07
18
Tableau de commande des
fonctions
de l’ALU
26/11/07
19
Tableau de commande des
fonctions
de l’ALU
26/11/07
20
Tableau de commande des
fonctions
de l’ALU
26/11/07
21
Tableau de commande des
fonctions
de l’ALU
26/11/07
22
Registre de contrôle de l’ALU
Entrées / Sorties de l’ALU ?
B
A
8
8
6
Commandes
26/11/07
ALU
N
Z
8
O
23
Rappel : le Registre 4 bits
D2
D3
D
Q
D
Q
Q
CK
D0
D1
D
Q
Q
CK
D
Q
Q
CK
Q
CK
CK
Read
26/11/07
CK
RD
24
Architecture à chargement /
rangement
Banc de registres
B
A
8
8
6
Commandes
26/11/07
ALU
N
Z
8
O
25
Contrôle du chemin de
données
26/11/07
26
Rôle du contrôleur
• Commander les opérations de l’ALU
• Placer les adresses mémoire de lecture de
données (variables). Requête en lecture
• Désigner parmi les registres ceux qui
alimenteront les 2 entrées de l’ALU (1 dans le
cas d’un ACC)
• Désigner dans quel registre le résultat de l’ALU
doit être rangé
• Placer l’adresse mémoire à laquelle doit être
mémoriser un résultat (variable). Requête
en
Le contrôleur
écriture
dépend de
26/11/07
27
• Charger la prochaine instruction
l’architecture
Plus précisément
1) Charger
l’instruction
Accès mémoire
3) Charger les
données
Registres
5) Retour Adr.
Prochaine instruction
Contrôleur
2) Décoder
l’instruction
B
A
8
8
6
Commandes
26/11/07
4) Exécuter
l’opération
ALU
8
O
N
Z
5) Ranger le
résultat
Chemin
de données
28
Commandes de l’architecture
• Tous les signaux de commande de l’architecture
sont mémorisées dans un seul registre appelé le
Registre d’Instruction
• Il est composé de plusieurs champs contrôlant
chacun une partie de l’architecture
–
–
–
–
–
L’ALU
Les opérandes de l’ALU
La/les sorties de l’ALU
Les accès mémoires (Lecture, écriture, fetch)
Des données complémentaires (immédiat, adresse de
saut…)
Donnée sup
RI26/11/07
Bus de sortie
Bus d’entrée
ALU
Mémoire
29
Cycle d’exécution des
instructions
• Un cycle d’exécution du processeur
correspond à l’exécution d’une instruction :
Donnée sup
Bus de sortie
Bus d’entrée
Op. ALU
Mémoire
• Ces instructions sont des suites de bits
(commandes) que l’on peut coder par des
mnémoniques :
Décodage
– ADD R0, R0, R1
Aucune
R0
– LOAD R3, (R4) …
Aucune
26/11/07
R4
R0 et R1
A+B
Aucune
Registre mémoire
A
Lecture
30
Cycle d’exécution machine
1. Charger l’instruction
3. Incrémenter PC
RI_tmp
DECOD
5. Décoder l’instruction
RI
7. Charger les données
Registres
de
travail
9. Exécuter l’opération
PC
PC+1
R_AdrD
ALU
11. Ranger le résultat
13.
Retour
26/11/07
total:SR
31
Résumé
Architecture composée de 2 parties
• Le chemin de donnée réalise les traitements
1. Unité de transfert mémoire
•
•
Registre d’adresse de données
Registre d’adresse d’instructions ou Compteur Ordinal (CO) ou PC
2. Registres de travail (architecture à Accumulateur, à Pile,
à banc de registres)
3. L’ALU
•
Le contrôleur
1. Séquenceur
•
Registre d’état
2. Décodeur
• Registre de transfert des instructions
26/11/07
• Registre d’instruction
32
RI_tmp
PC
Décodeur
Séquenceur
Chemin de donnée
SR
R_AdrD
RI
Contrôleur
Commandes
B
A
8
8
6
Commandes
ALU
8
26/11/07
O
N
Z
33
Notre bibliothèque de portes
Portes
• INV_
• OR_
• AND_
• NAND_
• NOR_
• XOR_
• latchD
26/11/07
• Registre_ LSI
MSI
• PLA_
• MAJ_
• ALU_
• MUX_
• RAM_
• DEC_
• COMP_
• HalfAdder
_
• ADDER_
34
Exécution du processeur
26/11/07
35
Exécution du processeur
•
Exemple sur une architecture à banc de
registres
•
Composée des 5 parties définies
précédemment
1. Calcul (ALU)
2. Registres de travail
3. Transfert mémoire
5. Séquenceur
26/11/07
6. Décodeur
36
Bibliothèque
de fonctions
Langage C
int a,b;
scanf(« %d »,&b);
a = sqrt(b);
printf(« %d »,a);
Compilateur
C
Langage
assembleur
debut:
bsr
$3520
ldaa
$1000
bsr
$2024
pusha
Complexité
Taille du programme Code machine
Assembleur
Micro
26/11/07
...
$40 $37 $F0 $35
$20 $32 $10 $00
$F0 $20 $24 $3B
...
37
Architecture de base d’un processeur
(architecture Von Neumann)
Unité(s)
de calcul
Unité
d’adressage
Registres
@
données
Unité de décodage
26/11/07
Séquenceur
38
Exécution du programme
ALU
banc de registres
unité d’adressage
R0
R1
PC
RI
unité de décodage
26/11/07
39
Exemple (simple)
/* exemple en C */
/* code assembleur */
int a,b;
/* a:R0
a = 2;
compilateur
b:R1
*/
load
R0,2;
b = 12;
load
R1,12;
a = a + b;
add
R0,R0,R1;
...
Le rôle du compilateur consiste principalement,
ici, à effectuer une allocation des variables
du programme (a et b) aux registres disponibles
dans le processeur et à traduire les opérations
arithmétiques en instructions assembleur.
26/11/07
40
load
26/11/07
R0,2
41
Phase de recherche de l’instruction (I-Fetch)
ALU
banc de registres
unité d’adressage
R0
R1
PC+1
PC
load RIR0, 2
unité de décodage
26/11/07
42
Phase de décodage de l’instruction (Decode)
ALU
load
banc de registres
unité d’adressage
R0
R1
PC+1
R0, 2
?
unité de décodage
26/11/07
43
Phase d’exécution de l’instruction (Execute)
ALU
load
banc de registres
unité d’adressage
R0
R1
PC+1
R0, 2
unité de décodage
26/11/07
44
add
26/11/07
R0,R0,R1
45
Phase de recherche de l’instruction (I-Fetch)
ALU
add
banc de registres
unité d’adressage
R0
R1
PC+1
PC
R0,
RI R0, R1
unité de décodage
26/11/07
46
Phase de décodage de l’instruction (Decode)
ALU
add
banc de registres
unité d’adressage
R0
R1
PC+1
R0, R0, R1
?
unité de décodage
26/11/07
47
Phase d’exécution de l’instruction (Execute)
ALU
banc de registres
unité d’adressage
add
R0
R1
PC+1
add
R0, R0, R1
unité de décodage
26/11/07
48
Cas des accès en mémoire
/* exemple en C */
/* code assembleur */
int Tab[100];
/* a:R0
a = Tab[0];
compilateur
b:R1
Tab:R2 */
load
R2,Tab;
b = 12;
load
R0,(R2);
Tab[12] = a + b;
load
R1,12;
add
R3,R0,R1;
store
(R2),R3;
Le compilateur doit effectuer une allocation d’espace mémoire
aux structures de données (statiques) utilisées dans le programme.
En fonction des cas (espaces mémoire dédiés, mémoires multiples),
le code compilé peut être différent.
26/11/07
49
load
26/11/07
R0,(R2)
50
Phase de recherche de l’instruction (I-Fetch)
ALU
banc de registres
unité d’adressage
R0
R1
R2
PC+1
PC
load RI
R0, (R2)
unité de décodage
26/11/07
51
Phase de décodage de l’instruction (Decode)
ALU
load
banc de registres
unité d’adressage
R0
R1
R2
PC+1
R0, (R2)
?
unité de décodage
26/11/07
52
Phase d’exécution de l’instruction (Execute)
ALU
load
banc de registres
unité d’adressage
R0
R1
R2
PC+1
R0, (R2)
unité de décodage
26/11/07
53
Phase d’écriture du résultat (ReadBack)
ALU
load
banc de registres
unité d’adressage
R0
R1
R2
PC+1
R0, (R2)
unité de décodage
26/11/07
54
store
26/11/07
(R2),R3
55
Phase de recherche de l’instruction (I-Fetch)
ALU
banc de registres
R2
R3
unité d’adressage
PC+1
PC
store RI
(R2), R3
unité de décodage
26/11/07
56
Phase de décodage de l’instruction (Decode)
ALU
banc de registres
R2
R3
unité d’adressage
PC+1
store (R2), R3
?
unité de décodage
26/11/07
57
Phase d’exécution de l’instruction (Execute)
ALU
banc de registres
R2
R3
unité d’adressage
PC+1
store (R2), R3
unité de décodage
26/11/07
58
Cas des branchements conditionnels
/* exemple en C */
/* code assembleur */
int a,b,c;
/* a:R0
if (a!=b)
compilateur
test:
c = 12;
b:R1
c:R2
*/
beq
R0,R1,suite;
load
R2,12;
suite:
Ici, le compilateur introduit des « étiquettes » dans le programme
permettant de localiser les suites d’instructions exécutées de manière
conditionnelle. De plus, le compilateur traduit le code en remplaçant
la condition : (a!=b) devient beq (branch if equal)
26/11/07
59
Phase de recherche de l’instruction (I-Fetch)
ALU
beq
banc de registres
unité d’adressage
R0
R1
R2
PC+1
PC
R0,R1,etiq
RI
unité de décodage
26/11/07
60
Phase de décodage de l’instruction (Decode)
ALU
beq
banc de registres
unité d’adressage
R0
R1
R2
PC+1
etiq
R0,R1,etiq
?
unité de décodage
26/11/07
61
Phase d’exécution de l’instruction (Execute)
ALU
banc de registres
unité d’adressage
sub
R0
R1
R2
etiq
etiq
beq
si la condition
est vraie
R0,R1,etiq
unité de décodage
26/11/07
62
Exemple du MIPS R3000
26/11/07
63
MIPS microprocessor specifications
Model
Frequency
[MHz]
Year
Process
[µm]
Transistors
[millions]
Die size
[mm²]
IO
Power
[W]
P
i
n
s
Voltag
e
Dcache
[k]
Icache
[k]
Scache
[k]
R2000
16.7
1985
2.0
0.11
--
--
--
--
32
64
none
R3000
25
1988
1.2
0.11
66.12
145
4
--
64
64
none
R4000
100
1991
0.8
1.35
213
179
15
5
8
8
1024
R4400
150
1992
0.6
2.3
186
179
15
5
16
16
1024
R4600
133
1994
0.64
2.2
77
179
4.6
5
16
16
512
R5000
180
1996
0.35
3.7
84
223
10
3.3
32
32
1024
R8000
90
1994
0.5
2.6
299
591
30
3.3
16
16
1024
R10000
200
1995
0.35
6.8
299
599
30
3.3
32
32
512
R12000
300
1998
0.18-0.25
6.9
204
600
20
4
32
32
1024
R14000
600
2001
0.13
7.2
204
527
17
--
32
32
2048
R16000
700
2002
0.11
--
--
--
20
--
64
64
4096
2004
0.11
--
--
--
--
--
64
64
4096
R16000A
26/11/07
800
64
Architecture externe du Mips
R3000
6
it
berr
reset
frz
3
rw
CK
32
adr
26/11/07
32
data
65
Architecture externe du Mips
R3000
6
it
berr
reset
frz
3
Partie Contrôle
CK
commandes
32
adr
26/11/07
rw
Partie Opérative
Indications
32
data
66
Chemin de donnée du R3000
Data In
Data Out
RES
Y
PC
RI
R(i)
ADR
DT
…
X
Adresse
OPX
26/11/07
OPY
ALU
RES
ADRW
EXCP
67
Valeurs possibles du champs
ALU
•
•
•
•
•
•
•
•
•
•
•
RES <- X + Y
RES <- X – Y
RES <- X.Y
RES <- X | Y
RES <- X xor Y
RES <- !X . !Y
RES <- X << Y[4:0]
RES <- X >> Y[4:0]
RES <- X* >> Y[4:0]
RES <- (X<Y)u
RES <- (X<Y)s
26/11/07
68
Résumé
26/11/07
69
Résumé
•
Une architecture de Von• Elle s’exécute en 7
Neumann est constituée étapes :
1. Fetch instruction
de 5 unités:
1.
2.
3.
4.
5.
•
de Calcul
de Mémoire
de Registres
Séquenceur
Décodeur
Elle utilise les 2 registres•
principaux suivants :
– PC
26/11/07
– RI
2.
3.
4.
5.
6.
7.
Incrémenter PC
Décoder l’instruction
Charger données
Exécuter l’opération
Ranger le résultat
Retour
Les échanges avec la
mémoire sont de 3 sortes
:
– Données
– Instructions
70
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é
• …
26/11/07
71
26/11/07
72
A voir en TD
26/11/07
73
Quelques questions à se
poser…
26/11/07
74
Téléchargement