il processore - home page | department of information...
TRANSCRIPT
Obbiettivi
• Inquestaseriedilezionicercheremodicapirecomeèstrutturatounprocessore
• Leinformazionichevedremosiintegranoconquantovistosulleretilogiche
• Facciamoriferimentoaduninsiemediistruzioniridotto§ ISTRUZIONIDIACCESSOALLAMEMORIA:
ü lw,sw§ ISTRUZIONIMATEMATICHE eLOGICHE:
üadd,sub,and,or,slt§ ISTRUZIONIDISALTO
übeq,j• Lealtreistruzionisiimplementanocontecnichesimili
Panoramica Generale
• Nell’esecuzionedelleistruzioni,percomee’progettatol’ISA,visonomoltitratticomuni
• Leprimeduefasi,perogniistruzione, sono§ Prelievodell’istruzione dallamemoria§ Letturadelvalorediunoopiu’registrioperandi chevengonoestrattidirettamentedaicampidell’istruzione
• Ipassisuccessividipendonodallaspecificaistruzionema,fortunatamente,sonomoltosimiliperciascunadelletreclassiindiividuate
Passi per ciascuna classe
• TuttiitipidiistruzionitrannelausanolaALU(unitàlogicoaritmetica)dopoaverlettoglioperandi§ Leistruzionidiaccessoallamemoriapercalcolarel’indirizzo§ Leistruzioniaritmetico/logichepereseguirequantoprevisto
dall’istruzione§ Isalticondizionatipereffettuareilconfronto
• Dopol’usodellaALUilcomportamentodifferisceperletreclassi§ Leistruzionidiaccessoallamemoria richiedonoosalvanoildato
inmemoria§ Leistruzioniaritmetiche/logichememorizzano ilrisultatonel
registrotarget§ Leistruzionidisaltocondizionatocambianoilvaloredelregistro
PCsecondol’esitodelconfronto
Schema di base• Diseguitoillustriamolastrutturadibasedellaparteoperativa(odatapath)perlevarieistruzioni
TutteleistruzioniusanoilPCper
prelevarel’istruzione
Lasecondafaseprevedeilcaricamentodeglioperandi IIIFase:lavoralaALU
IlrisultatodellaALUvieneusatoper
memorizzare/Prelevareundatoopermemorizzarein
unregistro
IlPCvieneaggiornato
Pezzi mancanti
• Lafiguraprecedentee’incompletaecreal’impressionechecisiaunflussocontinuodidati
• Inrealta’cisonopuntiincuiidatiarrivanodadiversesorgentiebisognasceglierneuna(puntodidecisione)
• E’ilcasoperesempiodell’incrementodelPC§ Nelcaso“normale” ilsuovaloreproviene dauncircuitoaddizionatore (chelofapuntareallawordsuccessivaaquellaappenaletta)
§ Nelcasodisaltoilnuovo indirizzovienecalcolatoapartiredall’offsetcontenutonelcampodell’istruzione
Pezzi mancanti
• Altroesempio§ IlsecondooperandodellaALUpuo’proveniredalbancoregistri(peristruzioniditipoR)odalcodicedell’istruzionestessa(peristruzioniditipoI)
• Perselezionarequaledelledueopzionisceglierevieneimpiegatounparticolareretecombinatoria(multiplexer)chefungedaselettoredeidati
Il multiplexer
• Ilmultiplexerhadue(opiu’)ingressidatieuningressodicontrollo
• Sullabasedell’ingressodicontrollosidecidequaledegliinputdebbafinireinoutput
Ulteriori pezzi mancanti
• Lelineedicontrollodeimultiplexervengonoimpostatesullabasedeltipodiistruzioni
• Ivariblocchifunzionalihannoulterioriingressidicontrollo§ laALUhadiversiingressiperdeciderequaleoperazioneeffettuare
§ Ilbancoregistrihadegliingressiperdecideresescrivereomenoinunregistro
§ Lamemoriadatihadegliingressiperdecideresevogliamoeffettuare lettureoscritture
• PerdeciderecomeimpiegareIvariingressidicontrolloabbiamobisognodiun’unitàchefungada“direttored’orchestra”
Una figura più completaMuxperdeciderecome
aggiornareilPC
Nelregistrotarget
memorizziamoilrisultatodellaALUoquellochepreleviamo
dallamemoria?
Secondooperandoregistrooimmediato?
UnitàchegeneraIvarisegnalidicontrollo
Informazioni di base
• ASSUNZIONESEMPLIFICATIVA:§ IlProcessorelavorasincronizzandosiconiciclidiclock
§ Perilmomentofacciamol’assunzionesemplificativachetutteleistruzionisisvolganoinunsingolociclodiclock(lungoabbastanza)
• Primadientrarenelladescrizionedeivaricomponenticioccorrerichiamarealcuniconcettidiretilogiche
Reti logiche
• Chiamiamo retelogicacombinatoria uncircuitocompostodiportelogichecheproduceunoutputfunzionedell’input§ Esempioilmultiplexervistoprima
• Visonoinoltreelementi chechiamiamodistato§ Insostanzaseauncertopuntosalviamoilvaloredeglielementidi
statoepoiloricarichiamoilcomputerriparteesattamentedadovesierainterrotto
§ Nelnostrocasoelementidistatosonoregistri,memoriadati,memoriaistruzioni
• Glielementi distatosonodettisequenziali perchè l’uscitaauningressodipendedallastoria(sequenza)degli ingressi
• Glielementi distatohannodueingressialmeno:§ ilvaloredaimmetterenellostato§ Unclockacuisincronizzare letransizionidistato
Flip-Flop• L’elementobasepermemorizzareunbitè uncircuitosequenzialechiamatoflip-flopd-latch
Latch OutIn
CLK
• Iregistripossonoessereottenuticomearraydilatch(oinaltrimodisimili)
• Terminologia• Asserito:segnalelogicoalivelloalto• NonAsserito:segnalelogicoalivellobasso
Temporizzazione
• Lametodologiaditemporizzazionecidicequandoisegnalipossonoesserelettioscrittiinrelazionealclock
• E’importantestabilireunatemporizzazione§ Seleggoescrivosuregistro,devosapereseildatocheleggoe’ quelloprecedenteosuccessivoallascrittura
• Latecnicaditemporizzazionepiu’ usatae’ quellasensibileaifronti§ Ildatovienememorizzatoincorrispondenzadellasalitaodelladiscesadelfrontediclock
• Idatipresidaelementidistatosonorelativialcicloprecedente
Esempio
Altempotl’elementodistato1vieneaggiornato
Altempot+Tilvalorearrivaall’elemento di
stato2
Ilvalorevienepropagatoattraverso
unaretecombinatoria
Considerazioni
• IltempodiclockTdeveesseresceltoinmododadaretempoaidatidiattraversarelaretecombinatoria
• NelcasodelMIPS32glielementidistatocontengonotipicamente32bit
• Lametodologiadimemorizzazionesensibileaiclockpermettedirealizzareinterconnessioniche,aprimavista,creerebberodeiciclidiretroazionecherenderebberoimpredicibilel’evoluzionedelsistema
Esempio
• Consideriamouncasocomequesto
Logicacombinatoria
f()
ELemendodistatos
• Senonavessimotemporizzazioniprecisedovremmoscrivere
s=f(s)• Grazieallatemporizzazionesensibilealclockabbiamo
s(t+T)=f(s(t))chemifapensareaevoluzionebendeterminata
Realizzazione del datapath
• Passiamoorainrassegnalevariecomponenticheciservonoperlarealizzazionedeldatapath
Memoriadovesono
memorizzateleistruzioni
Registrochecontienel’indirizzo
dell’istruzionedacaricare
Addizionatore(ALUspecializzata)perincrementare il
PC
Prelievo dell’istruzione
• Usandoglielementicheabbiamovistopossiamomostrarecomeeffettuareilprelievodell’istruzioneconun’appositacircuiteria
Aogniciclodiclockvieneprelevatal’istruzione
puntatadalPC
Ilcodicedell’istruzionevieneresodisponibile
IlPCvineespostaro inavantidiunawordperil
prossimociclo
Istruzioni di tipo R
• CominciamodalvederecomevengonoeseguiteleistruzioniditipoR
• Sitrattadiistruzioniaritmetiche/logiche cheoperanotraregistrieproduconounrisultatochevienememorizzatoinunregistro
• Es
add $t0, $s1, $s2
• Il codice halaforma
OP rs rt rd shamt funct
6bit 5bit 5bit 5bit 5bit 6bit
Blocchi funzionali richiesti
• Pereffettuarequesticalcolihobisognodidueulterioriblocchifunzionali.
Bancoregistri:dainoutputIregistrispecificatinel
registrodiletturaqe2
Seabilitatoinscritturascrivenelregistrospecificatoildatoiningresso
ALU:effettual’operazione
aritmeticacodificatain4bit.Settaunbit
inuscitaseilrisultatoè zero
Istruzioni load/store
• Consideriamooraancheleistruzioniload (lw)estore (sw)• Formagenerale
lw $t0, offset($t2)sw $t0, offset($t2)
• Perentrambesidevecalcolareunindirizzodimemoriadatodallasommadit2conl’offset
• Nelsecondocasooccorreleggeret0dalregister file• Quindipereseguirequesteistruzioni ciserveancoralaALUeilregister file
OP rs rt costanteoindirizzo
6bit 5bit 5bit 16bit
Istruzioni load/store• Notarechel’offsetvienememorizzatoinuncampoa16bitcheoccorreràestenderea32bit(replicandoper16volteilbitdisegno)
• Inaggiuntaallecomponenticheabbiamovistoprimacioccorreun’unitàdimemoriadatidovememorizzareeventualmenteconsw
Adifferenzadellamemoriaistruzioniquesa puo’ essereusatainletturaescrittura.Quindiho
bisognodicomandiappositi
Salto condizionato
• L’istruzionedisaltocondizionatohalaforma
beq $t1, $t2, offset
• Ancheinquestocasobisogna sommare l’offset(dopoaverloestesoa32bit)all’attualePC
• Dueattenzioni• Siccomenormalmente ilPCvieneautomaticamente
aumentatodi4tantovalel’offsetriferirlo giàalPCaumentato
• L’architettura automaticamente traslal’offsetdiduebit(inmododaesprimerlo inword)edaestenderel’intervallo diindirizzichesipuoiraggiungere (rispettoall’espressione deglioffsetinbyte)
Salto condizionato• Nell’esecuzionedellabeq occorreancheunmeccanismoin
basealqualedecidereseaggiornareilPCaPC+4oaPC+4+offset
Calcolodell’indirizzodi
salto
LaALUeffettualasottrazioneeseilrisultatoe’0sipuo’saltare
Progetto di un’unità di elaborazione
• Perilsaltononcondizionatobastasostituireilcampooffset(shiftatodidueposizioni)alPC
• Siccomeabbiamoilrequisitodieseguireogniistruzioniinunciclodiclock,nonpossiamousareun’unitàfunzionalepiùdiunavoltainogniciclo§ perciòdobbiamodistinguerememoriadatiememoriaistruzioni
• Inoltreoccorrecondividereilpiùpossibilelevarieunità
Esempio• ConquestocircuitoriusciamoaeseguireistruzioniditipoR eistruzioniditrasferimentonellamemoria
Peristruzione ditipoR:
• ALUSrc=0• REGwrite=1• MemtoReg=0
Peristruzione lw• ALUSrc=1• REGwrite=1• MemtoReg=1
Un esempio più completo
Circuiteriaperisalticondizionati
ConquestoDATAPATH
possiamofareistruzioniditipoR,memorizzazioniesalticondizionati
Prima implementazione completa
• Perarrivareaunaprimaimplementazionecompletapartiamodaldatapath mostratoeaggiungiamolapartedicontrollo
• Implementeremoleistruzioniüadd,sub,and,orandsltülw,swübeq
• Successivamentevestremo comeintrodurreüj
Cominciamo dalla ALU
• LaALUvieneimpiegataper:§ Effettuare operazionilogico-aritmetiche(tipoR),compresoslt§ Calcolareindirizzidimemoria(per sw elw)§ Sottrazioneperbeq
• Perquestediverseoperazioniabbiamounadiversaconfigurazionedegli inputdicontrollo(LineacontrolloALU)
LineacontrolloALU Operazione
0000 AND
0001 OR
0010 Somma
0110 Sottrazione
0111 SLT
1100 NOR
Ancora sul controllo della ALU
• Pergenerarei4bitdicontrollodellaALUuseremounapiccolaunitàdicontrollochericeveiningresso§ ilcampofunct prelevatodall’istruzione§ duebitdeti ALUop
üALUop =00->sommaperistruzionidisw elwüALUOp =01->sottrazioneperbeqüALUOp =10->operazioneditipoR (specificatodalfunct)
Decodifica a livelli multipli
• Quellocheabbiamovistoè unsistemadidecodificaegenerazionedeicomandiaduelivelli§ Livello1:generaisegnalidicontrolloALUOp perl’unitàdicontrollodellaALU
§ Livello2:(unitàdicontrolloALU)generaIsegnalidicontrolloperlaALU
Unità di controllo dell’ALU
• IsegnalidicontrollodellaALUsonogeneratidaunaretelogicacombinatoria(unitàdicontrollodellaALU)
• BisognerebbeelencaretuttelecombinazionidiingressodiALUop edeicampifunct (8bitintutto)
• Perevitaredielencaretuttelecombinazioni(chesono256)useremoXcomewildcard (unpo’come*nelfilesystem).
Unità di controllo principale
• Riguardiamoicampi.Op[5-0]codice
operativo
dueregistrida
leggere
Registrobaseperlwese
offsetperbeq,lw,sw
Registrotarget
Registrotarget
Poichè ilregistrotargetpuòessereinposizionediversaoccorreunMux
L’unità di controllo
• L’unitàdicontrollogeneratuttiisegnalidicontrollo
• Ancoraè unaretecombinatoriacheprendecomeinputilcodiceoperativodell’istruzioneegeneraIcomandidelcaso,secondolaseguentetabella
Partiamo dalla ADD
• Pereseguireun’istruzioneditipoR(comeadd $t1,$t2,$t3)occorre1. prelevarel’istruzionedallamemoriae
incrementareilPCdi42. leggeret2et3dalregister file3. attivarelaALUconininputidatidalregister file4. memorizzareilrisultatonelregistrodestinazione
• Tuttoquestoavvieneinunsolociclo
Passi sul processore
Prelievo:nelMux
rimaneattivoilramoalto
IstruzioneditipoR:ilregistro
destinazioneècodificatoin15- 11
IstruzioneditipoR:ilcontrolloredellaALUusai
bitfunct
Inquestomux èattivalalinea
bassa(nonusolamemoriaperil
risultato)
Altro esempio
• Consideriamooral’istruzionelw $t1,offset($t2)
• Fasi1. lafasediprelievoè ugualeaprima2. prelevare t2dalregister file3. sommaret2aicampioffsetdell’istruzione (I16bit
menosignificativi)4. l’indirizzovieneusatopermemoriadati5. ildatoprelevatodallamemoriadatiememorizzato
int1
Passi sul processore
Prelievo:nelMux
rimaneattivoilramoalto
Inquestomux èattivalalinea1(secondoinputdatodaoffset)
Inquestomux,stavolta,ildatochepassaèquellosopra(provenienzamemoria)
Ilregistrotargetèstavoltaquello
puntatodaibit20-16
E ora il salto condizionale
• Consideriamooral’istruzionebeq $t1,$t2,offset
• Fasi1. lafasediprelievoè ugualeaprima2. prelevare t1et2dalregister file3. laALUsottrare t1dat2.IlvalorediPC+4viene
sommatoall’offset(estesoa32bit)eshiftatodiduevolte(perindirizzarewordenoninbyte)
4. lalinea0dellaALUvieneusataperdecidere acosasettareilPC
Sul processore
ConbranchsettatoseilrisultatodellaALUèzerosiattivailramo
uno
Ilregistrotargetè del
tuttoirrilevante
LaALUsottraeIdue
registri
Implementazione
• Dopoavercapitoacosaservonoivaricomandipossiamopassareall’implementazionesecondolatabellagiàvistainprecedenza
• Laprimacolonnadiquestatabellasitraducenelcodiceoperativo(bitda0a5dell’istruzione)
Salto incondizionato
• Ilformatodell’istruzionedisaltoincondizionatoè laseguente:
• L’esecuzione dell’istruzioneprevede:• incrementodelPCdi4• sostituirealPCunnuovovalorecosìottenuto:• Iquattrobit+significativi rimangonouguali• I bitdal27all’1sostituiticonilcampoindirizzo
dell’istruzione• Iduebitmenosignificativisonomessiazero
Modifiche al processore
UnulterioremultiplexerpermettedisettareilPCall’indirizzodeljump
I4bitpiu’significatividelPC
vengonogiustappostiai26bitdelcampo
dinirizzi(shiftatididue
Considerazioni Conclusive
• Abbiamovistocomerealizzareunsempliceprocessorecheesegueleistruzioniinunciclo
• Questononsifapiùperché:§ Adettareilclocksonoleistruzionipiùlente(accessoallamemoria)
§ Sesimettonoistruzionipiùcomplessediquellecheabbiamovisto,lecosepeggioranoancoradipiù(esempioistruzionifloatingpoint)
§ Nonsiriesceafareottimizzazioniaggressivesullecosefattepiùdifrequente.