أنظمة إعادة التشغيل
نظام إعادة التشغيل هو أسلوب يسمح للمعالجات ذات البنية المتوازية باستخدام شبكة تجاوز حتى عندما يكون زمن استجابة التعليمات غير معروف ولكنه قابل للتنبؤ. يقلل هذا الأسلوب زمن الاستجابة عندما يكون التنبؤ صحيحًا، ولكنه يستهلك موارد تنفيذ أكثر إذا كان التنبؤ خاطئًا. تُعد تعليمات التحميل هدفًا شائعًا لإعادة التشغيل نظرًا لأنها عادةً ما تمتلك مجموعة من مستويات الأداء المعروفة اعتمادًا على مستوى ذاكرة التخزين المؤقت (إن وُجد) التي توجد فيها البيانات المطلوبة.
أول مثال موثق لنظام إعادة التشغيل كان في معالج بنتيوم 4 من إنتل [ 1 ] : 1، واستمر هذا النظام كميزة في معالجاتها اللاحقة [ 2 ] . قد توجد بعض الاختلافات في هذا النظام في معالجات فائقة التوازي أخرى ، ولكن نظرًا لكونه تفصيلًا تقنيًا يؤثر فقط على الأداء، فنادرًا ما يتم توثيقه.
ملخص
تحتوي وحدة المعالجة المركزية التقليدية ذات البنية الأنبوبية على مرحلة جلب سجلات في بداية الأنبوب، حيث تُقرأ معاملات السجلات الخاصة بالتعليمات من ملف السجلات الفعلي ، ومرحلة كتابة في نهايته، حيث تُكتب مخرجات السجلات مرة أخرى إلى ملف السجلات الفعلي. ونظرًا لوجود عدة دورات ساعة بين هاتين المرحلتين، لا يمكن أن تكون تعليمة ما في الأنبوب مباشرةً بعد تعليمة أخرى تُنتج قيمة لسجل مطلوب من التعليمة الأولى. أما المعالجات التي تراعي مخاطر الأنابيب، فيمكنها إدخال فقاعات تلقائيًا في الأنبوب لإبقاء التعليمة في مرحلة جلب السجلات حتى تُكتب جميع مدخلاتها.
في تصميم خط أنابيب ذي مرحلة تنفيذ واحدة، يمكن إضافة ناقل جانبي للسماح باستخدام البيانات الناتجة عن مرحلة التنفيذ في دورة واحدة كمدخل لمرحلة التنفيذ في الدورة التالية، مما يلغي تأثير زمن الاستجابة الناتج عن التعليمات المتتالية المعتمدة على بعضها . ويمكن تصميم نواقل جانبية أكثر تعقيدًا لخطوط الأنابيب الأكثر تعقيدًا، كما يمكن للمعالجات فائقة التوازي استخدام شبكات التوجيه لتوجيه البيانات بين وحدات التنفيذ [ 3 ] .
لا تُعرف جميع التعليمات بزمن استجابتها عند جدولة تنفيذها [ 1 ] : 2. يشمل ذلك بعض العمليات الحسابية، مثل القسمة والجذر التربيعي، التي تعتمد على مُعاملاتها، والتعليمات التي تعتمد على حالة خارجية لوحدات التنفيذ، مثل الذاكرة [ 1 ] : 1 ، والوصول إلى الإدخال/الإخراج ، وتوليد الأرقام العشوائية . بالنسبة لهذه التعليمات، لن يتمكن المعالج من استخدام ناقل التجاوز لأنه لن يعرف في أي دورة ستكون البيانات جاهزة [ 1 ] : 2 .
في حالة قراءة البيانات من الذاكرة، يكون لأي وصول إلى ذاكرة التخزين المؤقت L1 (الذي يصل أيضًا إلى ذاكرة الترجمة السريعة TLB ) زمن استجابة معروف. قد يكون للوصول إلى ذاكرة التخزين المؤقت L2 زمن استجابة معروف أيضًا، ولكن بشكل عام، يصعب التنبؤ بالوصول إلى ذاكرة التخزين المؤقت L3 وحالات عدم الوصول الكاملة. غالبًا ما تقع عمليات قراءة البيانات على المسار الحرج للتنفيذ، لذا فإن تقليل زمن استجابتها يمكن أن يكون له تأثير كبير على وقت تنفيذ البرنامج. بما أن نظام التخزين المؤقت الفعال سيجعل معظم عمليات قراءة البيانات تصل إلى ذاكرة التخزين المؤقت L1، يمكن للمعالج جدولة التعليمات التي تعتمد على قراءة البيانات بافتراض أن القراءة ستصل إلى ذاكرة التخزين المؤقت L1 [ 4 ] . إذا كان التوقع غير صحيح وكانت القراءة غير ناجحة، فسيتم تجاهل نتائج التعليمات التابعة وإعادة جدولة التعليمات بعد اكتمال القراءة. إذا كان زمن استجابة ذاكرة التخزين المؤقت L2 معروفًا، فيمكن إعادة جدولة التعليمات لمحاولة استخدام ناقل التجاوز مرة أخرى عند زمن استجابة L2 [ 5 ] .
يمكن للمعالجات التي تقوم بفك تشفير التعليمات إلى عمليات دقيقة متعددة وجدولتها بشكل منفصل أن تعيد تشغيل العمليات الدقيقة التي تعتمد على التعليمات التي تم التنبؤ بها بشكل خاطئ فقط.
تاريخ
كان معالج بنتيوم 4 [ 1 ] أول معالج من إنتل يستخدم نظام إعادة التشغيل، وهو معالج فائق التوازي ذو مسار بيانات طويل بشكل استثنائي. يعني طول مسار البيانات هذا أن تأثير زمن الاستجابة الناتج عن عدم استخدام التجاوز أكبر بكثير مما هو عليه في المعالجات ذات مسارات البيانات الأقصر، ولكن الدورات المهدرة بسبب التنبؤ غير الدقيق تكون كبيرة أيضًا. على الرغم من امتلاكها مسارات بيانات أقصر، فقد تضمنت معالجات إنتل اللاحقة أنظمة إعادة التشغيل أيضًا، نظرًا لأن زمن استجابة الذاكرة أصبح عاملًا حاسمًا في أداء التطبيقات [ 6 ] . كما انخفضت تكلفة التنبؤ الخاطئ نظرًا لوجود عدد أكبر بكثير من وحدات التنفيذ مقارنةً بوحدتي التنفيذ في معالج بنتيوم 4.
كان نظام إعادة التشغيل المُطبق في معالج بنتيوم 4 بسيطًا. تمر التعليمات عبر كلٍ من خط الأنابيب العادي وقائمة انتظار بنفس عدد مراحل خط الأنابيب، بحيث إذا فشلت قراءة من الذاكرة، يُمكن إرسال إشارة إلى المُجدول لمنع قراءة التعليمات من مراحل أعلى في خط الأنابيب، والقراءة بدلًا من ذلك من قائمة انتظار إعادة التشغيل. بدلًا من انتظار اكتمال التعليمات التي تسببت في إعادة التشغيل في البداية، تدور التعليمات المُعاد تشغيلها في خط أنابيب التنفيذ حتى تنجح عملية الوصول إلى الذاكرة. [ 1 ] : 3
تحتفظ المعالجات اللاحقة بسجل للعمليات الدقيقة التي لم تُنفذ بعد في مخزن مؤقت لإعادة الترتيب ، وتستخدم لوحة نتائج التعليمات البرمجية الدقيقة لتتبع التبعيات بينها [ 7 ] . وباستخدام هياكل التتبع هذه، يمكن للعمليات الدقيقة تجنب إعادة جدولتها مبكرًا جدًا.
المفاضلات
عندما يتعين إعادة تنفيذ التعليمات، يجب إعادة تنفيذها مرة أخرى، مما يستهلك طاقة ويولد حرارة. في حالة معالج بنتيوم 4، قد تشغل التعليمات المعاد تنفيذها ضعف عدد خانات التنفيذ التي تشغلها التعليمات الأخرى. كما أن إعادة تنفيذ التعليمات تستهلك موارد معالج أكثر بشكل عام، مما يقلل من عدد التعليمات الأخرى التي يمكن تنفيذها بشكل تخميني. في المعالجات التي تدعم تعدد الخيوط المتزامن (مثل تقنية Hyper-Threading من إنتل )، لا يمكن استخدام الموارد التي تشغلها التعليمات المعاد تنفيذها من قبل الخيوط الشقيقة التي تشترك في النواة المادية.
انظر أيضاً
مراجع
- ١ ٢ ٣ ٤ ٥ ٦ كارتونوف، فيكتور؛ يوري، ماليتش؛ كيروتشينكو، يان؛ ليفشينكو، فاديم (٢٠٠٥-٠٦-٠٦). "إعادة التشغيل: ميزات غير معروفة لنواة NetBurst" . مختبرات X-bit. مؤرشف من الأصل في ٢٠١٤-٠٤-٠٨ . تم الاسترجاع في ٢٠١٤-٠٤-٠٧ .
- ↑ بيتر كوردس (17 مايو 2019). "حول ثغرات RIDL و"إعادة تشغيل" عمليات التحميل" . ستاك أوفرفلو . تم الاطلاع عليه في 14 فبراير 2026 .
- ↑ بيتر كوردس (24 أغسطس 2017). "فهم تأثير lfence على حلقة ذات سلسلتي تبعية طويلتين، لأطوال متزايدة" . Stack Overflow . تم الاسترجاع في 14 فبراير 2026. المصطلحات: لا تدخل نتيجة الضرب إلى ROB .
بل تمر عبر شبكة التوجيه إلى أي عمليات أخرى تقرأها، ثم تدخل إلى PRF.
- ↑ بيتر كوردس (23 أغسطس 2018). "فهم تأثير lfence على حلقة ذات سلسلتي تبعية طويلتين، لأطوال متزايدة" . Stack Overflow . تم الاسترجاع في 14 فبراير 2026.
يمكن لـ RS إعادة تشغيل uops في بعض الحالات، على سبيل المثال [...] إذا تم إرسالها تحسبًا لوصول بيانات التحميل، ولكنها في الواقع لم تصل.
- ↑ بيتر كوردس (2021-06-03). "تعليق على "هل يتم إلغاء تخصيص عمليات التحميل من نظام الإمداد عند إرسالها أو إكمالها أو في وقت آخر؟"" . Stack Overflow . تم الاسترجاع في 14 فبراير 2026. يقوم
RS بإرسال التعليمات في الدورة عندما تكون نتيجة التحميل على ناقل إعادة التوجيه الجانبي، إذا تم تحميل البيانات في ذاكرة التخزين المؤقت L2 (بعد أن فشلت بالفعل في L1d). إذا لم تصل البيانات حينها، فسيتعين إعادة تشغيل هذه العملية لاحقًا، عندما يكتمل التحميل في النهاية."
- ↑ دريبر، أولريش (21 نوفمبر 2007). ما يجب أن يعرفه كل مبرمج عن الذاكرة (ملف PDF) (تقرير فني). شركة ريد هات . تم الاطلاع عليه في 14 فبراير 2026 .
- ↑ براءة الاختراع الأمريكية رقم 11829767 ، تران، ثانغ مينه، "لوحة تسجيل لمعالج دقيق مزود بعداد زمني لإرسال التعليمات بشكل ثابت"، نُشرت في 28 نوفمبر 2023، وصدرت في 28 نوفمبر 2023، ومُسجلة باسم شركة سيمبلكس مايكرو.
- المعالجات الدقيقة X86
