Ankstyvieji kompiuteriai buvo visiškai nuoseklūs. Kiekviena procesoriaus gauta instrukcija turėjo būti įvykdyta iki galo, kad būtų galima paleisti kitą. Daugumą instrukcijų sudaro penki etapai: instrukcijų gavimas, instrukcijų dekodavimas, vykdymas, prieiga prie atminties ir įrašymas. Atitinkamai šie etapai gauna nurodymą, kurį reikia atlikti, atskirkite operaciją nuo būties reikšmių operuoti, atlikti operaciją, atidaryti registrą, kuriame bus rašomas rezultatas, ir įrašyti rezultatą į atidarytą Registruotis.
Kiekvienas iš šių etapų turėtų užtrukti vieną ciklą. Deja, jei duomenų nėra registre, jų reikia paprašyti iš procesoriaus talpyklos arba sistemos RAM. Tai yra daug lėtesnė, pridedant dešimtis ar šimtus delsos laikrodžio ciklų. Tuo tarpu visa kita turi palaukti, nes negalima apdoroti jokių kitų duomenų ar instrukcijų. Šio tipo procesoriaus dizainas vadinamas subskaliariniu, nes jis vykdo mažiau nei vieną komandą per laikrodžio ciklą.

Skaliarinis vamzdynas
Skaliarinį procesorių galima pasiekti taikant sistemos dujotiekį. Kiekvienas iš penkių vykdomų nurodymų etapų vykdomas skirtinguose aparatūros bituose faktiniame procesoriaus branduolyje. Taigi, jei esate atsargūs su duomenimis, kuriuos pateikiate į aparatinę įrangą kiekvienam etapui, kiekvieną iš jų galite užimti kiekvieną ciklą. Tobulame pasaulyje dėl to gali padidėti 5 kartus, o procesorius būtų tobulas skaliarinis, vykdydamas visą instrukciją per ciklą.

Iš tikrųjų programos yra sudėtingos ir sumažina pralaidumą. Pavyzdžiui, jei turite dvi pridėjimo instrukcijas „a = b + c“ ir „d = e + f“, jas galima paleisti be problemų. Tačiau jei turite „a = b + c“ ir „d = a + e“, turite problemų. Darant prielaidą, kad šios dvi instrukcijos yra iškart viena po kitos, naujos „a“ vertės apskaičiavimo procesas nebus baigtas, jau nekalbant apie tai, kad būtų įrašyta į atmintį, kol antroji instrukcija nuskaito senąją „a“ reikšmę ir tada pateikia neteisingą atsakymą "d".
Šį elgesį galima atremti įtraukus dispečerį, kuris analizuoja būsimas instrukcijas ir užtikrina, kad jokia nuo kito priklausoma instrukcija nebūtų vykdoma per glaudžiai iš eilės. Iš tikrųjų ji paleidžia programą netinkama tvarka, kad tai ištaisytų. Tai veikia, nes daugelis instrukcijų nebūtinai priklauso nuo ankstesnio rezultato.
Dujotiekio išplėtimas iki superskaliarinio
Superskaliarinis procesorius per ciklą gali vykdyti daugiau nei vieną pilną instrukciją. Vienas iš būdų tai padaryti yra išplėsti dujotiekį, kad būtų du ar daugiau aparatūros bitų, galinčių valdyti kiekvieną etapą. Tokiu būdu kiekviename ciklo dujotiekio etape gali būti dvi instrukcijos. Dėl to akivaizdžiai padidėja dizaino sudėtingumas, nes aparatinė įranga yra dubliuojama, tačiau tai suteikia puikias našumo mastelio keitimo galimybes.

Vis dėlto našumas didėja dėl didėjančio vamzdynų skaičiaus. Šiluminiai ir dydžio apribojimai nustato tam tikras ribas. Taip pat yra didelių planavimo komplikacijų. Efektyvus dispečeris dabar yra dar svarbesnis, nes turi užtikrinti, kad nė vienas iš dviejų instrukcijų rinkinių nebūtų priklausomas nuo kitų apdorojamų instrukcijų rezultato.
Atšakos numatytojas yra dispečerio dalis, kuri tampa vis kritiškesnė, kuo didesnis procesorius superskalarinis. Kai kurios instrukcijos gali turėti du galimus rezultatus, kurių kiekvienas lemia skirtingus tolesnius nurodymus. Paprastas pavyzdys būtų „jei“ teiginys. „Jei tai tiesa, darykite tai, kitu atveju darykite kitą dalyką“. Šakos numatytojas bando numatyti šakojimo operacijos rezultatą. Tada ji iš anksto suplanuoja ir vykdo instrukcijas, vadovaudamasi tuo, kas, jo manymu, yra tikėtini rezultatai.
Šiuolaikiniuose šakų prognozuotojuose yra daug sudėtingos logikos, dėl kurios šakos prognozavimo sėkmės rodikliai gali siekti 98%. Teisinga prognozė sutaupo laiko, kurį buvo galima sugaišti laukiant tikrojo rezultato, o dėl neteisingos prognozės reikia, kad instrukcijos ir bet kokie jų rezultatai turi būti atmesti, o tikrosios instrukcijos bus vykdomos vietoje jų, o už tai už ką laukė. Taigi aukšti prognozuojami sėkmės rodikliai gali žymiai padidinti našumą.
Išvada
Kompiuterio procesorius laikomas superskaliariuoju, jei per laikrodžio ciklą gali atlikti daugiau nei vieną komandą. Ankstyvieji kompiuteriai buvo visiškai nuoseklūs, vienu metu vykdė tik vieną instrukciją. Tai reiškė, kad kiekvienai instrukcijai atlikti prireikė daugiau nei vieno ciklo, todėl šie procesoriai buvo subskalariniai. Pagrindinis dujotiekis, leidžiantis naudoti konkrečios pakopos aparatinę įrangą kiekvienam komandos etapui, gali vykdyti daugiausia vieną komandą per laikrodžio ciklą, todėl ji yra skaliarinė.
Reikėtų pažymėti, kad jokia atskira instrukcija nėra visiškai apdorota per vieną laikrodžio ciklą. Vis tiek reikia mažiausiai penkių ciklų. Tačiau vienu metu gali būti rengiamos kelios instrukcijos. Tai leidžia per ciklą atlikti vieną ar daugiau užbaigtų instrukcijų.
Superscalar nereikėtų painioti su hiperskaleriu, kuris reiškia įmones, kurios gali pasiūlyti hiperskalinio skaičiavimo išteklius. Hipermastinis skaičiavimas apima galimybę sklandžiai keisti aparatinės įrangos išteklius, pvz., skaičiavimą, atmintį, tinklo pralaidumą ir saugyklą, atsižvelgiant į poreikį. Tai paprastai randama dideliuose duomenų centruose ir debesų kompiuterijos aplinkose.