Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
La CPU
• Contenuti
– Esame approfondito del funzionamento della CPU
• definizione di un'architettura semplificata ispirata alle macchine
RISC
• sviluppo due prototipi
– Il primo prototipo (CPU1) è costruito in modo da eseguire le
istruzioni in un solo periodo di clock
– Il secondo prototipo (CPU2) esegue istruzioni in più cicli
– Confronto delle prestazioni
– Sistema di interruzione
Calcolatori elettronici
Architettura di riferimento
• Gli indirizzi di memoria sono riferiti ai byte
• Istruzioni e dati occupano sempre e solo una parola
di 32 bit.
• Istruzioni e dati si trovano in memoria allineate a
indirizzi multipli di 4 (0, 4, 8, 12, ...).
• Se si escludono le istruzioni di salto, la regola di
aggiornamento del registro PC è: PC:= PC + 4
• L'unità operativa presenta 32 registri di uso generale
di 32 bit (R0,R1, …,R31).
• Repertorio di istruzioni estremamente ridotto.
Formato
Load/Store (F2)
Aritmetiche (F1)
Calcolatori elettronici
Semplificazione
Notazione
• La notazione 000000||IND
si indica anche come X(IND)
• La notazione (OFFSET16)16||OFFSET
indica l’azione di portare OFFSET da 16 a 32 bit,
estendendo il segno.
si indica anche come XS(OFFSET)
Calcolatori elettronici
Istruzioni aritmetiche tra registri
• Il campo OP contiene il codice di generica
operazione aritmetica
• Il campo fALU identifica la specifica operazione da
eseguire, per esempio: ADD, SUB, OR, MUL, etc.
• Le aritmetiche prevedono sempre due registri
sorgente e un registro di destinazione.
• I campi Rs1 e Rs2 identificano i registri sorgente
• Il campo Rd identifica il registro destinazione
Esempio
ADD R1,R2,R3 ;R1:= R2+R3
SUB R4,R4,R2 ;R4:= R4-R2
Esempio
LD R13,100(R6) ; R13:= M[R6+100]
; R13:= M[R6+XS(OFFSET)]
ST 2000(R7),R2 ; M[R7+2000]:= R2
; M[R7+ XS(OFFSET)]:= R2
Calcolatori elettronici
Istr. di trasferimento del controllo
JMP : Jump, Salto incondizionato
JAL : Jump and link, salto incondizionato e collegamento
JE : Jump if equal
JS : Jump on sign
JR : Jump relative, salto relativo a un registro
INT : Interrupt
RFI : Return from interrupt
Calcolatori elettronici
Altri Trasferimenti
• JR JR R17 ; PC:= R17
Fasi di esecuzione
• IF – Instruction Fetch
• ID – Instruction decode
• EX – Execute
• ME – Memory
• WB – Write Back (aggiornamento registro destinazione)
IF ID EX ME WB
Calcolatori elettronici
CPU1 (MONOCICLO)
• Esegue istruzioni in un solo periodo di clock
• Richiede che memoria Istruzioni e memoria dati
siano separate (Harvard)
Calcolatori elettronici
Esempio : Propagazione ST
Esempio : Propagazione ST
PC presenta il nuovo
valore e MI presenta
l’istruzione. Fino al
prossimo IF la MI
presenta sempre la
medesima istruzione
Calcolatori elettronici
Esempio : Propagazione ST
L’istruzione viene
decodificata e viene
asserito il comando ST e
vengono prodotti i
comandi che determinano
le azioni necessarie.
I due registri RS1 e RSd
vengono letti in RF.
Il contenuto di Rs1 va alla
ALU, quello di Rsd va
verso la MD.
L’OFFSET dell’istruzione
va alla porta ALU
Register File
Calcolatori elettronici
Interno RF
Esempio : Propagazione ST
La ALU effettua la
somma e calcola
l’indirizzo dove verrà
scritto il dato
Calcolatori elettronici
Schema ALU
Esempio : Propagazione ST
Il risultato del calcolo
della ALU viene
propagato fino alla porta
di indirizzi MD. Essendo
asserito il comando ST,
viene asserito il comando
M_Write che determina la
scrittura del dato.
Sul fronte finale del clock
viene incrementato il PC
(+4) usando un sommatore
distinto dalla ALU che è
impegnata sullo stesso
ciclo di clock
Calcolatori elettronici
Memoria
tmono,I = ti Σ
(la somma è estesa ai soli stadi interessati dall’istruzione I)
tmono = N Tmono
Calcolatori elettronici
Esempio
• 30 ns per l'accesso alla memoria (MI o MD)
• 5 ns per la decodifica dell'istruzione e per lettura dei
registri
• 12 ns un'operazione di ALU
• 5 ns per la scrittura di un registro
MI ID ALU MD WR T
Aritm 30 5 12 5 52
LD 30 5 12 30 5 82
ST 30 5 12 30 77
JE/JS 30 5 12 47
JMP 30 5 35
JAL 30 5 5 40
Tmono = 82 ns
Per l’istruzione JMP il 57% del tempo è sprecato
Calcolatori elettronici
CPU2
• Memoria unica
• Più cicli di clock, esecuzione in più passi:
– IF
– ID
– EX
– ME
– WB
• Elementi necessari (per ora): PC, IR, RF, ALU
• Ottimizzare l’uso delle risorse
• Controllo maggiore
IF
• Azioni svolte in IF: IR:= M[PC]; PC:= PC+4
(Durante IF ALU non viene utilizzata => si usa per incrementare PC)
Calcolatori elettronici
ID
• Comprende il decodificatore del codice di istruzione
• Il formato dell’istruzione consente la lettura degli
eventuali registri sorgente
• Siccome ancora la ALU non viene impiegata per
l’eventuale operazione richiesta dall’istruzione, si può
impiegarla per il calcolo dell’indirizzo di destinazione
della diramazione. A tal fine occorre un registro di
appoggio (DEST)
ID DEST := PC+OFFSET
Calcolatori elettronici
EX
• Determinata dal codice di operazione
EX -- Aritmetiche
ALUOut = A fALU B
Calcolatori elettronici
EX -- LD/ST
ALUOut = A + OFFSET
EX -- JE/JS
Calcolatori elettronici
EX – JMP/JAL/JR
ME
• LD: Dmem:= M[ALUout]
• ST: M[ALUout]:= B
Calcolatori elettronici
WB
Aritmetiche LD
CPU2 complessivo
Calcolatori elettronici
Diagramma di stato aggregato
Fasi di esecuzione
• IF – Instruction Fetch
• ID – Instruction decode IF ID EX ME WB
• EX – Execute
• ME – Memory
• WB – Write Back (aggiornamento registro destinazione)
• Ad ogni fase corrisponde uno dei 5 cicli di clock T1, T2, T3, T4, T5;
stato Si <=> ciclo di clock Ti
Calcolatori elettronici
Comandi e selettori
CPU2 complessivo
Calcolatori elettronici
…. Comandi e selettori
• SELETTORI (= segnali ai blocchi di selezione)
– Rsorg: per selezionare il registro di destinazione;
– Dsorg: per selezionare la provenienza a D di RF;
– INDsorg: per selezionare la provenienza dell'indirizzo di
memoria;
– PCsorg: per selezionare la provenienza dell'ingresso a PC
– ALUsorgA: per selezionare la provenienza dell'ingresso A di
ALU;
– ALUsorgB: per selezionare la provenienza dell'ingresso B di
ALU;
– OPALU: per selezionare la funzione di ALU.
CPU2 complessivo
Calcolatori elettronici
Calcolatori elettronici – Architettura e organizzazione
Copyright © 2009 – The McGraw-Hill Companies srl
Giacomo Bucci
Calcolatori elettronici
Diagr stato dettagliato …fetch decode…..
Calcolatori elettronici
Stato di Prelievo, IF
Azioni previste: IR <- M[PC]; PC <- PC + 4
• Comandi da asserire durante T1 (stato S1)
– M_Read: per leggere la memoria;
– In: per mettere il bus dei dati in ingresso;
– PC_Write: Per abilitare l'ingresso a PC;
– PC1_Write: per abilitare l'ingresso a PC1;
– IR_Write: per scrivere nel registro IR;
• Valori assunti dai Selettori
– INDsorg=1: per trasmettere alla memoria il contenuto del PC;
– PCsorg=0: per selezionare PC+4, prodotto dalla ALU, come ingresso al
PC
– ALUsorgA=0: per selezionare il PC come ingresso A di ALU;
– ALUsorgB=0: per selezionare la costante 4 come ingresso B di ALU;
– OPALU=ADD: per selezionare la funzione di ALU.
Stato di Decodifica, ID
La decodifica avviene automaticamente attraverso una
semplice rete combinatoria; quello che si fa è calcolare
l’indirizzo di destinazione per un’eventuale istruzione JE/JS
Calcolatori elettronici
Istruzioni Aritmetiche
Azioni previste: ALUout = A fALU B
Stato di Decodifica, ID
Dare forma algebrica ai comandi
Calcolatori elettronici
Comandi
• Comandi: espressioni trovate come somme di
prodotti tra i periodi e i codici
• Esempio: M_Read:
– Su T1 per tutte le istruzioni
– Su T4 e T5 per LD
M_Read= T1 + T4 . LD + T5 .LD
...Comandi
• In = T1 + T5.LD
• M_Write = T4.ST
• Out = (T3 + T4) ST
• IR_Write = T1
Calcolatori elettronici
Selettori
Considerazioni
Tmulti periodo del clock per CPU2. E’ determinato dallo
stadio più lento
τi tempo richiesto dal generico stadio
Tmulti = max τi
Tmono periodo del clock di CPU1. E’ determinato
dall’istruzione più lenta (L’istruzione più lenta è indicata con X;
con x si indica il numero di stadi che attraversa)
Calcolatori elettronici
Confronto monociclo - multiciclo
CPIi = numero di cicli di clock richiesto per una
istruzione di tipo i
τmulti,I = CPIi * Tmulti Durata istruzione di tipo i
N numero di istruzioni eseguite da un programma
pi frazione di istruzioni di tipo i nel programma
tmulti tempo di esecuzione del programma
tmono = N * Tmono
Calcolatori elettronici – Architettura e organizzazione
Copyright © 2009 – The McGraw-Hill Companies srl
Giacomo Bucci
Calcolatori elettronici
Prestazioni
• Assunzioni:
– 30 ns accesso memoria
– 5 ns decodifica istruzioni e lettura registri
– 12 ns operazione ALU
– 5 ns scrittura registro
Ne deriva T= 30 ns
• Durata istruzioni:
– Aritm: 150 ns
– LD 150 ns
– ST 120 ns
– JE/JS : 90 ns
– JMP/JR: 90 ns
– JAL 150 ns
..Prestazioni
• Mix istruzioni (assunzione):
– istruzioni aritmetiche: 45%
– istruzioni LD: 25%
– istruzioni ST: 10%
– istruzioni JE/JS: 12%
– istruzioni JMP: 6%
– istruzioni JAL: 2%
• Tempo medio per istruzione:
0,45*150 + 0,25*150 + 0,10*120 + 0,12*90 + 0,06*90 + 0,02*150= 136,2 ns
Un tempo superiore del 66,10% al caso monociclo (82 ns). !!!
MI ID ALU MD WR T
Aritm 30 5 12 5 52
LD 30 5 12 30 5 82
ST 30 5 12 30 77
JE/JS 30 5 12 47
JMP 30 5 35
JAL 30 5 5 40
Calcolatori elettronici
Miglioramenti
Criteri:
• Anticipare per quanto possibile le operazioni, in modo
da ridurre il numero medio di clock per istruzione;
• Scegliere un periodo di clock più breve, introducendo
eventualmente degli stati di attesa per le fasi più
lunghe, in modo da ottimizzare il tempo medio per
istruzione;
E’ l’accesso alla memoria che determina T. Dunque
conviene scomporre l’accesso a M in più cicli.
• Compattare fasi distinte e aggiustare
opportunamente il clock.
– aritmetiche: 12 * 3 + 12 + 12 + 12 + 12 = 84 ns;
– LD: 12 * 3 + 12 + 12 + 12 * 3 + 12= 108 ns.
– ST: 12 * 3 + 12 + 12 + 12 * 3= 96 ns;
– JE/JS: 12 * 3 + 12 + 12= 60 ns;
– JMP/JR: 12 * 3 + 12 + 12= 60 ns;
– JAL 12 * 3 + 12 + 12 + 12 + 12= 84 ns;
• Con il precedente mix si ha una durata media pari a
0,45*84 + 0,25*108 + 0,10*96 + 0,12*60 + 0,06*60 + 0,02*84= 86,88 ns
• Miglioramento = 100 * (136,20 - 86,88)/136,20 = 36,21%
100*(86,88 - 82)/82 =5,95 % più lenta di CPU1
Nota: Ci sono sprechi in tutte le fasi (eccetto ALU) in particolare
nell’accesso alla memoria (6 ns)
Calcolatori elettronici – Architettura e organizzazione
Copyright © 2009 – The McGraw-Hill Companies srl
Giacomo Bucci
Calcolatori elettronici
Ulteriore incremento della granularità
• Portare T a 5 ns
=> un accesso alla memoria richiede 6 cicli
Anticipazione e compattazione
Calcolatori elettronici
Anticipazione e compattazione
• Mantenendo T = 30 ns
– aritmetiche: 30 + 30 = 60 ns;
– LD: 30 + 30 + 30 + 30 = 120 ns;
– ST: 30 + 30 + 30 = 90 ns;
– JE/JS: 30 + 30 + 30 = 90 ns;
– JMP/JR: 30 + 30 = 60 ns;
– JAL 30 + 30 = 60 ns;
• Con il precedente mix si ha una durata media pari a
0,45*60 + 0,25*120 + 0,10*90 + 0,12*90 + 0,06*60 + 0,02*60= 81,60 ns
• Miglioramento = 100 * (136,20-81,60)/136,20 = 40,09%
• T = 5 ns
Calcolatori elettronici
Calcolatori elettronici – Architettura e organizzazione
Copyright © 2009 – The McGraw-Hill Companies srl
Giacomo Bucci
Calcolatori elettronici
Interruzioni
• Esterne:
– usate per gestire le operazioni di I/O.
– asincrone rispetto all'esecuzione del programma
• Eccezioni:
– causate da situazioni anomale (overflow nelle operazioni
aritmetiche, tentativo di esecuzione di un codice operativo
non permesso, fallimento nell’accesso alla memoria virtuale
– sincrone rispetto all'esecuzione del programma ma non
predicibili
• Trappole:
– generate da apposite istruzioni (ad esempio, INT del
processore 8086). Sono una specie di istruzioni di salto con
l'effetto di portare la macchina in opportune modalità di
funzionamento
– sincrone e predicibili
Atomicità dell’interruzione
• IE: flip-flop di abilitazione del (sistema di) interruzione
– Architettura 8086: due istruzioni STI e CLI (asseriscono SIE
e RIE rispettivamente)
– Servizio interruzione equivale a RIE
– RFI equivale a SIE
Calcolatori elettronici
Interruzioni su CPU2
• IPOTESI
– Linea INTR per le interruzioni esterne
– Eccezioni filtrate da IE (come le interruzioni esterne)
– Istruzioni INT per le interruzioni software
– La logica di CPU salva il solo PC in R30 (qualunque sia il
tipo di interruzione)
• la responsabilità di salvare gli eventuali registri che potrebbero
essere modificati dalla routine di servizio è lasciata al
programmatore.
– Le interruzioni sono vettorizzate:
• in CPU c’è la tabella TABIR (un blocco di registri di 32 bit)
identificati attraverso il numero di interruzione.
Interruzioni Software
• Istruzione INT
• Essa determina:
– R30 PC;
– PC TABIR[NInt];
– Asserzione RIE;
• Occorre prevedere
– Un percorso da TABIR a PC (ulteriore ingresso al Mux del
PC)
– La selezione di R30 come registro di destinazione
– (per le interruzioni esterne servirà anche un registro (SEL)
su cui appoggiare il selettore di interruzione)
Calcolatori elettronici
Trattamento INT
Servirà più
avanti
Ramo INT
Deve essere
aggiunto il
ramo di
esecuzione di
INT
Calcolatori elettronici
Interruzioni esterne
• Ipotesi:
– quando IINTR è asserita la logica, terminata l’istruzione
corrente, passa al servizio dell’interruzione;
– La logica di CPU asserisce INTA verso l’esterno, generando
un ciclo INTA sul bus; la logica esterna presenta il selettore
sul bus dei dati in modo che possa essere letto sullo stesso
ciclo INTA (INTA è una specie di Read);
– INTR resta asserita almeno fino al momento in cui viene
asserito INTA
Calcolatori elettronici
Sincronizzazione INTR
• IRQ è sincronizzato rispetto all’ultimo clock (di ogni
istruzione)
Interruzione esterna….
Calcolatori elettronici
…Interruzione esterna
RIE
Dsorg=0
Rsorg=3
R_Write
X_VI
Attenzione!!!
• Nelle espressioni dei comandi e selettori attivi su T1
e T2 occorre tenere conto di IRQ
– In precedenza si aveva
DEST_Write = T2
– deve essere cambiata in
DEST_Write = T2 IRQ
– Si ha anche
INTA = T2 IRQ
Calcolatori elettronici
Più realistico
Eccezioni
• Il selettore viene prodotto dalla logica di CPU
– Es: page fault, divisione per zero
– Occorre aggiungere la logica relativa alla provenienza del
selettore
• Filtrate attraverso IE come le interruzioni esterne
• Occorre stabilire una priorità rispetto alle interruzioni
esterne
• Complicazioni. Esempio:
– Page Fault. L’istruzione non si conclude, genera eccezione.
Successivamente deve essere rieseguita.
Calcolatori elettronici
ISTRUZIONE RFI
• RFI
• L’istruzione deve:
– effettuare PC R30
– asserire SIE
Discussione
• La nostra architettura
– salva in R30 (non ha stack)
– non prevede una parola di stato (è stato salvato solo PC!!!)
• Interruzioni annidate
– Istruzione STI: set interrupt (asserisce SIE)
– Istruzione CLI: clear interrupt (disasserisce SIE)
Calcolatori elettronici
Interruzioni annidate
• Nella nostra architettura (mancanza di stack) sono
difficili da attuare
RSERV … ;entrata
ST SAVR(R0),R30 ;salva R30 in mem.
STI ;riabilta interr.
…
LD R30,SAVR(R0) ;riprende R30
RFI
Può arrivare un’interruzione tra
queste istruzioni: si perde R30
Prima del LD ci vuole CLI
Incidentalmente
Calcolatori elettronici
…Una procedura ricorsiva
Calcolatori elettronici
Ha un difetto: in ingresso non
FATT controlla se x<0
Registri riservati
Calcolatori elettronici