لوحة النتائج

تُعدّ لوحة النتائج طريقة مركزية، استُخدمت لأول مرة في حاسوب CDC 6600 ، لجدولة التعليمات ديناميكيًا بحيث يمكن تنفيذها خارج الترتيب عندما لا توجد تعارضات ويكون الجهاز متاحًا. [ 1 ]

في لوحة النتائج، تُسجَّل تبعيات البيانات لكل تعليمة، وتُتتبَّع، وتُراقَب بدقة في جميع الأوقات. لا تُحرَّر التعليمات إلا عندما تُحدِّد لوحة النتائج عدم وجود تعارضات مع التعليمات الصادرة سابقًا ("قيد التنفيذ"). إذا تعثَّرت تعليمة ما لعدم أمان إصدارها (أو لعدم كفاية الموارد)، تراقب لوحة النتائج تدفق التعليمات قيد التنفيذ حتى تُحَلّ جميع التبعيات قبل إصدار التعليمة المعثَّرة. باختصار: تستمر عمليات القراءة في حال عدم وجود مخاطر على الكتابة، وتستمر عمليات الكتابة في حال عدم وجود مخاطر على القراءة.

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

مراحل

يتم فك تشفير التعليمات بالترتيب وتمر بالمراحل الأربع التالية.

  1. المشكلة : يتحقق النظام من السجلات التي ستُقرأ وتُكتب بواسطة هذه التعليمة، ويكتشف حالات التعارض بين الكتابة بعد القراءة (WAR) والقراءة بعد الكتابة (RAW) والكتابة بعد الكتابة (WAW). تُسجل مخاطر RAW وWAR باستخدام مصفوفة التبعية (المُنشأة من دوائر SR NOR في تصميم 6600 الأصلي) نظرًا للحاجة إليها في المراحل اللاحقة. في الوقت نفسه، يُسجل مدخل في مصفوفة ثانية، تُسجل ترتيب التعليمات كرسم بياني موجه غير دوري . لتجنب تبعيات الإخراج (WAW)، تُعلق التعليمة حتى تكتمل التعليمات التي تنوي الكتابة إلى نفس السجل. كما تُعلق التعليمة أيضًا عندما تكون الوحدات الوظيفية المطلوبة مشغولة. لا تُصدر أي تعليمة إلا إذا كانت قابلة للتتبع بالكامل من البداية إلى النهاية.
  2. قراءة المعاملات : بعد إصدار التعليمات وتخصيصها بشكل صحيح لوحدة الأجهزة المطلوبة (المسماة وحدة حسابية في كتاب ثورنتون)، تنتظر الوحدة حتى تصبح جميع المعاملات متاحة. ولا تتم القراءة إلا بعد إزالة تبعيات الكتابة (RAW) من جميع الوحدات الأخرى. ولتجنب التنازع على منفذ ملف السجل ، يختار مُحدد الأولوية وحدة حسابية واحدة (في حالة خلو عدة وحدات من المخاطر).
  3. التنفيذ : عندما يتم جلب جميع المعاملات، تبدأ وحدة الحساب بتنفيذها. وبعد أن تصبح النتيجة جاهزة، يتم إخطار لوحة النتائج.
  4. كتابة النتيجة : في هذه المرحلة، تكون النتيجة جاهزة ولكن لم تُكتب بعد في سجل الوجهة. لا يمكن إتمام عملية الكتابة حتى تتخلص الوحدة من جميع مخاطر الكتابة التلقائية. تعتمد التأخيرات الإضافية هنا على توفر منافذ ملفات السجلات: في جهاز 6600، استُخدم مُحدد أولوية لاختيار نتيجة واحدة لكل منفذ كتابة. بمجرد الكتابة، تُعلّم الوحدة بأنها غير مشغولة، وتُحذف جميع المخاطر والحالات. تجدر الإشارة إلى أنه فقط في لوحات النتائج المتقدمة (المعززة، الدقيقة) المزودة بخاصية "الظل"، سيتم منع (تأخير) مرحلة كتابة النتيجة. لم يكن جهاز 6600 الأصلي مزودًا بهذه الخاصية.

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

بنية البيانات

وللتحكم في تنفيذ التعليمات، تحتفظ لوحة النتائج بثلاثة جداول حالة:

  • حالة التعليمات : تشير إلى المرحلة التي تمر بها كل تعليمة يتم تنفيذها من بين المراحل الأربع.
  • حالة الوحدة الوظيفية : تشير إلى حالة كل وحدة وظيفية. تحتوي كل وحدة وظيفية على 9 حقول في الجدول:
    • مشغول: يشير إلى ما إذا كانت الوحدة قيد الاستخدام أم لا
    • Op: العملية التي يتم تنفيذها في الوحدة (مثل MUL أو DIV أو MOD)
    • F i : سجل الوجهة
    • F j ، F k : أرقام سجلات المصدر
    • Q j و Q k : وحدات وظيفية ستنتج سجلات المصدر F j و F k
    • R j ,R k : علامات تشير إلى متى تكون F j , F k جاهزة للقراءة ولم يتم قراءتها بعد.
  • حالة السجل : تشير إلى وحدة الوظائف التي ستكتب النتائج في كل سجل.

خوارزمية 6600 الأصلية

فيما يلي وصف تفصيلي للخوارزمية الخاصة بالتحكم في لوحة النتائج، كما هو موضح في براءة الاختراع الأصلية:

دالة issue( op , dst , src1 , src2 ) انتظر حتى (!Busy[FU] AND !Result[ dst ]); // يمكن أن تكون FU أي وحدة وظيفية قادرة على تنفيذ العملية op مشغول[FU] ← نعم؛ Op[FU] ← op ; F i [FU] ← dst ; F j [FU] ← src1 ; F k [FU] ← src2 ; Q j [FU] ← النتيجة[ src1 ]; Q k [FU] ← النتيجة[ src2 ]; R j [FU] ← Q j [FU] == 0; R k [FU] ← Q k [FU] == 0; النتيجة[ الوجهة ] ← FU؛
دالة قراءة المعاملات ( FU ) انتظر حتى (R j [ FU ] AND R k [ FU ]); R j [ FU ] ← لا؛ R k [ FU ] ← لا؛
دالة التنفيذ ( FU ) // نفّذ ما يلزم من مهام FU
دالة write_back( FU ) انتظر حتى (∀f {(F j [f]≠F i [ FU ] OR R j [f]=No) AND (F k [f]≠F i [ FU ] OR R k [f]=No)}) لكل f، قم بما يلي: إذا كان Q j [f]= FU فإن R j [f] ← نعم؛ إذا كانت Q k [f]= FU فإن R k [f] ← نعم؛ Result[F i [ FU ]] ← 0; // 0 تعني عدم توليد FU لنتيجة السجل RegFile[Fi [ FU ] ] ← القيمة المحسوبة ؛ مشغول [ FU ] ← لا؛

ملاحظات

كتاب ثورنتون يسبق مصطلحات الحوسبة الحديثة.

لم يحدث التوقف إلا في مرحلة إصدار المشكلة، عند اكتشاف تعارضات من الدرجة الأولى. بعض التقنيات الأخرى، مثل خوارزمية توماسولو، تحل تبعيات WAW أيضًا عن طريق إعادة تسمية السجلات . من المرجح أن جهاز CDC 6600 الأصلي لم يكن مزودًا بخاصية تتبع مخاطر WAW لأن مصمميه كانوا مضطرين لتسليم المنتج، ثم انتقلوا إلى جهاز 7600: كان التوقف هو الخيار الأنسب. لا يوجد سبب تقني يمنع إضافة إعادة تسمية السجلات إلى لوحات النتائج.

أجرى لوك لايتون تحليلًا للخوارزميتين، وحدد عملية تحويل تُظهر التكافؤ بين خوارزمية توماسولو وخوارزمية لوحة نتائج 6600. [ 5 ] في الواقع، تفتقر الخوارزمية الأصلية إلى آلية حل مخاطر الكتابة التلقائية (WAW): إذ يتوقف جهاز 6600 عند أول ظهور لمخاطر الكتابة. [ 6 ]

انظر أيضاً

مراجع

  1. ثورنتون، جيمس إي. (1965). "التشغيل المتوازي في بيانات التحكم 6600". وقائع مؤتمر الحاسوب المشترك لخريف 27-29 أكتوبر 1964، الجزء الثاني: أنظمة الحاسوب فائقة السرعة . AFIPS '64. سان فرانسيسكو، كاليفورنيا: ACM. الصفحات 33-40 . doi : 10.1145/1464039.1464045 . 
  2. ثورنتون (1970 ، ص 125) 
  3. ثورنتون (1970 ، ص 126) 
  4. ثورنتون 1970 ، ص 127 
  5. تحويل توماسولو إلى لوحات النتائج
  6. ثورنتون، جيمس (1970). تصميم الحاسوب: بيانات التحكم 6600 (ملف PDF) . ص 126. ISBN  9780673059536.
  • جلينفورد مايرز ، "تسجيل النتائج على شريحة معالج دقيق"، براءة اختراع الولايات المتحدة رقم 4891753