Superskalaariprosessointi

Samankaltaiset tiedostot
Superskalaariprosessointi

Luento 10: Superskalaari prosessori

Superskalaariprosessointi

Luento 10: Superskalaari prosessori

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

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)

Suoritinesimerkit RISC- arkkitehtuuri

Käyttöjärjestelmän rakenne

1. Keskusyksikön rakenne

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

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

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

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

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

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

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

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

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

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

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

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

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

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

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

Laitteistonläheinen ohjelmointi

Tietokonearitmetiikka

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

Käyttöjärjestelmät II

Jakso 5 Suoritin ja väylä

Käännös, linkitys ja lataus

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

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

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) Tietokonejärjestelmä

Käyttöjärjestelmät II

Tietokonearitmetiikka

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

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

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

Käyttöjärjestelmät: prosessit

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

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

Muistihierarkia Kiintolevyt I/O:n toteutus

Järjestelmän ulkoinen muisti I/O

Transmeta Architecture

Kertausluento luennoista 1-3 1

Osio 2: Luennot 5-8 Muistinhallinta

Transmeta Architecture

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,

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

VIRTUAALIMUISTI. Stallings, Luku 8.1

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Transkriptio:

Tietokoneen rakenne Luento 10 Superskalaariprosessointi Stallings: Ch 14 Käskyjen väliset riippuvuudet Rekistereiden uudelleennimeäminen Pentium / PowerPC Luento 10-1

Superskalaariprosessointi Tavoite u Nopeuttaa skalaarikäskyjen prosessointia Useita itsenäisiä liukuhihnoja u Ei siis pelkästään enemmän vaiheita liukuhihnalla (Sta06 Fig 14.1, Tbl 14.1) Luento 10-2

Superskalaariprosessointi Each stage split into 2 half-stages (Sta06 Fig 14.2) Luento 10-3

Superskalaariprosessointi 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-4

Tutut riippuvuudet Datariippuvuus (True Data/Flow Dependency) 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, add r1,r2 move r3,r1 Luento 10-5

Tutut riippuvuudet d (Sta06 Fig 14.3) Luento 10-6

Uudet riippuvuudet Nimiriippuvuudet = Kirjoitusriippuvuus (Output Dependency) u write-after-write (WaW) riippuvuus 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. load r1,x add r2,r1,r3 add r1,r4,r5 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

Superskalaariprosessointi (odotusta?) departure (ei odotusta) (odotusta?) (odotusta?) check in issue ~ laukaisu, liikkeellelaskeminen dispatch ~ vuorottaminen, lähettää suorittamaan in-order issue vs. out-of-order issue in-order complete vs. out-of-order complete (Sta06 Fig 14.6) Luento 10-10

Superskalaariprosessointi 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) Luento 10-11

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-12

In-order issue, in-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 (Sta06 Fig 14.4a) Luento 10-13

In-order issue, out-of-order complete 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.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 Se oikea, aito superskalaariprosessori Luento 10-15

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 apupuskuri, ei lisävaihe (Sta06 Fig 14.4c) Luento 10-16

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ä Luento 10-17

Rekistereiden uudelleennimeäminen Kirjoitusriippuvuus (WaW): i3 ei saa valmistua ennen i1:stä Antiriippuvuus (RaW): i3 ei saa valmistua ennenkuin i2 lukenut arvon R3:sta R3 R3 + R5 R4 R3 + 1 R3 R5 + 1 R7 R3 + R4 (i1) (i2) (i3) (i4) Uudelleennimeä R3 s.e. käytössä työrekisterit R3a, R3b, R3c Muut rekisterit vastaavasti: R4b, R5a, R7b Ei enää nimiriippuvuuksia! R3b R3a + R5a R4b R3b + 1 R3cR5a + 1 R7b R3c + R4b Miksi R3a ja R3b? (i1) (i2) (i3) (i4) Luento 10-18

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) Luento 10-19

Yhteenveto Useita toiminnallisesti itsenäisiä yksikköjä 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 Sta06 Fig 14.6 Luento 10-20

Tietokoneen rakenne Pentium 4 Luento 10-21

Pentium 4 (Sta06 Fig 14.7) Luento 10-22

Liukuhihna 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

Mikro-operaatioiden generointi Sta06 Fig 14.9a-f 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

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 Luento 10-25

Window of Execution f) 2 FIFO jonoa mikro-operaatioiden valitsemiseksi u Tarvittavat resurssit saatavilla, ei riippuvuutta u Muistiin viittaaville oma, muille oma Sta06 Fig 14.9a-f g) Mikro-operaatioiden nouto jonoista (scheduling) 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 Sta06 Fig 14.9g-l 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 Luento 10-27

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-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 Luento 10-29

Tietokoneen rakenne PowerPC Luento 10-30

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 (Sta06 Fig 14.10) Luento 10-31

PowerPC 601 Pipeline (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 Luento 10-33

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-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 Luento 10-35

Hyppyjen käsittely (Sta06 Fig 14.13) Luento 10-36

Hyppyjen käsittely conditional zero delay cache busy (Sta06 Fig 14.14a) Luento 10-37

Hyppyjen käsittely E (no W) D E (no W) conditional cache busy delay: 2 cycles (Sta06 Fig 14.14b) Luento 10-38

PowerPC 620 HePa96 Fig. 4.49 64b:n arkkitehtuuri 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

PowerPC 620 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 ja mitä hyötyä siitä on? Luento 10-41