كيف يمكنك تعطيل ذاكرة التخزين المؤقت للمعالج على معالج PowerPC؟

StackOverflow https://stackoverflow.com/questions/73312

  •  09-06-2019
  •  | 
  •  

سؤال

في نظامنا المضمن (باستخدام معالج PowerPC)، نريد تعطيل ذاكرة التخزين المؤقت للمعالج.ما هي الخطوات التي يتعين علينا اتخاذها؟

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

هل كانت مفيدة؟

المحلول

لقد تأخرت نوعًا ما في الإجابة على السؤال، كما مر وقت طويل منذ أن قمت بتنفيذ جميع التعليمات البرمجية الأولية للمعالج ذي المستوى المنخفض على PPCs، ولكن يبدو أنني أتذكر أن ذاكرة التخزين المؤقت ووحدة MMU مقترنتان بإحكام (كان لا بد من تمكين أحدهما لـ تمكين الآخر) وأنا يفكر في جداول صفحات MMU، يمكنك تحديد السمة القابلة للتخزين المؤقت.

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

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

نصائح أخرى

من الدليل المرجعي E600:
يحتوي سجل HID0 للأغراض الخاصة على عدة بتات تعمل على إبطال وتعطيل وقفل التعليمات وذاكرة التخزين المؤقت للبيانات.

يجب عليك استخدام HID0[DCE] = 0 لتعطيل ذاكرة التخزين المؤقت للبيانات.
يجب عليك استخدام HID0[ICE] = 0 لتعطيل ذاكرة التخزين المؤقت للتعليمات.

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

ربما لا ترغب في تعطيل ذاكرة التخزين المؤقت بشكل عام، بل تريد فقط تعطيلها لنطاق عنوان معين؟

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

جهاز PowerPC الوحيد الذي قمت بذلك عليه هو PowerPC 440EP (من IBM، ثم AMCC)، لذلك لا أعرف ما إذا كانت جميع أجهزة PowerPC تعمل بنفس الطريقة.

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

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

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

لتحقيق سرعة تنفيذ ثابتة، فكر في أحد الأساليب التالية:

1) قفل بعض أو كل ذاكرة التخزين المؤقت.توفر جميع شرائح PowerPC الحالية من Freescale وIBM وAMCC هذه الميزة.

2) إذا كانت شريحة Freescale مزودة بذاكرة تخزين مؤقت من المستوى الثاني، ففكر في تعيين جزء من ذاكرة التخزين المؤقت هذه كذاكرة على الشريحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top