Набор инструкций CLMUL - CLMUL instruction set

Умножение без переноса (CLMUL) является продолжением x86 набор инструкций, используемый микропроцессоры из Intel и AMD который был предложен Intel в марте 2008 г.[1] и доступен в Процессоры Intel Westmere анонсирован в начале 2010 года. Математически инструкция реализует умножение многочленов над конечное поле GF (2) где битовая строка представляет собой многочлен . Инструкция CLMUL также позволяет более эффективно реализовать тесно связанное умножение больших конечных полей GF (2k), чем традиционный набор команд.[2]

Одно из применений этих инструкций - повысить скорость приложений, выполняющих блочное шифрование в Галуа / Режим счетчика, который зависит от конечного поля GF (2k) умножение. Еще одно приложение - быстрый расчет Значения CRC,[3] включая те, которые использовались для реализации LZ77 раздвижное окно ВЫПУСКАТЬ алгоритм в zlib и pngcrush.[4]

ARMv8 также имеет версию CLMUL. SPARC называет свою версию XMULX для «умножения XOR».

Новые инструкции

Инструкция вычисляет 128-битный продукт без ручной клади двух 64-битных значений. Пункт назначения - это 128-битный регистр XMM. Источником может быть другой регистр XMM или память. Непосредственный операнд определяет, какие половины 128-битных операндов умножаются. Также определены мнемоники, определяющие конкретные значения непосредственного операнда:

ИнструкцияКод операцииОписание
PCLMULQDQ xmmreg, xmmrm, imm[rmi: 66 0f 3a 44 / r ib]Произвести умножение без переноса двух 64-битных многочленов над конечным полем GF(2k).
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]Умножьте старшие половины двух регистров.

Векторизованная версия EVEX (VPCLMULQDQ) представлена ​​в AVX-512.

Процессоры с набором инструкций CLMUL

Наличие набора инструкций CLMUL можно проверить, протестировав один из Биты функций процессора.

Смотрите также

Рекомендации

  1. ^ "Intel Software Network". Intel. Архивировано из оригинал на 2008-04-07. Получено 2008-04-05.
  2. ^ Шей Герон (13 апреля 2011 г.). «Инструкция Intel Carry -less Multiplication и ее использование для вычислений в режиме GCM - Ред. 2». Intel.
  3. ^ «Быстрое вычисление CRC для общих полиномов с использованием PCLMULQDQ» (PDF).
  4. ^ Влад Краснов (2015-07-08). «Борьба с раком: неожиданное преимущество открытого исходного кода для нашего кодекса». CloudFlare. Получено 2016-09-04.
  5. ^ Йохан Де Гелас (31 марта 2017 г.). «Обзор Intel Xeon E5 v4: тестирование Broadwell-EP с требовательными серверными рабочими нагрузками». Анандтех. п. 3.
  6. ^ «Улучшение детализации слайдов Jaguar по сравнению с Bobcat». AMD. Получено 3 августа, 2013.
  7. ^ Дэйв Кристи (6 мая 2009 г.). "Достижение баланса". Блоги разработчиков AMD. Архивировано из оригинал 9 ноября 2013 г.. Получено 2011-03-11.