stringtranslate.com

Префикс EVEX

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

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

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

Функции

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

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

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

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

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

ВАДДПС zmm1 {k1}{z}, zmm2, zmm3

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

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

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

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

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

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

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

Кодировка префикса EVEX выглядит следующим образом:

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

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

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

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

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

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

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

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

Если новые регистры 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-002US. Архивировано (PDF) из оригинала 10 сентября 2023 г.
  3. ^ Корпорация Intel (март 2024 г.). «Справочник по программированию расширений набора инструкций архитектуры Intel».