Suorittimen rakenne ja toiminta

Samankaltaiset tiedostot
Suorittimen rakenne ja toiminta

Suorittimen rakenne ja toiminta

Käyttöjärjestelmän rakenne

Superskalaariprosessointi

Luento 10: Superskalaari prosessori

Superskalaariprosessointi

Superskalaariprosessointi

Luento 10: Superskalaari prosessori

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

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

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

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

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

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

Jakso 5 Suoritin ja väylä

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

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

Jakso 5 Suoritin ja väylä

Luento 2: LAITTEISTOSTA

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

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

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

52480S TIETOKEARKKITEHTUURIT Tentti

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

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

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

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

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

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

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

Luento 5 Suoritin ja väylä

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

Luento 5 Suoritin ja väylä

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

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

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

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

Suoritinesimerkit RISC- arkkitehtuuri

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

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

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

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Luento 2 TTK-91 tietokone ja sen simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91 (1) TTK-91 laitteisto

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 5 Suoritin ja väylä

Käyttöjärjestelmät II

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Käyttöjärjestelmät II

Luento 5 Suoritin ja väylä

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

Suoritinesimerkit RISC- arkkitehtuuri

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Suoritinesimerkit RISC- arkkitehtuuri

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

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

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

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä?

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

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: rekisterit

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

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

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

Luento 1 Tietokonejärjestelmän rakenne

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: tietotyypit (2)

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

Luento 1 Tietokonejärjestelmän rakenne

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

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

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

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

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

Muistihierarkia Kiintolevyt I/O:n toteutus

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

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

Luento 2: Väylät Laitteiden väliseen kommunikointiin Tav. yleislähetys: kaikki kuulevat kaiken

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. Teemu Saarelainen Tietotekniikka

Rinnakkaistietokoneet luento S

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

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

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

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Järjestelmän ulkoinen muisti I/O

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokonearitmetiikka

Väylät. Tietokoneen rakenne. Stallings: Ch 3 Mitä väylällä liikkuu? Väylän ominaisuuksia PCI-väylä PCI Express. Luento 2-1

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Laitteistonläheinen ohjelmointi

Luento 2: Väylät Luento 2. Luento 2-1 R/W. Req / Rel. - Ajoitus. Luento 2-3. Memory. Luento 2-5

Transkriptio:

Tietokoneen rakenne Luento 8 CPU:n yleisrakenne (Sta06 Fig 12.2) ALU Suorittimen rakenne ja toiminta Ch 12.1-4 [Sta06] Rekisterit Käskysykli Liukuhihna Riippuvuusongelmat Hyppyjen käsittely u Laskenta, vertailut Rekisterit u Nopeaa työtilaa Prosessoriväylä u Bittien siirto paikasta toiseen Ohjausyksikkö (Ch 16-17) u Kuka? Mitä? Milloin? u Kellopulssi u Generoi ohjaussignaalit mitä seuraavalla kellopulssilla tapahtuu? MMU? Välimuisti? Sta06 Fig 12.2 Luento 8-1 Luento 8-2 Rekisterit Muistihierarkian huipulla Käyttäjälle näkyvät rekisterit u Ohjelmoija/kääntäjä päättää niiden käytöstä u Paljonko? Nimeäminen? ADD R1,R2,R3 Ohjaus ja statusrekisterit u Osa epäsuorasti ohjelman viitattavissa PC, PSW, flags, BNEQ Loop u Osa vain CPU:n sisäiseen käyttöön MAR, MBR, Sisäisiä apurekistereitä käskyn välivaiheita varten u Esim. - Käskyrekisteri (IR) käskyn tulkintaa varten - operandi ensin käskystä apurekisteriin, vasta sitten ALU:uun Käyttäjälle näkyvät rekisterit Eri prosessoriperhe eri määrä erilaisia rekistereitä, erilaiset nimeämistavat erilaiset käyttötarkoitukset Yleisrekisterit Datarekisterit Osoiterekisterit Segmenttirekisterit Pino-osoitin, ympäristöosoitin (frame pointer) Status- ja tilarekisterit Luento 8-3 Luento 8-4 Esimerkkejä (Sta06 Fig 12.3) PSW - Program Status Word Nimi vaihtelee eri arkkitehtuureissa CPU:n tila u Etuoikeutettu vs. käyttäjätila Vertailun tulos u Esim. Greater, Equal, Less, Zero,... Sattuiko käskyn suorituksessa poikkeuksia? u Nollallajako, ylivuoto u Page fault, memory violation Tarvitseeko ulkoinen laite ohjausta? u Bitti keskeytyksen ilmaisemiseksi Keskeytyksen esto / salliminen u Kullekin luokalle omat bittinsä Luento 8-5 Luento 8-6 Tietokoneen rakenne / 2006 / Teemu Kerola 1

Käskysykli Käskyn nouto (10) Sta06 Fig 16.5 MARPC Control BusReserve PC ALU(PC+1) MBRMEM[MAR] Control BusRelease IR MBR (Sta06 Fig 12.5) Välimuisti! Ennaltanouto! (Sta06 Fig 12.6) Luento 8-7 Luento 8-8 Operandin nouto, Epäsuora osoitus (13) Keskeytyskäsittelyn alkutoimet (esim.) (16) MAR Address Control BusReserve MBRMEM[MAR] MAR MBR MBRMEM[MAR] Control BusRelease ALU? Regs? MBR Välimuisti! (Sta06 Fig 12.7) MAR SP Control BusReserve MBRPC Control BusWrite MAR SP ALU(SP+1) MBRPSW Control Bus Write SPALU(SP+1) PSW privileged & disable MAR Interrupt nbr PC MBR MEM[MAR] Control BusRelease Ei osoitteenmuunnosta! SP = Stack Pointer (Sta06 Fig 12.8) Luento 8-9 Luento 8-10 Tietokoneen rakenne Esim. Pesula (by David A. Patterson) Ann, Brian, Cathy, Dave: kullakin satsi pyykättävää A B C D Pesu vie 30 min Liukuhihna Kuivaus vie 40 min Viimeistely vie 20 min Luento 8-11 Luento 8-12 Tietokoneen rakenne / 2006 / Teemu Kerola 2

Peräkkäin: Pyykkitupa varattu vain yhdelle (8) Vie 6 tuntia, syntyy neljä satsia puhdasta Entäpä, jos toimisivat liukuhihnaperiatteella? A B C D 6 PM 7 8 Aika 9 10 11 Keskiyö 30 40 20 30 40 20 30 40 20 30 40 20 1.5 h per työ 0.67 työtä per h Läpimenoaste Luento 8-13 Liukuhihna: Varaus työvaiheittain (13) Vie 3,5 tuntia, syntyy 4 satsia puhdasta A B C D 6 PM 7 8 9 10 30 40 40 40 40 20 1.5 h per työ 1.14 työtä per h Keskim. nopeus Maksimi nopeus? 1.5 työtä per h Töitä valmistuu parhaimmillaan 40 min välein! (0.67 h / valmistunut työ) Luento 8-14 Huomioita Liukuhihna ei nopeuta yhden työn aktiivisena oloaikaa järjestelmässä u Mutta keskimääräinen läpimenoaika paranee Liukuhihna voi aiheuttaa yhdelle työlle lisäviipeitä verrattuna siihen, jos se työ olisi yksin järjestelmässä u Jos hihnan seuraava vaihe varattuna, ei voi edetä Useita töitä etenee yhtä aikaa, mutta ne ovat eri vaiheissa Hitain vaihe määrää koko liukuhihnan nopeuden u Liukuhihna nytkähtää, kun kaikki osat valmiita u Tehokkuus kärsii, jos kestot eripituisia Yksi työ nopeutuu maksimissaan saman verran kuin liukuhihnassa vaiheita Luento 8-15 Huomioita Toteutus monimutkaisempaa, lisäresurssien tarve u Tuplapistorasia? pesukone ja kuivaaja voivat pörrätä yhtäaikaa u Kaksi tai kolme ihmistä A yhtäaikaa pyykkituvassa B Hihna ei toimi alussa eikä lopussa täydellä teholla C Hihna yskii D u Töitä ei tule tasaisella tahdilla 30 40 40 40 40 20 täyttyy tyhjenee Luento 8-16 CPU ja 2-vaiheinen liukuhihna? 6-vaiheinen liukuhihna (Sta06 Fig 12.9) Seuravan käskyn ennaltanouto samaan aikaan kuin edellistä suoritetaan u Paikallisuus: oleta, että suoritus esiintymisjärjestyksessä Ongelmat u Suoritusvaihe voi kestää kauemmin noutovaihe jouten u Suoritusvaihe muuttaa PC:n arvoa haettu väärä käsky Seuraavan käskyn osoite ennustettiin väärin! Rinnakkaisuus vielä vähäistä Lisää vaiheita? FE - Fetch instruction FO - Fetch operands DI - Decode instruction EI - Execute instruction CO - Calculate operand addresses WO - Write operand (Sta06 Fig 12.10) Luento 8-17 Luento 8-18 Tietokoneen rakenne / 2006 / Teemu Kerola 3

Paljonko liukuhihna nopeuttaa? 6 vaiheinen liukuhihna 14 aikayksikköä Ei liukuhihnaa 9*6 = 54 aikayksikköä Nopeutus = 54/14 = 3.86 < 6! Todellisuudessa nopeutus vieläkin pienempi Jokainen käsky ei tarvitse kaikkia vaiheita u Ei-liukuhihnoitettu voi edetä heti seuraavaan vaiheeseen u Liukuhihnoitettu joutuu odottamaan seuraavan vaiheen vapautumista, ko. CPU:n yksikkö jouten Suorituksessa on kupla (bubble) Yhden vaiheen kesto liukuhinalla? Yhden vaiheen kesto [ ] + d = + d d τ = max τ τ i=1..k Vaiheen i kesto i m >> Hitaimman vaiheen Viive vaiheesta (max) kesto toiseen siirtymiselle ~ yksi kellopulssi Hitain vaihe määrää etenemisvauhdin u Kauimmin kestävä vaihe on pullonkaula Kukin vaihe asetetaan kestämään yhtä kauan u Montako kellopulssia? Luento 8-19 Luento 8-20 Paljonko nopeuttaa? n käskyä, k vaihetta, τ =vaiheen kesto Paljonko nopeuttaa? Oletuksella: ei hyppykäskyjä (Sta06 Fig 12.14) Ei liukuhihnaa: T = nkτ 1 Liukuhihna: = [ k + ( n 1) ]τ T k k vaihetta ennenkuin ensimmäinen työ valmistuu Pessimistinen: olettaa, että kaikki vaiheet kestäisivät yhtä kauan Ks. Sta06 Fig 12.10 ja tarkista itse! seuraavat (n-1) valmistuvat yhden vaiheen välein more gains from multiple stages when more instructions without jumps Nopeutus: T1 Sk = = T k nkτ = nk [ k + ( n 1) ] τ [ k + ( n 1) ] Luento 8-21 Luento 8-22 Muita huomioita Lisävaiheita u CPU:n laitettava välitulos jonnekin u Vaikka yksittäinen käsky etenisi yksin hihnalla, sillä kuluu enemmän aikaa kuin ei-liukuhihnoitetussa Silti u Ison käskyjoukon suorittaminen sujuu nopeammin u Parempi läpimenoaste (käskyä/sec) Liukuhihnoituksen rinnakkaisuus nopeuttaa kokonaisuutta, mutta hidastaa yhden käskyn suoritusta Ongelmakohtia Rakenteellinen riippuvuus (structural dependency) u Usea vaihe voi tarvita samaa HW-yksikköä u Muisti: FI, FO, WO u ALU: CO, EI Kontrolliriippuvuus (control dependency) u Ehdollisen hyppykäskyn tulos selvillä vasta EI-vaiheen jälkeen Ennaltanoudettu vääriä käskyjä Datariippuvuus (data dependency) u Tarvitaan edeltävän käskyn tulosta, eikä se ole vielä valmistunut STORE R1,VarX ADD R2,R3,VarY MUL R3,R4,R5 ADD Jump ADD MUL R1,R7, R9 There R2,R3,R4 R1,R4,R5 MUL R1,R2,R3 LOAD R6, Arr(R1) Luento 8-23 Luento 8-24 Tietokoneen rakenne / 2006 / Teemu Kerola 4

Ratkaisuja? Datariippuvuudet ja niiden poisto Huomattava laitteistolla, odotettava, että riippuvuus poistettu u Hihnalle ylimääräisiä odotusjaksoja eli kuplia, bubbles u Kupla viivästää kaikkia sen takana tulevia vaiheita u Yleisesti käytetty tapa Rakenteellinen riippuvuus u Lisää laitteistoa, esim. CO- ja EI-vaiheelle omat ALUt u Paljon rekistereitä, vähemmän muistioperandeja Kontrolliriippuvuus u Tyhjennä hihna, ja hae uudet käskyt u Hyppyjen ennustuslogiikka: haenko ennalta tästä vai tuolta? Datariippuvuus u Vaihda käskyjen suoritusjärjestystä u Oikopolut laitteistossa (by-pass): tulokseen pääsee käsiksi ennen WO-vaihetta SUB R7, R1, R8 ADD R1, R1, R3 SUB R7, R7, R8 ADD R1, R1, R3 too far, no effect Luento 8-25 Luento 8-26 Käskyjen suoritusjärjestyksen muutos Oikopolut SUB R7, R1, R8 ADD R9, R0, R8 ADD R4, R5, R1 SUB R7, R4, R1 ADD R9, R0, R8 switched instructions ADD R4, R5, R1 SUB R7, R4, R1 With by-pass SUB R7, R1, R8 Luento 8-27 Luento 8-28 Tietokoneen rakenne Hypyn vaikutus liukuhihnaan Hypyt ja liukuhihna Viivästetty hyppy Monta suorituspolkua Kohteen ennaltanouto Silmukkapuskuri Ennustuslogiikka (Sta06 Fig 12.11) (Sta06 Fig 12.12) Luento 8-29 Luento 8-30 Tietokoneen rakenne / 2006 / Teemu Kerola 5

Viivästetty haarautuminen (delayed branch) Kääntäjä laittaa hyppykäskyn perään muita käskyjä, jotka suoritetaan aina u Hihnalle ei päästetä mitään, mikä pitäisi ehkä myöhemmin perua tehdyn työ peruuttaminen on tosi vaikeata! u Jos ei hyödyllisiä käskyjä, sitten NOP-käskyjä Jos hyppy toteutuu, nuo käskyt jo hyvässä vauhdissa ja annetaan niiden valmistua sub r5, r3, r7 u Hihnaa ei tarvitse erikseen tyhjentää Jos hyppy ei toteudu, NOP-käskyt vain hukkaavat syklejä add jump There r1, r2, r3 Helpompi toteuttaa näin kuin tyhjentää hihna sub r5, r3, r7 jump There delay slot add r1, r2, r3 Luento 8-31 Monta suorituspolkuja (multiple instr. streams) Spekuloi u Hae hihnalle hyppykäskyä seuraavia käskyjä u Hae toiselle hihnalle käskyjä hypyn kohdeosoitteesta Anna polkujen edetä kunnes selviää mikä oikea u Hylkää väärä polku (tai ainakin sen tulokset) Ongelmia u Hypyn kohde saattaa selvitä vasta osoitelaskennan jälkeen u Polku voi haarautua edelleen Jatketaanko samoin? Yksi spekulointi kerrallaan? u Tarvitaan lisälaitteistoa Useampia liukuhihnoja Spekulatiivisia tuloksia ei saa tallettaa oikeisiin rekistereihin u Spekulointi käyttää resursseja ja voi hidastaa oikeaa työtä CPU:n sisäiset työrekisterit, väylä, ALU Liukuhihna osattava tyhjentää Luento 8-32 Kohteen ennaltanouto (prefetch branch target) Nouda etukäteen käsky hypyn kohteesta, mutta älä päästä sitä muuten liukuhihnalle u Tee siis vain FI-vaihe u Jos hyppy toteutuu, säästyy muistinoutoon muuten tarvittava aika Liukuhihnaa osattava tyhjentää IBM 360/91 (1967) Silmukkapuskuri (loop buffer) Pidä n viimeisintä käskyä CPU:n sisällä nopeassa puskurissa u Hyödynnä myös ennaltanoutoa Hyvällä tuurilla myös hypyn kohdekäsky tuli samalla Esim. IF-THEN ja IF-THEN-ELSE rakenne Toimii hyvin pienille silmukoille u Nouto muistista vain kerran Parempi alueellinen paikallisuus kuin pelkkää välimuistia käytettäessä CRAY-1 Motorola 68010 Luento 8-33 Luento 8-34 Hyppyjen ennustus (branch prediction) Arvaa älykkäästi kumpi todennäköisempää: hyppy vai ei hyppyä? Staattinen ennustus u Kiinteästi: aina hypätään u Kiinteästi: ei koskaan hypätä ~ 50% oikein u Operaatiokoodin perusteella Motorola 68020 VAX 11/780 Selvitetty etukäteen (ennen CPU:n valmistusta) operaatiokoodit, joilla hyppy yleisempää kuin ei hyppyä Esim. BLE käskyä käytetään tyypillisesti steppailevan for-silmukan lopussa, joten arvaa että hyppää ~ 75% ennusteista oikein Hyppyjen ennustus Dynaaminen ennustus u Muistele miten tämän suorituskerran aikana kävi kyseisen hyppykäskyn kanssa aiemmin Ennustus osuu nyt paremmin kohdalleen u Tarvitsee CPU:n sisälle apumuistia = branch history table Käskyn osoite Hypyn kohdeosoite (tai kohdekäsky) Hypätäänkö vai ei: taken / not taken Karvalakkimalli u Ennusta sen mukaan kuinka kävi edellisellä kerralla 1 bitti riittää u Silmukoissa tulee 1 tai 2 väärää ennustusta Luento 8-35 Luento 8-36 Tietokoneen rakenne / 2006 / Teemu Kerola 6

Hyppyjen ennustus Hyppyjen ennustus Parannettu malli u Älä muuta ennustetta liian helposti u Ennusta kahden edellisen kerran mukaan u 2 bittiä riittää PowerPC 620 Which branch instruction is this? tag Prediction: taken/not taken Whereto jump, if branch taken (Sta06 Fig 12.17) Luento 8-37 (Sta06 Fig 12.18) Luento 8-38 Kertauskysymyksiä Mitä tietoja on sisällytettävä PSW:hen? Miksi 2-vaiheisesta liukuhihnasta ei ole paljon hyötyä? Mitkä tekijät vaikeuttavat liukuhihnan toimintaa? Millaisia ratkaisuja on käytetty hyppykäskyjen vaikutuksen eliminoimiseen? Kuinka CPU siirtyy keskeytyskäsittelyyn? Luento 8-39 Tietokoneen rakenne / 2006 / Teemu Kerola 7