Кіріспе
Компьютерлік оңтайландыру техникасы
Спекулятивті орындау – компьютерлік жүйеде қажет болмауы мүмкін тапсырманы орындау арқылы жүзеге асырылатын оңтайландыру техникасы. Жұмыс, оның қажеттілігі белгілі болмас бұрын жасалады, осылайша қажеттілігі анықталғаннан кейін орындалса туындайтын кешігудің алдын алуға болады. Егер жұмыс қажет емес екені белгілі болса, жасалған өзгерістер кері қайтарылады және нәтижелер назардан тыс қалады. Мақсаты – қосымша ресурстар болған жағдайда, параллелизмді арттыру. Бұл тәсіл түрлі салаларда қолданылады, оның ішінде конвейерлік процессорлардағы тармақталуды болжау, мән локальдығын пайдалану үшін мәнді болжау, жадты және файлдарды алдын ала жүктеу, сондай-ақ деректер базасы жүйелеріндегі оптимистік параллелизмді басқару. Спекулятивті көп өрістілік – спекулятивті орындаудың ерекше жағдайы.
Speculative execution is an optimization technique where a computer system performs some task that may not be needed. Work is done before it is known whether it is actually needed, so as to prevent a delay that would have to be incurred by doing the work after it is known that it is needed. If it turns out the work was not needed after all, most changes made by the work are reverted and the results are ignored. The objective is to provide more concurrency if extra resources are available. This approach is employed in a variety of areas, including branch prediction in pipelined processors, value prediction for exploiting value locality, prefetching memory and files, and optimistic concurrency control in database systems. Speculative multithreading is a special case of speculative execution.
Шолу
Қазіргі заманғы құбырлы микропроцессорлар шартты тармақталу нұсқауларының бағасын төмендету үшін, тармақталу орындалу тарихына сүйене отырып бағдарламаның орындалу жолын болжайтын схемаларды қолданатын болжамды орындауды пайдаланады.
Нұсқалар
Спекулятивті есептеу – бұған қатысты бұрынғы ұғым болған.
Ашығыс орындау
Eager execution – шартты тармақтың екі жағы да орындалатын спекулятивті орындау түрі, бірақ нәтижелер тек болжам дұрыс болса ғана қабылданады. Шегі жоқ ресурстармен, eager execution (сондай-ақ оракул орындау деп те аталады) теориялық тұрғыдан алғанда, мінсіз тармақ болжамымен бірдей өнімділікті қамтамасыз етеді. Шешімді ресурстармен, eager execution-ды сақтап қолдану керек, себебі орындалатын тармақтардың әр деңгейімен қажетті ресурстардың саны экспоненциалды түрде өседі.
Болжамды орындау
Прогноздық орындау – бұл спекулятивтік орындаудың бір түрі, онда белгілі бір нәтиже болжанады және нақты нәтиже белгілі болғанға дейін орындалу болжалған бағытта жүзеге асырылады. Егер болжам дұрыс болса, болжалған орындалу міндетті түрде қабылданады; бірақ болжам қате болса, орындалу кері қайтарылып, қайтадан орындалуы керек. Бұған тармақталу болжаушылар және жад тәуелділігі болжаушылары сияқты кең таралған түрлері жатады. Көбінесе, жалпыланған түрі мәнді болжау деп аталады.
Жалқау орындау
Жалқау орындау – құлшынысты орындаудың керісінше және болжам жасауды қамтымайды. Haskell бағдарламалау тілінің іске асырылуына болжамды орындауды енгізу – жалқау тіл ретінде, қазіргі зерттеу тақырыбы болып табылады. Eager Haskell, тілдің бір түрі, болжамды орындау идеясы негізінде құрылған. 2003 жылғы докторлық диссертациясы GHC-ге жаман шешім қабылданған жағдайда кері қайтару механизмі бар, «оптимистік орындау» деп аталатын болжамды орындаудың бір түрін қолдауға мүмкіндік берді. Ол тым күрделі деп танылды.