Superskalaarinen suoritin
Superskalaarisen suorittimen suunnittelussa yhden suorittimen sisällä käytetään rinnakkaislaskennan muotoa, jota kutsutaan käskytason rinnakkaistoiminnaksi ja jonka ansiosta samalla kellotaajuudella voidaan tehdä enemmän työtä. Tämä tarkoittaa sitä, että CPU suorittaa useamman kuin yhden käskyn kellojakson aikana suorittamalla useita käskyjä samanaikaisesti (ns. käskynjako) päällekkäisissä toiminnallisissa yksiköissä. Kukin funktionaalinen yksikkö on vain suorittimen ytimen sisällä oleva suoritusresurssi, kuten aritmeettinen logiikkayksikkö (ALU), liukulukuyksikkö (FPU), bittisiirrin tai kerroin.
Useimmat superskalaariset suorittimet ovat myös putkijohdettuja, mutta on mahdollista, että on olemassa myös ei-pipeloitu superskalaarinen suoritin tai putkijohdettu ei-superskalaarinen suoritin.
Superskalaarista tekniikkaa tuetaan useilla suorittimen ytimen ominaisuuksilla:
- Ohjeet tulevat järjestetystä ohjeluettelosta.
- Suoritinlaitteisto voi selvittää, millä ohjeilla on mitäkin datariippuvuuksia.
- Voi lukea useita ohjeita kellojaksoa kohti
Jokainen skalaariprosessorin suorittama käsky muuttaa yhtä tai kahta datatietoa kerrallaan, mutta jokainen vektoriprosessorin suorittama käsky käsittelee useita datatietoja kerralla. Superskalaarinen prosessori on näiden kahden sekoitus:
- Kukin ohje käsittelee yhtä datatietoa.
- Jokaisessa suorittimen ytimessä on useita päällekkäisiä toiminnallisia yksiköitä, joten useat ohjeet käsittelevät samanaikaisesti riippumattomia tietoelementtejä.
Superskalaarisessa suorittimessa käskyjen jakelija lukee käskyt muistista ja päättää, mitkä käskyt voidaan suorittaa rinnakkain, ja jakaa ne suorittimessa käytettävissä oleviin moninkertaisiin toiminnallisiin yksiköihin.
Superskalaarisen suorittimen suunnittelussa pyritään parantamaan käskynjakajan tarkkuutta ja antamaan sille mahdollisuus pitää useat toiminnalliset yksiköt koko ajan kiireisinä. Vuodesta 2008 lähtien kaikki yleiskäyttöiset suorittimet ovat superskalaarisia, ja tyypillisessä superskalaarisessa suorittimessa voi olla jopa neljä ALU:ta, kaksi FPU:ta ja kaksi SIMD-yksikköä. Jos dispatcher ei pysty pitämään kaikkia yksiköitä kiireisinä, suorittimen suorituskyky heikkenee.
Yksinkertainen superskalaarinen putki. Noutamalla ja lähettämällä kaksi ohjetta kerrallaan voidaan suorittaa enintään kaksi ohjetta sykliä kohti.
CRAY T3e -rinnakkaistietokoneen prosessorikortti, jossa on neljä superskalaarista Alpha-suorittinta.
Rajoitukset
Suorituskyvyn parantamista superskalaarisen suorittimen suunnittelussa rajoittaa kaksi asiaa:
- Käskylistan sisäänrakennetun rinnakkaisuuden taso
- Lähetysjärjestelmän ja tietojen riippuvuuden tarkistamisen monimutkaisuus ja aikakustannukset.
Vaikka riippuvuuksien tarkistaminen olisi äärettömän nopeaa normaalissa superskalaarisessa suorittimessa, jos käskyluettelossa itsessään on paljon riippuvuuksia, tämä rajoittaa myös mahdollista suorituskyvyn parantumista, joten koodin sisäänrakennettu rinnakkaisuus on toinen rajoitus.
Riippumatta siitä, kuinka nopea lähetysnopeus on, on olemassa käytännön rajoitus sille, kuinka monta ohjetta voidaan lähettää samanaikaisesti. Vaikka laitteiston kehittyminen mahdollistaa useampien toiminnallisten yksiköiden (esim. ALU:iden) käytön CPU-ydintä kohti, käskyriippuvuuksien tarkistamisen ongelma kasvaa niin suureksi, että saavutettavissa oleva superskalaarinen lähetysraja on jokseenkin pieni. -- Todennäköisesti noin viidestä kuuteen samanaikaisesti lähetettävää ohjetta.
Vaihtoehdot
- Samanaikainen monisäikeistäminen (Simultaneous multithreading, usein lyhenne SMT) on tekniikka, jolla parannetaan superskalaaristen suorittimien kokonaisnopeutta. SMT mahdollistaa useiden toisistaan riippumattomien suoritussäikeiden käytön, jolloin nykyaikaisen superskaalisen prosessorin resursseja voidaan hyödyntää paremmin.
- Moniydinprosessorit: Superskalaariset prosessorit eroavat moniydinprosessoreista siinä, että useat redundantit toiminnalliset yksiköt eivät ole kokonaisia prosessoreita. Yksittäinen superskalaarinen prosessori koostuu kehittyneistä toiminnallisista yksiköistä, kuten ALU:sta, kokonaislukukertoimesta, kokonaisluvunsiirtimestä, liukulukuyksiköstä (FPU) jne. Kustakin toiminnallisesta yksiköstä voi olla useita versioita, jotta monia käskyjä voidaan suorittaa rinnakkain. Tämä eroaa moniydinprosessoreista, jotka käsittelevät samanaikaisesti useiden säikeiden ohjeita, yksi säie per ydin.
- Putkipohjaiset prosessorit: Superskalaariset prosessorit eroavat myös putkipohjaisesta suorittimesta, jossa useat käskyt voivat olla samanaikaisesti eri suoritusvaiheissa.
Vaihtoehtoiset tekniikat eivät sulje toisiaan pois - ne voidaan yhdistää (ja usein yhdistetäänkin) yhdessä prosessorissa, joten on mahdollista suunnitella moniydinsuoritin, jossa jokainen ydin on itsenäinen prosessori, jossa on useita rinnakkaisia superskalaarisia putkistoja. Joissakin moniydinprosessoreissa on myös vektorikyky.
Aiheeseen liittyvät sivut
- Rinnakkaislaskenta
- Käskytason rinnakkaisuus
- Samanaikainen monisäikeistäminen (SMT)
- Moniydinprosessorit
Kysymyksiä ja vastauksia
K: Mitä on superskalaarinen teknologia?
V: Superskalaaritekniikka on rinnakkaislaskennan perusmuoto, joka mahdollistaa useamman kuin yhden käskyn käsittelyn kussakin kellojaksossa käyttämällä useita suoritusyksiköitä samanaikaisesti.
K: Miten superskalaaritekniikka toimii?
V: Superskalaaritekniikkaan kuuluu, että käskyt tulevat prosessoriin järjestyksessä, että prosessorin suorituksen aikana etsitään datariippuvuuksia ja että jokaisessa kellosyklissä ladataan useampi kuin yksi käsky.
K: Mitä eroa on skalaari- ja vektoriprosessoreilla?
V: Skalaariprosessorissa ohjeet käsittelevät yleensä yhtä tai kahta tietoa kerralla, kun taas vektoriprosessorissa ohjeet käsittelevät yleensä useita tietoja kerralla. Superskalaarinen prosessori on sekoitus molempia, sillä kukin käsky käsittelee yhtä datakohtaa, mutta useampi kuin yksi käsky suoritetaan kerralla, joten prosessori käsittelee useita datakohteita kerralla.
Kysymys: Mikä on tarkan käskynjakajan rooli superskalaarisessa prosessorissa?
V: Tarkka käskynjakelulaite on erittäin tärkeä superskaalarisessa prosessorissa, koska se varmistaa, että suoritusyksiköt ovat aina varattuja todennäköisesti tarvittavien töiden kanssa. Jos käskynjakelija ei ole tarkka, osa työstä saatetaan joutua heittämään pois, jolloin prosessori ei ole nopeampi kuin skaalautuva prosessori.
Kysymys: Minä vuonna kaikista tavallisista suorittimista tuli superskalaarisia?
V: Kaikista tavallisista suorittimista tuli superskalaattoreita vuonna 2008.
K: Kuinka monta ALU-, FPU- ja SIMD-yksikköä voi olla tavallisessa suorittimessa?
V: Tavallisessa suorittimessa voi olla enintään 4 ALU:ta, 2 FPU:ta ja 2 SIMD-yksikköä.