تعليمات Ryzen FMA3 تعلق نظام التشغيل بإحكام



كما اتضح ، فإن تنفيذ بعض تعليمات FMA3 المحددة على معالج AMD Ryzen يؤدي إلى تعطل خطير في نظام التشغيل.

تعليمات مثل FMA3 (Fused-Multiply-Add) مدعومة من Intel (في Haswell) و AMD. هذه تعليمات مثل d = round(a × b + c) ، حيث يجب أن تكون d في نفس السجل مثل a أو b أو c . وبالمقارنة ، فإن تعليمات FMA4 مدعومة فقط من قبل AMD (في Buldozer والمعالجات اللاحقة). يمكن أن يكون هناك a و b و c و d في سجلات مختلفة.

تم اكتشاف خطأ في المعالج في Flops version2 ، وهي أداة بسيطة وغير معروفة لاختبار وحدات المعالجة المركزية. وتجدر الإشارة إلى أن مطور هذه الأداة المساعدة Alexander Mystical Yee (Alexander "Mystical" Yee) يضعها كأداة اختبار محددة حساسة للمعمارية الدقيقة للمعالجات. في معايير أخرى ، لم يظهر الخطأ أبدًا.

باستخدام الأداة المساعدة Flops version2 ، يتم تسليم ثنائيات محددة لجميع معماريات x64 الرئيسية (Core2 و Bulldozer و Sandy Bridge و Piledriver و Haswell و Skylake). ولكن في الوقت الحالي ، لا يوجد بين التجميعات الثنائية لنظام Windows ، ولا لنظام التشغيل Linux إصدار لاختبار Zen. لذلك ، الآن لاختبار Ryzen تستخدم ثنائيات من البنى الأخرى ، وهي أقرب Haswell. تم اكتشاف الخطأ المذكور أعلاه مع تعليمات FMA3 قبل أسبوعين من قبل مؤلف برنامج Flops ، عندما أجرى اختبارًا مع ثنائي الأسهم لـ Haswell على جهاز كمبيوتر بالتهيئة التالية:

  • Ryzen 7 1800X
  • Asus Prime B350M-A (BIOS 0502)
  • 4 x 8GB Corsair CMK32GX4M4A2400C14 @ 2133 ميغا هرتز
  • تحديث الذكرى السنوية لـ Windows 10

فجأة اكتشف أن النظام يتجمد عادة خلال العملية التالية:

Single-Precision - 128-bit FMA3 - Fused Multiply Add:

في بعض الأحيان يجتاز الاختبار هذه العملية بنجاح ، لكنه لا يزال معلقاً على بعض العمليات الأخرى في المستقبل.

يشرح المطور أن اختباره مفتوح المصدر ، وإذا كنت لا تثق في النتائج ، فيمكنك أخذ وتجميع الثنائي في Visual Studio بنفسك والتحقق مرة أخرى من النتائج.

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

كانت هناك بعض الاحتمالات بأن سبب الفشل قد لا يزال غير موجود في المعالج ، ولكن في شيء آخر. على سبيل المثال ، في اللوحة الأم المحددة ، في BIOS محدد ، في نظام تشغيل معين ... ماذا يمكن أن يكون؟

شارك المطور النتائج مع الزملاء حتى يتمكنوا من التحقق من إصدارات أخرى من Zen على أجهزة الكمبيوتر الخاصة بهم. تم تأكيد الأعطال للمعالجات الأخرى ، على اللوحات الأم المختلفة ، تحت إصدارات مختلفة من Windows وتحت Linux.

في الأيام الأولى بعد مكالمة Alex ، تم إطلاق الاختبارات من قبل خمسة مالكي معالجات Ryzen. ها هي النتائج:

فشل مؤكد:
  • 1800X + Asus Prime B350M-A (BIOS 0502)
  • 1700 + Asus Prime B350M-A (BIOS ؟؟؟)
  • 1700 + Asus Crosshair VI Hero
  • 1700 + Asus Crosshair VI Hero (BIOS 5803) (بنكي ذاكرة G.Skill + Kingston)
  • 1800X + Asus Crosshair VI Hero (Windows 7) - بمجرد اجتياز الاختبار ، فشل بشكل متكرر.

عملية مؤكدة خالية من المتاعب:
  • ليس بعد

قام المطور المعياري بفحص جميع متغيرات FMA (128 بت ، 256 بت ، دقة واحدة ، دقة مزدوجة للأرقام). في جميع الحالات ، يتجمد الكمبيوتر بإحكام.

تمت مضايقته بتفاصيل واحدة فقط: على الرغم من كتابة الاختبار بشكل صحيح ، لسبب ما لم يتناسب مع معايير أخرى ، مثل Prime95 و Y-cruncher ، على الرغم من أنهم يستخدمون أيضًا FMA في الاختبار.

لذا بقيت بعض الشكوك.

في النهاية ، في 16 مارس ، تم تلقي رسالة رسمية من ممثل AMD مفادها أنه سيتم إصلاح الخطأ في كود AGESA الجديد (AMD Generic Encapsulated Software Architecture) ، وهو بروتوكول يستخدم ، من بين أمور أخرى ، لتهيئة معالجات AMD. وبعبارة أخرى ، قام أخصائيو الشركة بفحص الخطأ وتأكيده. في وقت لاحق ، أكد ممثلو AMD الخطأ رسميًا في التعليقات لوسائل الإعلام .

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

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

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

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

كما ذكرنا سابقًا ، تعمل AMD على تحديث بروتوكول AGESA. بعد ذلك ، سيتم إصدار تصحيحات لجميع إصدارات BIOS في جميع اللوحات الأم.

Source: https://habr.com/ru/post/ar402551/


All Articles