إس إس إي 4
قد تكون هذه المقالة تقنية للغاية بحيث يصعب على معظم القراء فهمها . ( يوليو 2019 ) |
SSE4 ( Streaming SIMD Extensions 4 ) هي مجموعة تعليمات وحدة المعالجة المركزية SIMD المستخدمة في معمارية Intel Core و AMD K10 (K8L) . تم الإعلان عنها في 27 سبتمبر 2006، في منتدى Intel Developer Forum لخريف 2006 ، مع تفاصيل غامضة في ورقة بيضاء ؛ [1] أصبحت التفاصيل الأكثر دقة لـ 47 تعليمة متاحة في منتدى Intel Developer Forum لربيع 2007 في بكين ، في العرض التقديمي. [2] وسعت SSE4 مجموعة تعليمات SSE3 التي تم إصدارها في أوائل عام 2004. جميع البرامج التي تستخدم تعليمات Intel SIMD السابقة (مثل SSE3) متوافقة مع المعالجات الدقيقة الحديثة التي تدعم تعليمات SSE4. تستمر جميع البرامج الموجودة في العمل بشكل صحيح دون تعديل على المعالجات الدقيقة التي تتضمن SSE4، وكذلك في وجود التطبيقات الحالية والجديدة التي تتضمن SSE4. [3]
مثل مجموعات تعليمات وحدة المعالجة المركزية SIMD من الجيل السابق الأخرى، تدعم SSE4 ما يصل إلى 16 سجلاً، كل منها بعرض 128 بتًا يمكنها تحميل أربعة أعداد صحيحة 32 بت، أو أربعة أرقام عائمة بدقة أحادية 32 بت، أو رقمين عائمين بدقة مزدوجة 64 بت. [1] تعالج عمليات SIMD، مثل الجمع/الضرب حسب العنصر المتجه والجمع/الضرب القياسي المتجه، بايتات متعددة من البيانات في تعليمة وحدة معالجة مركزية واحدة. تجمع العملية الموازية زيادات ملحوظة في الأداء. قدم SSE4.2 عمليات سلسلة SIMD جديدة، بما في ذلك تعليمة لمقارنة شظايا سلسلة يصل طول كل منها إلى 16 بايت. [1] SSE4.2 هي مجموعة فرعية من SSE4 وتم إصدارها بعد بضع سنوات من الإصدار الأولي لـ SSE4.
مجموعات فرعية SSE4
يتألف Intel SSE4 من 54 تعليمة. تتوفر مجموعة فرعية مكونة من 47 تعليمة، يشار إليها باسم SSE4.1 في بعض وثائق Intel، في Penryn . بالإضافة إلى ذلك، يتوفر SSE4.2 ، وهي مجموعة فرعية ثانية تتكون من التعليمات السبع المتبقية، لأول مرة في Core i7 المستند إلى Nehalem . تنسب Intel الفضل إلى ملاحظات المطورين في لعب دور مهم في تطوير مجموعة التعليمات.
بدءًا من المعالجات المستندة إلى برشلونة ، قدمت AMD مجموعة تعليمات SSE4a ، والتي تحتوي على أربع تعليمات SSE4 وأربع تعليمات SSE جديدة. لا توجد هذه التعليمات في معالجات Intel التي تدعم SSE4.1 ولم تبدأ معالجات AMD في دعم SSE4.1 وSSE4.2 من Intel (مجموعة تعليمات SSE4 الكاملة) إلا في معالجات FX المستندة إلى Bulldozer . مع SSE4a، تم تقديم ميزة SSE غير المحاذية أيضًا مما يعني أن تعليمات التحميل غير المحاذية كانت بنفس سرعة الإصدارات المحاذية على العناوين المحاذية. كما سمحت بتعطيل فحص المحاذاة في عمليات SSE غير المحملة التي تصل إلى الذاكرة. [4] قدمت Intel لاحقًا تحسينات سرعة مماثلة لـ SSE غير المحاذية في معالجات Nehalem الخاصة بها، لكنها لم تقدم وصولاً غير محاذٍ من خلال تعليمات SSE غير المحملة حتى AVX . [5]
ارتباك في الاسم
ما يُعرف الآن باسم SSSE3 (Supplemental Streaming SIMD Extensions 3)، والذي تم تقديمه في خط معالج Intel Core 2 ، كان يُشار إليه باسم SSE4 من قبل بعض وسائل الإعلام حتى توصلت Intel إلى اسم SSSE3. تم تسميتها داخليًا باسم Merom New Instructions، ولم تخطط Intel في الأصل لتعيين اسم خاص لها، وهو ما انتقده بعض الصحفيين. [6] في النهاية، أوضحت Intel الارتباك واحتفظت باسم SSE4 لتمديد مجموعة التعليمات التالي. [7]
تستخدم شركة Intel مصطلح التسويق HD Boost للإشارة إلى SSE4. [8]
تعليمات جديدة
على عكس جميع التكرارات السابقة لـ SSE، يحتوي SSE4 على تعليمات لتنفيذ عمليات ليست خاصة بتطبيقات الوسائط المتعددة. فهو يتميز بعدد من التعليمات التي يتم تحديد عملها بواسطة حقل ثابت ومجموعة من التعليمات التي تأخذ XMM0 كمتعامل ثالث ضمني.
يتم تمكين العديد من هذه التعليمات بواسطة محرك الخلط أحادي الدورة في Penryn. (تعمل عمليات الخلط على إعادة ترتيب البايتات داخل السجل.)
إس إس إي 4.1
تم تقديم هذه التعليمات باستخدام معمارية Penryn الدقيقة ، وهي معمارية Intel Core الدقيقة التي تم تقليص حجمها إلى 45 نانومتر . يتم الإشارة إلى الدعم من خلال العلم CPUID.01H:ECX.SSE41[Bit 19].
| تعليمات | وصف |
|---|---|
MPSADBW
|
احسب ثمانية مجموعات إزاحة للاختلافات المطلقة، أربعة في كل مرة (أي، |x 0 −y 0 |+|x 1 −y 1 |+|x 2 −y 2 |+|x 3 −y 3 |، |x 0 −y 1 |+|x 1 −y 2 |+|x 2 −y 3 |+|x 3 −y 4 |، ...، |x 0 −y 7 |+|x 1 −y 8 |+|x 2 −y 9 |+|x 3 −y 10 |)؛ هذه العملية مهمة لبعض برامج ترميز HD ، وتسمح بحساب فرق كتلة 8×8 في أقل من سبع دورات. [9] يشير بت واحد من متغير فوري مكون من ثلاثة بتات إلى ما إذا كان يجب استخدام y 0 .. y 10 أو y 4 .. y 14 من المتغير الوجهة، والبتان الآخران يشيران إلى ما إذا كان يجب استخدام x 0 ..x 3 أو x 4 ..x 7 أو x 8 ..x 11 أو x 12 ..x 15 من المصدر. |
PHMINPOSUW
|
تعيين الكلمة غير الموقعة السفلية المكونة من 16 بتًا في الوجهة إلى أصغر كلمة غير موقعة مكونة من 16 بتًا في المصدر، والكلمة التالية من الأسفل إلى فهرس تلك الكلمة في المصدر. |
PMULDQ
|
عملية ضرب "طويلة" مكونة من 32 بت، يتم ضرب اثنين (الأول والثالث) من أربعة أعداد صحيحة مجمعة لإعطاء نتيجتين مجمعتين مكونتين من 64 بت. |
PMULLD
|
عملية ضرب "منخفضة" مجمعة مكونة من 32 بت، أربع مجموعات مجمعة من الأعداد الصحيحة مضروبة لإعطاء أربع نتائج مجمعة مكونة من 32 بت. |
DPPS,DPPD
|
حاصل الضرب النقطي لبيانات AOS (مجموعة من الهياكل). يتطلب هذا وسيطًا فوريًا يتكون من أربعة بتات (أو بتين لـ DPPD) لتحديد أي من الإدخالات في الإدخال سيتم ضربها وتجميعها، وأربعة بتات أخرى (أو بتين لـ DPPD) لتحديد ما إذا كان سيتم وضع 0 أو حاصل الضرب النقطي في الحقل المناسب من الإخراج. |
BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB,PBLENDW
|
النسخ المشروط للعناصر في موقع واحد مع موقع آخر، استنادًا (للنموذج غير V) إلى البتات في المتغير الفوري، و(للنموذج V) على البتات في السجل XMM0. |
PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD,PMAXSD
|
الحد الأدنى/الحد الأقصى المعبأ لأنواع مختلفة من المتغيرات الصحيحة |
ROUNDPS, ROUNDSS, ROUNDPD,ROUNDSD
|
تقريب القيم في سجل الفاصلة العائمة إلى أعداد صحيحة، باستخدام أحد أوضاع التقريب الأربعة المحددة بواسطة وسيط فوري |
INSERTPS, PINSRB, PINSRD/ ,PINSRQEXTRACTPSPEXTRBPEXTRD/PEXTRQ
|
تقرأ تعليمات INSERTPS وPINSR 8 أو 16 أو 32 بتًا من سجل x86 أو موقع ذاكرة وتدخلها في حقل في سجل الوجهة المعطى بواسطة وسيط فوري. تقرأ تعليمات EXTRACTPS وPEXTR حقلاً من سجل المصدر وتدخله في سجل x86 أو موقع ذاكرة. على سبيل المثال، تقوم تعليمات PEXTRD eax, [xmm0], 1; EXTRACTPS [addr+4*eax], xmm1, 1 بتخزين الحقل الأول من xmm1 في العنوان المعطى بواسطة الحقل الأول من xmm0. |
PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ,PMOVZXDQ
|
تمديد العلامة/الصفر المعبأة إلى أنواع أوسع |
PTEST
|
هذا مشابه للتعليمات TEST، حيث يقوم بتعيين علم Z إلى نتيجة AND بين متغيراته: يتم تعيين ZF، إذا كان DEST AND SRC يساوي 0. بالإضافة إلى ذلك، فإنه يقوم بتعيين علم C إذا كان (NOT DEST) AND SRC يساوي صفرًا.
يُعادل هذا تعيين علم Z إذا لم يتم تعيين أي من البتات المقنعة بواسطة SRC، وعلم C إذا تم تعيين جميع البتات المقنعة بواسطة SRC. |
PCMPEQQ
|
مقارنة الكلمات الرباعية (64 بت) من أجل المساواة |
PACKUSDW
|
تحويل كلمات DWORD الموقعة إلى كلمات غير موقعة مع التشبع. |
MOVNTDQA
|
قراءة فعالة من منطقة ذاكرة الجمع بين الكتابة إلى سجل SSE؛ وهذا مفيد لاسترجاع النتائج من الأجهزة الطرفية المتصلة بناقل الذاكرة. |
إس إس إي 4.2
أضافت SSE4.2 تعليمات STTNI (تعليمات جديدة للسلاسل والنصوص)، [10] عدة تعليمات جديدة تؤدي عمليات بحث عن الأحرف ومقارنتها على متغيرين يبلغ حجم كل منهما 16 بايتًا في المرة الواحدة. وقد صُممت هذه التعليمات (من بين أمور أخرى) لتسريع تحليل مستندات XML . [11] كما أضافت CRC32تعليمات لحساب عمليات فحص التكرار الدوري كما هو مستخدم في بروتوكولات نقل بيانات معينة. تم تنفيذ هذه التعليمات لأول مرة في خط إنتاج Intel Core i7 المستند إلى Nehalem ، واستكملت مجموعة تعليمات SSE4. من ناحية أخرى، أضافت AMD الدعم أولاً بدءًا من بنية Bulldozer الدقيقة . يتم الإشارة إلى الدعم من خلال العلم CPUID.01H:ECX.SSE42[Bit 20].
يتطلب Windows 11 24H2 أن يدعم وحدة المعالجة المركزية POPCNT، وإلا فلن يمكن تشغيل نواة Windows. [12]
| تعليمات | وصف |
|---|---|
CRC32
|
تجميع قيمة CRC32 C باستخدام متعدد الحدود 0x11EDC6F41 (أو، بدون البت ذي الترتيب العالي، 0x1EDC6F41). [13] [14] |
PCMPESTRI
|
مقارنة السلاسل ذات الطول الصريح المعبأة، وفهرس الإرجاع |
PCMPESTRM
|
مقارنة السلاسل ذات الطول الصريح المعبأة، قناع الإرجاع |
PCMPISTRI
|
مقارنة السلاسل ذات الطول الضمني المعبأة، وفهرس الإرجاع |
PCMPISTRM
|
مقارنة السلاسل ذات الطول الضمني المعبأة، قناع الإرجاع |
PCMPGTQ
|
مقارنة البيانات المجمعة الموقعة ذات 64 بت لأكثر من |
POPCNTوLZCNT
تعمل هذه التعليمات على سجلات عددية صحيحة وليس سجلات SSE، لأنها ليست تعليمات SIMD، ولكنها تظهر في نفس الوقت، وعلى الرغم من تقديمها بواسطة AMD مع مجموعة تعليمات SSE4a، إلا أنها تُحسب كملحقات منفصلة مع بتات CPUID مخصصة لها للإشارة إلى الدعم. تنفذ Intel POPCNTبدءًا من بنية Nehalem الدقيقة وبدءًا LZCNTمن بنية Haswell الدقيقة. تنفذ AMD كليهما، بدءًا من بنية Barcelona الدقيقة .
تسمي AMD هذا الزوج من التعليمات بـ Advanced Bit Manipulation (ABM) .
يتخذ ترميز LZCNTنفس مسار الترميز مثل ترميز BSRتعليمة (فحص البت العكسي). ويؤدي هذا إلى مشكلة حيث قد يتم تنفيذ العملية بشكل غير صحيح بدلاً من إثارة استثناء تعليمة غير صالحLZCNT عند استدعائها على بعض وحدات المعالجة المركزية التي لا تدعمها، مثل وحدات المعالجة المركزية من Intel قبل Haswell . وهذه مشكلة لأن قيم النتيجة لـ و مختلفة.
BSRLZCNTBSR
يمكن حساب الأصفار المتبقية باستخدام BSF(مسح البت للأمام) أو TZCNTالتعليمات.
يتطلب Windows 11 24H2 أن يدعم وحدة المعالجة المركزية POPCNT، وإلا فلن يمكن تشغيل نواة Windows. [15]
| تعليمات | وصف |
|---|---|
POPCNT
|
عدد السكان (عدد البتات مضبوط على 1). يتم الإشارة إلى الدعم من خلال العلم CPUID.01H:ECX.POPCNT[Bit 23]. [16] |
LZCNT
|
عدد الأصفار الأولية . يتم الإشارة إلى الدعم من خلال علم CPUID.80000001H:ECX.ABM[Bit 5]. [17] |
إس إس إي 4أ
تم تقديم مجموعة التعليمات SSE4a في معمارية برشلونة الدقيقة من AMD . هذه التعليمات غير متوفرة في معالجات Intel. يتم الإشارة إلى الدعم من خلال علامة CPUID.80000001H:ECX.SSE4A[Bit 6]. [17]
| تعليمات | وصف |
|---|---|
EXTRQINSERTQ
|
تعليمات تحويل القناع المجمعة. [18] |
MOVNTSDMOVNTSS
|
تعليمات تخزين البث القياسي. [19] |
دعم وحدات المعالجة المركزية
وحدات المعالجة المركزية X86-64 v2 :
- إنتل
- معالجات Silvermont (SSE4.1 وSSE4.2
POPCNTوالمدعومة) - معالجات Goldmont (SSE4.1 وSSE4.2
POPCNTوالمدعومة) - معالجات Goldmont Plus (SSE4.1 وSSE4.2
POPCNTوالمدعومة) - معالجات Tremont (SSE4.1 وSSE4.2
POPCNTوالمدعومة) - معالجات Penryn (تدعم SSE4.1، باستثناء Pentium Dual-Core و Celeron )
- معالجات Nehalem ومعالجات Westmere (SSE4.1 وSSE4.2 والمدعومة
POPCNT، باستثناء Pentium و Celeron ) - معالجات Sandy Bridge والإصدارات الأحدث (SSE4.1 وSSE4.2
POPCNTوالمدعومة، بما في ذلك Pentium و Celeron ) - معالجات Haswell والإصدارات الأحدث (SSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT)
- معالجات Silvermont (SSE4.1 وSSE4.2
- أيه إم دي
- المعالجات المستندة إلى K10
POPCNT(SSE4a، والمدعومةLZCNT) - معالجات "Cat" منخفضة الطاقة
- المعالجات المستندة إلى Bobcat (SSE4a،
POPCNTوالمدعومةLZCNT) - المعالجات المستندة إلى Jaguar والإصدارات الأحدث (SSE4a وSSE4.1
POPCNTو SSE4.2LZCNTوالمدعومة) - المعالجات المستندة إلى Puma والإصدارات الأحدث (SSE4a وSSE4.1
POPCNTو SSE4.2LZCNTوالمدعومة)
- المعالجات المستندة إلى Bobcat (SSE4a،
- معالجات "المعدات الثقيلة" (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT)- المعالجات المعتمدة على الجرافات
- المعالجات القائمة على Piledriver [20]
- المعالجات القائمة على الأسطوانة البخارية
- المعالجات القائمة على الحفارات والمعالجات الأحدث
- المعالجات المستندة إلى Zen (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT) - المعالجات المستندة إلى Zen+ (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT) - المعالجات المستندة إلى Zen2 (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT) - المعالجات المستندة إلى Zen3 (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT) - المعالجات المستندة إلى Zen4 (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT) - المعالجات المستندة إلى Zen5 (SSE4a وSSE4.1 وSSE4.2
POPCNTوالمدعومةLZCNT)
- المعالجات المستندة إلى K10
- عبر
- معالجات Nano 3000 وX2 وQuadCore (تدعم SSE4.1)
- معالجات Nano QuadCore من سلسلة C4000 (تدعم SSE4.1 وSSE4.2)
- معالجات Eden X4 (تدعم SSE4.1 وSSE4.2)
- تشاو شين
- معالجات ZX-C والإصدارات الأحدث (تدعم SSE4.1 وSSE4.2)
مراجع
- ^ abc Intel Streaming SIMD Extensions 4 (SSE4) Instruction Set Innovation Archived May 30, 2009, at the Wayback Machine , Intel.
- ^ ضبط Intel SSE4 للجيل القادم من معالجات Intel Core الدقيقة بتقنية 45 نانومتر محفوظ في 8 مارس 2021، على موقع Wayback Machine ، Intel.
- ^ "مرجع برمجة Intel SSE4" (PDF) . مؤرشف من الأصل (PDF) في 15 فبراير 2020 . تم الاسترجاع في 26 ديسمبر 2014 .
- ^ ""خصائص معالج ""برشلونة"": الوصول غير المتوافق مع SSE". AMD. مؤرشف من الأصل في 9 أغسطس 2016. تم الاسترجاع في 3 مارس 2015 .
- ^ "Inside Intel Nehalem Microarchitecture". مؤرشف من الأصل في 2 أبريل 2015. تم الاسترجاع في 3 مارس 2015 .
- ^ تجربتي مع "كونرو" أرشيف 15 أكتوبر 2013، على موقع واي باك مشين ، ديلي تيك
- ^ توسيع بنية المعالج الأكثر شعبية في العالم محفوظ في 24 نوفمبر 2011، على موقع Wayback Machine ، Intel
- ^ "Intel - Data Center Solutions, IOT, and PC Innovation". Intel . مؤرشف من الأصل في 7 فبراير 2013 . تم الاسترجاع في 17 سبتمبر 2009 .
- ^ تقدير الحركة باستخدام Intel Streaming SIMD Extensions 4 (Intel SSE4) مؤرشف من الأصل في 16 يونيو 2018، على موقع واي باك مشين .
- ^ "التحقق من صحة المخطط باستخدام Intel® Streaming SIMD Extensions 4 (Intel® SSE4)". مؤرشف من الأصل في 17 يونيو 2018. تم الاسترجاع في 6 فبراير 2012 .
- ^ "مسرع تحليل XML مع Intel® Streaming SIMD Extensions 4 (Intel® SSE4)". مؤرشف من الأصل في 17 يونيو 2018. تم الاسترجاع في 6 فبراير 2012 .
- ^ سين، سايان (17 مارس 2024). "مايكروسوفت تصلح مشكلة في تشغيل PopCnt لكن متطلبات Windows 11 24H2 قد تكون موجودة لتبقى". نيووين . تم الاسترجاع في 17 مارس 2024 .
- ^ تم أرشفة مرجع برمجة Intel SSE4 في 15 فبراير 2020، على موقع Wayback Machine، ص. 61. انظر أيضًا RFC 3385 المؤرشف في 19 يونيو 2008، على موقع Wayback Machine لمناقشة متعددة الحدود CRC32C.
- ^ حساب CRC السريع والمتوازي باستخدام تعليمات Nehalem CRC32 — دكتور دوبس، 12 أبريل 2011
- ^ سين، سايان (17 مارس 2024). "مايكروسوفت تصلح مشكلة في تشغيل PopCnt لكن متطلبات Windows 11 24H2 قد تكون موجودة لتبقى". نيووين . تم الاسترجاع في 17 مارس 2024 .
- ^ دليل مطور برامج معماريات Intel® 64 وIA-32، المجلد 2B: مرجع مجموعة التعليمات، من N إلى Z، محفوظ في 8 مارس 2011، على موقع Wayback Machine .
- ^ "مواصفات AMD CPUID" (PDF) . مؤرشف من الأصل (PDF) في 1 نوفمبر 2013 . تم الاسترجاع في 30 أكتوبر 2013 .
- ^ Rahul Chaturvedi (17 سبتمبر 2007). ""خصائص معالج ""برشلونة"": مجموعة تعليمات SSE4a". مؤرشف من الأصل في 25 أكتوبر 2013.
- ^ Rahul Chaturvedi (2 أكتوبر 2007). ""Barcelona"" Processor Feature: SSE4a, part 2"". مؤرشف من الأصل في 25 أكتوبر 2013.
- ^ "AMD FX-Series FX-6300 - FD6300WMW6KHK / FD6300WMHKBOX". مؤرشف من الأصل في 17 أغسطس 2017. تم الاسترجاع في 9 أكتوبر 2015 .
روابط خارجية
- مرجع برمجة SSE4 من Intel
- تم أرشفة حاسبة PCMPSTR لتعليمات سلسلة SSE 4.2 في Ghostarchive.org في 10 مايو 2022
