Sei sulla pagina 1di 14

Archidueappunti

Registerspilling:tecnicadimetterelevariabilimenousateinmemoria

Ciclodiesecuzionediun'istruzioneMIPS
Fetchprelievodell'istruzione
Decodedecodifica
ExecuteCalcolo
Lettura/Scrittura
WriteBack(WB)

Leinstruzionicompresenellinguaggiomacchinadiognicalcolatorepossonoessere
classificatenelleseguentiquattrocategorie:
aritmeticologiche
ditrasferimento(dalla/versolamemoria)[load/store]
disaltocondizionatoenon(perilcontrollodelflussodiprogramma)
ditrasferimentoiningresso/uscita,input/output,I/O

L'architetturaMIPSunaRISC,tuttelesueistruzionihannolastessadimensione,32bit.
I32bithannounsignificatodiversoasecondadelformato(otipo)dell'istruzione.
Iltipodell'istruzionericonosciutoinbasealvaloredei6bitpisignificativi.[OPCODE
codiceoperativo]
LeinstruzioniMIPSpossonoesseredi3tipi:
TipoR(register)lavoranosu3registri
TipoI(Immediate)lavoranosu2registri,l'istruzionesuddivisain16bitdiinformazioni+
16bitriservatiadunacostante
TipoJ(Jump)lavoranosenzaregistri:opcode+indirizzodisalto

ISAInstructionSetArchitecture
Insiemedelleistruzioni(interfacciaversoilinguaggiadaltolivello):tipologiadiistruzioni,
meccanismodifunzionamento
Codificadelleistruzioni(interfacciaversol'hardware):formatodelleistruzioni,suddivisionein
gruppiomogeneideibitchecostituisconol'istruzione

DueprocessoriconlostessolinguaggiomacchinahannolastessaISAanchesele
implementazionihardwarepossonoesserediverse.

L'ISAspecificacomevengonocostruiteleistruzioniinmodotalechesianocomprensibilialla
macchina(inlinguaggiomacchina).

PIPELINE
Stadidellapipeline:
IF:InstructionFetch,PrelievoIstruzione
ID:InstructionDecode,Decodificadell'istruzione+letturadelregisterfile
EX:Execution,Esecuzione

MEM:MemoryAccess,lettura/scrittura
WB:WriteBack,Scritturadelregisterfile

Criticit(Hazard)
Sihannoquandoun'istruzionenonpuessereeseguitanelciclodiclockimmediatamente
succssicoaquellaprecedente
Criticitstrutturali:dovreiutilizzarelastessaunitfunzionaleduevoltenellostessociclodi
clock(risolvibilemodificandoloschemadelprocessore),risolvibiliconladuplicazionedelle
unitfunzionali(adesempiolatriplicazionedelleALU)
Criticitdicontrollo:dovreiprendereunadecisionesull'istruzionesuccessivaprimache
l'esecuzionediquellacorrentesiaterminata(adesempioleistruzionisuccessiveaduna
branch)
Criticitsuidati:dovreieseguireun'istruzioneincuiunodeidatiilrisultatodell'esecuzione
diun'istruzioneprecedente,adesempio:add$s0,$t1,$t1add$s2,$s0,$t3

Lostallounapossibilesoluzioneperl'hazardsuidati:Noneseguoistruzioniperuncerto
numerodiclock,finoaquandoilrisultatodiun'istruzionedisponibileperquellachedeve
usarlo.
Sesaltonciclidiclockinserendon"nop"siformerannonbolle(bubbles)nelfunzionamento
dellapipeline.

Infasedicompilazioneilcompilatorepotrebbeessereingradodiriorganizzareilcodicein
mododariempirequellebolleeseguendoprimadelcodicesuccessivoall'istruzioneche
causal'hazard,semprechequestamodificanongenerinuovihazard.

IlRegisterFilenonsoggettoacriticitapattochesiutilizzinoLatchditipoDenon
FlipFlopcomenelleCPUasingolociclo.(?)

GraziealForwardingpossibilepassareunrisultatoall'istruzionesuccessivaprimache
vengasalvatoinmemoria.
Ilrisultatodiunaadd(osub)gicalcolatoallafinedelladasediesecuzione.
Retropropagazione

Nellecpuasingolociclo,leoperazionidigenerazione,produzioneerestituzionedeldato
avvengononellostessociclo.
Nellecpumulticicloavvengonoinciclidiversi.
Adesempio:
add$t0,$t1,$t2
Generazionedeldato:fasedidecodifica

Produzionedeldato:fasedicalcolo
Restituzionedeldato:fasediWriteBack
Sel'instruzionesuccessivaallaadd(chevieneeseguitasubitodopo)necessitadeldato
restituitodallaprecedentecisitrovainunasituazionechiamataHazard,perchildatonon
ancoradisponibile

Soluzionemediantepropagazione:
Siattivaquandoc'unacriticitsuidatioriginatadaunadipendenza.
Seildatocriticogidisponibileall'internodellapipelinesiprelevaesipropaga(mediante
tunnelling)all'indietroall'istruzionechenehabisogno.
Ildatocriticogidisponibilequandol'istruzionechegeneraildato,hacomefaseutilela
fasediEX.
Siattivauncamminoaritrosoall'internodeldatapathdallafasediWB(odiMEM)allafase
diEX.

Riepilogosoluzioniperlecriticitsuidati:
buonascritturadelcodice
compilatoreefficientenelriordinamentodelcodice
architetturacherendadisponibiliidatiappenaprontiallafasediesecuzione
accettareunostallo,perchnonsemprelosipuevitare

Criticitnelcontrollo:
Incasodisaltonondevoavergicaricatoleistruzionisuccessive,perchpotrebberonon
doveressereeseguite!
Soluzioni:
modifichestrutturaliperl'anticipazionedeisalti
riordinamentodelcodice(delayedbranch)

Anticipazionedellavalutazionedellabranch:modificadellaCPU,aggiungounaALUeun
comparatoreperconfrontareRseRtdurantel'InstructionDecode

SoluzioneHW:Decisioneritardata.Cisiaffidaall'hwdellaCPUpergestirel'eliminazione
delleistruzioni(flush)
SoluzioneSW:Aggiuntadiun"branchdelayslot",un'istruzionesuccessivaaquelladisalto
chevienesempreeseguitaindipendentementedall'esitodellabranch.

Contiamosulcompilatore/assemblatorepermetteredopol'istruzionedisaltounaistruzione
cheandrebbecomunqueeseguitaindipendentementedalsalto(adesempioposticipo
un'istruzionecheprecedelabranch)


EccezionieInterrupt

Alteranoilfunzionamentodiunprogramma(sonofunzionalmenteequivalentiadunajump)
Leeccezioni,generalmenteinternamentealprocessore,modificanoimmediatamenteil
flussodiesecuzionediun'istruzione.(overflow)
Gliinterrupt,generatiesternamentealprocessore,sonointerruzioniasincroneeviene
generalmenteattesoilterminedelciclodiesecuzionediun'istruzioneprimadiservirlo
(richiestadiattenzionedapartediunaperiferica)

Pipelineavanzate:esecuzioneparallela
Superpipelining(pipelinepilunga)
"multipleissue"(esecuzioneparalleladiunissuepacket)
staticmultipleissues(schedulazionedecisadalcompilatore)
dynamicmultipleissues(schedulazionedecisadallaCPUaruntime)

Superpipeline:
pipelinepilunghe(ArmA8eIntelCorei7hanno14stadi)
Teoricamentesidovrebbeavereunguadagnoinvelocitproporzionalealnumerodistadi.
Problemi:
criticitsuidati:stallipifrequenti
criticitsulcontrollo:numeromaggioredistadidicuiannullarel'esecuzione(flush)
maggiornumerodiregistri:ilclocknonsiriducelinearmenteconilnumerodeglistadi

Staticmultipleissues:(?)

Dynamicmultipleissues:
ProcessoriSuperscalari
Lasceltadiqualiistruzioniinviareallapipelinevieneeseguitadurantel'esecuzionestessa.
Dipendedallacompatibilittralevarieistruzioniedaeventualihazardsudatiecontrollo.
Nellaversionepisemplice,leistruzionisonoprocessateinsequenzaedilprocessore
decideseelaborarnenessuna(stallo),unaopidiunaasecondadellecriticitriscontrate.
L'ottimizzazionedelcodicedapartedelcompilatorecomunquerichiesta.
E'laCPUchegarantiscelacorrettezzadell'esecuzione.

ConfrontotraMultipleissuestaticiedinamici:
L'hardwarediunapipelinesuperscalaregarantiscelacorrettezzadelcodice.
IlcodiceverreseguitocorrettamentequalunquesialaCPUsulqualevienefattogirare.

Nellemultipleissuestaticheinvece,spessooccorrericompilareperpassareadunaltraCPU
ocomunquesirischiadiottenereprestazioniscadenti.

Schedulazionedinamica
Obbiettivo:mettereinesecuzioneistruzionichenonpresentinocriticit.
Leistruzionivengonobufferizzatedallareservationstation,laqualegestiscelacodadelle
istruzionichehannobisognodellastessaunitfunzionale.
Alterminedell'esecuzione,lareorderstationprovvedeaordinareleistruzioninella
sequenzaconlaqualedevonoessererestituite.
Pereseguireun'operazionesufficientecheildatosiagiprontonelreorderbuffer,senza
chesianecessariamentescrittonelregisterfile.
Quandoidatisonoprontiun'operazionevienelanciata.Seundatononprontoviene
inseritaun'etichettacheassocia(traccia)ildatoalcamminochelodeveprodurre.
Quandoildatovieneeseguito,tramiteetichettasiliberailbloccoall'esecuzione
dell'istruzione.

LaSpeculazione
richiedel'analisidelvaloreassuntoruntimedairegistri.
consentedispostareleistruzioniall'internodelcodiceperrimuoverel'hazard.
Registerrenamingerollback:ilcompilatorepuutilizzarelaspeculazioneperriordinarele
istruzioni,decidereilnomedeiregistridellapipelinedaassociareairegistridelregisterfile
(visibilialprogrammatore)

LaSpeculazionenellemultipleissue
puesserefattasiadalcompilatorechedalprocessore
Selaspeculazionerisultasbagliatadeveesistereunmeccanismodicorrezione(rollback).
Nellemistaticheilcompilatoreinseriscedelleistruzionidicontrolloedicorrezionea
speculazionierrate
Nellemidinamicheibuffercollezionanoirisultatichevengonoscrittinelregisterfile
solamentequandolaspeculazionestataverificatacomecorretta

DiversitipidiParallelismo
Parallelismo(parziale)nell'esecuzione>pipeline
Parallelismonell'esecuzionesucamminimultipli>multipleissue
Parallelismonell'esecuzionediistruzioni(vettoriali)>parallelismoalivellodiparola
ParallelismosuCPUdiversechecondividonolamemoria>multicore

IlBUS(connessioneacamminocomune)

pathwaycheconnettetuttiidispositiviinmodobidirezionale.
Trasferimentoparallelodeidati.
Connessionibidirezionali.

Principalivantaggidellastrutturaabussingolo:
elevataflessibilit
costibassi
Problema:pidispositivinonpossonotrasmettereincontemporanea

Ilbusquindisidistribuiscesu3gruppifunzionali:dati,indirizziesegnalidicontrollo.

Transazionesubus:sequenzadioperazionichepartonodaunarichiestaesiconcludono
coniltrasferimentodidati.

Esistonodueschemiprincipalidiconmunicazionesudiunbus(schemiattiaoperareuna
trasazione):sincronoeasincrono.

Bussincroni:
tralelineedicontrollopresentelalineacheportailsegnalediclock(busclock).Esisteun
protocollodicomunicazionescanditodaiciclidiclock,ingeneralediverso(masincronizzato)
daquellodellaCPU.
Questotipodiprotocollopermettediottenerebusmoltoveloci.
Svantaggi:ognidevidedeveesseresincronizzato,lunghezzalimitataperevitarecheiritardi
deifrontidovutiallapropagazioneproducanodisallineamenti(clockskew),tuttiidispositivi
devonopoterlavorareallafrequenzaimpostadalbusclock.
Ibusprocessormemorysonospessosincroniinquantohannodimensioniridotteehanno
pochielementiconnessi.

Unbuscycle(ciclodibus)ilnumerodiciclinecessaripereffettuareunatransazione:
tipicamenteda2a5ciclidibusclock.

Busasincroni:
unbusasincrononondotatodiclock.
Lacomunicazionetraduepartiavvienemedianteunprotocollodihandshaking.
Ibusasincronipossonoaverelunghezzaelevataperconnetteremoltidispositivi.
Sonoefficientiquandoitempidiesecuzionedellevarieperiferichevarianomoltotraloro.
SpessiibusdiI/Osonoasincroni.

Esempiodihandshaking:
DataReq:segnaledicontrollodiMemoryReadincorrispondenzadelqualel'indirizzodella
paroladimemoriavieneinviatosulbusdati.
DataRdy:utilizzatoperindicarechelaparolaprontasullelineedidato.Questosegnale
vieneinviatodallamemoriaquandoildatodisponibileinuscitadallamemoria.
Ack:utilizzatocomerispostaai2segnaliprecedenti.Feedback(lettoindirizzo,letto/scritto
ildato).

Arbitraggiodelbus
LacomunicazionesubusdeveessereregolataattraversounProtocollodiComunicazione.
VieneintrodottoilconcettodiBusMaster(padronedelbus),ilcuiscopoqeullodi
controllarel'accessoalbus.
L'architetturapisemplicequellacheprevedeununicobusmaster(ilprocessore)incui
tuttelecomunicazionivengonomediatedalprocessorestesso.
Questaarchitetturaperpucreareuncollodibottiglia:adesempionelcasodi
trasferimentodatidaI/Oamemoria.

Peraggirareilcollodibottigliasiutilizzaun'architetturaconpidispositivimaster.
Inquestocasooccorredefinireerispettareunapolicychecoordiniivaridispositivibus
master.QuestapolicysichiamaArbitraggiodelbus.
Unsolodispositivopuesseremaster,tuttiglialtriascoltano.
Adognidispositivovieneassegnataunapriorit.
Ildispositivoconprioritmaggiorepuaccedereprimaalbus.
Meccanismodiaccessoalbus:
1)BusRequest(richiestadelbus)
2)BusGrant(assegnamentodelbus)
Ilproblemaassicurareequitnellasceltadell'assegnamento(fairness).
BisognatrovareuncompromessotraPrioriteFairness.

I/Obus&buffer
IdispositivisonocollegatialbustramitePorte.
Tipicamente,all'internodelleunitcheutilizzanoilbus,sonopresentideiregistridibuffer
permantenerel'informazioneduranteitrasferimentienonvincolarsiallavelocitdel
dispositivopilentoconnessoalbus.

Funzionamentodiundriver:
1)laCPUrichiedeallaperiferica(alcontroller)l'esecuzionediun'operazionedireadodi
write
2)idaticoinvoltinell'operazionedevonoesseretrasferitidaeversolamemoriacentrale
Perpotereseguireun'operazionediread/writeoccorrespessounaseriedioperazionisul
dispositivochevengonoeseguiteattraversoilcontroller.
Duemodalit:IstruzionispecialidiI/OeMemorymapped.

IstruzionispecialidiI/O:
Istruzioniappartenentiall'ISAcheindirizzanodirettamenteildispositivo(iregistridel
dispositivo):
numerodeldispositivo
paroladicomandooindirizzodellaparolachecontieneilcomando
Sulbuspossibileinviareilnumerodeldispositivosuuninsiemedilineededicate.

Cisarannolineededicateancheaisegnalidicontrollo(read/write).
Idativiaggerannosullelineededicateaidati.
Rendendoleistruzioniillegalialdifuoridellkernelmodedelprocessore,iprogrammiutente
nonaccedonodirettamentealdevicecontroller.
es.:out70,ax#trasferisciallaportadiI/O70ilcontenutodiAX

IndirizzamentoMemorymapped:
IregistrideldevicecontrollersonoconsideraticomecelledimemoriaRAM.
IloroindirizzisarannodiversidaquellidellecelledimemoriaRAMeffettive.
IlprocessoreesegueoperazionidiI/Ocomesefosserooperazionidilettura/scritturain
memoria.
es.:
sw$s0,indirizzo
lw$s0,indirizzo
doveindirizzoaldifuoridellospaziofisicodellamemoria
Icontrollerascoltanotuttiisegnaliintransitosulbus(bussnooping)esiattivanosolamente
quandoriconoscono(sulbusindirizzi)l'indirizzocorrispondenteallaproprialocazionedi
memoria.
Gliindirizziriservatiairegistridelcontrollerfannodisolitoriferimentoallaporzionedi
memoriariservataalSOenonaccessibilequindialprogrammautente.
IprogrammiutentedevonoquindipassaredalSOperaccedereaquestiindirizziriservati
(modalitkernel)equindieffettuareoperazionidiI/O.
QuestoquantovienefattoricorrendoalleSystemCalls.

Funzionamentodeidevicedriver:
controllanol'operatodeidevicecontroller
gestisconoloscambiodeidatidalcontroller(registrodati)elamemoria

I/Oacontrollodaprogramma:
I/Oacontrollodaprogrammaconpolling:
ciclodipolling:duranteunciclodibusywaitingsuundispositivo,siesegueilpollingsugli
altridispositividiI/O
quandounaperifericanecessitadiunqualcheinterventosisoddisfalarichiestaesi
prosegueilciclodipollingsuglialtriI/O
imiglioramentidelpollingrispettoalcontrollodiprogrammasonomoltolimitati
iproblemiprincipalidelpolling(edell'I/Oacontrollodiprogramma)sono:
conperiferichelenteuneccessivosprecodeltempodiCPU,cheperlamaggiorpartedel
temporimaneoccupatanelciclodibusywaiting
conperiferichevelociillavorosvoltodallaCPUquasiinteramentedovutoall'effettivo
trasferimentodeidati
ilpollingfunzionabeneperisistemiembedded
I/Omedianteinterrupt:
laperifericaasegnalarealprocessore(suunalineadelbusdedicata)diaverebisognodi
attenzione
lasegnalazionevienechiamatainterruptperchinterrompeilnormalefunzionamentodel
processore(attraversoun'interruptrequest)

quandoilprocessorerilevaquestarichiesta(infasedifetch),laperiferica(penso)riceveun
segnalediinterruptacknowledge
vienedunqueeseguitaunaproceduraspeciale,chiamataproceduradirispostaall'interrupt
necessariounsalvataggiodelcontestoperchilprogrammautentedevepoterprocedere
dalpuntoincuistatointerrotto
DMAdirectmemoryaccess:
trailmomentoincuiterminal'inviodelcomandoalcontrolleredilmomentoincuiildato
disponibilesulcontroller,laCPUpufarealtro(tipicamenteeseguireunaltroprogramma)
ilDMAstatointrodottoperevitarel'interventodellaCPUnellafaseditrasferimentodati
IlDMAcontrollerunprocessorespecializzatoneltrasferimentodatitradispositivodiI/Oe
memoriacentrale
dopoavertrasferitotuttiidati,ilDMAinviauninterruptallaCPUpersegnalareil
completamentodeltrasferimento

HardDisklettura/scrittura
Perleggere/scrivereinformazionisononecessaritrepassi:
latestinadeveessereposizionatasullatracciacorretta
ilsettorecorrettodevepassaresottolatestina
idatidevonoessereletti/scritti

Tempodiseek(ricerca):tempopermuoverelatestinasullatracciacorretta.
Tempodirotazione:tempomedioperraggiungereilsettoredatrasferire(tempopermezza
rotazione),misuratoinrpm(roundsperminute)
Tempoditrasferimento:tempopertrasferirel'informazione.
Aquestitempivaaggiuntoiltempoperleoperazionidelcontroller.

HIT:successoneltentativodiaccessoadundato,presenteallivellosuperioredella
gerarchia
MISS:fallimentodeltentativodiaccessoallivellosuperioredellagerarchia,ildatoo
l'indirizzodevonoesserecercatiallivelloinferiore
HITRATE:percentualedeitentatividiaccessoailivellisuperioridellagerarchiachehanno
avutosuccesso.
MISSRATE:percentualedeitentatividiaccessoailivellisuperioridellagerarchiachesono
falliti.
HITRATE+MISSRATE=1
HITTIME:temporichiestoperverificareseilbloccopresenteallivelloattualedella
memoria.
MISSPENALTY:temporichiestopersostituireilbloccodimemoriamancanteallivello
superiore+temponecessarioperinviarloalprocessore.
MISSTIME=HITTIME(chevienerestituitoancheincasodimiss)+MISSPENALTY


Missinlettura,devoaspettarecheildatosiaprontoincache>stallo.
PassidaeseguireincasodiMiss(faseMEM)
ricaricarelapipeline(PC>PC4)
leggereilbloccodimemoriadallamemoriaprincipale
trasferireilbloccoincache,aggiornareicampivaliditetag
avviarelafasedifetch,decodifica,esecuzione,memoriadell'istruzioneconidaticorretti

LoscopodellacachequellodifornireallaCPUunavelocitditrasferimentopariaquella
dellamemoriapiveloceconunacapacitpariaquelladellamemoriapigrande.
Lacachepuconteneresolounapartedellamemoriaprincipale.
OgniparoladicachecontieneKparoledellamemoriaprincipale(bloccodiparole).
IlcampoTagindicaqualebloccodiRAMscrittonellacorrispondentelineadicache.
Leparoledicachesonoindipendentitraloro.
Lelineediunacacheindicanoblocchicostituitidakparole.
Ciascunaparolacostituitadambyte(MIPS:m=4).
possiamomettereincorrispondenzaunbloccodimemoriaprincipaledinbyte(n=k*m)con
unalineadicache.
Comesiottienel'indirizzodicache?
lw$t0,14($t1)caricoincachetuttoilbloccoassociatoall'indirizzo$t1+14
identificoilbloccodimemoriaprincipaleacuiappartieneilbytedaleggere/scrivere
[vediL_11pag18]

Aggiungiamoaciascunadellelineedellacacheuncampotag.
Iltagcontieneibitchecostituisconolapartepisignificativadell'indirizzoerappresentail
numerodibloccodiRAMincuiildatodicachecontenuto.
EssocostituitodaKbit:
k=Msup(log2(Capacit_cache[bytes]))
occorreinoltrel'informazionedata_valid/data_non_valid(ilbitdivalidit)

|tag|bitv|dati|

Comeleggere/scriveresulla/dallacache
individuarelalineadellacachedallaqualeleggere/scrivere
confrontareilcampotagconilbloccoRAMincuirisiedeildato
controllareilbitdivalidit
leggere/scrivereildato
()perblocchipiampidiunaparolaoccorreindividuareunaparolatralekpresentinella
lineadicache.

[ripetiL_12eL_13]

7.[5]Cosasiintendeperhitemissecomevengonogestiti?Chiligestisce?Cosasiintende
pergerarchiadelle
memorie?Qualisonoiprincipiinbaseaiqualivieneprogettatalacacheprimariae
secondaria?Cosasiintende
percoerenzaeconsistenzadiunamemoria?Aqualetipodimemoriasiapplicano?Quali
sonoimeccanismi
messiinattopergarantirelacoerenzadellamemorianellearchitetturemonoe
multiprocessore?Qualisonoi
vantaggiesvantaggidiciascunmeccanismo?Iltrasferimentoinunagerarchiadimemorie
avvienetradue
livelliconsecutiviobbligatoriamente?Perch?

MemoriaPrincipale
Lememorieincuiognilocazionepuessereraggiuntainunbreveeprefissatointervallodi
tempomisuratoapartiredall'istanteincuisispecifical'indirizzodesiderato,vengono
chiamatememorieadaccessocasuale(RandomAccessMemory,RAM).
NelleRAMiltempodiaccessoallamemoriafissoeindipendentedallaposizionedella
parolaallaqualesivuoleaccedere.
Ilcontenutodellelocazionidimemoriapurappresentaresialeistruzionicheidatisucui
l'architetturastalavorando.
Lamemoriapuesserevistacomeunarraymonodimensionale.

[L_14]

Memoriavirtuale
[L_15]
Lamemoriaprincipalepuesserevistacomeunamemoriacachedeldisco.
Unavoltasiutilizzavanoglioverlaypercaricare/scaricaresegmentidicodice+datidadiscoa
memoriaprincipale.
Lamemoriaprincipalelastessaperpiprogrammiinesecuzione,iqualicondividonolo
stessospaziodiindirizzamentoesonoinizialmenteresidentisudisco.
Lamemoriavirtualeconsentedimapparelospaziodimemoriadiciascunprogrammanella
memoriaprincipalefisica,evitandosovrapposizionieconsenteunagestionesicuradella
memoria.
Lamemoriavirtualeconsenteanchedinasconderealprogrammatoreladimensionelimitata
dellamemoriaprincipalerispettoallamemoriasudisco.
LamemoriavirtualeconsentedigestireinmodoefficaceleVM.
Unbloccodimemoriavirtualeedimemoriaprincipaleviene
chiamatopagina(equivalenteallalineadellacache).
Unamissdallamemoriaprincipaleingivienechiamatapagefault.

Lindirizzovirtualevienetradottoinunindirizzofisicodellamemoria
principale.Sesiverificaunahit,lesecuzionecontinuacorrettamente,
sesiverificaunpagefault,occorrecaricarelapaginainmemoria
principale.
Latraduzionedaindirizzovirtualeadindirizzofisicovienefattaal
momentodelcaricamentodelprogrammamediantelarilocazione.
TLBTranslationLookasidebuffer

Multicore+Clusters
[L_16]
Esercizio:
DataunaCPUquadcore,a64bit(datifloatsu64bit)con8camminidicalcoloperciascun
core,inciascunodeiqualivengonoelaboratidatia256bit.DettaCPUhaunclockdi4GHz.
AquestaCPUassociatounsistemadimemoriacheingradodisostenerelelaborazione
conunflussodatidallamemoriaallaCPUparia2Gbyte/s.Determinarelamassimavelocit
dielaborazionedellaCPUper6diversiprogrammibenchmarkchehannointensit
aritmeticarispettivamentedi:,,1,4,8,32edeterminareseleprestazionisonolimitate
dallamemoriaodalcalcolo.
Vorreicapirequalisonoipassaggidafareperrisolverlo.

Laprimacosaricavarela(teorica)potenzadicalcolo.Questofacilepoich:
4(numerocore)*8(numerounitdicalcolopercore)*4(numerodifloatnelbus)*4(
frequenzaCPU)=128GFLOPS.
Ora,sapendocheilbusdatifornisce2Gbalsecondo,sideterminacheilpuntodi"rottura"
delleprestazionisihaa128/2=64.
Questosignificachetuttie6iprogrammidibenchmarksonlimitatidallamemoria.
Ora,l'intensitaritmeticaunindicedellaquantitdi"richieste"cheunaCPUnecessitadi
fareallamemoriadurantel'esecuzionediquelprogramma.Questosignificache,essendo
limitatidallamemoria:
Tempodicalcolo=Flops/Banda*Intensit
(N.B.Iopossopermettermidiignorarelevariepotenzedi10perchsiabandacheFlops
son10^9,masolonelmiocaso)
(N.B.2TeoricamenteilFlopsnellaformulanonquellodellaCPUmaquellodelprogramma
(ovverounastimadelnumerodioperazionicheilprogrammaeseguir).Vistocheperson
benchmark,possiamoassumerechecerchinodispremereilmassimodellaCPU).
Ergo,ilprimoprogrammahaunavelocitdiesecuzioneteoricadi:
128/(1/4)*2=256(P.S.Sembraunnumeroimmenso,edeffettivamentelo,tuttavia1/4
signficacheilprogrammaesegue4accessiallamemoriaperognioperazionearitmeticain
media.EabbiamovistoprimacheilproblemadellanostraCPUlabandamoltolimitante).
Notiamochepisaliamo,piilvaloreditemposiriduceperchsiriduceilbottleneckdato
dallamemorialenta.Difatti,adesempio

128/32*2=2secondi.Questoperchilprogrammaesegueunamediadi32operazioni
perogniaccessoallamemoria,enelnostrocasounamannacheciavvicinaalcaso
"ideale".
Ilconsigliomaggiorechepossodarvisemplicementericordarvicom'strutturatoilgrafico
delrooftline.Unavoltachesihaintestaquellofacilefartornaretutto.

num_core*cammini_di_calcolo*float_nel_bus*frequenza_CPU=FLOPS(4ghzdifrequenza>
GFLOP)

[2]Descrivereproblemievantaggidellearchitettureaparallelismoesplicito:multicoree
cluster,
confrontandoletraloro.

Intel
[L_17]
L'architetturaintelx86unaCISC,lalunghezzadelleistruzionivariada1a15bytes
E'un'architetturacondizionatadallastoriaperchnecessitadiretrocompatibilit,perquesto
implementamodalitcomelaRealmode,ProtectedmodeeVirtual8086mode.
Nascecomearchitettura"not"generalpurposeregisters:ogniregistroprogettatoperun
usospecifico.Dall'80386inpopivengonodefiniti8generalpurposeregisters,manonveri
comeperilMIPS

ChetipodiarchitetturaunarchitetturaINTEL?Riportarealcunecaratteristichee
confrontarealcuneistruzionicon
lequivalenteMIPS
confrontoconilMIPSpag.11

Prestazioni
[L_18]

Benchmarks:programmipervalutareleprestazioni.

SPEC:StandardPerformanceEvaluationCorporation
LoSPECunacorporazionenonprofitcostruitaperstabilire,mantenereeapprovareunset
standardizzatodibenchmarkchepossanoessereapplicatiallepirecentigenerazionidi
computer.

FLOPS:FLOatingPointperSecond,unitdimisuradellavelocitdicalcolo.
Velocitsinglecore:Vcore
Velocitmulticore:Vmulti=P*Vcore(dovePilnumerodicore)

IlmodelloRoofline
Nessunbenchmarkpuesserecontenutointeramenteincache.
Questomodellocompostoda2elementi:ComputationeMemoryTransfer

Perprogrammiabassaintensitaritmetica(elevatiaccessiallamemoriaperdato),illimite
offertodalsistemadimemoria.
Perprogrammiadaltaintensitaritmetica,illimitedatodallacapacitdielaborazionedella
CPU.

Computation:
senoncifosseroproblemiconlamemoria,leprestazionisarebberounalineaorizzontale
pariallamassimacapacitdicalcolo.
[L_18pag.13]

8.[6]Cosasonoibenchmark?CosloSPEC?Qualeruoloha?Cosilroofmodel?Cosa
rappresenta
lintensitaritmetica?SiricerisceadunaCPUoadunparticolareprogramma?Datauna
CPUCorei7Intelcon
8core,a64bit(datifloatsu64bit)con16camminidicalcoloperciascuncore,inciascuno
deiqualivengono
elaboratidatia128bit.DettaCPUhaunclockdi4GHz.AquestaCPUassociatoun
sistemadimemoriache
ingradodisostenerelelaborazioneconunflussodatidallamemoriaallaCPUparia
32Gbyte/s.Determinarela
massimavelocitdielaborazionedellaCPUper6diversiprogrammibenchmarkchehanno
intensitaritmetica
rispettivamentedi:1/8,1/4,1/2,1,4,8,32edeterminareseleprestazionisonolimitatedalla
memoriaodal
calcolo.

[3]Cosarappresentailroofmodel?Cosarappresentalintensitaritmetica?Siriceriscead
unaCPUoadunparticolare
programma?Qualisonoipassiperottimizzareleprestazionidelcodicesuggeritidal
roofmodel?