Superskalarna zasnova procesorja omogoča obliko vzporednega računanja, imenovano vzporednost na ravni ukazov, znotraj enega samega procesorja. To pomeni, da procesor v enem taktu lahko izvede več kot eno navodilo tako, da hkrati pošilja navodila na več podvojenih funkcionalnih enot (ta faza se pogosto imenuje pošiljanje navodil). Vsaka funkcionalna enota je vir za izvajanje v jedru procesorja – na primer aritmetična logična enota (ALU), enota s plavajočo vejico (FPU), množilnik ali enota za vektorske/SIMD operacije.

Kako deluje superskalarni procesor

Osnovna ideja je povečati izkoriščenost strojne opreme s sočasnim izvajanjem neodvisnih navodil. Glavni koraki v izvedbi ukaza so običajno:

  • pridobivanje navodil (fetch),
  • dekodiranje (decode),
  • dispečiranje/pošiljanje navodil na razpoložljive funkcionalne enote (issue/dispatch),
  • izvajanje (execute),
  • zapis rezultata (writeback) in
  • potrditev oziroma umik (commit/retire).

Dispečer navodil prebere na voljo verigo ali okno navodil iz pomnilnika in odloči, katera navodila se lahko izvajajo vzporedno glede na njihove medsebojne odvisnosti. Ključne funkcije, ki to omogočajo, so:

  1. Navodila so organizirana v urejenem seznamu oziroma oknu navodil.
  2. Strojna oprema lahko ugotovi, katera navodila so odvisna od podatkov (data hazards) in katera so neodvisna.
  3. Procesor lahko prebere več navodil v enem taktovnem ciklu in jih izda na več enot hkrati.

Ključne komponente in tehnike

  • Večizhodne/fazne funkcionalne enote: več ALU, FPU in SIMD enot omogoča sočasno izvajanje aritmetike, plavajoče vejice in vektorskih operacij.
  • Cevovodno (pipeline) vezje: večina superskalarnih procesorjev uporablja cevovodno izvedbo za razdelitev izvajanja ukazov v več stopenj, kar povečuje prepustnost.
  • Dinamično razporejanje: tehnike, kot so rezervacijske enote (reservation stations), reorder buffer in register renaming, omogočajo izvajanje navodil izven vrstnega reda (out-of-order), hkrati pa zagotavljajo pravilno semantiko programa ob končni potrditvi (in-order commit).
  • Napovedovanje vejitev (branch prediction): kompleksni mehanizmi za napovedovanje skokov zmanjšujejo vpliv kontrolnih hazardov in povečujejo možnost, da so funkcionalne enote dejansko zasedene.
  • Širše okno navodil (instruction window): večje okno pomeni več priložnosti, da dispečer najde neodvisna navodila za izvajanje.

Razmerje med skalarnim, vektorskim in superskalarnim

Vsak ukaz, ki ga izvede skalarni procesor, običajno spremeni en ali dva podatkovna elementa, medtem ko vektorski (ali SIMD) ukazi obdelajo več podatkovnih elementov s enim ukazom. Superskalarni procesor je nekakšna mešanica: vsak posamezen ukaz običajno deluje na en podatkovni element, vendar ima jedro več podvojenih funkcionalnih enot, tako da lahko sočasno obdela več neodvisnih ukazov nad različnimi podatkovnimi elementi.

Prednosti

  • Večja prepustnost (throughput): izvedba več ukazov na takt poveča skupno zmogljivost.
  • Boljša izraba strojne opreme: razpršitev dela po več enotah zmanjša čas, ko so posamezne enote neaktivne.
  • Povečanje IPC (instructions per cycle) brez nujne povečave takta.
  • Združljivost z obstoječimi programskimi modeli – izboljšave so predvsem v strojni opremi, programi pogosto delujejo hitreje brez sprememb.

Omejitve in izzivi

  • Omejena navidezna vzporednost (ILP): ne glede na število enot je razpoložljiva vzporednost omejena z odvisnostmi v programu.
  • Kompleksnost strojne opreme: dinamično razporejanje, register renaming in močnejše napovedovalnike povečajo logiko, porabo površine (area) in porabo energije (power).
  • Strukturni konflikti: če dispečer ne more zasedeti vseh enot (na primer zaradi pomanjkanja virov ali odvisnosti), zmogljivost ne doseže maksimalne teoretične vrednosti.
  • Povratne lawine vračanja (rollback) pri napovedovanju vejitev: napačne napovedi pomenijo razveljavitev dela in izgubo ciklov.
  • Zaključni stroški za skalabilnost: z naraščanjem števila izvajalnih enot se povečuje zapletenost koherentnosti, dostopa do registre in nadzora odvisnosti.

Razlike in primerjava s sorodnimi tehnikami

  • Superskalarno vs. VLIW: pri VLIW (Very Long Instruction Word) kompilator skompilira več neodvisnih operacij v eno daljšo besedo in tako odloča o vzporednosti, medtem ko superskalarni procesor dinamično ugotavlja vzporednost v strojni opremi.
  • Superskalarno vs. SMT (Simultaneous Multithreading): superskalarni procesor povečuje paralelizem na ravni ukazov z znotraj-jedrskimi več enotami; SMT omogoča več niti, da delita iste izvršilne enote in s tem izboljšajo izkoriščenost, še posebej ko posamezna nit nima dovolj ILP.

Zgodovina in primeri

Koncept superskalarnega izvajanja se je razvil v 1970-ih in 1980-ih. V praksi so v sodobnih potrošniških in strežniških procesorjih superskalarne zasnove postale standard; izdelovalci običajno kombinirajo več ALU, FPU in SIMD enot za združevanje prednosti različnih vrst izvajanja. Tipična sodobna jedra pogosto vključujejo več ALU-jev, večenotno plavajoče vejice in specializirane SIMD enote, pri čemer natančne konfiguracije variirajo glede na arhitekturo in namen procesorja.

Načrtovanje in optimizacija

Pri načrtovanju superskalarnih procesorjev je cilj povečati skladnost in zanesljivost izvrševanja ter maksimirati izrabo funkcionalnih enot. To vključuje uravnoteženje med velikostjo okna navodil, kompleksnostjo razporejevalnikov, učinkovitostjo napovedovalnikov vejitev in stroški (poraba energije, površina čipa). Kompilatorji lahko pomagajo z reorganizacijo kode (statistična optimizacija), vendar je večina sodobnih superskalarnih izboljšav vgrajena v strojno opremo procesorja.

Sinteza

Superskalarna arhitektura povečuje zmogljivost procesorjev z izvajanjem več nepovezanih navodil hkrati znotraj jedra. Dosežejo jo z razporejanjem navodil v več funkcionalnih enotah, dinamičnim upravljanjem odvisnosti in naprednimi tehnikami, kot so register renaming in napovedovanje vejitev. Čeprav prinaša pomembne prednosti v hitrosti in izkoristku virov, se srečuje tudi z omejitvami, ki izhajajo iz kompleksnosti, porabe energije in naravnih omejitev navidezne vzporednosti v programih.

Za nadaljnje branje o povezanih temah si lahko ogledate viri o arhitekturi procesorjev, naprimer o konceptih cevovodnega vezja, dinamičnem izvrševanju in naprednih mehanizmih napovedovanja vejitev.