في معمارية الحاسوب متنبئ الفروع 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 حالات آلة .
حالات الآلة الموافقة
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 ،الفرق الواضح للتنبؤ العصبوني هي القدرة على تتبع توايخ طويلة بأستخدام مورد نمو جبري "ذو تعقيد جبري" ، مقارنة بالمتنبئ التقليدي ذو التعقيد الأسي.
المراجع
- Michaud, Pierre; Seznec, André; Uhlig, Richard (1997-05-01). "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. مؤرشف من الأصل في 12 مارس 2020.