Jump to content

префикс EVEX

Префикс EVEX (расширенное векторное расширение) и соответствующая схема кодирования являются расширением 32-битного x86 (IA-32) и 64-битного x86-64 (AMD64) архитектуры набора команд . EVEX основан на префиксе MVEX, но не следует путать с ним. [ 1 ] используется процессором Knights Corner .

Схема EVEX представляет собой 4-байтовое расширение схемы VEX , которое поддерживает набор инструкций AVX-512 и позволяет адресовать новые 512-битные регистры ZMM и новые 64-битные регистры маски операндов.

В расширенных расширениях производительности префикс Extended EVEX переопределяет семантику нескольких битов полезной нагрузки. [ 2 ]

Кодирование EVEX может адресовать 8 регистров маски операндов, 16 регистров общего назначения и 32 векторных регистра в 64-битном режиме (в противном случае 8 регистров общего назначения и 8 векторных) и может поддерживать до 4 операндов.

Как и схема кодирования VEX, префикс EVEX объединяет существующие префиксы кодов операций и управляющие коды, модификаторы адресации памяти и длины операндов набора команд x86.

Следующие функции перенесены из схемы VEX:

  • Прямое кодирование трех регистров SIMD (XMM, YMM или ZMM) в качестве исходных операндов (регистры MMX или x87 не поддерживаются);
  • Уплотненный префикс REX для 64-битного режима;
  • Сжатый префикс SIMD (66h, F2h, F3h), escape-код операции (0Fh) и двухбайтовый escape-код (0F38h, 0F3Ah);
  • Менее строгие требования к выравниванию памяти для операндов памяти.

EVEX также расширяет VEX дополнительными возможностями:

  • Расширенное кодирование регистров SIMD: всего 32 новых 512-битных регистров SIMD ZMM0–ZMM31 в 64-битном режиме;
  • Кодирование маски операнда: 8 новых 64-битных регистров opmask k0–k7 для условного выполнения и объединения операндов назначения;
  • Широковещательная передача от источника к месту назначения для инструкций, которые принимают вектор памяти в качестве исходного операнда: второй операнд передается перед использованием в фактической операции;
  • Прямое встроенное управление округлением для инструкций, которые работают с SIMD-регистрами с плавающей запятой и семантикой округления;
  • Встроенный контроль исключений для инструкций с плавающей запятой без семантики округления;
  • Сжатое смещение (Disp8 × N), новый режим адресации памяти для улучшения плотности кодирования потока байтов инструкций; масштабный коэффициент N зависит от длины вектора и режима вещания.

Например, схема кодирования EVEX допускает условное сложение векторов в виде

VADDPS zmm1 {k1}{z}, zmm2, zmm3

где модификатор {k1} рядом с операндом-адресатом кодирует использование регистра маски k1 для условной обработки и обновления адресата, а модификатор {z} (закодированный EVEX.z) обеспечивает два типа маскировки (слияние и обнуление), с слияние по умолчанию, когда модификатор не прикреплен.

Техническое описание

[ редактировать ]

Схема кодирования EVEX использует префикс кода, состоящий из 4 байтов ; первый байт всегда равен 62h и является производным от неиспользуемого кода операции 32-битной инструкции BOUND, который не поддерживается в 64-битном режиме. [ 3 ]

Префикс EVEX в формате инструкций AVX-512.
количество байтов 4 1 1 1 4 / 1 1
[Префиксы] ЭВЕКС Код операции МодР/М [СИБ] [Дисп32] / [Дисп8 × Н] [Немедленный]

Байт ModR/M определяет один операнд (всегда регистр) с полем reg , а второй операнд кодируется полями mod и r/m , определяя либо регистр, либо местоположение в памяти. Для адресации «база-плюс-индекс» и «масштаб-плюс-индекс» требуется байт SIB, который кодирует 2-битный коэффициент масштабирования , а также 3-битные индексные и 3-битные базовые регистры. В зависимости от режима адресации, за полем Disp8/Disp16/Disp32 может следовать смещение, которое необходимо добавить к адресу.

Префикс EVEX сохраняет поля, представленные в префиксе VEX :

  • Четыре бита R̅, X̅, B̅ и W из префикса VEX, хранящиеся в инвертированной форме. W расширяет размер операнда до 64 бит или служит дополнительным кодом операции, R расширяет reg , B расширяет r/m или reg , а X и B расширяют индекс и базу в байте SIB.
  • Четыре бита с именем v, хранящиеся в инвертированной форме. vvvv задает второй неразрушающий операнд исходного регистра.
  • Бит L, задающий 256-битную длину вектора.
  • Два бита с именем p для замены префиксов размера операнда и префиксов типа операнда (66h, F2h, F3h).
  • Два из m битов для замены существующих escape-кодов (0Fh, 0F 38h и 0F 3Ah).

Новые функции существующих полей:

  • Бит X теперь расширяет r/m вместе с битом B, когда байт SIB отсутствует, что позволяет использовать 32 регистра SIMD.

Появилось несколько новых битовых полей:

  • Бит R̅' в инвертированной форме; R' расширяет рег .
  • Bit V̅’ in inverted form; V’ expands vvvv .
  • Три бита с именем a определяют регистр маски операнда (k0–k7) для векторных инструкций.
  • Бит z для указания режима слияния (слияние или ноль).
  • Бит b для широковещательной передачи источника, управления округлением (в сочетании с L'L) или подавления исключений.
  • Бит L' для указания 512-битной длины вектора или режима управления округлением в сочетании с L.

Кодировка префикса EVEX следующая:

7 6 5 4 3 2 1 0
Байт 0 (62h) 0 1 1 0 0 0 1 0
Байт 1 (P0) Р̅ Х̅ Б̅ Р̅' 0 0 м 1 м 0 П[7:0]
Байт 2 (P1) В 3 2 1 0 1 п 1 п 0 П[15:8]
Обмен 3 (P2) С Л' л б Ва' aа2 1 из 0 П[23:16]

В следующей таблице перечислены возможные комбинации адресации регистров (бит 4 всегда равен нулю при кодировании 16 регистров общего назначения):

Адресация регистров в 64-битном режиме с использованием префикса EVEX
Режим адресации Бит 4 Бит 3 Биты [2:0] Тип регистрации Общее использование
РЕГ ЭВЕКС.Р' ЭВЕКС.Р ModRM.reg Общего назначения, векторный Зарегистрировать операнд
РМ (если ModRM.mod=11) ЭВЕКС.Х ЭВЕКС.Б МодРМ.р/м Георадар, вектор Зарегистрировать операнд
РМ 0 ЭВЕКС.Б МодРМ.р/м георадар Зарегистрировать адрес памяти
БАЗА 0 ЭВЕКС.Б СИБ.база георадар База + индекс × масштаб адреса памяти
ИНДЕКС 0 ЭВЕКС.Х СИБ.индекс георадар База + индекс × масштаб адреса памяти
ВИДКС ЭВЕКС.В' ЭВЕКС.Х СИБ.индекс Вектор База + векторный индекс × масштаб адреса памяти
НСР/НДД ЭВЕКС.В' EVEX.v 3 v 2 v 1 v 0 Георадар, вектор Зарегистрировать операнд
К 0 0 EVEX.a 2 а 1 а 0 Маска Операнд регистра маски

Некоторые инструкции смешивания AVX, закодированные в VEX, имеют 4 операнда. Чтобы обеспечить это, VEX имеет режим адресации IS4, который кодирует 4-й операнд (векторный регистр) в битах Imm8[7:4] непосредственной константы. Аналогичные инструкции смешивания, закодированные в EVEX, имеют четвертый операнд в регистре маски. Ни одна инструкция в кодировке EVEX не использует кодировку режима адресации IS4.

Расширенный префикс EVEX

[ редактировать ]

Расширения Intel Advanced Performance Extensions представляют несколько новых вариантов 3-байтовой полезной нагрузки в префиксе EVEX, которые используются для кодирования расширенных регистров GPR R16-R31 и новых условных инструкций.

Расширение EVEX инструкций EVEX:

7 6 5 4 3 2 1 0
Байт 0 (62h) 0 1 1 0 0 0 1 0
Байт 1 (P0) Р 3 Х̅ 3 Б 3 Р 4 Б 4 mм2 м 1 м 0 П[7:0]
Байт 2 (P1) В 3 2 1 0 Х̅ 4 п 1 п 0 П[15:8]
Обмен 3 (P2) С Л' л б 4 aа2 1 из 0 П[23:16]
  • Биты R̅ 3 , X̅ 3 и B̅ 3 префикса REX2 являются инверсиями битов R 3 , X 3 и B 3 . Это то же самое, что биты R̅, X̅ и B из префиксов VEX и EVEX.
  • Биты R̅ 4 , X̅ 4 , B 4 используются для кодирования 32 регистров EGPR. Хранится в перевернутом виде, кроме В4.
  • Пять битов с именем v, хранящихся в инвертированной форме. vvvvv указывает дополнительный индекс исходного регистра, который может кодировать 32 регистра EGPR.
  • Биты z, m, b, L, p, a такие же, как и в устаревшем префиксе EVEX.

Расширение EVEX инструкций VEX:

7 6 5 4 3 2 1 0
Байт 0 (62h) 0 1 1 0 0 0 1 0
Байт 1 (P0) Р 3 Х̅ 3 Б 3 Р 4 Б 4 mм2 м 1 м 0 П[7:0]
Байт 2 (P1) В 3 2 1 0 Х̅ 4 п 1 п 0 П[15:8]
Обмен 3 (P2) 0 0 л 0 4 НФ 0 0 П[23:16]

Расширение EVEX для устаревших инструкций:

7 6 5 4 3 2 1 0
Байт 0 (62h) 0 1 1 0 0 0 1 0
Байт 1 (P0) Р 3 Х̅ 3 Б 3 Р 4 Б 4 1 0 0 П[7:0]
Байт 2 (P1) В 3 2 1 0 Х̅ 4 п 1 п 0 П[15:8]
Обмен 3 (P2) 0 0 0 без даты 4 НФ 0 0 П[23:16]
  • NF — подавление обновления флагов состояния («нет флагов») для нескольких инструкций BMI (ANDN, BEXTR, BLSI, BLSMSK, BLSR, BZHI).
  • ND — флаг нового пункта назначения данных (NDD). Когда ND = 1, индекс регистра EGPR кодируется битами v̅.

Префикс EVEX для условного CMP и TEST:

7 6 5 4 3 2 1 0
Байт 0 (62h) 0 1 1 0 0 0 1 0
Байт 1 (P0) Р 3 Х̅ 3 Б 3 Р 4 Б 4 1 0 0 П[7:0]
Байт 2 (P1) В ИЗ Сан-Франциско ЗФ CF Х̅ 4 п 1 п 0 П[15:8]
Обмен 3 (P2) 0 0 0 НД=0 ПК 3 ПК 2 ПК 1 СК 0 П[23:16]
  • Биты SC представляют собой код состояния источника (SCC).
  • OF, SF, ZF, CF — это флаги переполнения, знака, нуля и переноса для проверки (для флага четности нет кодировки).

Когда новые регистры EGPR и адресаты операндов могут быть закодированы как расширенными префиксами EVEX, так и REX2, последний является предпочтительным.

  1. ^ Справочное руководство по архитектуре набора команд сопроцессора Intel® Xeon Phi™ (PDF) . 7 сентября 2012 г. с. 42. 327364-001. Архивировано (PDF) из оригинала 4 августа 2021 г.
  2. ^ Спецификация архитектуры Intel® Advanced Performance Extensions (Intel® APX) (PDF) (2-е изд.). Август 2023. с. 21. 355828-002США. Архивировано (PDF) из оригинала 10 сентября 2023 г.
  3. ^ Корпорация Intel (июль 2013 г.). «Справочник по программированию расширений набора команд архитектуры Intel» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b32b043341712268e7544ac0182049a2__1707068100
URL1:https://arc.ask3.ru/arc/aa/b3/a2/b32b043341712268e7544ac0182049a2.html
Заголовок, (Title) документа по адресу, URL1:
EVEX prefix - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)