Paralelizam na nivou naredbe

Paralelizam na nivou naredbe (engl. Instruction-level parallelism, ILP) meri koliko se operacija, u jednom računarkom programu, mogu izvršiti istovremeno. Potencijalno preklapanje instrukcija se naziva paralelizam na nivou naredbe.

Postoje dva pristupa paralelizmu na nivou naredbe:

  • Hardverski
  • Softverski

Hardverski nivo radi na osnovu dinamičkog paralelizma, dok softverski nivo radi na osnovu statičkog paralelizma.[1] Pentium procesor radi na osnovu dinamičkih sekvenci paralelnog izvršavanja dok Itanium procesor radi na osnovu paralelizma na statičkom nivou.

Razmotrimo sledeći program:

  1. e = a + b
  2. f = c + d
  3. m = e * f

Treća operacija zavisi od rezultata prve i druge operacije, tako da se ne može dobiti rezultat dok se ne izvrše prve dve do kraja. Međutim, prve dve operacije ne zavise od drugih operacija tako da se mogu izvršiti istovremeno. Ako pretpostavimo da se svaka operacija može završiti u jednoj jedinici vremena, onda se ovaj program može izvršiti, ukupno, u dve jedinice vremena (dobijamo paralelizam na nivou naredbe 3/2).

Cilj dizajnera kompajlera i procesora je da identifikuje prednost paralelizma na nivou naredbe i da tu prednost iskoristi što je više moguće. Obični programi se uglavnom pišu po modelu sekvencijalnog izvršavanja gde se instrukcije izvršavaju jena za drugom i redosledom koji određuje programer. Paralelizam na nivou naredbe omogućava procesoru i kompajleru preklapanje izvršavanja više instrukcija. Može čak dozvoliti i promenu redosleda po kome se instrukcije izvršavaju.

Koliko paralelizam na nivou naredbe postoji u programima, direktno zavisi od aplikacije. U određenim oblastima, kao što su grafika i naučna izračunavanja, ova vrsta paralelizma može postojati u velikoj količini. Međutim, preopterećenja, kao što je kriptografija, izlažu mnogo manje paralelizma.

Mikroarhitektonske tehnike koje iskorišćavaju paralelizam na nivou naredbe:

  • Protočna obrada instrukciija, gde se izvršavanja više instrukcija mogu delimično preklapati.
  • Superskalarno izvršavanje, veoma dugačke reči instrukcija (engl. very long instruction word, VLIW) i usko povezani EPIC koncepti, u kojima se više jedinica za izvršavanje koriste za paralelno izvršavanje više instrukcija.
  • Vanredna izvršavanja (engl. out-of-order execution, OOE), gde se instrukcije izvršavaju u proizvoljnom redosledu koji ne narušava zavisnosti podataka. Ova tehnika je nezavisna i od protočne obrade i od superskalarne tehnike. Trenutna implementacija OOE dinamički (npr. dok se program izvršava i bez pomoći kompajlera) izvodi ILP iz običnih programa. Alternativno, može se izvesti ovaj paralelizam u vremenu kompajliranja i nekako se preneti ova informacija hardveru. Zbog kompleksnosti skaliranja OOE tehnike, industrija je preispitala skupove instrukcija koje eksplicitno šifruju više nezavisnih operacija po instrukciji.
  • Preimenovanje registara, odnosno tehnika koja se koristi da se izbegne nepotrebna serijalizacija programskih operacija koje su nametnute ponovnom upotrebom registara tih operacija. Ova tehnika se koristi da bi se omogućila "vanredno" izvršavanje.
  • Spekulativno izvršavanje koje omogućava izvršavanje celih instrukcija ili delova instrukcija pre provere da li bi ova izvršavanja uopšte trebalo da se dese. Forma spekulativnog izvršavanja koja se često koristi je kontrola toka spekulacija gde se instrukcije (koje su prošle kontrolu toka) izvršavaju pre nego što se utvrdi meta kontrole toka. Koriste se i još nekoliko drugih formi, uključujući spekulativno izvršavanje koje vode predikcija vrednosti, predikcija zavisnosti memorije i predikcija kašnjenja keša.
  • Predikcija grananja, koja se korsiti da bi se izbeglo odugovlačenje radi rešavalja kontrole zavisnosti. Koristi se sa spekulativnim izvršavanjem.

Arhitekture tokova podataka su druga klasa arhitektura gde se ILP eksplicitno naglašava.

Poslednjih godina, ILP tehnike su se koristile da bi obezbedile poboljšanje performanse uprkos povećanju razlika između frekvencija rada procesora i vremenu pristupa memorije (rani dizajni ILP-a, kao što je IBM 360, su koristili tehnike da savladaju ograničenja nametnuta relativno malim fajlovima registara). Trenutno, keš penal za promašaj u glavnoj memoriji košta nekoliko stotina procesorskih ciklusa. Dok je uglavnom moguće iskoristiti ILP da bi dpustio takva kašnjenja, troškovi povezanog resursa i rasipanja energije su nesrazmerni. Šta više, kompleksnost i česta kašnjenja osnovnih hardverskih struktura rezultuju smanjenje frekverije rada, i time poništavajući bilo kakve beneficije. Otuda su se navedene tehnike pokazale kao neadekvatne da očuvaju procesor od odugovlačenja za podatke van čipa. Umesto toga, industrija se kreće ka eksploatisanju paralelizma višeg nivoa koji se može eksploatisati preko tehnika kao što su multiprocessing i multithreading.[2]

Vidi još uredi

Reference uredi

Literatura uredi

  • Hennessy, John L.; Patterson, David A. Computer Architecture: A Quantitative Approach. 

Spoljašnje veze uredi