پرش به محتوا

اس‌اس‌اس‌ئی۳

از ویکی‌پدیا، دانشنامهٔ آزاد

اس‌اس‌اس‌ئی۳ (به انگلیسی: SSSE3) جریان افزایشی یک دستورالعمل اس‌ای‌ام‌دی (SIMD) است که به وسیله اینتل ساخته شده و چهارمین نسخه از تکنولوژی اس‌اس‌ئی (SSE) بشمار می‌رود.

تاریخچه

[ویرایش]

اس‌اس‌اس‌ئی۳ ابتدا با پردازنده‌های اینتل بر اساس معماری چند هسته ای در تاریخ ۲۶ ژوئن ۲۰۰۶ با "Xeons "Woodcrest معرفی شد.

اس‌اس‌اس‌ئی۳ توسط اولین طراحی‌های ریزپردازنده‌ای که قصد به‌کارگیری آن را داشتند با اسم Tejas New Instructions یا Merom New Instructions معرفی می‌شد.

عملکرد

[ویرایش]

اس‌اس‌اس‌ئی۳ حاوی ۱۶ دستورالعمل جدید مجزا است.

هر دستورالعمل می‌تواند روی رجیسترهای ۶۴ بیت MMX یا ۱۲۸ بیت XMM کار کند؛ بنابراین، مطالب اینتل به ۳۲ دستورالعمل جدید اشاره می‌کنند.

با توجه به اینتل:

اس‌اس‌اس‌ئی۳ ۳۲ دستورالعمل (به وسیله ۱۴ امیونیک نشان داده می‌شود) برای سرعت بخشیدن به محاسبات بر روی اعداد صحیح بسته‌بندی شده ارائه می‌دهد. اینها عبارتند از:[۱]

  • دوازده دستورالعمل که عمل‌های اضافه یا تفریق افقی را انجام می‌دهند.
  • شش دستورالعمل که قدر مطلق را ارزیابی می‌کنند
  • دو دستورالعمل که عملیات ضرب و جمع را انجام می‌دهد و سرعت محاسبه ضرب داخلی را افزایش می‌دهد.
  • دو دستورالعمل که عملیات ضرب عدد صحیح بسته‌بندی را افزایش داده و مقادیر عدد صحیح را با مقیاس بندی تولید می‌کنند.
  • دو دستورالعمل که با توجه به عملگر کنترل دوم shuffle، بیت معیوب، تغییر مکان را انجام می‌دهند.
  • شش دستورالعمل که عدد صحیح بسته‌بندی شده در انتهای مقصد را نادیده بگیرد اگر نشانه‌های عنصر متناظر در مبدأ منبع کمتر از صفر باشد.
  • دو دستورالعمل که داده‌ها را از کامپوزیت از دو operands تراز می‌کند.

پردازنده‌های اس‌اس‌اس‌ئی۳

[ویرایش]
  • AMD:
    • پردازنده‌های کم قدرت «گربه»
      • پردازنده‌های مبتنی بر Bobcat
      • پردازنده‌های مبتنی بر Jaguar و جدیدتر
      • پردازنده‌های مبتنی بر Puma و جدیدتر
    • پردازنده «تجهیزات سنگین»
      • پردازنده‌های مبتنی بر بولدوزر
      • پردازنده‌های مبتنی بر Piledriver
      • پردازنده‌های مبتنی بر Steamroller
      • پردازنده‌های مبتنی بر Excavator و جدیدتر
    • پردازنده‌های مبتنی بر Zen
    • پردازنده‌های مبتنی بر Zen+
  • اینتل:
  • VIA:↵

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

[ویرایش]

در جدول زیر، satsw (X) (به عنوان "اشباع به کلمه علامت دار" خوانده شود) عدد صحیح علامت دار X را می‌گیرد و اگر کمتر از -۳۲۷۶۸ باشد آن را به -۳۲۷۶۸ تبدیل می‌کند، اگر بزرگتر از ۳۲۷۶۷ باشد آن را به ۳۲۷۶۷ تبدیل می‌کند، و در غیر این صورت آن را بدون تغییر رها می‌کند. در معماری معمول اینتل، بایت‌ها ۸ بیتی هستند، کلمه‌ها ۱۶ بیت و dwordها ۳۲ بیت هستند؛ 'رجیستر' به یک رجیستر وکتور MMX یا XMM اشاره می‌کند.

PSIGNB, PSIGNW, PSIGND بسته‌بندی شده علامت دار اگر عناصر ثبت نام از بایت‌ها، کلمات یا کلمات کلیدی را از علامت عناصر مربوط به یک ثبت نام دیگر منفی بدست نیاورید،
PABSB, PABSW, PABSD قدر مطلق بسته‌بندی شده عنصرهای یک رجیستر از نوع بایت‌ها، wordها یا dwordها را با قدر مطلق مقدار عنصرهای رجیستر دیگر پر می‌کند.
PALIGNR بسته‌بندی شده درست کردن دو رجیستر را برمی‌دارد، مقادیر خود را به هم مرتبط کنید و یک بخش register-length را از یک عدد که توسط مقدار فوری کدگذاری شده در دستورالعمل داده شده‌است بیرون بکشید.
PSHUFB بیت‌های مختلط بسته‌بندی شده دو رجیستر بایتی A=[a1,a2,a3,..]

و B = [b0 b1 b2 ...]

را می‌گیرد و A را با [a b0 a b1 a b2 ...] جایگزین می‌کند. بجز اینکه آن را جایگزین i امین ورودی با ۰ اگر بالاترین بیت از b i مشخص شده‌است.

PMULHRSW بسته‌بندی شده با ضخامت زیاد و دور و مقیاس کلمات ۱۶ بیتی در رجیستری A و B به صورت ۱۶ بیتی ثابت نقطه ای بین -۱٫۰۰۰۰۰۰۰۰ و +۰٫۹۹۹۹۶۹۴۸ … (به عنوان مثال 0x4000 به عنوان +۰٫۵ و 0xA000 به عنوان -۰٫۷۵ رفتار می‌شود)، و آنها را با درست کردن گرد کردن
PMADDUBSW ضرب و اضافه کردن بات‌های امضا نشده و غیرمجاز بایت‌ها را در رجیسترهای A و B می‌گیرد، آنها را در هم ضرت می‌کند، جفت‌ها را اضافه می‌کند، علامت را بررسی می‌کند و ذخیره می‌کند. یعنی[a0 a1 a2 ...] pmaddubsw[b0 b1 b2 ...] =

[satsw (a0b0 + a1b1) satsw (a2b2 + a3b3) ...]

PHSUBW, PHSUBD تقسیم افقی افقی (کلمات یا دوبله) رجیسترهای A = [a0 a1 a2 ...]

و B = [b0 b1 b2 ...] را می‌گیرد و خروجی [a0-a1 a2-a3 ... b0-b1 b2-b3 ...]

PHSUBSW بسته‌بندی افقی تفریق و اشباع کلمات مانند PHSUBW، اما خروجی

[satsw (a0-a1) satsw (a2-a3) ... satsw (b0-b1) satsw (b2-b3) ...]

PHADDW, PHADDD بسته‌بندی افقی اضافه (واژه‌ها یا دو کلمه) رجیسترهای A= [A0 a1 a2 ...] و

B = [b0 b1 b2 ...] را می‌گیرد و خروجی‌ها [a0 + a1 a2 + a3 ... b0 + b1 b2 + b3 ...]

PHADDSW بسته‌بندی افقی اضافه کردن و اشباع کلمات مانند PHADDW، اما خروجی

[satsw (a0 + a1) satsw (a2 + a3) ... satsw (b0 + b1) satsw (b2 + b3) ...]

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

[ویرایش]

منابع

[ویرایش]
  1. (Technical report). {{cite techreport}}: Missing or empty |title= (help)

پیوند به بیرون

[ویرایش]