Livello di micro – architettura

Transcript

Livello di micro – architettura
Architettura degli Elaboratori
06 – Livello di micro – architettura
Livello
di
micro – architettura
Architettura degli Elaboratori
06 – Livello di micro – architettura
Pagina 2
Architettura degli Elaboratori
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)
Pagina 3
Architettura degli Elaboratori
-
istruzione IJVM:
-
06 – Livello di micro – architettura
codice operativo (opcode)
istruzione
operando/i
struttura del microprogramma:
- ciclo infinito
- la funzione da eseguire viene determinata ed eseguita
Pagina 4
Architettura degli Elaboratori
06 – Livello di micro – architettura
ALU
Pagina 5
Architettura degli Elaboratori
06 – Livello di micro – architettura
Percorso dati
Pagina 6
Architettura degli Elaboratori
06 – Livello di micro – architettura
Percorso dati
Pagina 7
Architettura degli Elaboratori
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
Pagina 8
Architettura degli Elaboratori
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
Pagina 9
Architettura degli Elaboratori
06 – Livello di micro – architettura
Percorso dati: temporizzazione
Pagina 10
Architettura degli Elaboratori
Operazioni della memoria
06 – Livello di micro – architettura
2 porte di comunicazione con la
memoria:
- porta a 32 bit
controllata dai registri MAR
e MDR
-
porta a 8 bit
controllata dal registro PC
che legge il byte meno
significativo di MBR
Indirizzi:
MAR
PC
(parole)
(byte)
Pagina 11
Architettura degli Elaboratori
Operazioni della memoria
06 – Livello di micro – architettura
MAR/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)
Pagina 12
Architettura degli Elaboratori
Microistruzioni
06 – Livello di micro – architettura
29 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
Pagina 13
Architettura degli Elaboratori
Microistruzioni
06 – Livello di micro – architettura
-
scrittura sul bus B:
9 possibili registri
(cioè 4 bit per la codifica)
Pagina 14
Architettura degli Elaboratori
06 – Livello di micro – architettura
Microistruzioni
Addr
JAM
ALU
C
Mem
B
indirizzo di una potenziale successiva microistruzione
come viene selezionata la prossima microistruzione
seleziona la funzione della ALU + shifter
seleziona quali registri vengono scritti dal bus C
seleziona la funzione della memoria
selezione la sorgente del bus B
Pagina 15
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-1
Pagina 16
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-1
-
memoria centrale
-
memoria di controllo:
MPC (MicroProgram Counter)
MIR (MicroIstruction Register)
Pagina 17
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-1
-
la parola contenuta nella
memoria di controllo puntata da
MPC 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
Pagina 18
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-1
-
prossima istruzione:
- i 9 bit del campo
NEXT_ADDRESS vengono
copiati 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]
Pagina 19
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-1
F = (JAMZ AND Z) OR
(JAMN AND N) OR
NEXT_ADDRESS[8]
Pagina 20
Architettura degli Elaboratori
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.
Pagina 21
Architettura degli Elaboratori
06 – Livello di micro – architettura
Stack
- vengono utilizzati i registri SP (Stack Pointer) e LV (Local Variables
Block)
Pagina 22
Architettura degli Elaboratori
06 – Livello di micro – architettura
Stack (degli operandi)
a1 = a2 + a3
Pagina 23
Architettura degli Elaboratori
06 – Livello di micro – architettura
Modello della memoria di IJVM
La memoria di IJVM si compone di:
-
porzione costante di memoria
Contiene costanti, stringhe, puntatori ad altre aree di memoria
Registro CPP (indirizzo della prima parola)
-
blocco delle variabili locali
Utilizzata per le variabili locali invocate da ogni metodo
Registro LV (punta alla prima locazione, parola, del blocco delle
variabili locali)
Pagina 24
Architettura degli Elaboratori
06 – Livello di micro – architettura
Modello della memoria di IJVM
-
stack degli operandi
Registro SP (indirizzo della parola in cima allo stack, si aggiorna
durante l'esecuzione)
-
area dei metodi
Contiene il programma
Registro PC (indirizzo della prossima istruzione, in byte)
Pagina 25
Architettura degli Elaboratori
06 – Livello di micro – architettura
Modello della memoria di IJVM
Pagina 26
Architettura degli Elaboratori
06 – Livello di micro – architettura
MAR/MDR:
Lettura/scrittura parole di
dati dal livello ISA
PC/MBR:
Lettura di istruzioni dal
livello ISA
Pagina 27
Architettura degli Elaboratori
●
●
●
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
Pagina 28
Architettura degli Elaboratori
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 flipflop N e Z vengono caricati
Appena i registri e i flip-flop sono
stabili si carica MPC con la nuova
istruzione
Pagina 29
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
Pagina 30
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM: esempio applicativo
Pagina 31
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
BIPUSH byte
scrive un byte in cima allo stack
DUP
legge la parola in cima allo stack e la inserisce in cima allo stack
ILOAD varnum
scrive una variabile locale, proveniente dal blocco delle variabili locali,
in cima allo stack
LDC_W index
scrive in cima allo stack una costante proveniente dalla porzione
costante di memoria
ISTORE varnum
preleva una parola dalla cima dello stack e la memorizza in una
variabile locale nel blocco delle variabili locali
POP
rimuove la parola di memoria posta in cima allo stack
Pagina 32
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
IADD
sostituisce le due parole in cima allo stack con la loro somma
IAND
sostituisce le due parole in cima allo stack con il loro AND logico
IINC varnum const
aggiunge const ad una variabile locale nel blocco delle variabili locali
IOR
sostituisce le due parole in cima allo stack con il loro OR logico
ISUB
sostituisce le due parole in cima allo stack con la loro differenza
Pagina 33
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
GOTO offset
diramazione incondizionata
IFEQ offset
estrae una parola in cima allo stack ed effettua una diramazione se vale
zero
IFLT offset
estrae una parola in cima allo stack ed effettua una diramazione se ha
un valore negativo
IF_ICMPEQ offset
estrae due parole dalla cima dello stack ed effettua una diramazione se
sono uguali
Pagina 34
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
NOP
Nessuna operazione
SWAP
Scambio di due parole poste in cima allo stack
WIDE
Prefisso per indicare che l'istruzione successiva ha un indice a 16 bit
Pagina 35
Architettura degli Elaboratori
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, IOR
sugli operandi che si trovano in cima allo stack (il risultato viene
posto in cima allo stack)
Pagina 36
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
-
Operazioni per i salti:
- GOTO (salto incondizionato)
- IFEQ, IFLT, IF_ICMPEQ
modificano 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)
Pagina 37
Architettura degli Elaboratori
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.
Pagina 38
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM: invocazione di un metodo
Pagina 39
Architettura degli Elaboratori
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
Pagina 40
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM: ritorno da un metodo
Pagina 41
Architettura degli Elaboratori
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
Pagina 42
Architettura degli Elaboratori
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 (=)
Pagina 43
Architettura degli Elaboratori
06 – Livello di micro – architettura
Microistruzioni
Operazioni fondamentali di MAL:
- assegnazione
- inizio lettura / scrittura da / in memoria
- istruzione di salto (goto)
Pagina 44
Architettura degli Elaboratori
06 – Livello di micro – architettura
Microistruzioni
Operazioni consentite:
Pagina 45
Architettura degli Elaboratori
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
Pagina 46
Architettura degli Elaboratori
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
Pagina 47
Architettura degli Elaboratori
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!!!)
Pagina 48
Architettura degli Elaboratori
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
se N = 1
l'output della ALU è nullo
l'output della ALU è negativo
- il valore di un (generico) registro R per verificarne il valore richiede
che:
- Z = R oppure che N = R
In questo modo il contenuto di R viene fatto passare attraverso la ALU
per impostare i flip-flop Z o N (senza modificare alcun registro)
Pagina 49
Architettura degli Elaboratori
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:
Pagina 50
Architettura degli Elaboratori
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
Pagina 51
Architettura degli Elaboratori
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
Pagina 52
Architettura degli Elaboratori
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)
Pagina 53
Architettura degli Elaboratori
06 – Livello di micro – architettura
Insieme delle istruzioni IJVM
Pagina 54
Architettura degli Elaboratori
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
Pagina 55
Architettura degli Elaboratori
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
Pagina 56
Architettura degli Elaboratori
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
Pagina 57
Architettura degli Elaboratori
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
Pagina 58
Architettura degli Elaboratori
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
Pagina 59
Architettura degli Elaboratori
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
Pagina 60
Architettura degli Elaboratori
06 – Livello di micro – architettura
Implementazione di IJVM con Mic-1
POP
pop rimuove la parola dalla cima dello stack
-
pop1
-
pop2
-
pop3
MAR = SP = SP – 1; rd
TOS = MDR; goto Main1
Pagina 61
Architettura degli Elaboratori
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
Pagina 62
Architettura degli Elaboratori
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
Pagina 63
Architettura degli Elaboratori
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
Pagina 64
Architettura degli Elaboratori
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
Pagina 65
Architettura degli Elaboratori
06 – Livello di micro – architettura
Implementazione di IJVM con Mic-1
GOTO
Pagina 66
Architettura degli Elaboratori
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
iflt2
iflt3
iflt4
T
F
F2
F3
MAR = SP = SP – 1; rd
OPC = TOS
TOS = MDR
N = OPC; if (N) goto T else goto F
OPC = PC – 1; goto goto2
PC = PC + 1;
PC = PC + 1; fetch
goto Main1
Pagina 67
Architettura degli Elaboratori
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
ifeq2
ifeq3
ifeq4
T
F
F2
F3
MAR = SP = SP – 1; rd
OPC = TOS
TOS = MDR
Z = OPC; if (Z) goto T else goto F
OPC = PC – 1; goto goto2
PC = PC + 1;
PC = PC + 1; fetch
goto Main1
Pagina 68
Architettura degli Elaboratori
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
if_icmpeq2
if_icmpeq3
if_icmpeq4
if_icmpeq5
if_icmpeq6
T
F
F2
F3
MAR = SP = SP – 1; rd
MAR = SP = SP – 1
H = MDR; rd
OPC = TOS
TOS = MDR
Z = OPC - H; if (Z) goto T else goto F
OPC = PC – 1; goto goto2
PC = PC + 1;
PC = PC + 1; fetch
goto Main1
Pagina 69
Architettura degli Elaboratori
06 – Livello di micro – architettura
Implementazione di IJVM con Mic-1
INVOKEVIRTUAL
Pagina 70
Architettura degli Elaboratori
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)
Pagina 71
Architettura degli Elaboratori
invokevirtual1
invokevirtual2
invokevirtual3
invokevirtual4
invokevirtual5
invokevirtual6
invokevirtual7
invokevirtual8
invokevirtual9
invokevirtual10
invokevirtual11
invokevirtual12
invokevirtual13
invokevirtual14
invokevirtual15
invokevirtual16
invokevirtual17
invokevirtual18
invokevirtual19
invokevirtual20
invokevirtual21
invokevirtual22
06 – Livello di micro – architettura
PC = PC + 1; fetch
H = MBRU << 8
H = MBRU OR H
MAR = CPP + H; rd
OPC = PC + 1
PC = MDR; fetch
PC = PC + 1; fetch
H = MBRU << 8
H = MBRU OR H
PC = PC + 1; fetch
TOS = SP – H
TOS = MAR = TOS + 1
PC = PC + 1; fetch
H = MBRU << 8
H = MBRU OR H
MDR = SP + H + 1; wr
MAR = SP = MDR
MDR = OPC; wr S
MAR = SP = SP + 1
MDR = LV; wr
PC = PC + 1; fetch
LV = TOS; goto Main1
Pagina 72
Architettura degli Elaboratori
06 – Livello di micro – architettura
Implementazione di IJVM con Mic-1
IRETURN
Pagina 73
Architettura degli Elaboratori
06 – Livello di micro – architettura
Implementazione di IJVM con Mic-1
IRETURN
ireturn1
ireturn2
ireturn3
ireturn4
ireturn5
ireturn6
ireturn7
ireturn8
MAR = SP = LV; rd
LV = MAR = MDR; rd
MAR = LV + 1
PC = MDR; rd; fetch
MAR = SP
LV = MDR
MDR = TOS; wr; goto Main1
Pagina 74
Architettura degli Elaboratori
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
Pagina 75
Architettura degli Elaboratori
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
Pagina 76
Architettura degli Elaboratori
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
Pagina 77
Architettura degli Elaboratori
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
Pagina 78
Architettura degli Elaboratori
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!!!)
Pagina 79
Architettura degli Elaboratori
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
iload2
iload3
iload4
iload5
Main1
H = LV
MAR = MBRU + H; rd
MAR = SP = SP + 1
PC = PC + 1; fetch; wr
TOS = MDR; goto Main1
PC = PC + 1; fetch; goto (MBR)
Pagina 80
Architettura degli Elaboratori
06 – Livello di micro – architettura
Riduzione della lunghezza del percorso
iload1
iload2
iload3
iload4
iload5
Main1
H = LV
MAR = MBRU + H; rd
MAR = SP = SP + 1
PC = PC + 1; fetch; wr
TOS = MDR; goto Main1
PC = PC + 1; fetch; goto (MBR)
Diventa:
iload1
iload2
iload3
iload4
iload5
MAR = MBRU + LV; rd
MAR = SP = SP + 1
PC = PC + 1; fetch; wr
TOS = MDR
PC = PC + 1; fetch; goto (MBR)
Pagina 81
Architettura degli Elaboratori
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
Pagina 82
Architettura degli Elaboratori
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
Pagina 83
Architettura degli Elaboratori
06 – Livello di micro – architettura
Instruction Fetch Unit
Pagina 84
Architettura degli Elaboratori
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
Pagina 85
Architettura degli Elaboratori
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
Pagina 86
Architettura degli Elaboratori
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
Pagina 87
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-2
Pagina 88
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-2
L'IFU permette di:
-
evitare Main1
risparmiare ALU
l'incremento di PC
per
ridurre la lunghezza del
percorso
quando
viene
calcolato un offset a 16 bit
Pagina 89
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-2
iload1
iload2
iload3
iload4
iload5
Main1
H = LV
MAR = MBRU + H; rd
MAR = SP = SP + 1
PC = PC + 1; fetch; wr
TOS = MDR; goto Main1
PC = PC + 1; fetch; goto (MBR)
Diventa quindi:
iload1
iload2
iload3
MAR = LV + MBR1U; rd
MAR = SP = SP + 1
TOS = MDR; wr; goto (MBR1)
Pagina 90
Architettura degli Elaboratori
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
Pagina 91
Architettura degli Elaboratori
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
Pagina 92
Architettura degli Elaboratori
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
Pagina 93
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-3
Pagina 94
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-4
Pagina 95
Architettura degli Elaboratori
06 – Livello di micro – architettura
Mic-4
Pagina 96