Spekulativno izvršavanje

S Vikipedije, slobodne enciklopedije

Spekulativno izvršavanje je tehnika optimizacije u računarstvu kojom računarski sistem izvršava neke zadatke koji ne moraju biti neophodni.

Glavna ideja je da se posao odradi „pre“ nego što budemo saznali da li će nam ta informacija uopšte biti potrebna, da bi sprečili kašnjenje do kog bi moglo doći kada bi se radilo na „običan“ način. Ako se ispostavi da je posao koji smo odradili uzaludan, sve promene (na podacima na kojima smo radili) do kojih je došlo se brišu i vraćaju se stare vrednosti. Svi rezultati se, takođe, ignorišu.

Cilj nam je da obezbedimo veću konkurentnost ako nam je dostupno više resursa. Ova tehnika se koristi u različim oblastima (predviđanje grananja u protočnoj obradi procesorskih instrukcija, prevremeno hvatanje podataka iz memorije (engl. prefetching memory) i iz fajlova, i optimistična kontrola konkurentnosti (engl. optimistic concurrency control) u bazama.[1][2][3]

Procesori[uredi | uredi izvor]

Moderni procesori koji koriste protočnu obradu koriste spekulativno izvršavanje da bi smanjili cenu instrukcija uslovnih grana. Koriste šeme koje predviđaju puteve izvršenja koji su bazirani na istoriji izvršavanja grana. .[2] Radi poboljšanja performansi i iskorišćenja računarskih resursa, instrukcije mogu biti isplanirane u vreme kada se još nije utvrdilo da li će biti potrebno se izvrše pre grane. [4]

Kompajleri[uredi | uredi izvor]

U ogranizaciji računara za multiprocesorske sisteme, spekulativno zvršavanje uključuje kod koji izvršava procesor dok je bezposlen u sledećem bloku procesora, u slučaju da ne postji zavisnost koda koji se može izvršiti na drugom procesoru. Korist ove šeme je u tome što se smanjuje vreme odgovora za individualne procesore i za ukupan sistem. Međutim, postoji mrežni penal za prosečne slučajeve, pošto u slučaju lošeg uloga, protočna obrada treba biti „isprana“. [5] Kompajler je ograničen pri izdavanju instrukcija spekulativnog izvršavanja, pošto zahteva pomoć hardvera da bi baferovao efekte spekulativno izvršenih instrukcija. Bez podrške hardvera, kompajler će moći da izda samo spekulativne instrukcije koje nemaju nežene efekte u slučaju pogrešne spekulacije. .[6]

Željno izvršavanje[uredi | uredi izvor]

Željno izvršavanje je forma spekulativnog izvršavanja gde se obe strane kondicionalnih grana izvršavaju. Međutim, rezultatima se posvećuje samo ako je iskaz tačan. Sa neograničenim resursima, željno izvršavanje bi u teoriji omogućilo istu performansu kao i savršena predikcija grana. Sa ograničenim resursima željno izvršavanje bi bivalo zaposleno pažljivo pošto količina potrebnih resursa raste eksponencijalno sa svakim nivoom grana koje se izvrše željno..[7]

Lenja procena[uredi | uredi izvor]

Lenja procena ne spekuliše. Inkorporacija spekulativnog izvršavanja u implementaciju Haskell-a je trenutna tema istraživanja. „Željni Haskell“ je dizajniran oko ideje spekulativnog izvršavanja. Skorašnje verzije GHC-a podržavaju oblik spekulativnog izvršavanja sa mehanizmom za abortiranje da bi se povukao u slučaju lošeg izbora zvanog „optimistično izvršavanje“ .[8]

Reference[uredi | uredi izvor]

  1. ^ Lazy and Speculative Execution Arhivirano na sajtu Wayback Machine (10. oktobar 2012) Butler Lampson Microsoft Research OPODIS, Bordeaux, France 12 December 2006
  2. ^ a b International Business Machines Corporation. Research Division; Raghavan, Prabhakar; Schachnai, Hadas; Mira Yaniv (1998). Dynamic schemes for speculative execution of code. IBM. Pristupljeno 18. 1. 2011. 
  3. ^ Kung, H. T.; John T. Robinson (1981). „On optimistic methods for concurrency control”. ACM Trans. Database Syst. 6. 
  4. ^ Bernd Krieg-Brückner (1992). ESOP '92: 4th European Symposium on Programming, Rennes, France, February 26-28, 1992 : proceedings. Springer. str. 56—57. ISBN 978-3-540-55253-6. Pristupljeno 18. 1. 2011. 
  5. ^ Laplante, Phillip A. (2004). Real-time systems design and analysis. Wiley-IEEE. str. 391. ISBN 978-0-471-22855-4. Pristupljeno 21. 1. 2011. 
  6. ^ Lilja, David J.; Bird, Peter L. (1994). The interaction of compilation technology and computer architecture. Springer. str. 16. ISBN 978-0-7923-9451-8. Pristupljeno 21. 1. 2011. 
  7. ^ Šilc, Jurij; Robic, Borut; Ungerer, Theo (1999). Processor architecture: from dataflow to superscalar and beyond. Springer. str. 148—150. ISBN 978-3-540-64798-0. Pristupljeno 21. 1. 2011. 
  8. ^ Optimistic Evaluation: a fast evaluation strategy for non-strict programs

Spoljašnje veze[uredi | uredi izvor]