10 - Il Livello di Mi roar hitettura
Ugo DalLago
DipartimentodiS ienzedell'Informazione
UniversitàdegliStudidiBologna
Anno A ademi o2007/2008
◮
Comesappiamo, illivellodi mir oar hitetturasi ollo atra
illivellologi o-digitale, he abbiamoappena nitodi trattaree
illivellodell'instru tionset.
◮
Pro ederemonellostudiodel livellodi mi roar hitetturanel
modo seguente:
◮
Introdurremoprimadituttounami roar hitetturadi esempio,
dettaMi -1, he onsisteinunper orsodatieinun'unitàdi
ontrollo(quest'ultima ontenenteilmi ro odi everoe
proprio).
◮
Introdurremopoiunesempiodiinstru tionset,dettoIJVM.
◮
Studieremopoi omes riveremi ro odi eperMi -1 he
interpretileistruzioniIJVM.
◮
Al passosu essivo, er heremodimigliorareMi -1tramite
l'impiegodite ni hequaliilbuerdiprefet heilpipelining.
◮
A enneremopoiadal unete ni heperilmiglioramento delle
prestazioni.
◮
Daremoinneunosguardoadal unemi roar hitetture
◮
Il per ordo datidi Mi -1 omprendeprima ditutto unaALU, del tutto simileaquella heabbiamo giàvistoparlando dellivellologi o-digitale.
◮
L'ALUavràdueulteriorioutputNeZ heindi anoseil
risultatoènullooppureno.
◮
Visono poi un ertonumero di registri a32bit, tra ui
ri ordiamoPC, SP eMDR.
◮
Leus itedell'ALU ontenentiilrisultatovannoanireininput
ad unregistro a s orrimento, omandato dadue ingressidi
ontrollo
◮
Visarannoinne tre bus:
◮
IlbusesternoA, hepermettedi omuni are onlamemoria
entrale.
◮
IlbusinternoB, hera oglieidatidairegistrielidàinpasto
allaALU.
◮
IlbusinternoC, hepartedalleus itedelregistroa
H
Shifter control Shifter
ALU
2 N
A B
B bus C bus
6 ALU control
Control signals Memory control registers
Enable onto B bus Write C bus to register To
and from main memory
Z SP
LV
CPP
TOS
OPC PC MDR MAR
MBR
◮
Latemporizzazionedel per orso dati heabbiamo appena
des rittoè abbastanzasempli e.
◮
Tuttii registriri evono iningressounsegnale proveniente da
unsingolo lo k.
◮
Ogni i lo di lo kè suddivisoin un ertonumero di fasi:◮
Nellaprimafase,isegnalidi ontrollosipropaganoegiungono
airegistri,allaALUealregistrodis orrimento.
◮
Inunase ondafase, i32bitpresentinelregistroHvannoa
niresulprimoingressodell'ALUei32bitpresentipresentiin
unodeglialtriregistrisipropaganoattraversoilbusB evanno
aniresulse ondoingressodell'ALU.
◮
Nellaterzafase,ilsegnalasipropagaattraversol'ALUe,
su essivamente,attraversloilregistroas orrimento.
◮
Nellaquartaeultimafase,ilrisultatoprodottodalloshiftersi
propagaattraversoil busC evaanireinuno(opiù)registri.
◮
Lafrequenza di lo kdovrà esseresu ientemente bassada
garantire hele quattrofasi possano essereeseguitein un
Cycle 1 starts here
Shifter output stable
Registers loaded instantaneously from C bus and memory on rising edge of clock
Set up signals to drive data path
ALU and shifter
Drive H and B bus
Propagation from shifter to registers
∆w ∆x ∆y ∆z
Clock cycle 1 Clock cycle 2
MPC available here
New MPC used to
load MIR with next
microinstruction here
◮
Lamemoria on ui Mi -1interagis eè una memoria a4
Gigabyte. Ogni byte orrisponderàad unindirizzoa 32bit.
◮
Lami roar hitetturaMi -1può interagire onlamemoriaattraversodue porte.
◮
Abbiamo innanzituttouna porta a32 bit.
◮
È ontrollatadairegistriMAR(MemoryAddressRegister)eMDR
(MemoryDataRegister).
◮
IlregistroMAR ontieneindirizziespressiinparole(a32bit).
◮
Sesiinseris e ilvaloreninMAR,sarà ari atainMDRlaparola
dimemoria omprendenteiquattrobytediindirizzo ompreso
tra4ne4n
+
3.◮
Abbiamo poiuna porta a8 bit.
◮
È ontrollatadairegistriPCeMBR.
◮
IlregistroPC ontieneindirizziespressiinparole.
◮
IlregistroMBRèunregistroa8bitepuòessere opiatosulbus
B induemodi diversi: onesenzasegno. Nelse ondo asosi
◮
Un operazione diletturao dis ritturain memoria iniziaallane del i lodi lo k,dopo heMAR (o PC)sonostati ari ati.
◮
L'operazione di letturanis ealterminedel i lo di lo k
su essivo aquelloin ui èiniziata.
◮
Idatisarannoutilizzabilinel i loan orasu essivo.
◮
Inaltreparole,un'operazionediletturainiziataallane del
i lok trasmettedati hepossonoessereutilizzatiapartiredal
i lok
+
2.◮
IregistriMBR eMDR possonoessere lettinei i li in ui si stasvolgendo unanuova letturadellamemoria.
Discarded 32-Bit MAR (counts in words)
32-Bit address bus (counts in bytes)
0 0
◮
Per ontrollareilper orso datidiMi -1 abbiamobisogno di29 segnalisuddivisibiliin 5gruppi:◮
9segnaliper ontrollarelas ritturadeidatidalbusC sui
registri.
◮
9segnaliper ontrollarel'abilitazionedeiregistrisulbusB.
◮
8segnaliper ontrollareALUeregistroas orrimento.
◮
2segnaliperindi areallamemoriadileggere(o s rivere)
attraversolaportaa32bit.
◮
Unsegnaleperindi areil prelievodallamemoriaattraversola
portaa8bit.
◮
Inrealtà soltanto unodei noveregistripotràessere abilitato
sulbusB e quindiirelativisegnalidi ontrollopotranno
diventare 4.
◮
Le mi roistruzionidi Mi -1 onsistonoin una sequenza di36
bit.
◮
I24bitpiùsigni ativi orrispondonoaisegnalidi ontrollo
appenades ritti.
◮
Irimanenti12bitsonosuddivisiindue ampi hiamati
NEXT_ADDRESSeJAM, hedeterminano omevieneselezionata
Bits 9 3 8 9 3 4
NEXT_ADDRESS
Addr JAM ALU C Mem B
R E A D
E F C T H J
A M N J M P C
J A M Z
S L L 8
S R A 1
F 0 F 1 E N A
E N B I N V A I N C
H O P C
T O S C P P L V
S P
P C
M D R
M A R
W R T I E
B bus
B bus registers 0 = MDR 1 = PC 2 = MBR 3 = MBRU 4 = SP
5 = LV
6 = CPP
7 = TOS
8 = OPC
9 -15 none
◮
Lamemoria di ontrolloè una omponente essenzialediMi -1.
◮
Consistedi 512paroleda 36bit.◮
Puòessere implementata ome:
◮
Unamemoriaasolalettura onindirizzia9bitedatia36bit.
◮
Unarete ombinatoria on9ingressie36us ite.
◮
Lamemoria di ontrollo ne essitadi:◮
Unregistropergliindirizzi, he hiameremoMPC.
◮
Unregistroperidati, he hiameremoMIR.Inognimomento,
MIR ontienelami roistruizoneinese uzione.
◮
Oltreaguidare ilper orsodati, ilmi roprogrammadeveparallelamentedeterminare qualesarà l'istruzionesu essiva.
◮
L'indirizzo dellaprossimami roistruzione vienedeterminatoonsiderando ivaloridi al uni registri,ovvero MIR,MBR, N,e Z
e vieneinserito inMPC
◮
Inparti olare, sipro ede omesegue:◮
Primaditutto si opianoi9bitdi NEXT_ADDRESSinMPC.
◮
Nelfrattempo,siispezionanoi3bitdel ampoJAMesi
pro edeinmodidiversiase onda deipossibilivaloridiquesti
trebit, hiamatiJMPC,JAMNeJAMZ.
◮
Ilbitpiùsigni ativodi MPCprendeil valoredell'espressione
(
JAMZ·
Z) + (
JAMN·
N) +
NEXT_ADDRESS[
8]
doveNEXT_ADDRESS
[
8]
èilbitpiùsigni ativotraquelliin NEXT_ADDRESS.◮
Gli8bitmenosigni atividiMPCprendonoinve eilvalore
degli8bitmenosigni atividiNEXT_ADDRESS(seJMPC
=
0)oppurelasommalogi adegli8bitmenosigni atividi
NEXT_ADDRESS onilvaloredi MBR(seJMPC
=
1).H
Shifter ALU
2 N B bus
6 ALU control
Control signals Memory control signals (rd, wr, fetch)
Enable onto B bus
Write C bus to register Z
C bus SP LV CPP TOS OPC PC MDR MAR
MBR
9
O
512 × 36-Bit control store for holding the microprogram 3
8 4-to-16 Decoder
2 9
4
MPC
MIR
Addr J ALU C M B
1-bit flip–flop High bit
JMPC
JAMN/JAMZ
◮
Possiamo aquesto puntoritornarea parlaredella
temporizzazionedi Mi -1,tenendo ontodel ruolo svoltodalla
memoriadi ontrolo edai registriMPC e MIR.
◮
Ogni i lo di lo kè suddivisonei seguenti sotto i li:
1. In orrispondenzadelfrontedidis esadel lo k,l'indirizzo
dellamemoriadi ontrollo ontenutoinMPCvienelettoe
ari atoinMIR.
2. IsegnalisipropaganodaMIRversoilper orsodatieilregistro
selezionatoviene ari atosulbusB.
3. LaALUeloshiftersvolgonoleloroazioniegeneranoun
risultatostabile.
4. IlbusC eibus dimemoriadiventanostabili.
5. In orrispondenzadelfrontedisalitadel lo k,iregistrisu ui
insisteilbus C,iip-opNeZeiregistriMBReMDRvengono
ari ati.
6. NonappenaMBR,NeZsonostabili,si ari aMPCinprevisione
◮
IJVM èuna parti olarema hina astratta, derivatadalla
ma hina virtualeJVM.
◮
Inquesta parte del orso ostruiremo uninterpretedi IJVM
nella mi roar hitetturaMi -1.
◮
Inaltreparole,faremovedere omesiapossibileeseguire
istruzioniIJVMpresentiinmemoria(mi ro)-programmando
opportunamenteMi -1.
◮
Il linguaggiodi IJVM omprendeal uni ostrutti he sono
tipi i deilinguaggi del livelloISAe heanalizzeremoquiperla
prima volta.
◮
Ciriferiamo,inparti olare,allesubroutine(opro edureo
metodi).
◮
Lama hina virtualeIJVM,inoltre,utilizzaunmodellodimemoriamolto omune,basatosul on etto dista k.
◮
Lo sta kèun'areadi memoria ui nonsipuò a edere
arbitrariamente(o in modo asuale).
◮
Piùnellospe i o,lo sta ksi puòleggere os rivere solo ad una estremità.◮
Proprioperquestosiutilizzailterminesta k, hesigni a
pila.
◮
Lo sta kviene utilizzatoinIJVM perdues opispe i i:
◮
Daunapartepertenertra iadellevariabililo alidiuna
subroutine.
◮
Dall'altrapermemorizzareglioperandiduranteil al olodi
un'espressionearitmeti a.
◮
IdueregistriSPe LVservono proprioad a edereallosta k.
◮
LV ontienel'indirizzodellaprimaparoladimemoriatraquelle
he ontengonolevariabililo alidellasubroutineattualmente
inese uzione.
◮
SP ontieneinve el'indirizzodell'ultimaparola dimemoriatra
SP LV
a3 a1 (a)
108 100
a2 104
SP
LV
a3 a1 (b) a2 b3 b4
b1 b2
a3 a1 (c) a2 b3 b4
LV c1
SP c2
b1 b2
LV
a3 a1 (d) a2 d3 d4
SP d5
d1
d2
LV
a3
??
??
SP a2
a1 (a) a2
LV
a3
??
??
a2
?
?
SP a3
a1 (b) a2
LV
a3
??
??
SP a2 + a3
a1 (c) a2
LV
SP a3
a2 + a3
(d)
a2
◮
Lamemoria diIJVMpuò esserevista ome uninsieme di2 32
byteoppure omeun insiemedi 2 30
paroleda 4byte ias una.
◮
Non sipossonousare indirizziespli itipera edere allamemoria. O orre faresempreriferimentoad unindirizzo
ontenuto in unregistro.
◮
distinguiamole seguentiareedi memoria:
◮
Laporzione ostantedi memoria, he ontienedati henon
verrannomodi atidurantel'ese uzionedelprogramma. Visi
a edetramiteil registroCPP
◮
Ilblo odelle variabililo ali, he ontienelevariabililo ali
ditutteleinvo azionidimetodiattive. Visi a edetramiteil
registroLV.
◮
Losta kdegli operandi, he noisupponiamoesserepartedel
blo odellevariabililo ali. Visia edetramiteil registroSP.
◮
L'areadeimetodi, he ontieneilprogrammaattualmentein
ese uzione. Visi a edetramiteilregistroPC.
◮
IregistriCPP,LVe SP ontengono riferimentiaparole(di32
SP
LV
PC
CPP Constant
Pool
Current Operand Stack 3
Current Local Variable Frame 3
Local Variable Frame 2
Local Variable Frame 1
Method
Area
◮
Esistonoprima ditutto un ertonumero di istruzioniperinserire nellosta k una parola proveniente davariefonti:
BIPUSH byte
S rive byte in imaallosta k.
DUP
Legge la parola in ima allo
sta k e la inseris ein ima allo
sta k.
ILOAD varnum
S rive una variabile lo ale in
imaallosta k.
LDC_W index
S rive in ima allo sta k una
ostante proveniente dalla
porzione ostantedi memoria.
◮
Possiamo an hetogliereuna paroladalla imadellosta k:ISTORE varnum
Preleva una parola dalla ima
dello sta k e la memorizza in
una variabilelo ale.
POP
Rimuove la parola di memoria
hesta in imaallosta k.
◮
Esistonopoiun ertonumero diistruzioni logi he e
aritmeti he:
IADD
Sostituis eledueparolein ima
allosta k onlalorosomma.
IAND
Sostituis eledueparolein ima
allo sta k on la loro ongiun-
zionelogi a.
IINC varnum onst
Aggiunge onstadunavariabile
lo ale.
IOR
Sostituis eledueparolein ima
allo sta k on la loro disgiun-
zionelogi a.
ISUB
Sostituis eledueparolein ima
◮
Possiamo poiindividuare un ertonumero di istruzionidisalto:
GOTO oset
Diramazionein ondizionata.
IFEQ oset
Estrae una parola in ima
allo sta k e eettua una dira-
mazione sevale zero.
IFLT oset
Estrae una parola in ima
allo sta k e eettua una dira-
mazione seha valorenegativo.
IF_ICMPEQ oset
Estrae due parole dalla ima
dello sta k e eettua una dira-
mazione sesono uguali.
◮
InIJVM esistelapossibilitàdi hiamare un metodo:
INVOKEVIRTUAL disp
Invo a il metodo he si trova
nell'area dei metodi on spiaz-
zamento disp.
IRETURN
Terminaunmetodorestituendo
unvaloreintero, hevieneposto
in imaallosta k.
◮
Inne, esistono un ertonumero di istruzionidiverse:
NOP
Nonesegue nulla.
SWAP
S ambia le due parole in ima
allosta k.
WIDE
Funge da presso. L'istruzione
su essivahaunindi ea16bit.
◮
Primadi invo are unmetodo (tramitel'istruzioneINVOKEVIRTUAL) o orre he sullosta k vi siaunriferimento
all'oggetto hiamante,seguito daiparametri attuali.
◮
InIJVMl'oggetto hiamanteèsempreOBJREF.
◮
L'istruzioneINVOKEVIRTUAL in ludeuno spiazzamentoall'interno dellaporzione ostante dimemoria,asua volta
ontenentel'indirizzodel metodo veroe proprio.
◮
Laporzionedell'areadei metodirelativa ad una parti olare
pro edura inizia on32 bit,dopo iquali troviamoil odi e
vero e proprio.
◮
Iprimiquattrobyte odi anoil numerodi parametridel
metodoeladimensionedel blo odelle variabililo ali.
◮
L'eetto diuna istruzioneINVOKEVIRTUALè quellodi riservare
nuovo spazio perlevariabililo ali, salvandoan heil ontenuto
di LVe PCalmomentodella hiamata. IregistriSP eLV
sarannomodi ati.
◮
Similarmente,l'istruzioneIRETURN liberaspazio sullosta k,opiando opportunamenteil valoredi ritorno. IregistriSPe LV
Pushed parameters
Caller's local variable frame
Stack before INVOKEVIRTUAL
Stack after INVOKEVIRTUAL
SP
SP
LV
LV
(a) (b)
Stack base after INVOKEVIRTUAL
Stack base before INVOKEVIRTUAL Parameter 3
Parameter 2 Parameter 1 OBJREF Previous LV
Previous PC Previous PC
Caller's local variables Parameter 2 Parameter 1 Link ptr
Caller's local variables Space for caller's local
variables
Parameter 2 Parameter 1 Link ptr Caller's LV Caller's PC
Previous LV
Parameter 3
Parameter 2
Parameter 1
Link ptr
Caller's local variable frame
Stack before IRETURN
Stack after IRETURN SP
LV SP
LV
(a) (b)
Stack base before IRETURN
Stack base after IRETURN Parameter 3
Parameter 2 Parameter 1 Link ptr Previous LV
Previous PC Previous PC
Caller's local variables
Caller's local variables
Parameter 2 Parameter 1 Previous LV Return value
Previous PC
Link ptr
Caller's
local
variables
Parameter 2
Parameter 1
Link ptr
Previous LV
Return value
◮
Aquesto punto, possiamo des riverelemi roistruzionidiMi -1 he permettono di interpretare IJVM.
◮
Inteoria,potremmolimitar iadelen are le512 parole a36 bithe ostituis onoil ontenuto della memoria di ontrollo.
◮
Èperòs onveniente denotare lemi roistruizionitramite mere sequenze dibit.◮
Inparti olare,siperdemoltointerminidiintuizione.
◮
Des riveremo lemi roistruzionitramite unlinguaggio hiamato MAL(Mi ro AssemblyLanguage).◮
Ognimi roistruzione orrispondeadunarigadi odi es ritta
inMAL.
◮
L'istruzionefondamentalediMAL èl'assegnamento,laquale
des riveinmodo ompattoun'operazionearitmeti o-logi aei
registri oinvolti.
◮
EsistonopoialtreistruzionidiMAL hepermettonodiindi are
l'iniziodiunalettura(odiunas rittura)dalla(oversola)
memoria.
◮
Inne,esistonol'istruzionegoto, hepermettedi atturarei
◮
Tramite unassegnamentopossiamo indi areinmodo
ompatto un'operazione aritmeti o-logi ae irelativiregistri.
◮
Sempli iesempisonoMDR
=
SPoppure MDR=
H+
SP.◮
Inogni mi roistruzione,ovviamente,può esserepresentealpiùunassegnamento.
◮
Solo al uni assegnamentisonole iti. Inparti olare,possono
essereutilizzatisolo gliassegnamenti he possano essere
realizzati tramiteilper orso dati.
◮
Peresempio,l'assegnamentoMDR
=
SP+
MDRnonèvalido,per héunodeidueoperandidi un'addizionedeveessere
sempreilregistroH.
◮
Èpossibileassegnare ilrisultatodiun'operazione logi ao aritmeti a apiùregistri.◮
Peresempio,l'assegnamentoSP
=
MDR=
SP+
1èperfettamentele ito.
◮
Il fatto hein orrispondenzadi una mi roistruzioneinizi una
lettura(o una s rittura)dalla(o versola)memoriaviene
indi ata inMAL on rde wr(perlaportaa 32bit) oppure
onfet h (perlaporta a8bit).
◮
Ogni mi roistruzionedeve spe i areinmodo espli ito l'indirizzodellasu essiva mi roistruzione. In MAL iò puòavvenire invarimodi:
◮
Innanzitutto onunsaltoin odizionatogoto label dovelabel
èl'indirizzo(simboli oonumeri o)dellasu essivaistruzione.
◮
Tramiteunsalto ondizionatoalvalorediNoppuredi Z,per
esempio
if
(
N)
goto label1 else goto label2.
Intal asoo orre helabel1 elabel2 dieris anosoloperil
valoredelbitpiùsigni ativo. Stiamoimpli itamentesettando
a1ilbitJAMZoilbitJAMN.
◮
Tramiteunsaltoin ondizionatonellaforma
goto
(
MBR OR valore)
. Stiamoimpli itamentesettando a1il◮
Il mi roprogramma Mi -1 heinterpreta leistruzioni IJVMè omposto da 112mi roistruzioni.◮
Nonanalizzeremol'interpretazionedi tutteleistruzioniIJVM,
on entrando isual uni asitipi i.
◮
Sullibrotrovateildettagliorelativoatuttelealtreistruzioni.
◮
IregistriCPP,LVe SP ontengono, rispettivamente,puntatori
alla porzione ostantedi memoria,alblo odellevariabili
lo aliealla imadellosta k.
◮
All'inizioealla ne dell'interpretazione diogni istruzioneIJVM,ilregistroTOS ontiene ilvalore puntatodaSP.
◮
Il registroOPC èunregistrotemporaneo.◮
Il mi roprogramma Mi -1 heinterpreta leistruzioni IJVMontiene una mi roistruzione he vieneeseguitaappena dopo
he il odi e operativo dell'istruzioneIJVM su essivaè stato
ari atonelregistroMBR:
Main1 PC
=
PC+
1;
fet h;
goto(
MBR)
iadd1 MAR
=
SP=
SP−
1;
rdiadd2 H
=
TOSiadd3 MDR
=
TOS=
MDR+
H;
wr;
goto Main1dup1 SP
=
SP+
1dup2 MDR
=
TOS;
wr;
goto Main1bipush1 SP
=
MAR=
SP+
1bipush2 PC
=
PC+
1;
fet hbipush3 MDR
=
TOS=
MBR;
wr;
goto Main1iload1 H
=
LViload2 MAR
=
MBRU+
H;
rdiload3 MAR
=
SP=
SP+
1iload4 PC
=
PC+
1;
fet h;
wriload5 TOS
=
MDR;
goto Main1wide1 PC
=
PC+
1;
fet hwide2 goto
(
MBR OR 0x100)
wide_iload1 PC
=
PC+
1;
fet hwide_iload2 H
=
MBRU<<
8wide_iload3 H
=
MBRU OR Hwide_iload4 MAR
=
LV+
H;
rd;
goto iload3INDEX BYTE 1
INDEX BYTE 2 WIDE
(0xC4)
ILOAD (0x15) ILOAD
(0x15) INDEX
(a) (b)
goto1 OPC
=
PC−
1goto2 PC
=
PC+
1;
fet hgoto3 H
=
MBR<<
8goto4 H
=
MBRU OR Hgoto5 PC
=
OPC+
H;
fet hgoto6 goto Main1
Memory
1 Byte n + 3
n + 2 n + 1 n
OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7)
OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7)
OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7)
OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7)
OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7)
Registers PC
OPC
MBR H
n
n n n
n + 1 n + 1 n + 2 n + 2
OFFSET BYTE 1 OFFSET BYTE 2
OFFSET BYTE 1 OFFSET BYTE 1
0xA7
OFFSET 1 << 8
(a) (b) (c) (d) (e)
it1 MAR
=
SP=
SP−
1;
rdit2 OPC
=
TOSit3 TOS
=
MDRit4 if
(
N)
goto T else goto F.T OPC
=
PC+
1;
goto goto2F PC
=
PC+
1F1 PC
=
PC+
1;
fet hF2 goto Main1
if_i mpeq1 MAR
=
SP=
SP−
1;
rdif_i mpeq2 MAR
=
SP=
SP−
1if_i mpeq3 H
=
MDR;
rdif_i mpeq4 OPC
=
TOSif_i mpeq5 TOS
=
MDR.if_i mpeq6 Z
=
OPC−
H;
if(
Z)
goto T else goto F .T OPC
=
PC+
1;
goto goto2F PC
=
PC+
1F1 PC
=
PC+
1;
fet hF2 goto Main1
ireturn1 MAR
=
SP=
LV;
rdireturn2
ireturn3 LV
=
MAR=
MDR;
rdireturn4 MAR
=
LV+
1ireturn5 PC
=
MDR;
rd;
fet h.ireturn6 MAR
=
SP.ireturn7 LV
=
MDR.ireturn8 MDR
=
TOS;
wr;
goto Main1.◮
L'impiegodi nuove te nologienel livello deidispositiviha
prodotto unmiglioramentonotveoledelleprestazioni.
◮
Noi siamoperòinteressati aimiglioramentidelleprestazioniindotti da ambiamentinel livellodella ar hitettura.
◮
Una voltas elta una te nologiaperi ir uitie ssatoun linguaggioallivelloISA,esistonoprin ipalmentetreappro itramiteiqualiè possibileaumentarelavelo itàdiese uizione:
◮
Ridurrelalunghezza delper orso, ossiailnumerodi i lidi
lo kne essaripereseguireun'istruzione.
◮
Sempli are l'organizzazioneinmodo heil i lodi lo k
possaesserepiùbreve.
◮
Sovrapporrel'ese uzionedi piùistruzioni,peresempio
tramiteme anismidipipelining.
◮
Lariduzionedella lunghezzadel per orsopuòessereeettuatatramite l'impiegodiunità hardware spe ializzate.
◮
Lasovrapposizione dell'ese uzionediistruzioneè di granlunga
late ni apiùe a e traquelleelen ate.
◮
Adunaumento dellavelo itàspesso orrisponde unaumento
◮
Fondamentalmente,sonotrele te ni he piùimportanti tra
quelle hepermettonodi ridurre lalunghezzadel per orso di
ese uzione.
◮
Primadi tutto,sipuòtentaredi sovrapporre l'ese uzione
del i lo prin ipale (ovverodella mi roistruzioneMain1)
all'ese uzione diuna delleultimemi roistruzionirelative ad
ogni istruzioneIJVM.
◮
Intaluni asièpossibileridurreilnumerodi mi roistruzioni
ne essarie.
◮
Si puòpoipassare ad un'ar hitettura a tre bus.
◮
An heinquesto aso, èpossibile heil numerodi
mi roistruzionine essariediminuis a.
◮
Inmolteo asioni,infatti,o orreun'istruzioneaggiuntivaper
spostareil ontenutodiun registronelregistroH.
◮
C'è inne lapossibilitàdiutilizzareun'unità di prelievo delle istruzioni(o IFU) he memorizzilesu essive istruzioni daeseguirein unbuer.
◮
Inquestomodopossiamootteneremiglioramentinettinelle
◮
Nell'interpretazionedi un'istruzioneIJVM,laALUviene
utilizzata, oltre heperi al oliveri epropri,an heperil
prelievodell'istruzione.
◮
Perpotersovrapporre il i lo prin ipaleè ne essarioliberarela ALUda al uni diquesti ompiti.◮
Sipotrebbeintrodurreun'altraALU,an hese nonsonoin
realtàne essarietuttelefunzionalitàdiunaALU.
◮
Èpossibileintegrare fa ilmentein Mi -1un'unitàhardware heabbia ilsolo ompitodi in rementareilregistroPCin modo
indipendente,prelevandodallamemoriale istruzionie irelativi
operandi. Taleunità è hiamataIFU(o Instru tion Fet h
Unit).
◮
Il registroMBR èrimpiazzato dadue registriMBR1 (a8 bit)e
MBR2(a 16 bit), hevengono alimentatida unpi olobuera
6 byte.
◮
Soltantoil buerinteragirà onlamemoria.
◮
OltrealregistroPCesisterà an heunregistroIMAR.◮
Soltantoil registroIMARinteragirà onlamemoriaenonsarà
MBR2
Shift register From memory
MBR1 +1
Write PC
2 low-order bits
B bus C bus
IMAR
PC
+1, 2
◮
L'ar hitetturaatrebus ostruita apartire da Mi -1eestendendola onuna IFUè hiamataMi -2.
◮
InMi -2 nono orrepreo uparsidi modi arePCperfarlo
puntare all'istruzionesu essiva.
◮
OgniqualvoltaunodeiregistriMBR1oppureMBR2sonoletti,la
IFUaggiornaPCautomati amenteeprovvedea re uperarele
paroledimemoriane essarie.
◮
Mi -2permettedi risparmiaremolti i li di lo k,an heseil
miglioramentoalivelloprestazionale nonè lostessopertutte
le istruzioni.
◮
LDC_Wpassadanoveatremi roistruzioni.
◮
SWAPpassainve esoltantodaottoa seimi roistruzioni.
◮
Il prezzoda pagare onsistenei nuovi omponentihardwarediui abbiamo bisogno(inparti olare,l'IFU).
IFU
Word fetched
Word fetched
Word fetched
0 MBR1
MBR2 MBR2
MBR2 MBR2
MBR2
Transitions
MBR1: Occurs when MBR1 is read MBR2: Occurs when MBR2 is read
Word fetched: Occurs when a memory word is read and 4 bytes are put into the shift register 1 MBR1
2 MBR1
3 MBR1
4 MBR1
5 MBR1
6
H
Shifter
ALU N
B bus C bus
ALU 6 control Control signals
Memory control registers
Enable onto B bus Write C bus to register
To and from main memory
Z MBR2
SP
LV
CPP TOS PC MDR MAR
MBR
OPC Instruction
fetch unit (IFU)
A bus
◮
Un altrate ni apermigliorareleprestazionidella nostra
mi roar hitetturadi esempio, onsiste nell'introdurreun erto
livellodiparallelismo.
◮
Si potrebbe aumentarelafrequenzadi lo k.◮
Sappiamo,però, heil periododi lo knonpuòessereminore
deltempone essarioaisegnaliperpropagarsilungoilper orso
dati.
◮
Il i lo delper orsodatiè omposto da tre omponenti prin ipali:◮
Iltempone essarioaportareiregistriselezionatisuibusAeB.
◮
IltempoimpiegatodallaALUedalloshifterper ompiereil
lorolavoro.
◮
Iltempone essarioperriportareirisultati neiregistri.
◮
Introdu endotrelat h nelmezzo dei busA, B e C
otteniamo iduevantaggi seguenti:
◮
Primaditutto,possiamoa ellerare il lo k.
◮
Possiamopoi(potenzialmente)utilizzaretuttele parti del
H
A latch
C latch B latch
Shifter
ALU N
B bus C bus
ALU 6 control Control signals
Memory control registers
Enable onto B bus Write C bus to register
To and from main memory
Z MBR2
SP
LV
CPP TOS PC MDR MAR
MBR1
OPC Instruction
fetch unit (IFU)
A bus
◮
Adogni i lo di lo k,vi sonopotenzialmentetre
mi roistruzioniattive:
◮
Laprima omandalapartedi per orsodati ompresatrai
registrieilat hAandB.
◮
Lase onda omandalapartedi per orsodati ompresatrai
lat hAeB eillat hC.
◮
Laterza omandalapartedi per orso dati ompresatrail
lat hC eiregistri.
◮
Inal une situazioni,però, questolivellodiparallelismononè
possibile,per hé unadellemi roistuzionipotrebbedipendere
dal risultatodi una dellemi roistruzionipre edenti.
◮
Siparlainquesto asodidipendenzaRAW odipendenza
eettiva.
1
Instr uction
Cycle 1 Cycle 2
Time
Cycle 3 Cycle 4
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
2 IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
3 IFU
ALU Reg
Shifter
C A B
IFU
ALU Reg
Shifter
C A B
4 IFU
ALU Reg
Shifter
C A B
◮
Possiamo estenderelapipelinea quattrostadidi Mi -3ad una
pipelineasettestadi,ottendendoquindi unami roar hitettura
hiamataMi -4.
◮
InMi -4, laIFU alimentaunanuova omponente, hiamata
unità di de odi a,dotata diuna ROMindi izzata
attraverso il odi eoperativoIJVM.
◮
Perogni odi eoperativo,laROMtienetra iadelnumero
deglioperandiediun indi eadun'altraROM, hiamataROM
delle mi ro-operazioni.
◮
L'unitàdi de odi a inviaall'unità di a odamentol'indi e
relativoalla ROMdellemi ro-operazioni heha trovatonella
sua tabella.
◮
L'unitàdia odamento er a nellaROMdelle
mi ro-operazionilami ro-operazione orrispondenteela opia
inuna odainterna,assiemeatuttelemi ro-operazioni
su essive
◮
Inquestomodo, lasequenzadiistruzioniIJVMinmemoria
viene onvertitain unasequenzadimi ro-operazioni, he