AVX

AVX

Advanced Vector Extensions (AVX) — расширение системы команд x86 для микропроцессоров Intel и AMD, предложенное Intel в марте 2008.[1]

AVX предоставляет различные улучшения, новые инструкции и новую схему кодирования машинных кодов.

Содержание

Улучшения

  • Новая схема кодирования инструкций VEX
  • Размер векторных регистров SIMD увеличивается со 128 (XMM) до 256 бит (регистры YMM0 — YMM15). Существующие 128-битные SSE инструкции будут использовать младшую половину новых YMM регистров, не изменяя старшую часть. Для работы с YMM регистрами добавлены новые 256-битные AVX инструкции. В будущем возможно расширение векторных регистров SIMD до 512 или 1024 бит.
  • Неразрушающие операции. Набор AVX инструкций использует трёхоперандный синтаксис. Например, вместо a=a+b можно использовать c=a+b, при этом регистр a остаётся неизменённым. В случаях, когда значение a используется дальше в вычислениях, это повышает производительность, так как избавляет от необходимости сохранять перед вычислением и восстанавливать после вычисления регистр, содержавший a, из другого регистра или памяти.
  • Для большинства новых инструкций отсутствуют требования к выравниванию операндов в памяти. Однако, рекомендуется следить за выравниванием на размер операнда, во избежание значительного снижения производительности.[2]
  • Набор инструкций AVX содержит в себе аналоги 128-битных SSE инструкций для вещественных чисел. При этом, в отличие от оригиналов, сохранение 128-битного результата будет обнулять старшую половину YMM регистра. 128-битные AVX инструкции сохраняют прочие преимущества AVX, такие как, новая схема кодирования, трехоперандный синтаксис и невыровненный доступ к памяти. Рекомендуется отказаться от старых SSE инструкций в пользу новых 128-битных AVX инструкций, даже если достаточно двух операндов.[3]

Новая схема кодирования

Новая схема кодирования инструкций VEX использует VEX префикс. В настоящий момент существуют два VEX префикса, длиной 2 и 3 байта. Для 2-х байтного VEX префикса первый байт равен 0xC5, для 3-х байтного 0xC4. В 64-битном режиме первый байт VEX префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS.[4] Длина существующих AVX инструкций, вместе с VEX префиксом, не превышает 11 байт. В следующих версиях ожидается появление более длинных инструкций.

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

Инструкция Описание
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Копирует 32-х, 64-х или 128-ми битный операнд из памяти во все элементы векторного регистра XMM или YMM.
VINSERTF128 Замещает младшую или старшую половину 256-ти битного регистра YMM значением 128-ми битного операнда. Другая часть регистра-получателя не изменяется.
VEXTRACTF128 Извлекает младшую или старшую половину 256-ти битного регистра YMM и копирует в 128-ми битный операнд-назначение.
VMASKMOVPS, VMASKMOVPD Условно считывает любое количество элементов из векторного операнда из памяти в регистр-получатель, оставляя остальные элементы несчитанными и обнуляя соответствующие им элементы регистра-получателя. Также может условно записывать любое количество элементов из векторного регистра в векторный операнд в памяти, оставляя остальные элементы операнда памяти неизменёнными
VPERMILPS, VPERMILPD Переставляет 32-х или 64-х битные элементы вектора согласно операнду-селектору (из памяти или из регистра).
VPERM2F128 Переставляет 4 128-ми битных элемента двух 256-ти битных регистров в 256-ти битный операнд-назначение с использованием непосредственной константы (imm) в качестве селектора.
VZEROALL Обнуляет все YMM регистры и помечает их как неиспользуемые. Используется при переключении между 128-ми битным режимом и 256-ти битным.
VZEROUPPER Обнуляет старшие половины всех регистров YMM. Используется при переключении между 128-ми битным режимом и 256-ти битным.

Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)

  • 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 02]
  • PCLMULHQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 03]
  • PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib]

Применение

Подходит для интенсивных вычислений с плавающей точкой в мультимедиа программах и научных задачах. Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.

Поддержка в операционных системах

Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:

  • Linux: с версии ядра 2.6.30,[5] released on June 9, 2009.[6]
  • Windows 7: поддержка добавлена в Service Pack 1 [7]
  • Windows Server 2008 R2: поддержка добавлена в Service Pack 1 [7]

Микропроцессоры с AVX

  • Intel
    • Процессоры с микроархитектурой Sandy Bridge, 2011.[8]
    • Процессоры с микроархитектурой Ivy Bridge, 2012.
  • AMD:
    • Процессоры с микроархитектурой Bulldozer, 2011.[9]
    • Процессоры с микроархитектурой Piledriver, 2012.

Совместимость между реализациями Intel и AMD обсуждается в XOP instruction set.

AVX2:

Будущие расширения

Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, планируется добавить инструкции для работы с целыми числами, FMA3 (увеличит производительность при обработке чисел с плавающей запятой в 2 раза[10]), загрузку распределенного в памяти вектора (gather) и прочее.

Различные планируемые дополнения системы команд x86:

  • AES
  • CLMUL
  • Intel FMA3
  • AMD FMA4
  • AMD XOP
  • AMD CVT16

Примечания

  1. Intel Software Network. Intel. Архивировано из первоисточника 6 апреля 2012. Проверено 5 апреля 2008.
  2. Introduction to Intel® Advanced Vector Extensions - Intel® Software Network
  3. Questions about AVX - Intel® Software Network
  4. Introduction to Intel® Ad ... - Intel® Software Network
  5. x86: add linux kernel support for YMM state. Архивировано из первоисточника 6 апреля 2012. Проверено 13 июля 2009.
  6. Linux 2.6.30 - Linux Kernel Newbies. Архивировано из первоисточника 6 апреля 2012. Проверено 13 июля 2009.
  7. 1 2 Enable Windows 7 Support for Intel AVX. Microsoft. Архивировано из первоисточника 6 апреля 2012. Проверено 29 января 2011.
  8. Intel Offers Peek at Nehalem and Larrabee. ExtremeTech (March 17, 2008).(недоступная ссылка — история)
  9. Striking a balance. Dave Christie, AMD Developer blogs (May 7, 2009). Архивировано из первоисточника 6 апреля 2012. Проверено 8 мая 2009.
  10. 1 2 More details on the future AVX instruction set 2.0 | Tech News Pedia


Наборы расширения базовых инструкций процессоров семейства x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES

Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "AVX" в других словарях:

  • Avx — {{{image}}}   Sigles d une seule lettre   Sigles de deux lettres > Sigles de trois lettres AAA à DZZ EAA à HZZ IAA à LZZ MAA à PZZ QAA à TZZ UAA à XZZ …   Wikipédia en Français

  • AVX —   Sigles d’une seule lettre   Sigles de deux lettres > Sigles de trois lettres   Sigles de quatre lettres   Sigles de cinq lettres   Sigles de six lettres   Sigles de sept… …   Wikipédia en Français

  • AVX — A V X Corporation (Business » NYSE Symbols) …   Abbreviations dictionary

  • AVX — Catalina Island Avalon Bay, CA, USA internationale Flughafen Kennung …   Acronyms

  • AVX — Catalina Island Avalon Bay, CA, USA internationale Fughafen Kennung …   Acronyms von A bis Z

  • AVX — abbr. AntiVirus eXpert …   Dictionary of abbreviations

  • Catalina Airport — AVX forwards here. For the Intel SIMD instruction set, see Advanced Vector Extensions.Infobox Airport name = Catalina Airport image width = 200 caption = Douglas DC 3 on take off image2 width = 150 caption2 = Catalina Airport runway diagram IATA …   Wikipedia

  • Surface-mount technology — (SMT) is a method for constructing electronic circuits in which the components (SMC, or Surface Mounted Components) are mounted directly onto the surface of printed circuit boards (PCBs). Electronic devices so made are called surface mount… …   Wikipedia

  • Tecnología de montaje superficial — Varios dispositivos SMD. La tecnología de montaje superficial, más conocida por sus siglas en inglés SMT (Surface Mount Technology) es el método de construcción de dispositivos electrónicos más utilizado actualmente. Se usa tanto para componentes …   Wikipedia Español

  • Advanced Vector Extensions — (AVX) ist eine Erweiterung des x86 Befehlssatzes für Mikroprozessoren von Intel und AMD, die von Intel im März 2008 vorgeschlagen wurde.[1] Inhaltsverzeichnis 1 Neue Eigenschaften 2 Neue Instruktionen …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»