96
Livello di micro – architettura Architettura degli Elaboratori 06 – Livello di micro – architettura

Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Embed Size (px)

Citation preview

Page 1: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Livellodi

micro – architettura

Architettura degli Elaboratori 06 – Livello di micro – architettura

Page 2: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 2

06 – Livello di micro – architettura

Page 3: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 3

06 – Livello di micro – architettura

Introduzione

- il livello di micro – architettura implementa le funzioni del livello sovrastante (ISA)

- come livello ISA di riferimento si sceglie una parte della JVM (Java Virtual Machine), in particolare quella riferita ai numeri interi (IJVM)

- la micro – architettura contiene un microprogramma (registrato in una ROM) che preleva, decodifica ed esegue le istruzioni IJVM

- il microprogramma contiene variabili che rappresentano lo stato del computer (per esempio, il PC)

Page 4: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 4

06 – Livello di micro – architettura

- istruzione IJVM:- codice operativo (opcode)- istruzione- operando/i

- struttura del microprogramma:- ciclo infinito- la funzione da eseguire viene determinata ed eseguita

Page 5: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 5

06 – Livello di micro – architettura

ALU

Page 6: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 6

06 – Livello di micro – architettura

Percorso dati

Page 7: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 7

06 – Livello di micro – architettura

Percorso dati

Page 8: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 8

06 – Livello di micro – architettura

Percorso dati

Segnali di controllo della ALU:- F0- F1- ENA- ENB- INVA- INC

Segnali di controllo dello shifter:- SLL8- SRA1

Page 9: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 9

06 – Livello di micro – architettura

Percorso dati

Valori di input della ALU- contenuto di H- proveniente dal bus B

La lettura/scrittura dello stesso registro può essere effettuata durante lo stesso ciclo.

Incremento di SP:- valore di SP sul bus B- disattivare l'input sinistro ALU- attivare il segnale INC- memorizzare il risultato in SP

Page 10: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 10

06 – Livello di micro – architettura

Percorso dati: temporizzazione

Page 11: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 11

06 – Livello di micro – architettura

Operazioni della memoria2 porte di comunicazione con la memoria:- porta a 32 bit

controllata dai registri MAR e MDR

- porta a 8 bitcontrollata dal registro PC che legge il byte meno significativo di MBR

Indirizzi:MAR (parole)PC (byte)

Page 12: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 12

06 – Livello di micro – architettura

Operazioni della memoriaMAR/MDR:lettura – scrittura parole di dati

PC/MBR:lettura programma eseguibile

- i 2 bit più significativi di MAR vengono scartati (4 GB max)

- MBR può contenere istruzioni o dati (da estendere da 8 a 32 bit, con segno o meno)

Page 13: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 13

06 – Livello di micro – architettura

Microistruzioni29 segnali:- 9 scrittura dati dal bus C- 9 scrittura sul bus B- 8 funzioni ALU + shifter- 2 per leggere/scrivere

mediante MAR/MDR- 1 per leggere e poi scrivere

su PC/MBR

In caso di accesso alla memoria:- caricamento di MAR- dati scritti su MBR o MDR- dati utilizzabili

Page 14: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 14

06 – Livello di micro – architettura

Microistruzioni- scrittura sul bus B:

9 possibili registri(cioè 4 bit per la codifica)

Page 15: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 15

06 – Livello di micro – architettura

Microistruzioni

Addr indirizzo di una potenziale successiva microistruzioneJAM come viene selezionata la prossima microistruzioneALU seleziona la funzione della ALU + shifterC seleziona quali registri vengono scritti dal bus CMem seleziona la funzione della memoriaB selezione la sorgente del bus B

Page 16: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 16

06 – Livello di micro – architettura

Mic-1

Page 17: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 17

06 – Livello di micro – architettura

Mic-1

- memoria centrale

- memoria di controllo:MPC (MicroProgram Counter)MIR (MicroIstruction Register)

Page 18: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 18

06 – Livello di micro – architettura

Mic-1

- la parola contenuta nella memoria di controllo puntata daMPC viene trasferita in MIR

- i segnali si propagano nel percorso dati:- il contenuto di un registro

viene inserito nel bus B- la ALU “sa” quale operazione

Svolgere

- gli output di N e Z vengono memorizzati in una coppia di flip-flop- L'output della ALU viene trasferita nello shifter

- l'output dello shifter giunge ai registri mediante il bus C

Page 19: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 19

06 – Livello di micro – architettura

Mic-1

- prossima istruzione:- i 9 bit del campo

NEXT_ADDRESS vengonocopiati in MPC

- viene controllato il valore di JAM (JMPC + JAMN + JAMZ):- se vale 000 nessuna

operazione è necessaria;- se JAMZ e/o JAMN sono

settati, si calcola OR con Z e/o N (ordinatamente)

F = (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRESS[8]

Page 20: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 20

06 – Livello di micro – architettura

Mic-1

F = (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRESS[8]

Page 21: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 21

06 – Livello di micro – architettura

Stack

- in (quasi) tutti i linguaggi di programmazione sono definite le procedure (subroutine, metodi, funzioni, … ), ognuna con un insieme di variabili locali

- le variabili locali hanno visibilità (scope) limitata alla durata dell'esecuzione della procedura

- dove (e come) memorizzare queste variabili?

- viene utilizzata una porzione di memoria detta stack, al cui interno NON si utilizzano indirizzi assoluti di memoria per le variabili.

Page 22: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 22

06 – Livello di micro – architettura

Stack

- vengono utilizzati i registri SP (Stack Pointer) e LV (Local Variables Block)

Page 23: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 23

06 – Livello di micro – architettura

Stack (degli operandi)

a1 = a2 + a3

Page 24: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 24

06 – Livello di micro – architettura

Modello della memoria di IJVM

La memoria di IJVM si compone di:

- porzione costante di memoriaContiene costanti, stringhe, puntatori ad altre aree di memoriaRegistro CPP (indirizzo della prima parola)

- blocco delle variabili localiUtilizzata per le variabili locali invocate da ogni metodoRegistro LV (punta alla prima locazione, parola, del blocco delle

variabili locali)

Page 25: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 25

06 – Livello di micro – architettura

Modello della memoria di IJVM

- stack degli operandiRegistro SP (indirizzo della parola in cima allo stack, si aggiorna

durante l'esecuzione)

- area dei metodiContiene il programmaRegistro PC (indirizzo della prossima istruzione, in byte)

Page 26: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 26

06 – Livello di micro – architettura

Modello della memoria di IJVM

Page 27: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 27

06 – Livello di micro – architettura

MAR/MDR:Lettura/scrittura parole di dati dal livello ISA

PC/MBR:Lettura di istruzioni dal livello ISA

Page 28: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 28

06 – Livello di micro – architettura

● Un'operazione di lettura dalla memoria inizia alla fine del ciclo di clock, quando MAR (o PC) vengono caricati

● se l'operazione di lettura/scrittura richiede un ciclo di clock, i dati saranno disponibili alla fine del ciclo seguente e utilizzabili al ciclo ancora successivo

● pertanto, una lettura che inizia alla fine del ciclo i fornisce dati utilizzabili al ciclo i + 2

Page 29: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 29

06 – Livello di micro – architettura

● L'indirizzo della memoria di controllo contenuto in MPC viene letto e caricato in MIR

● I segnali si propagano da MIR verso il datapath e il registro selezionato viene caricato nel bus B

● ALU e shifter elaborano e producono un risultato stabile

● Il bus C e i registri di memoria diventano stabili

● In corrispondenza al fronte di salita del clock, i registri e i flip-flop N e Z vengono caricati

● Appena i registri e i flip-flop sono stabili si carica MPC con la nuova istruzione

Page 30: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 30

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

Page 31: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 31

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM: esempio applicativo

Page 32: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 32

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

BIPUSH bytescrive un byte in cima allo stackDUPlegge la parola in cima allo stack e la inserisce in cima allo stackILOAD varnumscrive una variabile locale, proveniente dal blocco delle variabili locali, in cima allo stackLDC_W indexscrive in cima allo stack una costante proveniente dalla porzione costante di memoriaISTORE varnumpreleva una parola dalla cima dello stack e la memorizza in una variabile locale nel blocco delle variabili localiPOPrimuove la parola di memoria posta in cima allo stack

Page 33: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 33

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

IADDsostituisce le due parole in cima allo stack con la loro somma

IANDsostituisce le due parole in cima allo stack con il loro AND logico

IINC varnum constaggiunge const ad una variabile locale nel blocco delle variabili locali

IORsostituisce le due parole in cima allo stack con il loro OR logico

ISUBsostituisce le due parole in cima allo stack con la loro differenza

Page 34: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 34

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

GOTO offsetdiramazione incondizionata

IFEQ offsetestrae una parola in cima allo stack ed effettua una diramazione se vale zero

IFLT offsetestrae una parola in cima allo stack ed effettua una diramazione se ha un valore negativo

IF_ICMPEQ offsetestrae due parole dalla cima dello stack ed effettua una diramazione se sono uguali

Page 35: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 35

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

NOPNessuna operazione

SWAPScambio di due parole poste in cima allo stack

WIDEPrefisso per indicare che l'istruzione successiva ha un indice a 16 bit

Page 36: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 36

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

- Inserimento nello stack di una parola proveniente da:- porzione costante di memoria (LDC_W)- blocco variabili locali (ILOAD)- istruzione stessa (BIPUSH)

- Inserimento nel blocco variabili locali di una parola proveniente da:- stack (ISTORE)

- Operazioni aritmetiche e logiche:- IADD, ISUB- IAND, IORsugli operandi che si trovano in cima allo stack (il risultato viene

posto in cima allo stack)

Page 37: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 37

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

- Operazioni per i salti:- GOTO (salto incondizionato)- IFEQ, IFLT, IF_ICMPEQmodificano il valore di PC in base al valore dello spiazzamento

- Operazioni sugli operandi in cima allo stack:- scambio di due parole (SWAP)- duplicazione di una parola (DUP)- rimozione di una parola (POP)

Page 38: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 38

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

- Invocazione di un altro metodo:- INVOKEVIRTUAL disp

- Terminazione di un altro metodo:- IRETURN

Nella simulazione IJVM le invocazioni ad altri metodi vengono viste equivalenti alle CALL di (quasi) tutti i linguaggi di programmazione.

Page 39: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 39

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM: invocazione di un metodo

Page 40: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 40

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM: invocazione di un metodo

L'istruzione INVOKEVIRTUAL contiene l'indirizzo dell'area dei metodi del metodo invocato. I primi 4 byte dell'area del codice del metodo contengono:- 2 byte (intero a 16 bit) numero dei parametri del metodo- 2 byte (intero a 16 bit) dimensione del blocco delle variabili

locali del metodo

- 5° byte codice operativo della prima istruzione da eseguire

Page 41: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 41

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM: ritorno da un metodo

Page 42: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 42

06 – Livello di micro – architettura

Microistruzioni

- descrizione delle microistruzioni di Mic-1 che implementano IJVM

- elenco delle 512 parole da 36 bit (contenuto della memoria di controllo)

- meglio: elenco dei segnali che devono essere attivati durante ogni ciclo di clock.

- notazione: su una singola linea il codice di tutte le attività che avvengono durante un ciclo di clock

Page 43: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 43

06 – Livello di micro – architettura

Microistruzioni

Le microistruzioni vengono descritte mediante un linguaggio di “alto” livello, MAL (Micro Assembly Language):

- una riga di codice indica tutte le attività che hanno luogo durante 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

- l'operazione da eseguire viene indicata con il costrutto di assegnazione (=)

Page 44: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 44

06 – Livello di micro – architettura

Microistruzioni

Operazioni fondamentali di MAL:- assegnazione- inizio lettura / scrittura da / in memoria- istruzione di salto (goto)

Page 45: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 45

06 – Livello di micro – architettura

Microistruzioni

Operazioni consentite:

Page 46: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 46

06 – Livello di micro – architettura

Microistruzioni

Operazioni tipiche:

- MDR = SP (copia del contenuto di SP in MDR)

- MDR = H + SP (addizione del contenuto di H e SP, scrittura della somma in MDR)

- Sono lecite soltanto le operazioni che possono essere realizzate tramite il percorso dati

- MDR = SP + MDR NON è valida perché uno dei due operandi deve essere il registro H

Page 47: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 47

06 – Livello di micro – architettura

Microistruzioni

Operazioni tipiche:

- H = H – MDR NON è valida perché H può contenere soltanto il sottraendo

- H = MDR – H E' valida

- il risultato di un'operazione logica o aritmetica può essere assegnato a più registri:- SP = MDR = SP + 1

Page 48: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 48

06 – Livello di micro – architettura

Microistruzioni

- Inizio di un'operazione di lettura/scrittura: rd / wr

- Prelievo di 1 byte (PC/MBR): fetch

- Le due operazioni possono avvenire in modo simultaneo, ma lo stesso registro non può contenere dati provenienti dalla memoria e dal percorso dati durante lo stesso ciclo

- Assegnazioni ed operazioni in memoria possono svolgersi durante lo stesso ciclo, basta indicarle sulla stessa linea di codice:

- MAR = SP; rd

- Ogni istruzione contiene esplicitamente l'indirizzo dell'istruzione seguente: di norma istruzioni consecutive vengono eseguite in sequenza (tranne che per le diramazioni!!!)

Page 49: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 49

06 – Livello di micro – architettura

Microistruzioni

- i salti incondizionati vengono indicati con la notazione:goto label

- i salti condizionali richiedono una notazione differente:

- se Z = 1 l'output della ALU è nullo- se N = 1 l'output della ALU è negativo

- il valore di un (generico) registro R per verificarne il valore richiede che:

- Z = R oppure che N = RIn questo modo il contenuto di R viene fatto passare attraverso la ALU per impostare i flip-flop Z o N (senza modificare alcun registro)

Page 50: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 50

06 – Livello di micro – architettura

Microistruzioni

- un salto condizionato al valore del registro R viene effettuato come:

- Z = R; if (Z) goto label1 else goto label2

- N = R; if (N) goto label1 else goto label2

Si ottiene come risultato di impostare JAMZ o JAMN. I valori label1 e label2 differiscono soltanto per il bit più significativo:

Page 51: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 51

06 – Livello di micro – architettura

Microistruzioni

Per utilizzare il bit JMPC si utilizza la notazione:

- goto (MBR OR valore)

In cui si indica al micro - assemblatore di:

- utilizzare valore come NEXT_ADDRESS

- impostare JMPC in modo che in MPC venga calcolato l'OR logico tra MBR e NEXT_ADDRESS

Page 52: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 52

06 – Livello di micro – architettura

Interpretazione di IJVM con Mic-1

- un'istruzione IJVM è interpretata da una sequenza di microistruzioni

- microistruzioni consecutive non sono necessariamente memorizzate in modo consecutivo nella memoria di controllo

- il micro – assemblatore collega le istruzioni mediante NEXT_ADDRESS

- ogni sequenza inizia all'indirizzo corrispondente al valore numerico dell'opcode IJVM che interpreta

Page 53: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 53

06 – Livello di micro – architettura

Interpretazione di IJVM con Mic-1

- l'interprete è composto da 112 microistruzioni

- vengono utilizzati 10 registri

- TOS contiene il valore puntato da SP

- OPC è un registro temporaneo

- l'interprete realizza un ciclo principale che si occupa di prelevare ed eseguire le istruzioni IJVM:Main1 PC = PC + 1; fetch; goto (MBR)

Page 54: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 54

06 – Livello di micro – architettura

Insieme delle istruzioni IJVM

Page 55: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 55

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IADD

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

Page 56: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 56

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

ISUB

Sostituisce le due parole in cima allo stack con la loro differenza

- Main1 PC = PC + 1; fetch; goto (MBR)

- isub1 MAR = SP = SP – 1; rd

- isub2 H = TOS

- isub3 MDR = TOS = MDR - H; wr; goto Main1

Page 57: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 57

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IAND

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

Page 58: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 58

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

DUP

Replica la parola in cima allo stack

- idup1 MAR = SP = SP + 1

- idup2 MDR = TOS; wr; goto Main1

Page 59: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 59

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

BIPUSH

Bipush byte scrive byte in cima allo stack

- bipush1 SP = MAR = SP + 1

- bipush2 PC = PC + 1; fetch

- bipush3 MDR = TOS = MBR; wr; goto Main1

Page 60: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 60

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

ILOAD

Iload offset scrive in cima allo stack una variabile locale in offset

- iload1 H = LV

- iload2 MAR = MBRU + H; rd

- iload3 MAR = SP = SP + 1

- iload4 PC = PC + 1; fetch; wr

- iload5 TOS = MDR; goto Main1

Page 61: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 61

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

POP

pop rimuove la parola dalla cima dello stack

- pop1 MAR = SP = SP – 1; rd

- pop2

- pop3 TOS = MDR; goto Main1

Page 62: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 62

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

WIDE ILOAD

ILOAD prevede che offset abbia 8 bit

- è possibile accedere soltanto a 256 variabili locali

- per accedere alle altre (eventuali variabili) si utilizza un opcode speciale, WIDE

- WIDE ILOAD specifica che offset è di 16 bit

Page 63: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 63

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

WIDE ILOAD

wide1 PC = PC + 1; fetch

wide2 goto (MBR OR 0x100)

In wide1 si incrementa PC per mettere il primo byte in MBR

In wide2 si esegue un secondo salto usando l'opcode contenuto in MBR (0x15, ILOAD)

L'interpretazione di WIDE ILOAD inizia a 0x115

Page 64: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 64

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

WIDE ILOAD

wide_iload1 PC = PC + 1; fetch

wide_iload2 H = MBRU << 8

wide_iload3 H = MBRU OR H

wide_iload4 MAR = LV + H; rd; goto iload3

iload3 MAR = SP = SP + 1

iload4 PC = PC + 1; fetch; wr

iload5 TOS = MDR; goto Main1

Page 65: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 65

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

GOTO

GOTO offset esegue una diramazione incondizionata in modo che la prossima istruzione da eseguire sia quella che si trova nell'indirizzo che si ottiene dalla somma di offset (16 bit) all'opcode del salto.

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

Page 66: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 66

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

GOTO

Page 67: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 67

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IFLT

IFLT offset estrae una parola dalla cima dello stack ed esegue una diramazione se ha valore negativo

iflt1 MAR = SP = SP – 1; rdiflt2 OPC = TOSiflt3 TOS = MDRiflt4 N = OPC; if (N) goto T else goto FT OPC = PC – 1; goto goto2F PC = PC + 1; F2 PC = PC + 1; fetchF3 goto Main1

Page 68: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 68

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IFEQ

IFEQ offset estrae una parola dalla cima dello stack ed esegue una diramazione se ha valore zero

ifeq1 MAR = SP = SP – 1; rdifeq2 OPC = TOSifeq3 TOS = MDRifeq4 Z = OPC; if (Z) goto T else goto FT OPC = PC – 1; goto goto2F PC = PC + 1; F2 PC = PC + 1; fetchF3 goto Main1

Page 69: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 69

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IF_ICMPEQ

IF_ICMPEQ offset estrae le due parole dalla cima dello stack ed esegue una diramazione se sono uguali

if_icmpeq1 MAR = SP = SP – 1; rdif_icmpeq2 MAR = SP = SP – 1if_icmpeq3 H = MDR; rdif_icmpeq4 OPC = TOSif_icmpeq5 TOS = MDRif_icmpeq6 Z = OPC - H; if (Z) goto T else goto FT OPC = PC – 1; goto goto2F PC = PC + 1; F2 PC = PC + 1; fetchF3 goto Main1

Page 70: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 70

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

INVOKEVIRTUAL

Page 71: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 71

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

INVOKEVIRTUAL

Invokevirtual disp

- puntatore all'oggetto da chiamare (OBJREF)

- inserimento sullo stack dei parametri del metodo

- disp (16 bit) per indicare l'indirizzo dell'area dei metodi in cui si trova il metodo da invocare

- i primi 4 byte del metodo contengono:- 1 intero 16 bit (numero di parametri del metodo)- 1 intero 16 bit (dimensione blocco variabili del metodo invocato)

Page 72: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 72

06 – Livello di micro – architettura

invokevirtual1 PC = PC + 1; fetchinvokevirtual2 H = MBRU << 8invokevirtual3 H = MBRU OR Hinvokevirtual4 MAR = CPP + H; rdinvokevirtual5 OPC = PC + 1invokevirtual6 PC = MDR; fetchinvokevirtual7 PC = PC + 1; fetchinvokevirtual8 H = MBRU << 8invokevirtual9 H = MBRU OR Hinvokevirtual10 PC = PC + 1; fetchinvokevirtual11 TOS = SP – Hinvokevirtual12 TOS = MAR = TOS + 1invokevirtual13 PC = PC + 1; fetchinvokevirtual14 H = MBRU << 8invokevirtual15 H = MBRU OR Hinvokevirtual16 MDR = SP + H + 1; wrinvokevirtual17 MAR = SP = MDRinvokevirtual18 MDR = OPC; wr Sinvokevirtual19 MAR = SP = SP + 1invokevirtual20 MDR = LV; wrinvokevirtual21 PC = PC + 1; fetchinvokevirtual22 LV = TOS; goto Main1

Page 73: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 73

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IRETURN

Page 74: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 74

06 – Livello di micro – architettura

Implementazione di IJVM con Mic-1

IRETURN

ireturn1 MAR = SP = LV; rdireturn2ireturn3 LV = MAR = MDR; rdireturn4 MAR = LV + 1ireturn5 PC = MDR; rd; fetchireturn6 MAR = SPireturn7 LV = MDRireturn8 MDR = TOS; wr; goto Main1

Page 75: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 75

06 – Livello di micro – architettura

Progettazione del livello di micro - architettura

La progettazione di un livello di micro-architettura richiede lo studio di molti aspetti:- velocità- costi- affidabilità- facilità di utilizzo- consumi energetici- dimensioni fisiche

Alcuni di questi aspetti sono conflittuali e pertanto la soluzione migliore richiede l'adozione di compromessi, per esempio scegliendo un punto di equilibrio tra velocità e costi

Page 76: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 76

06 – Livello di micro – architettura

Progettazione del livello di micro - architettura

Gli approcci che normalmente si possono seguire per incrementare la velocità di esecuzione sono:- ridurre la lunghezza del percorso dati- semplificare l'organizzazione per ottenere un ciclo di clock più breve- sovrapporre l'esecuzione di più istruzioni (pipelining)

La conseguenza è, spesso, l'aggiunta di nuovi componenti. Con le conseguenze che:- lo spazio sul chip è limitato- il costo di un componente dipende dall'area occupata- i componenti più veloci occupano più spazio

Page 77: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 77

06 – Livello di micro – architettura

Progettazione del livello di micro - architettura

E' possibile, per esempio, lavorare sul numero delle linee degli indirizzi:

- un aumento del numero delle linee comporta migliori prestazioni

- l'impiego di un decoder per la riduzione del numero delle linee degli indirizzi comporta maggiori economie

Page 78: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 78

06 – Livello di micro – architettura

Riduzione della lunghezza del percorso

Sono possibili tre tecniche:

- sovrapporre l'esecuzione di Main1 all'esecuzione di una delle ultime micro – istruzioni di ogni istruzione IJVM

Si consideri per esempio l'istruzione POP

Page 79: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 79

06 – Livello di micro – architettura

Riduzione della lunghezza del percorso

- pop1 MAR = SP = SP – 1; rd- pop2- pop3 TOS = MDR; goto Main1- Main1 PC = PC + 1; fetch; goto (MBR)

Può diventare:

- pop1 MAR = SP = SP – 1; rd- Main1 PC = PC + 1; fetch; goto (MBR)- pop3 TOS = MDR; goto Main1

Con la conseguente riduzione del numero di istruzioni da 4 a 3 (e con gli stessi rusultati finali!!!)

Page 80: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 80

06 – Livello di micro – architettura

Riduzione della lunghezza del percorso

Seconda tecnica:- utilizzare due bus di input (A e B) per la ALU, adottando un'architettura a 3 bus

- si possono sommare due registri qualsiasi in un ciclo

- Per esempio:iload1 H = LViload2 MAR = MBRU + H; rdiload3 MAR = SP = SP + 1iload4 PC = PC + 1; fetch; wriload5 TOS = MDR; goto Main1Main1 PC = PC + 1; fetch; goto (MBR)

Page 81: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 81

06 – Livello di micro – architettura

Riduzione della lunghezza del percorso

iload1 H = LViload2 MAR = MBRU + H; rdiload3 MAR = SP = SP + 1iload4 PC = PC + 1; fetch; wriload5 TOS = MDR; goto Main1Main1 PC = PC + 1; fetch; goto (MBR)

Diventa:

iload1 MAR = MBRU + LV; rdiload2 MAR = SP = SP + 1iload3 PC = PC + 1; fetch; wriload4 TOS = MDRiload5 PC = PC + 1; fetch; goto (MBR)

Page 82: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 82

06 – Livello di micro – architettura

Riduzione della lunghezza del percorso

Entrambe le tecniche sono valide, ma un miglioramento delle prestazioni può essere ottenuto soltanto riprogettando la fase di fetch degli operandi

- se un'istruzione contiene operandi, questi devono essere prelevati un byte per volta e assemblati prima del loro utilizzo- per prelevare un operando si impegna l'ALU per un ciclo soltanto per incrementare PC e assemblare l'offset

- in Mic-1, gran parte del lavoro dell'ALU può essere eliminato mediante una struttura dedicata, IFU (Instruction Fetch Unit) che:

- incrementa il PC (incrementa e NON somma)- preleva istruzioni e operandi dalla memoria

Page 83: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 83

06 – Livello di micro – architettura

Instruction Fetch Unit

Tramite l'IFU, il registro MBR a 8 bit viene sostituito da:

- MBR1 a 8 bit- rende disponibile il byte successivo- preleva e memorizza il byte successivo quando viene letto il contenuto corrente- ha due interfacce con il bus B: MBR1 e MBR1U

- MBR2 a 16 bit- svolge le stesse funzioni di MBR1 memorizzando i successivi 2 byte- presenta due interfacce con il bus B: MBR2 e MBR2U

Page 84: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 84

06 – Livello di micro – architettura

Instruction Fetch Unit

Page 85: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 85

06 – Livello di micro – architettura

Instruction Fetch Unit

- quando viene letto MBR1 sul bus B, lo shifter trasla a destra di 1 byte e carica MBR1

- quando viene letto MBR2 sul bus B, lo shifter trasla a destra di 2 byte e carica MBR2

- dopo lo shift, l'IFU inizia un nuovo ciclo di lettura per caricare i registri

Page 86: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 86

06 – Livello di micro – architettura

Instruction Fetch Unit

- l'IFU ha un proprio registro IMAR per indirizzare la porzione di memoria da leggere

- IMAR e PC possiedono degli incrementatori, per eliminare l'uso dell'ALU

- l'ALU modifica il registro PC soltanto per le istruzioni INVOKEVIRTUAL e IRETURN, e per le diramazioni

Page 87: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 87

06 – Livello di micro – architettura

Instruction Fetch Unit

- quando PC viene modificato dall'ALU, il nuovo valore viene copiato in IMAR

- il microprogramma non aggiorna più PC, quindi il compito viene delegato all'IFU

- quando vengono letti MBR1 o MBR2, PC viene incrementato dal proprio incrementatore

- PC contiene così l'indirizzo del primo byte non ancora utilizzato

Page 88: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 88

06 – Livello di micro – architettura

Mic-2

Page 89: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 89

06 – Livello di micro – architettura

Mic-2

L'IFU permette di:

- evitare Main1

- risparmiare ALU per l'incremento di PC

- ridurre la lunghezza del percorso quando viene calcolato un offset a 16 bit

Page 90: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 90

06 – Livello di micro – architettura

Mic-2

iload1 H = LViload2 MAR = MBRU + H; rdiload3 MAR = SP = SP + 1iload4 PC = PC + 1; fetch; wriload5 TOS = MDR; goto Main1Main1 PC = PC + 1; fetch; goto (MBR)

Diventa quindi:

iload1 MAR = LV + MBR1U; rdiload2 MAR = SP = SP + 1iload3 TOS = MDR; wr; goto (MBR1)

Page 91: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 91

06 – Livello di micro – architettura

Architettura a pipeline

- Mic-2 può essere migliorata introducendo un livello di parallelismo nell'architettura

- Il ciclo di clock del percorso dati è condizionato dal tempo necessario affinché i segnali si propaghino lungo il percorso

- Il ciclo è composto da tre elementi:- il tempo per portare i registri selezionati sui bus A e B- il tempo di elaborazione (ALU + shifter)- il tempo di trasferimento dei risultati sui registri

Page 92: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 92

06 – Livello di micro – architettura

Architettura a pipeline

Se il percorso dati viene diviso in tre parti è possibile:

- ridurre il ritardo massimo, quindi accelerare il clock- utilizzare tutte le parti durante ogni ciclo (aumento della

larghezza di banda del processore)

Infatti:

- durante i trasferimenti da/verso i registri l'ALU è inattiva- dividendo il percorso in tre parti, è possibile utilizzare l'ALU

durante ogni ciclo, triplicando la quantità di lavoro eseguito

Page 93: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 93

06 – Livello di micro – architettura

Mic-3

- oltre all'IFU sono presenti 3 latch (registri)

- i registri sono scritti a ogni ciclo

- il percorso dati viene diviso in tre parti che possono funzionare indipendentemente

Page 94: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 94

06 – Livello di micro – architettura

Mic-3

Page 95: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 95

06 – Livello di micro – architettura

Mic-4

Page 96: Livello di micro – architetturagiacomofiumara.altervista.org/.../06-livello-microarchitettura.pdf · Architettura degli Elaboratori Pagina 3 06 – Livello di micro – architettura

Architettura degli Elaboratori

Pagina 96

06 – Livello di micro – architettura

Mic-4