OPENSSL_IA32CAP(3SSL)

الاسم
OPENSSL_ia32cap - متجه قدرات معالج x86[_64]

موجز
 env OPENSSL_ia32cap=... <التطبيق>

الوصف
يدعم OpenSSL مجموعة من امتدادات وميزات مجموعة تعليمات x86[_64]. تُرمز هذه الامتدادات ببتات فردية أو مجموعات بتات مخزنة داخليًا كعشرة متجهات قدرة 32-بت، وللتبسيط تُعرض منطقيًا أدناه كخمسة متجهات 64-بت. يُستخدم تمثيل المتجه المنطقي (LV) هذا لتبسيط تعريف متغير البيئة OPENSSL_ia32cap.

عند تهيئة مجموعة الأدوات، تُملأ متجهات القدرة من خلال تنفيذات متتالية لتعليمة CPUID، وبعدها تُطبق أي تعديلات على بتات القدرة من متغير البيئة OPENSSL_ia32cap. بعد اكتمال تهيئة مجموعة الأدوات، تُستخدم المتجهات المملوءة بعد ذلك للاختيار بين مسارات شيفرة مختلفة لتوفير أداء أمثل عبر مجموعة واسعة من المعالجات المبنية على x86[_64].

يمكن العثور على معلومات CPUID إضافية في مرجع برمجة ملحقات مجموعة تعليمات Intel(R) Architecture، ودليل مبرمج AMD64 Architecture (المجلد 3).

  بتات القدرة البارزة لـ LV0
فيما يلي بتات القدرة البارزة من المتجه المنطقي 0 (LV0) الناتجة عن التنفيذ التالي لـ CPUID.(EAX=01H).EDX و CPUID.(EAX=01H).ECX:

البت #0+4 يشير إلى وجود عداد الطابع الزمني؛
البت #0+19 يشير إلى توفر تعليمة CLFLUSH؛
البت #0+20، المحجوز من قبل Intel، يُستخدم للاختيار بين مسارات شيفرة RC4؛
البت #0+23 يشير إلى دعم MMX؛
البت #0+24، بت FXSR، يشير إلى توفر مسجلات XMM؛
البت #0+25 يشير إلى دعم SSE؛
البت #0+26 يشير إلى دعم SSE2؛
البت #0+28 يشير إلى خيوط المعالجة الفائقة، والذي يُستخدم لتمييز النوى ذات الخبيئة المشتركة؛
البت #0+30، المحجوز من قبل Intel، يشير تحديدًا إلى معالجات Intel؛
البت #0+33 يشير إلى توفر تعليمة PCLMULQDQ؛
البت #0+41 يشير إلى دعم SSSE3، وهو SSE3 الإضافي؛
البت #0+43 يشير إلى دعم AMD XOP (مُجبر على الصفر في معالجات غير AMD)؛
البت #0+54 يشير إلى توفر تعليمة MOVBE؛
البت #0+57 يشير إلى امتداد مجموعة تعليمات AES-NI؛
البت #0+58، بت XSAVE، يُستخدم غيابه مع MOVBE لتحديد نواة Atom Silvermont؛
البت #0+59، بت OSXSAVE، يشير إلى توفر مسجلات YMM؛
البت #0+60 يشير إلى امتداد AVX؛
البت #0+62 يشير إلى توفر تعليمة RDRAND؛

  بتات القدرة البارزة لـ LV1
فيما يلي بتات القدرة البارزة من المتجه المنطقي 1 (LV1) الناتجة عن تنفيذ CPUID.(EAX=07H,ECX=0H).EBX و CPUID.(EAX=07H,ECX=0H).ECX:

البت #64+3 يشير إلى توفر تعليمات BMI1، مثل ANDN؛
البت #64+5 يشير إلى توفر تعليمات AVX2؛
البت #64+8 يشير إلى توفر تعليمات BMI2، مثل MULX و RORX؛
البت #64+16 يشير إلى توفر امتداد AVX512F؛
البت #64+17 يشير إلى توفر امتداد AVX512DQ؛
البت #64+18 يشير إلى توفر تعليمة RDSEED؛
البت #64+19 يشير إلى توفر تعليمات ADCX و ADOX؛
البت #64+21 يشير إلى توفر امتداد AVX512IFMA؛
البت #64+29 يشير إلى توفر امتداد SHA؛
البت #64+30 يشير إلى توفر امتداد AVX512BW؛
البت #64+31 يشير إلى توفر امتداد AVX512VL؛
البت #64+41 يشير إلى توفر امتداد VAES؛
البت #64+42 يشير إلى توفر امتداد VPCLMULQDQ؛

  بتات القدرة البارزة لـ LV2
فيما يلي بتات القدرة البارزة من المتجه المنطقي 2 (LV2) الناتجة عن تنفيذ CPUID.(EAX=07H,ECX=0H).EDX و CPUID.(EAX=07H,ECX=1H).EAX:

البت #128+15 يشير إلى توفر وحدة معالجة مركزية هجينة؛
البت #128+29 يشير إلى دعم سجل MSR الخاص بـ IA32_ARCH_CAPABILITIES؛
البت #128+32 يشير إلى توفر امتداد SHA512؛
البت #128+33 يشير إلى توفر امتداد SM3؛
البت #128+34 يشير إلى توفر امتداد SM4؛
البت #128+55 يشير إلى توفر امتداد AVX-IFMA؛

  بتات القدرة البارزة لـ LV3
فيما يلي بتات القدرة البارزة من المتجه المنطقي 3 (LV3) الناتجة عن تنفيذ CPUID.(EAX=07H,ECX=1H).EDX و CPUID.(EAX=07H,ECX=1H).EBX:

البت #192+19 يشير إلى توفر امتداد مجموعة تعليمات المتجهات المتقاربة AVX10؛
البت #192+21 يشير إلى توفر امتداد APX_F؛

  بتات القدرة البارزة لـ LV4
فيما يلي بتات القدرة البارزة من المتجه المنطقي 4 (LV4) الناتجة عن تنفيذ CPUID.(EAX=07H,ECX=1H).ECX و CPUID.(EAX=24H,ECX=0H).EBX:

البتات #256+32+[0:7] التي تدل على إصدار AVX10 من مجموعة تعليمات المتجهات المتقاربة (8 بتات)؛
البت #256+48 الذي يدل على دعم AVX10 لـ XMM؛
البت #256+49 الذي يدل على دعم AVX10 لـ YMM؛
البت #256+50 الذي يدل على دعم AVX10 لـ ZMM؛

  متغير البيئة OPENSSL_ia32cap
يوفر متغير البيئة OPENSSL_ia32cap آلية لتجاوز قيم متجه القدرة المبدئية في وقت تهيئة المكتبة. يتكون المتغير من سلسلة من الأرقام 64-بت التي تمثل كل متجه منطقي (LV) موصوف أعلاه. يتم تحديد كل قيمة بواسطة ':'. يتم دعم تمثيلات القيم العشرية/الثمانية/السداسية عشرية.

"env OPENSSL_ia32cap=LV0:LV1:LV2:LV3:LV4"

عند استخدامه بهذه الصيغة، سيقوم كل متجه منطقي غير فارغ *باستبدال* زوج متجهات القدرة بالكامل بالقيمة المقدمة. للحفاظ على التوافق مع سلوك متغير البيئة الأصلي OPENSSL_ia32cap <env OPENSSL_ia32cap=LV0:LV1>، سيتم ضبط أزواج متجهات القدرة التالية على الصفر.

للتوضيح، ما يلي سيصفر جميع بتات القدرة في المتجهات المنطقية 1 وما بعدها (تعطيل جميع إضافات ما بعد AVX):

"env OPENSSL_ia32cap=:0"

ما يلي سيصفر جميع بتات القدرة في المتجهات المنطقية 2 وما بعدها:

"env OPENSSL_ia32cap=::0"

ما يلي سيصفر جميع بتات القدرة فقط في المتجه المنطقي 1: "env OPENSSL_ia32cap=:0::::"

سيناريو الاستخدام الأكثر احتمالاً هو تعطيل ملحقات مجموعة تعليمات محددة. يُستخدم الحرف '~' لتحديد قناع بت للملحقات التي سيتم تعطيلها لمتجه منطقي معين.

للتوضيح، ما يلي سيعطل مسارات كود AVX2 والإضافات اللاحقة:

"env OPENSSL_ia32cap=:~0x20000000000"

ما يلي سيعطل إضافات AESNI (بت LV0 رقم 57) وVAES (بت LV1 رقم 41) وبالتالي أي مسارات كود تستخدم تلك الإضافات لكنه يترك باقي المتجهات المنطقية دون تغيير:

"env OPENSSL_ia32cap=~0x200000000000000:~0x20000000000:~0x0:~0x0:~0x0"

ملاحظات
لا يتم نسخ جميع بتات القدرة من مخرجات CPUID حرفياً. مثال على ذلك هو المسح الأقل بديهية إلى حد ما للبت LV0 رقم #28، أو ~0x10000000 في مصطلحات "متغير البيئة". تم تعديله ليعكس ما إذا كانت خبيئة البيانات مشتركة فعلياً بين النوى المنطقية أم لا. وهذا بدوره يؤثر على القرار بشأن تطبيق إجراءات مضادة باهظة الثمن ضد هجمات توقيت الخبيئة أم لا، وبشكل ملحوظ في وحدة التجميع AES.

القيم المُرجعة
غير متاح.

حقوق النسخ
حقوق النشر 2004-2021 مؤلفو مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.