Набор инструкций 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
- Intel
- Westmere процессор (март 2010 г.).
- Песчаный Мост процессор
- Ivy Bridge процессор
- Haswell процессор
- Broadwell процессор (с увеличенной пропускной способностью и меньшей задержкой[5])
- Skylake (и новее) процессор
- Goldmont процессор
- AMD:
- На базе Ягуара процессоры и новее [6]
- На основе пума процессоры и новее
- Переработчики "тяжелого оборудования"
- Бульдозерный процессоры [7]
- Пиледривер на базе процессоры
- На базе парового катка процессоры
- Экскаватор на базе процессоры и новее
- Дзен процессоры
- Дзен + процессоры
- Zen2 (и более поздние) процессоры
Наличие набора инструкций CLMUL можно проверить, протестировав один из Биты функций процессора.
Смотрите также
- Конечнопольная арифметика
- Набор инструкций AES
- Набор инструкций FMA3
- Набор инструкций FMA4
- Набор инструкций AVX
Рекомендации
- ^ "Intel Software Network". Intel. Архивировано из оригинал на 2008-04-07. Получено 2008-04-05.
- ^ Шей Герон (13 апреля 2011 г.). «Инструкция Intel Carry -less Multiplication и ее использование для вычислений в режиме GCM - Ред. 2». Intel.
- ^ «Быстрое вычисление CRC для общих полиномов с использованием PCLMULQDQ» (PDF).
- ^ Влад Краснов (2015-07-08). «Борьба с раком: неожиданное преимущество открытого исходного кода для нашего кодекса». CloudFlare. Получено 2016-09-04.
- ^ Йохан Де Гелас (31 марта 2017 г.). «Обзор Intel Xeon E5 v4: тестирование Broadwell-EP с требовательными серверными рабочими нагрузками». Анандтех. п. 3.
- ^ «Улучшение детализации слайдов Jaguar по сравнению с Bobcat». AMD. Получено 3 августа, 2013.
- ^ Дэйв Кристи (6 мая 2009 г.). "Достижение баланса". Блоги разработчиков AMD. Архивировано из оригинал 9 ноября 2013 г.. Получено 2011-03-11.