Luento 10: Superskalaari prosessori

Samankaltaiset tiedostot
Superskalaariprosessointi

Superskalaariprosessointi

Luento 10: Superskalaari prosessori

Superskalaariprosessointi

Suorittimen rakenne ja toiminta

Suorittimen rakenne ja toiminta

Suorittimen rakenne ja toiminta

Käskykannat. Tietokoneen rakenne. Ch [Sta06] Operaatioista Operandeista Osoitustavoista Pentium / PowerPC. Luento 7-1

Suoritinesimerkit RISC- arkkitehtuuri

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

Tietokoneen rakenne Käskysykli CPU suorittaa ohjelmaa konekielinen käsky kerrallaan

Luento 7: Käskykannat Tietokoneen rakenne / 2006 / Teemu Kerola 9/25/2006

RISC-arkkitehtuuri Ch 13 [Sta06] Käskyanalyysia RISC vs. CISC Rekisterien käytöstä

Suoritinesimerkit RISC- arkkitehtuuri

Suoritinesimerkit RISC- arkkitehtuuri

Luento 9: RISC-arkkitehtuuri Luento 9 EAX, EBX, EBX, EDX, ESP, EBP, ESI, EDI CS, SS, DS, ES, FS, GS. (Sta06 Table 12.

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Tietokoneen toiminta, K Tavoitteet (4)

Käyttöjärjestelmän rakenne

1. Keskusyksikön rakenne

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 12: Kontrollin toteutus Ch [Sta06] Mikro-operaatiot Ohjaussignaalit Langoitettu ohjaus Mikro-ohjelmoitu ohjaus

Rinnakkaistietokoneet luento S

ltöä rjestelmä Luento 2: LAITTEISTOSTA Tietokonejärjestelm KESKUSYKSIKKÖ Keskusyksikkö Kuva 1.1 KJ-I S2005 / Tiina Niklander & Auvo Häkkinen 2-1

52480S TIETOKEARKKITEHTUURIT Tentti

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Luento 12: Kontrollin toteutus Luento 12. u Millainen käskykanta käytössä, mitä käskyt tekevät? u Mikä operaatio, missä operandit?

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ohjausyksikkö. Tietokoneen rakenne. Ch [Sta06] Mikro-operaatiot Ohjaussignaalit Langoitettu ohjaus Mikro-ohjelmoitu ohjaus.

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

tikra_oppimistavoitteet.doc Sivu 1 / / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Osaa selittää Boolen algebran

Stallings, Luku 1. KJ-I S2043 / Tiina Niklander Auvo Häkkisen kalvojen pohjalta 2-2. KJ-I S2003 / Auvo Häkkinen 2-1

IA-64. Tietokoneen rakenne. Stallings: Ch 15 Yleistä IA-64:stä Predikointi Spekulointi Ohjelmoitu liukuhihna Itanium 2 Intel Multi-core ja STI Cell

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen rakenne (2 ov / 4 op) Syksy 2007 Liisa Marttinen. Helsingin yliopisto Tietojenkäsittelytieteen laitos

Luento 2: LAITTEISTOSTA

Tietokonearitmetiikka

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Luento 0: Kurssihallinto Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

ltö Luento 6: VIRTUAALIMUISTI Luento 7: Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä Suoritus virtuaalimuistissa

Luento 6: VIRTUAALIMUISTI

Tietokonearitmetiikka

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Käyttöjärjestelmät II

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Laitteistonläheinen ohjelmointi

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

Käyttöjärjestelmät II

Jakso 5 Suoritin ja väylä

Käännös, linkitys ja lataus

Muistihierarkia Kiintolevyt I/O:n toteutus

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Luento 12: Kontrollin toteutus Ch [Sta06] Mikro-operaatiot Ohjaussignaalit Langoitettu ohjaus Mikro-ohjelmoitu ohjaus

Jakso 5 Suoritin ja väylä

OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

Luento 12: Kontrollin toteutus Luento 12. u Mikä operaatio, missä operandit? u Miten keskeytykset hoidellaan?

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Algoritmit 1. Luento 1 Ti Timo Männikkö

Luento 11: IA-64 ja muut esimerkit Luento 11 EPIC. u Uutta semantiikkaa konekielen tasolle. u Käsittelee käskyjä nipuissa (bundle)

Tietokonearitmetiikka

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Käyttöjärjestelmät: prosessit

Transmeta Architecture

Transmeta Architecture

Luento 5 (verkkoluento 5) Suoritin ja väylä

Tietokonearitmetiikka

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

OSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1

OSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

OSA II: Hajautettu ympäristö. Sisältö, osa II. Ei yhteistä muistia. Sanomanvälitys. Etäproseduurikutsu. Rendezvous. Rio 2004 / Auvo Häkkinen

Järjestelmän ulkoinen muisti I/O

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Kertausluento luennoista 1-3 1

Osio 2: Luennot 5-8 Muistinhallinta

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Käyttöjärjestelmät, 8 op

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia

Kurssin asema Käyttöjärjestelmät, 8 op. Kurssikirja. Kurssin tavoite. Kurssin rakenne: Kurssin suorittaminen. Käyttöjärjestelmät - Luento 1

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

VIRTUAALIMUISTI. Stallings, Luku 8.1

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Sisältö VIRTUAALIMUISTI. Stallings, Luku 8.1. Suoritus virtuaalimuistissa. Suoritus virtuaalimuistissa. Puutoskeskeytys. Suoritus virtuaalimuistissa

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 2: DLX I - arkkitehtuuri

Transkriptio:

Tietokoneen rakenne Luento 10 Tavoite u Nopeuttaa skalaarikäskyjen prosessointia Useita itsenäisiä liukuhihnoja u Ei siis pelkästään enemmän vaiheita liukuhihnalla Stallings: Ch 14 Käskyjen väliset riippuvuudet Rekistereiden uudelleennimeäminen Pentium / PowerPC Luento 10-1 (Sta06 Fig 14.1, Tbl 14.1) Luento 10-2 Each stage split into 2 half-stages (Sta06 Fig 14.2) Muistin käytön oltava tehokas u Nouda useita käskyjä yhtäaikaa, ennaltanouto u Datan nouto / talletus u Rinnakkaisuus Saman prosessin useita käskyjä yhtäaikaa suorituksessa eri liukuhihnoilla u Valitse noudetuista sopivassa järjestyksessä suoritukseen (in-order issue/out-of-order issue) Enemmän kuin yksi käsky valmistuu per sykli u Saattavat valmistua eri järjestyksessä kuin aloitettu (out-of-order completion) Milloin käsky saa valmistua ennen edeltävää käskyä? Luento 10-3 Luento 10-4 Tutut riippuvuudet add r1,r2 Datariippuvuus (True Data/Flow Dependency) move r3,r1 u write-read (Read after Write, RaW) riippuvuus u Jäljempi käsky tarvitsee edeltävän tuottamaa dataa Kontrolliriippuvuus (Procedural/Control Dependency) u Hyppyä seuraavat käskyt suoritetaan vain, jos hyppy ei toteudu u Superskalaarihihnalla hukattavana enemmän käskyjä u Vaihtelevanpituisten käskyjen lisäosista tietoa vasta suoritettaessa Resurssiriippuvuus (Resource Conflict) u Yksi tai useampi liukuhihna osa tarvitsee samoja resursseja u Muistipuskuri, ALU, pääsy rekisterijoukkoon, Tutut riippuvuudet d (Sta06 Fig 14.3) Luento 10-5 Luento 10-6 Tietokoneen rakenne / 2006 / Teemu Kerola 1

Uudet riippuvuudet Nimiriippuvuudet = Kirjoitusriippuvuus (Output Dependency) u write-after-write (WaW) riippuvuus load r1,x add r2,r1,r3 add r1,r4,r5 u Kun kaksi käskyä muuttaa samaa rekisteriä tai muistipaikan sisältöä, niin alkuperäisessä koodissa jäljempänä oleva talletus jäätävä voimaan move r2,r1 add r1,r4,r5 Antiriippuvuus (Antidependency, Read-write dependency) u Write-after-read (WaR) riippuvuus u Edeltävän käskyn ehdittävä noutaa rekisterin tai muistipaikan sisältö, ennenkuin jäljempi käsky tallettaa sinne uuden arvon Aliakset? u Esim. Kaksi rekisteriä osoittaa epäsuorasti samaan muistipaikkaan 40(R1) vs. 0(R2) Luento 10-7 Kuinka käsitellä riippuvuudet? Peruslähtökohta u Kaikki riippuvuudet käsitellään jollain tavoin Perusratkaisu (kuten ennenkin) u laitteisto huomaa riippuvuuden, pysäyttää liukuhihnan odottamaan (bubble) Ratkaisu 2 u Kääntäjä generoi käskyt sellaisessa järjestyksessä, että riippuvuuksia ei tule u Tällöin ei tarvita erityislaitteistoa Yksinkertaisempi suoritin, jonka ei tarvitse havaita riippuvuuksia u Kääntäjän laatijan tunnettava kohdeprosessorin toiminta tarkoin Luento 10-8 Rinnakkaisuus Käskytason rinnakkaisuus (Instruction-level parallelism) u Montako käskyä pystyttäisiin teoreettisesti suorittamaan rinnakkain Riippuu suoritettavasta koodista Konetason rinnakkaisuus (Machine parallelism) u Todellinen rinnakkaisuus u Mitä tietty kone tai arkkitehtuuri todella voi tehdä rinnakkain Montako käskyä voi hakea yhtäaikaa? Montako käskyä voi suorittaa yhtäaikaa? ~ Montako liukuhihnaa käytettävissä u Aina pienempi kuin käskytason rinnakkaisuus Riippuvuudet? Huonosti optimoitu toteutus? load r1 r2 add r3 r3+1 add r4 r4, r2 add r3 r3+1 add r4 r3, r2 load r0 r4 Luento 10-9 check in (odotusta?) issue ~ laukaisu, liikkeellelaskeminen (odotusta?) departure dispatch ~ vuorottaminen, lähettää suorittamaan (ei odotusta) (odotusta?) in-order issue vs. out-of-order issue in-order complete vs. out-of-order complete (Sta06 Fig 14.6) Luento 10-10 Käskyjen nouto muistista u Hyppyjen ennustus ennaltanouto muistista CPU:hun u Valintaikkuna (window-of execution) ~ Muistista noudetut käskyt Käskyn päästäminen liukuhihnalle (dispatch/issue) u Selvitä data-, kontrolli- ja resurssiriippuvuudet u Uudelleenjärjestele, päästä sopivat liukuhihnoille u Valittujen päästävä etenemään ilman odotusjaksoja u Jos sopivaa ei löydy, odotuta tässä kohtaa Kun suoritus valmistuu (complete, retire) u Hyväksy tai hylkää (commit/abort) u Selvitä kirjoitus- ja antiriippuvuudet odota / järjestä uudelleen (reorder) In-order issue, in-order complete Se perinteinen peräkkäisjärjestys Ei käyttöä valintaikkunalle Käskyjä hihnoille vain alkuperäisessä järjestyksessä u Kääntäjä huolehtinut pääosin riippuvuuksista u Tarkista silti riippuvuus edeltäjistä u Tsekkaa etenemisvauhti, jätä tarvittaessa kuplia u Voi päästää useita yhtäaikaakin baanalle Valmistuminen vain alkuperäisessä järjestyksessä u Viereisellä baanalla ei saa ohittaa u Useita voi valmistua yhtäaikaa u Commit/Abort Luento 10-11 Luento 10-12 Tietokoneen rakenne / 2006 / Teemu Kerola 2

In-order issue, in-order complete In-order issue, out-of-order complete Nouto 2 käskyä kerralla I1 tarvitsee suoritukseen 2 sykliä I3 ja I4: resurssiriippuvuus I5 (käyttää) ja I4 (tuottaa): datariippuvuus I5 ja I6: resurssiriippuvuus Kuten edellinen, mutta - Salli valmistua eri järjestyksessä kuin käskyjä aloitettu - Huolehdi kirjoitus- ja antiriippuvuudesta ennen tulosten kirjoittamista Nouto 2 käskyä kerralla I1 tarvitsee suoritukseen 2 sykliä I3 ja I4: resurssiriippuvuus I5 (käyttää) ja I4 (tuottaa): datariippuvuus I5 ja I6: resurssiriippuvuus (Sta06 Fig 14.4a) Luento 10-13 (Sta06 Fig 14.4b) Luento 10-14 Out-of-order issue, out-of-order complete Päästä käskyjä liikkeelle parhaaksi katsotussa järjestyksessä u Tarvitaan valintaikkuna Salli valmistuminen parhaaksi katsotussa järjestyksessä u Huolehdi kirjoitus- ja antiriippuvuudesta Out-of-order issue, Out-of-order complete Nouto 2 käskyä kerralla I1 tarvitsee suoritukseen 2 sykliä I3 ja I4: resurssiriippuvuus I5 (käyttää) ja I4 (tuottaa): datariippuvuus I5 ja I6: resurssiriippuvuus Se oikea, aito superskalaariprosessori apupuskuri, ei lisävaihe (Sta06 Fig 14.4c) Luento 10-15 Luento 10-16 Rekistereiden uudelleennimeäminen Rekistereiden uudelleennimeäminen Ongelman syynä usein se, että toisistaan riippumattomille asioille käytetty samaa rekisteriä u Käskyjen välille syntyy riippuvuus, tarpeettomasti u Odoteltava, että edellinen valmistuu Ratkaisu: Rekistereiden uudelleennimeäminen u Laitteistossa enemmän rekistereitä kuin ohjelmoijalle näkyy u Laitteisto allokoi todelliset rekisterit suoritusaikana u Allokointi s.e. vältetään nimiriippuvuus Tarvitaan u Enemmän sisäisiä työrekistereitä (rekisterijoukot), esim. Pentium II:ssa 40 työrekisteriä u Laitteistoa, joka allokoi työrekistereitä ja pitää kirjaa ohjelmoijalle näkyvistä rekistereistä Kirjoitusriippuvuus (WaW): i3 ei saa valmistua ennen i1:stä Antiriippuvuus (RaW): i3 ei saa valmistua ennenkuin i2 lukenut arvon R3:sta Uudelleennimeä R3 s.e. käytössä työrekisterit R3a, R3b, R3c Muut rekisterit vastaavasti: R4b, R5a, R7b Ei enää nimiriippuvuuksia! R3 R3 + R5 R4 R3 + 1 R3 R5 + 1 R7 R3 + R4 R3bR3a + R5a R4bR3b + 1 R3cR5a + 1 R7bR3c + R4b Miksi R3a ja R3b? (i1) (i2) (i3) (i4) (i1) (i2) (i3) (i4) Luento 10-17 Luento 10-18 Tietokoneen rakenne / 2006 / Teemu Kerola 3

Lisälaitteiston vaikutus base: out-of-order issue +ld/st: base ja lisäksi kaksi load/store yksikköä datavälimuistille +alu: base ja lisäksi kaksi ALUa (Sta06 Fig 14.5) Yhteenveto Useita toiminnallisesti itsenäisiä yksikköjä Sta06 Fig 14.6 Muistihierarkian tehokas käyttö u Sallii useita rinnakkaisia muistinoutoja/talletuksia Käskyjen ennaltanouto u Hyppyjen ennustuslogiikka Laitetason logiikka riippuvuuksien huomaamiseksi u Ohituspiirit, joilla tieto heti suoraan toiselle yksikölle samaan aikaan kuin tulos rekisteriin tai muistiin Laitetason logiikka useiden riippumattomien käskyjen liikkeellesaattamiseksi (issue) u Riippuvuudet järjestys Laitetason logiikka huolehtii käskyjen oikeasta valmistumisjärjestyksestä (completion) u Riippuvuudet commit Luento 10-19 Luento 10-20 Tietokoneen rakenne Pentium 4 Pentium 4 (Sta06 Fig 14.7) Luento 10-21 Luento 10-22 Liukuhihna Mikro-operaatioiden generointi Sta06 Fig 14.9a-f Ulospäin CISC -käskykanta (IA-32) Suoritus kuitenkin mikro-operaatioina kuten RISC u Nouda CISC-käsky ja muodosta siitä mikro-operaatiot ( ops) L1 tason välimuistiin (trace cache) u Hihnan loppuosa operoi vakiopituisilla -operaatioilla (118b) Pitkä liukuhihna u Lisävaiheet (5 ja 20) signaalien etenemisviipeen vuoksi (Sta06 Fig 14.8) Luento 10-23 a) Nouda IA-32 käsky L2 välimuistista ja generoi mikro-operaatiot L1 tason välimuistiin (trace cache) u Käskyille oma TLB, hyppyjen kohteille oma BTB u Staattinen hyppyjen ennustus taaksepäin taken, eteenpäin not taken u 1-4 ops per käsky, monimutkaisemmat ROM-muistissa b) Määritä Trace-Cache-IP:n arvo mikro-operaatiolle u Dynaaminen hyppyjen ennustus (4-bit) u 512 alkion joukkoassosiatiivinen kohdepuskuri BTB (branch target buffer), joukon koko 4 c) Nouda operaatio L1 tason välimuistista d) Drive odotusjakso Luento 10-24 Tietokoneen rakenne / 2006 / Teemu Kerola 4

Resurssien allokointi Sta06 Fig 14.9a-f e) Allokoi resurssit, rekistereiden uudelleennimeäminen u 3 operaatiota per sykli u Varaa alkio uudelleenjärjestelypuskurista (126:sta) (reorder buffer, ROB) u Varaa tulokselle yksi 128 sisäisestä työrekisteristä ja mahd. yksi load ja yksi store puskuri (48:sta ja 24:stä) u Poista nimiriippuvuuksia rekistereiden uudelleennimeämisellä u Allokoi alkio mikro-operaatioiden valintajonosta u Jos ei vapaita resursseja, odota ( out-of-order) ROB-alkiossa kirjanpito operaation etenemisestä hihnalla u Mikro-operaatio, ja alkuperäisen IA-32 käskyn osoite u State: scheduled, dispatched, completed, ready u Register Alias Table (RAT): mikä IA-32 rekisteri mikä työrekisteri Window of Execution Sta06 Fig 14.9a-f f) 2 FIFO jonoa mikro-operaatioiden valitsemiseksi u Tarvittavat resurssit saatavilla, ei riippuvuutta u Muistiin viittaaville oma, muille oma g) Mikro-operaatioiden nouto jonoista (scheduling) Sta06 Fig 14.9g-l h) Päästäminen liukuhihnalle (dispatching) u Tutki FIFO-jonojen keulimmaisten ROB-alkioita u Jos tarvittava suoritusyksikkö vapaa, operaation voi päästää suoritusliukuhihnalle u Kaksi jonoa out-of-order issue u max 6 mikro-op liikkeelle yhden syklin aikana ALU:ille tai FPU:ille kummallekin max 2 per sykli Load ja store -yksiköille kummallekin max 1 per sykli Luento 10-25 Luento 10-26 Integer ja FP yksiköt Sta06 Fig 14.9g-l i) Nouda data rekistereistä tai välimuistista j) Suorita käsky, aseta lipukkeet u Hae operandit rekistereistä / L1 välimuistista u Useita liukuhihnoitettuja suoritusyksiköitä 2 * Alu, 2 * FPU, 2 * load/store Esim. nopea ALU helpoille, kertolaskuille oma ALU u Tulosten talletus: in-order complete u Päivitä ROB, salli uusien operaatioiden tulo hihnalle k) Tarkista miten hyppykäskyssä kävi u Menikö niinkuin ennustettiin? u Abortoi väärät käskyt hihnalta (estä tulosten talletus) l) Kirjaa hypyn tulos ennustuslogiikkaa varten u Anna aikaa signaalien etenemiseksi Pentium 4 Hyperthreading Yksi fyysinen IA-32 CPU, mutta 2 loogista CPU:ta Näkyy KJ:lle kahden CPU:n SMP-järjestelmänä u Molemmat suorittavat eri prosesseja, tai saman prosessin eri säikeitä (kuten SMP) u Ei tarvitse huomioida kooditasolla u KJ:n osattava SMP-temput (mm. vuorottaminen) Perustuu CPU:n odotussyklien hyötykäyttöön u Muistiinviittaus (cache miss) u Riippuvuudet, väärä hyppyennustus Jos toinen käyttää FP-yksikköä, toinen voi käyttää INT-yksikköä u Hyödyt pitkälti sovellusriippuvia Luento 10-27 Luento 10-28 Pentium 4 Hyperthreading Kahdennettu u IP, EFLAGS ja muut kontrollirekisterit u KäskyTLB u Rekistereiden uudelleennimeämislogiikka Puolitettu u Kristillinen tasajako, ei monopolia u Uudelleenjärjestelypuskurit (ROB) u Mikro-operaatioiden valintajonot (2 keulaa?) u Load/store puskurit Yhteiskäytössä u Rekisterijoukot (128 GPRs, 128 FPRs) u Välimuistit: trace cache, L1, L2, L3 Sta06 Fig 14.7 Sta06 Fig 14.8 u Mikro-operaatioiden suorituksessa tarvittavat rekisterit u Suoritusyksiköt: 2 ALUa, 2 FPUta, 2 ld/st-units Tietokoneen rakenne PowerPC Luento 10-29 Luento 10-30 Tietokoneen rakenne / 2006 / Teemu Kerola 5

PowerPC 601 Käskyjen noutoyksikkö u Voi noutaa 8 käskyä (a 32b) kerralla välimuistista Käskyjen valinta suoritukseen (dispatch) 3 käskyjä suorittavaa yksikköä u Kokonaisluvut, liukuluvut, hypyt PowerPC 601 Pipeline (Sta06 Fig 14.10) Luento 10-31 (Sta06 Fig 14.11) Luento 10-32 Dispatch unit = Käskyjen suoritukseen valinta 4:n alkion apupuskuri + 4:n alkion valintaikkuna u dispatch buffer = window of execution Käsky ikkunasta suoritettavaksi, kun hihnalla tilaa u Integer-yksikölle vain jonon alusta u Muille se, joka lähinnä jonon keulaa u Max 3 käskyä yhtäaikaa (out-of-order issue) Kun käsky suoritukseen, muita jonoissa eteenpäin Jos riippuvuus, ei päästä hihnalle (stall, bubble) Laitetason logiikka hyppyosoitteiden laskemiseksi u Nopeasti jo ennen varsinaista käskyn suoritusvaihetta Suoritus Muutokset rekistereihin / muistiin vasta suorituksen lopuksi Write Back vaiheessa ALU-operaatiot tallettavat tietoa CR-rekisteriin u 8 kenttää a 4 b, tallessa useita edellisiä vertailutuloksia Liukuluvut tarvitsevat useampia syklejä (Sta06 Fig 14.12) Luento 10-33 Luento 10-34 Hyppyjen käsittely Zero cycle branches u Hyppy ei vaikuta muiden yksikköjen toimintaan Yleensä ei tarvetta tyhjentää, tai hylätä tuloksia u Hypyn kohdeosoite selvillä heti, kun hyppykäsky tulee käskyikkunaan (ennen suoritusta!) Yhden hypyn spekulointi: Hyppääkö vai ei? u Jos ehdoton taken u Jos ehdollinenja CR-rekisteri asetettu aiemmin tutki taken / not taken muuten jos taaksepäin taken jos eteenpäin not taken Jos spekulointi meni pieleen u abortoi spekuloidut käskyt ennen write-back -vaihetta Hyppyjen käsittely (Sta06 Fig 14.13) Luento 10-35 Luento 10-36 Tietokoneen rakenne / 2006 / Teemu Kerola 6

Hyppyjen käsittely Hyppyjen käsittely conditional zero delay E (no W) D E (no W) conditional cache busy cache busy delay: 2 cycles (Sta06 Fig 14.14a) Luento 10-37 (Sta06 Fig 14.14b) Luento 10-38 PowerPC 620 HePa96 Fig. 4.49 64b:n arkkitehtuuri PowerPC 620 6 suoritusyksikköä u Instruction-yksikkö (dispatcher) u 3 integer-yksikköä u Load/Store yksikkö u FP-yksikkö Max 4 käskyä suoritukseen yhtäaikaa Reservation stations u Kullakin yksiköllä kaksi tai useampia u Jos käsky ei voi edetä (riippuvuudet) se odottaa tässä, eikä estä jäljempänä olevien etenemistä Uudelleennimeäminen: 8 integer ja 12 FP lisärekisteriä u Vähentää riippuvuuksia u Väliaikaistulosten tallettamiseksi In-order-complete u max 4 käskyä yhtäaikaa Luento 10-39 Hyppyjen spekulointi u 256:n alkion branch target buffer (BTB) Joukkoassosiatiivinen, joukon koko 2 u 2048:n alkion branch history table Käyttää, jos kohde ei löydy BTB:stä Spekuloitavana max 4 ratkaisematonta hyppyä Tulokset uudelleennimeämisrekistereissä u Commit: kopioi spekuloidut tulokset todellisiin rekistereihin u Abort: vapauta rekisterit muuhun käyttöön Luento 10-40 Kertauskysymyksiä Miten superskalaaritoteutus eroaa tavallisesta liukuhihnoitetusta toteutuksesta? Mitä uusia rakenteesta johtuvia ongelmia tulee ratkottavaksi? Miten niitä ongelmia ratkotaan? Mitä tarkoittaa rekistereiden uudelleennimeäminen jamitähyötyäsiitäon? Luento 10-41 Tietokoneen rakenne / 2006 / Teemu Kerola 7