Résumé BUS SYSTÈME Registres Unité de Traitement Unité Flottante Unité de Contrôle Décodeur...
-
Upload
colombe-berard -
Category
Documents
-
view
125 -
download
4
Transcript of Résumé BUS SYSTÈME Registres Unité de Traitement Unité Flottante Unité de Contrôle Décodeur...
Résumé
BUS SYSTÈME
Registres
Unité deTraitement
UnitéFlottante
Unité deContrôle
Décodeur
PC
ALU
CPU
MÉMOIREPRINCIPALE IO IO IO
CacheDonnées
CacheInstructions
Séquenceur
CK
n BASCULES
Opcode Opérandes
Fanions
RAM
Contrôle
SLC
Opérande
s
Instruction
AdresseCK
Séquenceur
Séquenceur
CK
n BASCULES
Opcode Opérandes
n BASCULES
Opcode Opérandes
Fanions
RAMRAM
Contrôle
SLCSLC
Opérande
s
Instruction
AdresseCK
Résumé
CK
Offset
SLCOpcode
ConditionFanions
+1
Adresse
+
PC
PC+PC+offset
PC+PC+offset
Résumé
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions
RAMRAM
Contrôle
SLCSLC
Opérande
s
MDR MARCK
PC
PC+ adresse initialePC+ adresse initiale
MAR PC+
MDR M[MAR]IR+ MDR
MAR PC+
MDR M[MAR]IR+ MDR
décodification de IRdécodification de IR
PC+PC+1PC+PC+1
saut?saut?
contrôle?contrôle?
adresse?adresse?
exécutionexécution
chargementchargement
OUI
NONOUI
NONOUI NON
CK
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émoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions
RAMRAM
Contrôle
SLCSLC
Opérande
s
MDR MARCK
PC
OPCODE O S W = E E EADRESSE N L ALC SHC RRA RRB N WRA...000 0 0 ØØØ ØØØ ØØØ ØØØ 0 ØØØ...001 0 1 101 1ØØ ØØØ 000 1 001...011 0 0 111 1ØØ 000 ØØØ 1 010...010 0 0 101 1ØØ 000 000 1 011...100 0 0 001 1ØØ 001 010 1 100...101 0 0 101 1ØØ 011 100 1 011...111 1 0 101 1ØØ 011 000 0 ØØØ...110 0 0 101 010 001 000 1 001...... .........................
RAM 2NxC
Décodage - Microprogrammation
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC
OPCODE ...000 Microinstruction 1 Microinstruction 2 ... Microinstruction N...001 Microinstruction 1 Microinstruction 2 ... Microinstruction N...011 Microinstruction 1...010 Microinstruction 1...... .........................
Décodage - Microprogrammation
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC
OPCODE ...000 ...001 ...011 ............................010 ............................... .........................
S0 S1 S2 Sn
S0 S1 S2 SnS3
Exemple - Motorola 68000
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC
• 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
abcd -(A1),-(A2) abcd -(A1),-(A2)
Exemple 1 - Codage de l'instruction
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC
1 mot de 16 bits est suffisant pour codercette instruction:
#1: 1100 010100 001001#1: 1100 010100 001001
DestinationSource
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émoireMémoire
Séquenceur
Séquenceur
CK
IR
1100010100001001
IR
1100010100001001
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC A1A1-1
M[A1]M[A2]+M[A1]PC+PC+1IR+M[PC+]
A2A2-1
abcd -(A1),-(A2)
S0
S1
S2
subi.0 #0f0fH,2d52Hsubi.0 #0f0fH,2d52H
Exemple 2 - Codage de l'instruction
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
Opcode Opérandes
IR
Opcode Opérandes
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC
3 mots de 16 bits sont nécessaires pour codercette instruction:
#1: 0000 010001 111000#1: 0000 010001 111000
Taille des donnéesMode d'adressage
#2: 0000111100001111#2: 0000111100001111
Immédiat
#3: 0010110101010010#3: 0010110101010010
Adresse
Exemple 2 - Décodage de l'instruction
MémoireMémoire
Séquenceur
Séquenceur
CK
IR
0000010001111000
IR
0000010001111000
Fanions Microprogrammes
Microprogrammes
Contrôle
Opérande
s
MDR MARCK
PC
A1IRPC+PC+1IR+M[PC+]
M[IR]M[IR]-A1PC+PC+1IR+M[PC+]
PC+PC+1IR+M[PC+]
subi.0 #0f0fH,2d52H
S0
S1
S2
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
RA
WA
RBWEN
I0 I1
Z
SHIFTER
R0 R1 R2 R3 R4 R5 R6 R7
SH2SH1SH0
AL2AL1AL0
OENSEL
Z≠0
1 0
INPORTOUTPORT
33
3
Architectures "standards" - ExempleLangage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture "standard":
MULT Q,R : R Q*RMULT S,T : T S*TADD T,R : R Q*R + S*TADD U,V : V U + VMULT R,V : V (Q*R + S*T)*(U + V)MOVE V,P : P (Q*R + S*T)*(U + V)
I - Architectures load/storeUne 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 Asdec Admove (As),Axmove (Ad),Ayabcd Ax,Aymove Ay,(Ad)
Ce type d'architecture est appelé load/store (chargement-rangement).
Architectures load/store - Structure
RA
WA
RBWEN
I0 I1
Z
SHIFTER
R0 R1 R2 R3 R4 R5 R6 R7
SH2SH1SH0
AL2AL1AL0
OEN
SEL
Z≠0
1 0
INPORT OUTPORT
33
3
Architectures load/store - ExempleLangage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture load/store:LOAD R1, QLOAD R2, RMULT R1,R2 : R2 Q*RLOAD R1, SLOAD R3, TMULT R1,R3 : R3 S*TADD R2,R3 : R3 Q*R + S*TLOAD R1, ULOAD R2, VADD R1,R2 : R2 U+VMULT R2,R3 : R3 (Q*R + S*T)*(U+V)STORE R3,P : P (Q*R + S*T)*(U+V)
II - Processeurs à accumulateurDans 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 : ACC yadd z : ACC ACC + zstore x : 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
I0 I1
Z
SHIFTER
Accumulateur
SH2SH1SH0
AL2AL1AL0
OEN
SEL
Z≠0
0 1
INPORTOUTPORT
Processeurs à accumulateur - ExempleLangage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture à accumulateur:
LOAD Q : ACC QMULT R : ACC Q*RSTORE P : P Q*RLOAD S : ACC SMULT T : ACC S*TADD P : ACC Q*R + S*TSTORE P : P Q*R + S*TLOAD U : ACC UADD V : ACC U+VMULT P : ACC (Q*R + S*T)*(U+V)STORE P : 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 : SP+ SP+1; M[SP+] ypush z : SP+ SP+1; M[SP+] zadd : SP+ SP-1;
M[SP+] M[SP+] + M[SP]pop x : SP+ SP-1; x M[SP]
Exemples: Burroughs B5000, HP 300.
Processeurs à pile - Structure
I0 I1
Z
SH2SH1SH0
AL2AL1AL0
POP
SEL
Z≠0
0 1
INPORTOUTPORT
0 1
Adresse M[SP]
PUSH
M[SP+]
SHIFTER
StackPointer
+
+1 0 -1
SP+
SP
Processeurs à pile - ExempleLangage de haut niveau:
P := (Q*R + S*T)*(U + V)
Compilation pour une architecture à pile:PUSH Q : SP+ SP+1; M[SP+] QPUSH R : SP+ SP+1; M[SP+] RMULT : SP+ SP-1; M[SP+] Q*RPUSH S : SP+ SP+1; M[SP+] SPUSH T : SP+ SP+1; M[SP+] TMULT : SP+ SP-1; M[SP+] S*TADD : SP+ SP-1; M[SP+] Q*R + S*TPUSH U : SP+ SP+1; M[SP+] UPUSH V : SP+ SP+1; M[SP+] VADD : SP+ SP-1; M[SP+] U+VMULT : SP+ SP-1; M[SP+] (Q*R + S*T)*(U+V)POP P : SP+ SP-1; P (Q*R + S*T)*(U+V)