Szuperskaláris processzor ( eng. superscalar processor ) - olyan processzor , amely támogatja az úgynevezett párhuzamosságot az utasítások szintjén (vagyis több utasítás egyidejű végrehajtására képes processzor ) több azonos funkcionális csomópont (például ALU , FPU ) beépítése miatt , szorzó magjában) a számítási integer szorzó ), a shifterben ( integer shifter ) és más eszközökben). Az utasításfolyam végrehajtásának ütemezését dinamikusan a számítási kernel végzi (nem statikusan a fordító ).
Együtt használható módszerek a teljesítmény javítására:
Csővezeték használatakor a csomópontok száma változatlan marad; teljesítménynövekedés érhető el az egy szál utasítások feldolgozásának különböző szakaszaiért felelős csomópontok egyidejű működése miatt . Szuperskaláris használata esetén a teljesítménynövekedés nagyobb számú azonos csomópont egyidejű működésének köszönhető, amelyek önállóan dolgozzák fel az utasításokat egy szálból (több csővezetéket is beleértve). Több mag használatakor mindegyik mag külön szál utasításait hajtja végre, és mindegyik lehet szuperskaláris és/vagy pipeline. Több processzor használata esetén minden processzor többmagos lehet.
Egy szuperskaláris processzorban egy utasítást lekérnek az utasításfolyamból (memóriában), meghatározzák az utasítások adatfüggőségének meglétét vagy hiányát más utasításoktól, majd végrehajtják az utasítást. Ugyanakkor egy ciklus alatt több független utasítás is végrehajtható.
Flynn besorolása szerint az egymagos szuperskaláris processzorokat a SISD processzorok közé sorolják ( angolul s ingle i nstruction stream, s ingle data stream - one instruction stream, one data stream). Hasonló processzorok, amelyek támogatják a rövid vektorokkal való munkavégzésre vonatkozó utasításokat, a SIMD csoporthoz ( angolul single i nstruction stream, multiple data streams - egy utasításfolyam, több adatfolyam) utalhatnak . A többmagos szuperskaláris processzorok a MIMD csoportba tartoznak ( eng. m multiple i nstruction stream , m multiple data stream - több utasítás folyam, több adatfolyam).
A világ első szuperskaláris számítógépe a Seymour Cray által kifejlesztett CDC 6600 (1964) volt [1] . A Szovjetunióban az Elbrus számítógépet tartották az első szuperskaláris számítógépnek , amelyet 1973-1979 között fejlesztettek ki az ITMiVT -nél . A fő szerkezeti különbség az Elbrus és a CDC 6600 között (kivéve a programozó számára látható teljesen eltérő utasításrendszert - a verem típusát) az volt, hogy a benne lévő összes csomópont pipeline volt, mint a modern szuperskaláris mikroprocesszorokban . Ezen tény alapján B. A. Babayan deklarálta a szovjet számítógépek elsőbbségét a szuperskaláris számítógépek építésében, de a Control Data gépet , a CDC 7600 -at ( angolul ), amely már a CDC 6600-at követi, 1969-ben, 4 évvel a számítógépek kezdete előtt hozták létre. fejlesztés " Elbrus ", volt egy szállítószalag működtető. Ezenkívül valamivel korábban (1967-ben) az IBM kiadta az IBM 360 /91-es gépet , amely rendhagyó végrehajtást , regiszter átnevezést és az aktuátorok csővezetékeit [2] használja .
Az első kereskedelmi forgalomban kapható egylapkás szuperskaláris mikroprocesszorok a Motorola 1988 -as MC88100 mikroprocesszora, az 1989 -es Intel i960CA mikroprocesszor és az 1990-es AMD 29000 sorozatú 29050 mikroprocesszor voltak . Az első kereskedelmi forgalomban kapható szuperskaláris mikroprocesszor az i960 volt , amelyet 1988-ban adtak ki. Az 1990-es években az Intel a szuperskaláris mikroprocesszorok fő gyártója lett.
Valamennyi általános célú processzor, amelyet körülbelül 1998 óta fejlesztettek ki, kivéve azokat, amelyeket alacsony fogyasztású eszközökben , beágyazott rendszerekben és akkumulátoros eszközökben használnak , szuperskaláris.
A P5 mikroarchitektúrájú Pentium processzorok voltak az első x86 -os szuperskalár processzorok . Az Nx586 , P6 Pentium Pro és AMD K5 mikroprocesszorok voltak az első olyan szuperskaláris processzorok, amelyek az x86 -os utasításokat belső kóddá alakították, amelyeket aztán végrehajtottak.
Ha a processzor működése során több, a csővezeték által feldolgozott utasítás független , akkor a kernel egyidejűleg is végrehajthatja azokat. A szuperskaláris rendszerekben a végrehajtási utasítás indításáról maga a processzormag dönt, ami sok erőforrást igényel. A későbbi rendszerekben, mint például az Elbrus -3 és az Itanium , statisztikai tervezést használnak, vagyis a fordító dönti el, hogy mely utasításokat hajtsa végre egyszerre ; a fordító megkeresi a független utasításokat, és egyetlen hosszú utasításba egyesíti őket ( VLIW architektúra ).
A szuperskaláris processzor csomópont, az úgynevezett utasítás diszpécser ( ID ), a következőkért felelős:
A csomópontazonosítónak el kell osztania az utasításokat a csomópontok között, hogy a csomópontok leállás nélkül fussanak. Az első szuperskalár processzorok két ALU -val és egy-egy FPU -val rendelkeztek . A modern processzorok több csomópontot tartalmaznak. Például a PowerPC 970 processzor négy ALU-t, két FPU-t és két SIMD -csomópontot tartalmaz . Ha a csomópontazonosító nem látja el a feladatát (nem tölti be az összes csomópontot), a szuperskaláris processzor teljesítménye nem lesz jobb, mint a skaláris processzor teljesítménye .
Egy szuperskaláris processzor általában egynél több utasítás végrehajtására képes órajelenként . Ugyanakkor a több utasítás egyidejű feldolgozásának képessége nem teszi szuperskalárissá az architektúrát, mivel az egyidejűség más módszerekkel is elérhető: csővezeték használatával, több mag használatával és/vagy több processzor használatával .
A szuperskalárt támogató processzorok :
Építészet | Első megvalósítás | Év | Fejlesztő | A szuperskaláris számítógépek más fejlesztői ezen az architektúrán | jegyzet |
---|---|---|---|---|---|
CDC6600 | CDC6600 | 1964 | Control Data Corporation | Parancsvégrehajtási folyamat, több végrehajtási egység (de nem csővezetékes). | |
CDC7600 | CDC7600 | 1969 | Control Data Corporation | Teljes csővezeték - mind a parancsok végrehajtása, mind maguk a működtetők. | |
IBM System/360 Model 91 | IBM 360/91 | 1967 | IBM | Teljes csővezeték dinamikus regiszter átnevezéssel, utasítások nem megfelelő végrehajtásával és elágazás előrejelzésével | |
Elbrus | Elbrus -1 | 1979 | ITMiVT | ||
i960 | i960 | 1988 | Intel | ||
Am29000 | 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 technológiák | Toshiba | |
KAR | Cortex A8 | KAR |
A szuperskaláris számítógépek számos módszert alkalmaznak a számítások felgyorsítására, amelyek elsősorban rájuk jellemzőek, de az ilyen technikák más típusú architektúrákban is használhatók:
Szintén használatosak a termelékenység növelésére szolgáló általános technikák, amelyeket más típusú számítógépekben is használnak:
Egy utasítás végrehajtásakor a skalárprocesszor egy vagy két számot ( scalars ) dolgoz fel. Egy utasítás végrehajtásakor a vektorprocesszor több számot dolgoz fel ( vektor ). Ha több utasítást hajtanak végre egyszerre, a szuperskaláris processzor egyidejűleg több számot (több skalárt) dolgoz fel.
A szuperskaláris processzorok teljesítményének növekedését a következő tényezők korlátozzák:
Az utasítások egyidejű végrehajtásának lehetősége az utasítások belső párhuzamosságának mértékétől függ - attól, hogy egyes utasítások mennyire függenek másoktól. Egy utasítás egy másik utasítástól függ, ha olyan erőforrásokat használ, amelyeket egy másik utasítás is használ, vagy ha egy másik utasítás eredményét használja. Egyidejű végrehajtás olyan esetekben lehetséges, amikor a programutasítások függetlenek egymástól. Például a " a = b + c" utasítás és a " d = e + f" utasítás végrehajtható egyszerre, mivel az egyik számításának eredménye nem függ a másik számításának eredményétől. Az „ a = b + c” utasítás és a „ b = e + f” utasítás kölcsönösen függenek egymástól, és nem hajthatók végre egyszerre, mivel végrehajtásuk eredménye attól függ, hogy melyiket hajtják végre először.
Az egyidejűleg végrehajtott utasítások számának növekedésével gyorsan növekszik a kölcsönös függőségük ellenőrzésére fordított idő, és ezek a költségek nem haladhatják meg az egy órajelet. Idő telik a tesztáramkört megvalósító logikai kapuk működtetésével és a kapuk közötti adatátvitellel. A késések csökkentése még a technológiai folyamat megváltoztatásával sem lehetséges . A teljesítménydisszipáció , az áramkör bonyolultsága és a jelkésések a kapuknál nem teszik lehetővé az egyidejűleg továbbított utasítások számának nyolc fölé növelését.
processzortechnológiák | Digitális|||||||||
---|---|---|---|---|---|---|---|---|---|
Építészet | |||||||||
Instruction Set Architecture | |||||||||
gépszó | |||||||||
Párhuzamosság |
| ||||||||
Megvalósítások | |||||||||
Alkatrészek | |||||||||
Energiagazdálkodás |