Kaj je cevovod navodil?

Vsak procesorski ukaz ima več stopenj delovanja. Vsaka od teh stopenj potrebuje en cikel procesorja. Te stopnje so pridobivanje navodil, dekodiranje navodil, izvedba, dostop do pomnilnika in povratno pisanje. Oziroma ti dobijo navodila, ki jih je treba dokončati, ločiti operacijo od vrednosti, s katerimi se upravlja vklopi, izvede proces, odpre register, v katerega bo zapisan rezultat, in rezultat zapiše v odprto register.

Zgodovinski procesorji po naročilu

V zgodnjih računalnikih CPE ni uporabljal cevovoda navodil. V teh procesorjih se je morala vsaka operacija enega cikla zgoditi za vsako navodilo. To je pomenilo, da je bilo potrebnih pet taktov, da je bilo povprečno navodilo v celoti obdelano, preden se je lahko začelo naslednje. Nekaterim operacijam morda ne bo treba zapisati nobenega rezultata v register, kar pomeni, da sta stopnji dostopa do pomnilnika in povratnega pisanja lahko preskočeni.

V subskalarnem procesorju brez cevovoda se vsak del vsakega ukaza izvede po vrstnem redu.

Obstaja pa težava, ki se skriva pri zagonu celotnega navodila po vrstnem redu, preden se lahko premaknete na naslednje navodilo. Problem je zgrešen predpomnilnik. CPU shranjuje podatke, ki jih aktivno obdeluje, v register. Do tega je mogoče dostopati z enociklično zakasnitvijo. Težava je v tem, da je register majhen, ker je vgrajen v jedro procesorja. CPE mora iti v večji, a počasnejši predpomnilnik L1, če podatki še niso bili naloženi. Če ga ni, mora znova iti v večji in počasnejši predpomnilnik L2. Naslednji korak je predpomnilnik L3; zadnja možnost je sistemski RAM. Vsaka od teh možnosti zahteva več in več ciklov procesorja za preverjanje.

Zdaj je ta dodatna dodana zakasnitev lahko velika težava v sistemu, ki mora dokončati vsako navodilo v celoti, preden začne z naslednjim navodilom. Kar je bil prej 5-ciklični procesor na ukaz, lahko nenadoma ostane na enem ukazu za desetine ali stotine taktov. Ves čas se na računalniku ne more zgoditi nič drugega. Tehnično je to mogoče nekoliko omiliti z dvema neodvisnima jedroma. Nič pa jima ne preprečuje, da bi oba počela istočasno, morda hkrati. Če gremo po večjedrni poti, to ne popravi tega.

Klasični cevovod RISC

RISC je kratica za Reduced Instruction Set Computer. To je slog zasnove procesorja, ki optimizira delovanje tako, da olajša dekodiranje vsakega ukaza. To je v primerjavi s CISC ali Complex Instruction Set Computer, ki oblikuje bolj zapletene nize ukazov, ki omogočajo, da je za izvajanje istih nalog potrebnih manj navodil.

Klasična zasnova RISC vključuje cevovod navodil. Namesto izvajanja katere koli od petih stopenj navodil v katerem koli danem ciklu, cevovod omogoča izvedbo vseh petih stopenj. Seveda ne morete izvesti vseh pet stopenj enega ukaza v ciklu. Lahko pa postavite v čakalno vrsto pet zaporednih navodil z odmikom za eno stopnjo. Na ta način je mogoče dokončati novo navodilo vsak takt. Ponuja potencialno 5-kratno povečanje zmogljivosti za relativno nizko rast kompleksnosti jedra.

V skalarnem cevovodnem procesorju se lahko vsaka stopnja izvajanja ukazov izvede enkrat na takt. To omogoča največjo prepustnost enega dokončanega ukaza na cikel.

Procesorji, ki nimajo cevovoda, so lahko le subskalarni, saj ne morejo izvesti enega celotnega ukaza na cikel. S tem primarnim petstopenjskim cevovodom lahko naredite skalarni CPE, ki lahko dokonča navodilo za vsak proces. Z ustvarjanjem še bolj daljnosežnih cevovodov lahko ustvarite superskalarne procesorje, ki lahko izvedejo več kot eno navodilo na takt. Seveda še vedno obstajajo morebitne težave.

Še vedno zaporedno

Nič od tega ne reši težave s številnimi cikli čakanja na odgovor, ko je treba poizvedovati po različnih ravneh predpomnilnika in RAM-a. Predstavlja tudi nov problem. Kaj pa, če je eno navodilo odvisno od rezultatov prejšnjega navodila? Te težave rešuje samostojno z naprednim dispečerjem. Skrbno načrtuje vrstni red izvajanja, tako da nobeno navodilo, ki se opira na izhod drugega, ni preblizu skupaj. Obravnava tudi zgrešene predpomnilnike tako, da parkira navodilo in ga v cevovodu zamenja z drugim navodila, ki so pripravljena za izvajanje in ne zahtevajo svojega rezultata, nadaljujejo z navodilom, ko je pripravljena.

Te rešitve lahko delujejo na necevovodnih procesorjih, vendar so potrebne za superskalarni procesor, ki izvaja več kot en ukaz na uro. Napovedovalec vej je prav tako zelo koristen, saj lahko poskuša napovedati rezultat navodila z več kot enim potencialnim rezultatom in še naprej domneva, da je pravilen, razen če se dokaže drugače.

Zaključek

Cevovod omogoča uporabo vseh različnih zmogljivosti procesorja v vsakem ciklu. To naredi s hkratnim izvajanjem različnih stopenj različnih navodil. To niti ne dodaja veliko kompleksnosti zasnovi CPE. Prav tako utira pot, ki omogoča več kot eno navodilo za izvedbo ene stopnje na cikel.