Intel Pentium Pro -prosessori tietokonearkkitehtuurit, syksy -96 Ari Rantanen
Tarkasteltavat aiheet Katsaus Pentium Pro:n ominaisuuksiin Käskyn suoritus Pentium Pro:n liukuhihnalla Pentium Pro:n suorituskyky 16-bittisen koodin aiheuttamat ongelmat mittaustuloksia MMX-laajennus
Pentium Pro uusin jäsen 70-luvulta lähtevässä Intel x86-prosessorien ketjussa alaspäin yhteensopiva vanhempien x86:n kanssa superskalaarinen kellopulssilla dekoodautuu ja valmistuu max. 3 käskyä superliukuhihnoitettu 14-vaiheinen likuhihna dynaaminen skedulointi Tomasulo spekulatiivinen käskyjen suoritus kehittynyt haarautumisen ennakointi 4 historia-bittiä + staattinen ennakointi 512-paikkainen BTB = Dynamic execution
P6 vs. Pentium P6 5,5 M transistoria max. 3 käskyä kerrallaan 14-vaiheinen liukuhihna 4-way joukkoassosiat. L1- datavälimuisti L2-välimuistille oma, prosessorin nopeudella toimiva väylä Pentium 3,3 M transistoria max 2 käskyä kerrallaan 5-vaiheinen lh 2-way j-a L1- datavälimuisti L2-välimuisti käyttää muistiväylää, jonka nopeus vain osa prosessorin nopeudesta
Muita parannuksia Pentiumiin verrattuna tapahtumaperustainen (transactional) I/O-väylä non-blocking välimuistihierarkia L2-välimuisti prosessorin kanssa samassa kotelossa parempi haarautumisen ennakointi liukuhihnan yhden tilan suoritus 33 % Pentiumia nopeampaa silti tällä hetkellä kellotaajuudet samoja moniprosessorivalmius tarvittava logiikka prosessoreissa, max. 4 prosessoria ilman ulkopuolista apua liukulukuyksikköä nopeutettu conditional move -käsky vähentämään haarautumisten tarvetta pino aliohjelmien paluuosoitteille (Return stack)
Käskyn suoritus P6:n liukuhihnalla x86-käskykanta ei sovi kovin hyvin nopeaan liukuhihnoitukseen Käskyt vaihtelevan mittaisia Eri käskyjen sisältämä työmäärä vaihtelee suuresti useita osoitustapoja ja käskytyyppejä Käskyille voi antaa prefiksejä. CISC!
Käskyn suoritus P6:n liukuhihnalla Ratkaisu: Jaetaan monimutkaiset x86-käskyt yhdeksi tai useammaksi mikrokäskyksi idea esiteltiin NexGen Nx586-prosessorissa kaikki u-käskyt samanmittaisia ja -muotoisia 2 operandia + tulos suurin osa uusien kääntäjien tuottamista x86-käskyistä voidaan korvata yhdellä u-käskyllä, pahimmillaan tarvitaan yli 200 u-käskyä / x86-käsky u-käskyt vain sisäisessä käytössä (vs. NexGen)
Käskyn suoritus P6:n liukuhihnalla 1. vaihe, fetch-decode luetaan kaksi 32 tavun riviä käskyvälimuistista BTB:n antamasta kohdasta, merkitään käskyjen alkamis- ja loppumiskohdat 16 tavua dekooderiyksikölle (aligned) dekooriyksikössä 3 dekooderia + mikrokoodisekvensseri: 2 yksinkertaista - x86-käskyt, joista yksi u-käsky 1 monimutkaisempi - x86-käskyt, joista 1-4 u-käskyä loput käskyt u-koodisekvensserille parhaimmillaan 6 u-käskyä / pulssi - yleensä 3 / pulssi
1. vaihe, fetch-decode dekoodatut u-käskyt lähetetään rekisteri-aliastaulukkoon (RAT), missä tapahtuu rekistereiden uudelleennimeäminen uudelleennimeäminen erityisen hyödyllistä, koska x86- arkkitehtuurissa vain 8 kokonaisluku- ja 8 liukulukurekisteriä P6:ssa 40 lisärekisteriä, jotka sijaitsevat reorder-puskurissa samalla u-käskyihin liitetään tarvittavaa tilatietoa RAT:sta u-käskyt siirretään rekisteripooliin (=reorder-puskuri) sekä varausasemalle
2. vaihe, dispatch-execute Tomasulon algoritmin mukainen dynaaminen skedulointi Yksi varausasema, joka on yhteydessä kaikkiin 11 suoritusyksikköön Varausasemalta 5 porttia suoritusyksiköihin yhdellä pulssilla max. 5 u-käskyä suoritukseen tavallisesti 3 käskyä kerrallaan 2 AGU:a, Load ja Store yhtäaikaisesti Store vain memory-order-puskuriin(mob), muistiinkirjoitus vetäytymisen yhteydessä Load voi ohittaa Store:n MOB:ssa Suurin osa kokonaislukuoperaatioista suoritettavissa yhdellä kellopulssilla liukulukuyksikkö liukuhihnoitettu paitsi jakolasku
3. vaihe, retirement Valmiit käskyt kirjataan vetäytymisrekisteritaulukkoon (RRF) RRF == x86-arkkitehtuurin 8 kokonaisluku ja 8 liukulukurekisteriä Samalla kellopulsilla voi vetäytyä max. 3 u-käskyä Huom! 3 kpl u-käskyjä <= 3 kpl x86-käskyjä
Pentium Pro:n suorituskyky P6 suunniteltu toimimaan 32-bittisessä ympäristössä, 16- bittisiä käyttöjärjestelmiä käytettäessä sen suorituskyky kärsii Prosessorin ilmestymisaikaan kuitenkin x86-koneissa käytettiin yleisesti 16-bittistä Win 3.1-käyttöjärjestelmää P6 sai kunnian olla 1. x86-prosessori, joka suoritti olemassaolevaa koodia hitaammin kuin edeltäjänsä segmenttirekisterin arvon muutoksesta johtuva liukuhihnan tyhjentäminen kallis operaatio P6:ssa The read of the register waits until the partial write to the register retires. In addition, any uops that follow the stalled uop will also wait until the cycle after the stalled uop continues through the pipe. In general, avoid reading a large register (EAX) after writing a small register (AL), which is contained in the large register, as it produces a stall.
SPEC95 25 20 20,4 15 10 5 5,1 4,18 8,58 8 6,48 6,31 15 7,93 11,1 SPECint95 SPECfp95 0 Pentium 200 MHz PPro200 MHz PowerPC 604e 200 MHz Alpha 21164 500 MHz Alpha 21164 266 MHz
Prosessorinopeus, CPUMark32 Win NT 4.0 2,5 2,2 2 1,7 kertaa P 150 MHz 1,5 1 1,4 1 1 1 16-bittinen 32-bittinen 0,5 0 PPro 200 PPro 150 P 150 prosessori, MHz
Pelinopeus 20 19,2 15 16,5 16,5 ruutua / sekunti -> parempi 10 5 8,1 10,8 13 13,1 9,4 10 8 Pentium 150 Ppro 150+fastvid 0 Quake Doom95 Monster Truck M. DescentII ATF
MMX 57 multimedian tarpeita varten suunniteltua uutta käskyä Pentium ja Pentium Pro -arkkitehtuureihin 4 uutta tietotyyppiä: packed byte, packed word, packed double word sekä quadword ei uusia moodeja, yhteensopiva olemassaolevien käyttöjärjestelmien kanssa yhteensopiva olemassaolevien emolevyjen kanssa ainakin osan myös AMD ja Cyrix lisäävät käskyt omiin prosessoreihinsa
MMX SIMD-tietomalli: MMX-käskyt käsittelevät MMXrekistereissä sijaitsevia pakattuja tietotyyppejä operaatiot kohdistetaan samanaikaisesti kaikkiin pakattuihin data-alkioihin 64-bittiset MMX-rekisterit samoja kuin liukulukurekisterit + kustannussäästöt + yhteensopivuus - käytännössä samassa rutiinissa ei voi käyttää sekä liukulukuja että MMX-käskyjä (3D??) saturaatioaritmetiikka Intelin mukaan 50-400% tehonlisäys multimediaohjelmien kriittisiin kohtiin käyttö aluksi pääasiassa uusien ajureiden kautta ei vielä tarvittavaa kääntäjäteknologiaa
Lähteitä developer.intel.com www.x86.org PC-Magazine 9/95 www.chipanalyst.com