تحميل بحيرة الجليد AVX-512

صورة


هذه مقالة قصيرة حول دراسة سلوك AVX2 و AVX-512 فيما يتعلق بفك القفل المرخص لرقائق Intel Ice Lake الجديدة.



إنزال القفل 1 المرخص له تأثير غير معروف حيث تنخفض حدود التردد إلى ما دون الاسمية عند تنفيذ تعليمات SIMD معينة ، خاصة تعليمات أو تعليمات النقطة العائمة الثقيلة بعرض 512 بت.



يمكنك قراءة المزيد حول هذا النوع من إلغاء التأمين في إجابة StackOverflow هذه ، وقد أوضحنا بالفعل آليات المستوى المنخفض لمثل هذه التحولات ببعض التفاصيل . يمكنك أيضًا العثور على التعليماتكيفية الاستفادة من SIMD الواسعة (بيانات متعددة التعليمات فردية: نوع أو امتداد لهندسة مجموعة التعليمات ، على سبيل المثال ، Intel AVX أو ARM NEON ، القادرة على تنفيذ عمليات متطابقة متعددة على عناصر معبأة في سجل SIMD) مع وضع هذه المشكلة في الاعتبار 2 .



تمت كتابة المعلومات الموجودة على الروابط في سياق Skylake-SP (SKX ، بنية خادم Intel Skylake التي تتضمن Skylake-SP و Skylake-X و Skylake-W) ، والتي كانت الجيل الأول من الرقائق التي تدعم AVX-512.



ما هو الوضع مع Ice Lake - حيث تدعم أحدث الرقائق كلاً من تعليمات AVX-512 من SKX ومجموعة تعليمات AVX-512 الجديدة تمامًا ؟ هل سيتعين علينا إلقاء نظرة على هذه التعليمات الجديدة من بعيد ولن نتمكن من استخدامها أبدًا بسبب إيقاف التشغيل؟



اقرأ المقال لمعرفة ذلك ، أو انتقل إلى قسم الملخص.



AVX- توربو



سنستخدم الأداة المساعدة avx-turbo لقياس اعتماد التردد على عدد النوى ومجموعة التعليمات. تعمل هذه الأداة ببساطة: فهي تنفذ مجموعة معينة من التعليمات على عدد معين من النوى ، وتقيس التردد الذي تم الوصول إليه أثناء الاختبار.



على سبيل المثال ، المعيار avx256_fma_tالذي يقيس تكلفة التعليمات الثقيلة ذات 256 بت مع ارتفاع ILP (توازي مستوى التعليمات: مقدار التوازي عند مستوى التعليمات البينية لمعالج فائق النطاق) ينفذ تسلسل FMA التالي:



	vfmadd132pd ymm0,ymm10,ymm11
	vfmadd132pd ymm1,ymm10,ymm11
	vfmadd132pd ymm2,ymm10,ymm11
	vfmadd132pd ymm3,ymm10,ymm11
	vfmadd132pd ymm4,ymm10,ymm11
	vfmadd132pd ymm5,ymm10,ymm11
	vfmadd132pd ymm6,ymm10,ymm11
	vfmadd132pd ymm7,ymm10,ymm11
	vfmadd132pd ymm8,ymm10,ymm11
	vfmadd132pd ymm9,ymm10,ymm11
	; repeat 10x for a total of 100 FMAs


في المجموع ، نستخدم خمسة اختبارات لاختبار كل مجموعة من التعليمات الخفيفة والثقيلة 256 بت و 512 بت ، بالإضافة إلى الإرشادات العددية (تتصرف بطاقة SIMD ذات 128 بت بنفس سلوك الإرشادات العددية) عن طريق الكتابة في سطر الأوامر:



./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t


نتائج بحيرة الجليد



قمت بتشغيل avx-turbo كما هو موضح أعلاه على Ice Lake i5-1035G4 ، وهو معالج عميل Ice Lake متوسط ​​المدى يعمل بسرعة تصل إلى 3.7 جيجا هرتز. النتائج الكاملة مخفية في جوهرها ، لكني أقدم هنا أهم النتائج للترددات التي تم الحصول عليها (جميع القيم في GHz):



مجموعة التعليمات النوى النشطة
1 2 3 4
عددي / 128 بت 3.7 3.6 3.3 3.3
ضوء 256 بت 3.7 3.6 3.3 3.3
256 بت ثقيل 3.7 3.6 3.3 3.3
ضوء 512 بت 3.6 3.6 3.3 3.3
ثقيل 512 بت 3.6 3.6 3.3 3.3


كما هو متوقع ، يحدث الحد الأقصى من الانخفاض في التردد مع زيادة عدد النوى النشطة ، ولكن انظر إلى أسفل كل عمود لمعرفة التأثير على فئات التعليمات. لا يحدث أي إغلاق لأسفل تقريبًا على طول هذا المحور! مع وجود نواة نشطة واحدة فقط ، هناك انخفاض مع تعليمات واسعة ، وفقط بنسبة 100 ميجاهرتز: من 3700 ميجاهرتز إلى 3600 ميجاهرتز باستخدام أي تعليمات 512 بت.



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



أنواع التراخيص



هناك تغيير آخر هنا. تحتوي بنية SKX على ثلاثة تراخيص أو فئات من تعليمات إلغاء القفل: L0 و L1 و L2. هنا ، في برنامج ICL للعميل ، هناك نوعان فقط من 3 منهم ولا تتوافق تمامًا مع الفئات الثلاث في SKX.



تتوافق التراخيص في SKX مع عرض ووزن التعليمات على النحو التالي:



عرض رئتين ثقيل
عددي / 128 L0 L0
256 L0 L1
512 L1 L2


على وجه الخصوص ، لاحظ أن تعليمات 256 بت الثقيلة مرخصة بموجب نفس الترخيص مثل إرشادات 512 بت الخفيفة.



في ICLs العميل ، يكون المخطط كما يلي:



عرض رئتين ثقيل
عددي / 128 L0 L0
256 L0 L0
512 L1 L1


هنا تعليمات ثقيلة 256 بت وخفيفة 512 بت في فئات مختلفة! في الواقع ، لا يبدو أن مفهوم الضوء مقابل التعليمات الثقيلة ينطبق هنا: التصنيف يعتمد كليًا على العرض 4 .



وماذا في ذلك؟



إذن ماذا عن هذا؟



على أقل تقدير ، هذا يعني أننا بحاجة إلى تغيير نموذجنا العقلي لتكلفة تعليمات AVX-512 بالنسبة للترددات. بدلاً من القول بأنها "تسبب عادةً عملية إلغاء قفل كبيرة" ، يمكن القول أن شريحة Ice Lake تحتوي على AVX-512 تتسبب في القليل من عمليات إلغاء القفل المرخصة أو عدم وجودها على الإطلاق ، وأفترض أن هذا ينطبق أيضًا على شرائح عملاء Ice Lake الأخرى.



ومع ذلك ، فإن هذا التغيير في توقعاتنا به عيب مهم: إلغاء القفل المرخص ليس هو الوحيدمصدر downlocking. قد نواجه أيضًا قيودًا في الطاقة أو الحرارة أو التيار. بعض التكوينات قادرة فقط على تنفيذ تعليمات SIMD واسعة على جميع النوى لفترة قصيرة ثم تجاوز حدود طاقة التشغيل. في حالتي ، كان الكمبيوتر المحمول بقيمة 250 دولارًا الذي كنت أختبره سيئًا للغاية ، وبدلاً من قيود الطاقة ، واجهت حدًا لتبديد الحرارة (100 درجة مئوية) بعد ثوانٍ فقط من تشغيل التعليمات الثقيلة على جميع النوى.



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



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



النتيجة



هنا استنتاجاتي.



  • يوضح معالج Ice Lake i5-1035 إلغاء قفل 100 ميجاهرتز مع نواة نشطة واحدة عند تنفيذ تعليمات 512 بت.
  • في جميع الحالات الأخرى ، لا يوجد إلغاء تأمين.
  • تردد التوربو لتنفيذ تعليمات 512 بت على جميع النوى هو 3.3 جيجاهرتز ، وهو ما يمثل 89٪ من الحد الأقصى لتكرار تنفيذ العمليات العددية على نواة واحدة (3.7 جيجاهرتز) ، وبالتالي ، في حدود الطاقة وتبديد الحرارة ، تحتوي هذه الشريحة على تردد "ثابت" للغاية إدمان.
  • على عكس بنية SKX ، لا تستخدم شريحة Ice Lake التقسيم إلى

    تعليمات "خفيفة" و "ثقيلة" لتوسيع نطاق الترددات: يتم تنفيذ عمليات FMA بنفس طريقة العمليات الأخف.


وهذا يعني أنه لا داعي للخوف من إلغاء تأمين ICLs الخاصة بالعميل. سيخبرنا المستقبل فقط ما إذا كان هذا ينطبق أيضًا على ICL من جانب الخادم.



المناقشات والتواصل



يمكن مناقشة هذا المنشور على Hacker News .



إذا كانت لديك أسئلة أو تعليقات أخرى ، فيمكنك ترك تعليق على المنشور الأصلي . سأكون مهتمًا أيضًا بالنتائج على شرائح ICL الأخرى ، على سبيل المثال في إصدارات i3 و i7: أخبرني إذا كانت لديك ويمكننا الحصول على النتائج.






ملاحظات



  1. لقد سئمت بالفعل من تكرار إلغاء القفل المرخص باستمرار ، لذلك سأستخدم غالبًا مصطلح "down-locking" ، ولكن يجب أن يكون واضحًا أن هذه نسخة مرخصة منها ، وليست أنواعًا أخرى من تقييد التردد
  2. علما بأن دانيال كتب حول هذا بكثير أطول ، من مرة واحدة.

  3. : , - ( ) , , .
  4. , , ICL FMA : 512- . , 256- : - 2x256- FMA , , 1x512- FMA . , , 512- .
  5. , , , , , . , , , vzeroupper vzeroall.
  6. على سبيل المثال ، عادةً ما تكون إضافة عدد صحيح واحد بحجم 512 بت أقل استهلاكًا للطاقة من عمليتي 256 بت المطلوبتين لحساب نفس النتيجة ، لأن الحمل في التنفيذ ينمو بشكل غير خطي مع زيادة العرض (تشمل كل شيء تقريبًا باستثناء التنفيذ نفسه).



All Articles