ppt, 249KB

publicité
Résumé
CK
MÉMOIRE
PRINCIPALE
Cache
Instructions
Unité de
Contrôle
CPU
Unité de
Traitement
ALU
Unité
CK Flottante
Fanions
PC
Registres
IO
SLC
RAM
IO
Cache
Données
Contrôle
Décodeur
IO
Opérandes
BUS SYSTÈME
n BASCULES
Opcode Opérandes
Instruction
Séquenceur
Adresse
Résumé
Fanions
RAM
Contrôle
CK
PC
+1
CK
Offset
Opcode
Condition
Fanions
+
SLC
Opérandes
n BASCULES
Opcode Opérandes
Instruction
Adresse
Séquenceur
CK
Adresse
SLC
Résumé
PC+  adresse initiale
Mémoire
Fanions
PC
CK
RAM
Opérandes
SLC
décodification de IR
Contrôle
CK
MAR
Séquenceur
CK
IR
Opcode Opérandes
MDR
MAR  PC+
MDR  M[MAR]
IR+  MDR
OUI
OUI
saut?
NON
contrôle?
NON
NON
adresse?
OUI
chargement
exécution
PC+PC+
offset
PC+PC+1
Complication #1

Comment peut fonctionner un processeur 8 ou 16
bits quand les instructions doivent coder tellement
d'informations? ou

Comment réaliser des instructions qui nécessitent
plus d'opérandes que ne peut coder un seul mot
mémoire? ou

Comment exécuter des instructions qui nécessitent
plusieurs coups d'horloge?
Une solution possible: la microprogrammation.
Décodage - Processeurs câblés
Mémoire
PC
Opérandes
Fanions
SLC
RAM
Contrôle
CK
RAM 2NxC
MAR
Séquenceur
CK
IR
Opcode Opérandes
MDR
OPCODE
=
ADRESSE
...000
...001
...011
...010
...100
...101
...111
...110
......
O S
W
E E
E
N L ALC SHC RRA RRB N WRA
0 0 ØØØ ØØØ ØØØ ØØØ 0 ØØØ
0 1 101 1ØØ ØØØ 000 1 001
0 0 111 1ØØ 000 ØØØ 1 010
0 0 101 1ØØ 000 000 1 011
0 0 001 1ØØ 001 010 1 100
0 0 101 1ØØ 011 100 1 011
1 0 101 1ØØ 011 000 0 ØØØ
0 0 101 010 001 000 1 001
.........................
Décodage - Microprogrammation
Mémoire
Fanions
Opérandes
Séquenceur
PC
Contrôle
CK
OPCODE
...000
MAR
Microprogrammes
CK
IR
Opcode Opérandes
MDR
...001
...011
...010
......
Microinstruction 1
Microinstruction 2
...
Microinstruction N
Microinstruction 1
Microinstruction 2
...
Microinstruction N
Microinstruction 1
Microinstruction 1
.........................
Décodage - Microprogrammation
Mémoire
Fanions
Opérandes
Séquenceur
PC
Contrôle
CK
OPCODE
...000
MAR
Microprogrammes
CK
IR
Opcode Opérandes
MDR
S0
S1
S2
S0
S1
S2
Sn
...001
...011
...010
......
S3
Sn
.........................
.........................
.........................
Exemple - Motorola 68000
•
•
•
•
Mémoire
Fanions
Opérandes
Séquenceur
PC
Contrôle
CK
MAR
Microprogrammes
CK
IR
Opcode Opérandes
MDR
Architecture 16 bits (extensions 32 bits)
12 modes d'adressage
16 fanions
8 registres de 16 (32) bits de large
Exemple 1: addition (en BCD) des contenus
de deux adresses stockées dans deux
registres, avec pré-décrément des adresses
abcd -(A1),-(A2)
Exemple 2: soustraction d'un nombre
immédiat (16 bits) au contenu d'une
position mémoire (adresse 16 bits)
subi.0 #0f0fH,2d52H
Exemple 1 - Codage de l'instruction
abcd -(A1),-(A2)
Mémoire
Fanions
PC
Opérandes
Séquenceur
#1: 1100 010100 001001
Contrôle
CK
1 mot de 16 bits est suffisant pour coder
cette instruction:
MAR
Microprogrammes
CK
IR
Opcode Opérandes
MDR
Destination
Source
Il faut remarquer que le contenu de la
destination est écrasé par le résultat.
On peut supposer que le processeur contient
une seule ALU.
Exemple 1 - Décodage de l'instruction
Mémoire
Fanions
Opérandes
Séquenceur
PC
Contrôle
CK
MAR
Microprogrammes
CK
IR
1100010100001001
MDR
abcd -(A1),-(A2)
S0
A1A1-1
S1
A2A2-1
S2
M[A1]M[A2]+M[A1]
PC+PC+1
IR+M[PC+]
Exemple 2 - Codage de l'instruction
subi.0 #0f0fH,2d52H
Mémoire
Séquenceur
PC
Opérandes
Fanions
#1: 0000 010001 111000
Taille des données
Mode d'adressage
Contrôle
CK
3 mots de 16 bits sont nécessaires pour coder
cette instruction:
MAR
Microprogrammes
CK
IR
Opcode Opérandes
MDR
Immédiat
#2: 0000111100001111
#3: 0010110101010010
Adresse
Exemple 2 - Décodage de l'instruction
Mémoire
Fanions
Opérandes
Séquenceur
PC
Contrôle
CK
MAR
Microprogrammes
CK
IR
0000010001111000
MDR
subi.0 #0f0fH,2d52H
S0
PC+PC+1
IR+M[PC+]
S1
A1IR
PC+PC+1
IR+M[PC+]
S2
M[IR]M[IR]-A1
PC+PC+1
IR+M[PC+]
Complication #2

Existe-t-il des architectures alternatives pour
l'unité de traitement permettant de réduire la
complexité des instructions?
La réponse est (évidemment) oui.
Malheureusement, une telle réduction implique
une perte de performance: si les instructions sont
plus simples, il faut plus d'instructions pour une
tâche donnée.
On échange une complexité matérielle contre une
complexité logicielle.
Architecture "standard" - Structure
OUTPORT
INPORT
OEN
Z≠0
RA 3
RB 3
WEN
WA 3
SEL
1 0
AL2
AL1
AL0
I0
SH2
SH1
SH0
I1
Z
SHIFTER
R0 R1 R2 R3 R4 R5 R6 R7
Architectures "standards" - Exemple
Langage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture "standard":
MULT Q,R
MULT S,T
ADD T,R
ADD U,V
MULT R,V
MOVE V,P
:
:
:
:
:
:
R
T
R
V
V
P






Q*R
S*T
Q*R + S*T
U + V
(Q*R + S*T)*(U + V)
(Q*R + S*T)*(U + V)
I - Architectures load/store
Une première possibilité a déjà été mentionnée. Il s'agit de
limiter toute référence à la mémoire principale aux seules
instructions de transfert de données (move, load, store). Par
exemple, l'instruction:
abcd -(As),-(Ad)
peut être transformée en:
dec As
dec Ad
move (As),Ax
move (Ad),Ay
abcd Ax,Ay
move Ay,(Ad)
Ce type d'architecture est appelé load/store (chargementrangement).
Architectures load/store - Structure
INPORT
OUTPORT
OEN
Z≠0
SEL
AL2
AL1
AL0
SH2
SH1
SH0
I0
I1
Z
SHIFTER
1 0
RA 3
RB 3
WEN
WA 3
R0 R1 R2 R3 R4 R5 R6 R7
Architectures load/store - Exemple
Langage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture load/store:
LOAD R1, Q
LOAD R2, R
MULT R1,R2
LOAD R1, S
LOAD R3, T
MULT R1,R3
ADD R2,R3
LOAD R1, U
LOAD R2, V
ADD R1,R2
MULT R2,R3
STORE R3,P
: R2  Q*R
: R3  S*T
: R3  Q*R + S*T
: R2  U+V
: R3  (Q*R + S*T)*(U+V)
: P  (Q*R + S*T)*(U+V)
II - Processeurs à accumulateur
Dans ce type d'architecture les résultats de toutes les
opérations sont stockés dans un registre particulier
(l'accumulateur) et toutes les variable sont stockées dans la
mémoire principale.
Par exemple, l'opération x  y + z est réalisée par:
load y
add z
store x
: ACC  y
: ACC  ACC + z
: x  ACC
Chaque instruction doit donc contenir deux champs:
l'opcode et l'adresse de l'opérande (l'accumulateur est
toujours un opérande par défaut).
Exemples: DEC PDP-8, Intel 8080, Motorola 6800.
Processeurs à accumulateur - Structure
OUTPORT
INPORT
OEN
AL2
AL1
AL0
Z≠0
SH2
SH1
SH0
I0
I1
Z
SHIFTER
SEL
0 1
Accumulateur
Processeurs à accumulateur - Exemple
Langage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture à accumulateur:
LOAD Q
MULT R
STORE P
LOAD S
MULT T
ADD P
STORE P
LOAD U
ADD V
MULT P
STORE P
:
:
:
:
:
:
:
:
:
:
:
ACC  Q
ACC  Q*R
P  Q*R
ACC  S
ACC  S*T
ACC  Q*R + S*T
P  Q*R + S*T
ACC  U
ACC  U+V
ACC  (Q*R + S*T)*(U+V)
P  (Q*R + S*T)*(U+V)
III - Processeurs à pile (stack)
Dans ce type d'architecture les opérandes se trouvent
toujours au sommet d'une pile (stack), typiquement dans la
mémoire, et le résultat est ensuite toujours stocké au
sommet de la pile. En conséquence, une instruction typique
ne contient pas d'adresse d'opérande. Un registre dédié, le
stack pointer (SP), pointe toujours le sommet de la pile.
Par exemple, l'opération x  y + z est réalisée par:
push y
push z
add
pop x
: SP+  SP+1; M[SP+]  y
: SP+  SP+1; M[SP+]  z
: SP+  SP-1;
M[SP+]  M[SP+] + M[SP]
: SP+  SP-1; x  M[SP]
Exemples: Burroughs B5000, HP 300.
Processeurs à pile - Structure
M[SP+]
Adresse
PUSH
+1 0 -1
0 1
+
SP+
Stack
Pointer
SP
OUTPORT
M[SP]
POP
AL2
AL1
AL0
Z≠0
SH2
SH1
SH0
I0
I1
Z
SHIFTER
SEL
0 1
INPORT
Processeurs à pile - Exemple
Langage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture à pile:
PUSH Q
PUSH R
MULT
PUSH S
PUSH T
MULT
ADD
PUSH U
PUSH V
ADD
MULT
POP P
:
:
:
:
:
:
:
:
:
:
:
:
SP+
SP+
SP+
SP+
SP+
SP+
SP+
SP+
SP+
SP+
SP+
SP+












SP+1;
SP+1;
SP-1;
SP+1;
SP+1;
SP-1;
SP-1;
SP+1;
SP+1;
SP-1;
SP-1;
SP-1;
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
M[SP+] 
P  (Q*R
Q
R
Q*R
S
T
S*T
Q*R + S*T
U
V
U+V
(Q*R + S*T)*(U+V)
+ S*T)*(U+V)
Téléchargement