Il Processore - Home page | Department of information...

51
Il Processore Luigi Palopoli

Transcript of Il Processore - Home page | Department of information...

Il Processore

LuigiPalopoli

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)

Ancora sul controllo della ALU

Tabellariassuntiva

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 dell’ALU

Tabelladiverita’(compressa):

Unità di controllo principale

• Riguardiamoicampi.Op[5-0]codice

operativo

dueregistrida

leggere

Registrobaseperlwese

offsetperbeq,lw,sw

Registrotarget

Registrotarget

Poichè ilregistrotargetpuòessereinposizionediversaoccorreunMux

Panoramica dei segnali di controllo

Tabella riassuntivo dei segnali di controllo

Schema complessivo

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)

Implementazione

• Aquestopuntogliinputeglioutputsonoquellispecificatinellaseguentetabella:

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.