2.6 Parte di controllo (control path)


ha il compito di generare i segnali di
comando sincronizzando le varie unità che
compongono la parte operativa (data path)
è un enorme automa sequenziale che ha
come ingressi l’istruzione in corso e lo stato
attuale della CPU, e come uscite i comandi
alla parte operativa e lo stato successivo
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
64
2.6 Parte di controllo
i comandi del datapath
IPOUT 0 = A
IP 1 = load
1=B
mux
B
demux
1=B
A
IPIN 0 = A
IP
inc/
dec
I/D
0 = dec
1 = inc
A
B
Temp
T1 1 = load
piccola sezione di datapath con evidenziati
i comandi di sincronizzazione
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
65
2.6 Parte di controllo
diagramma degli stati
...
Fetch 1
Read
memory
Fetch 2
Central Process Unit
IPOUT=0
...
IPOUT=1
ID=1
T1=1^
IPIN=1
IP=1^
...
emettere IP nell’Address Bus:
• demux IPOUT emette dati in uscita A
in attesa del dato dalla memoria:
• demux IPOUT emette dati in uscita B
• impostare inc/dec a incremento
• memorizzare il risultato in T1
aggiorna IP:
• mux IPIN legge dati da ingresso B
•memorizza il dato in registro IP
Architettura degli elaboratori 1 - A. Memo
66
2.6 Parte di controllo
logica
di
controllo
ai dispositivi
del datapath
istruzione
da eseguire
hardwired
stato della CPU
implementazione tradizionale
partendo dall’automa a stati finiti
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
67
2.6 Parte di controllo
microprogrammazione 1
La tendenza è quella di avere istruzioni sempre più
complesse, il che comporta:
 semplificare la programmazione
 diminuire il numero di istruzioni per programma
 ridurre lo spazio in memoria
 complicare enormemente la logica di controllo
La soluzione è adottare la microprogrammazione
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
68
2.6 Parte di controllo
microprogrammazione 2
Individuare per ogni istruzione (macro
instruction) i comandi (micro code) da
emettere, raggrupparli in blocchi eseguibili in
parallelo (micro instruction), e implementarli
in una struttura interna alla CPU simile ad un
piccolo elaboratore, con la sua memoria
programmi (microprogrammed ROM)
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
69
2.6 Parte di controllo
microprogrammazione 3
ADD AL,BL
MOV AX,0
linguaggio
Assembler
linguaggio
macchina
00 B8
35 00 00
microprogrammazione
IPOUT=0
ID=1 , T1=1^
IPIN=1, IP=1^
ogni macro instruction punta ad una
sequenza di micro instruction
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
70
2.6 Parte di controllo
microprogrammazione 4
La microprogrammazione ...
 è facile da progettare ed implementare
 è flessibile negli sviluppi futuri
 rende poco influente l’architettura interna
 permette ottimizzazioni distinte
 è più lenta dell’implementazione hardwired
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
71
2.7 Set di istruzioni
Il set di istruzioni di una CPU specifica

quali sono le istruzioni previste

quali operandi sono ammessi
il formato con cui vengono codificate
la loro durata in cicli di clock


Central Process Unit
Architettura degli elaboratori 1 - A. Memo
72
2.7 Set di istruzioni
classificazioni

in base alla localizzazione interna degli operandi
–
–
–
–
–


stack
accumulatore
registro (reg/mem)
registro (reg/reg)
ad accesso diretto (mem/mem)
in base alle tecniche di indirizzamento
in base alla complessità delle istruzioni
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
73
2.7 Set di istruzioni
a stack





stack
gli operandi sono posti nella
PUSH X
parte alta dello stack
PUSH Y
istruzioni molto corte
ADD
POP Z
codice poco efficiente
valutatori delle espressioni semplificati
(notazione polacca inversa)
lo stack diventa un collo di bottiglia
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
74
2.7 Set di istruzioni
ad accumulatore





l’ALU utilizza l’accumulatore accumulatore
LOAD X
come registro predefinito
ADD Y
STORE Z
istruzioni corte
semplifica il control path ed il data path
frequenti spostamenti da/per altri registri
poco efficente
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
75
2.7 Set di istruzioni
a registro (reg/mem)





in presenza di due operandi, registro (r/m)
LOAD R1,X
almeno uno è un registro
ADD R1,Y
STORE Z, R1
istruzioni lunghe
buona efficienza di programmazione
riduzione degli accessi alla memoria
scarso bilanciamento delle istruzioni
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
76
2.7 Set di istruzioni
a registro (reg/reg)



gli operandi delle operazioni sono solo
registri e quindi gli accessi alla memoria
devono avvenire precedentemente tramite
un registro (qualsiasi)
registro (reg/reg)
LOAD R1,X
codifica a lunghezza fissa
LOAD R2,Y
istruzioni a durata bilanciata
Central Process Unit
ADD R3,R1,R2
STORE Z, R3
Architettura degli elaboratori 1 - A. Memo
77
2.7 Set di istruzioni
ad accessi diretti (mem/mem)





uso delle locazioni di
memoria/memoria
memoria come operandi ADD Z,X,Y
massima semplicità di programmazione
lunghezza delle istruzioni molto variabile
alto sbilanciamento delle istruzioni
l’accesso alla memoria diventa un collo di
bottiglia
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
78
2.7 Set di istruzioni
evoluzione commerciale
Accumulatore singolo (EDVAC) [1950]
Accumulatore + registri indice (Mark 1, IBM 700) [1953]
registri General Purpose
CISC (VAX, Intel)
Load/Store (CDC 6600, Cray 1)
RISC (Mips, Spark, IBM)
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
79
2.7 Set di istruzioni
accesso alla memoria 1


la memoria viene vista (quasi) sempre dal
programmatore in L.M. come un vettore
lineare di elementi ad 8 bit
ad ogni accesso alla memoria, alla CPU
arriva un multiplo di byte (dimensione DB)
– memoria allineata
– memoria non allineata
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
80
2.7 Set di istruzioni
accesso alla memoria 2
Address
Bus
1000
39
3A
memoria
38
0FFF
39
1000
3A
1001
3B
1002
1000 1001
Data Bus
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
81
2.7 Set di istruzioni
accesso alla memoria 3
39
Address
Bus
1001
3A
3B
1000 1001
3C
1002 1003
Data Bus
Data Bus
memoria allineata
3A
3B
1001 1002
memoria
non allineata
Data Bus
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
82
2.7 Set di istruzioni
accesso alla memoria 4

memoria non allineata (Intel x86)
– accessi ottimizzati
– hardware più complesso

memoria allineata (Motorola 68000)
– lettura più lenta dei dati disallineati
– con l’uso di compilatori adeguati i dati possono
essere memorizzati opportunamente
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
83
2.7 Set di istruzioni
tecniche di indirizzamento 1
modalità
esempio
registro
MOV AL,BL
immediato MOV AL,10
significato
AL  AL+1
AL  10
diretto
AL  Mem[0123]
MOV AL,[0123]
indicizzato MOV AL,[SI]
con base
AL  Mem[SI]
MOV AL,[BX+30] AL  Mem[BX+30]
index+base MOV AL,[SI+BX] AL  Mem[SI+BX]
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
84
2.7 Set di istruzioni
tecniche di indirizzamento 2
modalità
indiretto
fatt. scala
esempio
significato
MOV AL,@RX
AL  Mem[Mem[RX]]
MOV AL,[BX +SI*d]
AL  Mem[BX+SI*d]
auto inc.
MOV RX,[RY]+
auto dec.
MOV RX,-[RY]
AL  Mem[RY]
RY = RY + d
RY = RY - d
AL  Mem[RY]
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
85
2.7 Set di istruzioni indirizzamenti
Indirizzamenti (Hennessy-Patterson)
Tipo di programma
media
altri
C
Indiretto
Scala
Registro
Immediato
CAD
Base
W.P.
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Frequenza delle m odalità di indirizzam ento
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
86
2.7 Set di istruzioni
tecniche di indirizzamento 4




più indirizzamenti ci sono e più semplice è
la programmazione diretta
più indirizzamenti ci sono e più complicati e
difficilmente ottimizzati sono i compilatori
più indirizzamenti ci sono e più complessa
risulta la parte di controllo
statisticamente sono pochi gli indirizzamenti utilizzati
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
87
2.7 Set di istruzioni
tipi di operazioni
Le istruzioni si possono dividere in
 trasferimento dati (*)
 aritmetiche e logiche (*)
 salto, ripetizione e controllo (*)
 gestione stack
 per dati specifici (FP, stringa)
 I/O
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
88
2.7 Set di istruzioni
trasferimento dati




da registro a registro MOV AL,BL
da memoria a registro MOV AL,[0123]
da registro a memoria MOV [0123],AL
distinto tra lettura e scrittura
LOAD R1,0123
STORE 0123,R1
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
89
2.7 Set di istruzioni
aritmetiche e logiche






somma/sottrazione
confronto
moltiplic./divis.
logiche
spostamento bit
sui bit di flag
Central Process Unit
ADD AL,BL
SUB CX,AX
CMP AL,33
TEST AH,CH
MUL BL
DIV AX
OR
NEG AL
AL,AH
ROL AH,2
SHR AL,1
CLC
STI
Architettura degli elaboratori 1 - A. Memo
90
2.7 Set di istruzioni
salto, ripetizione e controllo


salto incondizionato JMP 0456
salto condizionato JZ 0100
JNA 1234




ciclo di ripetizione
salto a/da procedure
interruzione
sistema
Central Process Unit
JNC 2211
JG 0101
LOOP 0345
CALL 0123
RET
INT 21
IRET
HLT
NOP
Architettura degli elaboratori 1 - A. Memo
91
2.7 Set di istruzioni
gestione stack 1



lo stack è una coda LIFO che permette di
salvare e recuperare dati senza curarsi del
loro indirizzo
è una tecnica a lettura distruttiva
viene usato per
– salvataggio contesto durante le interruzioni o le
chiamate a procedure
– passaggio parametri
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
92
2.7 Set di istruzioni
gestione stack 2
PUSH AX
• DEC SP
• MOV [SP],AXhigh
• DEC SP
• MOV [SP], AXlow
Central Process Unit
MOV AX,1234
PUSH AX
prima
dopo
FFEB 00
FFEB 00
FFEC 00
FFEC 34
FFED 00
FFED 12
FFEE XX
SP
Architettura degli elaboratori 1 - A. Memo
SP
FFEE XX
93
2.7 Set di istruzioni
gestione stack 3
POP AX
• MOV AXlow,[SP]
• INC SP
• MOV AXhigh,[SP]
• INC SP
Central Process Unit
POP AX
prima
dopo
FFEB 00
FFEB 00
FFEC 34
SP
FFEC 34
FFED 12
FFED 12
FFEE XX
FFEE XX
Architettura degli elaboratori 1 - A. Memo
SP
94
2.7 Set di istruzioni
per dati specifici

LODSB
per stringa
CMPSW
(implicito AL, sorgente DS:SI, destinazione ES:DI)



ripetizione di stringa
Floating Point
BCD Packed
Central Process Unit
REPZ
CMPSW
FADD ST, ST[2]
DAA
Architettura degli elaboratori 1 - A. Memo
95
2.7 Set di istruzioni
I/O


ingresso dati
emissione dati
Central Process Unit
IN AL,DX
OUT DX,AL
Architettura degli elaboratori 1 - A. Memo
96
2.7 Set di istruzioni
formato delle istruzioni 1




è il codice con cui vengono rappresentate le
varie istruzioni
dipende dal set di istruzioni e dall’architettura interna adottata
può essere a lunghezza fissa o variabile
(Intel da 1 a 12 byte)
compatibilità verso il basso
Central Process Unit
Architettura degli elaboratori 1 - A. Memo
97
2.7 Set di istruzioni
formato delle istruzioni 2
TTTTTTTT
codice operativo (1 byte)
TTTTTTTT
codice operativo (eventuale secondo byte)
mod TTT r/m modalità di indirizzamento (ed altri b.c.o.)
ss_index
fattore di scala, reg. indice e reg. base (1)
displacemen spiazzamento, 0, 1, 2 o 4 byte
immediate
Central Process Unit
dato immediato, 0, 1, 2 o 4 byte
Architettura degli elaboratori 1 - A. Memo
98
2.7 Set di istruzioni
formato delle istruzioni 3
Ad esempio ADD AL, BL codifica: 00 D8
formato reg1 to reg2 = 00TTT00w 11 reg1 reg2
oper.
ADD
ADC
AND
OR
SUB
SBB
XOR
TTT
000
010
100
001
101
011
110
Central Process Unit
reg
AL
CL
DL
BL
AH
CH
DH
BH
cod
000
001
010
011
100
101
110
111
dimensione operandi
8 bit
w=0
16/32 bit w=1
TTT = 000 (ADD)
w = 0 (8 bit)
reg1 = 011 (BL)
reg2 = 000 (AL)
codifica = 00000000 11011000
Architettura degli elaboratori 1 - A. Memo
99
Scarica

cpu_2 - Zuccante