بروتوكول MESI

بروتوكول MESI هو بروتوكول تماسك ذاكرة التخزين المؤقت قائم على الإبطال ، وهو من أكثر البروتوكولات شيوعًا التي تدعم ذاكرة التخزين المؤقت للكتابة المؤجلة . يُعرف أيضًا باسم بروتوكول إلينوي نسبةً إلى جامعة إلينوي في أوربانا-شامبين لتطويره . [ 1 ] يمكن لذاكرة التخزين المؤقت للكتابة المؤجلة توفير نطاق ترددي كبير يُهدر عادةً في ذاكرة التخزين المؤقت للكتابة المباشرة . توجد دائمًا حالة "غير مُعدّلة" في ذاكرة التخزين المؤقت للكتابة المؤجلة، مما يشير إلى أن البيانات الموجودة في ذاكرة التخزين المؤقت تختلف عن تلك الموجودة في الذاكرة الرئيسية. يتطلب بروتوكول إلينوي نقل البيانات من ذاكرة تخزين مؤقت إلى أخرى في حالة عدم العثور على البيانات المطلوبة إذا كانت الكتلة موجودة في ذاكرة تخزين مؤقت أخرى. يقلل هذا البروتوكول عدد عمليات نقل البيانات إلى الذاكرة الرئيسية مقارنةً ببروتوكول MSI ، مما يُحسّن الأداء بشكل ملحوظ. [ 2 ]

الولايات

تمثل الأحرف في الاختصار MESI أربع حالات حصرية يمكن تمييز سطر ذاكرة التخزين المؤقت بها (مشفرة باستخدام بتتين إضافيتين ):

معدل (م)
يوجد سطر التخزين المؤقت فقط في ذاكرة التخزين المؤقت الحالية، وهو غير مُعدّل (حالة M) عن قيمته في الذاكرة الرئيسية . يجب على ذاكرة التخزين المؤقت كتابة البيانات مرة أخرى إلى الذاكرة الرئيسية في وقت لاحق، قبل السماح بأي قراءة أخرى لحالة الذاكرة الرئيسية (التي لم تعد صالحة). تُغيّر عملية الكتابة حالة السطر إلى حالة مشتركة (S).
حصري (E)
يوجد سطر التخزين المؤقت فقط في ذاكرة التخزين المؤقت الحالية، ولكنه نظيف - فهو مطابق للذاكرة الرئيسية. يمكن تغييره إلى حالة "مشترك" في أي وقت، استجابةً لطلب قراءة. أو يمكن تغييره إلى حالة "مُعدَّل" عند الكتابة إليه.
مشترك (S)
يشير هذا إلى أن سطر التخزين المؤقت هذا قد يكون مخزنًا في ذاكرات تخزين مؤقت أخرى للجهاز وهو سليم - أي أنه يطابق الذاكرة الرئيسية. يمكن حذف السطر (تغيير حالته إلى "غير صالح") في أي وقت.
غير صالح (I)
يشير هذا إلى أن سطر التخزين المؤقت هذا غير صالح (غير مستخدم).

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

 م  هـ  S  أنا 
 م علامة X حمراءشمالعلامة X حمراءشمالعلامة X حمراءشمالعلامة صح خضراءY
 هـ علامة X حمراءشمالعلامة X حمراءشمالعلامة X حمراءشمالعلامة صح خضراءY
 S علامة X حمراءشمالعلامة X حمراءشمالعلامة صح خضراءYعلامة صح خضراءY
 أنا علامة صح خضراءYعلامة صح خضراءYعلامة صح خضراءYعلامة صح خضراءY

عندما يتم وضع علامة M (معدل) أو E (حصري) على الكتلة، يتم وضع علامة I (غير صالح) على نسخ الكتلة الموجودة في ذاكرات التخزين المؤقت الأخرى.

عملية

الشكل 1.1: مخطط حالة بروتوكول MESI. الأحمر: معاملة بدأها ناقل البيانات. الأسود: معاملات بدأها المعالج. [ 3 ]

يتم تعريف بروتوكول MESI بواسطة آلة ذات حالات محدودة تنتقل من حالة إلى أخرى بناءً على محفزين.

المحفز الأول هو طلب القراءة والكتابة الخاص بالمعالج. على سبيل المثال: يحتوي المعالج P1 على كتلة X في ذاكرته المؤقتة، وهناك طلب من المعالج لقراءة أو كتابة بيانات من تلك الكتلة.

يتم إرسال المحفز الثاني عبر ناقل البيانات الذي يربط المعالجات. تحديدًا، تأتي "طلبات جانب الناقل" من معالجات أخرى لا تحتوي على كتلة التخزين المؤقت أو البيانات المحدثة في ذاكرتها المؤقتة. تتم مراقبة طلبات الناقل باستخدام برنامج Snoopers [ 4 الذي يراقب جميع عمليات الناقل.

فيما يلي الأنواع المختلفة لطلبات المعالج وطلبات جانب ناقل البيانات:

تتضمن طلبات المعالج إلى ذاكرة التخزين المؤقت العمليات التالية:

  1. PrRd: يطلب المعالج قراءة كتلة ذاكرة التخزين المؤقت.
  2. PrWr: يطلب المعالج كتابة كتلة ذاكرة التخزين المؤقت

الطلبات المقدمة من جانب الحافلة هي كالتالي:

  1. BusRd: طلب مُراقب يشير إلى وجود طلب قراءة لكتلة ذاكرة تخزين مؤقتة طلبها معالج آخر
  2. BusRdX: طلب تم التجسس عليه يشير إلى وجود طلب كتابة إلى كتلة ذاكرة التخزين المؤقت تم طلبه بواسطة معالج آخر لا يمتلك الكتلة بالفعل.
  3. BusUpgr: طلب تم التجسس عليه يشير إلى وجود طلب كتابة إلى كتلة ذاكرة التخزين المؤقت تم طلبه بواسطة معالج آخر لديه بالفعل كتلة ذاكرة التخزين المؤقت هذه موجودة في ذاكرة التخزين المؤقت الخاصة به .
  4. عملية التفريغ: طلب تم التجسس عليه يشير إلى أن كتلة ذاكرة التخزين المؤقت بأكملها قد تمت كتابتها مرة أخرى إلى الذاكرة الرئيسية بواسطة معالج آخر.
  5. FlushOpt: طلب تم التجسس عليه يشير إلى أنه تم نشر كتلة ذاكرة تخزين مؤقت كاملة على الناقل من أجل تزويدها لمعالج آخر (عمليات نقل من ذاكرة تخزين مؤقت إلى ذاكرة تخزين مؤقت).

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

عملية التجسس : في نظام التجسس، تراقب جميع ذاكرات التخزين المؤقت على ناقل البيانات جميع العمليات التي تتم عليه. تحتوي كل ذاكرة تخزين مؤقت على نسخة من حالة مشاركة كل كتلة من الذاكرة الفعلية المخزنة لديها. تتغير حالة الكتلة وفقًا لمخطط حالة البروتوكول المستخدم. (انظر الصورة أعلاه لمخطط حالة MESI). يوجد على كلا جانبي ناقل البيانات أجهزة تجسس.

  1. متجسس باتجاه جانب المعالج/الذاكرة المؤقتة.
  2. تتم وظيفة التجسس على جانب الذاكرة بواسطة وحدة التحكم في الذاكرة .

توضيح:

تحتوي كل وحدة تخزين مؤقت على آلة حالة محدودة خاصة بها مكونة من 4 حالات (انظر الشكل 1.1). يوضح الجدولان 1.1 و1.2 انتقالات الحالة والاستجابات عند حالة معينة بالنسبة للمدخلات المختلفة.

الجدول 1.1: انتقالات الحالة والاستجابة لعمليات المعالج المختلفة
الحالة الأوليةعمليةإجابة
غير صالح (I)PrRd
  • إصدار BusRd إلى الحافلة
  • تقوم ذاكرات التخزين المؤقت الأخرى بفحص BusRd والتحقق مما إذا كانت لديها نسخة صالحة، ثم تُبلغ ذاكرة التخزين المؤقت المُرسِلة.
  • الانتقال إلى الحالة (S) المشتركة ، إذا كانت ذاكرة التخزين المؤقت الأخرى تحتوي على نسخة صالحة.
  • الانتقال إلى الحالة (هـ) حصري ، إذا لم يكن هناك أي حالة (يجب التأكد من أن جميع الآخرين قد أبلغوا).
  • إذا كانت هناك نسخ في ذاكرات التخزين المؤقت الأخرى، فإن إحداها ترسل القيمة، وإلا يتم جلبها من الذاكرة الرئيسية.
بروور
  • قم بإصدار إشارة BusRdX على الناقل
  • تم تعديل حالة الانتقال إلى (M) في ذاكرة التخزين المؤقت للمُرسِل.
  • إذا كانت هناك نسخ من البيانات في ذاكرات التخزين المؤقت الأخرى، فإنها ترسل القيمة، وإلا فإنها تسترجعها من الذاكرة الرئيسية.
  • إذا كانت هناك نسخ من ذاكرة التخزين المؤقت الأخرى، فإنها ترى إشارة BusRdX وتقوم بإبطال نسخها.
  • تقوم كتلة الكتابة في ذاكرة التخزين المؤقت بتعديل القيمة.
حصري (E)PrRd
  • لم يتم إنشاء أي معاملات للحافلات
  • الوضع يبقى على حاله.
  • تُعتبر عملية القراءة إلى الكتلة ناجحة في ذاكرة التخزين المؤقت.
بروور
  • لم يتم إنشاء أي معاملة حافلة
  • انتقال الحالة من حصري إلى (م) معدل
  • الكتابة إلى الكتلة تُعتبر نجاحاً في ذاكرة التخزين المؤقت
مشترك(ات)PrRd
  • لم يتم إنشاء أي معاملات للحافلات
  • الوضع يبقى على حاله.
  • تُعتبر عملية القراءة إلى الكتلة بمثابة نجاح في ذاكرة التخزين المؤقت.
بروور
  • يُصدر إشارة BusUpgr على الناقل.
  • الانتقال إلى الحالة (م) المعدلة .
  • ترى ذاكرات التخزين المؤقت الأخرى BusUpgr وتضع علامة على نسخها من الكتلة على أنها (I) غير صالحة.
معدل (M)PrRd
  • لم يتم إنشاء أي معاملات للحافلات
  • الوضع يبقى على حاله.
  • القراءة إلى الكتلة تُعتبر نجاحاً في ذاكرة التخزين المؤقت
بروور
  • لم يتم إنشاء أي معاملات للحافلات
  • الوضع يبقى على حاله.
  • الكتابة إلى الكتلة تؤدي إلى الوصول إلى ذاكرة التخزين المؤقت.
الجدول 1.2: تحولات الحالة والاستجابة لعمليات الحافلات المختلفة
الحالة الأوليةعمليةإجابة
غير صالح (I)طريق الحافلات
  • لم يطرأ أي تغيير على الحالة. تم تجاهل الإشارة.
BusRdX/BusUpgr
  • لم يطرأ أي تغيير على الحالة. تم تجاهل الإشارة
حصري (E)طريق الحافلات
  • الانتقال إلى الوضع المشترك (لأنه يعني حدوث عملية قراءة في ذاكرة تخزين مؤقتة أخرى).
  • ضع FlushOpt على ناقل البيانات مع محتويات الكتلة.
BusRdX
  • الانتقال إلى حالة غير صالحة .
  • ضع FlushOpt على Bus، جنبًا إلى جنب مع البيانات من الكتلة التي تم إبطالها الآن.
مشترك(ات)طريق الحافلات
  • لم يطرأ أي تغيير على الحالة (قامت ذاكرة التخزين المؤقت الأخرى بقراءة هذه الكتلة، لذا لا تزال مشتركة).
  • قد يتم وضع FlushOpt على ناقل البيانات مع محتويات الكتلة (خيار تصميم، والذي يقوم به ذاكرة التخزين المؤقت ذات الحالة المشتركة).
BusRdX/BusUpgr
  • الانتقال إلى حالة غير صالحة (تصبح ذاكرة التخزين المؤقت التي أرسلت BuxRdX/BusUpgr معدلة)
  • قد يتم وضع FlushOpt على ناقل البيانات مع محتويات الكتلة (خيار تصميمي، أي ذاكرة تخزين مؤقتة ذات حالة مشتركة تقوم بذلك)
معدل (M)طريق الحافلات
  • الانتقال إلى (S)Shared.
  • قم بتوصيل FlushOpt بالناقل مع البيانات. يتم استلامها بواسطة مرسل BusRd ووحدة التحكم بالذاكرة، والتي تقوم بدورها بالكتابة إلى الذاكرة الرئيسية.
BusRdX
  • الانتقال إلى (I) غير صالح .
  • قم بتوصيل FlushOpt بالناقل مع البيانات. يتم استلامها بواسطة مرسل BusRdx ووحدة التحكم بالذاكرة، والتي تقوم بدورها بالكتابة إلى الذاكرة الرئيسية.

لا يُسمح بالكتابة بحرية إلا إذا كان سطر التخزين المؤقت في حالة "مُعدَّل" أو "حصري". أما إذا كان في حالة "مشترك"، فيجب إبطال جميع النسخ المخزنة مؤقتًا الأخرى أولًا. ويتم ذلك عادةً من خلال عملية بث تُعرف باسم " طلب الملكية" (RFO) .

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

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

تكون حالتا "مُعدَّل" و"حصري" دقيقتين دائمًا، أي أنهما تُطابقان وضع ملكية سطر التخزين المؤقت الفعلي في النظام. أما حالة "مشترك" فقد تكون غير دقيقة؛ فإذا تخلّى مخزن مؤقت آخر عن سطر مشترك، فقد يصبح هذا المخزن المؤقت المالك الوحيد لهذا السطر، ولكنه لن ينتقل إلى حالة "حصري". لا تُرسل المخازن المؤقتة الأخرى إشعارات عند تخلّيها عن أسطر التخزين المؤقت، ولا يمكن لهذا المخزن المؤقت استخدام هذه الإشعارات دون الاحتفاظ بسجل لعدد النسخ المشتركة.

بهذا المعنى، تُعدّ حالة الحصرية تحسينًا انتهازيًا: إذا أراد المعالج تعديل سطر ذاكرة التخزين المؤقت في الحالة S، فإنه يحتاج إلى عملية نقل بيانات عبر ناقل البيانات لإبطال جميع النسخ الأخرى المخزنة مؤقتًا. أما الحالة E فتُمكّن من تعديل سطر ذاكرة التخزين المؤقت دون الحاجة إلى عملية نقل بيانات عبر ناقل البيانات.

توضيح لعمليات بروتوكول MESI

على سبيل المثال، لنفترض أن لدينا سلسلة من عمليات القراءة/الكتابة. جميع المراجع تشير إلى نفس الموقع، ويشير الرقم إلى المعالج الذي أصدر المرجع.

التسلسل هو  : R1، W1، R3، W3، R1، R3، R2.

في البداية، يُفترض أن جميع الذاكرات المؤقتة فارغة.

الجدول 1.3 مثال على كيفية عمل MESI جميع العمليات على نفس كتلة ذاكرة التخزين المؤقت (مثال: "R3" تعني قراءة الكتلة بواسطة المعالج 3)
طلب محليP1P2P3تم إنشاؤه

طلب حافلة

مورد البيانات
0بدءًا-----
1R1هـ--طريق الحافلاتميم
2W1م----
3R3S-Sطريق الحافلاتمخبأ P1
4W3أنا-مترقية الحافلة-
5R1S-Sطريق الحافلاتذاكرة التخزين المؤقت لـ P3
6R3S-S--
7R2SSSطريق الحافلاتذاكرة التخزين المؤقت لـ P1/P3

ملاحظة: يُشير مصطلح "التجسس" المذكور أدناه إلى بروتوكول يُستخدم للحفاظ على اتساق ذاكرة التخزين المؤقت في بيئات المعالجة المتعددة المتناظرة. تقوم جميع ذاكرات التخزين المؤقت على ناقل البيانات بمراقبة (التجسس) ناقل البيانات لمعرفة ما إذا كانت لديها نسخة من كتلة البيانات المطلوبة على ناقل البيانات.

  • الخطوة 1: بما أن ذاكرة التخزين المؤقت فارغة في البداية، فإن الذاكرة الرئيسية تزود P1 بالكتلة وتصبح حالة حصرية.
  • الخطوة الثانية: بما أن الكتلة موجودة بالفعل في الذاكرة المؤقتة وفي حالة حصرية، فإنها تُعدّلها مباشرةً دون أي تعليمات ناقل. الكتلة الآن في حالة مُعدّلة.
  • الخطوة 3: في هذه الخطوة، يتم إرسال إشارة BusRd إلى ناقل البيانات، ويستشعرها جهاز التجسس على P1. ثم يقوم بتفريغ البيانات وتغيير حالته إلى "مشترك". كما تُغيّر الكتلة على P3 حالتها إلى "مشترك" لأنها استقبلت بيانات من ذاكرة تخزين مؤقت أخرى. وتُكتب البيانات أيضًا مرة أخرى إلى الذاكرة الرئيسية.
  • الخطوة الرابعة: هنا يتم إرسال تحديث BusUpgr على ناقل البيانات، ويستشعر جهاز المراقبة على P1 ذلك، فيُبطل الكتلة لأنها ستُعدَّل بواسطة ذاكرة تخزين مؤقت أخرى. ثم يُغيِّر P3 حالة كتلته إلى "مُعدَّلة".
  • الخطوة 5: بما أن الحالة الحالية غير صالحة، فسيتم إرسال إشارة BusRd إلى ناقل البيانات. سيكتشف جهاز المراقبة في P3 ذلك، وبالتالي سيقوم بتفريغ البيانات. ستصبح حالة الكتلتين على P1 وP3 مشتركة الآن. لاحظ أنه في هذه المرحلة سيتم تحديث الذاكرة الرئيسية أيضًا بالبيانات المُعدّلة سابقًا.
  • الخطوة 6: هناك تطابق في ذاكرة التخزين المؤقت وهو في الحالة المشتركة، لذلك لا يتم إجراء أي طلب ناقل هنا.
  • الخطوة 7: حدث خطأ في ذاكرة التخزين المؤقت على المنفذ P2، وتم إرسال طلب BusRd. يستشعر برنامج المراقبة على المنفذين P1 وP3 هذا الخطأ، وسيحاول كلاهما مسح البيانات. المنفذ الذي يصل إلى ناقل البيانات أولاً هو الذي سينفذ العملية.

اقرأ من أجل التملك

عملية "القراءة من أجل الملكية" (RFO) هي عملية في بروتوكولات اتساق الذاكرة المخبئية تجمع بين عملية قراءة وبث إبطال. تُصدر هذه العملية من قِبل معالج يحاول الكتابة في سطر ذاكرة مخبئية موجود في حالة "مشترك" (S) أو "غير صالح" (I) لبروتوكول MESI. تتسبب هذه العملية في قيام جميع ذاكرات التخزين المؤقت الأخرى بتعيين حالة هذا السطر إلى "غير صالح" (I). تُعتبر عملية "القراءة من أجل الملكية" عملية قراءة بقصد الكتابة إلى عنوان الذاكرة هذا . لذلك، تُعد هذه العملية حصرية. فهي تجلب البيانات إلى ذاكرة التخزين المؤقت وتُبطل جميع ذاكرات التخزين المؤقت الأخرى للمعالج التي تحتوي على سطر الذاكرة هذا. يُشار إلى هذه العملية بـ "BusRdX" في الجداول أعلاه.

عوائق الذاكرة

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

مخزن مؤقت

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

من النتائج المباشرة لوجود مخزن البيانات المؤقت (store buffer) أنه عندما يقوم المعالج المركزي (CPU) بتنفيذ عملية كتابة، لا تُكتب هذه العملية مباشرةً في ذاكرة التخزين المؤقت (ache). لذلك، عندما يحتاج المعالج المركزي إلى قراءة سطر من ذاكرة التخزين المؤقت، فإنه يفحص أولاً مخزن البيانات المؤقت الخاص به بحثًا عن وجود نفس السطر، إذ من المحتمل أن يكون نفس المعالج المركزي قد كتب نفس السطر سابقًا ولكنه لم يُكتب بعد في ذاكرة التخزين المؤقت (لا تزال عملية الكتابة السابقة تنتظر في مخزن البيانات المؤقت). تجدر الإشارة إلى أنه بينما يستطيع المعالج المركزي قراءة عمليات الكتابة السابقة الخاصة به في مخزن البيانات المؤقت، لا تستطيع المعالجات المركزية الأخرى رؤية هذه العمليات حتى يتم تفريغها إلى ذاكرة التخزين المؤقت - لا يستطيع المعالج المركزي فحص مخزن البيانات المؤقت للمعالجات المركزية الأخرى.

إبطال قوائم الانتظار

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

ونتيجةً لذلك، تُعدّ حواجز الذاكرة ضرورية. يقوم حاجز التخزين بتفريغ مخزن التخزين المؤقت، مما يضمن تطبيق جميع عمليات الكتابة على ذاكرة التخزين المؤقت لوحدة المعالجة المركزية. بينما يقوم حاجز القراءة بتفريغ قائمة الإبطال، مما يضمن أن تصبح جميع عمليات الكتابة التي تقوم بها وحدات المعالجة المركزية الأخرى مرئية لوحدة المعالجة المركزية التي تقوم بالتفريغ. علاوة على ذلك، لا تقوم وحدات إدارة الذاكرة بفحص مخزن التخزين المؤقت، مما يتسبب في مشاكل مماثلة. ويظهر هذا التأثير حتى في المعالجات أحادية الخيوط. [ 6 ]

مزايا تقنية MESI مقارنةً بتقنية MSI

يُعدّ وجود حالة "حصرية" إضافية في بروتوكول MESI أبرز ما يُميّزه عن بروتوكول MSI . أُضيفت هذه الحالة لما لها من مزايا عديدة. فعندما يحتاج معالج إلى قراءة كتلة بيانات غير موجودة لدى أي معالج آخر ، ثم الكتابة إليها، تتم عمليتا نقل بيانات عبر ناقل البيانات في حالة MSI. أولًا، يُرسل طلب BusRd لقراءة الكتلة، ثم يُرسل طلب BusUpgr قبل الكتابة إليها. في هذه الحالة، يكون طلب BusUpgr غير مُجدٍ، إذ لا توجد نفس الكتلة في أي من ذاكرات التخزين المؤقت الأخرى، ولكن لا توجد طريقة لمعرفة ذلك. لذا، يتغلب بروتوكول MESI على هذا القيد بإضافة حالة "حصرية"، مما يُغني عن طلب نقل بيانات عبر ناقل البيانات. يُحدث هذا فرقًا كبيرًا عند تشغيل تطبيق تسلسلي، حيث يعمل معالج واحد فقط على جزء من البيانات، ما يجعل جميع عمليات الوصول حصرية. في هذه الحالة، يكون أداء MSI أسوأ بكثير بسبب رسائل ناقل البيانات الإضافية. حتى في حالة التطبيقات عالية التوازي ذات الحد الأدنى من مشاركة البيانات، يظل MESI أسرع بكثير. إضافة الحالة الحصرية لا تأتي بتكلفة إضافية حيث أن 3 حالات و 4 حالات يمكن تمثيلها باستخدام 2 بت.

عيوب نظام التأمين الصحي متعدد القطاعات

في حال قيام ذاكرات التخزين المؤقت المختلفة بإجراء عمليات قراءة وكتابة متواصلة على كتلة بيانات معينة، يجب تفريغ البيانات إلى ناقل البيانات في كل مرة. وبالتالي، تقوم الذاكرة الرئيسية بسحب هذه البيانات مع كل عملية تفريغ، وتبقى في حالة نظيفة. لكن هذا ليس شرطًا، وإنما مجرد عبء إضافي ناتج عن استخدام بروتوكول MESI. وقد تم التغلب على هذا التحدي بواسطة بروتوكول MOESI . [ 7 ]

في حالة الحالة المشتركة (S)، قد يستجيب عدة متجسسين باستخدام FlushOpt بنفس البيانات (انظر المثال أعلاه). تعالج الحالة F في MESIF هذا التكرار.

انظر أيضاً

مراجع

  1. باباماركوس، إم إس؛ باتيل، جيه إتش (1984). "حل تماسك منخفض التكلفة للمعالجات المتعددة ذات ذاكرة التخزين المؤقت الخاصة" (ملف PDF) . وقائع الندوة الدولية السنوية الحادية عشرة حول هندسة الحاسوب - ISCA '84 . ص  348. doi : 10.1145/800015.808204 . ISBN 0818605383S2CID 195848872. تم الاسترجاع في 19 مارس 2013 . 
  2. غوميز-لونا، ج.؛ هيروزو، إ.؛ بينافيدس، ج.إ. "محاكي تماسك ذاكرة التخزين المؤقت MESI لأغراض تعليمية". مجلة Clei الإلكترونية . 12 (1، ورقة بحثية 5، أبريل 2009). CiteSeerX 10.1.1.590.6891 . 
  3. كولر، ديفيد (1997). هندسة الحاسوب المتوازي . دار مورغان كوفمان للنشر. الصفحات. الشكل 5-15: مخطط انتقال الحالة لبروتوكول إلينوي MESI. صفحة 286. 
  4. بيجلو، ناراسيمان، سليمان. "تقييم بروتوكولات تماسك ذاكرة التخزين المؤقت القائمة على سنوبي" (ملف PDF) . قسم الهندسة الكهربائية وهندسة الحاسبات، جامعة تكساس في أوستن.{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط )
  5. هاندي، جيم (1998). كتاب ذاكرة التخزين المؤقت . مورغان كوفمان. ISBN 9780123229809.
  6. تشين، جي.؛ كوهين، إي.؛ كوفاليف، إم. (2014). "تقليل حجم مخزن البيانات المؤقت باستخدام وحدات إدارة الذاكرة". البرمجيات الموثقة: النظريات والأدوات والتجارب . سلسلة محاضرات في علوم الحاسوب. المجلد 8471. ص 117. doi : 10.1007/978-3-319-12154-3_8 . ISBN   978-3-319-12153-6.
  7. "نظام الذاكرة (تماسك الذاكرة والبروتوكول)" (ملف PDF) . تقنية AMD64. سبتمبر 2006.