Što je instrukcijski cjevovod?

click fraud protection

Svaka procesorska instrukcija ima više faza u svom radu. Za dovršenje svake od ovih faza potreban je jedan CPU ciklus. Ove faze su dohvaćanje instrukcija, dekodiranje instrukcija, izvršenje, pristup memoriji i povratni upis. Odnosno oni dobivaju instrukcije koje treba dovršiti, odvojite operaciju od vrijednosti kojima se upravlja na, izvršite proces, otvorite registar u koji će biti upisan rezultat i upišite rezultat u otvoreni Registar.

Povijesni procesori po narudžbi

U prvim računalima CPU nije koristio cjevovod instrukcija. U tim CPU-ima, svaka operacija jednog ciklusa morala se dogoditi za svaku instrukciju. To je značilo da je bilo potrebno pet ciklusa takta da se prosječna instrukcija u potpunosti obradi prije nego što se sljedeća mogla pokrenuti. Neke operacije možda neće morati ispisati nikakav rezultat u registar, što znači da se pristup memoriji i faze povratnog pisanja mogu preskočiti.

U subskalarnom procesoru bez cjevovoda, svaki dio svake instrukcije se izvršava redom.

Međutim, postoji problem koji vreba kada izvodite potpunu uputu po redu prije nego što prijeđete na sljedeću uputu. Problem je nedostatak predmemorije. CPU pohranjuje podatke koje aktivno obrađuje u registar. Ovome se može pristupiti s kašnjenjem od jednog ciklusa. Problem je što je registar malen jer je ugrađen u jezgru procesora. CPU mora prijeći na veću, ali sporiju L1 predmemoriju ako podaci već nisu učitani. Ako ga nema, mora ponovno ići u veću i sporiju L2 predmemoriju. Sljedeći korak je L3 predmemorija; posljednja opcija je RAM sustava. Svaka od ovih opcija zahtijeva sve više i više CPU ciklusa za provjeru.

Sada, ova dodatna dodana latencija može biti veliki problem u sustavu koji mora dovršiti svaku instrukciju u cijelosti prije pokretanja sljedeće instrukcije. Ono što je bio procesor s 5 ciklusa po instrukciji, odjednom se može zadržati na jednoj instrukciji na desetke ili stotine ciklusa takta. Sve to vrijeme ništa se drugo ne može dogoditi na računalu. Tehnički, to se može donekle ublažiti postojanjem dvije neovisne jezgre. Međutim, ništa ih ne sprječava da rade istu stvar, potencijalno istovremeno. Dakle, prelazak na višejezgreni put to ne rješava.

Klasični RISC cjevovod

RISC je kratica za Reduced Instruction Set Computer. To je stil dizajna procesora koji optimizira performanse olakšavajući dekodiranje svake instrukcije. Ovo je u usporedbi s CISC-om ili Complex Instruction Set Computer, koji dizajnira složenije skupove instrukcija dopuštajući da manje instrukcija bude potrebno za obavljanje istih zadataka.

Klasični RISC dizajn uključuje cjevovod instrukcija. Umjesto pokretanja bilo koje od pet faza instrukcija u bilo kojem danom ciklusu, cjevovod omogućuje izvođenje svih pet faza. Naravno, ne možete pokrenuti svih pet faza jedne instrukcije u ciklusu. Ali možete staviti u red pet uzastopnih instrukcija s pomakom od jedne faze svaka. Na ovaj način, nova instrukcija može biti dovršena svaki ciklus takta. Nudeći potencijalno 5x povećanje performansi za relativno nizak porast složenosti jezgre.

U skalarnom cjevovodnom procesoru, svaka faza izvršavanja instrukcija može se izvesti jednom po ciklusu takta. To omogućuje maksimalnu propusnost od jedne dovršene instrukcije po ciklusu.

Procesori koji nemaju cjevovod mogu biti samo subskalarni, jer ne mogu izvršiti jednu potpunu instrukciju po ciklusu. S ovim primarnim cjevovodom u pet stupnjeva možete napraviti skalarni CPU koji može izvršiti instrukciju za svaki proces. Stvaranjem još dalekosežnijih cjevovoda, možete napraviti superskalarne procesore koji mogu izvršiti više od jedne instrukcije po taktu. Naravno, još uvijek postoje potencijalni problemi.

Još uvijek sekvencijalno

Ništa od ovoga ne rješava problem čekanja mnogih ciklusa na odgovor kada je potrebno postaviti upit različitim razinama predmemorije i RAM-a. Također predstavlja novi problem. Što ako se jedna instrukcija oslanja na izlaz prethodne instrukcije? Ovi problemi se samostalno rješavaju naprednim dispečerom. Pažljivo planira redoslijed izvršenja tako da nijedna instrukcija koja se oslanja na izlaz drugoga nije preblizu jedna drugoj. Također obrađuje promašaje predmemorije tako što parkira instrukciju i zamjenjuje je u cjevovodu drugom instrukcije koje su spremne za izvođenje i ne zahtijevaju svoj rezultat, nastavljajući instrukciju kada je spreman.

Ova rješenja mogu raditi na procesorima bez cjevovoda, ali su potrebna za superskalarne procesore koji izvode više od jedne instrukcije po taktu. Prediktor grananja također je vrlo koristan jer može pokušati predvidjeti ishod instrukcije s više od jednog potencijalnog ishoda i nastaviti s pretpostavkom da je točna osim ako se ne dokaže suprotno.

Zaključak

Cjevovod omogućuje da se sve različite mogućnosti procesora koriste u svakom ciklusu. To čini izvođenjem različitih faza različitih uputa istovremeno. Ovo čak i ne dodaje mnogo složenosti CPU dizajnu. Također utire put dopuštanju više od jedne instrukcije za izvođenje jedne faze po ciklusu.