что такое avx в играх
Запуск игры без AVX — что это такое?
Приветствую ребята))
Коротко ответ: запуск игры на процессоре без поддержки AVX-инструкций. Обычно это старые процессоры, в итоге игра может работать, но возможно с меньшей производительностью.
Все современные процессоры поддерживают AVX. Вот например старый i7 2600K (1155 сокет) уже поддерживает AVX, но первую версию, а i7 860 (1156 сокет) — вообще не поддерживает, но правда он еще старее чем i7 2600K. Кстати легендарный процессор Q9650 (775 сокет) разумеется и близко не знает про AVX.
AVX — что это такое? Еще есть AVX2. Это улучшенные версии старых инструкций SSE. Простыми словами — это специальные инструкции, которые помогают процессору работать быстрее с некоторыми вычислениями. Они созданы как для процов Интел, так и для АМД. AVX расшифровывается как Advanced Vector Extensions.
Ну а что делают инструкции AVX? Все просто — процессор без поддержки AVX за один такт сможет сложить 1 пару чисел, а с поддержкой — уже 10. Однако это все нужно не так часто, как нам кажется, по большей части эффект заметен в профессиональных программах, а в играх не так заметно. Возможно современные игры уже больше могут использовать AVX.
Как узнать — поддерживает ли процессор AVX? Очень просто — скачайте бесплатную утилиту CPU-Z, она маленькая, неприхотливая, запустите ее и посмотрите какие инструкции поддерживает ваш проц:
Вот выше на картинке — проц i5 7400, вполне современный, как видим он поддерживает и просто AVX и более новую версию AVX2. Впрочем ничего удивительного — i5 7400 это седьмое поколение, а это 2017 год.
Надеюсь данная информация оказалась полезной. Удачи и добра, до новых встреч друзья!
Сегодня хочу завести разговор на тему, что такое avx инструкции в процессоре, где и для чего они используются.
Зачем нужны AVX инструкции
Без AVX тоже можно обрабатывать фоточки, жевать видео и пилить три-дэ. Но есть нюансы.
Если по-проще, то старый 8-ядерный Xeon (не умеющий AXV) будет пилить видосы с той же скоростью что современный i3 (умеющий AVX).
У процессора есть конвейер: узнал откуда брать из памяти, взял из памяти, вычислил, отправил результаты в память.
Упрощенно конвейер с и без AVX можно изобразить так.
Еще одна вкусность AVX это дополнительный операнд. Используется не 2 операнда а 3, что так же сокращает конвейер. Допустим мы хотим сложить X и Y.
Код: Обычная операция, где 2 операнда (X=X+Y) заставит перезаписывать один из операндов.
AVX операция, где 3 операнда (Z=X+Y) позволяет записать результат в третий операнд.
Сложна? Ок, давайте бум прощэ.
Новейшее функциональное расширение AVX512 (Advanced Vector Extension 512-bit), также известное под именем AVX3, состоит из девяти технологий, каждая из которых может опционально поддерживаться или не поддерживаться конкретным процессором. Ряд внедрений рассматриваемого семейства, связанных с операциями повышенной разрядности, уже применяется в сопроцессорах Intel Xeon Phi и опционально доступны в процессорах Xeon с микроархитектурой Skylake. Напомним, что сопроцессоры Xeon Phi предназначены для установки в PCI Express слот.
Базовая функциональность AVX512
Как следует из несложных подсчетов, новое 512-битное операционное устройство способно обрабатывать 8 64-битных чисел двойной точности либо 16 32-битных чисел одинарной точности за одну векторную команду.
В базовый набор AVX512F также входит предикатное выполнение векторных операций. Это означает, что при обработке чисел, упакованных в 512-битном регистре, операция может быть выполнена или отменена, индивидуально для каждого числа. Например, при обработке 16 32-битных чисел одинарной точности, 16-битный предикат, содержащий все «единицы» обеспечит выполнение операции для всех чисел. Если все биты предиката нулевые, операция не выполняется. А установив, например два младших бита предиката, можно выполнить операцию для двух первых чисел, оставив остальные числа незатронутыми. Для хранения предикатов вводится 8 дополнительных 64-битных регистров K0–K7.
Аппаратное выявление конфликтов
Опережающая загрузка данных
Рис 2
Вычисление экспоненты и обратных величин
Операции переменной разрядности
Обработка байтов и 16-битных операндов
Обработка 32 и 64-битных операндов
Совмещенное умножение-сложение для 52-битных операндов
Операции с байтами в составе векторных регистров
Резюме
Как видно из вышеизложенного, расширение AVX512 подразумевает введение новых процессорных команд и архитектурных ресурсов. Поэтому, прибавку производительности получит только то программное обеспечение, которое написано и оптимизировано с учетом новой технологии.
Очевидно, для работы такой технологии требуется поддержка и со стороны операционной системы, поскольку увеличение количества и разрядности регистров приводит к увеличению количества информации, которую требуется сохранять и восстанавливать при переключении контекста процессора в многозадачной среде. Отметим, что компания Intel максимально унифицировала
Улучшения
Новая схема кодирования
Новая схема кодирования инструкций VEX использует VEX префикс. В настоящий момент существуют два VEX префикса, длиной 2 и 3 байта. Для 2-х байтного VEX префикса первый байт равен 0xC5, для 3-х байтного 0xC4. В 64-битном режиме первый байт VEX префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS. Длина существующих 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)
Применение
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа программах и научных задачах. Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.
Поддержка в операционных системах
Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:
Микропроцессоры с AVX
Будущие расширения
Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, планируется добавить инструкции для работы с целыми числами, FMA3 (увеличит производительность при обработке чисел с плавающей запятой в 2 раза ), загрузку распределенного в памяти вектора (gather) и прочее.
Различные планируемые дополнения системы команд x86 :
Примечания
Наборы расширения базовых инструкций процессоров семейства x86 |
---|
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES |
Смотреть что такое «AVX» в других словарях:
Описание тестовых систем и методики тестирования
Полный список задействованных в тестовых системах комплектующих выглядит следующим образом:
Тестирование выполнялось в операционной системе Microsoft Windows 10 Enterprise Build 10586 с использованием следующего комплекта драйверов:
Описание использовавшихся для измерения вычислительной производительности инструментов:
Действительно, благодаря открывшимся возможностям разгона у покупателей появились новые аргументы в пользу перехода на платформу LGA1151. Нет никаких сомнений, что это в определённой степени простимулирует продажи новых процессоров. Попутно получат новых клиентов и производители плат, которые наверняка смогут увеличить продажи моделей на базе Intel Z170. Внакладе не останутся и пользователи из числа энтузиастов. Перед ними открывается не только дополнительный простор для экспериментов, но и возможность извлечь вполне очевидную финансовую выгоду. Ведь теперь оверклокерские системы можно собирать из более дешёвых, чем раньше, комплектующих.
Впрочем, даже если вас интересуют исключительно игры и программы, где AVX/AVX2-расширения не используются и использоваться заведомо не будут, появившаяся у неоверклокерских процессоров поколения Skylake возможность разгона совсем не означает, что вы, выражаясь фигурально, сможете отмотать время назад и вернуться в золотой век Celeron 300A. В реалиях сегодняшнего дня нарастить производительность дешёвого процессора до уровня флагмана невозможно ни при каких обстоятельствах. После того как в середине 2000-х годов Intel поделила ассортимент потребительских процессоров на классы по числу вычислительных ядер и перечню поддерживаемых технологий, любая «межклассовая борьба» безвозвратно ушла в прошлое. И это наглядно показали проведённые тесты. Младший Core i3-6100 может претендовать лишь на то, чтобы при разгоне пытаться дотянуться до быстродействия начальных моделей Core i5. А младший Core i5-6400 может попробовать побороться с Core i5-6600K, но замахнуться на соперничество с Core i7-6700K ему, естественно, не по силам.
Наборы инструкций SSE4.2
Операция чтения, позволяющая ускорить (до 7.5 раз) работу с write-combining областями памяти.
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обоих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
AVX предоставляет различные улучшения, новые инструкции и новую схему кодирования машинных кодов.
Неразрушающие операции. Набор инструкций AVX позволяет использовать любую двухоперандную инструкцию XMM в трёхоперандном виде без модификации двух регистров-источников, с отдельным регистром для результата. Например, вместо a = a + b можно использовать c = a + b, при этом регистр a остаётся неизменённым. AVX не поддерживает неразрушающие формы операций над обычными регистрами общего назначения, такими как EAX, но такая поддержка, возможно, будет добавлена в последующих расширениях.
Требования выравнивания данных для операндов SIMD в памяти ослаблены.
Новая система кодирования машинных кодов VEX предоставляет новый набор префиксов кода, которые расширяют пространство возможных машинных кодов. Добавлены инструкции с количеством операндов более трёх. Векторные регистры SIMD могут быть больше 128-ми бит.
Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа, научных и финансовых задачах. Увеличивает степень параллелизма и пропускную способность в вещественных SIMD вычислениях. Уменьшает давление (нагрузку) на регистры благодаря неразрушающим трёхоперандным операциям.
Сегодня хочу завести разговор на тему, что такое avx инструкции в процессоре, где и для чего они используются.
Зачем нужны AVX инструкции
Без AVX тоже можно обрабатывать фоточки, жевать видео и пилить три-дэ. Но есть нюансы.
Если по-проще, то старый 8-ядерный Xeon (не умеющий AXV) будет пилить видосы с той же скоростью что современный i3 (умеющий AVX).
У процессора есть конвейер: узнал откуда брать из памяти, взял из памяти, вычислил, отправил результаты в память.
Упрощенно конвейер с и без AVX можно изобразить так.
Еще одна вкусность AVX это дополнительный операнд. Используется не 2 операнда а 3, что так же сокращает конвейер. Допустим мы хотим сложить X и Y.
Код: Обычная операция, где 2 операнда (X=X+Y) заставит перезаписывать один из операндов.
AVX операция, где 3 операнда (Z=X+Y) позволяет записать результат в третий операнд.
Сложна? Ок, давайте бум прощэ.
Новейшее функциональное расширение AVX512 (Advanced Vector Extension 512-bit), также известное под именем AVX3, состоит из девяти технологий, каждая из которых может опционально поддерживаться или не поддерживаться конкретным процессором. Ряд внедрений рассматриваемого семейства, связанных с операциями повышенной разрядности, уже применяется в сопроцессорах Intel Xeon Phi и опционально доступны в процессорах Xeon с микроархитектурой Skylake. Напомним, что сопроцессоры Xeon Phi предназначены для установки в PCI Express слот.
Базовая функциональность AVX512
Как следует из несложных подсчетов, новое 512-битное операционное устройство способно обрабатывать 8 64-битных чисел двойной точности либо 16 32-битных чисел одинарной точности за одну векторную команду.
В базовый набор AVX512F также входит предикатное выполнение векторных операций. Это означает, что при обработке чисел, упакованных в 512-битном регистре, операция может быть выполнена или отменена, индивидуально для каждого числа. Например, при обработке 16 32-битных чисел одинарной точности, 16-битный предикат, содержащий все «единицы» обеспечит выполнение операции для всех чисел. Если все биты предиката нулевые, операция не выполняется. А установив, например два младших бита предиката, можно выполнить операцию для двух первых чисел, оставив остальные числа незатронутыми. Для хранения предикатов вводится 8 дополнительных 64-битных регистров K0–K7.
Аппаратное выявление конфликтов
Опережающая загрузка данных
Рис 2
Вычисление экспоненты и обратных величин
Операции переменной разрядности
Обработка байтов и 16-битных операндов
Обработка 32 и 64-битных операндов
Совмещенное умножение-сложение для 52-битных операндов
Операции с байтами в составе векторных регистров
Резюме
Как видно из вышеизложенного, расширение AVX512 подразумевает введение новых процессорных команд и архитектурных ресурсов. Поэтому, прибавку производительности получит только то программное обеспечение, которое написано и оптимизировано с учетом новой технологии.
Очевидно, для работы такой технологии требуется поддержка и со стороны операционной системы, поскольку увеличение количества и разрядности регистров приводит к увеличению количества информации, которую требуется сохранять и восстанавливать при переключении контекста процессора в многозадачной среде. Отметим, что компания Intel максимально унифицировала
Улучшения
Новая схема кодирования
Новая схема кодирования инструкций VEX использует VEX префикс. В настоящий момент существуют два VEX префикса, длиной 2 и 3 байта. Для 2-х байтного VEX префикса первый байт равен 0xC5, для 3-х байтного 0xC4. В 64-битном режиме первый байт VEX префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS. Длина существующих 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)
Применение
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа программах и научных задачах. Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.
Поддержка в операционных системах
Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:
Микропроцессоры с AVX
Будущие расширения
Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, планируется добавить инструкции для работы с целыми числами, FMA3 (увеличит производительность при обработке чисел с плавающей запятой в 2 раза ), загрузку распределенного в памяти вектора (gather) и прочее.
Различные планируемые дополнения системы команд x86 :
Примечания
Наборы расширения базовых инструкций процессоров семейства x86 |
---|
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES |
Смотреть что такое «AVX» в других словарях:
Описание тестовых систем и методики тестирования
Полный список задействованных в тестовых системах комплектующих выглядит следующим образом:
Тестирование выполнялось в операционной системе Microsoft Windows 10 Enterprise Build 10586 с использованием следующего комплекта драйверов:
Описание использовавшихся для измерения вычислительной производительности инструментов:
Действительно, благодаря открывшимся возможностям разгона у покупателей появились новые аргументы в пользу перехода на платформу LGA1151. Нет никаких сомнений, что это в определённой степени простимулирует продажи новых процессоров. Попутно получат новых клиентов и производители плат, которые наверняка смогут увеличить продажи моделей на базе Intel Z170. Внакладе не останутся и пользователи из числа энтузиастов. Перед ними открывается не только дополнительный простор для экспериментов, но и возможность извлечь вполне очевидную финансовую выгоду. Ведь теперь оверклокерские системы можно собирать из более дешёвых, чем раньше, комплектующих.
Впрочем, даже если вас интересуют исключительно игры и программы, где AVX/AVX2-расширения не используются и использоваться заведомо не будут, появившаяся у неоверклокерских процессоров поколения Skylake возможность разгона совсем не означает, что вы, выражаясь фигурально, сможете отмотать время назад и вернуться в золотой век Celeron 300A. В реалиях сегодняшнего дня нарастить производительность дешёвого процессора до уровня флагмана невозможно ни при каких обстоятельствах. После того как в середине 2000-х годов Intel поделила ассортимент потребительских процессоров на классы по числу вычислительных ядер и перечню поддерживаемых технологий, любая «межклассовая борьба» безвозвратно ушла в прошлое. И это наглядно показали проведённые тесты. Младший Core i3-6100 может претендовать лишь на то, чтобы при разгоне пытаться дотянуться до быстродействия начальных моделей Core i5. А младший Core i5-6400 может попробовать побороться с Core i5-6600K, но замахнуться на соперничество с Core i7-6700K ему, естественно, не по силам.
Наборы инструкций SSE4.2
Операция чтения, позволяющая ускорить (до 7.5 раз) работу с write-combining областями памяти.
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обоих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
AVX предоставляет различные улучшения, новые инструкции и новую схему кодирования машинных кодов.
Неразрушающие операции. Набор инструкций AVX позволяет использовать любую двухоперандную инструкцию XMM в трёхоперандном виде без модификации двух регистров-источников, с отдельным регистром для результата. Например, вместо a = a + b можно использовать c = a + b, при этом регистр a остаётся неизменённым. AVX не поддерживает неразрушающие формы операций над обычными регистрами общего назначения, такими как EAX, но такая поддержка, возможно, будет добавлена в последующих расширениях.
Требования выравнивания данных для операндов SIMD в памяти ослаблены.
Новая система кодирования машинных кодов VEX предоставляет новый набор префиксов кода, которые расширяют пространство возможных машинных кодов. Добавлены инструкции с количеством операндов более трёх. Векторные регистры SIMD могут быть больше 128-ми бит.
Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа, научных и финансовых задачах. Увеличивает степень параллелизма и пропускную способность в вещественных SIMD вычислениях. Уменьшает давление (нагрузку) на регистры благодаря неразрушающим трёхоперандным операциям.
Сегодня хочу завести разговор на тему, что такое avx инструкции в процессоре, где и для чего они используются.
Зачем нужны AVX инструкции
Без AVX тоже можно обрабатывать фоточки, жевать видео и пилить три-дэ. Но есть нюансы.
Если по-проще, то старый 8-ядерный Xeon (не умеющий AXV) будет пилить видосы с той же скоростью что современный i3 (умеющий AVX).
У процессора есть конвейер: узнал откуда брать из памяти, взял из памяти, вычислил, отправил результаты в память.
Упрощенно конвейер с и без AVX можно изобразить так.
Еще одна вкусность AVX это дополнительный операнд. Используется не 2 операнда а 3, что так же сокращает конвейер. Допустим мы хотим сложить X и Y.
Код: Обычная операция, где 2 операнда (X=X+Y) заставит перезаписывать один из операндов.
AVX операция, где 3 операнда (Z=X+Y) позволяет записать результат в третий операнд.
Сложна? Ок, давайте бум прощэ.
Новейшее функциональное расширение AVX512 (Advanced Vector Extension 512-bit), также известное под именем AVX3, состоит из девяти технологий, каждая из которых может опционально поддерживаться или не поддерживаться конкретным процессором. Ряд внедрений рассматриваемого семейства, связанных с операциями повышенной разрядности, уже применяется в сопроцессорах Intel Xeon Phi и опционально доступны в процессорах Xeon с микроархитектурой Skylake. Напомним, что сопроцессоры Xeon Phi предназначены для установки в PCI Express слот.
Базовая функциональность AVX512
Как следует из несложных подсчетов, новое 512-битное операционное устройство способно обрабатывать 8 64-битных чисел двойной точности либо 16 32-битных чисел одинарной точности за одну векторную команду.
В базовый набор AVX512F также входит предикатное выполнение векторных операций. Это означает, что при обработке чисел, упакованных в 512-битном регистре, операция может быть выполнена или отменена, индивидуально для каждого числа. Например, при обработке 16 32-битных чисел одинарной точности, 16-битный предикат, содержащий все «единицы» обеспечит выполнение операции для всех чисел. Если все биты предиката нулевые, операция не выполняется. А установив, например два младших бита предиката, можно выполнить операцию для двух первых чисел, оставив остальные числа незатронутыми. Для хранения предикатов вводится 8 дополнительных 64-битных регистров K0–K7.
Аппаратное выявление конфликтов
Опережающая загрузка данных
Рис 2
Вычисление экспоненты и обратных величин
Операции переменной разрядности
Обработка байтов и 16-битных операндов
Обработка 32 и 64-битных операндов
Совмещенное умножение-сложение для 52-битных операндов
Операции с байтами в составе векторных регистров
Резюме
Как видно из вышеизложенного, расширение AVX512 подразумевает введение новых процессорных команд и архитектурных ресурсов. Поэтому, прибавку производительности получит только то программное обеспечение, которое написано и оптимизировано с учетом новой технологии.
Очевидно, для работы такой технологии требуется поддержка и со стороны операционной системы, поскольку увеличение количества и разрядности регистров приводит к увеличению количества информации, которую требуется сохранять и восстанавливать при переключении контекста процессора в многозадачной среде. Отметим, что компания Intel максимально унифицировала
Улучшения
Новая схема кодирования
Новая схема кодирования инструкций VEX использует VEX префикс. В настоящий момент существуют два VEX префикса, длиной 2 и 3 байта. Для 2-х байтного VEX префикса первый байт равен 0xC5, для 3-х байтного 0xC4. В 64-битном режиме первый байт VEX префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS. Длина существующих 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)
Применение
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа программах и научных задачах. Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.
Поддержка в операционных системах
Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:
Микропроцессоры с AVX
Будущие расширения
Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, планируется добавить инструкции для работы с целыми числами, FMA3 (увеличит производительность при обработке чисел с плавающей запятой в 2 раза ), загрузку распределенного в памяти вектора (gather) и прочее.
Различные планируемые дополнения системы команд x86 :
Примечания
Наборы расширения базовых инструкций процессоров семейства x86 |
---|
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES |
Смотреть что такое «AVX» в других словарях:
Описание тестовых систем и методики тестирования
Полный список задействованных в тестовых системах комплектующих выглядит следующим образом:
Тестирование выполнялось в операционной системе Microsoft Windows 10 Enterprise Build 10586 с использованием следующего комплекта драйверов:
Описание использовавшихся для измерения вычислительной производительности инструментов:
Действительно, благодаря открывшимся возможностям разгона у покупателей появились новые аргументы в пользу перехода на платформу LGA1151. Нет никаких сомнений, что это в определённой степени простимулирует продажи новых процессоров. Попутно получат новых клиентов и производители плат, которые наверняка смогут увеличить продажи моделей на базе Intel Z170. Внакладе не останутся и пользователи из числа энтузиастов. Перед ними открывается не только дополнительный простор для экспериментов, но и возможность извлечь вполне очевидную финансовую выгоду. Ведь теперь оверклокерские системы можно собирать из более дешёвых, чем раньше, комплектующих.
Впрочем, даже если вас интересуют исключительно игры и программы, где AVX/AVX2-расширения не используются и использоваться заведомо не будут, появившаяся у неоверклокерских процессоров поколения Skylake возможность разгона совсем не означает, что вы, выражаясь фигурально, сможете отмотать время назад и вернуться в золотой век Celeron 300A. В реалиях сегодняшнего дня нарастить производительность дешёвого процессора до уровня флагмана невозможно ни при каких обстоятельствах. После того как в середине 2000-х годов Intel поделила ассортимент потребительских процессоров на классы по числу вычислительных ядер и перечню поддерживаемых технологий, любая «межклассовая борьба» безвозвратно ушла в прошлое. И это наглядно показали проведённые тесты. Младший Core i3-6100 может претендовать лишь на то, чтобы при разгоне пытаться дотянуться до быстродействия начальных моделей Core i5. А младший Core i5-6400 может попробовать побороться с Core i5-6600K, но замахнуться на соперничество с Core i7-6700K ему, естественно, не по силам.
Наборы инструкций SSE4.2
Операция чтения, позволяющая ускорить (до 7.5 раз) работу с write-combining областями памяти.
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обоих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
AVX предоставляет различные улучшения, новые инструкции и новую схему кодирования машинных кодов.
Неразрушающие операции. Набор инструкций AVX позволяет использовать любую двухоперандную инструкцию XMM в трёхоперандном виде без модификации двух регистров-источников, с отдельным регистром для результата. Например, вместо a = a + b можно использовать c = a + b, при этом регистр a остаётся неизменённым. AVX не поддерживает неразрушающие формы операций над обычными регистрами общего назначения, такими как EAX, но такая поддержка, возможно, будет добавлена в последующих расширениях.
Требования выравнивания данных для операндов SIMD в памяти ослаблены.
Новая система кодирования машинных кодов VEX предоставляет новый набор префиксов кода, которые расширяют пространство возможных машинных кодов. Добавлены инструкции с количеством операндов более трёх. Векторные регистры SIMD могут быть больше 128-ми бит.
Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа, научных и финансовых задачах. Увеличивает степень параллелизма и пропускную способность в вещественных SIMD вычислениях. Уменьшает давление (нагрузку) на регистры благодаря неразрушающим трёхоперандным операциям.