Спекулативно извршавање

С Википедије, слободне енциклопедије

Спекулативно извршавање је техника оптимизације у рачунарству којом рачунарски систем извршава неке задатке који не морају бити неопходни.

Главна идеја је да се посао одради „пре“ него што будемо сазнали да ли ће нам та информација уопште бити потребна, да би спречили кашњење до ког би могло доћи када би се радило на „обичан“ начин. Ако се испостави да је посао који смо одрадили узалудан, све промене (на подацима на којима смо радили) до којих је дошло се бришу и враћају се старе вредности. Сви резултати се, такође, игноришу.

Циљ нам је да обезбедимо већу конкурентност ако нам је доступно више ресурса. Ова техника се користи у различим областима (предвиђање гранања у проточној обради процесорских инструкција, превремено хватање података из меморије (енгл. prefetching memory) и из фајлова, и оптимистична контрола конкурентности (енгл. optimistic concurrency control) у базама.[1][2][3]

Процесори[уреди | уреди извор]

Модерни процесори који користе проточну обраду користе спекулативно извршавање да би смањили цену инструкција условних грана. Користе шеме које предвиђају путеве извршења који су базирани на историји извршавања грана. .[2] Ради побољшања перформанси и искоришћења рачунарских ресурса, инструкције могу бити испланиране у време када се још није утврдило да ли ће бити потребно се изврше пре гране. [4]

Компајлери[уреди | уреди извор]

У огранизацији рачунара за мултипроцесорске системе, спекулативно звршавање укључује код који извршава процесор док је безпослен у следећем блоку процесора, у случају да не постји зависност кода који се може извршити на другом процесору. Корист ове шеме је у томе што се смањује време одговора за индивидуалне процесоре и за укупан систем. Међутим, постоји мрежни пенал за просечне случајеве, пошто у случају лошег улога, проточна обрада треба бити „испрана“. [5] Компајлер је ограничен при издавању инструкција спекулативног извршавања, пошто захтева помоћ хардвера да би баферовао ефекте спекулативно извршених инструкција. Без подршке хардвера, компајлер ће моћи да изда само спекулативне инструкције које немају нежене ефекте у случају погрешне спекулације. .[6]

Жељно извршавање[уреди | уреди извор]

Жељно извршавање је форма спекулативног извршавања где се обе стране кондиционалних грана извршавају. Међутим, резултатима се посвећује само ако је исказ тачан. Са неограниченим ресурсима, жељно извршавање би у теорији омогућило исту перформансу као и савршена предикција грана. Са ограниченим ресурсима жељно извршавање би бивало запослено пажљиво пошто количина потребних ресурса расте експоненцијално са сваким нивоом грана које се изврше жељно..[7]

Лења процена[уреди | уреди извор]

Лења процена не спекулише. Инкорпорација спекулативног извршавања у имплементацију Haskell-а је тренутна тема истраживања. „Жељни Haskell“ је дизајниран око идеје спекулативног извршавања. Скорашње верзије GHC-а подржавају облик спекулативног извршавања са механизмом за абортирање да би се повукао у случају лошег избора званог „оптимистично извршавање“ .[8]

Референце[уреди | уреди извор]

  1. ^ Lazy and Speculative Execution Архивирано на сајту Wayback Machine (10. октобар 2012) Butler Lampson Microsoft Research OPODIS, Bordeaux, France 12 December 2006
  2. ^ а б International Business Machines Corporation. Research Division; Raghavan, Prabhakar; Schachnai, Hadas; Mira Yaniv (1998). Dynamic schemes for speculative execution of code. IBM. Приступљено 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. стр. 56—57. ISBN 978-3-540-55253-6. Приступљено 18. 1. 2011. 
  5. ^ Laplante, Phillip A. (2004). Real-time systems design and analysis. Wiley-IEEE. стр. 391. ISBN 978-0-471-22855-4. Приступљено 21. 1. 2011. 
  6. ^ Lilja, David J.; Bird, Peter L. (1994). The interaction of compilation technology and computer architecture. Springer. стр. 16. ISBN 978-0-7923-9451-8. Приступљено 21. 1. 2011. 
  7. ^ Šilc, Jurij; Robic, Borut; Ungerer, Theo (1999). Processor architecture: from dataflow to superscalar and beyond. Springer. стр. 148—150. ISBN 978-3-540-64798-0. Приступљено 21. 1. 2011. 
  8. ^ Optimistic Evaluation: a fast evaluation strategy for non-strict programs

Спољашње везе[уреди | уреди извор]