agens temaer er om pipeling! agens! er tema er hentet fra kapittel 4.3 og 4.4 om pipelining! Ytelse! Hasarder! ikrokode! RISC! Introdksjon! Hard-wired! ikroprogrammert og CISC! ordeler og lemper til neste kes forelesning (hvis tid)! Repetisjon:! Isteden for å vente til forrige instrksjon er ferdig eksekvert, setter man i gang neste instrksjon så fort som første steg av forrige instrksjon er ferdig.! Én instrksjon eksekveres ferdig per klokkesykel! ortsetinger:! n instrksjon kan deles opp i sekvensielle steg som løses etterhverandre! e like stegene tføres på egne hardware-enheter som ikke er avhengige av hverandre! Ideelt sett gir en k-trinns pipeline en faktor k i hastighetsøkning sammenlignet med en arkitektr ten pipelining! I praksis er dette ikke mlig grnnet latency og hasarder 2 Generell ytelse Latency! Tiden! Ytelsen en prosessor Ct brker på å tføre n instrksjoner er gitt av Ct CPI * I * t, der CPI er gjennsomsnittlig antall klokkesykler per instrksjon, I er antall instrksjoner og t er klokkeperioden (lengden på en klokkesykel), dvs /f P er definert som den inverse til Ct! Hvis en prosessor tfører n instrksjoner fllstendig sekvensielt på en k-trinns pipeline (ten å starte en ny instrksjon hver klokkesykel), trengs T s nkt! Benyttes derimot ekte pipelining, behøves T p kt + ( n ) t der kt er tiden det tar for pipelinen å fylles opp med den første instrksjonen, og (n-)t tiden for å eksevere de n- resterende. P Ct CPI * I * t f CPI * I! orbedringen blir da en faktor S gitt av T S T s p nkt nk kt + ( n ) t k + n 3 4
ksempel på pipelinet arkitektr (5-trinns) Utfordringer med pipelining () PC 4 Address 0 Add Instrction I/I I/X X/ / Instrction Registerbank for lagring av mellomverdier (data og kontroll) register register 2 Registers Write register Write data 6 data data 2 Sign etend 32 Shift left 2 0 Add Add reslt Zero reslt Address Write data ata data 0! Pipelining krever at alle stegene hver tar maks en klokkesykel! Spesielt tfordrende for instrksjoner med minneaksess : Velger klokkesykel lik den lengste! Lange instrksjoner vil brke mye lenger tid enn nødvendig 2: Klokkesykel med variable lengde! or komplisert! 3: Raskere minne! Cache bedrer ytelsen betraktelig 4: Bytte om rekkefølgen på instrksjoner! Gjøres atomatisk av kompilatoren 5 6 Utfordringer med pipelining (2) Ressrshasarder! Tilfeller! Hovedårsaken hvor man ikke kan starte en ny instrksjon hver klokkesykel! Kalles også for stalling til stalling er hasarder av like typer:! Ressrshasarder! atahasarder! Kontrollhasarder! n! Ressrshasard:! Vanligste! Bytte datamaskin består av mange delte ressrser:! RA,, Cache, registre er enn én instrksjon ønsker adgang til samme delte ressrs samtidig løsning på problemet er å brke ekstra hardware:! gen til adresseberegninger! Separate cache for instrksjoner og data! lere instrksjonsregistre! ange generelle registre om rekkefølgen på instrksjoner 7 8
I/X X/ /! Problem: atahasarder Benytter en operand/resltat som beregnes av foregående instrksjon A AN L R, R2, R6 R5, R6, R R5, R7 A R, R2, R6 AN R5, R6, R L R5, R7 Løsning : orwarding:! Legge til ekstra hardware slik at resltatet blir tilgjengelig bakover i pipelinen, dvs for instrksjoner som kommer etter Registers a. No forwarding! Vil ikke alltid fngere Registers I/X orwarda X/ ata ata / AN-instrksjonen trenger riktig verdi av R her Her blir R oppdatert med riktig verdi Rs Rt Rt Rd orwardb orwarding nit X/.RegisterRd /.RegisterRd 9 b. With forwarding 0 2: Bytte om rekkefølgen på instrksjoner 3: Sette inn tomme instrksjoner: NOP! Alternativt kan man stoppe prosessoren hvis problemet er Load A AN L SUB R, R2, R6 R5, R6, R R5, R7 R8, R3, R4 A L SUB AN R, R2, R6 R5, R7 R8, R3, R4 R5, R6, R A NOP NOP AN R, R2, R6 R5, R6, R A R, R2, R6 NOP NOP AN, R5, R6, R! Gjøres av kompilatoren, men! r komplisert og én flytting kan skape nye avhengigheter! Vil ikke alltid fngere! Vil! Benyttes L R5, R7 alltid fngere, men sløser bort prosessortid i kombinasjon med forwarding, og ombytte av instrksjoner 2
! Problem: Kontrollhasarder å kjenne resltatet fra foregående instrksjon ved betingede hopp! Betingede hopp kan redsere eksekveringshastigheten betydelig hvis man regner med at det aldri skal hoppes (dvs ikke gjør noe)! Gjennomsnittlig antall klokkesykler per instrksjon er gitt av AN R5, R6, R L R5, R7 SUB R2, R3, #5... Label L R4, R2 AN R5, R6, R L R5, R7 SUB R2, R3, #5 Potensielt bortkastede instrksjoner Klokkesykler! Absoltte CPI + b* p * p av p b er sannsynligheten for at en instrksjon er et betinget hopp p t er sannsynligheten for at man hopper ved betingede hopp b er straffen for å starte nødvendig eksekvering av instrksjoner hopp er ikke problem! en må detekteres ved compile-time og behandles deretter b t Vet først her om programmet skal hoppe eller ikke! 3 4 : Hopp-prediksjon! Prøver å fortsi om en betinget-hopp instrksjon faktisk vil hoppe! Benytter denne knnskapen til å starte eksekvering av korrekt instrksjonssekvens slik at flshing nngås! Tilstandsdiagram Hva skjedde? for dynamisk hopp-prediksjon! or å få bedre prediskjon benyttes 2-bits tilstand, dvs oppførselen må være lik for de 2 foregående gjennomløpene! Statisk prediksjon: Regner med at en bestemt type betingede hopp alltid/aldri fører til hopp, mao statisk oppførsel! nkel algoritme, men tar hensyn ikke til at programmer er dynamiske! Vil knne konsekvent fortsi feil ved f.eks while/for løkker! ynamisk prediskjon: Baserer seg på oppførelsen ved tidligere eksekvering av kodesekvensen! Krever noe mer hardware (må bla lagre tilstandsinfo)! Bedre treff-prosent enn statisk prediksjon Hva tror man vil skje? P r e d i c t t a k e n P r e d ic t t a k e n P r e d ic t n o t t a k e n P re d ic t n o t ta k e n 5 6
2: Parallelleksekvering av hoppinstrksjoner! Istedenfor å fortsi, starter prosessoren eksekvering av begge kodesekvenser i parallell til riktig hopp kan bestemmes AN R5, R6, R L R5, R7 SUB R2, R3, #5... Label L R4, R2 A R3, R6 ST (R3), #4 ST (R), #6 AN R5, R6, R L R4, R2 L R5, R7 A R3, R6 SUB R2, R3, #5 ST (R3), #4 Sperskalare prosessorer! n vanlig pipelined prosessor er begrenset til å eksekvere ferdig en instrksjon per klokkesykel.! Hastigheten kan økes ved å eksekvere flere instrksjoner i parallell:! lere instrksjoner kan kjøres samtidig,! nkelte steg kjøres samtidig, men har f.eks sekvensielle TCH-steg.! Sperskalare prosessorer har flere HW-enheter som gjør heltalls og flyttallsaritmetikk, load/store osv i parallell! Operasjoner som tar mye lenger tid enn andre sperrer ikke for andre instrksjoner.! Sperskalare prosessorer er mer kompliserte og krever ekstra kontrolllogikk, flere registre etc.! Pentim og G4 er sperskalare 7 8 Bss-interface enhet Instrksjon Instrksjon 2 Ikke-skalar pipelining Adresseenhet Instrksjon 3 Instrksjon 4 Instrksjons enhet Instrksjon Instrksjon 2 Sperskalar pipelining ksekveringsenhet ksekveringsenhet ksekveringsenhet Instrksjon 3 Instrksjon 4 Registre! Parallelliteten gjør sperskalare prosessorer mye vanskeligere å designe 9 20
esign av kontrollenhet! Under! Variant instrksjonseksekvering må riktige kontrollsignaler settes avhengig av instrksjonen : Hardwired kontroll! genskaper ved hardwired kontroll! Siden enheten er kombinatorisk (bortsett fra sekvenstelleren), er den meget rask. lagg IR! Tar liten plass! Ikke mlig å endre etter implementasjon! Kan bli for stor og komplisert ved sammensatte og komplekse instrksjoner Sekvensteller for kontrollenhet Kontroll Styresignaler 2 22! ikroprogrammert kontroll! Inneholder en liten CPU som tolker et styreprogram som styrer selve CPU en! genskaper ved mikroprogrammert kontroll lagg IR! er fleksible fordi mikroprogrammet kan byttes ndervies! Lettere å rette opp feil ved designet! Krever flere klokkesykler for å eksekvere en instrksjon + Sekvensteller for kontrollenhet! Krever stort CPU-areal Hkommelse ikroprogram 23 24
RISC og CISC () RISC og CISC (2)! To forskjellige filosofier for design og organisering av en CPU! CISC-arkitektr har mange maskinspråk-instrksjoner som kompilatorer kan brke ved oversettelse fra høynivå-språk til masinkspråk! Assemblerprogramering blir enklere i en CISC-arkitektr fordi det finnes mange spesialiserte instrksjoner.! n CISC-instrksjon kan bestå av et variabelt antall midre steg eller sbinstrksjoner, og hvert steg trenger en klokkesykel på å fllføres.! I en moderne CISC-arkitektr (f.eks Pentim) varierer antall steg i instrksjonene fra et ti-talls til flere hndre! RISC-arkitektr har mye færre maskinspråk-instrksjoner tilgjengelige for assemblerprogram og kompilatorer.! Hver instrksjon i en RISC-maskin er optimalisert slik at den kn krever én klokkesykel på å eksekvere ferdig.! ilosofien bak RISC er å optimalisere og tilby de mest brkte instrksjonene som høynivå-programmer brker (tester har vist at Load/Store og hoppinstrksjoner står for mellom 70-80% av alle instrksjonene i et program)! Instrksjoner som brkes sjelden implementeres som en sekvens av instrksjoner og blir ikke nødvendigvis implementert mest mlig effektivt.! Kompilatorer og assemblerprogrammer blir større og mer kompliserte fordi hver høynivå-instrksjon splittes opp i mange flere maskinspråk-instrksjoner sammenlignet med CISC. 25 26 RISC og CISC (3) Hva er best? Instrksjon Instrksjon 2! Noen typer optimalsering lar seg lettere designe sammen med RISC-arkitektr, som f.eks pipelining. CISC Steg Steg 2 Steg 3 Steg Steg 2 Steg 3 Steg 4! Visse anvendelser som f.eks mobiltelefoner ser o t til å egne seg bedre for RISC enn CISC pga statisk kode med lite behov for spesial-instrksjoner RISC Instrksjon Instrksjon 2 Instrksjon 3 Instrksjon 4 Instrksjon 5 Instrksjon 6 Instrksjon 7 RISC CISC nkelt og begrenset instrksjonssett Komplisert og rikholdig instrksjonssett! I en RISC-arkitektr tar alle instrksjoner like lang tid.! I en CISC-arkitektr kan to instrksjoner brke lik tid på å bli ferdige.! et er vanlig også i RISC arkitektr å dele opp instrksjoner i mindre steg. Ikke alle instrksjoner trenger alle stegene, men de blir allikevel tvnget til å brke dem (ikke gjøre noe) for at hver instrksjon skal ta like lang tid. Register-orienterte instrksjoner med få instrksjoner for minneaksess ast lengde og format på instrksjoner å adresseringsmodi Stort antall interne registre Alle instrksjoner er fleksible i adresseringsmekanismer for operander Variabelt format og lengde på instrksjoner ange adresseringsmodi Lite antall interne registre 27 28