Спекулативно извршавањеСпекулативно извршавање је техника оптимизације у рачунарству којом рачунарски систем извршава неке задатке који не морају бити неопходни. Главна идеја је да се посао одради „пре“ него што будемо сазнали да ли ће нам та информација уопште бити потребна, да би спречили кашњење до ког би могло доћи када би се радило на „обичан“ начин. Ако се испостави да је посао који смо одрадили узалудан, све промене (на подацима на којима смо радили) до којих је дошло се бришу и враћају се старе вредности. Сви резултати се, такође, игноришу. Циљ нам је да обезбедимо већу конкурентност ако нам је доступно више ресурса. Ова техника се користи у различим областима (предвиђање гранања у проточној обради процесорских инструкција, превремено хватање података из меморије (енгл. prefetching memory) и из фајлова, и оптимистична контрола конкурентности (енгл. optimistic concurrency control) у базама.[1][2][3] ПроцесориМодерни процесори који користе проточну обраду користе спекулативно извршавање да би смањили цену инструкција условних грана. Користе шеме које предвиђају путеве извршења који су базирани на историји извршавања грана. .[2] Ради побољшања перформанси и искоришћења рачунарских ресурса, инструкције могу бити испланиране у време када се још није утврдило да ли ће бити потребно се изврше пре гране.[4] КомпајлериУ огранизацији рачунара за мултипроцесорске системе, спекулативно звршавање укључује код који извршава процесор док је безпослен у следећем блоку процесора, у случају да не постји зависност кода који се може извршити на другом процесору. Корист ове шеме је у томе што се смањује време одговора за индивидуалне процесоре и за укупан систем. Међутим, постоји мрежни пенал за просечне случајеве, пошто у случају лошег улога, проточна обрада треба бити „испрана“.[5] Компајлер је ограничен при издавању инструкција спекулативног извршавања, пошто захтева помоћ хардвера да би баферовао ефекте спекулативно извршених инструкција. Без подршке хардвера, компајлер ће моћи да изда само спекулативне инструкције које немају нежене ефекте у случају погрешне спекулације. .[6] Жељно извршавањеЖељно извршавање је форма спекулативног извршавања где се обе стране кондиционалних грана извршавају. Међутим, резултатима се посвећује само ако је исказ тачан. Са неограниченим ресурсима, жељно извршавање би у теорији омогућило исту перформансу као и савршена предикција грана. Са ограниченим ресурсима жељно извршавање би бивало запослено пажљиво пошто количина потребних ресурса расте експоненцијално са сваким нивоом грана које се изврше жељно..[7] Лења проценаЛења процена не спекулише. Инкорпорација спекулативног извршавања у имплементацију Haskell-а је тренутна тема истраживања. „Жељни Haskell“ је дизајниран око идеје спекулативног извршавања. Скорашње верзије GHC-а подржавају облик спекулативног извршавања са механизмом за абортирање да би се повукао у случају лошег избора званог „оптимистично извршавање“ .[8] Референце
Спољашње везе
|
Portal di Ensiklopedia Dunia