Superskalární architektura
Superskalární návrh procesoru umožňuje v rámci jednoho procesoru provádět paralelní výpočty zvané paralelismus na úrovni instrukcí, což umožňuje provádět více práce při stejné taktovací frekvenci. To znamená, že procesor během jednoho taktu provede více než jednu instrukci tím, že spustí více instrukcí současně (tzv. dispečink instrukcí) na duplicitních funkčních jednotkách. Každá funkční jednotka je pouze prováděcí prostředek uvnitř jádra procesoru, jako je aritmeticko-logická jednotka (ALU), jednotka plovoucí desetinné čárky (FPU), bitový posuvník nebo násobička.
Většina superskalárních procesorů je také pipelinovaná, ale je možné mít nepipelinovaný superskalární procesor nebo pipelinovaný nesuperskalární procesor.
Superskalární technika je podporována několika funkcemi jádra procesoru:
- Pokyny pocházejí z uspořádaného seznamu pokynů.
- Hardware procesoru dokáže zjistit, které instrukce mají jaké datové závislosti.
- Možnost čtení více instrukcí za jeden takt
Každá instrukce provedená skalárním procesorem mění jednu nebo dvě datové položky najednou, ale každá instrukce provedená vektorovým procesorem zpracovává mnoho datových položek najednou. Superskalární procesor je směsicí obou:
- Každá instrukce zpracovává jednu datovou položku.
- Uvnitř každého jádra procesoru je více duplicitních funkčních jednotek, takže více instrukcí zpracovává nezávislé datové položky současně.
V superskalárním procesoru načítá instrukční dispečer instrukce z paměti a rozhoduje, které z nich mohou být spuštěny paralelně, a rozesílá je na více duplicitních funkčních jednotek, které jsou v procesoru k dispozici.
Návrh superskalárního procesoru se zabývá zvýšením přesnosti dispečinku instrukcí a umožňuje mu udržet více funkčních jednotek neustále zaneprázdněných. Od roku 2008 jsou všechny univerzální procesory superskalární, typický superskalární procesor může obsahovat až 4 jednotky ALU, 2 jednotky FPU a dvě jednotky SIMD. Pokud dispečer nedokáže udržet všechny jednotky obsazené, výkon procesoru bude nižší.
Jednoduchá superskalární pipeline. Díky načítání a odesílání dvou instrukcí najednou lze dokončit maximálně dvě instrukce za cyklus.
Procesorová deska paralelního počítače CRAY T3e se čtyřmi superskalárními procesory Alpha.
Omezení
Zvýšení výkonu při návrhu superskalárních procesorů je omezeno dvěma faktory:
- Úroveň vestavěného paralelismu v seznamu instrukcí
- Složitost a časová náročnost dispečinku a kontroly závislosti dat.
I za předpokladu nekonečně rychlé kontroly závislostí uvnitř běžného superskalárního procesoru, pokud by samotný seznam instrukcí obsahoval mnoho závislostí, také by to omezilo možné zlepšení výkonu, takže dalším omezením je množství zabudovaného paralelismu v kódu.
Bez ohledu na rychlost dispečinku existuje praktický limit, kolik instrukcí lze současně odeslat. Hardwarový pokrok sice umožní více funkčních jednotek (např. ALU) na jádro procesoru, ale problém kontroly závislostí instrukcí se zvětší natolik, že dosažitelná hranice superskalárního dispečinku je poněkud malá. -- Pravděpodobně v řádu pěti až šesti současně dispečovaných instrukcí.
Alternativy
- Simultánní vícevláknové zpracování: často se označuje zkratkou SMT a jedná se o techniku pro zvýšení celkové rychlosti superskalárních procesorů. SMT umožňuje provádět více nezávislých vláken a lépe tak využívat prostředky dostupné uvnitř moderního superskalárního procesoru.
- Vícejádrové procesory: superskalární procesory se od vícejádrových procesorů liší tím, že více redundantních funkčních jednotek nejsou celé procesory. Jeden superskalární procesor se skládá z pokročilých funkčních jednotek, jako je ALU, násobička celých čísel, posunovač celých čísel, jednotka pro práci s plovoucí desetinnou čárkou (FPU) atd. Každá funkční jednotka může mít více verzí, aby bylo možné provádět mnoho instrukcí paralelně. Tím se liší od vícejádrových procesorů, které souběžně zpracovávají instrukce z více vláken, jedno vlákno na jádro.
- Pipelined procesory: Superskalární procesory se také liší od pipelined CPU, kde může být více instrukcí současně v různých fázích provádění.
Různé alternativní techniky se vzájemně nevylučují - lze je kombinovat (a často se tak děje) v jednom procesoru, takže je možné navrhnout vícejádrový procesor, kde je každé jádro nezávislým procesorem s několika paralelními superskalárními pipelines. Některé vícejádrové procesory obsahují také vektorové funkce.
Související stránky
- Paralelní výpočty
- Paralelismus na úrovni instrukcí
- Simultánní vícevláknové zpracování (SMT)
- Vícejádrové procesory
Otázky a odpovědi
Otázka: Co je to superskalární technologie?
Odpověď: Superskalární technologie je forma základních paralelních výpočtů, která umožňuje zpracovat více než jednu instrukci v každém hodinovém taktu pomocí více prováděcích jednotek najednou.
Otázka: Jak funguje superskalární technologie?
Odpověď: Superskalární technologie zahrnuje instrukce přicházející do procesoru v pořadí, hledání datových závislostí za běhu a načítání více než jedné instrukce v každém taktu.
Otázka: Jaký je rozdíl mezi skalárními a vektorovými procesory?
Odpověď: Ve skalárním procesoru instrukce obvykle pracují s jednou nebo dvěma datovými položkami najednou, zatímco ve vektorovém procesoru instrukce obvykle pracují s mnoha datovými položkami najednou. Superskalární procesor je kombinací obojího, protože každá instrukce zpracovává jednu datovou položku, ale současně probíhá více než jedna instrukce, takže procesor zpracovává mnoho datových položek najednou.
Otázka: Jakou roli hraje v superskalárním procesoru přesný dispečer instrukcí?
Odpověď: Přesný dispečer instrukcí je pro superskalární procesor velmi důležitý, protože zajišťuje, že prováděcí jednotky jsou vždy zaměstnány prací, která bude pravděpodobně potřeba. Pokud není dispečer instrukcí přesný, může se stát, že část práce bude muset být zahozena, což by neznamenalo, že je procesor rychlejší než procesor se škálováním.
Otázka: Ve kterém roce se všechny běžné procesory staly superskalárními?
Odpověď: Všechny normální procesory se staly superskalárními v roce 2008.
Otázka: Kolik jednotek ALU, FPU a jednotek SIMD může mít normální procesor?
O: V normálním CPU mohou být až 4 jednotky ALU, 2 jednotky FPU a 2 jednotky SIMD.