BI-PI.21-3
  • Mikroarchitektura superskalárních procesorů
  • Instrukční paralelismus
  • Vykonávání instrukcí mimo pořadí
  • Přejmenování registrů (Tomasulův algoritmus)
  • Statické a dynamické predikce skoků
  • Spekulativní provádění instrukcí.

Mikroarchitektura superskalárních procesorů

  • Představuje kombinaci časového a prostorového paralelismu
  • EX stupeň obsahuje více paralelních jednotek
    • Zpracovává víc instrukcí napříč stupni zřetězení
    • Načte několik instrukcí najednou, několik dekóduje a vykonává
  • Počet paralelních jednotek = Šířka zřetězení
    • Propustnost superskalárního CPU je > 1
  • Závislosti mezi instrukcemi
    • Brání paralelnímu zpracování
    • Nutné eliminovat nebo obejít
    • Typy závislostí
      • Datová
        • Instrukce odkazuje na data předchozí instrukce
      • Řídící
        • Vykonání instrukce je ovlivněno předchozí instrukcí
        • Spekulativní vykonávání instrukcí
      • Strukturální závislost
        • Víc instrukcí chce jednu část procesoru
        • Chce to více HW zdrojů
        • Nedostupný zdroj zdržuje instrukce
  • Unifikované instrukční zřetězení
    • Každá fáze musí podporovat všechny instrukce (neefektivní)
    • Rozdílné instrukce požadují rozdílné zpracování
    • Každá instrukce má jinou latenci
    • Nepoužívá se!
      Pasted image 20260611000329.png
  • snaha dosahovat nejvyšší propustnosti zpracovaných instrukcí
    • tok zpracovávaných dat uvnitř procesoru
    • tok dat z/do paměti
    • tok instrukcí
  • cílem maximalizovat, tři hlavní typy instrukcí
    • ALU instrukce
    • Load/Store instrukce
    • Skokové/řídící instrukce
      Pasted image 20260611000401.png

Instrukční paralelismus

  • ILP Instruction Level Paralelism
    • Provádění po sobě jdoucích instrukcí se může částečně nebo plně překrývat
  • Částečné překrývání
    • HW prostředek je využit hned po uvolnění
    • Instrukce odděleny v čase, je jich rozpracováno víc současně
    • časový paralelismus -> instrukční zřetězení
  • Úplné překrývání instrukcí
    • Instrukce v daný čas mohou využít stejný HW
    • Paralelismus v prostoru
      • Instrukce jsou zpracovány paralelně
    • Zvyšuje instrukce za čas

Vykonávání instrukcí mimo pořadí

  • Statická superskalární mikroarchitektura
    • Paralelně mohou být prováděny pouze po sobě jdoucí instrukce
    • Závislosti vedou k pozastavení vykonávání (STALL)
      • Rigid pipeline
  • Dynamická superskalární mikroarchitektura
    • Paralelně jsou vykonávané instrukce připravené k vykonání
      • bez ohledu na jejich pořadí
    • Instrukce se mohou předběhnout
  • Každá paralelní větev je specializovaná na určitý typ instrukcí
  • Nezávislé instrukce v jednotlivých větvích nepozastavují jedna druhou
  • Závislosti musí být vyřešeny před rozdělením na větve
  • Logické stupně
    • Instrukční a dekodovací fronta
      • Fronta načtených instrukcí
      • Mohou být částečně dekodované
    • Rozřazovací fronta
      • Instrukce v ní vyčkávají na volné execute unity
      • Přicháze in order
      • Odcházejí out of order
    • Rezervační stanice
      • Dedikovaná fronta instrukcí připravených k vykonání v dané jednotce
    • Řadící fronta
      • Zpětně řadí vykonané instrukce do správného pořadí
      • Nutná pro přerušení
    • Zápisová fronta
      • Fronta mezi execute units a cache

Přejmenování registrů (Tomasulův algoritmus)

  • Umožňuje eliminovat falešné datové závislosti (opětovné použití registrů)
  • Využívá sadu skrytých registrů RR1 až RRn
  • Algoritmus
    • Načti instrukci
    • Jsou vstupní reg přejmenovány?
      • Ano: použij nová jména
      • Ne : použij architekturní registry
    • Zapisuje instrukce do registru?
      • Ano: Přejmenuj tento registr
    • opakuj
  • Architektonické registry doplníme o další fyzické registry RRset
  • Každý registr ARCH doplníme o
    • Bit platnosti
    • Ukazatel RRn do RRSET
    • Finished
  • Rozšířen pro modifikaci architekturálních registrů v původním programovém pořadí
    • ROB (Reorder Buffer)
  • Když instrukce dokončí vykonávání, aktualizuj RRn a ROB nastav na finished
  • Pokud je instrukce finished a je nejstarší v ROB, je dokončená
    • Může změnit arch stav procesoru
    • Jinak zůstává v ROB a čeká na dokončení předchůdce
    • Alternativou pro maximální stupeň paralelismu je data-flow model
      • Neřídí se pořadím instrukcí v programu, ale dostupností dat
      • pokud má instrukce připravené svoje operandy, může být vykonána
        • jinak má závislost na některé předchozí a čeká
        • po přejmenování se sleduje dostupnost operandů, při dodržení RAW korektní přístup
    • rezervační
      • pozastaveny dokud nemají operandy

Statické a dynamické predikce skoků

  • Predikujeme cíl větvení
  • Statická predikce - 70..80%
    • Pro danou skokovou instrukci je výsledek vždy stejný
    • typy
      • BTFNT (Backwards Taken, Forwards Not Taken)
        • dopředný skok neskočí, zpětný ano
        • typicky cyklus
      • Heuristiky analyzující program během kompilace
        • výsledky se předávají jako tipy zakódované ve skokových instrukcích
        • nutná podpora ISA
      • profilace
        • vykonání s různými vstupy
        • nutná podpora ISA
  • dynamická predikce
    • 80..98%
    • základní smithův prediktor
      • obsahuje několik k-bitových čítačů
      • popis množinou konečných automatů, stavy představují predikce a hrany jsou skutečné skoky
      • tvořen automaty, bitů k indexaci
      • různé skokové instrukce se mohou mapovat do stejného automatu
      • neutrální interference - nevadí, že se namapují různé skokové instrukce
      • negativní interference
      • namapuje se různé skokové instrukce a a dochází k negativnímu ovlivňování
      • Pasted image 20260611221158.png
    • index selection prediktor
      • používá konkatenaci pro vytvoření indexu do PHT
      • vhodný pro v sérii se opakující skokové instrukce, špatný pro rozpoznání vzorů

Spekulativní provádění instrukcí.

  • Prediktory umožňují spekulativně předzpracovat instrukce
    • Odhadují chování skoku a jeho cíl
  • spekulativní načítání, dekódování a vykonávání instrukcí
    • provádění větve programu kterou procesor odhadl jako tu která bude vykonána
    • spekulativní provádění instrukcí - predikce chování a provedení
    • validace spekulativního provádění/zotavení - ověření správnosti predikce, případné ukončení nesprávné větve a zahájení výběru instrukcí ze správné větve
  • všechny instrukce jsou označovány unikátním identifikátorem
    • identifikátor putuje s každou instrukcí, identifikuje spekulativní větev programu
    • ukládány adresy všech prováděných instrukcí
      • nutné pro zotavení v případě chybné predikce
  • validace/zotavení nastává v okamžiku známého skutečného směru skoku
    • správná predikce
      • identifikátor je zrušen a všechny jím označené instrukce jsou potvrzeny (mohou být dokončeny)
    • zotavení z chybné predikce
      • ukončení spekulativní větve
        • identifikace instrukce označené příslušným identifikátorem
        • zneplatnění instrukce ve frontě instrukcí, v rezervačních stanicích a v ROBu
      • zahájení vykonávání správné větve
        • aktualizace PC

Vytvořeno: 29. 5. 2026, 16:39
Poslední aktualizace: 11. 6. 2026, 22:54