Superskalaariprosessori ( eng. superscalar processor ) - prosessori , joka tukee ns. rinnakkaisuutta käskytasolla (eli prosessori, joka pystyy suorittamaan useita käskyjä samanaikaisesti) useiden identtisten toiminnallisten solmujen (kuten ALU , FPU ) ansiosta , kerroin () sen laskentaytimessä kokonaislukukerroin ), vaihtajassa ( kokonaislukusiirtäjä ) ja muissa laitteissa). Laskentaydin ajoittaa käskyvirran suorittamisen dynaamisesti ( kääntäjä ei staattisesti).).
Tapoja parantaa suorituskykyä, joita voidaan käyttää yhdessä:
Liukuhihnaa käytettäessä solmujen lukumäärä pysyy samana; suorituskyvyn kasvu saavutetaan yhden säikeen käskyjen käsittelyn eri vaiheista vastaavien solmujen samanaikaisen toiminnan ansiosta . Superskalaaria käytettäessä suorituskyvyn kasvu saavutetaan, koska samanaikaisesti toimii suurempi määrä identtisiä solmuja, jotka käsittelevät itsenäisesti käskyjä yhdestä säikeestä (mukaan lukien useampi liukuhihna). Useita ytimiä käytettäessä jokainen ydin suorittaa erillisen säikeen käskyt, ja jokainen niistä voi olla superskalaarinen ja/tai liukuhihna. Kun käytetään useita prosessoreita, jokainen prosessori voi olla moniytiminen.
Superskalaariprosessorissa käsky noudetaan käskyvirrasta (muistista), määritetään käskyn datariippuvuuden olemassaolo tai puuttuminen muista käskyistä, ja sitten käsky suoritetaan. Samanaikaisesti yhden jakson aikana voidaan suorittaa useita itsenäisiä käskyjä.
Flynnin luokituksen mukaan yksiytimiset superskalaariprosessorit luokitellaan SISD- prosessoreiksi ( englanniksi single i nstruction stream, single data stream - one instruction stream, one data stream). Samanlaisia prosessoreita, jotka tukevat lyhyiden vektorien kanssa työskentelyä koskevia ohjeita, voidaan viitata SIMD -ryhmään ( englanniksi single i nstruction stream, multiple data streams - yksi käskyvirta, useita tietovirtoja). Moniytimiset superskalaariprosessorit kuuluvat MIMD -ryhmään ( eng. m useita käskyvirtoja , m useita tietovirtoja - useita käskyvirtoja , useita tietovirtoja) .
Maailman ensimmäinen superskalaaritietokone oli Seymour Crayn [1] kehittämä CDC 6600 (1964) . Neuvostoliitossa Elbrus -tietokonetta , joka kehitettiin vuosina 1973-1979 ITMiVT :ssä, pidettiin ensimmäisenä superskalaaritietokoneena . Suurin rakenteellinen ero Elbruksen ja CDC 6600:n välillä (lukuun ottamatta täysin erilaista ohjelmoijalle näkyvää käskyjärjestelmää - pinotyyppiä ) oli, että kaikki sen solmut olivat liukuhihnaa, kuten nykyaikaisissa superskalaarimikroprosessoreissa . Tämän tosiasian perusteella B. A. Babayan julisti Neuvostoliiton tietokoneiden etusijalle superskalaaritietokoneiden rakentamisessa, mutta Control Data -kone , CDC 7600 ( englanniksi ), joka seurasi jo CDC 6600:ta, luotiin vuonna 1969, 4 vuotta ennen kehitys " Elbrus ", oli toimilaitteiden kuljetin. Lisäksi IBM julkaisi hieman aikaisemmin (vuonna 1967) IBM 360/91 -koneen , joka käyttää epäjärjestyksessä suoritusta , rekisterien uudelleennimeämistä ja toimilaitteiden liukuhihnaa [2] .
Ensimmäiset kaupalliset superskalaariset yksisiruiset mikroprosessorit olivat Motorolan vuoden 1988 MC88100- mikroprosessori, 1989 Intel i960CA -mikroprosessori ja 1990 AMD 29000 -sarjan 29050-mikroprosessori . Ensimmäinen kaupallisesti saatavilla oleva superskalaarinen mikroprosessori oli i960 , joka julkaistiin vuonna 1988. 1990-luvulla Intelistä tuli suurin superskalaarimikroprosessorien valmistaja.
Kaikki yleiskäyttöiset prosessorit, jotka on kehitetty noin 1998 jälkeen, lukuun ottamatta niitä, joita käytetään pienitehoisissa laitteissa , sulautetuissa järjestelmissä ja akkukäyttöisissä laitteissa , ovat superskalaarisia.
P5 - mikroarkkitehtuuriset Pentium-prosessorit olivat ensimmäiset x86 - superskalaariprosessorit . Nx586- , P6 Pentium Pro- ja AMD K5 -mikroprosessorit olivat ensimmäiset superskalaariprosessorit, jotka muunsivat x86 -käskyt sisäiseksi koodiksi, jonka ne sitten suorittivat.
Jos prosessorin toiminnan aikana useat liukuhihnan käsittelemät käskyt ovat itsenäisiä , niin ydin voi suorittaa ne samanaikaisesti. Superskalaarijärjestelmissä päätöksen käskyn käynnistämisestä suorittamista varten tekee prosessoriydin itse, mikä vaatii paljon resursseja. Myöhemmissä järjestelmissä, kuten Elbrus -3 ja Itanium , käytetään tilastollista suunnittelua, eli kääntäjä päättää, mitkä käskyt suoritetaan samanaikaisesti ; kääntäjä löytää itsenäiset käskyt ja yhdistää ne yhdeksi pitkäksi käskyksi ( VLIW-arkkitehtuuri ).
Superskalaariprosessorisolmu, jota kutsutaan käskynvälittäjäksi ( ID ) , vastaa:
Solmutunnuksen on jaettava käskyt solmujen välillä, jotta solmut toimivat ilman seisokkeja. Ensimmäisessä superskalaariprosessorissa oli kaksi ALU :ta ja yksi FPU . Nykyaikaiset prosessorit sisältävät enemmän solmuja. Esimerkiksi PowerPC 970 -prosessori sisältää neljä ALU:ta, kaksi FPU:ta ja kaksi SIMD -solmua . Jos solmutunnus ei suorita tehtäväänsä (ei lataa kaikkia solmuja), superskalaariprosessorin suorituskyky ei ole parempi kuin skalaariprosessorin suorituskyky .
Superskalaariprosessori pystyy yleensä suorittamaan useamman kuin yhden käskyn kellojaksoa kohden . Samaan aikaan kyky käsitellä useita käskyjä samanaikaisesti ei tee arkkitehtuurista superskalaarista, koska samanaikaisuus voidaan saavuttaa muillakin menetelmillä: liukuhihnalla , useiden ytimien ja/tai useiden prosessoreiden avulla .
Superskalaaria tukevat prosessorit:
Arkkitehtuuri | Ensimmäinen toteutus | vuosi | Kehittäjä | Muut tämän arkkitehtuurin superskalaaritietokoneiden kehittäjät | Merkintä |
---|---|---|---|---|---|
CDC6600 | CDC6600 | 1964 | Control Data Corporation | Komennon suoritusputki, useita suoritusyksiköitä (mutta ei liukuhihnaa). | |
CDC7600 | CDC7600 | 1969 | Control Data Corporation | Täysi liukuhihna - sekä komentojen suorittaminen että itse toimilaitteet. | |
IBM System/360 malli 91 | IBM 360/91 | 1967 | IBM | Täysi liukuhihna dynaamisella rekisterin uudelleennimeämisellä, ohjeiden epäjärjestyksessä suorituksella ja haaran ennustamisella | |
Elbrus | Elbrus -1 | 1979 | ITMiVT | ||
i960 | i960 | 1988 | Intel | ||
Am 29000 | Am29050 | 1990 | AMD | ||
SPARC | SuperSPARC | 1992 | Sun Microsystems | Fujitsu , MCST | |
m88k , m68k | MC88110 , MC68060 | 1992 | Motorola | ||
x86 | Pentium | 1993 | Intel | AMD , VIA | |
MIPS | R8000 | 1994 | MIPS-tekniikat | Toshiba | |
ARM | Cortex A8 | ARM |
Superskalaaritietokoneet käyttävät useita menetelmiä nopeuttaakseen laskelmia, jotka ovat ensisijaisesti niille ominaisia, mutta tällaisia tekniikoita voidaan käyttää muun tyyppisissä arkkitehtuureissa:
Käytetään myös yleisiä tekniikoita tuottavuuden lisäämiseksi, joita käytetään myös muun tyyppisissä tietokoneissa:
Suorittaessaan yhtä käskyä skalaariprosessori käsittelee yhden tai kaksi numeroa ( skalaarit ). Suorittaessaan yhtä käskyä vektoriprosessori käsittelee useita lukuja ( vektori ). Kun useita käskyjä suoritetaan samanaikaisesti, superskalaariprosessori käsittelee samanaikaisesti useita lukuja (useita skalaareja).
Superskalaariprosessorien suorituskyvyn kasvua rajoittavat seuraavat tekijät:
Ohjeiden samanaikaisen suorittamisen mahdollisuus riippuu käskyjen sisäisen rinnakkaisuuden asteesta - siitä, kuinka paljon jotkut käskyt ovat riippuvaisia muista. Yksi käsky riippuu toisesta käskystä, jos se käyttää resursseja, joita myös toinen käsky käyttää, tai jos se käyttää toisen käskyn tulosta. Samanaikainen suoritus on mahdollista tapauksissa, joissa ohjelman käskyt ovat toisistaan riippumattomia. Esimerkiksi käsky " a = b + c" ja käsky " d = e + f" voidaan suorittaa samanaikaisesti, koska toisen laskennan tulos ei riipu toisen laskennan tuloksesta. Käsky " a = b + c" ja " b = e + f" ovat toisistaan riippuvaisia, eikä niitä voida suorittaa samanaikaisesti, koska niiden suorituksen tulos riippuu siitä, kumpi suoritetaan ensin.
Samanaikaisesti suoritettavien käskyjen määrän kasvaessa niiden keskinäisten riippuvuuksien tarkistamiseen käytetty aika kasvaa nopeasti, eivätkä nämä kustannukset saisi ylittää yhtä kellojaksoa. Aikaa kuluu testipiirin toteuttavien logiikkaporttien ajamiseen ja tiedon siirtämiseen porttien välillä. Viiveitä ei voida vähentää edes teknologista prosessia muuttamalla . Tehonhäviö , piirin monimutkaisuus ja signaaliviiveet porteissa eivät salli samanaikaisesti lähetettyjen käskyjen määrän kasvattamista yli kahdeksan.
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |