اجرای پیش بینانه

اجرای پیش بینانه یک تکنیک بهینه‌سازی برنامه است که در آن یک سیستم کامپیوتری وظایفی را انجام می‌دهد که ممکن است نیازی به آن نباشد. محاسبه قبل از اینکه مشخص شود واقعاً به آن نیاز است یا خیر انجام می‌شود تا از تأخیری که باید با انجام کار پس از مشخص شدن نیاز به آن ایجاد شود، جلوگیری شود. اگر معلوم شود که در نهایت کار مورد نیاز نبوده‌است، اکثر تغییرات ایجاد شده توسط کار برگردانده می‌شود و نتایج نادیده گرفته می‌شوند.

هدف این است که در صورت وجود منابع سیستم اضافی، همروندی بیشتری ارائه شود. این رویکرد در زمینه‌های مختلفی از جمله پیش‌بینی پرشی در پردازنده‌های خط لوله، پیش‌بینی ارزش برای بهره‌برداری از موقعیت ارزش، واکشی از قبل حافظه و فایل‌ها، و کنترل همروندی خوش‌بینانه در سیستم‌های پایگاه داده استفاده می‌شود.

اجرای پیش بینانه با استفاده از پردازنده‌های چند رشته‌ای یک مورد خاص از اجرای پیش بینانه است.

بررسی اجمالی 
ریزپردازنده‌های خط لوله مدرن از اجرای پیش بینانه برای کاهش هزینه دستورالعمل‌های شاخه مشروط با استفاده از طرح‌هایی استفاده می‌کنند که مسیر اجرای یک برنامه را بر اساس تاریخچه اجرای شاخه‌ها پیش بینی می‌کنند. به منظور بهبود عملکرد و استفاده از منابع کامپیوتری، دستورالعمل‌ها را می‌توان در زمانی برنامه‌ریزی کرد که هنوز مشخص نشده‌است که دستورالعمل‌ها باید قبل از یک رشته اجرا شوند.

انواع 
محاسبات حدسی به مفهوم قبلی مرتبط بود.

اعدام مشتاقانه (همچنین به عنوان اجرای اوراکل شناخته می‌شود) 
اجرای مشتاق شکلی از اجرای پیش بینانه است که در آن هر دو طرف شاخه مشروط اجرا می‌شوند. با این حال، نتایج تنها در صورتی تأیید می‌شوند که نتیجه درست باشد. با منابع نامحدود، اجرای مشتاق در تئوری عملکردی مشابه پیش‌بینی پرش کامل را ارائه می‌دهد. با منابع محدود، اجرای مشتاقانه باید با دقت به کار گرفته شود، زیرا تعداد منابع مورد نیاز به طور تصاعدی با هر سطح از شاخه اجرا شده افزایش می‌یابد.

اجرای پیش‌بینی کننده 
اجرای پیش‌بینی‌کننده شکلی از اجرای پیش بینانه است که در آن برخی از نتایج پیش‌بینی می‌شود و اجرا در مسیر پیش‌بینی‌شده پیش می‌رود تا زمانی که نتیجه واقعی مشخص شود. اگر پیش‌بینی درست باشد، اجرای پیش‌بینی‌شده مجاز به انجام است. با این حال، اگر پیش بینی نادرستی وجود داشته باشد، اجرا باید باز شده و دوباره اجرا شود. اشکال رایج این مدل شامل پیش‌بینی‌کننده‌های شاخه و پیش‌بینی وابستگی حافظه است. یک فرم کلی از این حالت گاهی اوقات به عنوان پیش بینی ارزش نامیده می‌شود.

مفاهیم مرتبط

اجرای تنبل 
اجرای تنبل وارونهٔ اجرای مشتاقانه است و شامل حدس و گمان نمی‌شود. ادغام اجرای گمانه‌زنی در پیاده‌سازی زبان برنامه‌نویسی Haskell، یک زبان که در دستهٔ زبان‌های تنبل قرار می‌گیرد، یک موضوع تحقیقاتی در حال حاضر است. Eager Haskell، گونه‌ای از این زبان، بر اساس ایده اجرای حدس و گمان طراحی شده‌است. یک پایان‌نامه دکترا در سال ۲۰۰۳ باعث شد GHC از نوعی اجرای گمانه زنی با مکانیسم abort حمایت کند تا در صورت انتخاب بدی به نام اجرای خوش‌بینانه از آن صرف نظر کند. اما خیلی پیچیده به نظر می‌رسید.

آسیب‌پذیری‌های امنیتی 
از سال ۲۰۱۷، یک سری از آسیب‌پذیری‌های امنیتی در پیاده‌سازی اجرای گمانه‌زنی بر روی معماری‌های پردازنده رایج یافته شد که به‌طور مؤثری افزایش دسترسی را آسان می‌کرد.

این آسیب‌پذیری‌ها شامل:
 Foreshadow
 Meltdown
 Microarchitectural Data Sampling
 Spectre
 SPOILER
 پکمن

جستارهای وابسته 
 پیش‌بینی شاخه
 اجرای خارج از دستور
 Slipstream (علوم کامپیوتر)
 چند رشته‌ای حدس و گمان
 اشکال امنیتی سخت‌افزار
 آسیب‌پذیری‌های CPU اجرای گذرا

منابع 

پردازش دستورها
همروندی