هذه مقالة غير مراجعة.(أكتوبر 2022) |
في مجال الحوسبة، يعد تذفق اس آي ام دي المعززة (اس اس أي) (بالإنجليزية: Streaming SIMD Extensions (SSE)) مجموعة تعليمات نوع تعليمة واحدة وبيانات متعددة (اس آي ام دي) كإمتداد إلى بنية إكس 86, تم تصميمها بواسطة إنتل وتم عرضها في سنة 1999 مع سلسلة معالجاتها نوع بنتيوم 3, وذلك بعد فترة وجيزة من ظهور تقنية 3DNow!
من إي إم دي. تحتوي اس اس أي على 70 تعليمة جديدة (65 استذكار [1] باستخدام 70 ترميزًا), يعمل معظمها على بيانات النقطة العائمة ذات الدقة الواحدة. يمكن أن تؤدي تعليمات اس آي ام دي إلى زيادة الأداء بشكل كبير عند إجراء نفس العمليات بالضبط على كائنات ببيانات متعددة. التطبيقات النموذجية هي معالجة الإشارات الرقمية ومعالجة والرسومات.
كانت أول محاولة في مجال الـ اس آي ام دي في أي إيه-32 من قبل شركة انتل هو مجموعة تعليمات إم إم إكس. واجهت إم إم إكس مشكلتين رئيسيتين: انها تُعيد استخدام سجلات الفاصلة العائمة x87
الحالية جاعلة وحدات المعالجة المركزية غير قادرة على العمل على بيانات الفاصلة العائمة وبيانات اس آي ام دي في نفس الوقت، وعملت فقط على الأعداد الصحيحة. تعمل تعليمات النقطة العائمة اس اس أي على مجموعة تسجيل مستقلة جديدة, وسجلات إكس ام ام, وتضيف بعض الإرشادات الصحيحة التي تعمل على سجلات إم إم إكس.
أضاف اس اس أي في الأصل ثمانية سجلات 128 بت جديدة تُعرف باسم XMM0
إلى XMM7
. في حين أضافت ملحقات ايه ام دي 86-64 من AMD (التي كانت تسمى في الأصل x86-64) ثمانية سجلات أخرى من XMM8
إلى XMM15
, ويتم تكرار هذا الاضافات في بنية انتل 64 . يوجد أيضًا سجل تحكم / حالة 32 بت جديد، MXCSR
. التسجيلات من XMM8
إلى XMM15
يمكن الوصول إليها فقط في وضع التشغيل 64 بت.
استخدم SSE
نوع بيانات واحدًا فقط لمسجلات إكس ام ام:
ستقوم SSE2
لاحقًا بتوسيع استخدام سجلات XMM
لتشمل:
نظرًا لأن سجلات 128 بت هذه عبارة عن اوضاع جهاز إضافية يجب أن يحتفظ بها نظام التشغيل عبر مفاتيح تبديل المهام، يتم تعطيلها افتراضيًا حتى يقوم نظام التشغيل بتمكينها بشكل صريح. هذا يعني أن نظام التشغيل يجب أن يعرف كيفية استخدام تعليمات FXSAVE
و FXRSTOR
, وهي عبارة عن زوج ممتد من التعليمات يمكنه حفظ جميع حالات تسجيل إكس 86 و SSE
في وقت واحد. تمت إضافة هذا الدعم بسرعة إلى جميع أنظمة التشغيل IA-32 الرئيسية.
أول وحدة معالجة مركزية تدعم SSE
هو معالج بنتيوم 3, يتشارك موارد التنفيذ بين SSE
ووحدة النقطة العائمة (FPU
).[2] بينما يمكن للتطبيق المترجم تشذير تعليمات FPU
و SSE
جنبًا إلى جنب, فإن بنتيوم 3 لن يصدر تعليمات FPU
أو SSE
في دورة الساعة نفسها. يقلل هذا القيد من فعالية خطوط الأنابيب, لكن سجلات XMM
المنفصلة تسمح بخلط عمليات SIMD والنقطة العائمة العددية دون اضعاف الأداء من تبديل وضع MMX
/ والنقطة العائمة الصريح.
قدمت SSE تعليمات الفاصلة العائمة العددية والمعبأة.
MOVSS
MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS, MOVMSKPS
ADDSS, SUBSS, MULSS, DIVSS, RCPSS, SQRTSS, MAXSS, MINSS, RSQRTSS
ADDPS, SUBPS, MULPS, DIVPS, RCPPS, SQRTPS, MAXPS, MINPS, RSQRTPS
CMPSS, COMISS, UCOMISS
CMPPS
SHUFPS, UNPCKHPS, UNPCKLPS
CVTSI2SS, CVTSS2SI, CVTTSS2SI
CVTPI2PS, CVTPS2PI, CVTTPS2PI
ANDPS, ORPS, XORPS, ANDNPS
PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
PEXTRW, PINSRW
PMOVMSKB, PSHUFW
MXCSR
LDMXCSR, STMXCSR
MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
يمكن استخدام البرامج التالية لتحديد إصدارات SSE
المدعومة على النظام، إن وجدت
lscpu
- يتم توفيرها بواسطة حزمة util-linux
في معظم توزيعات لينكس.