В Wikibooks есть книга по теме: X86 Assembly/AVX, AVX2, FMA3, FMA4
Расширения архитектуры набора инструкций x86 для микропроцессоров Intel и AMD
Расширения Advanced Vector Extensions ( AVX , также известные как Gesher New Instructions , а затем Sandy Bridge New Instructions ) — расширения SIMD для архитектуры набора инструкций x86 для микропроцессоров Intel и Advanced Micro Devices (AMD). Они были предложены Intel в марте 2008 года и впервые поддержаны Intel с поставкой микроархитектуры Sandy Bridge [1] в первом квартале 2011 года, а затем AMD с поставкой микроархитектуры Bulldozer [2] в четвертом квартале 2011 года. AVX предоставляет новые функции, новые инструкции и новую схему кодирования.
AVX2 (также известный как Haswell New Instructions ) расширяет большинство целочисленных команд до 256 бит и вводит новые инструкции. Они были впервые поддержаны Intel в микроархитектуре Haswell , которая была поставлена в 2013 году.
AVX-512 расширяет поддержку AVX до 512-бит с помощью нового префиксного кодирования EVEX, предложенного Intel в июле 2013 года и впервые поддержанного Intel в сопроцессоре Knights Landing , который был поставлен в 2016 году. [3] [4] В обычных процессорах AVX-512 был представлен с серверными процессорами Skylake и процессорами HEDT в 2017 году.
Расширенные векторные расширения
AVX использует шестнадцать регистров YMM для выполнения одной инструкции над несколькими фрагментами данных (см. SIMD ). Каждый регистр YMM может хранить и выполнять одновременные операции (математика) над:
- восемь 32-битных чисел с плавающей точкой одинарной точности или
- четыре 64-битных числа с плавающей запятой двойной точности.
Ширина регистров SIMD увеличена со 128 бит до 256 бит и переименована с XMM0–XMM7 в YMM0–YMM7 (в режиме x86-64 с XMM0–XMM15 в YMM0–YMM15). Устаревшие инструкции SSE по-прежнему могут использоваться через префикс VEX для работы с нижними 128 битами регистров YMM.
AVX вводит формат инструкций SIMD с тремя операндами, называемый схемой кодирования VEX , где регистр назначения отличается от двух исходных операндов. Например, инструкция SSE, использующая обычную форму с двумя операндами a ← a + b, теперь может использовать неразрушающую форму с тремя операндами c ← a + b , сохраняя оба исходных операнда. Первоначально формат AVX с тремя операндами был ограничен инструкциями с операндами SIMD (YMM) и не включал инструкции с регистрами общего назначения (например, EAX). Позднее он использовался для кодирования новых инструкций на регистрах общего назначения в более поздних расширениях, таких как BMI . Кодирование VEX также используется для инструкций, работающих на регистрах маски k0-k7, которые были введены с AVX-512 .
Требование выравнивания операндов памяти SIMD ослаблено. [5] В отличие от своих аналогов, не закодированных VEX, большинство векторных инструкций с кодировкой VEX больше не требуют, чтобы их операнды памяти были выровнены по размеру вектора. Примечательно, что VMOVDQA
инструкция по-прежнему требует, чтобы ее операнд памяти был выровнен.
Новая схема кодирования VEX вводит новый набор префиксов кода, который расширяет пространство опкода , позволяет инструкциям иметь более двух операндов и позволяет векторным регистрам SIMD быть длиннее 128 бит. Префикс VEX также может использоваться в устаревших инструкциях SSE, придавая им форму с тремя операндами и заставляя их взаимодействовать более эффективно с инструкциями AVX без необходимости VZEROUPPER
и VZEROALL
.
Инструкции AVX поддерживают как 128-битный, так и 256-битный SIMD. 128-битные версии могут быть полезны для улучшения старого кода без необходимости расширения векторизации и избежания штрафа за переход от SSE к AVX, они также быстрее на некоторых ранних реализациях AVX AMD. Этот режим иногда называют AVX-128. [6]
Новые инструкции
Эти инструкции AVX являются дополнением к тем, которые являются 256-битными расширениями устаревших 128-битных инструкций SSE; большинство из них можно использовать как с 128-битными, так и с 256-битными операндами.
Процессоры с AVX
- Интел
- Процессоры Sandy Bridge (Q1 2011) и более новые, за исключением моделей под марками Celeron и Pentium. [9]
- Процессоры под маркой Pentium и Celeron, начиная с Tiger Lake (Q3 2020) и новее. [10]
- АМД :
Вопросы совместимости будущих процессоров Intel и AMD обсуждаются в разделе Набор инструкций XOP .
Поддержка компилятора и ассемблера
- Absoft поддерживает флаг -mavx.
- Компилятор Free Pascal поддерживает AVX и AVX2 с ключами -CfAVX и -CfAVX2, начиная с версии 2.7.1.
- RAD studio (v11.0 Alexandria) поддерживает AVX2 и AVX512. [12]
- Функции встроенной сборки GNU Assembler (GAS) поддерживают эти инструкции (доступные через GCC), как и примитивы Intel и встроенный ассемблер Intel (близко совместимый с GAS, хотя и более общий в своей обработке локальных ссылок внутри встроенного кода). GAS поддерживает AVX, начиная с версии binutils 2.19. [13]
- GCC , начиная с версии 4.6 (хотя существовала ветка 4.3 с определенной поддержкой), и Intel Compiler Suite, начиная с версии 11.1, поддерживают AVX.
- Компилятор Open64 версии 4.5.1 поддерживает AVX с флагом -mavx.
- PathScale поддерживает через флаг -mavx.
- Компилятор Vector Pascal поддерживает AVX через флаг -cpuAVX32.
- Компилятор Visual Studio 2010 / 2012 поддерживает AVX через встроенную поддержку и ключ /arch:AVX.
- NASM начиная с версии 2.03 и новее. В версии 2.04 было множество исправлений ошибок и обновлений, связанных с AVX. [14]
- Другие ассемблеры, такие как MASM версии VS2010, YASM, [15] FASM и JWASM .
Поддержка операционной системы
AVX добавляет новое состояние регистра через 256-битный файл регистров YMM, поэтому для правильного сохранения и восстановления расширенных регистров AVX между переключениями контекста требуется явная поддержка операционной системы . Следующие версии операционных систем поддерживают AVX:
- DragonFly BSD : поддержка добавлена в начале 2013 года.
- FreeBSD : поддержка добавлена в патче, представленном 21 января 2012 года, [16] , который был включен в стабильную версию 9.1. [17]
- Linux : поддерживается с версии ядра 2.6.30, [18] выпущенной 9 июня 2009 г. [19]
- macOS : поддержка добавлена в обновлении 10.6.8 ( Snow Leopard ) [20] [ ненадежный источник? ], выпущенном 23 июня 2011 года. Фактически, macOS Ventura не поддерживает процессоры x86 без набора инструкций AVX2. [21]
- OpenBSD : поддержка добавлена 21 марта 2015 г. [22]
- Solaris : поддерживается в Solaris 10 Update 10 и Solaris 11.
- Windows : поддерживается в Windows 7 SP1, Windows Server 2008 R2 SP1, [23] Windows 8 , Windows 10 .
- Для Windows Server 2008 R2 SP1 с Hyper-V требуется исправление для поддержки процессоров AMD AVX (Opteron 6200 и 4200 серий), KB2568088
- Windows XP и Windows Server 2003 не поддерживают AVX ни в драйверах ядра, ни в пользовательских приложениях.
Расширенные векторные расширения 2
Advanced Vector Extensions 2 (AVX2), также известный как Haswell New Instructions , [24] представляет собой расширение набора инструкций AVX, представленного в микроархитектуре Haswell компании Intel . AVX2 вносит следующие дополнения:
- расширение большинства векторных целочисленных инструкций SSE и AVX до 256 бит
- Получение поддержки, позволяющей загружать векторные элементы из несмежных областей памяти.
- DWORD- и QWORD-гранулярность перестановки любой-в-любой
- сдвиги вектора.
Иногда расширение FMA3 ( Fused Multipure-Accumulate ) с тремя операндами считается частью AVX2, поскольку оно было представлено Intel в той же микроархитектуре процессора. Это отдельное расширение, использующее собственный флаг CPUID , и оно описано на своей странице , а не ниже.
Новые инструкции
Процессоры с AVX2
- Интел
- Процессоры Haswell (2 квартал 2013 г.) и более новые, за исключением моделей под марками Celeron и Pentium.
- Процессоры под марками Celeron и Pentium, начиная с Tiger Lake (Q3 2020) и новее. [10]
- АМД
- С ПОМОЩЬЮ :
AVX-512
AVX-512 — это 512-битные расширения 256-битных инструкций SIMD Advanced Vector Extensions для архитектуры набора инструкций x86, предложенные Intel в июле 2013 года. [3]
Инструкции AVX-512 кодируются с новым префиксом EVEX . Он допускает 4 операнда, 8 новых 64-битных регистров opmask , скалярный режим памяти с автоматической трансляцией, явный контроль округления и режим адресации сжатой памяти смещения . Ширина файла регистров увеличена до 512 бит, а общее количество регистров увеличено до 32 (регистры ZMM0-ZMM31) в режиме x86-64.
AVX-512 состоит из нескольких подмножеств инструкций, не все из которых должны поддерживаться всеми процессорами, реализующими их. Набор инструкций состоит из следующих:
- AVX-512 Foundation (F) – добавляет несколько новых инструкций и расширяет большинство 32- и 64-битных инструкций с плавающей точкой SSE-SSE4.1 и AVX/AVX2 со схемой кодирования EVEX для поддержки 512-битных регистров, масок операций, широковещательной передачи параметров и встроенного округления и управления исключениями.
- Инструкции по обнаружению конфликтов AVX-512 (CD) – эффективное обнаружение конфликтов, позволяющее векторизовать больше циклов, поддерживается Knights Landing [3]
- AVX-512 Экспоненциальные и обратные инструкции (ER) – экспоненциальные и обратные операции, разработанные для реализации трансцендентных операций, поддерживаемых Knights Landing [3]
- Инструкции предварительной выборки AVX-512 (PF) – новые возможности предварительной выборки, поддерживаемые Knights Landing [3]
- Расширения длины вектора AVX-512 (VL) – расширяют большинство операций AVX-512 для работы с регистрами XMM (128 бит) и YMM (256 бит) (включая XMM16-XMM31 и YMM16-YMM31 в режиме x86-64) [25]
- Инструкции AVX-512 Byte and Word (BW) – расширяют AVX-512 для охвата 8-битных и 16-битных целочисленных операций [25]
- Инструкции AVX-512 Doubleword и Quadword (DQ) – улучшенные 32- и 64-битные целочисленные операции [25]
- AVX-512 Integer Fused Multiply Add (IFMA) – объединенное умножение сложение для 512-битных целых чисел. [26] : 746
- Инструкции по манипулированию векторными байтами AVX-512 (VBMI) добавляют инструкции по перестановке векторных байтов, отсутствующие в AVX-512BW.
- Векторные инструкции нейронной сети AVX-512 Word variable precision (4VNNIW) — векторные инструкции для глубокого обучения.
- AVX-512 Fused Multiply Accumulation Packed Single precision (4FMAPS) — векторные инструкции для глубокого обучения.
- VPOPCNTDQ – количество бит установлено в 1. [27]
- VPCLMULQDQ – умножение четверных слов без переноса. [27]
- Векторные инструкции нейронной сети AVX-512 (VNNI) – векторные инструкции для глубокого обучения. [27]
- AVX-512 Galois Field New Instructions (GFNI) – векторные инструкции для расчета поля Галуа . [27]
- AVX-512 Векторные инструкции AES (VAES) – векторные инструкции для кодирования AES . [27]
- AVX-512 Инструкции по векторной обработке байтов 2 (VBMI2) – загрузка байта/слова, сохранение и конкатенация со сдвигом. [27]
- Битовые алгоритмы AVX-512 (BITALG) – инструкции по битовой манипуляции байтами/словами , расширяющие VPOPCNTDQ. [27]
- Инструкции с плавающей точкой AVX-512 Bfloat16 (BF16) — векторные инструкции для ускорения ИИ.
- Инструкции AVX-512 с плавающей точкой половинной точности (FP16) — векторные инструкции для работы с числами с плавающей точкой и комплексными числами с пониженной точностью.
Только расширение ядра AVX-512F (AVX-512 Foundation) требуется для всех реализаций, хотя все текущие реализации также поддерживают CD (обнаружение конфликтов). Все центральные процессоры с AVX-512 также поддерживают VL, DQ и BW. Расширения набора инструкций ER, PF, 4VNNIW и 4FMAPS в настоящее время реализованы только в вычислительных сопроцессорах Intel.
Обновленные инструкции SSE/AVX в AVX-512F используют ту же мнемонику, что и версии AVX; они могут работать с 512-битными регистрами ZMM, а также будут поддерживать 128/256-битные регистры XMM/YMM (с AVX-512VL) и байтовые, словные, двойные и учетверенные целочисленные операнды (с AVX-512BW/DQ и VBMI). [26] : 23
Таблица совместимости процессоров AVX-512
[28]
^Примечание 1 : Intel официально не поддерживает семейство инструкций AVX-512 на микропроцессорах Alder Lake . В начале 2022 года Intel начала отключать в кремнии (сплавлять) AVX-512 в микропроцессорах Alder Lake, чтобы помешать клиентам включать AVX-512. [29]
В старых процессорах семейства Alder Lake с некоторыми устаревшими комбинациями BIOS и ревизий микрокода можно было выполнять инструкции семейства AVX-512 при отключении всех ядер эффективности, которые не содержат кремний для AVX-512. [30] [31] [32]
Компиляторы, поддерживающие AVX-512
- Clang 3.9 и новее [33]
- GCC 4.9 и новее [34]
- ICC 15.0.1 и новее [35]
- Компилятор Microsoft Visual Studio 2017 C++ [36]
Ассемблеры, поддерживающие AVX-512
- ФАСМ
- NASM 2.11 и новее [14]
AVX-VNNI, AVX-IFMA
AVX-VNNI — это VEX -кодированный вариант расширения набора инструкций AVX512-VNNI . Аналогично, AVX-IFMA — это VEX -кодированный вариант AVX512-IFMA . Эти расширения предоставляют те же наборы операций, что и их аналоги AVX-512, но ограничены 256-битными векторами и не поддерживают никаких дополнительных функций кодирования EVEX , таких как широковещательная передача, регистры opmask или доступ к более чем 16 векторным регистрам. Эти расширения позволяют поддерживать операции VNNI и IFMA, даже если полная поддержка AVX-512 не реализована в процессоре.
Процессоры с AVX-VNNI
Процессоры с AVX-IFMA
AVX10
AVX10, анонсированный в июле 2023 года, [38] представляет собой новый, «конвергентный» набор инструкций AVX. Он решает несколько проблем AVX-512, в частности, то, что он разделен на слишком много частей [39] (20 флагов функций) и что он делает 512-битные векторы обязательными для поддержки. AVX10 представляет собой упрощенный интерфейс CPUID для проверки поддержки инструкций, состоящий из номера версии AVX10 (указывающего на набор поддерживаемых инструкций, причем более поздние версии всегда являются надмножеством более ранней) и доступной максимальной длины вектора (256 или 512 бит). [40] Для указания версии и длины вектора используется комбинированная нотация: например, AVX10.2/256 указывает, что ЦП поддерживает вторую версию AVX10 с максимальной шириной вектора 256 бит. [41]
Первая и «ранняя» версия AVX10, обозначенная как AVX10.1, не будет вводить никаких инструкций или функций кодирования, помимо тех, что уже есть в AVX-512 (в частности, в Intel Sapphire Rapids : AVX-512F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, BITALG, VNNI, GFNI, VPOPCNTDQ, VPCLMULQDQ, VAES, BF16, FP16). Вторая и «полнофункциональная» версия, AVX10.2, вводит новые функции, такие как встроенное округление YMM и подавление всех исключений. Для ЦП, поддерживающих AVX10 и 512-битные векторы, все устаревшие флаги функций AVX-512 останутся установленными, чтобы приложения, поддерживающие AVX-512, могли продолжать использовать инструкции AVX-512. [41]
AVX10.1/512 будет доступен в Intel Granite Rapids [41] и AVX10.2/512 в Diamond Rapids. [42]
АПХ
APX — это новое расширение. Оно не ориентировано на векторные вычисления, но обеспечивает RISC-подобные расширения для архитектуры x86-64, удваивая количество регистров общего назначения до 32 и вводя форматы инструкций с тремя операндами. AVX затронут только косвенно, поскольку APX вводит расширенные операнды. [43] [44]
Приложения
- Подходит для вычислений с интенсивным использованием плавающей точки в мультимедийных, научных и финансовых приложениях (AVX2 добавляет поддержку целочисленных операций).
- Увеличивает параллелизм и пропускную способность SIMD- вычислений с плавающей точкой.
- Снижает нагрузку на регистры за счет неразрушающих инструкций.
- Улучшает производительность программного обеспечения Linux RAID (требуется AVX2, AVX недостаточно) [45]
Программное обеспечение
- Криптография
- Bloombase использует AVX, AVX2 и AVX-512 в своем криптографическом модуле Bloombase (BCM).
- Botan использует как AVX, так и AVX2, когда это возможно, для ускорения некоторых алгоритмов, таких как ChaCha.
- Наборы инструментов BSAFE C используют AVX и AVX2 там, где это необходимо, для ускорения различных криптографических алгоритмов. [46]
- Crypto++ использует как AVX, так и AVX2, когда они доступны, для ускорения некоторых алгоритмов, таких как Salsa и ChaCha.
- OpenSSL использует криптографические функции, оптимизированные для AVX и AVX2, начиная с версии 1.0.2. [47] Поддержка AVX-512 была добавлена в версии 3.0.0. [48] Некоторые из этих оптимизаций также присутствуют в различных клонах и форках, таких как LibreSSL.
- Ядро Linux может использовать AVX или AVX2 вместе с AES-NI в качестве оптимизированной реализации криптографического алгоритма AES-GCM .
- Ядро Linux использует AVX или AVX2, если они доступны, в оптимизированной реализации множества других криптографических шифров: Camellia , CAST5 , CAST6 , Serpent , Twofish , MORUS-1280 и других примитивов: Poly1305 , SHA-1 , SHA-256 , SHA-512 , ChaCha20 .
- libsodium использует AVX при реализации скалярного умножения для алгоритмов Curve25519 и Ed25519 , AVX2 для BLAKE2b , Salsa20 , ChaCha20 , а также AVX2 и AVX-512 при реализации алгоритма Argon2 .
- Наука, техника и др.
- Esri ArcGIS Data Store использует AVX2 для хранения графиков. [54]
- Prime95 /MPrime, программное обеспечение, используемое для GIMPS , начало использовать инструкции AVX с версии 27.1, AVX2 с версии 28.6 и AVX-512 с версии 29.1. [55]
- dnetc , программное обеспечение, используемое distributed.net , имеет ядро AVX2, доступное для своего проекта RC5, и вскоре выпустит его для своего проекта OGR-28.
- Einstein@Home использует AVX в некоторых своих распределенных приложениях, которые ищут гравитационные волны . [56]
- Folding@home использует AVX на вычислительных ядрах, реализованных с помощью библиотеки GROMACS .
- Helios использует аппаратное ускорение AVX и AVX2 на 64-битном оборудовании x86. [57]
- Horizon: Zero Dawn использует AVX в своем игровом движке Decima.
- PCSX2 и RPCS3 — это эмуляторы PS2 и PS3 с открытым исходным кодом соответственно, которые используют инструкции AVX2 и AVX-512 для эмуляции игр.
- Интерфейс сетевых устройств — протокол IP-видео/аудио, разработанный NewTek для производства прямых трансляций, использующий AVX и AVX2 для повышения производительности.
- TensorFlow , начиная с версии 1.6 и выше, требует наличия процессора, поддерживающего как минимум AVX. [58]
- Различные майнеры криптовалют на базе CPU (например, pooler's cpuminer для Bitcoin и Litecoin ) используют AVX и AVX2 для различных процедур, связанных с криптографией, включая SHA-256 и scrypt .
- FFTW может использовать AVX, AVX2 и AVX-512, если они доступны.
- LLVMpipe, программный рендерер OpenGL в Mesa , использующий Gallium и инфраструктуру LLVM , использует AVX2, если он доступен.
- glibc использует AVX2 (с FMA ) и AVX-512 для оптимизированной реализации различных математических (т. е
expf
. sinf
, powf
, , atanf
, atan2f
) и строковых ( memmove
, memcpy
, и т. д.) функций в libc . - POCL, переносимый язык программирования, обеспечивающий реализацию OpenCL , использует AVX, AVX2 и AVX-512, когда это возможно.
- .NET и .NET Framework могут использовать AVX, AVX2 через общее
System.Numerics.Vectors
пространство имен. - .NET Core , начиная с версии 2.1 и более широко после версии 3.0, может напрямую использовать все встроенные функции AVX, AVX2 через
System.Runtime.Intrinsics.X86
пространство имен. - EmEditor 19.0 и выше использует AVX2 для ускорения обработки. [59]
- Microsoft Teams использует инструкции AVX2 для создания размытого или настраиваемого фона позади участников видеочата [60] , а также для подавления фонового шума. [61]
- Пользовательские сборки Windows Pale Moon значительно увеличивают скорость работы браузера за счет использования AVX2.
- simdjson, библиотека анализа JSON , использует AVX2 и AVX-512 для достижения улучшенной скорости декодирования. [62] [63]
- x86-simd-sort, библиотека с алгоритмами сортировки для 16, 32 и 64-битных числовых типов данных, использует AVX2 и AVX-512. Библиотека используется в NumPy и OpenJDK для ускорения алгоритмов сортировки. [64]
- zlib-ng, оптимизированная версия zlib , содержит версии AVX2 и AVX-512 некоторых алгоритмов сжатия данных.
- Движок Tesseract OCR использует AVX, AVX2 и AVX-512 для ускорения распознавания символов. [65]
Понижение частоты
Поскольку инструкции AVX шире, они потребляют больше энергии и выделяют больше тепла. Выполнение тяжелых инструкций AVX на высоких тактовых частотах ЦП может повлиять на стабильность ЦП из-за чрезмерного падения напряжения во время переходных процессов нагрузки. Некоторые процессоры Intel имеют возможности для снижения предела частоты Turbo Boost при выполнении таких инструкций. Это снижение происходит, даже если ЦП не достиг своих пределов по теплу и энергопотреблению. В Skylake и его производных троттлинг разделен на три уровня: [66] [67]
- L0 (100%): Нормальный предел турбонаддува.
- L1 (~85%): предел "AVX boost". Мягко запускается 256-битными "тяжелыми" (блок с плавающей точкой: математика FP и целочисленное умножение) инструкциями. Жестко запускается "легкими" (все остальные) 512-битными инструкциями.
- L2 (~60%): [ сомнительно – обсудить ] Предел «усиления AVX-512». Мягко запускается 512-битными тяжелыми инструкциями.
Переход частоты может быть мягким или жестким. Жесткий переход означает, что частота уменьшается, как только такая инструкция обнаружена; мягкий переход означает, что частота уменьшается только после достижения порогового числа соответствующих инструкций. Ограничение действует на поток. [66]
В Ледяном озере сохранились только два уровня: [68]
- L0 (100%): Нормальный предел турбонаддува.
- L1 (~97%): запускается любыми 512-битными инструкциями, но только когда активен одноядерный Boost; не запускается, когда загружено несколько ядер.
Процессоры Rocket Lake не запускают снижение частоты при выполнении любых векторных инструкций независимо от размера вектора. [68] Однако понижение частоты все равно может происходить по другим причинам, таким как достижение пределов по температуре и мощности.
Понижение тактовой частоты означает, что использование AVX в смешанной рабочей нагрузке с процессором Intel может повлечь за собой штраф частоты. Избегание использования широких и тяжелых инструкций помогает минимизировать влияние в этих случаях. AVX-512VL позволяет использовать 256-битные или 128-битные операнды в инструкциях AVX-512, что делает его разумным значением по умолчанию для смешанных нагрузок. [69]
На поддерживаемых и разблокированных вариантах процессоров, которые понижают тактовую частоту, смещения снижения тактового коэффициента (обычно называемые смещениями AVX и AVX-512) являются регулируемыми и могут быть полностью отключены (установлены на 0x) с помощью утилиты разгона/настройки Intel или в BIOS, если там поддерживается такая возможность. [70]
Смотрите также
Ссылки
- ^ Кантер, Дэвид (25 сентября 2010 г.). «Микроархитектура Sandy Bridge от Intel». www.realworldtech.com . Получено 17 февраля 2018 г. .
- ^ Hruska, Joel (24 октября 2011 г.). «Анализ Bulldozer: почему чип AMD так разочаровывает — Страница 4 из 5 — ExtremeTech». ExtremeTech . Получено 17 февраля 2018 г. .
- ^ abcde Джеймс Рейндерс (23 июля 2013 г.), Инструкции AVX-512, Intel , получено 20 августа 2013 г.
- ^ "Процессор Intel Xeon Phi 7210 (16 ГБ, 1,30 ГГц, 64 ядра) Технические характеристики продукта". Intel ARK (Технические характеристики продукта) . Получено 16 марта 2018 г. .
- ^ "14.9". Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура (PDF) (ред. -051US). Корпорация Intel. стр. 349. Получено 23 августа 2014 г. Аргументы
памяти для большинства инструкций с префиксом VEX работают нормально, не вызывая #GP(0) при любом выравнивании байтовой гранулярности (в отличие от устаревших инструкций SSE).
- ^ "Параметры i386 и x86-64 - Использование коллекции компиляторов GNU (GCC)" . Получено 9 февраля 2014 г. .
- ^ "Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов ассемблера и производителей компиляторов" (PDF) . Получено 17 октября 2016 г.
- ^ "Шахматное программирование AVX2". Архивировано из оригинала 10 июля 2017 г. Получено 17 октября 2016 г.
- ^ "Intel предлагает взглянуть на Nehalem и Larrabee". ExtremeTech. 17 марта 2008 г.
- ^ ab "Характеристики продукта процессора Intel® Celeron® 6305 (кэш 4 МБ, 1,80 ГГц, с IPU)". ark.intel.com . Получено 10 ноября 2020 г. .
- ^ Батлер, Майкл; Барнс, Лесли; Дас Сарма, Дебжит; Гелинас, Боб (март–апрель 2011 г.). «Bulldozer: An Approach to Multithreaded Compute Performance» (PDF) . IEEE Micro . 31 (2): 6–15. doi :10.1109/MM.2011.23. S2CID 28236214. Архивировано из оригинала (PDF) 19 мая 2024 г.
- ^ "Что нового - RAD Studio". docwiki.embarcadero.com . Получено 17 сентября 2021 г. .
- ^ "GAS Changes". sourceware.org . Получено 3 мая 2024 г. .
- ^ ab "NASM - The Netwide Assembler, Приложение C: История версий NASM". nasm.us . Получено 3 мая 2024 г. .
- ^ "Примечания к выпуску YASM 0.7.0". yasm.tortall.net .
- ^ Добавить поддержку расширенных состояний FPU на amd64, как для собственных 64-битных, так и для 32-битных ABI, svnweb.freebsd.org, 21 января 2012 г. , получено 22 января 2012 г.
- ^ "Анонс FreeBSD 9.1-RELEASE" . Получено 20 мая 2013 г. .
- ^ x86: добавить поддержку ядра Linux для состояния YMM , получено 13 июля 2009 г.
- ↑ Linux 2.6.30 - Linux Kernel Newbies , получено 13 июля 2009 г.
- ↑ Twitter , получено 23 июня 2010 г.
- ^ «Разработчики добиваются прогресса в запуске macOS Ventura на неподдерживаемых компьютерах Mac десятилетней давности». 23 августа 2022 г.
- ^ Добавить поддержку сохранения/восстановления состояния FPU с помощью XSAVE/XRSTOR. , получено 25 марта 2015 г.
- ^ Поддержка операций с плавающей точкой для 64-битных драйверов , получено 6 декабря 2009 г.
- ^ Haswell New Instruction Descriptions Now Available, Software.intel.com , получено 17 января 2012 г.
- ^ abc James Reinders (17 июля 2014 г.). "Дополнительные инструкции AVX-512". Intel . Получено 3 августа 2014 г. .
- ^ ab "Справочник по программированию расширений набора инструкций архитектуры Intel" (PDF) . Intel . Получено 29 января 2014 г. .
- ^ abcdefg "Справочник по программированию расширений набора инструкций архитектуры Intel® и будущих функций". Intel . Получено 16 октября 2017 г. .
- ^ "Intel® Software Development Emulator | Intel® Software". software.intel.com . Получено 11 июня 2016 г. .
- ^ Alcorn, Paul (2 марта 2022 г.). «Intel Nukes Alder Lake's AVX-512 Support, Now Fuses It Off in Silicon». Tom's Hardware . Получено 7 марта 2022 г.
- ^ Кютресс, Ян; Фрумусану, Андрей (19 августа 2021 г.). «День архитектуры Intel 2021: подробное описание Олдер-Лейк, Голден-Коув и Грейсмонта». AnandTech . Получено 25 августа 2021 г. .
- ^ Alcorn, Paul (19 августа 2021 г.). «День архитектуры Intel 2021: чипы Alder Lake, ядра Golden Cove и Gracemont». Tom's Hardware . Получено 21 августа 2021 г.
- ^ Кютресс, Ян; Фрумусану, Андрей. «Обзор Intel 12th Gen Core i9-12900K: гибридная производительность приносит гибридную сложность». www.anandtech.com . Получено 5 ноября 2021 г.
- ^ "LLVM 3.9 Release Notes — LLVM 3.9 documentation". releases.llvm.org . Получено 3 апреля 2017 г. .
- ^ "GCC 4.9 Release Series — Changes, New Features, and Fixes – GNU Project - Free Software Foundation (FSF)". gcc.gnu.org . Получено 3 апреля 2017 г. .
- ^ "Intel® Parallel Studio XE 2015 Composer Edition C++ Release Notes | Intel® Software". software.intel.com . Получено 3 апреля 2017 г. .
- ^ «Microsoft Visual Studio 2017 поддерживает Intel® AVX-512». 11 июля 2017 г.
- ^ «Поддержка компилятора AMD Zen 5 опубликована для GCC — подтверждены новые функции AVX и многое другое». www.phoronix.com . Получено 10 февраля 2024 г. .
- ^ Боншор, Гэвин (25 июля 2023 г.). «Intel представляет наборы инструкций AVX10 и APX: унификация AVX-512 для гибридных архитектур». AnandTech . Получено 21 августа 2024 г.
- ^ Манн, Тобиас (15 августа 2023 г.). «AVX10 от Intel обещает преимущества AVX-512 без проблем». www.theregister.com . Получено 20 августа 2023 г. .
- ^ "Конвергентная векторная ISA: Технический документ Intel® Advanced Vector Extensions 10". Intel .
- ^ abc "Спецификация архитектуры Intel® Advanced Vector Extensions 10 (Intel® AVX10)". Intel .
- ^ Ларабель, Майкл (23 октября 2024 г.). «Intel готовит компилятор GCC для новых функций AMX и ISA в преддверии Diamond Rapids». Phoronix . Получено 23 октября 2024 г. .
- ^ «Спецификация архитектуры Intel® Advanced Performance Extensions (Intel® APX)». Intel.
- ^ Робинсон, Дэн (26 июля 2023 г.). «Intel раскрывает инструкции x86 и vector для будущих чипов». www.theregister.com . Получено 20 августа 2023 г. .
- ^ "Linux RAID". LWN. 17 февраля 2013 г. Архивировано из оригинала 15 апреля 2013 г.
- ^ «Сравнение реализаций криптографической библиотеки BSAFE». 25 июля 2023 г.
- ^ "Улучшение производительности OpenSSL". 26 мая 2015 г. Получено 28 февраля 2017 г.
- ^ "Заметки о выпуске OpenSSL 3.0.0". GitHub . 7 сентября 2021 г.
- ^ Ярош, Милан; Стракош, Петр; Ржиха, Любомир (28 мая 2022 г.). «Рендеринг в Blender с использованием векторизации AVX-512» (PDF) . Группа пользователей Intel eXtreme Performance . Технический университет Остравы . Проверено 28 октября 2022 г.
- ^ "MASSIVE X требует процессор, совместимый с AVX". Native Instruments . Получено 29 ноября 2019 г. .
- ^ "dav1d: производительность и завершение первого выпуска". 21 ноября 2018 г. Получено 22 ноября 2018 г.
- ^ "Заметки о выпуске dav1d 0.6.0". 6 марта 2020 г.
- ^ "Заметки о выпуске SVT-AV1 0.7.0". 26 сентября 2019 г.
- ^ "Системные требования ArcGIS Data Store 11.2". ArcGIS Enterprise . Получено 24 января 2024 г. .
- ^ "Примечания к выпуску Prime95" . Получено 10 июля 2022 г. .
- ^ «Приложения Einstein@Home».
- ^ "FAQ, Helios". Helios . Получено 5 июля 2021 г. .
- ^ "Tensorflow 1.6". GitHub .
- ^ Новое в версии 19.0 – EmEditor (текстовый редактор)
- ^ "Требования к оборудованию для Microsoft Teams". Microsoft . Получено 17 апреля 2020 г. .
- ^ "Уменьшение фонового шума на собраниях Teams". Поддержка Microsoft . Получено 5 января 2021 г.
- ^ Лэнгдейл, Джефф; Лемир, Дэниел (2019). «Анализ гигабайт JSON в секунду». Журнал VLDB . 28 (6): 941–960. arXiv : 1902.08318 . doi : 10.1007/s00778-019-00578-5. S2CID 67856679.
- ^ "simdjson 2.1.0 release notes". GitHub . 30 июня 2022 г.
- ^ Ларабель, Майкл (6 октября 2023 г.). «OpenJDK объединяет x86-simd-sort от Intel для ускорения сортировки данных в 7–15 раз». Phoronix .
- ^ Ларабель, Майкл (7 июля 2022 г.). «Tesseract OCR 5.2 Engine находит успех с AVX-512F». Phoronix .
- ^ ab Lemire, Daniel (7 сентября 2018 г.). "AVX-512: когда и как использовать эти новые инструкции". Блог Daniel Lemire .
- ^ BeeOnRope. "Инструкции SIMD снижают частоту процессора". Stack Overflow .
- ^ ab Downs, Travis (19 августа 2020 г.). "Понижение тактовой частоты Ice Lake AVX-512". Блог Performance Matters .
- ^ "x86 - производительность AVX 512 против AVX2 для простых циклов обработки массивов". Stack Overflow .
- ^ "Intel® Extreme Tuning Utility (Intel® XTU) Руководство по разгону: Расширенная настройка". Intel . Получено 18 июля 2021 г. См .
изображение в связанном разделе, где коэффициент AVX2 установлен на 0.
Внешние ссылки
- Руководство по встроенным функциям Intel
- Справочное руководство по языку ассемблера x86