بروتوكول MESI
بروتوكول MESI هو بروتوكول تماسك ذاكرة التخزين المؤقت قائم على الإبطال ، وهو من أكثر البروتوكولات شيوعًا التي تدعم ذاكرة التخزين المؤقت للكتابة المؤجلة . يُعرف أيضًا باسم بروتوكول إلينوي نسبةً إلى جامعة إلينوي في أوربانا-شامبين لتطويره . [ 1 ] يمكن لذاكرة التخزين المؤقت للكتابة المؤجلة توفير نطاق ترددي كبير يُهدر عادةً في ذاكرة التخزين المؤقت للكتابة المباشرة . توجد دائمًا حالة "غير مُعدّلة" في ذاكرة التخزين المؤقت للكتابة المؤجلة، مما يشير إلى أن البيانات الموجودة في ذاكرة التخزين المؤقت تختلف عن تلك الموجودة في الذاكرة الرئيسية. يتطلب بروتوكول إلينوي نقل البيانات من ذاكرة تخزين مؤقت إلى أخرى في حالة عدم العثور على البيانات المطلوبة إذا كانت الكتلة موجودة في ذاكرة تخزين مؤقت أخرى. يقلل هذا البروتوكول عدد عمليات نقل البيانات إلى الذاكرة الرئيسية مقارنةً ببروتوكول MSI ، مما يُحسّن الأداء بشكل ملحوظ. [ 2 ]
الولايات
تمثل الأحرف في الاختصار MESI أربع حالات حصرية يمكن تمييز سطر ذاكرة التخزين المؤقت بها (مشفرة باستخدام بتتين إضافيتين ):
- معدل (م)
- يوجد سطر التخزين المؤقت فقط في ذاكرة التخزين المؤقت الحالية، وهو غير مُعدّل (حالة M) عن قيمته في الذاكرة الرئيسية . يجب على ذاكرة التخزين المؤقت كتابة البيانات مرة أخرى إلى الذاكرة الرئيسية في وقت لاحق، قبل السماح بأي قراءة أخرى لحالة الذاكرة الرئيسية (التي لم تعد صالحة). تُغيّر عملية الكتابة حالة السطر إلى حالة مشتركة (S).
- حصري (E)
- يوجد سطر التخزين المؤقت فقط في ذاكرة التخزين المؤقت الحالية، ولكنه نظيف - فهو مطابق للذاكرة الرئيسية. يمكن تغييره إلى حالة "مشترك" في أي وقت، استجابةً لطلب قراءة. أو يمكن تغييره إلى حالة "مُعدَّل" عند الكتابة إليه.
- مشترك (S)
- يشير هذا إلى أن سطر التخزين المؤقت هذا قد يكون مخزنًا في ذاكرات تخزين مؤقت أخرى للجهاز وهو سليم - أي أنه يطابق الذاكرة الرئيسية. يمكن حذف السطر (تغيير حالته إلى "غير صالح") في أي وقت.
- غير صالح (I)
- يشير هذا إلى أن سطر التخزين المؤقت هذا غير صالح (غير مستخدم).
بالنسبة لأي زوج معين من ذاكرات التخزين المؤقت، تكون الحالات المسموح بها لسطر ذاكرة التخزين المؤقت المعين كما يلي:
| م | هـ | S | أنا | |
|---|---|---|---|---|
| م | ||||
| هـ | ||||
| S | ||||
| أنا |
عندما يتم وضع علامة M (معدل) أو E (حصري) على الكتلة، يتم وضع علامة I (غير صالح) على نسخ الكتلة الموجودة في ذاكرات التخزين المؤقت الأخرى.
عملية
يتم تعريف بروتوكول MESI بواسطة آلة ذات حالات محدودة تنتقل من حالة إلى أخرى بناءً على محفزين.
المحفز الأول هو طلب القراءة والكتابة الخاص بالمعالج. على سبيل المثال: يحتوي المعالج P1 على كتلة X في ذاكرته المؤقتة، وهناك طلب من المعالج لقراءة أو كتابة بيانات من تلك الكتلة.
يتم إرسال المحفز الثاني عبر ناقل البيانات الذي يربط المعالجات. تحديدًا، تأتي "طلبات جانب الناقل" من معالجات أخرى لا تحتوي على كتلة التخزين المؤقت أو البيانات المحدثة في ذاكرتها المؤقتة. تتم مراقبة طلبات الناقل باستخدام برنامج Snoopers [ 4 ]، الذي يراقب جميع عمليات الناقل.
فيما يلي الأنواع المختلفة لطلبات المعالج وطلبات جانب ناقل البيانات:
تتضمن طلبات المعالج إلى ذاكرة التخزين المؤقت العمليات التالية:
- PrRd: يطلب المعالج قراءة كتلة ذاكرة التخزين المؤقت.
- PrWr: يطلب المعالج كتابة كتلة ذاكرة التخزين المؤقت
الطلبات المقدمة من جانب الحافلة هي كالتالي:
- BusRd: طلب مُراقب يشير إلى وجود طلب قراءة لكتلة ذاكرة تخزين مؤقتة طلبها معالج آخر
- BusRdX: طلب تم التجسس عليه يشير إلى وجود طلب كتابة إلى كتلة ذاكرة التخزين المؤقت تم طلبه بواسطة معالج آخر لا يمتلك الكتلة بالفعل.
- BusUpgr: طلب تم التجسس عليه يشير إلى وجود طلب كتابة إلى كتلة ذاكرة التخزين المؤقت تم طلبه بواسطة معالج آخر لديه بالفعل كتلة ذاكرة التخزين المؤقت هذه موجودة في ذاكرة التخزين المؤقت الخاصة به .
- عملية التفريغ: طلب تم التجسس عليه يشير إلى أن كتلة ذاكرة التخزين المؤقت بأكملها قد تمت كتابتها مرة أخرى إلى الذاكرة الرئيسية بواسطة معالج آخر.
- FlushOpt: طلب تم التجسس عليه يشير إلى أنه تم نشر كتلة ذاكرة تخزين مؤقت كاملة على الناقل من أجل تزويدها لمعالج آخر (عمليات نقل من ذاكرة تخزين مؤقت إلى ذاكرة تخزين مؤقت).
( يمكن لعمليات النقل من ذاكرة التخزين المؤقت إلى ذاكرة التخزين المؤقت هذه أن تقلل من زمن استجابة خطأ القراءة إذا كان زمن استجابة جلب الكتلة من الذاكرة الرئيسية أكبر من زمن استجابة عمليات النقل من ذاكرة التخزين المؤقت إلى ذاكرة التخزين المؤقت، وهو ما يحدث عادةً في الأنظمة القائمة على ناقل البيانات. )
عملية التجسس : في نظام التجسس، تراقب جميع ذاكرات التخزين المؤقت على ناقل البيانات جميع العمليات التي تتم عليه. تحتوي كل ذاكرة تخزين مؤقت على نسخة من حالة مشاركة كل كتلة من الذاكرة الفعلية المخزنة لديها. تتغير حالة الكتلة وفقًا لمخطط حالة البروتوكول المستخدم. (انظر الصورة أعلاه لمخطط حالة MESI). يوجد على كلا جانبي ناقل البيانات أجهزة تجسس.
- متجسس باتجاه جانب المعالج/الذاكرة المؤقتة.
- تتم وظيفة التجسس على جانب الذاكرة بواسطة وحدة التحكم في الذاكرة .
توضيح:
تحتوي كل وحدة تخزين مؤقت على آلة حالة محدودة خاصة بها مكونة من 4 حالات (انظر الشكل 1.1). يوضح الجدولان 1.1 و1.2 انتقالات الحالة والاستجابات عند حالة معينة بالنسبة للمدخلات المختلفة.
| الحالة الأولية | عملية | إجابة |
|---|---|---|
| غير صالح (I) | PrRd |
|
| بروور |
| |
| حصري (E) | PrRd |
|
| بروور |
| |
| مشترك(ات) | PrRd |
|
| بروور |
| |
| معدل (M) | PrRd |
|
| بروور |
|
| الحالة الأولية | عملية | إجابة |
|---|---|---|
| غير صالح (I) | طريق الحافلات |
|
| BusRdX/BusUpgr |
| |
| حصري (E) | طريق الحافلات |
|
| BusRdX |
| |
| مشترك(ات) | طريق الحافلات |
|
| BusRdX/BusUpgr |
| |
| معدل (M) | طريق الحافلات |
|
| BusRdX |
|
لا يُسمح بالكتابة بحرية إلا إذا كان سطر التخزين المؤقت في حالة "مُعدَّل" أو "حصري". أما إذا كان في حالة "مشترك"، فيجب إبطال جميع النسخ المخزنة مؤقتًا الأخرى أولًا. ويتم ذلك عادةً من خلال عملية بث تُعرف باسم " طلب الملكية" (RFO) .
يجب على ذاكرة التخزين المؤقت التي تحتفظ بسطر في حالة "مُعدَّل" أن تراقب (تعترض) جميع محاولات القراءة (من جميع ذاكرات التخزين المؤقت الأخرى في النظام) لموقع الذاكرة الرئيسية المقابل، وأن تُدرج البيانات الموجودة لديها. يمكن تحقيق ذلك عن طريق إجبار عملية القراءة على التراجع (أي إعادة المحاولة لاحقًا)، ثم كتابة البيانات إلى الذاكرة الرئيسية وتغيير سطر ذاكرة التخزين المؤقت إلى حالة "مشترك". كما يمكن تحقيقه أيضًا عن طريق إرسال البيانات من ذاكرة التخزين المؤقت "المُعدَّلة" إلى ذاكرة التخزين المؤقت التي تُجري عملية القراءة. تجدر الإشارة إلى أن المراقبة مطلوبة فقط في حالة عدم نجاح القراءة (يضمن البروتوكول عدم وجود ذاكرة التخزين المؤقت "المُعدَّلة" إذا تمكنت أي ذاكرة تخزين مؤقت أخرى من إجراء قراءة ناجحة).
يجب على ذاكرة التخزين المؤقت التي تحتفظ بسطر في حالة المشاركة أن تستمع إلى عمليات البث الخاصة بالإبطال أو طلب الملكية من ذاكرات التخزين المؤقت الأخرى، وأن تتخلص من السطر (عن طريق نقله إلى حالة غير صالحة) عند وجود تطابق.
تكون حالتا "مُعدَّل" و"حصري" دقيقتين دائمًا، أي أنهما تُطابقان وضع ملكية سطر التخزين المؤقت الفعلي في النظام. أما حالة "مشترك" فقد تكون غير دقيقة؛ فإذا تخلّى مخزن مؤقت آخر عن سطر مشترك، فقد يصبح هذا المخزن المؤقت المالك الوحيد لهذا السطر، ولكنه لن ينتقل إلى حالة "حصري". لا تُرسل المخازن المؤقتة الأخرى إشعارات عند تخلّيها عن أسطر التخزين المؤقت، ولا يمكن لهذا المخزن المؤقت استخدام هذه الإشعارات دون الاحتفاظ بسجل لعدد النسخ المشتركة.
بهذا المعنى، تُعدّ حالة الحصرية تحسينًا انتهازيًا: إذا أراد المعالج تعديل سطر ذاكرة التخزين المؤقت في الحالة S، فإنه يحتاج إلى عملية نقل بيانات عبر ناقل البيانات لإبطال جميع النسخ الأخرى المخزنة مؤقتًا. أما الحالة E فتُمكّن من تعديل سطر ذاكرة التخزين المؤقت دون الحاجة إلى عملية نقل بيانات عبر ناقل البيانات.
توضيح لعمليات بروتوكول MESI
على سبيل المثال، لنفترض أن لدينا سلسلة من عمليات القراءة/الكتابة. جميع المراجع تشير إلى نفس الموقع، ويشير الرقم إلى المعالج الذي أصدر المرجع.
التسلسل هو : R1، W1، R3، W3، R1، R3، R2.
في البداية، يُفترض أن جميع الذاكرات المؤقتة فارغة.
| طلب محلي | P1 | P2 | P3 | تم إنشاؤه طلب حافلة | مورد البيانات | |
|---|---|---|---|---|---|---|
| 0 | بدءًا | - | - | - | - | - |
| 1 | R1 | هـ | - | - | طريق الحافلات | ميم |
| 2 | W1 | م | - | - | - | - |
| 3 | R3 | S | - | S | طريق الحافلات | مخبأ P1 |
| 4 | W3 | أنا | - | م | ترقية الحافلة | - |
| 5 | R1 | S | - | S | طريق الحافلات | ذاكرة التخزين المؤقت لـ P3 |
| 6 | R3 | S | - | S | - | - |
| 7 | R2 | S | S | S | طريق الحافلات | ذاكرة التخزين المؤقت لـ 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 هذا التكرار.
انظر أيضاً
- بروتوكول التماسك
- بروتوكول MSI ، وهو البروتوكول الأساسي الذي اشتُق منه بروتوكول MESI.
- الكتابة مرة واحدة (تماسك ذاكرة التخزين المؤقت) ، وهو شكل مبكر من بروتوكول MESI.
- بروتوكول MOSI
- بروتوكول MOESI
- بروتوكول MESIF
- بروتوكول MERSI
- بروتوكول التنين
- بروتوكول اليراعة
مراجع
- ↑ باباماركوس، إم إس؛ باتيل، جيه إتش (1984). "حل تماسك منخفض التكلفة للمعالجات المتعددة ذات ذاكرة التخزين المؤقت الخاصة" (ملف PDF) . وقائع الندوة الدولية السنوية الحادية عشرة حول هندسة الحاسوب - ISCA '84 . ص 348. doi : 10.1145/800015.808204 . ISBN 0818605383S2CID 195848872. تم الاسترجاع في 19 مارس 2013 .
- ↑ غوميز-لونا، ج.؛ هيروزو، إ.؛ بينافيدس، ج.إ. "محاكي تماسك ذاكرة التخزين المؤقت MESI لأغراض تعليمية". مجلة Clei الإلكترونية . 12 (1، ورقة بحثية 5، أبريل 2009). CiteSeerX 10.1.1.590.6891 .
- ↑ كولر، ديفيد (1997). هندسة الحاسوب المتوازي . دار مورغان كوفمان للنشر. الصفحات. الشكل 5-15: مخطط انتقال الحالة لبروتوكول إلينوي MESI. صفحة 286.
- ↑ بيجلو، ناراسيمان، سليمان. "تقييم بروتوكولات تماسك ذاكرة التخزين المؤقت القائمة على سنوبي" (ملف PDF) . قسم الهندسة الكهربائية وهندسة الحاسبات، جامعة تكساس في أوستن.
{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - ↑ هاندي، جيم (1998). كتاب ذاكرة التخزين المؤقت . مورغان كوفمان. ISBN 9780123229809.
- ↑ تشين، جي.؛ كوهين، إي.؛ كوفاليف، إم. (2014). "تقليل حجم مخزن البيانات المؤقت باستخدام وحدات إدارة الذاكرة". البرمجيات الموثقة: النظريات والأدوات والتجارب . سلسلة محاضرات في علوم الحاسوب. المجلد 8471. ص 117. doi : 10.1007/978-3-319-12154-3_8 . ISBN 978-3-319-12153-6.
- ↑ "نظام الذاكرة (تماسك الذاكرة والبروتوكول)" (ملف PDF) . تقنية AMD64. سبتمبر 2006.
روابط خارجية
- تماسك الذاكرة المؤقتة
