Szuperskalár
A szuperskalár CPU-tervezés a párhuzamos számítás egy olyan formáját, az utasításszintű párhuzamosítást teszi lehetővé egyetlen CPU-n belül, amely lehetővé teszi, hogy ugyanazon az órajelen több munkát lehessen elvégezni. Ez azt jelenti, hogy a CPU egy órajelciklus alatt egynél több utasítást hajt végre azáltal, hogy több utasítást egyszerre futtat (ezt nevezzük utasítás-diszpécselésnek) a duplikált funkcionális egységeken. Minden funkcionális egység csak egy végrehajtási erőforrás a CPU-magban, mint például egy aritmetikai logikai egység (ALU), lebegőpontos egység (FPU), bittologató vagy szorzó.
A legtöbb szuperskalár CPU is pipelines, de lehetséges, hogy van egy nem pipelines szuperskalár CPU vagy egy pipelines nem szuperskalár CPU.
A szuperskalár technikát a CPU-mag számos jellemzője támogatja:
- Az utasítások egy rendezett utasításlistából származnak.
- A CPU hardvere képes kiszámítani, hogy mely utasítások milyen adatfüggőséggel rendelkeznek.
- Óraciklusonként több utasítás olvasására képes
A skalárprocesszor által végrehajtott minden egyes utasítás egyszerre egy vagy két adatelemet változtat meg, de a vektorprocesszor által végrehajtott minden egyes utasítás egyszerre sok adatelemet kezel. A szuperskalár processzor a kettő keveréke:
- Minden utasítás egy adatelemet dolgoz fel.
- Minden CPU-magban több duplikált funkcionális egység található, így több utasítás egyszerre több független adatelemet kezel.
Egy szuperskalár CPU-ban egy utasításdiszpécser olvassa be az utasításokat a memóriából, és eldönti, hogy melyek azok, amelyek párhuzamosan futtathatók, és elküldi őket a CPU-ban rendelkezésre álló többszörös funkcionális egységekre.
A szuperskalár CPU tervezése az utasításelosztó pontosságának javításával foglalkozik, és lehetővé teszi, hogy a több funkcionális egységet folyamatosan lefoglalja. 2008-tól minden általános célú CPU szuperskalár, egy tipikus szuperskalár CPU akár 4 ALU-t, 2 FPU-t és két SIMD egységet is tartalmazhat. Ha a diszpécser nem tudja az összes egységet lefoglalni, a CPU teljesítménye alacsonyabb lesz.
Egyszerű szuperskalár csővezeték. Egyszerre két utasítás lekérdezésével és elküldésével ciklusonként legfeljebb két utasítás fejezhető be.
Egy CRAY T3e párhuzamos számítógép processzorlapja négy szuperskalár Alpha processzorral
Korlátozások
A szuperskalár CPU-k tervezésénél a teljesítmény javulását két dolog korlátozza:
- A beépített párhuzamosság szintje az utasításlistában
- A diszpécser és az adatfüggőség-ellenőrzés összetettsége és időigénye.
Még ha végtelenül gyors függőségi ellenőrzés is van egy normál szuperskalár CPU-n belül, ha maga az utasításlista sok függőséget tartalmaz, ez szintén korlátozza a lehetséges teljesítményjavulást, így a kódban beépített párhuzamosság mennyisége egy másik korlátot jelent.
Nem számít, milyen gyors a diszpécser sebessége, van egy gyakorlati korlátja annak, hogy hány utasítást lehet egyszerre feladni. Bár a hardveres fejlődés lehetővé teszi, hogy CPU-magonként több funkcionális egység (pl. ALU) legyen, az utasításfüggőségek ellenőrzésének problémája olyan mértékben növekszik, hogy az elérhető szuperskaláris diszpécserhatár némileg kicsi. -- Valószínűleg öt-hat egyidejűleg feladott utasítás nagyságrendje.
Alternatívák
- A szimultán többszálú futás: gyakran SMT-ként rövidítik, a szuperskalár CPU-k általános sebességének növelésére szolgáló technika. Az SMT lehetővé teszi több független végrehajtószál használatát a modern szuperskalár processzoron belül rendelkezésre álló erőforrások jobb kihasználása érdekében.
- Többmagos processzorok: A szuperskalár processzorok abban különböznek a többmagos processzoroktól, hogy a több redundáns funkcionális egység nem teljes processzor. Egyetlen szuperskalár processzor olyan fejlett funkcionális egységekből áll, mint az ALU, az egész szám szorzó, az egész szám átváltó, a lebegőpontos egység (FPU) stb. Minden funkcionális egységnek több változata is lehet, hogy lehetővé tegye sok utasítás párhuzamos végrehajtását. Ez eltér a többmagos processzoroktól, amelyek több szálból származó utasításokat dolgoznak fel egyidejűleg, magonként egy szál.
- Pipelines processzorok: A szuperskalár processzorok szintén különböznek a pipelines CPU-tól, ahol a több utasítás egyidejűleg a végrehajtás különböző szakaszaiban lehet.
A különböző alternatív technikák nem zárják ki egymást - kombinálhatók (és gyakran kombinálják is) egyetlen processzorban, így lehetséges olyan többmagos CPU-t tervezni, ahol minden egyes mag egy független processzor több párhuzamos szuperskaláris pipelines processzorral. Egyes többmagos processzorok vektoros képességgel is rendelkeznek.
Kapcsolódó oldalak
- Párhuzamos számítástechnika
- Utasításszintű párhuzamosság
- Egyidejű többszálú futás (SMT)
- Többmagos processzorok
Kérdések és válaszok
K: Mi az a szuperskalár technológia?
V: A szuperskalár technológia az alapvető párhuzamos számítástechnika egy olyan formája, amely lehetővé teszi, hogy egynél több utasítás feldolgozása történjen minden egyes órajelciklusban több végrehajtó egység egyidejű használatával.
K: Hogyan működik a szuperskalár technológia?
V: A szuperskalár technológia során az utasítások sorrendben érkeznek a processzorba, futás közben keresik az adatfüggőségeket, és minden egyes órajelciklusban egynél több utasítást töltenek be.
K: Mi a különbség a skaláris és a vektoros processzorok között?
V: Egy skalár processzoron az utasítások általában egy vagy két adatelemmel dolgoznak egyszerre, míg egy vektorprocesszoron az utasítások általában sok adatelemmel dolgoznak egyszerre. A szuperskalár processzor a kettő keveréke, mivel minden utasítás egy adatelemet dolgoz fel, de egyszerre több utasítás is fut, így a processzor egyszerre sok adatelemet dolgoz fel.
K: Milyen szerepet játszik egy pontos utasításelosztó egy szuperskalár processzorban?
V: A pontos utasításelosztó nagyon fontos egy szuperskalár processzor számára, mivel biztosítja, hogy a végrehajtó egységek mindig olyan munkával legyenek elfoglalva, amelyre valószínűleg szükség lesz. Ha az utasítás-diszpatcher nem pontos, akkor a munka egy részét esetleg el kell dobni, ami miatt a processzor nem lesz gyorsabb, mint egy skálázó processzor.
K: Melyik évben vált minden normál CPU szuperskalárissá?
V: Az összes normál CPU 2008-ban vált szuperskalárissá.
K: Hány ALU, FPU és SIMD egység lehet egy normál CPU-ban?
V: Egy normál CPU-n legfeljebb 4 ALU, 2 FPU és 2 SIMD egység lehet.