عندما يتم مسح ذاكرة التخزين المؤقت وحدة المعالجة المركزية العودة إلى الذاكرة الرئيسية؟
إذا كنت قد بدأت للتو في معرفة كيفية عمل وحدات المعالجة المركزية متعددة العمليات ، والتخزين المؤقت ، وتماسك ذاكرة التخزين المؤقت ، وأعمال الذاكرة ، فقد يبدو الأمر مربكًا بعض الشيء في البداية. مع أخذ ذلك في الاعتبار ، فإن وظيفة SuperUser Q & A اليوم تحتوي على إجابات لسؤال أحد القراء الغريبين.
تأتي جلسة الأسئلة والأجوبة اليوم مقدمة من SuperUser-a subdivision of Stack Exchange ، وهي مجموعة مجتمعية مدفوعة من مواقع Q & A.
السؤال
يريد قارئ SuperUser CarmeloS معرفة متى يتم مسح ذاكرة التخزين المؤقت لوحدة المعالجة المركزية (CPU) مرة أخرى إلى الذاكرة الرئيسية:
إذا كان لدي وحدة معالجة مركزية تحتوي على نواة اثنين وكل نواة لها ذاكرة L1 مخبأة ، فهل من الممكن أن تقوم كل من Core1 و Core2 بتخزين نفس الجزء من الذاكرة في نفس الوقت؟ إذا كان ذلك ممكنًا ، فماذا ستكون قيمة الذاكرة الرئيسية إذا قام كل من Core1 و Core2 بتحرير قيمهما في ذاكرة التخزين المؤقت?
عندما يتم مسح ذاكرة التخزين المؤقت وحدة المعالجة المركزية مرة أخرى إلى الذاكرة الرئيسية?
الاجابة
المساهمين في SuperUser ديفيد شوارتز ، sleske ، و Kimberly W لديهم الجواب بالنسبة لنا. أولاً ، ديفيد شوارتز:
إذا كان لدي وحدة معالجة مركزية تحتوي على نواة اثنين وكل نواة لها ذاكرة L1 الخاصة بها ، فهل من الممكن أن يقوم كل من Core1 و Core2 بتخزين نفس الجزء من الذاكرة في نفس الوقت?
نعم ، سيكون الأداء الرهيب إذا لم يكن هذا هو الحال. جرب اثنين من مؤشرات الترابط التي تقوم بتشغيل نفس التعليمة البرمجية. تريد هذا الرمز في كل من ذاكرة التخزين المؤقت L1.
إذا كان ذلك ممكنًا ، فماذا ستكون قيمة الذاكرة الرئيسية إذا قام كل من Core1 و Core2 بتحرير قيمهما في ذاكرة التخزين المؤقت?
ستكون القيمة القديمة في الذاكرة الرئيسية ، والتي لن تكون مهمة حيث أن النواة لن تقرأها. قبل إخراج قيمة معدلة من ذاكرة التخزين المؤقت ، يجب كتابتها إلى الذاكرة. عادة ، يتم استخدام بعض البديل من بروتوكول MESI. في التطبيق التقليدي لـ MESI ، إذا تم تعديل قيمة في ذاكرة تخزين مؤقت واحدة ، فلا يمكن أن توجد على الإطلاق في أي ذاكرة تخزين أخرى على نفس المستوى.
تليها الإجابة من سليسكي:
نعم ، وجود ذاكرة التخزين المؤقت اثنين ذاكرة التخزين المؤقت نفس منطقة الذاكرة يمكن أن يحدث وهو بالفعل مشكلة تحدث كثير في التدريب العملي. هناك حلول متعددة ، على سبيل المثال:
- يمكن أن يتصل المخبأان للتأكد من أنهما لا يختلفان
- يمكنك الحصول على نوع من المشرف الذي يراقب كل ذاكرات التخزين المؤقت ويقوم بتحديثها وفقًا لذلك
- يقوم كل معالج بمراقبة مناطق الذاكرة التي قام بتخزينها مؤقتًا ، وعندما يكتشف الكتابة ، فإنه يرمي ذاكرة التخزين المؤقت (الآن غير صالحة)
تُسمى هذه المشكلة تماسك ذاكرة التخزين المؤقت ومقالة ويكيبيديا حول الموضوع لديها نظرة عامة جميلة على المشكلة والحلول الممكنة.
وجوابنا الأخير من Kimberly W:
للإجابة على السؤال في عنوان المنشور ، يعتمد ذلك على ما هو بروتوكول التخزين المؤقت. إذا كانت الكتابة مرة أخرى ، سيتم مسح ذاكرة التخزين المؤقت مرة أخرى إلى الذاكرة الرئيسية فقط عندما لا يكون لدى وحدة التحكم في ذاكرة التخزين المؤقت أي خيار سوى وضع كتلة ذاكرة تخزين مؤقت جديدة في مساحة مشغولة بالفعل. تتم إزالة الكتلة التي شغلها من قبل المساحة وكتبت قيمته إلى الذاكرة الرئيسية.
البروتوكول الآخر هو الكتابة من خلال. في هذه الحالة ، في أي وقت يتم كتابة كتلة ذاكرة التخزين المؤقت على المستوى ن, كتلة المقابلة على المستوى ن + 1 يتم تحديث. يشبه في المفهوم ملء نموذج بورق الكربون أسفله ؛ يتم نسخ أي شيء تكتبه في الأعلى على الورقة أدناه. هذا أبطأ لأنه من الواضح أنه يتضمن المزيد من عمليات الكتابة ، ولكن القيم بين المخبئ أكثر تناسقاً. في نظام إعادة الكتابة ، يكون أعلى ذاكرة التخزين المؤقت على مستوى أكبر قيمة محدثة لكتلة معينة من الذاكرة.
هل لديك شيء تضيفه إلى الشرح؟ الصوت قبالة في التعليقات. هل ترغب في قراءة المزيد من الإجابات من مستخدمي Stack Exchange الآخرين المحترفين بالتكنولوجيا؟ تحقق من موضوع المناقشة الكامل هنا.
Image Credit: Lemsipmatt (Flickr)