Szuperskalár

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. december 12-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

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).

Történelem

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.

Leírás

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 .

Megvalósítások

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

Számítások gyorsítása

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:

Skaláris és szuperskaláris processzorok

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.

Korlátozások

A szuperskaláris processzorok teljesítményének növekedését a következő tényezők korlátozzák:

  1. az utasítások belső párhuzamosságának mértéke;
  2. az utasítások és a keresésre fordított idő közötti függőségek megtalálásának bonyolultsága; a regiszter átnevezési séma összetettsége és az átnevezésre fordított idő;
  3. ági utasítások feldolgozása.

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.

Lásd még

Jegyzetek

  1. Kezelő besorolása . Parallel.ru - Információs és elemző központ a párhuzamos számításokhoz:. Letöltve: 2009. augusztus 16. Az eredetiből archiválva : 2012. február 26..
  2. Lásd: http://domino.research.ibm.com/tchjr/journalindex.nsf/ResVolumes!OpenView&Start=1&Count=1000&Expand=42.1#42.1 .

Irodalom