central process unit architettura degli elaboratori 1 - a. memo 64 2.6 parte di controllo (control...
TRANSCRIPT
Central Process Unit Architettura degli elaboratori 1 - A. Memo
1
2.6 Parte di controllo 2.6 Parte di controllo (control path)(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
2
2.6 Parte di controllo2.6 Parte di controlloi comandi del datapathi comandi del datapath
IP
Temp
de
mu
x
mu
x
IP INIPOUT
A
B B
A
0 = A1 = B
0 = A1 = BIP 1 = load
T 1 1 = loadI/D
0 = dec1 = inc
inc/ dec
piccola sezione di datapath con evidenziatii comandi di sincronizzazione
Central Process Unit Architettura degli elaboratori 1 - A. Memo
3
2.6 Parte di controllo2.6 Parte di controllodiagramma degli statidiagramma degli stati
Fetch 1 IPO UT =0. . .
. . .
Readm em ory ID=1
IPO UT =1
T 1=1^
Fetch 2IP IN=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
Central Process Unit Architettura degli elaboratori 1 - A. Memo
4
2.6 Parte di controllo2.6 Parte di controllohardwiredhardwired
implementazione tradizionale
partendo dall’automa a stati finiti
logicadi
controllo
stato della CPU
ai d
isp
osi
tivi
del
da
tap
ath
istr
uzi
on
e
da
eseg
uir
e
Central Process Unit Architettura degli elaboratori 1 - A. Memo
5
2.6 Parte di controllo2.6 Parte di controllomicroprogrammazione 1microprogrammazione 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
6
2.6 Parte di controllo2.6 Parte di controllomicroprogrammazione 2microprogrammazione 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
7
2.6 Parte di controllo2.6 Parte di controllomicroprogrammazione 3microprogrammazione 3
linguaggioA ssem bler
linguaggiom acchina
m icroprogram m azione
ADD AL,BLM O V AX,0
IPOU T=0ID =1 , T1=1^IP IN =1, IP=1^
00 B835 00 00
ogni macro instruction punta ad unasequenza di micro instruction
Central Process Unit Architettura degli elaboratori 1 - A. Memo
8
2.6 Parte di controllo2.6 Parte di controllomicroprogrammazione 4microprogrammazione 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
9
2.7 Set di istruzioni2.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
10
2.7 Set di istruzioni2.7 Set di istruzioniclassificazioniclassificazioni
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
11
2.7 Set di istruzioni2.7 Set di istruzionia stacka stack
gli operandi sono posti nella
parte alta dello stack istruzioni molto corte codice poco efficiente valutatori delle espressioni semplificati
(notazione polacca inversa) lo stack diventa un collo di bottiglia
stackPUSH XPUSH YADDPOP Z
Central Process Unit Architettura degli elaboratori 1 - A. Memo
12
2.7 Set di istruzioni2.7 Set di istruzioniad accumulatoread accumulatore
l’ALU utilizza l’accumulatore
come registro predefinito istruzioni corte semplifica il control path ed il data path frequenti spostamenti da/per altri registri poco efficente
accumulatoreLOAD XADD YSTORE Z
Central Process Unit Architettura degli elaboratori 1 - A. Memo
13
2.7 Set di istruzioni2.7 Set di istruzionia registro (reg/mem)a registro (reg/mem)
in presenza di due operandi,
almeno uno è un registro istruzioni lunghe buona efficienza di programmazione riduzione degli accessi alla memoria scarso bilanciamento delle istruzioni
registro (r/m)LOAD R1,XADD R1,YSTORE Z, R1
Central Process Unit Architettura degli elaboratori 1 - A. Memo
14
2.7 Set di istruzioni2.7 Set di istruzionia registro (reg/reg)a registro (reg/reg)
gli operandi delle operazioni sono solo registri e quindi gli accessi alla memoria devono avvenire precedentemente tramite un registro (qualsiasi)
codifica a lunghezza fissa istruzioni a durata bilanciata
registro (reg/reg)LOAD R1,XLOAD R2,YADD R3,R1,R2STORE Z, R3
Central Process Unit Architettura degli elaboratori 1 - A. Memo
15
2.7 Set di istruzioni2.7 Set di istruzioniad accessi diretti (mem/mem)ad accessi diretti (mem/mem)
uso delle locazioni di
memoria come operandi massima semplicità di programmazione lunghezza delle istruzioni molto variabile alto sbilanciamento delle istruzioni l’accesso alla memoria diventa un collo di
bottiglia
memoria/memoriaADD Z,X,Y
Central Process Unit Architettura degli elaboratori 1 - A. Memo
16
2.7 Set di istruzioni2.7 Set di istruzionievoluzione commercialeevoluzione commerciale
Accumulatore singolo (EDVAC) [1950]
Accumulatore + registri indice (Mark 1, IBM 700) [1953]
registri General Purpose
RISC (Mips, Spark, IBM)
Load/Store (CDC 6600, Cray 1)CISC (VAX, Intel)
Central Process Unit Architettura degli elaboratori 1 - A. Memo
17
2.7 Set di istruzioni2.7 Set di istruzioniaccesso alla memoria 1accesso 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
18
2.7 Set di istruzioni2.7 Set di istruzioniaccesso alla memoria 2accesso alla memoria 2
1000
AddressBus
Data Bus
38
39
3A
3B
0FFF
1000
1001
1002
m em oria
39 3A
1000 1001
Central Process Unit Architettura degli elaboratori 1 - A. Memo
19
2.7 Set di istruzioni2.7 Set di istruzioniaccesso alla memoria 3accesso alla memoria 3
1001
AddressBus Data Bus
39 3A
1000 1001
Data Bus
3A 3B
1001 1002
Data Bus
3B 3C
1002 1003
m em oria a llineata
m em orianon allineata
Central Process Unit Architettura degli elaboratori 1 - A. Memo
20
2.7 Set di istruzioni2.7 Set di istruzioniaccesso alla memoria 4accesso 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
21
2.7 Set di istruzioni2.7 Set di istruzionitecniche di indirizzamento 1tecniche di indirizzamento 1
modalità esempio significato
registro MOV AL,BL AL AL+1
immediato MOV AL,10 AL 10
diretto MOV AL,[0123] AL Mem[0123]
indicizzato MOV AL,[SI] AL Mem[SI]
con base 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
22
2.7 Set di istruzioni2.7 Set di istruzionitecniche di indirizzamento 2tecniche di indirizzamento 2
modalità esempio significato
indiretto MOV AL,@RX AL Mem[Mem[RX]]
fatt. scala MOV AL,[BX +SI*d]
AL Mem[BX+SI*d]
auto inc. MOV RX,[RY]+ AL Mem[RY]
RY = RY + d
auto dec. MOV RX,-[RY] RY = RY - d
AL Mem[RY]
Central Process Unit Architettura degli elaboratori 1 - A. Memo
23
W.P.
CAD
C
media
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Frequenza delle modalità di indirizzamento
W.P.
CAD
C
media
Tip
o d
i pro
gra
mm
aIndirizzamenti (Hennessy-Patterson)
altri
Indiretto
Scala
Registro
Immediato
Base
2.7 Set di istruzioni2.7 Set di istruzioni indirizzamenti indirizzamenti
Central Process Unit Architettura degli elaboratori 1 - A. Memo
24
2.7 Set di istruzioni2.7 Set di istruzionitecniche di indirizzamento 4tecniche 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 indirizzamen-ti utilizzati
Central Process Unit Architettura degli elaboratori 1 - A. Memo
25
2.7 Set di istruzioni2.7 Set di istruzionitipi di operazionitipi 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
26
2.7 Set di istruzioni2.7 Set di istruzionitrasferimento datitrasferimento 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
27
2.7 Set di istruzioni2.7 Set di istruzioniaritmetiche e logichearitmetiche e logiche
somma/sottrazione ADD AL,BL SUB CX,AX confronto CMP AL,33 TEST AH,CH moltiplic./divis. MUL BL DIV AX logiche OR AL,AH NEG AL spostamento bit ROL AH,2 SHR AL,1 sui bit di flag CLC STI
Central Process Unit Architettura degli elaboratori 1 - A. Memo
28
2.7 Set di istruzioni2.7 Set di istruzionisalto, ripetizione e controllosalto, ripetizione e controllo
salto incondizionato JMP 0456 salto condizionato JZ 0100 JNC 2211
JNA 1234 JG 0101 ciclo di ripetizione LOOP 0345 salto a/da procedure CALL 0123 RET interruzione INT 21 IRET sistema HLT NOP
Central Process Unit Architettura degli elaboratori 1 - A. Memo
29
2.7 Set di istruzioni2.7 Set di istruzionigestione stack 1gestione 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
30
2.7 Set di istruzioni2.7 Set di istruzionigestione stack 2gestione stack 2
PUSH AX• DEC SP• MOV [SP],AXhigh
• DEC SP• MOV [SP], AXlow
00
00
00
XXF F E E
F F E C
F F E D
F F E B
SP
prima
00
34
12
XXF F E E
F F E C
F F E D
F F E BSP
MOV AX,1234PUSH AX
dopo
Central Process Unit Architettura degli elaboratori 1 - A. Memo
31
2.7 Set di istruzioni2.7 Set di istruzionigestione stack 3gestione stack 3
POP AX• MOV AXlow,[SP]• INC SP• MOV AXhigh,[SP]• INC SP
prima
00
34
12
XXF F E E
F F E C
F F E D
F F E BSP
POP AX
dopo
00
34
12
XXF F E E
F F E C
F F E D
F F E B
SP
Central Process Unit Architettura degli elaboratori 1 - A. Memo
32
2.7 Set di istruzioni2.7 Set di istruzioniper dati specificiper dati specifici
per stringa LODSB CMPSW
(implicito AL, sorgente DS:SI, destinazione ES:DI) ripetizione di stringa REPZ CMPSW Floating Point FADD ST, ST[2] BCD Packed DAA
Central Process Unit Architettura degli elaboratori 1 - A. Memo
33
2.7 Set di istruzioni2.7 Set di istruzioniI/OI/O
ingresso dati IN AL,DX emissione dati OUT DX,AL
Central Process Unit Architettura degli elaboratori 1 - A. Memo
34
2.7 Set di istruzioni2.7 Set di istruzioniformato delle istruzioni 1formato delle istruzioni 1
è il codice con cui vengono rappresentate le varie istruzioni
dipende dal set di istruzioni e dall’architet-tura 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
35
2.7 Set di istruzioni2.7 Set di istruzioniformato delle istruzioni 2formato delle istruzioni 2
T T T T T T T T
mod TTT r/m
ss_index
displacemen
immediate
T T T T T T T T codice operativo (1 byte)
codice operativo (eventuale secondo byte)
modalità di indirizzamento (ed altri b.c.o.)
fattore di scala, reg. indice e reg. base (1)
spiazzamento, 0, 1, 2 o 4 byte
dato immediato, 0, 1, 2 o 4 byte
Central Process Unit Architettura degli elaboratori 1 - A. Memo
36
2.7 Set di istruzioni2.7 Set di istruzioniformato delle istruzioni 3formato delle istruzioni 3
Ad esempio ADD AL, BL codifica: 00 D8formato reg1 to reg2 = 00TTT00w 11 reg1 reg2
oper. TTTADD 000ADC 010AND 100OR 001SUB 101SBB 011XOR 110
reg codAL 000CL 001DL 010BL 011AH 100CH 101DH 110BH 111
dimensione operandi8 bit w=016/32 bit w=1
TTT = 000 (ADD)w = 0 (8 bit)reg1 = 011 (BL)reg2 = 000 (AL)codifica = 00000000 11011000