مرجع
آخر الزيارات

متنبئ فروع

481 كلمة•0 مشاهدة•🗒️ منذ 20 ساعة
باختصار: في معمارية الحاسوب متنبئ الفروع Branch Predictor هي دارة رقمية تحاول تخمين مسار الخطوة القادمة ضمن كتلة تجري معالجتها قبل ان يتم تحديدها بناء على نتيجة العملية السابقة «كمحاولة تخمين نتيجة حلقة if الشرطية قبل حساب الشرط». تجد هنا «متنبئ فروع  عشوائي Branch Predictor»، «متنبئ فروع بمستوى واحد One-Level Branch Predictor» و«متنبئ فروع ستاتيكيStatic Branch Predictor» ضمن 7 أقسام.
المحتويات
  1. متنبئ فروع  عشوائي Branch Predictor
  2. متنبئ فروع بمستوى واحد One-Level Branch Predictor
  3. متنبئ فروع ستاتيكيStatic Branch Predictor
  4. متنبئ فروع ديناميكيDynamic Branch Predictor
  5. حالات الآلة الموافقة
  6. المبدأ
  7. متنبئ فروع عصبوني Neural Branch Predication

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

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

متنبئ فروع  عشوائي Branch Predictor

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

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

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

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

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

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

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

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

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

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

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

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

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

المبدأ

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

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

متنبئ فروع عصبوني Neural Branch Predication

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

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

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.