101

Giacomo Fiumara g [email protected]/teaching/ade/lezioni/micro.pdf · ENB INVA INC Segnali di controllo dello shifter SLL8 SRA1 14/101. Datapath Input della

Embed Size (px)

Citation preview

Page 1: 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

Microarchitettura

Giacomo Fiumarag�[email protected]

Anno Accademico 2014-2015

1 / 101

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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