مجموعه دستورهای ضرب بدون رقم نقلی

(تغییرمسیر از CLMUL instruction set)

ضرب بدون رقم نقلی (CLMUL) یک مجموعه دستورالعمل به فرمت معماری x86 است که توسط ریزپردازنده‌های اینتل و AMD استفاده شده و توسط اینتل در مارس ۲۰۰۸ معرفی گردیده‌است[۱] و برای پردازنده‌های اینتل Westmere در اوایل سال ۲۰۱۰ در دسترس قرار گرفته‌است.

یکی از این دستورالعمل‌ها برای افزایش سرعت برنامه‌های کاربردی است که از رمزگذاری بلوک به بلوک در حالت Galois / Counter Mode استفاده می‌کنند، که به ضرب میدان محدود(GF (2 k وابستگی دارد و می‌تواند با استفاده از دستورالعمل‌های جدید ضرب بدون رقم نقلی[۲] نسبت به دستورالعمل‌های سنتی بهتر و پربازده تر پیاده‌سازی شوند. یکی دیگر از کارهایی که ممکن می‌سازد محاسبه سریع مقدار CRC است،[۳] این پیاده‌سازی تمام تابع‌های موجود در الگوریتم zlib و pngcrush در پنجره کشویی DEFLATE در LZ77 را نیز در بر می‌گیرد.[۴]

دستورالعمل جدید

دستورالعمل، مقدار ضرب ۱۲۸ بیتی بدون رقم نقلی دو مقدار ۶۴ بیتی را محاسبه می‌کند. مقصد یک رجیستر XMM که ۱۲۸ بیتی است، می‌باشد. منبع ممکن است یک رجیستر XMM دیگر یا حافظه باشد. یک عملگر عددی مشخص می‌کند که کدام بخش‌های ۱۲۸ بیتی عملیاتی شده‌اند. یک یادمان که مشخص کننده مقادیر عملگرهای عددی می‌باشد نیز تعریف می‌شود:

دستورالعملOpcodeشرح
PCLMULQDQ xmmreg,xmmrm,imm[rmi: 66 0f 3a 44 /r ib]انجام یک ضرب بدون کری برای دو چند جمله ای ۶۴ بیتی در حوزهٔ محدود (GF (2 k.
PCLMULLQLQDQ xmmreg,xmmrm[rm:   66 0f 3a 44 /r 00]مقادیر نیمه پایین دو رجیستر را افزایش ضرب می‌کند.
PCLMULHQLQDQ xmmreg,xmmrm[rm:   66 0f 3a 44 /r 01]نیمه بالا رجیستر مقصد را با نیمه پایین رجیستر مبدأ ضرب می‌کند.
PCLMULLQHQDQ xmmreg,xmmrm[rm:   66 0f 3a 44 /r 10]نیمه پایین رجیستر مقصد را با نیمه بالا رجیستر مبدأ افزایش دهید.
PCLMULHQHQDQ xmmreg,xmmrm[rm:   66 0f 3a 44 /r 11]نیمه‌های بالایی دو رجیستر را در هم ضرب می‌کند.

CPUها با دستورالعمل CLMUL تنظیم شده‌است

  • اینتل
    • پردازنده Westmere (مارس ۲۰۱۰).
    • پردازنده Sandy Bridge
    • پردازنده Ivy Bridge
    • پردازنده Haswell
    • پردازنده Broadwell (با افزایش کارایی و تأخیر کمتر)[۵]
    • پردازنده Skylake
    • پردازنده یاب Kaby
    • پردازشگر دریاچه قهوه
  • AMD:
    • پردازنده‌های مبتنی بر Jaguar و جدیدتر[۶]
    • پردازنده‌های مبتنی بر Puma و جدیدتر
    • «تجهیزات سنگین» پردازنده
      • پردازنده‌های مبتنی بر بولدوزر[۷]
      • پردازنده‌های مبتنی بر Piledriver
      • پردازنده‌های مبتنی بر Steamroller
      • پردازنده‌های بر پایه بیل و جدیدتر
    • پردازنده‌های مبتنی بر ذن
    • پردازنده‌های مبتنی بر Zen +

حضور مجموعه دستورالعمل ضرب بدون رقم نقلی را می‌توان با آزمایش بیت‌های ویژگی‌های CPU بررسی کرد.

جستارهای وابسته

  • محاسبه فیلد محدود
  • دستورالعمل AES مجموعه
  • مجموعه دستورالعمل FMA3
  • دستورالعمل FMA4 تنظیم شده‌است
  • مجموعه دستورات AVX

منابع