Kas ir superskalārs?

Agrīnie datori bija pilnībā secīgi. Katra procesora saņemtā instrukcija bija pilnībā jāaizpilda, lai varētu sākt nākamo. Lielākajai daļai instrukciju ir pieci posmi: instrukciju ielāde, instrukciju atšifrēšana, izpilde, piekļuve atmiņai un atpakaļrakstīšana. Attiecīgi šie posmi iegūst instrukciju, kas ir jāizpilda, atdaliet darbību no vērtībām veikt operāciju, atvērt reģistru, kurā tiks ierakstīts rezultāts, un ierakstīt rezultātu atvērtajā reģistrēties.

Katram no šiem posmiem ir nepieciešams viens cikls. Diemžēl, ja dati nav reģistrēti, tie ir jāpieprasa no CPU kešatmiņas vai sistēmas RAM. Tas ir daudz lēnāks, pievienojot desmitiem vai simtiem latentuma pulksteņa ciklu. Tikmēr viss pārējais ir jānogaida, jo nevar apstrādāt citus datus vai norādījumus. Šāda veida procesora dizainu sauc par subskalāru, jo tas izpilda mazāk nekā vienu instrukciju vienā pulksteņa ciklā.

Subskalārajā procesorā bez konveijera katras instrukcijas daļa tiek izpildīta secībā. Šis dizains var sasniegt tikai mazāk par vienu instrukciju, kas izpildīta ciklā.

Cauruļvads uz skalāru

Skalāro procesoru var panākt, izmantojot sistēmas konveijeru. Katrs no pieciem izpildāmās instrukcijas posmiem darbojas dažādos aparatūras bitos faktiskajā procesora kodolā. Tādējādi, ja esat piesardzīgs ar datiem, ko ievadāt aparatūrā katrā posmā, varat katru no tiem aizņemt katru ciklu. Ideālā pasaulē tas var novest pie 5x paātrinājuma un procesora perfekta skalāra, izpildot pilnu instrukciju ciklā.

Skalārā konveijera procesorā katru instrukciju izpildes posmu var veikt vienu reizi pulksteņa ciklā. Tas nodrošina vienas pabeigtas instrukcijas maksimālo caurlaidspēju ciklā.

Patiesībā programmas ir sarežģītas un samazina caurlaidspēju. Piemēram, ja jums ir divas pievienošanas instrukcijas “a = b + c” un “d = e + f”, tās var palaist konveijerā bez problēmām. Tomēr, ja jums ir “a = b + c”, kam seko “d = a + e”, jums ir problēma. Pieņemot, ka šie divi norādījumi ir tieši viens aiz otra, jaunās vērtības “a” aprēķināšanas process nebūs pabeigts, nemaz nerunājot par ierakstīšanu atmiņā, pirms otrā instrukcija nolasa veco “a” vērtību un pēc tam sniedz nepareizu atbildi “d”.

Šo uzvedību var novērst, iekļaujot dispečeru, kas analizē gaidāmās instrukcijas un nodrošina, ka neviena instrukcija, kas ir atkarīga no cita, netiek izpildīta pārāk ciešā secībā. Tas faktiski palaiž programmu nepareizā secībā, lai to labotu. Tas darbojas, jo daudzi norādījumi ne vienmēr ir balstīti uz iepriekšējās darbības rezultātu.

Cauruļvada paplašināšana līdz superskalāram

Superskalārais procesors spēj izpildīt vairāk nekā vienu pilnu instrukciju ciklā. Viens no veidiem, kā to izdarīt, ir konveijera paplašināšana, lai būtu divi vai vairāki aparatūras biti, kas spēj apstrādāt katru posmu. Tādā veidā katrā cauruļvada posmā katrā ciklā var atrasties divas instrukcijas. Tas acīmredzami palielina dizaina sarežģītību, jo aparatūra tiek dublēta, tomēr tā piedāvā lieliskas veiktspējas mērogošanas iespējas.

Superskalārā konveijera procesorā katrā konveijera posmā katrā ciklā var būt vairāk nekā viena instrukcija. Tas nodrošina maksimālo instrukciju caurlaidspēju, kas ir vairāk nekā viena pabeigta instrukcija ciklā.

Veiktspējas pieaugums, palielinot cauruļvadu skaitu, tomēr līdz šim ir efektīvi. Termiskie un izmēra ierobežojumi nosaka dažus ierobežojumus. Ir arī ievērojamas plānošanas komplikācijas. Efektīvs dispečers tagad ir vēl svarīgāks, jo tam ir jānodrošina, lai neviena no divām instrukciju kopām nepaļautos uz citu apstrādāto instrukciju rezultātu.

Filiāles prognozētājs ir dispečera daļa, kas kļūst arvien kritiskāka, jo augstāks ir procesora superskalārs. Dažiem norādījumiem var būt divi iespējamie iznākumi, no kuriem katrs noved pie dažādiem turpmākajiem norādījumiem. Vienkāršs piemērs varētu būt “ja” paziņojums. "Ja tā ir taisnība, dariet to, pretējā gadījumā dariet to citu." Atzarojuma prognozētājs mēģina paredzēt sazarošanas darbības iznākumu. Pēc tam tas iepriekš plāno un izpilda norādījumus, ievērojot to, ko uzskata par iespējamo rezultātu.

Mūsdienu zaru prognozētājos ir daudz sarežģītas loģikas, kas var nodrošināt nozaru prognozēšanas panākumus aptuveni 98%. Pareiza prognoze ietaupa laiku, ko varēja iztērēt, gaidot faktisko rezultātu, nepareizas prognozes dēļ prognozētais instrukcijas un visi to rezultāti tiks izmesti un to vietā tiks izpildīti patiesie norādījumi, kas ir saistīts ar nelielu sodu par to, ka gaidīja. Tādējādi augsti prognozējami panākumu rādītāji var ievērojami palielināt veiktspēju.

Secinājums

Datora procesors tiek uzskatīts par superskalāru, ja tas var izpildīt vairāk nekā vienu instrukciju vienā pulksteņa ciklā. Agrīnie datori bija pilnībā secīgi, vienlaikus izpildot tikai vienu instrukciju. Tas nozīmēja, ka katras instrukcijas izpildei bija nepieciešams vairāk nekā viens cikls, un tāpēc šie procesori bija subskalāri. Pamata konveijers, kas ļauj izmantot posmam raksturīgo aparatūru katram instrukcijas posmam, vienā pulksteņa ciklā var izpildīt ne vairāk kā vienu instrukciju, padarot to skalāru.

Jāņem vērā, ka neviena atsevišķa instrukcija netiek pilnībā apstrādāta vienā pulksteņa ciklā. Tas joprojām aizņem vismaz piecus ciklus. Tomēr vienlaikus var tikt sagatavotas vairākas instrukcijas. Tas nodrošina vienas vai vairāku pabeigtu instrukciju caurlaidspēju ciklā.

Superscalar nevajadzētu sajaukt ar hiperskalāru, kas attiecas uz uzņēmumiem, kas var piedāvāt hiperskalārus skaitļošanas resursus. Hipermēroga skaitļošana ietver iespēju nemanāmi mērogot aparatūras resursus, piemēram, aprēķinus, atmiņu, tīkla joslas platumu un krātuvi, atbilstoši pieprasījumam. Tas parasti ir sastopams lielos datu centros un mākoņdatošanas vidēs.