اقرأ في هذا المقال
- ما هي مشكلة تماسك ذاكرة التخزين المؤقت
- بروتوكولات تماسك ذاكرة التخزين المؤقت Cache Coherence Protocols
يضمن تماسك ذاكرة التخزين المؤقت تماسك البيانات بين كتل الذاكرة المختلفة في النظام، أي ذاكرة التخزين المؤقت المحلية لكل معالج والذاكرة المشتركة التي تشاركها المعالجات، إنّه يؤكد أنّ كل نسخة من كتلة البيانات بين ذاكرات التخزين المؤقت للمعالجات لها قيمة متسقة ومتماسكة، في هذا المقال، سنناقش مشكلة ترابط ذاكرة التخزين المؤقت والبروتوكول الذي يحل مشكلة تماسك ذاكرة التخزين المؤقت.
ما هي مشكلة تماسك ذاكرة التخزين المؤقت
في بيئة متعددة المعالجات، تشترك جميع المعالجات في النظام في الذاكرة الرئيسية عبر ناقل، الآن، سيؤدي الاحتفاظ بذاكرة تخزين مؤقت مشتركة لجميع المعالجات إلى تحسين حجم ذاكرة التخزين المؤقت وبالتالي إبطاء أداء النظام، للحصول على أداء أفضل، يقوم كل معالج بتنفيذ ذاكرة التخزين المؤقت الخاصة به، قد تشارك المعالجات نفس كتلة البيانات عن طريق الاحتفاظ بنسخة من كتلة البيانات هذه في ذاكرة التخزين المؤقت الخاصة بها.
لنفترض التالي: المعالج (P1 وP3 وPn) معالجات لديها نسخة من كتلة البيانات المشتركة (X) من الذاكرة الرئيسية في ذاكرتها المؤقتة، في هذه الحالة، تقوم المعالجات (P1) بتعديل نسخة كتلة الذاكرة المشتركة (X) الموجودة في ذاكرة التخزين المؤقت الخاصة بها، قد يؤدي ذلك إلى عدم تناسق البيانات.
نظرًا لأنّ المعالج (P1) سيحتوي على النسخة المعدلة من كتلة الذاكرة المشتركة، أي (X1)، ولكن، ستحتوي الذاكرة الرئيسية وذاكرة التخزين المؤقت للمعالج الآخر على النسخة القديمة من كتلة الذاكرة المشتركة، وهذه المشكلة هي مشكلة “ترابط ذاكرة التخزين المؤقت” (cache coherence).
بروتوكولات تماسك ذاكرة التخزين المؤقت Cache Coherence Protocols
بروتوكول الكتابة Write-Through Protocol
في بروتوكول الكتابة، عندما يقوم المعالج بتعديل كتلة بيانات في ذاكرة التخزين المؤقت الخاصة به، فإنّه يقوم على الفور بتحديث الذاكرة الرئيسية بالنسخة الجديدة من نفس كتلة البيانات، لذا، الذاكرة الرئيسية هنا دائمًا بها بيانات متسقة، تحتوي بروتوكولات الكتابة على نسختين وهما:
- تحديث النسخ المتأثرة من البيانات المشتركة في ذاكرة التخزين المؤقت للمعالجات الأخرى.
- إبطال صلاحية النسخ المتأثرة من البيانات المشتركة في ذاكرة التخزين المؤقت للمعالجات الأخرى.
النوع الأول
دعونا نفهم النوع الأول حيث يتم تحديث النسخ المتأثرة من البيانات المشتركة في ذاكرات التخزين المؤقت الأخرى، عندما يقوم المعالج بتعديل كتلة بيانات في ذاكرة التخزين المؤقت الخاصة به ويقوم أيضًا بتحديث الذاكرة الرئيسية بالنسخة الجديدة من نفس كتلة البيانات، تحتوي المعالجات الأخرى في النظام أيضًا على نسخة من كتلة البيانات التي تمّ تعديلها وهي تحمل الآن قيمة غير صالحة.
لتحديث النسخ في ذاكرات التخزين المؤقت الأخرى، يقوم المعالج الذي يعدل كتلة البيانات ببث البيانات المعدلة لجميع المعالجات في النظام، عند استلام بيانات البث، يتحقق المعالج ممّا إذا كان يحتوي على نفس كتلة البيانات في ذاكرة التخزين المؤقت الخاصة به إن وجدت، ثمّ يعدل محتوى كتلة البيانات هذه وإلّا تجاهل البيانات التي يتم بثها.
النوع الثاني
الآن، دعونا نرى النوع الثاني حيث يتم إبطال النسخ المتأثرة في ذاكرة التخزين المؤقت للمعالجات الأخرى، هنا، عندما يقوم المعالج بتعديل أي كتلة بيانات في ذاكرة التخزين المؤقت الخاصة به، فإنّه يقوم أيضًا بتحديث الذاكرة الرئيسية بالنسخة المعدلة من نفس كتلة البيانات، ولكن، في هذه الحالة، يرسل المعالج الذي يعدل كتلة البيانات طلبات البث إلى معالجات أخرى في النظام لإبطال نسخ نفس كتلة البيانات في ذاكرتهم المؤقتة.
بروتوكول إعادة الكتابة Write-Back Protocol
يسمح هذا البروتوكول للمعالج بتعديل كتلة بيانات فقط في حالة اكتسابها للملكية، الآن كيف يعمل هذا البروتوكول؟
في البداية، تكون الذاكرة هي مالك كل كتلة البيانات وتحتفظ بهذه الملكية عندما يقرأ المعالج كتلة بيانات ويضع نسختها في ذاكرة التخزين المؤقت الخاصة به، عندما يريد المعالج تعديل كتلة بيانات في ذاكرة التخزين المؤقت الخاصة به، يجب عليه تأكيد أنّه المالك الحصري لكتلة البيانات هذه، لهذا، يجب أولاً إبطال نسخ كتلة البيانات هذه في ذاكرات التخزين المؤقت الأخرى عن طريق بث طلب مبطل لجميع المعالجات، بمجرد أن يصبح المالك الحصري، يمكنه تعديل كتلة البيانات.
إذا أراد أي معالج قراءة كتلة البيانات المعدلة هذه، فعليه إرسال الطلب إلى معالج المالك الحالي لكتلة البيانات هذه، يقوم المالك بإعادة توجيه البيانات إلى المعالج الطالب والذاكرة الرئيسية، تقوم الذاكرة الرئيسية بتحديث محتوى كتلة البيانات التي تمّ تعديلها وتستعيد ملكيتها مرة أخرى عبر كتلة البيانات، إذا تطلب أي معالج كتلة البيانات هذه، فسيتم خدمته بواسطة الذاكرة الرئيسية.
إذا رغب معالج آخر في النظام في تعديل / كتابة كتلة البيانات التي تمّ تعديلها، يرسل طلبًا إلى المالك الحالي، يرسل المالك الحالي البيانات والتحكم في الكتلة إلى المعالج الطالب، الآن، المعالج الطالب هو المالك، يعدل كتلة البيانات ويخدم أيضًا طلب المعالج الآخر لكتلة البيانات، هنا لا يتم تحديث كتلة البيانات المعدلة في الذاكرة الرئيسية، نظرًا لأنّ المالك هو الوحيد المخول بتعديل كتلة البيانات.
بروتوكول Snoopy Protocol
في بيئة متعددة المعالجات، يتم توصيل جميع المعالجات بوحدات الذاكرة عبر ناقل واحد، تحدث المعاملة بين المعالجات ووحدة الذاكرة، أي قراءة وكتابة وإبطال طلب كتلة البيانات عبر الناقل، إذا قمنا بتطبيق وحدة التحكم في ذاكرة التخزين المؤقت على ذاكرة التخزين المؤقت لكل معالج في النظام، فسوف تتطفل على جميع المعاملات عبر الناقل وتنفذ الإجراء المناسب، لذلك، يمكننا القول أنّ بروتوكول (Snoopy) هو حل الأجهزة لذاكرة التخزين المؤقت لمشكلة التماسك.
يتم استخدامه لبيئة المعالجات الصغيرة حيث يتم توصيل المعالجات الكبيرة ذات الذاكرة المشتركة عبر شبكة الترابط، ضع في اعتبارك سيناريو من إعادة الكتابة، إذا كان المعالج قد قام للتو بتعديل كتلة بيانات في ذاكرة التخزين المؤقت الخاصة به، وكان المالك الحالي للكتلة.
الآن، إذا كان المعالج (P1) يرغب في تعديل نفس كتلة البيانات التي تمّ تعديلها، يقوم (P1) ببث طلب الإبطال على الناقل ويصبح مالك كتلة البيانات هذه ويقوم بتعديل كتلة البيانات، تقوم المعالجات الأخرى التي لديها نسخة من نفس كتلة البيانات بالتطفل على الناقل وإبطال نسختهم من كتلة البيانات (I)، يقوم بتحديث الذاكرة باستخدام بروتوكول إعادة الكتابة.
بروتوكول ترابط ذاكرة التخزين المؤقت المستند إلى الدليل Directory-Based Cache Coherence Protocol
بروتوكول تماسك ذاكرة التخزين المؤقت المستند إلى الدليل هو حل الأجهزة لمشكلة التماسك في ذاكرة التخزين المؤقت، يتم تطبيقه على نظام كبير متعدد المعالجات حيث يتم توصيل الذاكرة المشتركة والمعالجات باستخدام شبكة الترابط، يتم تنفيذ الدلائل في كل وحدة ذاكرة من نظام المعالجات المتعددة، يحتفظ الدليل بسجل لجميع الإجراءات المتخذة لكل كتلة بيانات، نظرًا لتكلفتها وتعقيد بروتوكولات ترابط ذاكرة التخزين المؤقت المستندة إلى الدليل، يتم تنفيذها فقط على نظام المعالجات المتعددة الكبيرة.
بروتوكول MESI Protocol
(MESI) هو بروتوكول تماسك ذاكرة التخزين المؤقت يضمن اتساق البيانات على المعالجات المتعددة المتماثلة (SMP) (symmetric multiprocessor)، تحدد كلمة (MESI) الحالات الأربع لكتلة البيانات في ذاكرات التخزين المؤقت لمعالجات نظام المعالجة المتعددة.