Varased arvutid olid täiesti järjestikused. Iga protsessorile saadud käsk tuli enne järgmise käivitamist täielikult täita. Enamiku juhiste jaoks on viis etappi: juhiste toomine, juhiste dekodeerimine, täitmine, juurdepääs mälule ja tagasikirjutamine. Vastavalt saavad need etapid juhise, mis tuleb täita, eraldage tehe väärtusolemist opereeritud, sooritage operatsioon, avage register, kuhu tulemus kirjutatakse, ja kirjutage tulemus avatud Registreeri.
Kõigi nende etappide läbimiseks peaks kuluma üks tsükkel. Kahjuks, kui andmeid registris pole, tuleb neid küsida protsessori vahemälust või süsteemi RAM-ist. See on palju aeglasem, lisades kümneid või sadu latentsusaega. Vahepeal peab kõik muu ootama, kuna muid andmeid ega juhiseid ei saa töödelda. Seda tüüpi protsessori konstruktsiooni nimetatakse subskalaarseks, kuna see töötab vähem kui ühe käsu taktitsükli kohta.
Torustik skalaariks
Skalaarprotsessori saab saavutada süsteemikonveieri rakendamisega. Kõik täidetava käsu viiest etapist töötavad tegelikus protsessori tuumas erinevates riistvara bittides. Seega, kui olete iga etapi jaoks riistvarasse sisestatavate andmetega ettevaatlik, saate neid iga tsükliga hõivatud hoida. Täiuslikus maailmas võib see kaasa tuua 5-kordse kiiruse ja protsessori täiusliku skalaarse toimimise, käivitades tsükli kohta täieliku juhise.
Tegelikkuses on programmid keerulised ja vähendavad läbilaskevõimet. Näiteks kui teil on kaks liitmiskäsku “a = b + c” ja “d = e + f”, saab neid konveierkäivitada probleemideta. Kui teil on aga "a = b + c", millele järgneb "d = a + e", on probleem. Eeldades, et need kaks juhist on vahetult üksteise järel, ei ole uue "a" väärtuse arvutamise protsess lõppenud, rääkimata sellest, et see kirjutatakse mällu tagasi enne, kui teine käsk loeb "a" vana väärtuse ja annab seejärel vale vastuse "d".
Selle käitumise vastu saab kaasata dispetšer, kes analüüsib tulevasi juhiseid ja tagab, et ühtegi teisest sõltuvat käsku ei käivitata liiga tihedalt üksteise järel. Selle parandamiseks käivitab see programmi tegelikult vales järjekorras. See toimib, sest paljud juhised ei pruugi tingimata tugineda eelmise tulemusele.
Konveieri laiendamine superskalaarseks
Superskalaarne protsessor on võimeline käivitama rohkem kui ühte täiskäsku tsükli kohta. Üks võimalus seda teha on konveieri laiendamine nii, et iga etapiga saab hakkama kaks või enam riistvara. Nii saab igas tsüklis torujuhtme igas etapis olla kaks käsku. See toob ilmselgelt kaasa suurema disaini keerukuse, kuna riistvara dubleeritakse, kuid see pakub suurepäraseid jõudluse skaleerimise võimalusi.
Torujuhtmete arvu suurenemisest tulenev jõudluse kasv on siiski seni tõhusam. Termilised ja suurusepiirangud seavad teatud piirid. Samuti on ajakava koostamisel olulisi komplikatsioone. Tõhus dispetšer on nüüd veelgi kriitilisem, kuna ta peab tagama, et kumbki kahest juhiste komplektist ei tugineks ühegi teise töödeldava juhise tulemusele.
Haru ennustaja on dispetšeri osa, mis muutub üha kriitilisemaks, mida kõrgema superskalaarsem protsessor on. Mõnel juhisel võib olla kaks potentsiaalset tulemust, millest igaüks toob kaasa erinevad järgmised juhised. Lihtne näide oleks "kui"-lause. "Kui see on tõsi, tehke seda, muidu tehke seda muud." Haru ennustaja püüab ennustada hargnemisoperatsiooni tulemust. Seejärel kavandab ja täidab ta ennetavalt juhised, järgides seda, mida ta arvab olevat tõenäoline.
Kaasaegsetes harude ennustajates on palju keerulist loogikat, mille tulemuseks on haru ennustamise edukuse määr suurusjärgus 98%. Õige ennustus säästab aega, mille oleks võinud raisata tegeliku tulemuse ootamiseks, vale ennustus eeldab, et ennustatud juhised ja nende tulemused tuleb ära visata ja nende asemel käivitatakse tõesed juhised, millega kaasneb kerge karistus selle eest ootas. Seega võivad prognoositavad edumäärad jõudlust märgatavalt suurendada.
Järeldus
Arvutiprotsessorit peetakse superskalaarseks, kui see suudab ühe taktitsükli kohta täita rohkem kui ühte käsku. Varased arvutid olid täiesti järjestikused, täites korraga ainult ühte juhist. See tähendas, et iga käsu täitmiseks kulus rohkem kui üks tsükkel ja seega olid need protsessorid subskalaarsed. Põhikonveier, mis võimaldab kasutada astmespetsiifilist riistvara käsu iga etapi jaoks, suudab täita kuni ühe käsu taktitsükli kohta, muutes selle skalaarseks.
Tuleb märkida, et ühtegi üksikut käsku ei töödelda ühe taktitsükli jooksul täielikult. See võtab ikka vähemalt viis tsüklit. Siiski võib korraga olla mitu juhist. See võimaldab ühe või mitme täidetud käsu läbilaskevõimet tsükli kohta.
Superscalari ei tohiks segi ajada hüperskaalariga, mis viitab ettevõtetele, kes suudavad pakkuda hüperskaalaarvutusressursse. Hüpermastaapne andmetöötlus hõlmab riistvararessursside (nt arvutusi, mälu, võrgu ribalaiust ja salvestusruumi) sujuvat skaleerimist vastavalt nõudlusele. Seda leidub tavaliselt suurtes andmekeskustes ja pilvandmetöötluse keskkondades.