Mis on superskalaar?

Superskalaarne protsessor suudab ühe taktitsükli jooksul iseseisvalt täita mitut käsku korraga. See sisaldab üleliigseid täitmisressursse, näiteks mitut ujukomaühikut, aritmeetikaloogikaühikuid ja täisarvude nihutajaid. Seda tüüpi protsessor on mõeldud paralleelseks andmetöötluseks ja spekulatiivseks täitmiseks, ilma et oleks vaja eritarkvara. See võib koodi manipuleerimise ja ümberkorraldamise kaudu parandada paljude protsessorimahukate rakenduste täitmiskiirust. Seda kasutatakse sageli mitmes arvutiklassis, sealhulgas serverites, lauaarvutites ja isegi sülearvutites.

Kuigi mõningaid arhitektuuri aspekte on protsessorites kasutatud alates 1960. aastatest, ilmusid tõelised superskalaarprotsessorid alles palju hiljem. Mõned 1980ndate lõpus ja 1990ndate alguses müüdud RISC (Reduced Instruction Set Computing) protsessorid olid superskalaarsed. Nende lihtsad tuumad ja fikseeritud pikkusega juhised tegid paralleelsete juhiste saatmise ja ajastamise suhteliselt lihtsaks. Paljudel alates 1990. aastate lõpust toodetud mitte-RISC-protsessoritel on ka superskalaarne arhitektuur. Sisseehitatud, väikese võimsusega ja muud eriprotsessorid on sageli erandid, mis optimeerivad paralleelse täitmise asemel oma disaini muid aspekte.

Mõned protsessorid saavad jagada ühte konveieri mitme täitmislõime juhistega, mida nimetatakse superlõimeks. Kui funktsionaalne üksus on jõude, kuna see ootab parajasti töötaval lõimel, võib see vahepeal täita käsku teisest lõimest. See meetod aitab protsessorit täielikult ära kasutada, kuid ei ole nii tõhus kui samaaegne mitmelõimega töötlemine (SMT). Üks superskalaarne protsessor võib SMT abil täita mitut käsku korraga mitmest lõimest. Samaaegselt käivitatavad lõimed võivad aga konkureerida süsteemi ja protsessori ressursside pärast, mis võib süsteemi aeglustada.

Mitmeastmelise konveieriga protsessorid võivad korraga täita mitut käsku, kui need on täitmise eri etappides. Seevastu superskalaarprotsessoris saab samas etapis korraga täita mitut käsku. Kuigi seda tüüpi protsessori ja mitmetuumalise protsessori vahel on palju sarnasusi, pole need samad. Mitmetuumaline protsessor sisaldab ühes seadmes mitut terviklikku protsessorit, mida nimetatakse tuumadeks. Mitmetuumalise protsessori iga tuum on tavaliselt superskalaarne ja võib sisaldada mitut paralleelset torujuhet.

Superskalaarprotsessori põhiomaduseks on selle võime käivitada programmikoodi ebakorrapärasuse tagamiseks tõhususe huvides. Selleks peab ta olema teadlik mis tahes juhiste sõltuvusest teisest. Kui käsk mõjutab teise tulemusi või kasutab teise ressursse, on väga tõenäoline, et neid kahte ei tohi paralleelselt täita. Teatud tüüpi sõltuvuste kõrvaldamiseks on olemas tehnikad, kuid teised peavad töötlemist edasi lükkama, kuni ressursid on saadaval.

Korrast väljas täitmine peab samuti suutma tagada süsteemikatkestuse korral registrite, lippude ja muude ressursside korraliku sisu. Sel juhul peab süsteemi olek välja nägema sama, nagu oleks kood käivitatud järjestikku, nagu kavandatud. Teine kaalutlus on see, kui palju käske peaks protsessor uurima, et leida võimalusi paralleelseks täitmiseks. Mida suurem arv, seda tõhusam on täitmine. See hõlmab ka juhiste spekulatiivset täitmist uuritava koodi iga haru teisel küljel.