Što je Izvršenje izvan reda?

Računala su složeni strojevi s niti jednim dijelom složenijim od CPU-a. Na razini osnovnog pregleda, čini se da bi CPU trebao biti relativno jednostavan. Uzima niz naredbi, obrađuje ih i zatim ispisuje podatke. Ovo ipak malo podsjeća na stvarni rad modernih CPU-a.

Subskalarno u superskalarno

Rani CPU-i bili su točno onakvi kakvi biste očekivali. Uzimali su upute pojedinačno, redoslijedom kojim su ih dobivali, obrađivali ih do kraja, a zatim prelazili na sljedeću uputu. CPU-i ovog tipa bili su subskalarni, sposobni izvršiti manje od jedne instrukcije po taktu. CPU dizajneri utvrdili su da postoji mnogo različitih faza dovršetka instrukcija. Svaka od ovih faza zahtijevala je drugačiji hardver. To je značilo da kada se izvodi jedna instrukcija kroz cijeli niz odjednom, neki dijelovi hardvera miruju. U bilo kojoj vrsti procesora, neaktivan hardver je beskoristan hardver.

Da bi se iskoristio ovaj hardver u stanju mirovanja, CPU dizajn je ažuriran za korištenje cjevovodnog pristupa. Ovo je dodatno odvojilo hardver za svaku fazu, ali im je omogućilo da se svi koriste u isto vrijeme nizom uputa. Iako je i dalje bilo potrebno nekoliko ciklusa da svaka instrukcija prođe kroz cjevovod, ukupna propusnost bila je jedna instrukcija po ciklusu. Ovo je učinilo CPU skalarnim.

Da bi mogli učiniti više, procesori su morali biti superskalarni. Da bi se to postiglo, implementirano je više paralelnih cjevovoda.

Održavanje cjevovoda opskrbljenim podacima

Glavni problem s performansama računala obično je kašnjenje memorije. Mnoge instrukcije rade na podacima, pa ti podaci moraju biti dostupni da bi se instrukcija izvršila. Pitanje je što učiniti ako morate čekati te podatke jer nisu odmah dostupni? Tradicionalno, odgovor je bio samo odugovlačiti i čekati da postane dostupan. Ovo ostavlja cijeli cjevovod prazan, potencijalno za stotine CPU ciklusa. Stvari postaju još gore kada dvije instrukcije u paralelnim cjevovodima moraju čekati memoriju, budući da će prva zadržati čak i zahtjev za podacima druge. Iako predmemorija CPU-a može pomoći u rješavanju ovog problema, još uvijek ga ne može riješiti. Bila je potrebna nova paradigma da bi se to riješilo. Ta promjena paradigme bila je Out Of Order Execution ili OOO.

Prva faza cjevovoda je dekodiranje instrukcije. To znači razraditi što treba učiniti i provjeriti jesu li podaci potrebni za operaciju dostupni. U OOO CPU, dekodirane instrukcije se dodaju u red čekanja. Uklanjaju se iz reda čekanja i stvarno obrađuju kada su dostupni podaci koji su im potrebni. Što je najvažnije, nije važno kojim su redoslijedom upute dodane u red čekanja. Ako rana uputa čeka podatke, novija uputa može se preskočiti ako je spremna za pokretanje. OOO procesori mogu promijeniti redoslijed instrukcija koje bi trebali obraditi na temelju reda čekanja nadolazećih instrukcija i toga koje su od njih spremne za izvršenje.

Kritične ovisnosti

Ovaj proces pretpostavlja dvije stvari. Prije svega, da je moguće pouzdano identificirati i nositi se s pravim ovisnostima. Drugo, možete pouzdano rukovati i identificirati lažne ovisnosti. Koja je razlika? Pa, prava ovisnost je ovisnost koja se uopće ne može ublažiti u OOO sustavu. Najlakši primjer je čitanje poslije pisanja. Ako imate jednu instrukciju koja bi trebala napisati neke podatke i drugu koja bi zatim trebala pročitati te podatke, ne postoji način da promijenite redoslijed tih instrukcija. Moraju se ispuniti redoslijedom kojim su prikazani ili ćete dobiti besmislene podatke.

Lažna ovisnost je ona koja se može sakriti pomoću drugog pametnog trika. Uzmimo primjer pisanja-poslije-čitanja. Na prvi pogled možete pomisliti da ne možete prebrisati podatke prije nego što ih pročitate. Stvari ipak nisu tako jednostavne. Što ako imate drugo mjesto na koje možete zapisati nove podatke, a zatim možete samo zamijeniti nove i stare podatke nakon što se stari podaci pročitaju? Ovo je proces preimenovanja registra i ključan je za obradu OOO-a.

Tipično, skup instrukcija definira određeni broj arhitektonskih registara koji se koriste u sustavu. Doslovno se ne možete obratiti drugima. Ali što ako radite registre prekomjerne nabave? Možete ih većim dijelom samo sakriti, koristiti za pohranu podataka koji još nisu trebali biti obrađeni, a zatim jednostavno zamijeniti oznake skrivenih i arhitektonskih registara kada vremenska traka ponovno bude ispravna. U bilo kojem trenutku postoji točna količina arhitektonskih registara, samo nisu nužno uvijek na istom mjestu. Analogija iz stvarnog svijeta bila bi hot-desking.

Zaključak

Izvršenje izvan reda je obradna paradigma u kojoj CPU može dinamički promijeniti redoslijed instrukcija u vrijeme izvođenja. To se radi na temelju najranijih izdanih uputa za koje postoje dostupni podaci. To znači da su instrukcije koje se učitavaju u cjevovod uvijek spremne za izvršenje i nema kašnjenja dok se čekaju podaci. Naravno, potrebno je imati dovoljno dug red da se ne puni uputama koje čekaju podatke, ali to je izazov implementacije. Izvršenje OOO-a oslanja se na preimenovanje registra kako bi se sakrile lažne ovisnosti. Čak i ako se te instrukcije stvarno izvršavaju nepravilno, registri se preimenuju na takav način da se ta činjenica sakrije od ostatka računala.


Kako klonirati tvrdi disk

Kako klonirati tvrdi disk

U modernom digitalnom dobu, gdje su podaci dragocjena imovina, kloniranje tvrdog diska u sustavu Windows za mnoge može biti ključan proces. Ovaj sveobuhvatni vodič

Kako popraviti upravljački program WUDFRd koji se nije učitao u sustavu Windows 10?

Kako popraviti upravljački program WUDFRd koji se nije učitao u sustavu Windows 10?

Jeste li suočeni s porukom o pogrešci tijekom pokretanja računala koja kaže da se upravljački program WUDFRd nije uspio učitati na vašem računalu?

Kako popraviti šifru pogreške NVIDIA GeForce Experience 0x0003

Kako popraviti šifru pogreške NVIDIA GeForce Experience 0x0003

Imate li NVIDIA GeForce iskustvo s kodom pogreške 0x0003 na radnoj površini? Ako da, pročitajte blog kako biste saznali kako brzo i jednostavno popraviti ovu pogrešku.

Što je SMPS?

Što je SMPS?

Naučite što je SMPS i značenje različitih ocjena učinkovitosti prije nego što odaberete SMPS za svoje računalo.

Zašto se moj Chromebook ne uključuje

Zašto se moj Chromebook ne uključuje

Pronađite odgovore na pitanje Zašto se moj Chromebook ne uključuje? U ovom korisnom vodiču za korisnike Chromebooka.

Kako Googleu prijaviti phishing prijevare

Kako Googleu prijaviti phishing prijevare

Pomoću ovog vodiča saznajte kako Googleu prijaviti prevaranta kako biste ga spriječili da vara druge.

Roomba staje, zapinje i okreće se – popravi

Roomba staje, zapinje i okreće se – popravi

Riješite problem u kojem vaš Roomba robot usisavač stane, zaglavi se i stalno se okreće.

Kako promijeniti grafičke postavke na Steam Decku

Kako promijeniti grafičke postavke na Steam Decku

Steam Deck nudi robusno i svestrano iskustvo igranja na dohvat ruke. Međutim, kako biste optimizirali svoje igranje i osigurali najbolje moguće

Što je sigurnost temeljena na izolaciji?

Što je sigurnost temeljena na izolaciji?

Namjeravali smo se zadubiti u temu koja postaje sve važnija u svijetu kibernetičke sigurnosti: sigurnost temeljena na izolaciji. Ovaj pristup prema

Kako koristiti Auto Clicker za Chromebook

Kako koristiti Auto Clicker za Chromebook

Danas smo namjeravali istražiti alat koji može automatizirati ponavljajuće zadatke klikanja na vašem Chromebooku: Auto Clicker. Ovaj vam alat može uštedjeti vrijeme i