Superskalárna architektúra
Superskalárny dizajn CPU umožňuje formu paralelného výpočtu nazývaného paralelizmus na úrovni inštrukcií v rámci jedného CPU, ktorý umožňuje vykonať viac práce pri rovnakej taktovacej frekvencii. To znamená, že CPU vykonáva viac ako jednu inštrukciu počas jedného taktu tým, že spúšťa viac inštrukcií súčasne (tzv. dispečing inštrukcií) na duplicitných funkčných jednotkách. Každá funkčná jednotka je len vykonávací prostriedok vo vnútri jadra CPU, ako napríklad aritmeticko-logická jednotka (ALU), jednotka s pohyblivou rádovou čiarkou (FPU), bitový posunovač alebo násobička.
Väčšina superskalárnych procesorov je tiež pipelínová, ale je možné mať aj nepipelínový superskalárny procesor alebo pipelínový nesuperskalárny procesor.
Superskalárnu techniku podporuje niekoľko funkcií jadra CPU:
- Pokyny pochádzajú z usporiadaného zoznamu pokynov.
- Hardvér procesora dokáže zistiť, ktoré inštrukcie majú aké dátové závislosti.
- Dokáže čítať viac inštrukcií za jeden hodinový cyklus
Každá inštrukcia vykonaná skalárnym procesorom mení jednu alebo dve dátové položky naraz, ale každá inštrukcia vykonaná vektorovým procesorom spracováva mnoho dátových položiek naraz. Superskalárny procesor je kombináciou oboch:
- Každá inštrukcia spracúva jednu dátovú položku.
- V každom jadre CPU sa nachádza viacero duplicitných funkčných jednotiek, takže viaceré inštrukcie spracúvajú nezávislé dátové položky súčasne.
V superskalárnom procesore dispečer inštrukcií číta inštrukcie z pamäte a rozhoduje, ktoré z nich možno spustiť paralelne, a rozosiela ich na viaceré duplicitné funkčné jednotky, ktoré sú v procesore k dispozícii.
Návrh superskalárneho procesora sa zaoberá zlepšením presnosti dispečingu inštrukcií a umožňuje mu neustále udržiavať viacero funkčných jednotiek v činnosti. Od roku 2008 sú všetky univerzálne procesory superskalárne, typický superskalárny procesor môže obsahovať až 4 ALU, 2 FPU a dve jednotky SIMD. Ak dispečer nedokáže udržať všetky jednotky obsadené, výkon procesora bude nižší.
Procesorová doska paralelného počítača CRAY T3e so štyrmi superskalárnymi procesormi Alpha
Jednoduché superskalárne potrubie. Vďaka načítaniu a odosielaniu dvoch inštrukcií naraz je možné dokončiť maximálne dve inštrukcie za cyklus.
Obmedzenia
Zlepšenie výkonu pri návrhu superskalárnych procesorov je obmedzené dvoma vecami:
- Úroveň zabudovaného paralelizmu v zozname inštrukcií
- Zložitosť a časové náklady na dispečing a kontrolu závislosti údajov.
Aj za predpokladu nekonečne rýchlej kontroly závislostí v bežnom superskalárnom procesore, ak má samotný zoznam inštrukcií veľa závislostí, tiež by to obmedzilo možné zlepšenie výkonu, takže množstvo zabudovaného paralelizmu v kóde je ďalším obmedzením.
Bez ohľadu na to, aká je rýchlosť dispečera, existuje praktický limit, koľko inštrukcií možno súčasne odoslať. Hardvérový pokrok síce umožní viac funkčných jednotiek (napr. ALU) na jedno jadro CPU, ale problém kontroly závislostí inštrukcií narastá do takej miery, že dosiahnuteľný limit superskalárneho dispečingu je o niečo menší. -- Pravdepodobne rádovo päť až šesť súčasne odosielaných inštrukcií.
Alternatívy
- Simultánny multithreading: často označovaný skratkou SMT je technika na zvýšenie celkovej rýchlosti superskalárnych procesorov. SMT umožňuje vykonávať viacero nezávislých vlákien, aby sa lepšie využili zdroje dostupné v modernom superskalárnom procesore.
- Viacjadrové procesory: superskalárne procesory sa od viacjadrových procesorov líšia tým, že viaceré redundantné funkčné jednotky nie sú celé procesory. Jeden superskalárny procesor sa skladá z pokročilých funkčných jednotiek, ako sú ALU, celočíselná násobička, celočíselný posunovač, jednotka s pohyblivou rádovou čiarkou (FPU) atď. Môže existovať viacero verzií každej funkčnej jednotky, aby bolo možné vykonávať mnoho inštrukcií paralelne. Tým sa líši od viacjadrových procesorov, ktoré súbežne spracúvajú inštrukcie z viacerých vlákien, jedno vlákno na jadro.
- Pipelined procesory: Superskalárne procesory sa tiež líšia od pipelined procesorov, kde môže byť viacero inštrukcií súčasne v rôznych fázach vykonávania.
Rôzne alternatívne techniky sa navzájom nevylučujú - možno ich kombinovať (a často sa aj kombinujú) v jednom procesore, takže je možné navrhnúť viacjadrový procesor, v ktorom je každé jadro nezávislým procesorom s viacerými paralelnými superskalárnymi pipelines. Niektoré viacjadrové procesory obsahujú aj vektorové funkcie.
Súvisiace stránky
- Paralelné výpočty
- Paralelizmus na úrovni inštrukcií
- Simultánne viacvláknové spracovanie (SMT)
- Viacjadrové procesory
Otázky a odpovede
Otázka: Čo je to superskalárna technológia?
Odpoveď: Superskalárna technológia je forma základných paralelných výpočtov, ktorá umožňuje spracovať viac ako jednu inštrukciu v každom hodinovom cykle pomocou viacerých vykonávacích jednotiek súčasne.
Otázka: Ako funguje superskalárna technológia?
Odpoveď: Superskalárna technológia zahŕňa inštrukcie prichádzajúce do procesora v poradí, hľadanie dátových závislostí počas behu a načítanie viac ako jednej inštrukcie v každom takte.
Otázka: Aký je rozdiel medzi skalárnymi a vektorovými procesormi?
Odpoveď: V skalárnom procesore inštrukcie zvyčajne pracujú s jednou alebo dvoma dátovými položkami naraz, zatiaľ čo vo vektorovom procesore inštrukcie zvyčajne pracujú s mnohými dátovými položkami naraz. Superskalárny procesor je kombináciou oboch, pretože každá inštrukcia spracúva jednu dátovú položku, ale viac ako jedna inštrukcia beží naraz, takže procesor spracúva mnoho dátových položiek naraz.
Otázka: Akú úlohu zohráva presný dispečer inštrukcií v superskalárnom procesore?
Odpoveď: Presný dispečer inštrukcií je pre superskalárny procesor veľmi dôležitý, pretože zabezpečuje, aby boli vykonávacie jednotky vždy obsadené prácou, ktorá bude pravdepodobne potrebná. Ak dispečer inštrukcií nie je presný, potom sa môže stať, že časť práce bude musieť byť zahodená, čo by spôsobilo, že procesor nebude rýchlejší ako škálovací procesor.
Otázka: V ktorom roku sa všetky bežné procesory stali superskalárnymi?
Odpoveď: Všetky bežné procesory sa stali superskalárnymi v roku 2008.
Otázka: Koľko ALU, FPU a SIMD jednotiek môže byť na normálnom CPU?
Odpoveď: V bežnom CPU môžu byť až 4 ALU, 2 FPU a 2 jednotky SIMD.