Superskalaariprosessointi

Samankaltaiset tiedostot
Superskalaariprosessointi

Superskalaariprosessointi

Luento 10: Superskalaari prosessori

Luento 10: Superskalaari prosessori

Suorittimen rakenne ja toiminta

Suorittimen rakenne ja toiminta

Suorittimen rakenne ja toiminta

Käyttöjärjestelmän rakenne

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

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

Suoritinesimerkit RISC- arkkitehtuuri

Suoritinesimerkit RISC- arkkitehtuuri

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

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

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

Suoritinesimerkit RISC- arkkitehtuuri

Tietokoneen toiminta, K Tavoitteet (4)

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

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

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

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

1. Keskusyksikön rakenne

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

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

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

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

Rinnakkaistietokoneet luento S

52480S TIETOKEARKKITEHTUURIT Tentti

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

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

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?

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 2: LAITTEISTOSTA

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

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

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

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

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

Käännös, linkitys ja lataus

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

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

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

Luento 6: VIRTUAALIMUISTI

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 12: Kontrollin toteutus Ch [Sta06] Mikro-operaatiot Ohjaussignaalit Langoitettu ohjaus Mikro-ohjelmoitu ohjaus

Jakso 5 Suoritin ja väylä

Tietokonearitmetiikka

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

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

Jakso 5 Suoritin ja väylä

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Laitteistonläheinen ohjelmointi

Käyttöjärjestelmät II

Tietokonearitmetiikka

Tietokonearitmetiikka

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

Käyttöjärjestelmät: prosessit

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

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

Tietokonearitmetiikka

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

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

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

Käyttöjärjestelmät II

Muistihierarkia Kiintolevyt I/O:n toteutus

Sisältöä SÄIKEET, SMP

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

Osio 2: Luennot 5-8 Muistinhallinta

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

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

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

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

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

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

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

Järjestelmän ulkoinen muisti I/O

Kertausluento luennoista 1-3 1

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

Transmeta Architecture

Transmeta Architecture

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

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

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

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

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 Käskytason rinnakkaisuus (Sta06 Fig 14.1, Tbl 14.1) Luento 10-2 Tietokoneen rakenne / 2007 / Liisa Marttinen 1

Superskalaariprosessointi Vain yksi käsky kerrallaan suorituksessa Each stage split into 2 half-stages Kaksi käskyä samaan aikaan suorituksessa. (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 Tietokoneen rakenne / 2007 / Liisa Marttinen 2

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, JNZ R2, 100 ADD R1, =1 jos hyppy ei toteudu u Superskalaarihihnalla hukattavana enemmän käskyjä u Vaihtelevanpituisten käskyjen lisäosista tietoa vasta suoritettaessa Resurssiriippuvuus (Resource Conflict) add r1,r2 move r3,r1 u Yksi tai useampi liukuhihnan osa tarvitsee samoja resursseja u Muistipuskuri, ALU, pääsy rekisterijoukkoon, Luento 10-5 Tutut riippuvuudet d (Sta06 Fig 14.3) Luento 10-6 Tietokoneen rakenne / 2007 / Liisa Marttinen 3

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 Antiriippuvuus (Antidependency, Read-write dependency) u Write-after-read (WaR) riippuvuus load r1,x add r2,r1,r3 add r1,r4,r5 move r2,r1 add r1,r4,r5 u Edeltävän käskyn ehdittävä noutaa rekisterin tai muistipaikan sisältö, ennen kuin jäljempi käsky tallettaa sinne uuden arvon Aliakset? u Kaksi rekisteriä osoittaa epäsuorasti samaan muistipaikkaan? u Eri virtuaaliosoite, sama fyysinen osoite? store R5, 40(R1) u Mitä näkyy konekielen tasolla (ennen MMU ta)?? load R6, 0(R2) Luento 10-7 Riippuvuuksista i: write R1 j: read R1 datariippuvuus Datariippuvuudessa käskyä j ei voi suorittaa ennen käskyä i! i: read R1.. j: write R1 i: write R1. j: write R1 antiriippuvuus Anti- ja kirjoitusriippuvuudessa käskyt i ja j voidaan kyllä suorittaa eri järjestyksessä, mutta on lopuksi varmistettava, että käytetään oikeaa arvoa ja oikea tulos jää voimaan kirjoitusriippuvuus Luento 10-8 Tietokoneen rakenne / 2007 / Liisa Marttinen 4

Kuinka käsitellä riippuvuudet? Peruslähtökohta u Kaikki riippuvuudet käsitellään jollain tavoin Perusratkaisu (kuten ennenkin) u Laitteistoa olemassa, joka huomaa riippuvuuden ja pysäyttää liukuhihnan tarvittaessa 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-9 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 mitä todella saadaan irti? 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-10 Tietokoneen rakenne / 2007 / Liisa Marttinen 5

Superskalaariprosessointi (odotusta?) departure (ei odotusta) (odotusta?) check in (odotusta?) issue ~ laukaisu, liikkeellelaskeminen valintaikkuna 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-11 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-12 Tietokoneen rakenne / 2007 / Liisa Marttinen 6

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 hihnalle Valmistuminen vain alkuperäisessä järjestyksessä u Viereisellä hihnalla ei saa ohittaa u Useita voi valmistua yhtäaikaa u Commit/Abort Luento 10-13 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-14 Tietokoneen rakenne / 2007 / Liisa Marttinen 7

In-order issue, out-of-order complete Kuten edellinen, mutta - Salli valmistua eri järjestyksessä kuin käskyjä aloitettu - Huolehdi kirjoitusja 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 Kirjoitusriippuvuus I1: R3 R3 op R5 I2: R4 R3 + 1 I3: R3_ R5 + 1 I4: R7 R3 op R4 (Sta06 Fig 14.4b) Luento 10-15 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 Antiriippuvuus I1: R3 R3 op R5 I2: R4 R3 + 1 I3: R3_ R5 + 1 I4: R7 R3 op R4 Se oikea, aito superskalaariprosessori Luento 10-16 Tietokoneen rakenne / 2007 / Liisa Marttinen 8

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-17 Rekistereiden uudelleennimeäminen Nimiriippuvuusongelman syynä usein se, että toisistaan riippumattomille asioille käytetty samaa rekisteriä u Käskyjen välillä tarpeettomia anti- ja kirjoitusriippuvuuksia u Turhaa odottelua R3 R3 + R5 R4 R3 + 1 R3 R5 + 1 R7 R3 + R4 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-18 Tietokoneen rakenne / 2007 / Liisa Marttinen 9

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 R3c R5a + 1 R7b R3c + R4b Miksi R3a ja R3b? (i1) (i2) (i3) (i4) Luento 10-19 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-20 Tietokoneen rakenne / 2007 / Liisa Marttinen 10

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-järjestys (tilanmuutokset) Sta06 Fig 14.6 Luento 10-21 Tietokoneen rakenne Pentium 4 Luento 10-22 Tietokoneen rakenne / 2007 / Liisa Marttinen 11

Pentium 4 (Sta06 Fig 14.7) Luento 10-23 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-24 Tietokoneen rakenne / 2007 / Liisa Marttinen 12

Mikro-operaatioiden generointi Sta06 Fig 14.9a-d 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 (=118 bitin RISC) per käsky, näitä 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-25 Resurssien allokointi e) Allokoi resurssit, rekistereiden uudelleennimeäminen u 3 operaatiota per sykli u Varaa alkio uudelleenjärjestelypuskurista (126:sta) (reorder buffer, ROB) Sta06 Fig 14.9e 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-26 Tietokoneen rakenne / 2007 / Liisa Marttinen 13

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.9f-h g) Mikro-operaatioiden nouto jonoista (scheduling) u Ne joiden operandit ovat jo kunnossa 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-27 Integer ja FP yksiköt i) Nouda data rekistereistä tai välimuistista j) Suorita käsky, aseta lipukkeet Sta06 Fig 14.9i-l 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-28 Tietokoneen rakenne / 2007 / Liisa Marttinen 14

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 = Symmetric multiprocessing) 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-29 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 Nehalem: yhdellä lastulla 8 ydintä, 1-16 säiettä (820 miljoonaa transistoria) u Mikro-operaatioiden suorituksessa tarvittavat rekisterit u Suoritusyksiköt: 2 ALUa, 2 FPUta, 2 ld/st-units Luento 10-30 Tietokoneen rakenne / 2007 / Liisa Marttinen 15

Tietokoneen rakenne PowerPC Luento 10-31 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-32 Tietokoneen rakenne / 2007 / Liisa Marttinen 16

PowerPC 601 Pipeline (Sta06 Fig 14.11) Luento 10-33 Dispatch unit Sta06 Fig 14.11 = 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-34 Tietokoneen rakenne / 2007 / Liisa Marttinen 17

Suoritus Sta06 Fig 14.11 Muutokset rekistereihin / muistiin vasta suorituksen lopuksi Write Back vaiheessa ALU-operaatiot tallettavat tietoa CR-rekisteriin (condition register) u 8 kenttää a 4 b, tallessa useita edellisiä vertailutuloksia Liukuluvut tarvitsevat useampia syklejä (Sta06 Fig 14.12) Luento 10-35 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 ehdollinen ja 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-36 Tietokoneen rakenne / 2007 / Liisa Marttinen 18

Hyppyjen käsittely (Sta06 Fig 14.13) Luento 10-37 Hyppyjen käsittely conditional zero delay cache busy (Sta06 Fig 14.14a) Luento 10-38 Tietokoneen rakenne / 2007 / Liisa Marttinen 19

Hyppyjen käsittely E (no W) D E (no W) conditional cache busy delay: 2 cycles (Sta06 Fig 14.14b) Luento 10-39 64b:n arkkitehtuuri PowerPC 620 The PowerPC 620 microprocessor: a high performance superscalar RISC microprocessor Levitan, D.; Thomas, T.; Tu, P.; Compcon '95.'Technologies for the Information Superhighway', Digest of Papers. 5-9 March 1995 Page(s):285-291 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 HePa96 Fig. 4.49 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-40 Tietokoneen rakenne / 2007 / Liisa Marttinen 20

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-41 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-42 Tietokoneen rakenne / 2007 / Liisa Marttinen 21