انتقل إلى المحتوى

متنبئ فروع

من ويكيبيديا، الموسوعة الحرة

في معمارية الحاسوب متنبئ الفروع Branch Predictor  هي دارة رقمية تحاول تخمين مسار الخطوة القادمة ضمن كتلة تجري معالجتها قبل ان يتم تحديدها بناء على نتيجة العملية السابقة «كمحاولة تخمين نتيجة حلقة if الشرطية قبل حساب الشرط».[1]

الغاية من متنبئ الفروع هي تسريع معالجة كتلة من الكود وكذلك تحسين تدفق البيانات ضمن انابيب التعليمات، متنبئ الفروع عامل حرج لتحقيق اداء بكفاءة عالية خصوصا لمعالجات x86.

المبدأ[عدل]

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

تقنيات متنبئ الفروع[عدل]

متنبئ فروع ستاتيكيStatic Branch Predictor[عدل]

وهو ابسط أنواع التنبؤ، حيث لا يعتمد على المعلومات الديناميكية لتاريخ كود يجري تنفيذه، بدلا من ذلك يقرر قيمة شرط القفز بناء على نوع تعليمة الفرع، كمثال MIPS أحد اوائل المعماريات التجارية اتي تستخدممجموعة تعليمات بنية الحاسب RISC يعطي قيمة تنبؤ " Not Taken" لتعليمة if-else وبالتالي فهو دوما يقوم بجلب محتوى الفرع الثاني وتمريره "جلب التعليمة Fetch Instructions"

متنبئ فروع ديناميكيDynamic Branch Predictor[عدل]

يعتمد على المعلومات حول الفروع سواء كانت Taken Or Not Taken ليستفيد منها في تقرير قيمة شرط القفز التالية

متنبئ فروع  عشوائي Branch Predictor[عدل]

باستخدام بت زائف عشوائي يعطي كل فرع احتمال صحة 50% وهذه النسبة لاتؤثر سلبا أو ايجابا تماما على الاداء.

أيضا يمكن ان يكون للمتنبئ بعدة مستويات منها

متنبئ فروع بمستوى واحد One-Level Branch Predictor[عدل]

يسمى أيضا بعداد الإشباع Saturating Counter حيث يستخدم بت إشباع «اساسا مجرد قلاب Flip flop» ليسجل خرج الفرع «أي فرع تم اختياره» وهو ابسط اشكال المتنبئ الديناميكي ولكنه ليس الأكثر دقة.

حالة 2 بت إشباع تكافئ 4 حالات آلة.

مخطط صندوقي لمتنبئ ذو 2 بت و الحالات الموافقة للألة الممكنة

حالات الآلة الموافقة

Strongly Taken Weakly Taken Weakly Not Taken Strongly Not Taken

عندما يتم تقييم فرع، فأن استجابة حالة الآلة للتقييم هي تحديث قيمة شرط القفز، فإذا تم تقييم فرع Not Taken فأنه يقود إلى حالة Strongly Not Taken ، وتقييم فرع Taken  يقود إلى Strongly Taken.

محاسن جدول عداد ب 2 بت مقارنة بنظيره 1 بت هو انه جعل قيمة شرط اختيار الفرع تنحرف نحو التخمين الصحيح ضعف الانحراف الذي يوفره 1 بت كمثال قفزة الشرط لإغلاق حلقة غير قابلة للتنبؤ بمحاولة تخمين واحدة ولكن بمحاولتين تنخفض الاحتمالات للنصف.

جدول التنبؤ يفهرس ويخزن مضمنا مع بتات عناوين التعليمات وبذلك يستطيع المعالج جلب محتوى التعليمات للفروع التي قرر اختيارها حتى قبل مرحلة فك تكويد التعليمات.

متنبئ فروع عصبوني Neural Branch Predication[عدل]

يتعمد على التعلم الألي Machine Learning هو أحد فروع الذكاء الاصطناعي التي تهتم بتصميم وتطوير خوارزميات وتقنيات تسمح للحواسيب بامتلاك خاصية «التعلم».

أول تطبيق تجاري للمتنبئ العصبوني كان لمعمارية AMD Piledriver ، الفرق الواضح للتنبؤ العصبوني هي القدرة على تتبع توايخ طويلة باستخدام مورد نمو جبري «ذو تعقيد جبري»، مقارنة بالمتنبئ التقليدي ذو التعقيد الأسي.

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

  1. ^ Michaud، Pierre؛ Seznec، André؛ Uhlig، Richard (1 مايو 1997). "Trading conflict and capacity aliasing in conditional branch predictors". ACM SIGARCH Computer Architecture News. ج. 25 ع. 2: 292–303. DOI:10.1145/384286.264211. ISSN:0163-5964. مؤرشف من الأصل في 2020-03-12.