تنفيذ تخميني

يرجى مراجعة هذه المقالة وإزالة وسم المقالات غير المراجعة، ووسمها بوسوم الصيانة المناسبة.
من ويكيبيديا، الموسوعة الحرة

ا هو أسلوب تحسين حيث يقوم نظام الكمبيوتر ببعض المهام التي قد لا تكون مطلوبة. يتم العمل قبل معرفة الحاجة إليه فعلا ، وذلك لتلافي التأخير الذي قد يترتب على القيام بالعمل بعد معرفة الحاجة إليه. إذا اتضح أن العمل لم يكن مطلوبًا بعد كل شيء ، فسيتم إرجاع معظم التغييرات التي أجراها العمل ويتم تجاهل النتائج.

الهدف هو توفير المزيد من التزامن في حالة توفر موارد إضافية. يتم استخدام هذا النهج في مجموعة متنوعة من المجالات ، بما في ذلك التنبؤ بالفروع في المعالجات الموصلة بالأنابيب ، والتنبؤ بالقيمة لاستغلال مكان القيمة ، [1] الجلب المسبق للذاكرة والملفات ، والتحكم في التزامن في أنظمة قواعد البيانات . [2] [3]

تعد عملية تعدد مؤشرات الترابط المضاربة حالة خاصة للتنفيذ التخميني.

نظرة عامة[عدل]

تستخدم المعالجات الدقيقة الحديثة الموصلة بالأنابيب التنفيذ التخميني لتقليل تكلفة تعليمات الفرع الشرطي باستخدام المخططات التي تتنبأ بمسار تنفيذ البرنامج استنادا إلى تاريخ عمليات تنفيذ الفروع. [3] من أجل تحسين الأداء والاستفادة من موارد الكمبيوتر ، يمكن جدولة التعليمات في وقت لم يتم تحديد أنه يجب تنفيذ التعليمات قبل أي فرع . [4]

المتغيرات[عدل]

كان الحساب التخميني مفهوما سابقًا ذا صلة. [5]

تنفيذ حريص[عدل]

التنفيذ الحريص هو شكل من أشكال التنفيذ التخميني حيث يتم تنفيذ كلا جانبي الفرع الشرطي ؛ ومع ذلك ، يتم الالتزام النتائج فقط إذا كان المسند صحيحًا. باستخدام موارد غير محدودة ، فإن التنفيذ المتلهف (المعروف أيضًا باسم تنفيذ أوراكل ) من شأنه أن يوفر نظريًا نفس أداء تنبؤ الفرع المثالي. مع الموارد المحدودة ، يجب استخدام التنفيذ بحرص ، حيث أن عدد الموارد اللازمة ينمو بشكل كبير مع كل مستوى من مستويات الفرع المنفذ بشغف. [6]

التنفيذ التنبئي[عدل]

التنفيذ التنبئي هو شكل من أشكال التنفيذ التخميني حيث يتم توقع بعض النتائج ويستمر التنفيذ على طول المسار المتوقع حتى يتم معرفة النتيجة الفعلية. إذا كان التنبؤ صحيحًا ، يُسمح بالتنفيذ المتوقع ؛ ومع ذلك ، إذا كان هناك خطأ في التنبؤ ، يجب أن يكون التنفيذ غير مراقب وإعادة تنفيذه. تشمل الأشكال الشائعة لهذا تنبؤات الفروع والتنبؤ بالاعتماد على الذاكرة . يشار أحيانًا إلى النموذج المعمم على أنه توقع القيمة. [1] [7]

المفاهيم ذات الصلة[عدل]

إعدام كسول[عدل]

التنفيذ الكسول هو عكس التنفيذ المتهور ولا ينطوي على تكهنات. يعد دمج التنفيذ التخميني في تطبيقات لغة برمجة هاسكل ، وهي لغة كسولة ، موضوعًا بحثيًا حاليًا. تم تصميم Eager Haskell ، وهو نوع مختلف من اللغة ، حول فكرة التنفيذ التأملي. جعلت أطروحة الدكتوراه لعام 2003 شركة GHC تدعم نوعًا من التنفيذ التخميني مع آلية إجهاض للتراجع في حالة وجود خيار سيء يسمى التنفيذ المتفائل . [8] كان يعتبر معقدًا للغاية. [9]

الثغرات الأمنية[عدل]

بدءًا من عام 2017 ، تم العثور على سلسلة من الثغرات الأمنية في عمليات التنفيذ التخميني على بنيات المعالجات الشائعة والتي مكنت بشكل فعال من رفع الامتيازات .

وتشمل هذه:

  • شبح
  • الانهيار
  • المفسد
  • ينذر
  • أخذ عينات البيانات المعمارية الدقيقة
  • توقع الفرع
  • تنفيذ خارج النظام
  • تيار المروحة (علوم الكمبيوتر)
  • multithreading المضاربة
  • خطأ في أمان الأجهزة
  • نقاط الضعف في وحدة المعالجة المركزية للتنفيذ العابر

المراجع[عدل]

  1. ^ أ ب "A Survey of Value Prediction Techniques for Leveraging Value Locality", S. Mittal, Concurrency and Computation, 2017 نسخة محفوظة 22 نوفمبر 2020 على موقع واي باك مشين.
  2. ^ Lazy and Speculative Execution بتلر لامبسون معهد أبحاث مايكروسوفت OPODIS, Bordeaux, France 12 December 2006 نسخة محفوظة 4 مارس 2016 على موقع واي باك مشين.
  3. ^ أ ب International Business Machines Corporation. Research Division؛ Prabhakar Raghavan؛ Hadas Schachnai؛ Mira Yaniv (1998). Dynamic schemes for speculative execution of code. IBM. مؤرشف من الأصل في 2020-11-22. اطلع عليه بتاريخ 2011-01-18. {{استشهاد بكتاب}}: |مؤلف1= باسم عام (مساعدة)
  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. مؤرشف من الأصل في 2020-11-22. اطلع عليه بتاريخ 2011-01-18.
  5. ^ Randy B. Osborne (21 مارس 1990). "Speculative Computation in Multilisp". Parallel Lisp: Languages and Systems (PS). Lecture Notes in Computer Science. ديجيتال إكوبمينت. ج. 441. ص. 103–137. DOI:10.1007/BFb0024152. ISBN:3-540-52782-6. مؤرشف من الأصل في 2017-02-07. اطلع عليه بتاريخ 2018-01-26.
  6. ^ Jurij Šilc؛ Borut Robič؛ Theo Ungerer (1999). Processor architecture: from dataflow to superscalar and beyond. Springer. ص. 148–150. ISBN:978-3-540-64798-0. اطلع عليه بتاريخ 2011-01-21.
  7. ^ Mark D.، Hill؛ Norman P.، Jouppi؛ Gourindar S.، Sohi (2000). Readings in Computer Architecture. Morgan Kaufman. ISBN:9781558605398. مؤرشف من الأصل في 2020-11-22. اطلع عليه بتاريخ 2018-01-05.
  8. ^ Jones، Simon Peyton؛ Ennals، Robert (1 أغسطس 2003). "Optimistic Evaluation: a fast evaluation strategy for non-strict programs". مؤرشف من الأصل في 2020-11-22. اطلع عليه بتاريخ 2019-05-15 – عبر www.microsoft.com. {{استشهاد بدورية محكمة}}: الاستشهاد بدورية محكمة يطلب |دورية محكمة= (مساعدة)
  9. ^ "[Haskell] Optimistic Evaluation?". مؤرشف من الأصل في 2020-11-22. اطلع عليه بتاريخ 2020-11-22.