Giacomo Fiumara g [email protected]/teaching/ade/lezioni/micro.pdf · ENB...
-
Upload
hoangthuan -
Category
Documents
-
view
217 -
download
0
Transcript of Giacomo Fiumara g [email protected]/teaching/ade/lezioni/micro.pdf · ENB...
![Page 2: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/2.jpg)
Introduzione
2 / 101
![Page 3: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/3.jpg)
Introduzione
Il livello di micro-architettura implementa le funzioni del livellosovrastante ISA (Instruction Set Architecture)
La progettazione del livello di micro-architettura dipendepertanto dall'ISA che si vuole implementare (tenendo inconsiderazione costi e prestazioni)
Alcuni livelli ISA (in particolare le piattaforme RISC) hannoistruzioni semplici che possono essere eseguite in un solo ciclodi clock
Altri livelli ISA, come quello del Core i7, possono richiedere piùcicli per l'esecuzione di una singola istruzione
L'esecuzione di un'istruzione può richiedere (di norma)l'identi�cazione degli operandi in memoria, la loro lettura,l'esecuzione vera e propria, la memorizzazione dei risultati inmemoria
3 / 101
![Page 4: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/4.jpg)
Introduzione
Il livello ISA è caratterizzato dall'assenza di uno schemagenerale applicabile a tutte le piattaforme
Pertanto è necessario trattare un esempio particolare
A tale scopo è stato scelto un sottoinsieme della Java VirtualMachine, in particolare quella preposta alla manipolazione deinumeri interi
Questo sottoinsieme prende il nome di IJVM (Integer JavaVirtual Machine)
4 / 101
![Page 5: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/5.jpg)
Introduzione
La micro-architettura in esame conterrà un microprogramma ilcui compito consiste nell'eseguire le operazioni di fetch,decode ed execute delle operazioni IJVM
Il microprogramma presenta un insieme di variabili, chede�nisce lo stato del computer, che possono essere acceduteda tutte le funzioni: ogni funzione modi�ca almeno una diqueste variabili
Per esempio, il Program Counter (PC) fa parte dello stato:indica la locazione di memoria contenente la prossima funzione(istruzione ISA) da eseguire
5 / 101
![Page 6: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/6.jpg)
Datapath
6 / 101
![Page 7: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/7.jpg)
ALU
7 / 101
![Page 8: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/8.jpg)
Shifter
8 / 101
![Page 9: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/9.jpg)
Sommatore
9 / 101
![Page 10: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/10.jpg)
Registro
10 / 101
![Page 11: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/11.jpg)
Datapath
11 / 101
![Page 12: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/12.jpg)
Datapath
Il datapath è quella parte della CPU che contiene la ALU, isuoi input e i suoi output
Il datapath dell'architettura in studio è abbastanza simile aquello utilizzato nella maggior parte delle architetture
Contiene alcuni registri a 32 bit
Alcuni di essi possono �inviare� i loro contenuti sul bus B, altriricevono dati dal bus C
I dati presenti sul bus C possono essere scritti su più registricontemporaneamente
12 / 101
![Page 13: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/13.jpg)
Datapath
13 / 101
![Page 14: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/14.jpg)
Datapath: segnali di controllo
Segnali di controllo della ALU
F0
F1
ENA
ENB
INVA
INC
Segnali di controllo delloshifter
SLL8
SRA1
14 / 101
![Page 15: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/15.jpg)
Datapath
Input della ALU
Contenuto del registro H
Segnale proveniente dalregistro B
Incremento di SP:
Valore di SP sul bus B
Disattivare l'input sinistrodella ALU
Attivare il segnale INC
memorizzare il risultato inSP
15 / 101
![Page 16: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/16.jpg)
Datapath: temporizzazione
16 / 101
![Page 17: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/17.jpg)
Datapath: temporizzazione
Impostazione dei segnali per guidare il datapath (∆w)
Impostazione del registro H e del bus B (∆x)
Esecuzione delle operazioni nella ALU e nello shifter (∆y)
Propagazione dei segnali dallo shifter ai registri (∆z)
17 / 101
![Page 18: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/18.jpg)
Datapath: operazioni della memoria
Porte di comunicazione con lamemoria
Porta a 32 bit (controllatadai registri MAR e MDR)
Porta a 8 bit (controllatadal registro PC che leggeil byte meno signi�cativodi MBR)
18 / 101
![Page 19: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/19.jpg)
Datapath: operazioni della memoria
Registri MAR/MDR:lettura/scrittura parole didati
Registri PC/MBR: letturaprogramma eseguibile
Il registro MBR può contenereistruzioni o dati (da estendereda 8 a 32 bit, con segno omeno)
19 / 101
![Page 20: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/20.jpg)
Datapath: operazioni della memoria
Il registro MAR contieneindirizzi espressi in parole(i valori 0, 1, 2, . . . siriferiscono a paroleconsecutive)
il registro PC contieneindirizzi espressi in byte (ivalori 0, 1, 2, . . . siriferiscono a byteconsecutivi)
20 / 101
![Page 21: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/21.jpg)
Datapath: operazioni della memoria
� Assegnare il valore 2 alregistro MAR e avviare unalettura in memoria signi�caleggere i byte 8�11 (la parola2) e scriverli sul registro MDR
� Assegnare il valore 2 alregistro PC e avviare unalettura in memoria signi�caleggere il byte 2 dalla memoriae scriverlo sugli 8 bit menosigni�cativi di MBR
21 / 101
![Page 22: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/22.jpg)
Datapath: operazioni della memoria
� Questa di�erenza dicomportamento è dovuta al fattoche MAR e PC accedono a parti(semanticamente) di�erenti dellamemoria
� La combinazione MAR/MDRviene usata per leggere/scrivereparole di dati del livello ISA
� La combinazione PC/MBRviene usata per leggere ilprogramma eseguibile al livelloISA, che consiste di un �usso dibyte
� Tutti gli altri registri che
contengono indirizzi si
comportano come MAR
22 / 101
![Page 23: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/23.jpg)
Datapath: operazioni della memoria
� Nelle implementazioni reali esiste un solo tipo di memoria(orientata al byte)
� Per consentire al registro MAR di contare in parole si opera comein �gura:
Si scartano i due bit più signi�cativi di MAR
Si e�ettua uno shift verso sinistra di due bit
Si inseriscono due zeri nei bit meno signi�cativi di MAR
23 / 101
![Page 24: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/24.jpg)
Datapath: operazioni della memoria
I dati letti dalla memoria mediante la port di memoria a 8 bitvengono scritti sul registro MBR
Il contenuto di MBR può essere copiato sul registro B consegno o senza segno
Con segno: gli 8 bit di MBR possono essere considerati comeun numero compreso tra -128 e +127. Il segno (bit piùsigni�cativo tra gli 8 di MBR) viene esteso duplicandolo 24volte
Senza segno: i 32 bit scritti sul bus B si compongono degli 8bit letti da MBR (meno signi�cativi) e di zeri nei restanti bitpiù signi�cativi
La scelta se convertire gli 8 bit di MBR in un valore a 32 bitcon o senza segno viene determinato da quale dei due segnalidi controllo viene settato
24 / 101
![Page 25: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/25.jpg)
Microistruzioni
� Il controllo del datapathrichiede 29 segnali:
9 per controllare la scritturadei dati dal bus C ai registri
9 per controllare la scritturadei dati sul bus B dai registri
8 per il controllo dellefunzioni di ALU e shifter
2 per indicare gli accessi allamemoria (R/W) mediante iregistri MAR/MDR
1 per indicare il fetch dallamemoria mediante i registriPC/MBR
25 / 101
![Page 26: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/26.jpg)
Microistruzioni
� Il valore di questi 29 segnali di controllo speci�ca le operazioni diun ciclo del datapath
� Un ciclo consiste nel:
Copiare i valori dai registri sul bus B
Propagare i segnali lungo la ALU e lo shifter
Dirigerli sul bus C
Scrivere i risultati sul/i registro/i appropriato/i
26 / 101
![Page 27: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/27.jpg)
Microistruzioni
� Inoltre, se viene asserito un segnale di lettura dati dalla memoria,l'operazione di lettura viene avviata soltanto al termine del ciclo deldatapath, quando l'indirizzo è stato caricato sul registro MAR
� I dati della memoria sono disponibili al termine del ciclosuccessivo nel registro MBR o MDR e possono essere usati nelciclo ancora successivo
� Questo signi�ca che una lettura dalla memoria avviata al terminedel ciclo k produce dati che saranno disponibili soltanto nel ciclok + 2
27 / 101
![Page 28: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/28.jpg)
Microistruzioni
28 / 101
![Page 29: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/29.jpg)
Microistruzioni
Addr Contiene l'indirizzo di una potenziale prossimaistruzione
JAM Modalità di selezione della prossima istruzioneALU Selezione della funzione della ALU e dello shifterC Selezione dei registri sui quali copiare il contenuto del
bus CMem Selezione della funzione della memoriaB Selezione del registro dal quale scrivere sul bus B
29 / 101
![Page 30: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/30.jpg)
Mic-1
30 / 101
![Page 31: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/31.jpg)
Controllo delle microistruzioni
� Quali segnali di controllo debbano essere abilitati ad ogni cicloviene stabilito da un sequencer
� Si tratta di un dispositivo incaricato di far avanzare passo-passo lasequenza di istruzioni per l'esecuzione di ogni singola istruzione ISA
� Il sequencer deve produrre due tipi di informazione ad ogni ciclo:
Lo stato di ogni segnale di controllo nel sistema
L'indirizzo della prossima microistruzione da eseguire
31 / 101
![Page 32: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/32.jpg)
Memoria di controllo
� La memoria di controllo contiene l'intero microprogramma
� Si tratta di un dispositivo che contiene 512 parole, ognunaconsistenti di una microistruzione di 36 bit, aventi la struttura:
32 / 101
![Page 33: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/33.jpg)
Memoria di controllo
� La memoria di controllo ha bisogno di un registro di indirizzo edi un registro dei dati
MPC (MicroProgram Counter), anche se non si tratta di uncontatore perché le microistruzioni non possono esseredisposte in modo sequenziale
MIR (MicroInstruction Register), che contiene lamicroistruzione corrente i cui bit determinano i segnali dicontrollo che pilotano il datapath
33 / 101
![Page 34: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/34.jpg)
Mic-1
34 / 101
![Page 35: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/35.jpg)
Memoria di controlloCiclo delle operazioni
All'inizio di ogni ciclo di clock (sul fronte di discesa), MIRviene caricato dalla parola nella memoria di controllo puntatada MPC (tempo ∆w)Una volta che la microistruzione viene caricata in MIR, i varisegnali si propagano lungo il datapath: il contenuto di unregistro viene copiato sul bus B, la ALU sa quale operazionedeve essere eseguita
35 / 101
![Page 36: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/36.jpg)
Memoria di controlloCiclo delle operazioni /2
Il tempo necessario ad eseguire queste operazioni è indicato da∆x ; dopo un tempo ∆w + ∆x gli input della ALU sono stabili
Dopo un intervallo ∆y sono stabili gli output della ALU, delloshifter e dei valori di N e Z
36 / 101
![Page 37: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/37.jpg)
Memoria di controlloCiclo delle operazioni /3
I valori di N e Z vengono memorizzati in due memorie ad unbit (una coppia di �ip-�op)
Dopo un intervallo ∆z l'output dello shifter raggiunge i registrilungo il bus C
37 / 101
![Page 38: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/38.jpg)
Memoria di controlloCiclo delle operazioni /4
Parallelamente alla guida del datapath, il microprogrammadeve determinare la microistruzione successiva da eseguire (chenon è necessariamente quella che segue la microistruzionecorrente nella memoria di controllo)
Il calcolo dell'indirizzo della microistruzione successiva avvienedopo che MIR è stato caricato ed è stabile
Dapprima il campo NEXT_ADDRESS viene copiato in MPC
Successivamente viene esaminato il campo JAM: se contiene ilvalore 0 non è richiesto alcun intervento perché lamicroistruzione successiva sarà quella che segue lamicroistruzione corrente
38 / 101
![Page 39: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/39.jpg)
Memoria di controlloCiclo delle operazioni /5
Se invece uno o più dei bit di JAM sono settati a 1 si possonoveri�care diverse azioni
Se JAMN è settato, viene calcolato l'OR logico con il �ip-�opN
Analogamente, se JAMZ è settato, viene calcolato l'OR logicocon il �ip-�op Z
Se risultano settati entrambi, si calcola l'OR rispetto adentrambi
39 / 101
![Page 40: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/40.jpg)
Memoria di controlloCiclo delle operazioni /6
40 / 101
![Page 41: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/41.jpg)
Memoria di controlloCiclo delle operazioni /7
F = (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRESS
[8]
� MPC può assumere uno solo dei due possibili valori:NEXT_ADDRESS
NEXT_ADDRESS con il bit più signi�cativo in OR con 1
41 / 101
![Page 42: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/42.jpg)
Memoria di controlloCiclo delle operazioni /8
Quando tutti i bit di JAM valgono zero, l'indirizzo dellamicroistruzione successiva è semplicemente il numero a 9 bitnel campo NEXT_ADDRESS
Quando invece JAMN o JAMZ valgono 1, ci sono duepotenziali microistruzioni successive: NEXT_ADDRESSoppure NEXT_ADDRESS in OR con 0x100
42 / 101
![Page 43: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/43.jpg)
Memoria di controlloCiclo delle operazioni /9
Il terzo bit del campo JAM è JMPC
Se è settato, gli 8 bit di MBR vengono posti in OR (bit a bit)con gli 8 bit meno signi�cativi di NEXT_ADDRESS prelevatidalla microistruzione corrente; il risultato viene inviato a MPC
Il dispositivo indicato con �O� e�ettua un OR di MBR conNEXT_ADDRESS se JMPC vale 1, ma inviaNEXT_ADDRESS a MPC se JMPC vale zero
Questo permette di implementare una diramazione,speci�cando uno dei 256 possibili indirizzi
43 / 101
![Page 44: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/44.jpg)
Ciclo delle operazioni /10
44 / 101
![Page 45: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/45.jpg)
Stack
Praticamente tutti i linguaggi di programmazione supportano ilconcetto di procedura (con un insieme di variabili locali)
Queste variabili possono essere accedute soltanto dallaprocedura in cui sono de�nite e cessano di esistere al terminedella procedura
La gestione di queste variabili viene e�ettuata medianteun'area di memoria chiamata stack riservata alle variabili
Vi si accede mediante un registro chiamato LV che punta allabase delle variabili locali della procedura corrente, mentre ilregistro SP punta alla parola in cima allo stack (in e�etticontiene l'indirizzo di memoria della variabile il cui contenuto èstato copiato nello stack)
45 / 101
![Page 46: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/46.jpg)
Stack /2
46 / 101
![Page 47: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/47.jpg)
Stack /3
In Figura (a) viene invocata una procedura, chiamata A, cheistanzia tre variabili locali, a1, a2 e a3
Successivamente (Figura (b)), all'interno della procedura A èpresente l'invocazione alla procedura B, che istanzia quattrovariabili locali, b1, b2, b3 e b4
47 / 101
![Page 48: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/48.jpg)
Stack /4
In Figura (c), all'interno della procedura B viene invocata laprocedura C che provvede ad istanziare due variabili locali, c1 ec2
In�ne (Figura (d)), le procedure C e B hanno completato laloro esecuzione, le loro variabili locali sono state distrutte eall'interno della procedura A è stata invocata una nuovaprocedura, chiamata D, che ha provveduto ad istanziare levariabili locali d1, d2, d3, d4 e d5
48 / 101
![Page 49: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/49.jpg)
Stack /5Stack degli operandi
Oltre ad ospitare le variabili locali, lo stack contiene glioperandi delle espressioni aritmetiche
Si consideri ad esempio l'operazione a1 = a2 + a3
49 / 101
![Page 50: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/50.jpg)
Modello di memoria
� La memoria della macchina IJVM (4 GB) può essere consideratacome un array di 4.294.967.296 byte oppure come un array di1.073.741.824 parole di 4 byte
� Al livello ISA, la JVM non rende disponibile alcun indirizzo dimemoria assoluto, soltanto degli indirizzi impliciti che forniscono ilpunto di partenza per dei puntatori: è il caso, per esempio deipuntatori PC (Program Counter), il registro che contiene l'indirizzodell'istruzione successiva da eseguire
50 / 101
![Page 51: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/51.jpg)
Modello di memoria /2
� Sono de�nite le seguenti aree di memoria:
Constant pool (porzione costante): contiene costanti, stringhe,puntatori e non è modi�cabile (vi si può accedere soltanto inlettura)
Local variable frame (blocco delle variabili locali): contiene levariabili locali allocate al momento dell'invocazione di unaprocedura. Contiene anche i parametri con cui il metodo èstato invocato
Operand stack (stack degli operandi)
Method area (area dei metodi): contiene il programma. Ilregistro PC contiene l'indirizzo dell'istruzione successiva daprelevare
51 / 101
![Page 52: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/52.jpg)
Modello di memoria /3
52 / 101
![Page 53: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/53.jpg)
Insieme delle istruzioni IJVM
53 / 101
![Page 54: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/54.jpg)
Insieme delle istruzioni IJVM /2Esempio applicativo
54 / 101
![Page 55: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/55.jpg)
Insieme delle istruzioni IJVM /3
� Inserimento nello stack di una parola proveniente da:
porzione costante di memoria (LDC_W)
blocco variabili locali (ILOAD)
istruzione stessa (BIPUSH)
� Inserimento nel blocco delle variabili locali di una parolaproveniente da:
stack (ISTORE)
55 / 101
![Page 56: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/56.jpg)
Insieme delle istruzioni IJVM /4
� Operazioni logiche e aritmetiche:
IADD, ISUB
IAND, IOR
sugli operandi che si trovano in cima allo stack (il risultato vieneposto in cima allo stack, al posto della penultima parola)
� Operazioni per i salti:
GOTO (salto incondizionato)
IFEQ, IFLT, IF_ICMPEQ
modi�cano il valore di PC in base al valore di o�set
56 / 101
![Page 57: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/57.jpg)
Insieme delle istruzioni IJVM /5
� Operazioni sugli operandi in cima allo stack:
scambio di due parole (SWAP)
duplicazione di una parola (DUP)
rimozione di una parola (POP)
� Invocazione di un altro metodo:
INVOKEVIRTUAL [o�set]
� Terminazione di un metodo:
IRETURN
57 / 101
![Page 58: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/58.jpg)
Insieme delle istruzioni IJVMInvocazione di una procedura
La procedura chiamante carica sulla stack un riferimento allaprocedura chiamata (OBJREF)Successivamente, carica i parametri della proceduraA questo punto viene eseguita INVOKEVIRTUAL
58 / 101
![Page 59: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/59.jpg)
Insieme delle istruzioni IJVMInvocazione di una procedura /2
INVOKEVIRTUAL richiede un argomento, disp (displacement)che indica la posizione nel constant pool che contienel'indirizzo di inizio nell'area dei metodi per la procedurachiamata
In e�etti l'indirizzo iniziale nell'area dei metodi non coincidecon l'indirizzo del primo opcode della procedura
I primi due byte (interpretati come un intero a 16 bit) indicanoil numero di parametri della procedura
Altri due byte indicano la dimensione dell'area delle variabililocali della procedura chiamata (necessaria per ildimensionamento dello stack della procedura chiamata)
Il quinto byte dell'area dei metodi contiene il primo opcode daeseguire
59 / 101
![Page 60: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/60.jpg)
Insieme delle istruzioni IJVMInvocazione di una procedura /3
60 / 101
![Page 61: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/61.jpg)
Insieme delle istruzioni IJVMInvocazione di una procedura /4
Due informazioni fondamentali per il corretto funzionamentodi una procedura (chiamante o chiamata) sono contenute neiregistri PC e LV
E' necessario salvare lo stato di questi registri allo scopo diripristinare l'esecuzione della procedura chiamante (al terminedella procedura chiamata) e avere i corretti riferimenti nellostack
I primi quattro byte prelevati dall'area dei metodi dellaprocedura chiamata servono a calcolare la prima parola dimemoria libera dello stack può essere usata
A partire dalla prima parola libera dello stack vengono salvati icontenuti dei registri PC e LV della procedura chiamante (inquest'ordine)
61 / 101
![Page 62: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/62.jpg)
Insieme delle istruzioni IJVMInvocazione di una procedura /5
La parola precedentemente utilizzata per allocare OBJREFviene utilizzata per salvare un puntatore (link) alla parola checontiene il PC della procedura chiamante, e il suo indirizzoviene salvato nel registro LVA partire da adesso indica l'indirizzo iniziale dello stack dellaprocedura corrente 62 / 101
![Page 63: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/63.jpg)
Insieme delle istruzioni IJVMInvocazione di una procedura /6
Il valore di SP viene aggiornato alla parola dello stack checontiene il registro LV della procedura chiamante
Il valore di PC viene aggiornato al quinto byte dell'area deimetodi (prima vera istruzione della procedura chiamata)
63 / 101
![Page 64: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/64.jpg)
Insieme delle istruzioni IJVMRitorno da una procedura
64 / 101
![Page 65: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/65.jpg)
Insieme delle istruzioni IJVMRitorno da una procedura /2
L'istruzione IRETURN inverte le operazioni diINVOKEVIRTUALDealloca lo spazio utilizzato dalla procedura in rientroRipristina lo stack allo stato precedente l'invocazione dellaprocedura
65 / 101
![Page 66: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/66.jpg)
Insieme delle istruzioni IJVMRitorno da una procedura /3
IRETURN deve ripristinare i puntatori PC e LV al loro valoreoriginario
Questo viene e�ettuato accedendo al puntatore link
Il valore di ritorno (solitamente il risultato del calcolo eseguitonella procedura) viene copiato dalla cima dello stack alpuntatore link
Il registro SP viene aggiornato a puntare a questa locazione
Una volta ripristinato il valore originario di PC, l'esecuzioneprosegue con la prima istruzione successiva aINVOKEVIRTUAL
66 / 101
![Page 67: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/67.jpg)
Microistruzioni
Dopo la descrizione della microarchitettura e dellamacroarchitettura è la volta dell'implementazione
Ovvero, bisogna descrivere il programma che viene eseguitosulla microarchitettura e che interpreta la macroarchitettura
Le istruzioni potrebbero essere scritte in binario, 36 bit perparola
E' decisamente vantaggioso introdurre una notazione sintetica
In altre parole: l'elenco dei segnali che devono essere attivatiad ogni ciclo di clock viene sostituito con una istruzionesintetica che illustra l'operazione in corso
67 / 101
![Page 68: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/68.jpg)
Microistruzioni
Le microistruzioni vengono descritte mediante un linguaggio di�alto� livello, MAL (Micro Assembly Language), seguendo leconvenzioni:
� Una riga di codice indica tutte le attività che hanno luogodurante un ciclo di clock
� Durante ogni ciclo:
Un registro è collegato al bus B
Il registro H è collegato ad uno dei due ingressi della ALU
possono essere scritti uno o più registri ad opera del bus C
� L'operazione da eseguire viene indicata con il simbolo diassegnazione (=)
68 / 101
![Page 69: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/69.jpg)
Microistruzioni
Per esempio, in un ciclo si desidera incrementare il valore di SP einiziare una lettura
� L'istruzione corrispondente può essere scritta come:
SP = SP + 1; rd
69 / 101
![Page 70: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/70.jpg)
Microistruzioni
Operazioni fondamentali di MAL:
Assegnazione
Inizio lettura/scrittura da/in memoria
Istruzioni di salto
70 / 101
![Page 71: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/71.jpg)
Microistruzioni
71 / 101
![Page 72: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/72.jpg)
Microistruzioni
SOURCE può essere unoqualsiasi dei registri MDR, PC,MBR, MBRU, SP, LV, CPP,TOS, OPC
DEST può essere uno qualsiasidei registri MAR, MDR, PC,SP, LV, CPP, OPC, H
72 / 101
![Page 73: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/73.jpg)
MicroistruzioniOperazioni tipiche
MDR = SP (copia del contenuto di SP in MDR)
MDR = H + SP (addizione del contenuto di H e SP, scritturadella somma in MDR)
� Sono lecite soltanto le operazioni che possono essere realizzatetramite il percorso dati
� MDR = SP + MDR non è valida perché uno dei due operandideve essere contenuto nel registro H
73 / 101
![Page 74: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/74.jpg)
MicroistruzioniOperazioni tipiche
H = H � MDR non è valida perché H può contenere soltantoil sottraendo
H = MDR � H è valida
� Il risultato di un'operazione logica o aritmetica può essereassegnato a più registri:
SP = MDR = SP + 1
74 / 101
![Page 75: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/75.jpg)
MicroistruzioniOperazioni tipiche
L'inizio di un'operazione di lettura/scrittura si indica conrd/wr
Il prelievo di un byte si indica con fetch
Le due operazioni possono avveenire in modo simultaneo, malo stesso registro non può contenere dati provenienti dallamemoria e dal datapath nello stesso ciclo
Assegnazioni e operazioni in memoria possono svolgersidurante lo stesso ciclo, basta indicarle sulla stessa linea dicodice (per esempio, MAR = SP; rd)
Ogni istruzione contiene esplicitamente l'indirizzodell'istruzione seguente: di norma istruzioni consecutivevengono eseguite in sequenza (tranne che per le diramazioni)
75 / 101
![Page 76: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/76.jpg)
MicroistruzioniOperazioni tipiche
I salti incondizionati vengono indicati con la notazione gotolabel
I salti condizionati richiedono invece una notazione di�erenteperché dipendono dallo stato dei bit Z e/o N:
se Z = 1, l'output della ALU è zerose N = 1, l'output della ALU è negativo
I salti condizionati vengono e�ettuati se la parola in cima allostack è negativa oppure nulla. La veri�ca di ciò viene fattafacendo passare la parola dalla ALU: se negativa il bit Nrisulterà settato, così come verrà settato il bit Z se la parola ènulla
L'istruzione che veri�ca se una parola è zero è: Z = TOS
76 / 101
![Page 77: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/77.jpg)
MicroistruzioniOperazioni tipiche
� Un salto condizionato al valore di un generico registro R vienee�ettuato come:
Z = R; if (Z) goto label1 else goto label2
N = R, if (N) goto label1 else goto label2
Il risultato consiste nell'impostazione dei bit JAMZ oppure JAMN
77 / 101
![Page 78: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/78.jpg)
Microistruzioni
78 / 101
![Page 79: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/79.jpg)
Implementazione di IJVM con Mic-1IADD
� Sostituisce le due parole in cima allo stack con la loro somma
Main1 PC = PC + 1; fetch; goto (MBR)
iadd1 MAR = SP = SP - 1; rd
iadd2 H = TOS
iadd3 MDR = TOS = MDR + H; wr; goto Main1
79 / 101
![Page 80: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/80.jpg)
Implementazione di IJVM con Mic-1ISUB
� Sostituisce le due parole in cima allo stack con la loro di�erenza
Main1 PC = PC + 1; fetch; goto (MBR)
isub1 MAR = SP = SP - 1; rd
isub2 H = TOS
isub3 MDR = TOS = MDR - H; wr; goto Main1
80 / 101
![Page 81: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/81.jpg)
Implementazione di IJVM con Mic-1IAND
� Sostituisce le due parole in cima allo stack con il loro AND logico
Main1 PC = PC + 1; fetch; goto (MBR)
iand1 MAR = SP = SP - 1; rd
iand2 H = TOS
iand3 MDR = TOS = MDR and H; wr; goto Main1
81 / 101
![Page 82: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/82.jpg)
Implementazione di IJVM con Mic-1IOR
� Sostituisce le due parole in cima allo stack con il loro OR logico
Main1 PC = PC + 1; fetch; goto (MBR)
ior1 MAR = SP = SP - 1; rd
ior2 H = TOS
ior3 MDR = TOS = MDR or H; wr; goto Main1
82 / 101
![Page 83: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/83.jpg)
Implementazione di IJVM con Mic-1DUP
� Duplica la parola in cima allo stack
Main1 PC = PC + 1; fetch; goto (MBR)
idup1 MAR = SP = SP + 1
idup2 MDR = TOS; wr; goto Main1
83 / 101
![Page 84: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/84.jpg)
Implementazione di IJVM con Mic-1BIPUSH
� BIPUSH byte scrive byte in cima allo stack
Main1 PC = PC + 1; fetch; goto (MBR)
bipush1 SP = MAR = SP + 1
bipush2 PC = PC + 1; fetch
bipush3 MDR = TOS = MBR; wr; goto Main1
84 / 101
![Page 85: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/85.jpg)
Implementazione di IJVM con Mic-1ILOAD
� ILOAD o�set scrive in cima allo stack una variabile localememorizzata in o�set
Main1 PC = PC + 1; fetch; goto (MBR)
iload1 H = LV
iload2 MAR = MBRU + H; rd
iload3 MAR = SP = SP + 1
iload4 PC = PC + 1; fetch; wr
iload5 TOS = MDR; goto Main1
85 / 101
![Page 86: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/86.jpg)
Implementazione di IJVM con Mic-1ISTORE
� ISTORE o�set rimuove dalla cima dello stack una parola e lamemorizza nella locazione di memoria assegnata alla variabile localeindicata con o�set
Main1 PC = PC + 1; fetch; goto (MBR)
istore1 H = LV
istore2 MAR = MBRU + H
istore3 MDR = TOS; wr
istore4 SP = MAR = SP - 1; rd
istore5 PC = PC + 1; fetch
istore6 TOS = MDR; goto Main1
86 / 101
![Page 87: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/87.jpg)
Implementazione di IJVM con Mic-1POP
� POP rimuove la parola in cima allo stack
Main1 PC = PC + 1; fetch; goto (MBR)
pop1 MAR = SP = SP - 1; rd
pop2
pop3 TOS = MDR; goto Main1
87 / 101
![Page 88: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/88.jpg)
Implementazione di IJVM con Mic-1SWAP
� SWAP scambia tra loro le due parole in cima allo stack
Main1 PC = PC + 1; fetch; goto (MBR)
swap1 MAR = SP - 1; rd
swap2 MAR = SP
swap3 H = MDR; wr
swap4 MDR = TOS
swap5 MAR = SP - 1; wr
swap6 TOS = H; goto Main1
88 / 101
![Page 89: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/89.jpg)
Implementazione di IJVM con Mic-1IINC
� IINC varnum const incrementa di una quantità const il valoredella variabile di numero varnum
Main1 PC = PC + 1; fetch; goto (MBR)
iinc1 H = LV
iinc2 MAR = MBRU + H; rd
iinc3 PC = PC + 1; fetch
iinc4 H = MDR
iinc5 PC = PC + 1; fetch
iinc6 MDR = MBR + H; wr, goto Main1
89 / 101
![Page 90: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/90.jpg)
Implementazione di IJVM con Mic-1GOTO
� GOTO o�set e�ettua un salto incondizionato. Si noti che o�set èuna parola di 16 bit che viene prelevata in due operazioni successivedi fetch
Main1 PC = PC + 1; fetch; goto (MBR)
goto1 OPC = PC - 1
goto2 PC = PC + 1; fetch
goto3 H = MBR << 8
goto4 H = MBRU OR H
goto5 PC = OPC + H; fetch
goto6 goto Main1
90 / 101
![Page 91: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/91.jpg)
Implementazione di IJVM con Mic-1GOTO
91 / 101
![Page 92: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/92.jpg)
Implementazione di IJVM con Mic-1IFLT
� IFLT o�set e�ettua un salto a o�set se e solo se la parola in cimaallo stack risulta minore di zero
Main1 PC = PC + 1; fetch; goto (MBR)
iflt1 MAR = SP = SP - 1; rd
iflt2 OPC = TOS
iflt3 TOS = MDR
iflt4 N = OPC; if (N) goto T; else goto F
T OPC = PC - 1; goto goto2
F PC = PC + 1
F1 PC = PC + 1; fetch
F2 goto Main1
92 / 101
![Page 93: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/93.jpg)
Implementazione di IJVM con Mic-1IFEQ
� IFEQ o�set e�ettua un salto a o�set se e solo se la parola in cimaallo stack risulta uguale a zero
Main1 PC = PC + 1; fetch; goto (MBR)
ifeq1 MAR = SP = SP - 1; rd
ifeq2 OPC = TOS
ifeq3 TOS = MDR
ifeq4 Z = OPC; if (Z) goto T; else goto F
T OPC = PC - 1; goto goto2
F PC = PC + 1
F1 PC = PC + 1; fetch
F2 goto Main1
93 / 101
![Page 94: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/94.jpg)
Implementazione di IJVM con Mic-1IF_ICMPEQ
� IF_ICMPEQ o�set e�ettua un salto a o�set se e solo se le dueparole in cima allo stack risultano uguali
Main1 PC = PC + 1; fetch; goto (MBR)
if_icmpeq1 MAR = SP = SP - 1; rd
if_icmpeq2 MAR = SP = SP - 1
if_icmpeq3 H = MDR; rd
if_icmpeq4 OPC = TOS
if_icmpeq5 TOS = MDR
if_icmpeq6 Z = OPC - H; if (Z) goto T; else
goto F
T OPC = PC - 1; goto goto2
F PC = PC + 1
F1 PC = PC + 1; fetch
F2 goto Main194 / 101
![Page 95: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/95.jpg)
Progettazione del livello di microarchitettura /1
La progettazione di un livello di microarchitettura richiede lo studiodi molti aspetti:
Velocità
Costi
A�dabilità
Facilità di utilizzo
Consumi energetici
Dimensioni �siche
Alcuni di questi aspetti sono con�ittuali fra loro. La soluzionemigliore richiede pertanto l'adozione di soluzioni di compromesso,per esempio scegliendo un punto di equilibrio tra velocità e costi
95 / 101
![Page 96: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/96.jpg)
Progettazione del livello di microarchitettura /2
L'incremento della velocità di esecuzione può essere raggiuntomediante varie soluzioni:
Riduzione il numero di cicli di clock necessari per l'esecuzionedi un'istruzione
Sempli�cazione dell'organizzazione per ottenere un ciclo diclock più breve
Sovrapposizione dell'esecuzione di più istruzioni (pipelining)
96 / 101
![Page 97: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/97.jpg)
Progettazione del livello di microarchitettura /3
� Il numero di cicli di clock necessari per l'esecuzione di un insiemedi operazioni è noto come path length e può essere ridottomediante l'impiego di hardware specializzato
� Una possibilità consiste, per esempio, nell'adozione di unincrementatore (tecnicamente un sommatore con un operando �ssoa 1) che opera su PC, in modo da evitare che la ALU debbaprovvedere all'incremento di PC
� Il costo dovuto all'adozione di un nuovo sommatore non ripagaperò in termini di riduzione dei cicli di clock, in quanto in molteistruzioni insieme all'incremento di PC vengono eseguite operazionidi lettura
97 / 101
![Page 98: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/98.jpg)
Progettazione del livello di microarchitettura /4
� La riduzione dei cicli necessari per il fetch delle istruzioni richiedela sovrapposizione dell'esecuzione di più istruzioni
� La separazione dei circuiti predisposti al fetch delle istruzioni(porta verso la memoria e registri PC/MBR) è molto più e�cace sequest'unità viene resa indipendente dal datapath principale
� In questo modo il fetch del prossimo opcode (oppuredell'operando) può essere eseguito separatamente dal resto dellemicroistruzioni, eventualmente in modo asincrono rispetto al restodella CPU. In questo modo potrebbe essere possibile eseguire ilfetch di più operazioni in anticipo alla loro esecuzione
98 / 101
![Page 99: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/99.jpg)
Progettazione del livello di microarchitettura /5
� Una delle fasi più dispendiosa in molte istruzioni consiste adesempio nel fetch di un o�set a 16 bit, nella sua estensione e nellamemorizzazione nel registro H
� Una possibile soluzione consiste nell'aumentare la dimensionedella porta della memoria per portarla a 16 bit. Ma questo nonrisolve i problemi, in quanto la memoria è composta di parole di 32bit
� La soluzione più e�cace resta in conclusione la sovrapposizionedell'esecuzione delle istruzioni, che può consentire aumentisigni�cativi della velocità
99 / 101
![Page 100: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/100.jpg)
Progettazione del livello di microarchitettura /7Riduzione della lunghezza del percorso di esecuzione
� In Mic-1 il ciclo principale consiste in una microistruzione daeseguire all'inizio di ogni istruzione IJVM. In alcuni casi è possibilesovrapporla all'istruzione precedente
� Infatti, quando Main1 viene eseguito il codice operativo dainterpretare è già presente nel registro MBR (prelevato dalprecedente ciclo principale oppure durante l'esecuzionedell'istruzione precedente)
� In alcuni casi è possibile ridurre la microistruzione Main1 puòessere inserita nelle microistruzioni precedenti poiché alcuneistruzioni non sono completamente utilizzate
100 / 101
![Page 101: Giacomo Fiumara g umara@unimegiacomofiumara.altervista.org/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della](https://reader031.fdocument.pub/reader031/viewer/2022021810/5c67a11709d3f2c85f8c2a9d/html5/thumbnails/101.jpg)
Progettazione del livello di microarchitettura /8Riduzione della lunghezza del percorso di esecuzione
Versione originale
pop1 MAR = SP = SP - 1; rd
pop2
pop3 TOS = MDR; goto Main1
Main1 PC = PC + 1; fetch; goto (MBR)
Versione ottimizata
pop1 MAR = SP = SP - 1; rd
Main1.pop PC = PC + 1; fetch
pop3 TOS = MDR; goto (MBR)
101 / 101