عندما يكون ASID في ملحقات جدول الصفحة AMD لم تعد صالحة؟

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

سؤال

يحدد IA-32 الحالات المختلفة التي قد يؤدي إليها وحدة المعالجة المركزية إلى إبطال TLB بأكملها. بدءا من الملحقات ASID التي تم إصدارها في معالجات Opteron Rev-F (برشلونة؟) هناك حالات يتم فيها إبطال إدخالات TLB فقط لبعض ASID.

السؤال هو، هل تتوقف العيش نفسه عن كونك صالحا؟ هل يجب على HyperVisor التحقق من أن ASID صالح قبل استخدامه؟

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

المحلول

أنا فكر في الجواب هو "ليس مباشرة" - النظر في برمجة نظام AMD تخصيص, ، الحقل ASID في كتلة التحكم VM هو ببساطة (ما يصل إلى) معرف 32 بت الذي يحدده HyperVisor إلى قيمة فريدة لكل مثيل VM، ويستخدم كعلامة إضافية في بحث TLB.

نظرا لعدم وجود تحكم مباشر على محتويات TLB على X86، لا يمكنك التحكم في الإدخالات في نهاية المطاف في TLB - إذا قرر المعالج إضافة إدخال إلى TLB، فسيتم وضع علامة الإدخال مع ASID الحالي، والتي من قبل سيكون التعريف صالح عند إضافته.

يوصف هذا بطريقة دوار إلى حد ما في القسم 15.15.1 من برمجة النظام المذكورة سابقا المواصفات:

في التطبيقات التي لا توفر وسيلة لتسخين جميع الترجمات لبرنامج ASID واحد محدد، قد يقوم البرامج بتفريغ إدخالات TLB الضيف بفعالية من خلال تخصيص ASID جديدا للضيف وعدم إعادة استخدام ASID القديم حتى يتم مسح TLB بأكملها على الأقل بمجرد.

هذا يعني أن المعالج ليس لديه مفهوم ASIDs صالح أو غير صالح - إنه مجرد رقم يجب أن تتطابق فيه قيمته الحالية مع إدخالات TLB ASID لضرب TLB. وبالتالي، إذا لم يدخل HyperVisor بشكل صحيح باسم ASID قبل أن يعيد ذلك، فستحصل على ضربات TLB التي لا معنى لها.

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