EVEX префиксі - EVEX prefix

The EVEX префиксі (Жақсартылған векторлық кеңейту) және сәйкес кодтау схемасы 32-разрядқа дейін кеңейту болып табылады x86 (IA-32) және 64 биттік x86-64 (AMD64) нұсқаулық жиынтығының архитектурасы. EVEX негізделген, бірақ оны қолданатын MVEX префиксімен шатастыруға болмайды Рыцарлар бұрышы процессор.

EVEX схемасы -ге 4 байтты кеңейту VEX қолдайтын схема AVX-512 нұсқаулар жиынтығы және жаңа 512-биттік ZMM регистрлері мен 64-биттік операнд маскасының жаңа регистрлеріне жүгінуге мүмкіндік береді.

Ерекшеліктер

EVEX кодтауы 8 операнд маска регистрлеріне, 16 жалпыға арналған регистрлерге және 32 векторлық регистрлерге 64 биттік режимде (әйтпесе, 8 жалпы мақсаттағы және 8 векторға) адресат бере алады және 4 операндқа дейін қолдай алады.

VEX кодтау схемасы сияқты, EVEX префиксі x86 командалар жиынтығының қолданыстағы опкод префикстері мен қашу кодтарын, жадының мекен-жайы мен операнд ұзындығының модификаторларын біріктіреді.

VEX схемасынан келесі функциялар жүзеге асырылады:

  • Үш SIMD регистрін (XMM, YMM немесе ZMM) бастапқы операндтар ретінде тікелей кодтау (MMX немесе x87 регистрлеріне қолдау көрсетілмейді);
  • 64 биттік режимге арналған REX префиксі;
  • Тығыздалған SIMD префиксі (66H, F2H, F3H), қашып кету опкод (0FH) және екі байтты қашу (0F38H, 0F3AH);
  • Жадты операндтауға қойылатын қатаң талаптардың аздығы

EVEX сонымен қатар VEX-ті қосымша мүмкіндіктермен кеңейтеді:

  • SIMD регистрінің кеңейтілген кодталуы: барлығы 32 жаңа 512 бит SIMD 64 биттік режимде ZMM0-ZMM31 тіркейді;
  • Операнд маскасын кодтау: мақсатты операндтарды шартты орындау және біріктіру үшін 8 жаңа 64-биттік маска-k0-k7 регистрлері;
  • Жад векторын бастапқы операнд ретінде қабылдайтын нұсқаулық үшін көзден мақсатқа тарату: екінші операнд нақты операцияда қолданар алдында таратылады;
  • Дөңгелектеу семантикасы бар өзгермелі нүктелік SIMD регистрлерінде жұмыс істейтін нұсқаулық үшін тікелей енгізілген дөңгелектеуді басқару;
  • Семантиканы дөңгелектемейтін өзгермелі нүктелік нұсқаулар үшін енгізілген ерекшеліктерді басқару;
  • Сығымдалған орын ауыстыру (DISP8 * N), командалық байт ағынының кодтау тығыздығын жақсарту үшін жадтың жаңа адрестік режимі; шкала коэффициенті N вектор ұзындығына және тарату режиміне байланысты.

Мысалы, EVEX кодтау схемасы түрінде шартты вектор қосуға мүмкіндік береді

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

Мұндағы тағайындалған операндтың жанындағы {k1} модификатор шартты өңдеу және тағайындауды жаңарту үшін k1 оп маска регистрін пайдалануды кодтайды, ал {z} модификатор (EVEX.z кодталған) маскирлеудің екі түрін ұсынады (біріктіру және нөлдеу) ешқандай модификатор қосылмаған кезде әдепкі бойынша біріктіру.

Техникалық сипаттама

EVEX кодтау схемасында 4-тен тұратын код префиксі қолданылады байт; бірінші байт әрдайым 62 сағатты құрайды және 64 биттік режимде қолданылмайтын 32 биттік BOUND командасының пайдаланылмаған опкодынан шығады. [1]

EVX префиксі AVX-512 нұсқаулық форматында
# байт41114 / 11
[Префикстер]EVEXОпкодModR / M[SIB][Disp32] / [Disp8 * N][Дереу]

ModR / M байты бір операнды (әрқашан регистр) көрсетеді обл өріс, ал екінші операнд кодталған мод және р / м өрістер, регистрді немесе жадтағы орынды көрсететін. Негізгі-плюс-индекс және масштаб-плюс-индекс мекен-жайы үшін 2 битті кодтайтын SIB байты қажет масштаб фактор, сондай-ақ 3 бит индекс және 3 биттік негіз тіркеушілер. Адрес режиміне байланысты Disp8 / Disp16 / Disp32 өрісі мекен-жайға қосылуы керек орын ауыстырумен жалғасуы мүмкін.

EVEX префиксі енгізілген өрістерді сақтайды VEX префиксі:

  • REX префиксінен төрт бит R, X, B және W. W операнд өлшемін 64 битке дейін кеңейтеді немесе қосымша опкод ретінде қызмет етеді, R кеңейеді обл, B кеңейеді р / м немесе облжәне X және B кеңейеді индекс және негіз SIB байтында. VEX префиксіндегі сияқты, RXB да инверттелген түрінде беріледі.
  • V деп аталатын төрт разряд, екінші бұзылмайтын бастапқы регистр операндын көрсетеді. VEX префиксіндегідей, vvvv инверттелген түрінде беріледі.
  • 256-биттік вектор ұзындығын көрсететін L биті.
  • Операнд өлшемінің префикстері мен операнд типті префикстің орнын басатын екі бит (66, F2, F3).
  • Қолданыстағы қашу кодтарын ауыстыруға арналған m биттердің екеуі (0F, 0F 38 және 0F 3A).

Қолданыстағы өрістердің жаңа функциялары:

  • Бит X енді кеңейеді р / м SIB байты болмаған кезде B битімен бірге, бұл 32 SIMD регистріне мүмкіндік береді.

Бірнеше жаңа бит өрістері бар:

  • R ’биті кеңейеді обл. R биті сияқты, R 'инверттелген түрінде беріледі.
  • Бит V 'кеңейеді vvvv. Vvvv биттері сияқты, V 'кері түрінде беріледі.
  • Векторлық нұсқауларға арналған операнд маскасының регистрін (k0-k7) көрсететін а биті.
  • Біріктіру режимін анықтауға арналған z биті (біріктіру немесе нөл).
  • Бастапқы таратылым үшін b биті, дөңгелектеуді басқару (L’L-мен біріктірілген) немесе ерекшеліктерді болдырмау.
  • 512-биттік вектор ұзындығын немесе L-мен біріктірілген басқару режимін дөңгелектеу үшін L ’биті.

EVEX префиксін кодтау келесідей:

76543210
Байт 0 (62с)01100010
1 байт (P0)RXBR ’00м1м0П [7: 0]
2-байт (P1)Wv3v2v1v01б1б0П [15: 8]
3-байт (P2)зL ’LбV ’а2а1а0П [23:16]

Төмендегі кестеде мүмкін болатын регистрлік тіркестердің тізімдері келтірілген (16 жалпы мақсаттағы регистрлерді кодтаған кезде бит 4 әрқашан нөлге тең):

EVEX префиксі арқылы адрестеуді 64-биттік режимде тіркеу
Мекенжай режимі4 битБит 3Биттер [2: 0]Тіркелу түріЖалпы қолдану
REGEVEX.R ’EVEX.RModRM.regЖалпы мақсат, ВекторлықОперандты тіркеңіз
RM (егер ModRM.mod = 11 болса)EVEX.XEVEX.BModRM.r / mGPR, ВекторОперандты тіркеңіз
RM0EVEX.BModRM.r / mGPRЖад мекенжайын тіркеу
НЕГІЗ0EVEX.BSIB.baseGPRНегізгі + индекс * Жадтың адресін масштабтау
ИНДЕКС0EVEX.XИндексGPRНегізгі + индекс * Жадтың адресін масштабтау
VIDXEVEX.V ’EVEX.XИндексВекторлықBase + VectorIndex * Масштабты жадтың мекен-жайы
NDS / NDDEVEX.V ’EVEX.v3v2v1v0GPR, ВекторОперандты тіркеңіз
Қ00EVEX.a2а1а0МаскаМаска регистрі операнд

Бірнеше VEX кодталған AVX араластыру нұсқауларында 4 операнд бар. Осыны ескеру үшін VEX-те IS4 адрестеу режимі бар, ол 4-операндты (векторлық регистр) жедел тұрақтысының Imm8 биттерінде [7: 4] кодтайды. Осындай аралас EVEX кодталған нұсқаулықта маска регистрінде 4-ші операнд бар. EVEX кодталған ешқандай нұсқаулық IS4 адрестік режимін кодтауды қолданбайды.

Әдебиеттер тізімі

  1. ^ Intel корпорациясы (2013 ж. Шілде). «Intel архитектурасы бойынша нұсқаулық кеңейту бағдарламалауының анықтамалығы».