سؤال

هل سجلات SSE مشتركة أو مكررة بين المعالجات المنطقية (الخيوط المفرطة)؟ هل يمكنني توقع نفس النوع من التسريع من التوازي لبرنامج SSE الثقيل كما هو الحال بالنسبة للبرنامج العادي (تدعي Intel 30 ٪ للمعالجات ذات الخيوط المفرطة)؟

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

المحلول

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

فيما يتعلق بالإسراع - سيعتمد على مزيج التعليمات والجدولة. تذكر أن وحدة المعالجة المركزية HT لا تحتوي على أي موارد تنفيذ إضافية (ALUS ، وحدات التحميل/المتجر ، إلخ) ، ويرجع تحسين الأداء إلى استخدام أفضل لتلك الموارد ، لأن الكود النموذجي ، وخاصة على المعالج الحديث ، ينفق كمية معقولة من الوقت المحجوب في انتظار أحمال الذاكرة والمتاجر لإكمال قبل التنفيذ يمكن الاستمرار. يسمح HT بهذه الأحمال والمتاجر بأن تكون متشابكة بحيث يتدفق خيط واحد على القراءة ، ويمكن تبديل الآخر والبدء في استخدام موارد التنفيذ التي كانت تجلس في السابق.

أظن أن نوع الزيادة في الأداء التي سترىها مع MultiTreading A SSE يعتمد على نسبة OPS للذاكرة إلى OPS الحسابية. على سبيل المثال ، إذا قام برنامج SSE الخاص بك بتحميل 4 سجلات SSE من الذاكرة ، فإن 10،000 عملية SSE عليها ، ثم يكتب سجلات الأربعة ، فمن غير المحتمل أن ترى الكثير من الميزة من HT قادرة على التداخل على الذاكرة لأنها سيتم إنفاق 99 ٪ من وقت تشغيل برامجك في SIMD alus وليس عند الوصول إلى الذاكرة.

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

نصائح أخرى

يتم تكرارها منطقيا - كل مؤشر ترابط يحصل على حالته الخاصة. جسديا ، قد تتم مشاركتها - يعتمد على تنفيذ فرط التنفيذ الخاص بك.

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