Процессор с поддержкой инструкций sse2 и avx

Аббревиатура AVX расшифровывается как Advanced Vector Extensions. Это наборы инструкций для процессоров Intel и AMD, идея создания которых появилась в марте 2008 года. Впервые такой набор был встроен в процессоры линейки Intel Haswell в 2013 году. Поддержка команд в Pentium и Celeron появилась лишь в 2020 году.

Прочитав эту статью, вы более подробно узнаете, что такое инструкции AVX и AVX2 для процессоров, а также — как узнать поддерживает ли процессор AVX.

AVX и AVX2 – что это такое

AVX/AVX2 — это улучшенные версии старых наборов команд SSE. Advanced Vector Extensions расширяют операционные пакеты со 128 до 512 бит, а также добавляют новые инструкции. Например, за один такт процессора без инструкций AVX будет сложена 1 пара чисел, а с ними — 10. Эти наборы расширяют спектр используемых чисел для оптимизации подсчёта данных.

Наличие у процессоров поддержки AVX весьма желательно. Эти инструкции предназначены, прежде всего, для выполнения сложных профессиональных операций. Без поддержки AVX всё-таки можно запускать большинство игр, редактировать фото, смотреть видео, общаться в интернете и др., хотя и не так комфортно.

Как узнать, поддерживает ли процессор AVX

Далее будут показаны несколько простых способов узнать это. Некоторые из методов потребуют установки специального ПО.

1. Таблица сравнения процессоров на сайте Chaynikam.info.

Для того чтобы узнать, поддерживает ли ваш процессор инструкции AVX, можно воспользоваться предлагаемым способом. Перейдите на этот сайт. В правом верхнем углу страницы расположена зелёная кнопка Добавить процессор. Нажмите её.

В открывшемся окне вам будет предложено указать параметры выбора нужного процессора. Все указывать не обязательно.

В результате выполнения поиска будет сформирована таблица с параметрами выбранного из списка процессора. Прокрутите таблицу вниз. В строке Поддержка инструкций и технологий будет показана подробная информация.

2. Утилита CPU-Z.

Один из самых простых и надёжных способов узнать поддерживает ли процессор AVX инструкции, использовать утилиту для просмотра информации о процессоре — CPU-Z. Скачать утилиту можно на официальном сайте. После завершения установки ярлык для запуска утилиты появится на рабочем столе. Запустите её.

В строке Instructions показаны все инструкции и другие технологии, поддерживаемые вашим процессором.

3. Поиск на сайте производителя.

Ещё один способ узнать, есть ли AVX на процессоре, воспользоваться официальным сайтом производителя процессоров. В строке поиска браузера наберите название процессора и выполните поиск. Если у вас процессор Intel, выберите соответствующую страницу в списке и перейдите на неё. На этой странице вам будет предоставлена подробная информация о процессоре.

Если у вас процессор от компании AMD, то лучше всего будет воспользоваться сайтом AMD. Выберите пункт меню Процессоры, далее — пункт Характеристики изделия и затем, выбрав тип (например, Потребительские процессоры), выполните переход на страницу Спецификации процессоров. На этой странице выполните поиск вашего процессора по названию и посмотрите подробную информацию о нём.

Выводы

В этой статье мы довольно подробно рассказали о поддержке процессорами инструкций AVX, AVX2, а также показали несколько способов, позволяющих выяснить наличие такой поддержки конкретно вашим процессором. Надеемся, что дополнительная информация об используемом процессоре будет полезна для вас, а также поможет в выборе процессора в будущем.

Была ли эта статья полезной?

ДаНет

Оцените статью:

Очень плохоПлохоПойдетХорошоОгонь! (8 оценок, среднее: 5,00 из 5)

Загрузка…

Об авторе

Над статьей работал не только её автор, но и другие люди из команды te4h, администратор (admin), редакторы или другие авторы. Ещё к этому автору могут попадать статьи, авторы которых написали мало статей и для них не было смысла создавать отдельные аккаунты.

В мире компьютерных технологий нет ничего странного в обилии всевозможных аббревиатур: CPU, GPU, RAM, SSD, BIOS, CD-ROM, и многих других. И почти каждый день появляются всё новые и новые сокращения названий каких-то технологий, что является неизбежным следствием бесконечного стремления инженеров улучшить функции и возможности наших вычислительных устройств.

Сегодня речь пойдёт о таких расширениях набора команд процессоров, как MMX, SSE и AVX. Многим знакомы эти сокращения, и мы выясним, действительно ли это какие-то интересные разработки, или же это не более чем бессмысленные маркетинговые уловки.

Ну о-о-очень первые дни

Середина 80-х прошлого столетия. Рынок процессоров был очень похож на сегодняшний. Intel бесспорно преобладала, но столкнулась с жесткой конкуренцией со стороны AMD. Домашние компьютеры, такие как Commodore 64, использовали базовые 8-битные процессоры, тогда как настольные ПК начинали переходить с 16-битных на 32-битные чипы.

Эти числа означают размер значений данных, которые могут быть обработаны математически, при этом чем выше эти значения, тем выше точность и возможности. Они также определяет размер основных регистров в микросхеме: небольших участков памяти, используемых для хранения рабочих данных.

Такие процессоры являются также скалярными и целочисленными. Что это означает? Скаляр – это когда над одним элементом данных выполняется только одна любая математическая операция. Обычно это обозначается как SISD (single instruction, single data, «одиночный поток команд – одиночный поток данных»).

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


Intel 80386DX с частотой 16МГц (1985).

Целое (Integer) – в математике, это такое число, которое не имеет дробной части. Например, 8 или -12. Процессоры типа интеловского 80386SX не имели врожденной способности сложить, скажем, 3.80 и 7.26 – такие дробные числа называются числами с плавающей точкой (или запятой, в русском языке это без разницы) – по-английски FP, floating point или просто floats. Чтобы справиться с ними, нужен был другой процессор, например 80387SX, и отдельный набор инструкций – список команд, который сообщает процессору, что делать.

В те времена под инструкциями x86 понимали наборы команд для целочисленных (integer) операций, а под инструкциями x87 – для чисел с плавающей точкой (float). В наши дни все операции умеет выполнять один процессор, поэтому мы используем термин x86 для обозначения набора инструкций обоих типов данных.

Использование отдельных сопроцессоров для обработки разных типов данных было нормой, пока Intel не представила 80486: их первый CPU для персоналок со встроенным математическим сопроцессором для обработки вещественных данных (FPU, Floating Point Unit).


Intel 80486: Жёлтым цветом выделен блок FPU для обработки чисел с плавающей точкой.

Как вы можете видеть, этот блок совсем немного занимает места в процессоре, но рывок в производительности, благодаря этому решению, был огромен.

Но в целом принцип работы оставался скалярным, и таким он перешел и к преемнику 486-го: оригинальному Intel Pentium.

И пройдёт ещё три года после релиза этого первого Пентиума, прежде чем Intel представит миру Pentium MMX. Это произошло в октябре 1996 года.

V – значит «векторный». А MMX что значит?

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

Однако она была изначально довольно ограниченной, поскольку оперировала только целыми числами и фактически эксплуатировала для своих целей регистры FPU. Поэтому программисты, желающие использовать какие-то инструкции MMX, вынуждены иметь в виду, что при выполнении таких инструкций любые вычисления с плавающей запятой не могут выполняться одновременно с ними.

Знаменитая реклама технологии Intel MMX (1997).

FPU Pentium имел 64-битные регистры, и в операциях MMX каждый из них мог вместить два 32-битных, четыре 16-битных или восемь 8-битных целых числа. Именно эти группы чисел и являются векторами, и каждая инструкция, предназначенная для них, будет выполняться сразу над всеми значениями в группе.

Такой принцип получил название SIMD (single instruction, multiple data, «одиночный поток команд, множественный поток данных») и знаменует собой большой шаг вперед в развитии возможностей процессоров для персональных компьютеров.

Ну а какие приложения выигрывают от использования такого принципа? Практически все, которым приходится выполнять одинаковые вычисления над группой однородных данных, и в первую очередь это некоторые функции в 3D-моделировании и мультимедийных технологиях, а также в системах обработки стандартных сигналов.

Например, MMX можно применить для ускорения умножения матриц при обработке вершин в 3D, или для смешивания видеопотоков при работе с хромакеем или альфа-композитингом.


Процессор AMD K6-2 – где-то там есть 3DNow!

К сожалению, внедрение MMX продвигалось  довольно медленными темпами из-за негативного влияния этой технологии на производительность операций с плавающей точкой. AMD частично решила эту проблему, создав свою собственную версию под названием 3DNow! примерно через два года после появления MMX. Технология от AMD предлагала больше инструкций SIMD и умела обрабатывать числа с плавающей точкой, но также страдала от недостатка понимания программистами.

Ах, да! Как же официально расшифровывается аббревиатура MMX? Согласно Intel – никак!

Проще пареной SSE

Ситуация переломилась в лучшую сторону с приходом в 1999 году процессора Intel Pentium III. Он принёс с собой блестящую реализацию векторной функции под названием SSE (Streaming SIMD Extensions, «потоковые расширения SIMD»). На этот раз это был дополнительный набор из восьми 128-битных регистров, отдельных от регистров в FPU, и стек дополнительных инструкций для обработки чисел с плавающей точкой.

Использование независимых регистров означает, что больше нет такой сильной зависимости от FPU, хотя Pentium III не мог выполнять инструкции SSE одновременно с инструкциями FP. А также, новая функция поддерживает только один тип данных в регистрах: четыре 32-битных FP-числа.

Но переход к использованию FP-инструкций SIMD позволил значительно увеличить производительность в таких приложениях, как кодирование/декодирование видео, обработка изображений и звука, сжатие файлов и многих других.


Pentium IV: желтым цветом выделен блок регистров SSE2.

Усовершенствованная версия SSE2 появилась в 2001 году вместе с Pentium 4, и на этот раз поддержка типов данных была намного лучше: четыре 32-битных или два 64-битных FP-числа, а также шестнадцать 8-битных, восемь 16-битных, четыре 32-битных или два 64-битных целых числа. Регистры MMX остались в процессоре, но все операции MMX и SSE могли выполняться с использованием независимых 128-битных регистров SSE.

Модификация SSE3 появилась на свет в 2003 году, имея больше инструкций и возможность выполнять некоторые математические вычисления между значениями внутри одного регистра.

Ещё через 3 года мы познакомились с архитектурой Intel Core, принёсшей ещё одну ревизию технологии SIMD (SSSE3 – Supplemental SSE, «расширенные SSE»), и чуть позже в том же году – финальную версию, SSE4.

В 2007 году AMD применила собственную версию расширений CPU-инструкций SSE4 в своей архитектуре Barcelona. С названием в AMD париться не стали, и назвали свою версию просто SSE4a.

С линейкой Nehalem Core в 2008 году было выпущено незначительное обновление этой версии, которую Intel обозначила как SSE4.2 (а под SSE4.1 стали понимать исходную версию этого обновления). Обновления не затронули регистры, а лишь добавили больше инструкций в таблицу, расширив диапазон возможных математических и логических операций.

AMD, со своей стороны, сперва предложила новую версию SSE5, но позже решила разделить ее на три отдельных расширения, одно из которых довольно проблемное – подробнее об этом чуть позже.

К концу 2008 года и Intel, и AMD поставляли процессоры, которые уже могли обрабатывать все версии наборов инструкций от MMX до SSE4.2, и многие приложения (в основном игры) начали требовать этих функций для работы.

Время для новых букв

2008 год также был годом, когда Intel объявила о том, что они работают над значительным апгрейдом своей системы SIMD, и в 2011 году выкатила линейку процессоров Sandy Bridge с поддержкой набора инструкций AVX (Advanced Vector Extensions, «продвинутые векторные расширения»).

Всё удвоилось: вдвое больше векторных регистров и вдвое больше их размер.

Шестнадцать 256-битных регистров вмещают только восемь 32-битных или четыре 64-битных вещественных числа, поэтому в плане форматов данных, этот набор инструкций более ограничен в сравнении с SSE, но ведь и SSE никто не отменял. К тому времени программная поддержка векторных операций для CPU была уже хорошо отлажена, начиная с фундаментального мира компиляторов, заканчивая сложными приложениями.

Над статьей работал не только её автор, но и другие люди из команды te4h, администратор (admin), редакторы или другие авторы. Ещё к этому автору могут попадать статьи, авторы которых написали мало статей и для них не было смысла создавать отдельные аккаунты.

В мире компьютерных технологий нет ничего странного в обилии всевозможных аббревиатур: CPU, GPU, RAM, SSD, BIOS, CD-ROM, и многих других. И почти каждый день появляются всё новые и новые сокращения названий каких-то технологий, что является неизбежным следствием бесконечного стремления инженеров улучшить функции и возможности наших вычислительных устройств.

Сегодня речь пойдёт о таких расширениях набора команд процессоров, как MMX, SSE и AVX. Многим знакомы эти сокращения, и мы выясним, действительно ли это какие-то интересные разработки, или же это не более чем бессмысленные маркетинговые уловки.

Ну о-о-очень первые дни

Середина 80-х прошлого столетия. Рынок процессоров был очень похож на сегодняшний. Intel бесспорно преобладала, но столкнулась с жесткой конкуренцией со стороны AMD. Домашние компьютеры, такие как Commodore 64, использовали базовые 8-битные процессоры, тогда как настольные ПК начинали переходить с 16-битных на 32-битные чипы.

Эти числа означают размер значений данных, которые могут быть обработаны математически, при этом чем выше эти значения, тем выше точность и возможности. Они также определяет размер основных регистров в микросхеме: небольших участков памяти, используемых для хранения рабочих данных.

Такие процессоры являются также скалярными и целочисленными. Что это означает? Скаляр – это когда над одним элементом данных выполняется только одна любая математическая операция. Обычно это обозначается как SISD (single instruction, single data, «одиночный поток команд – одиночный поток данных»).

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


Intel 80386DX с частотой 16МГц (1985).

Целое (Integer) – в математике, это такое число, которое не имеет дробной части. Например, 8 или -12. Процессоры типа интеловского 80386SX не имели врожденной способности сложить, скажем, 3.80 и 7.26 – такие дробные числа называются числами с плавающей точкой (или запятой, в русском языке это без разницы) – по-английски FP, floating point или просто floats. Чтобы справиться с ними, нужен был другой процессор, например 80387SX, и отдельный набор инструкций – список команд, который сообщает процессору, что делать.

В те времена под инструкциями x86 понимали наборы команд для целочисленных (integer) операций, а под инструкциями x87 – для чисел с плавающей точкой (float). В наши дни все операции умеет выполнять один процессор, поэтому мы используем термин x86 для обозначения набора инструкций обоих типов данных.

Использование отдельных сопроцессоров для обработки разных типов данных было нормой, пока Intel не представила 80486: их первый CPU для персоналок со встроенным математическим сопроцессором для обработки вещественных данных (FPU, Floating Point Unit).


Intel 80486: Жёлтым цветом выделен блок FPU для обработки чисел с плавающей точкой.

Как вы можете видеть, этот блок совсем немного занимает места в процессоре, но рывок в производительности, благодаря этому решению, был огромен.

Но в целом принцип работы оставался скалярным, и таким он перешел и к преемнику 486-го: оригинальному Intel Pentium.

И пройдёт ещё три года после релиза этого первого Пентиума, прежде чем Intel представит миру Pentium MMX. Это произошло в октябре 1996 года.

V – значит «векторный». А MMX что значит?

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

Однако она была изначально довольно ограниченной, поскольку оперировала только целыми числами и фактически эксплуатировала для своих целей регистры FPU. Поэтому программисты, желающие использовать какие-то инструкции MMX, вынуждены иметь в виду, что при выполнении таких инструкций любые вычисления с плавающей запятой не могут выполняться одновременно с ними.

Знаменитая реклама технологии Intel MMX (1997).

FPU Pentium имел 64-битные регистры, и в операциях MMX каждый из них мог вместить два 32-битных, четыре 16-битных или восемь 8-битных целых числа. Именно эти группы чисел и являются векторами, и каждая инструкция, предназначенная для них, будет выполняться сразу над всеми значениями в группе.

Такой принцип получил название SIMD (single instruction, multiple data, «одиночный поток команд, множественный поток данных») и знаменует собой большой шаг вперед в развитии возможностей процессоров для персональных компьютеров.

Ну а какие приложения выигрывают от использования такого принципа? Практически все, которым приходится выполнять одинаковые вычисления над группой однородных данных, и в первую очередь это некоторые функции в 3D-моделировании и мультимедийных технологиях, а также в системах обработки стандартных сигналов.

Например, MMX можно применить для ускорения умножения матриц при обработке вершин в 3D, или для смешивания видеопотоков при работе с хромакеем или альфа-композитингом.


Процессор AMD K6-2 – где-то там есть 3DNow!

К сожалению, внедрение MMX продвигалось  довольно медленными темпами из-за негативного влияния этой технологии на производительность операций с плавающей точкой. AMD частично решила эту проблему, создав свою собственную версию под названием 3DNow! примерно через два года после появления MMX. Технология от AMD предлагала больше инструкций SIMD и умела обрабатывать числа с плавающей точкой, но также страдала от недостатка понимания программистами.

Ах, да! Как же официально расшифровывается аббревиатура MMX? Согласно Intel – никак!

Проще пареной SSE

Ситуация переломилась в лучшую сторону с приходом в 1999 году процессора Intel Pentium III. Он принёс с собой блестящую реализацию векторной функции под названием SSE (Streaming SIMD Extensions, «потоковые расширения SIMD»). На этот раз это был дополнительный набор из восьми 128-битных регистров, отдельных от регистров в FPU, и стек дополнительных инструкций для обработки чисел с плавающей точкой.

Использование независимых регистров означает, что больше нет такой сильной зависимости от FPU, хотя Pentium III не мог выполнять инструкции SSE одновременно с инструкциями FP. А также, новая функция поддерживает только один тип данных в регистрах: четыре 32-битных FP-числа.

Но переход к использованию FP-инструкций SIMD позволил значительно увеличить производительность в таких приложениях, как кодирование/декодирование видео, обработка изображений и звука, сжатие файлов и многих других.


Pentium IV: желтым цветом выделен блок регистров SSE2.

Усовершенствованная версия SSE2 появилась в 2001 году вместе с Pentium 4, и на этот раз поддержка типов данных была намного лучше: четыре 32-битных или два 64-битных FP-числа, а также шестнадцать 8-битных, восемь 16-битных, четыре 32-битных или два 64-битных целых числа. Регистры MMX остались в процессоре, но все операции MMX и SSE могли выполняться с использованием независимых 128-битных регистров SSE.

Модификация SSE3 появилась на свет в 2003 году, имея больше инструкций и возможность выполнять некоторые математические вычисления между значениями внутри одного регистра.

Ещё через 3 года мы познакомились с архитектурой Intel Core, принёсшей ещё одну ревизию технологии SIMD (SSSE3 – Supplemental SSE, «расширенные SSE»), и чуть позже в том же году – финальную версию, SSE4.

В 2007 году AMD применила собственную версию расширений CPU-инструкций SSE4 в своей архитектуре Barcelona. С названием в AMD париться не стали, и назвали свою версию просто SSE4a.

С линейкой Nehalem Core в 2008 году было выпущено незначительное обновление этой версии, которую Intel обозначила как SSE4.2 (а под SSE4.1 стали понимать исходную версию этого обновления). Обновления не затронули регистры, а лишь добавили больше инструкций в таблицу, расширив диапазон возможных математических и логических операций.

AMD, со своей стороны, сперва предложила новую версию SSE5, но позже решила разделить ее на три отдельных расширения, одно из которых довольно проблемное – подробнее об этом чуть позже.

К концу 2008 года и Intel, и AMD поставляли процессоры, которые уже могли обрабатывать все версии наборов инструкций от MMX до SSE4.2, и многие приложения (в основном игры) начали требовать этих функций для работы.

Время для новых букв

2008 год также был годом, когда Intel объявила о том, что они работают над значительным апгрейдом своей системы SIMD, и в 2011 году выкатила линейку процессоров Sandy Bridge с поддержкой набора инструкций AVX (Advanced Vector Extensions, «продвинутые векторные расширения»).

Всё удвоилось: вдвое больше векторных регистров и вдвое больше их размер.

Шестнадцать 256-битных регистров вмещают только восемь 32-битных или четыре 64-битных вещественных числа, поэтому в плане форматов данных, этот набор инструкций более ограничен в сравнении с SSE, но ведь и SSE никто не отменял. К тому времени программная поддержка векторных операций для CPU была уже хорошо отлажена, начиная с фундаментального мира компиляторов, заканчивая сложными приложениями.

И не даром: Core i7-2600K (или подобный ему), работающий на частоте 3,8ГГц, потенциально может выдавать более 230 GFLOPS (миллиардов операций с плавающей точкой в секунду) при выполнении инструкций AVX – неплохо для дополнения, относительно немного места занимающего на кристалле процессора.

Или могло бы быть неплохо, если бы он действительно работал на частоте 3,8ГГц. Частично проблема AVX заключалась в том, что нагрузка на чип получалась настолько высокой, что Intel пришлось заставить процессор автоматически снижать тактовую частоту в этом режиме примерно на 20%, чтобы уменьшить энергопотребление и не допустить перегрева. К сожалению, такова цена за выполнение любой работы SIMD в современном процессоре.

Еще одно усовершенствование, предлагаемое в AVX – это возможность работать одновременно с тремя значениями. Во всех версиях SSE операции выполнялись между двумя значениями, после чего результат заменял одно из них в регистре. При выполнении инструкций SIMD AVX не трогает исходные значения, сохраняя результирующее значение в отдельный регистр.

AVX2 был выпущен вместе с архитектурой Haswell для процессоров Core 4-го поколения в 2013 году, и представлял собой довольно значительный апгрейд, благодаря добавлению нового расширения: FMA (Fused Multiply-Add, «умножение-сложение с однократным округлением»).

Эта независимая функция в составе AVX2 была крайне востребована для приложений, работающих с векторной и матричной математикой, поскольку давала возможность выполнять две операции с помощью одной инструкции. Функция поддерживала и скалярные операции также.

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

У версии от AMD четыре операнда, поэтому она может вычислить 3 числа и записать ответ в отдельный регистр, не трогая исходные значения. Математически FMA4 лучше, чем FMA3, но его реализация немного сложнее, как с точки зрения программирования, так и с точки зрения интеграции функции в процессор.

AVX-512: а не многовато-ли?

AVX2 ещё только начал появляться на рынке процессоров, а Intel уже плела маниакальные планы относительно его преемника, AVX-512, и общий настрой среди разработчиков был такой: «больше регистров богу регистров!». Мало того, что этих самых регистров снова вдвое больше, и они снова вдвое увеличились в размере, так ещё и появился стек новых инструкций и поддержка устаревших.

Первой партией чипов, на которых поднялся в воздух набор функций AVX-512, стала серия Xeon Phi 7200 – второе поколение громоздких и очень многоядерных процессоров Intel, ориентированных на рынок суперкомпьютеров.

72-ядерный 288-потоковый Knights Landing Xeon Phi.

В отличие от всех предыдущих реализаций, новый набор векторных инструкций состоял из 19-и компонентов: базового – AVX-512F, – необходимого для обеспечения совместимости, и множества весьма специфических. Эти дополнительные наборы охватывают такие области операций, как обратная математика, целочисленные FMA и алгоритмы свёрточной (конволюционной) нейронной сети (CNN-алгоритмы).

Первоначально AVX-512 был только прерогативой крупнейших чипов Intel, предназначенных для рабочих станций и серверов, но теперь их недавние архитектуры Ice Lake и Tiger Lake также поддерживают его. Да, не удивляйтесь: вы можете купить легкий ноутбук с процессором, имеющим 512-битные векторные блоки.

Это может показаться круто. А может и не показаться – в зависимости от вашей точки зрения. Регистры на кристалле CPU обычно группируются в так называемом регистровом файле, как видно на макрофото ниже.

2-ядерный Intel Skylake

Желтым прямоугольником выделен файл векторных регистров, красный прямоугольник – это наиболее вероятное расположение файла целочисленного регистра. Обратите внимание, насколько файл векторного регистра больше integer-регистра. В Skylake используются 256-битные регистры AVX2, следовательно аналогичный векторный регистровый файл AVX-512 занял бы на таком же кристалле в четыре раза больше места: вдвое больше, потому что вдвое больше их размер, и ещё вдвое – потому что самих регистров вдвое больше.

А очень-ли нужно такое количество векторных регистров маленькому чипу, который должен быть максимально мобильным? Хоть речь и не о лишних килограммах в ноутбуке, а лишь о небольшой части площади ядра процессора, каждый квадратный миллиметр имеет значение, когда речь идет о миниатюризации мобильных устройств и наиболее эффективном использовании доступного пространства в них.

И учитывая, что использование AVX в любом виде приводит к автоматическому уменьшению тактовой частоты, использование AVX-512 на таких платформах скорее всего приведет к ещё более сомнительным издержкам по сравнению с любым из своих предшественников, поскольку при работе он потребляет еще больше энергии.

AVX2 был выпущен вместе с архитектурой Haswell для процессоров Core 4-го поколения в 2013 году, и представлял собой довольно значительный апгрейд, благодаря добавлению нового расширения: FMA (Fused Multiply-Add, «умножение-сложение с однократным округлением»).

Эта независимая функция в составе AVX2 была крайне востребована для приложений, работающих с векторной и матричной математикой, поскольку давала возможность выполнять две операции с помощью одной инструкции. Функция поддерживала и скалярные операции также.

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

У версии от AMD четыре операнда, поэтому она может вычислить 3 числа и записать ответ в отдельный регистр, не трогая исходные значения. Математически FMA4 лучше, чем FMA3, но его реализация немного сложнее, как с точки зрения программирования, так и с точки зрения интеграции функции в процессор.

AVX-512: а не многовато-ли?

AVX2 ещё только начал появляться на рынке процессоров, а Intel уже плела маниакальные планы относительно его преемника, AVX-512, и общий настрой среди разработчиков был такой: «больше регистров богу регистров!». Мало того, что этих самых регистров снова вдвое больше, и они снова вдвое увеличились в размере, так ещё и появился стек новых инструкций и поддержка устаревших.

Первой партией чипов, на которых поднялся в воздух набор функций AVX-512, стала серия Xeon Phi 7200 – второе поколение громоздких и очень многоядерных процессоров Intel, ориентированных на рынок суперкомпьютеров.

72-ядерный 288-потоковый Knights Landing Xeon Phi.

В отличие от всех предыдущих реализаций, новый набор векторных инструкций состоял из 19-и компонентов: базового – AVX-512F, – необходимого для обеспечения совместимости, и множества весьма специфических. Эти дополнительные наборы охватывают такие области операций, как обратная математика, целочисленные FMA и алгоритмы свёрточной (конволюционной) нейронной сети (CNN-алгоритмы).

Первоначально AVX-512 был только прерогативой крупнейших чипов Intel, предназначенных для рабочих станций и серверов, но теперь их недавние архитектуры Ice Lake и Tiger Lake также поддерживают его. Да, не удивляйтесь: вы можете купить легкий ноутбук с процессором, имеющим 512-битные векторные блоки.

Это может показаться круто. А может и не показаться – в зависимости от вашей точки зрения. Регистры на кристалле CPU обычно группируются в так называемом регистровом файле, как видно на макрофото ниже.

2-ядерный Intel Skylake

Желтым прямоугольником выделен файл векторных регистров, красный прямоугольник – это наиболее вероятное расположение файла целочисленного регистра. Обратите внимание, насколько файл векторного регистра больше integer-регистра. В Skylake используются 256-битные регистры AVX2, следовательно аналогичный векторный регистровый файл AVX-512 занял бы на таком же кристалле в четыре раза больше места: вдвое больше, потому что вдвое больше их размер, и ещё вдвое – потому что самих регистров вдвое больше.

А очень-ли нужно такое количество векторных регистров маленькому чипу, который должен быть максимально мобильным? Хоть речь и не о лишних килограммах в ноутбуке, а лишь о небольшой части площади ядра процессора, каждый квадратный миллиметр имеет значение, когда речь идет о миниатюризации мобильных устройств и наиболее эффективном использовании доступного пространства в них.

И учитывая, что использование AVX в любом виде приводит к автоматическому уменьшению тактовой частоты, использование AVX-512 на таких платформах скорее всего приведет к ещё более сомнительным издержкам по сравнению с любым из своих предшественников, поскольку при работе он потребляет еще больше энергии.

И проблема AVX-512 не только в применении к небольшим мобильным процессорам. Разработчикам, пишущим код для работы на рабочих станциях и серверах, и для которых увеличение возможностей векторных расширений действительно важный вопрос, потребуется создавать несколько версий кода. Это связано с тем, что не все процессоры с AVX-512 работают с одинаковым набором команд.

Например, набор IFMA (Integer Fused Multiply Add, «целочисленное умножение-сложение с однократным округлением») доступен только на процессорах Cannon, Ice и Tiger Lake. В то время как процессоры на архитектуре Cooper и Cascade Lake его не поддерживают, несмотря на то, что они относятся к сегменту процессоров для серверов и рабочих станций.

Стоит отметить, что AMD не предлагает поддержку AVX-512, и не собирается. По их мнению, обработка массивных векторных вычислений – это прерогатива GPU. С AMD полностью солидарна Nvidia, и обе компании уже выпустили продукты специально для таких нужд.

И дальше что?

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

Что касается последних двух типов данных, то CPU теперь напрямую конкурируют с GPU: ведь мир 3D-графики – это как раз всё, что связано с SIMD, векторами, плавающими точками и т.д. И производители GPU не спали – разработка графических ускорителей велась стремительными темпами. В начале 2010-х годов купить видеокарту, процессор которой способен выполнять почти 800 миллиардов инструкций SIMD в секунду, вы уже могли менее чем за 500 долларов.

Это больше, чем то, на что сейчас способны лучшие из десктопных CPU. Но они и не предназначены для рекордов в какой-то конкретной области – их задача обрабатывать очень обобщенный код, который зачастую не повторяется или легко распараллеливается. Поэтому, не стоит думать, что возможности SIMD столь жизненно-важны для CPU, скорее это полезное дополнение к его арсеналу.

Вас интересует производительность SIMD в чистом виде? Ваш выбор – видеокарта, а не материнка!

Стремительное развитие графических процессоров недвусмысленно намекает, что для CPU нет нужды иметь чересчур большие векторные блоки, и почти наверняка именно поэтому AMD даже не пыталась разрабатывать своего собственного преемника для AVX2 (расширение, которое они используют в своих чипах с 2015 года). Давайте также не будем забывать, что процессоры следующего поколения могут больше походить на мобильные однокристальные (SoC, System-on-a-Chip), где под каждый тип задач выделена площадь на кристалле. Intel, в свою очередь, похоже, стремится внедрить AVX-512 в как можно большее количество продуктов.

Ждёт ли нас ещё и AVX-1024? Вряд ли, либо очень нескоро. Скорее всего, Intel займётся расширением AVX-512 с помощью дополнительных компонентов с инструкциями, чтобы повысить гибкость, а чистую SIMD-производительность переложит на плечи своей недавно разработанной линейки графических процессоров Xe.

Библиотеки SSE и AVX теперь являются неотъемлемой частью программного обеспечения: Adobe Photoshop требует, чтобы процессоры поддерживали как минимум SSE4.2; API машинного обучения TensorFlow требует поддержки AVX; Microsoft Teams может выполнять фоновые видеоэффекты, только если доступен AVX2.

Это говорит только об одном: несмотря на то, что в плане обработки SIMD графическим процессорам нет равных, этот функционал ещё долго будет в арсенале CPU. Так что будем ждать нового поколения векторных расширений и надеюсь, реклама нас впечатлит.

Architecture Fabrication
(nm) Family Release Date Code name Model Group Cores SMT Clock rate (MHz) Bus Speed
& Type[a] Cache Socket Memory Controller Features L1 L2 L3 SIMD Speed/Power Other Changes Am386 Am386 Sx/SxL/SxLV[1] 1 No 25–40[1] FSB 100 PQFP[1] discrete Am486[2] 500, 350 Am486 1 No 25–120 FSB 8 168 pin PGA
208 SQFP discrete 500, 350 Enhanced Am486 66–120 FSB 8, 8/16 168 pin PGA
208 SQFP

[3]

Am5x86 350 Am5x86 X5-133 1 No 133 33
FSB 16 Socket 3
Socket 2
Socket 1
168 pin discrete K5 500, 350 AMD K5 SSA/5, 5k86 1 No 75–133 50, 60, 66
FSB 8+16 0 Socket 5
Socket 7 discrete K6 350, 250 AMD K6 Model 6, Littlefoot 1 No 166–300 50, 60, 66
FSB 32+32 0 Socket 7 discrete MMX MMX 250, 180 AMD K6-2 Chomper, Chomper Extended, mobile 166–550 66, 95, 97, 100
FSB 32+32 0, 128 Super Socket 7 MMX, 3DNow! 3DNow! 250, 180 K6-3 Sharptooth 400–550 66, 95, 96.2, 100
FSB 32+32 256 512, 1024 Super Socket 7 K7 250 Athlon Argon 1 No 500–700 100
FSB 64+64 512 Slot A discrete MMX, 3DNow! 180 Pluto/Orion 550–1000 Thunderbird 1000–1400 256 Slot A
Socket A 180 Athlon XP/MP Palomino 1500+ – 2100+ 1333–1733 133
FSB Socket A MMX, 3DNow!+, SSE

3DNow!+
SSE

130 Thoroughbred 1600+ – 2800+ 1400–2250 133, 166, 200
FSB Thorton 2000+ – 3100+ 1667–2200 Barton 2500+ – 3200+ 1833–2333 512 180 Duron Spitfire 600–950 100
FSB 64 Morgan 900–1300 64 130 Applebred 1400, 1600, 1800 133
FSB 64 180 Athlon 4 Corvette 850–1400 100
FSB 256 130 Athlon XP-M Thoroughbred 1400–2133 100, 133
FSB Barton 1667–2200 133
FSB 512 180 Mobile Duron Spitfire 600, 700 100
FSB 64 Camaro 800–1300 64 130 Sempron Thoroughbred-B 1500–2000 166
FSB 256 Thorton 1500–2000 Barton 2000–2200 166, 200
FSB 512 K8 130 Opteron Sledgehammer 100 1 No 1400–2400 800
HT 64+64 1024 Socket 940 DDR MMX, 3DNow!+, SSE, SSE2 PowerNow! AMD64,
ccNUMA

SSE2
PowerNow!
AMD64
NX Bit

200 800 90 Venus 100 1600–3000 Socket 939 Troy 200 Socket 940 Athens 800 Denmark 100 2 1600–3200 1000
HT Socket 939 AMD64,
NX Bit Italy 200 1600–3200 Socket 940 AMD64,
NX Bit,
ccNUMA Egypt 800 1600–3200 Santa Ana 1200 1800–3200 Socket AM2 DDR2 AMD64,
NX Bit Santa Rosa 2200 1800–3200 Socket F 8200 2000–3000 130 Athlon 64 FX Sledgehammer FX-51, FX-53 1 2200, 2400 800
HT Socket 940 DDR MMX, 3DNow!+, SSE, SSE2, SSE3 Cool’n’Quiet AMD64,
NX Bit

SSE3
— PowerNow!
Cool’n’Quiet
AMD-V

Clawhammer FX-53, FX-55 2400, 2400 1000
HT Socket 939 90 San Diego FX-55, FX-57 2600, 2800 Toledo FX-60 2 2600 Windsor FX-62 2800 Socket AM2 DDR2 AMD64,
NX Bit,
AMD-V FX-70, FX-72, FX-74 2600, 2800, 3000 Socket F 130 Athlon 64 Clawhammer 1 2000–2600 800
HT 1024 Socket 754 DDR MMX, 3DNow!+, SSE, SSE2 Cool’n’Quiet AMD64,
NX Bit (not in CG stepping) 1000
HT Socket 939 Newcastle 1800–2400 800
HT 512 Socket 754 AMD64,
NX Bit 1000
HT Socket 939 90 Winchester 1800–2200 Socket 939 Venice 1800–2400 800
HT Socket 754 DDR2 MMX, 3DNow!+, SSE, SSE2, SSE3 1000
HT Socket 939 San Diego 2200–2600 1024 Socket 939 Orleans 1800–2600 512 Socket AM2 AMD64,
NX Bit,
AMD-V 65 Lima 2000–2800 90 Athlon 64 X2 Manchester 3600+ 2 2000 256 PC, FS Socket 939 DDR MMX, 3DNow!+, SSE, SSE2, SSE3 Cool’n’Quiet AMD64,
NX Bit 3800+, 4200+, 4600+ 2000, 2200, 2400 512 PC, FS Toledo 3800+, 4200+, 4600+ 2000, 2200, 2400 4400+, 4800+ 2200, 2400 1024 PC, FS Windsor 3600+ 2000 256 PC, FS Socket AM2 DDR2 AMD64,
NX Bit,
AMD-V 3800+, 4200+, 4600+, 5000+, 5400+ 2000, 2200, 2400, 2600, 2800 512 PC, FS 4000+, 4400+, 4800+, 5200+, 5600+, 6000+, 6400+ 2000, 2200, 2400, 2600, 2800, 3000, 3200 1024 PC, FS 65 Brisbane 3600+, 3800+, 4000+, 4200+, 4400+, 4600+, 4800+, 5000+, 5200+, 5400+, 5600+, 5800+, 6000+ 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100 512 PC, FS 130 Sempron Paris 3000+ 1 1800 800
HT 64+64 128 Socket 754 MMX, 3DNow!+, SSE, SSE2, SSE3 Cool’n’Quiet NX Bit 3100+ 1800 256 90 Palermo 2500+ 1400 256 MMX, 3DNow!+, SSE, SSE2, SSE3[4] AMD64,[4]
NX Bit 2600+ 1600 128 2800+ 256 3000+ 1800 128 Cool’n’Quiet 3100+ 256 3300+ 2000 128 3400+ 256 3000+ 1800 128 Socket 939 MMX, 3DNow!+, SSE, SSE2, SSE3 3200+ 256 3400+ 2000 128 3500+ 256 Manila 2800+, 3200+, 3500+ 1600, 1800, 2000 128 Socket AM2 Cool’n’Quiet AMD64,
NX bit 3000+, 3400+, 3600+, 3800+ 1600, 1800, 2000, 2200 256 65 Sparta LE-1100, LE-1150 1900, 2000 LE-1200, LE-1250, LE-1300 2100, 2200, 2300 512 130 Mobile Athlon 64 Clawhammer 2700+ 1600 512 Socket 754 MMX, 3DNow!+, SSE, SSE2 2800+, 3000+, 3200+, 3400+, 3700+ 1600, 1800, 2000, 2200, 2400 1024 Odessa 2700+, 2800+, 3000+ 1600, 1800, 2000 512 90 Oakville 2700+, 2800+, 3000+ 1600, 1800, 2000 512 Newark 3000+, 3200+, 3400+, 3700+, 4000+ 1800, 2000, 2200, 2400, 2600 1024 130 Mobile Sempron Dublin 1600, 1800 128 MMX, 3DNow!+, SSE, SSE2 AMD64,
NX bit 1600 256 90 Georgetown 1600, 1800, 2000 128 1600, 1800 256 Sonora 1600, 1800 128 1600, 1800 256 Albany 1800, 2000, 2200 128 MMX, 3DNow!+, SSE, SSE2, SSE3 1800, 2000 256 Roma 1800, 2000 128 1600, 1800, 2000 256 Keene 1800, 2000 256 Socket S1 PowerNow! 1600, 1800, 2000 512 Turion 64 Lancaster MT-28, MT-32, ML-42 1600 1800, 2400 512 Socket 754 MMX, 3DNow!+, SSE, SSE2, SSE3 AMD64,
NX bit MT-30, MT-34, MT-37, MT-40, ML-44 1600, 1800, 2000, 2200, 2400 1024 Richmond MK-36, MK-38 2000, 2200 512 Turion 64 X2 Taylor TL-50 2 1600 256 Socket S1 MMX, 3DNow!+, SSE, SSE2, SSE3 AMD64
NX bit Trinidad TL-52, TL-56, TL-60, TL-64 1600, 1800, 2000, 2200 512 65 Tyler TK-53, TK-55, TK-57 1700, 1800, 1900 256 TL-56, TL-58, TL-60, TL-62, TL-64, TL-66, TL-68 1800, 1900, 2000, 2100, 2200, 2300, 2400 512 K10 65 Opteron Barcelona 4 No 1700–2500 1000
HT 64+64 256, 512 2048 Socket F MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! PowerNow! AMD64,
NX bit,
AMD-V,
ccNUMA

SSE4a
Enhanced 3DNow!

Budapest 4 1700–2500 1000
HT 256, 512 2048 Socket AM2 AMD64,
NX bit,
AMD-V Phenom Agena 9100e, 9150e, 9350e, 9450e, 9500, 9550, 9600, 9600B, 9600BE, 9650, 9670, 9750, 9750B, 9850, 9850B 9850BE, 9950BE 4 1800–2600 1600, 1800, 2000
HT 512 2048 Socket AM2+ MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V Toliman 8250e, 8400, 8450, 8450e, 8550, 8600, 8600B, 8650, 8750, 8750B, 8750BE, 8850 3 1900–2500 1600, 1800
HT 512 2048 Athlon X2 Kuma 6500BE 2 2300 1600, 1800
HT 1024 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V 7450, 7550, 7750BE, 7850BE 2400–2800 1600, 1800
HT 2048 Athlon Lima 1 2400–2700 1600, 1800
HT 512, 1024 Sempron Sparta 1 2700 1600
HT 512 K10.5 45 Phenom II Thuban 1045T, 1055T, 1075T, 1090T, 1100T 6/6 No 2600–3300 1800, 2000
HT 64+64 512 6144 Socket AM2+
Socket AM3 DDR2
DDR3 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V Zosma 840T, 960T, 970(E0 stepping) 4/6 3000–3400 1800, 2000
HT 512 6144 DDR2
DDR3 Deneb 805, 810, 820, 830, 905e, 910e, 920, 925, 940, 945, 955, 965, 970, 975, 980 4/4 2500–3700 1800, 2000
HT 512 6144 (805–820 only 4096) DDR2
DDR3 Heka 705e, 720, 740 3/4 2500–2800 2000
HT 512 6144 DDR2
DDR3 Callisto 545, 550, 555, 560, 565, 570 2/4 3000–3400 2000
HT 512 6144 DDR2
DDR3 Athlon II Propus 4 2200–2800 2000
HT 512 DDR2
DDR3 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V Rana 3 2200–3100 2000
HT 512 DDR2
DDR3 Regor 2 1600–3600 2000
HT 512, 1024 DDR2
DDR3 Sempron Sargas 130 1 2600 2000
HT 512 DDR2
DDR3 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! PowerNow! AMD64,
NX bit,
AMD-V 140 2700 1024 145 2800 150 2900 Turion II Caspian   2 2000–2700 1800, 1600
HT 512, 1024   Socket S1G3 DDR2 32 Llano Llano E2-3200, A4-3300, A4-3420, A6-3500, A6-3600, A6-3620, A6-3650, A6-3670K, A8-3800, A8-3820, A8-3850, A8-3870K 2/3/4 2100–3000 1024, 3072, 4096 Socket FM1 DDR3 Bobcat 40 Bobcat Desna,
Ontario,
Zacate C-series,
E-series,
G-series,
Z-series 1/2 No 1000 – 1750 32 + 32 512 KB (per core) Socket FT1 DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a PowerNow! AMD64,
NX bit,
AMD-V SSE3s Bulldozer 32 Bulldozer October 2011 Zambezi FX-4100 series (4100, 4120, 4130, 4150, 4170) 4 CMT 3600–4200 (3700–4300 boost) 2600 MHz
HT 64 KB inst. per module,
16 KB data per core 2 MB per module 4 MB (FX-4130), 8 MB (all other models) Socket AM3+ Dual-channel DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX Cool’n’Quiet, PowerNow!, Turbo Core 2.0 AMD64,
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA4,
CVT16/F16C,
ABM,
ECC

SSE4.1
SSE4.2
AVX
Turbo Core 2.0
IOMMU
AES
CLMUL
FMA4
XOP
CVT16
F16C
ABM
ECC

FX-6100 series (6100, 6120, 6130, 6200) 6 3300–3800 (3600–4200 boost) 8 MB FX-8100 series (8100, 8120, 8140, 8150, 8170) 8 2800–3900 (3100–4500 boost) March 2012 Zurich Opteron 3200 series (3250HE, 3260HE, 3280) 4/8 2400–2700 (2700–3700 boost) 4 MB (3250HE, 3260HE), 8 MB (3280) November 2011 Valencia Opteron 4200 series (42DX, 42MX, 4226, 4228HE, 4230HE, 4234, 4238, 4240, 4256EE,4274HE, 4276HE, 4280, 4284) 4/6/8 1600–3400 (1900–3800 boost) 3200 MHz
HT
up to 2 links 8 MB Socket C32 Dual-channel DDR3 Interlagos Opteron 6200 series (6204, 6212, 6220, 6230HE, 6234, 6238, 6262HE, 6272, 6274, 6276, 6278, 6282SE, 6284SE) 4/8/12/16 1600–3300 (2100–3600 boost) 3200 MHz
HT
up to 4 links 16 MB
(8 MB per chiplet) Socket G34 Quad-channel DDR3 Piledriver Trinity SempronX2 240, AthlonX2 340, AthlonX4 740, AthlonX4 750K, FirePro A300, FirePro A320, A4-4300M, A4-4355M, A4-5300, A4-5300B, A6-4400M, A6-4455M, A6-5400K, A6-5400B, A8-5500, A8-4500M, A8-4555M, A8-5500B, A8-5600K, A10-4600M, A10-4655M, A10-5700, A10-5800K, A10-5800B 2/4 1600–3800 (2400–4200 boost) 64 KB inst. per module,
16 KB data per core 2×2, 1 none Socket FM2
FS1r2
FP2 DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX,
AVX1.1 Cool’n’Quiet, PowerNow!, Turbo Core 3.0 AMD64,
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA3,
FMA4,
CVT16/F16C,
ABM,
BMI1,
TBM,
ECC,
EVP.

AVX1.1
Turbo Core 3.0
FMA3
BMI1
TBM
EVP

Richland SempronX2 250, AthlonX2 350, AthlonX2 370K, AthlonX2 750, AthlonX2 760K, FX-670K, A4-4000, A4-4320, A4-5145M, A4-5150M, A4-6300, A4-6300B, A4-6320, A4-6320B, A4-7300, A4PRO-7300B, A6-5345M, A6-5350M, A6-5357M, A6-6400B , A6-6400K, A6-6420B, A6-6420K, A8-5345M, A8-5350M, A8-5357M, A8-6500, A8-6500T, A8-6500B, A8-6600, A10-5745M, A10-5750M, A10-5757M, A10-6700, A10-6700T, A10-6790B , A10-6790K , A10-6800B , A10-6800K 2/4 1700–4100 (2600–4400 boost) October 2012 Vishera FX-4300 series (4300, 4320, 4350) 4 3800–4200 (4000–4300 boost) 2600 MHz
HT 2 MB per module 4 MB (FX-4300, FX-4320), 8 MB (FX-4350) Socket AM3+ Dual-channel DDR3 FX-6300 series (6300, 6350) 6 3500–3900 (4100–4200 boost) 8 MB FX-8300 series (8300, 8310, 8320, 8320E, 8350, 8370, 8370E, 9370, 9590) 8 3300–4700 (4000–5000 boost) December 2012 Delhi Opteron 3300 series (3320EE, 3350HE, 3365, 3380) 4/8 1900–2800 (2100–3800 boost) 8 MB (all models) Seoul Opteron 4300 series (43CXEE, 43GKHE, 4310EE, 4332HE, 4334, 4340, 4365EE, 4376HE, 4386) 4/6/8 2000–3500 (2300–3800 boost) 3200 MHz
HT
up to 2 links 8 MB (all models) Socket C32 Dual-channel DDR3 November 2012 Abu Dhabi Opteron 6300 series (6308, 6320, 6328, 6338P, 6344, 6348, 6366HE, 6370P, 6376, 6378, 6380, 6386SE) 4/8/12/16 1800–3500 (2300–3800 boost) 3200 MHz
HT
up to 4 links 16 MB
(8 MB per chiplet) Socket G34 Quad-channel DDR3 28 Steamroller Kaveri AthlonX2 450, AthlonX4 840, AthlonX4 860K, AthlonX4 870K, AthlonX4 880K, FX-770K, FX-7500, FX-7600P, A4PRO-7350B, A6-7000, A6Pro-7050B, A6-7400K, A6PRO-7400B, A6-7470K, A8-7100, A8Pro-7150B, A8-7200P, A8-7600, A8PRO-7600B, A8-7650K, A8-7670K, A10-7300, A10Pro-7350B, A10-7400P, A10-7700K, A10-7800, A10PRO-7800B, A10-7850K, A10-7850B, A10-7860K, A10-7870K, A10-7890K 2/4 1800–4100 (3000–4300 boost) 96 KB inst. per module,
16 KB data per core 2×2, 1 none Socket FM2+ Socket FP3 DDR3 Excavator Carrizo AthlonX4 835, AthlonX4 845, FX-8800P, A6-8500P, A6Pro-8500B, A8-8600P, A8Pro-8600B, A10-8700P, A10Pro-8700B, A10-8780P, A12Pro-8800B 2/4 1600–3500 (3000–3800 boost) 96 KB inst. per module,
32 KB data per core 1 MB per module none Socket FM2+ Socket FP4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX,
AVX1.1,
AVX2 AMD64,
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA3,
FMA4,
CVT16/F16C,
ABM,
BMI1,
BMI2,
TBM,
ECC,
EVP.

AVX2
BMI2

Bristol Ridge AthlonX4 940, AthlonX4 950, AthlonX4 970, FX-9800P, FX-9830P, A6-9500, A6PRO-9500, A6Pro-9500B, A6-9500E, A6PRO-9500E, A6-9550, A8-9600, A8PRO-9600, A8Pro-9600B, A8Pro-9630B, A10-9600P, A10-9620P, A10-9630P, A10-9700, A10PRO-9700, A10Pro-9700B, A10-9700E, A10PRO-9700E, A10Pro-9730B, A12-9700P, A12-9720P, A12-9730P, A12-9800, A12PRO-9800, A12Pro-9800B, A12-9800E, A12PRO-9800E, A12Pro-9830B 2/4 2300–3800 (3200–4200 boost) Socket AM4 Socket FP4 DDR4 Jaguar 28 Jaguar Kabini,
Temash,
Kyoto 2/4 No 1000–2200 — 32 KB inst.
32 KB data
per core 512 KB per core — Desktop: Socket AM1,
Mobile: Socket FT3 DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX PowerNow! AMD64,
NX bit,
AMD-V,
AES,
CLMUL,
CVT16/F16C,
BMI1 Puma Beema,
Mullins,
Stepped Eagle,
Crowned Eagle,
Carrizo-L,
LX-Family, E1-6010, E1-6050, E1-6200T, E1-7010, E2-6110, E2-7110, A4-6210, A4-7210, A4Pro-3350B, A4-6400T, A6-6310, A6-7310, A8-6410, A8-7410 800–2400 Socket FT3b, Socket AM1 Zen 14

GloFo 14LP

Zen March 2017 Summit Ridge Ryzen 3 (Pro 1200, 1200, Pro 1300, 1300X) 4 No 3100–3500 (3400–3700 boost) 8.0 GT/s
PCIe 64 KB inst.
32 KB data
per core 512 KB
per core 8 MB Socket AM4 Dual-channel DDR4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA

SHA
— FMA4
— TBM
— XOP
— 3DNow
— 3DNow!+
— Enhanced 3DNow!

Ryzen 5 (1400, Pro 1500, 1500X, Pro 1600, 1600, 1600X) 4/6 Yes 3200–3600 (3400–4000 boost) 8–16 MB Ryzen 7 (Pro 1700, 1700, Pro 1700X, 1700X, 1800X) 8 3000–3600 (3700–4000 boost) 16 MB June 2017 Naples EPYC 7001 series 8/16/24/32 2000–3100

(2550–3600 all)

(2700–3800 boost)

32–64 MB Socket SP3 Octa-channel DDR4 August 2017 Whitehaven Ryzen Threadripper (1900X, 1920X, 1950X) 8/12/16 3200–3800 (3800–4000 boost) 16–32 MB Socket TR4 Quad-channel DDR4 October 2017 Raven Ridge Athlon (Pro 200U, 300U),
Ryzen 3 (2200U, 3200U, 3250U) 2 Yes 2300–2600 (3200–3500 boost) 4 MB Socket FP5 Dual-channel DDR4 Ryzen 3 (2300U, Pro 2300U) 4 No 2000 (3400 boost) Ryzen 5 (2500U, Pro 2500U, 2600H),
Ryzen 7 (2700U, Pro 2700U, 2800H) Yes 2000–3300 (3600–3800 boost) February 2018 Athlon (200GE, Pro 200GE, 220GE, 240GE, 3000G) 2 Yes 3200–3500 Socket AM4 Ryzen 3 (2200GE, Pro 2200GE, 2200G, Pro 2200G) 4 No 3200–3500 (3600–3700 boost) Ryzen 5 (2400GE, Pro 2400GE, 2400G, Pro 2400G) Yes 3200–3600 (3800–3900 boost) February 2018 Snowy Owl EPYC Embedded 3001 series 4/8/12/16 No 1500–2100

(2150–3100 all)

(2900–3100 boost)

8–32 MB
(8 MB per CCX) Socket SP4r2 Dual-channel DDR4 EPYC Embedded 3051 series Yes 1900–2700

(2450–3100 all)

(2900–3100 boost)

16–32 MB
(8 MB per CCX) Great Horned Owl Ryzen Embedded V1000 series 2/4 Yes 2000–3350 (3200–3800 boost) 4 MB Socket FP5 April 2019 Banded Kestrel Ryzen Embedded R1000 series 2 No 1200 (2600 boost) Single-channel DDR4 Yes 1500–2600 (2800–3500 boost) Dual-channel DDR4 12

GloFo 12LP

Zen+ April 2018 Pinnacle Ridge Ryzen 3 (1200 AF, 2300X) 4 No 3100–3500 (3400–4000 boost) 8.0 GT/s
PCIe 64 KB inst.
32 KB data
per core 512 KB
per core 8 MB Socket AM4 Dual-channel DDR4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA Ryzen 5 2500X Yes 3600 (4000 boost) Ryzen 5 (1600 AF, 2600, 2600E, 2600X),
Ryzen 7 (2700, 2700E, 2700X, Pro 2700X) 6/8 2800–3700 (3600–4300 boost) 16 MB August 2018 Colfax Ryzen Threadripper (2920X, 2950X, 2970WX, 2990WX) 12/16/24/32 Yes 3000–3500 (4200–4400 boost) 32–64 MB Socket TR4 Quad-channel DDR4 January 2019 Picasso Ryzen 3 (3300U, Pro 3300U, 3350U) 4 No 2100 (3500 boost) 4 MB Socket FP5 Dual-channel DDR4 Ryzen 5 (3450U, 3500C, 3500U, Pro 3500U, 3550H, 3580U),
Ryzen 7 (3700C, 3700U, Pro 3700U, 3750H, 3780U) Yes 2100–2300 (3500–4000 boost) July 2019 Ryzen 3 (3200GE, Pro 3200GE, 3200G, Pro 3200G) No 3300–3600 (3800–4000 boost) Socket AM4 Ryzen 5 (3400GE, Pro 3400GE, 3400G, Pro 3400G) Yes 3300–3700 (4000–4200 boost) July 2020 Dali Athlon Silver 3050GE
Athlon Silver PRO 3125GE 2 Yes 3400 Athlon Gold (3150G, 3150GE)
Athlon Gold PRO (3150G, 3150GE) 4 No 3500 (3800–3900 boost) 7

TSMC N7

Zen 2 July 2019 Matisse Ryzen 3 (3100, 3300X) 4 Yes 3600–3800 (3900–4200 boost) 16.0 GT/s
PCIe 32 KB inst.
32 KB data
per core 512 KB
per core 16 MB Socket AM4 Dual-channel DDR4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA Ryzen 5 (3500, 3500X) 6 No 3600 (4100 boost) 16–32 MB Ryzen 5 (3600, Pro 3600, 3600X, 3600XT),
Ryzen 7 (Pro 3700, 3700X, 3800X, 3800XT) 6/8 Yes 3600–3900 (4200–4700 boost) 32 MB Ryzen 9 (3900, Pro 3900, 3900X, 3900XT, 3950X) 12/16 Yes 3100–3800 (4300–4700 boost) 64 MB August 2019 Rome EPYC 7002 series 8/12/16/24/32/48/64 Yes 2000–3700 (3200–3900 boost) 32–256 MB Socket SP3 Octa-channel DDR4 November 2019 Castle Peak Ryzen Threadripper (3960X, 3970X, 3990X) 24/32/64 Yes 2900–3800 (4300–4500 boost) 128/128/256 MB Socket sTRX4 Quad-channel DDR4 March 2020 Renoir Ryzen 3 4300U 4 No 2700 (3700 boost) 4 MB Mobile:
Socket FP6

Desktop:
Socket AM4

Mobile:
Dual-channel DDR4 or LPDDR4

Desktop:
Dual-channel DDR4

Ryzen 3 (4300G, 4300GE, 4350G, 4350GE, Pro 4450U) Yes 2500–3800 (3700–4200 boost) Ryzen 5 4500U 6 No 2300 (4000 boost) 8 MB Ryzen 5 (4600U, Pro 4650U, 4600H, 4600HS, 4680U),
Ryzen 5 (4600G, 4600GE, Pro 4650G, Pro 4650GE) Yes 2100–3700 (4000–4200 boost) Ryzen 7 4700U 8 No 2000 (4100 boost) Ryzen 7 (Pro 4750U, 4800U, 4800H, 4800HS),
Ryzen 7 (4700G, 4700GE, Pro 4750G, Pro 4750GE),
Ryzen 9 (4900H, 4900HS) Yes 1800–3600 (4100–4400 boost) April 2022 Ryzen 3 4100 4 Yes 3800 (4000 boost) Ryzen 5 4500 6 3600 (4100 boost) July 2020 Castle Peak (Pro) Ryzen Threadripper Pro (3945WX, 3955WX, 3975WX, 3995WX) 12/16/32/64 Yes 2700–4000 (4200–4300 boost) 64–256 MB
(16 MB per CCX) Socket sWRX8 Octa-channel DDR4 November 2020 Grey Hawk Ryzen Embedded V2000 series 6/8 Yes 1700–3000 (3950–4250 boost) 8 MB Socket FP6 Dual-channel DDR4 or Quad-channel LPDDR4 January 2021 Lucienne Ryzen 3 5300U 4 Yes 2600 (3800 boost) 4 MB Dual-channel DDR4 or LPDDR4 Ryzen 5 5500U 6 2100 (4000 boost) 8 MB Ryzen 7 5700U 8 1800 (4300 boost) Q4 2022 Mendocino[5] Athlon Silver 7120U 2 No 2400 (3500 boost) 2 MB Socket FT6 Dual-channel LPDDR5 Athlon Gold 7220U Yes 2400 (3700 boost) 4 MB Ryzen 7020 4 Yes 2400–2800 (4100–4300) 4 MB Zen 3 November 2020 Vermeer Ryzen 5 (5600X),
Ryzen 7 (5800X),
Ryzen 9 (5900X, 5950X) 6/8/12/16 Yes 3400–3800 (4600–4900 boost) 16.0 GT/s
PCIe 32 KB inst.
32 KB data
per core 512 KB
per core 32–64 MB
(32 MB per CCD/CCX) Socket AM4 Dual-channel DDR4 MMX(+), SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2 x86-64, AMD-V, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA April 2022 Ryzen 5 5600
Ryzen 7 5700X 6/8 3400–3500 (4400–4600 boost) Ryzen 7 5800X3D 8 3400 (4500 boost) 96 MB January 2021 Cezanne Ryzen 3 (5300G, 5300GE, 5400U) 4 2600–4000 (4000–4200 boost) 8 MB Mobile:
Socket FP6

Desktop:
Socket AM4

Mobile:
Dual-channel DDR4 or LPDDR4

Desktop:
Dual-channel DDR4

Ryzen 5 (5600G, 5600GE, 5600U, 5600H, 5600HS) 6 2300–3900 (4200–4400 boost) 16 MB Ryzen 7 (5700G, 5700GE, 5800U, 5800H, 5800HS)
Ryzen 9 (5900HS, 5900HX, 5980HS, 5980HX) 8 1900–3800 (4400–4800 boost) June 2021 Ryzen 3 PRO (5350G, 5350GE) 4 3600–4000 (4200 boost) 8 MB Ryzen 5 PRO (5650G, 5650GE) 6 3400–3900 (4400 boost) 16 MB Ryzen 7 PRO (5750G, 5750GE) 8 3200–3800 (4600 boost) May 2022 Cezanne / Barcelo[6] Ryzen 3 5125C 2 3000 8 MB January 2022 Ryzen 3 5425U 4 2700 (4100 boost) April 2022 Ryzen 3 PRO 5475U May 2022 Ryzen 3 5425C January 2022 Ryzen 5 5625U 6 2300 (4300 boost) 16 MB April 2022 Ryzen 5 PRO 5675U May 2022 Ryzen 5 5625C January 2022 Ryzen 7 5825U 8 2000 (4500 boost) April 2022 Ryzen 7 PRO 5875U May 2022 Ryzen 7 5825C January 2023 Barcelo-R Ryzen 7030 4/6/8 2000–2300 (4300–4500) 8–16 MB March 2021 Milan EPYC 7003 series 8/16/24/28/32/48/56/64 2000–3700 (3450–4100 boost) 64–256 MB
(16–32 MB per CCD/CCX) Socket SP3 Octa-channel DDR4 March 2022 Milan-X[7] EPYC 7003X series 16/24/32/64 2200–3050 (3500–3800 boost) 768 MB March 2022 Chagall[8] Ryzen Threadripper Pro (5945WX, 5955WX, 5965WX, 5975WX, 5995WX) 12/16/24/32/64 2700–4100 (4500 boost) 64–256 MB
(32 MB per CCD/CCX) Socket sWRX8 6

TSMC N6

Zen 3+ January 2022 Rembrandt[9][10][11] Ryzen 5 (6600U, 6600H, 6600HS)
Ryzen 7 (6800U, 6800H, 6800HS)
Ryzen 9 (6900HS, 6900HX, 6980HS, 6980HX) 6/8 Yes 2700–3300 (4500–5000 boost) 32 KB inst.
32 KB data
per core 512 KB
per core 16 MB Socket FP7 Dual-channel DDR5 or LPDDR5 MMX(+), SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2 x86-64, AMD-V, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA April 2022 Ryzen 5 PRO (6650U, 6650H, 6650HS)
Ryzen 7 PRO (6850U, 6850H, 6850HS)
Ryzen 9 PRO (6950H, 6950HS) 2700–3300 (4500–4900 boost) January 2023 Rembrandt-R Ryzen 7035 4/6/8 2700–3300 (4300–4750) 5

TSMC N5

Zen 4 September 2022 Raphael Ryzen 5 (7600X)
Ryzen 7 (7700X)
Ryzen 9 (7900X, 7950X) 6/8/12/16 Yes 4500–4700 (5300–5700 boost) 16.0 GT/s
PCIe 32 KB inst.
32 KB data
per core 1 MB
per core 32–64 MB
(32 MB per CCD/CCX) Socket AM5 Dual-channel DDR5 MMX(+), SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2 x86-64, AMD-V, AVX, AVX2, AVX-512 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA AVX-512 January 2023 Ryzen 5 7600
Ryzen 7 7700
Ryzen 9 7900 6/8/12 3700–3800 (5100–5400 boost) April 2023 Ryzen 7 7800X3D 8 4200 (5000 boost) 96 MB February 2023 Ryzen 9 7900X3D
Ryzen 9 7950X3D 12/16 4200–4400 (5600–5700 boost) 96+32 MB March 2023 Phoenix Ryzen 7040 6/8 3800–4300 (5000–5200) 16 MB Socket FP7, FP7r2, FP8 Dual-channel DDR5 or LPDDR5X February 2023 Dragon Range Ryzen 7045 6/8/12/16 2500–4000 (5000–5400 boost) 32–64 MB
(32 MB per CCD/CCX) Socket FL1 Dual-channel DDR5 November 2022 Genoa EPYC 9004 series 16/24/32/48/64/84/96 2250–4100 (3700–4400 boost) 32.0 GT/s
PCIe 64–384 MB
(32 MB per CCD/CCX) Socket SP5 Dodeca-channel DDR5 Architecture Fabrication Family Release Date Code Name Model Group Cores SMT Clock rate (MHz) Bus Speed
& Type[a] L1 L2 L3 Socket Memory Controller SIMD Speed/Power Other Changes Cache Features

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

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 бит. Например, процессоры с архитектурой Xeon Phi уже в 2012 году имели векторные регистры (ZMM) шириной в 512 бит[2], и используют для работы с ними SIMD-команды с MVEX- и VEX-префиксами, но при этом они не поддерживают AVX. [источник не указан 2798 дней]
  • Неразрушающие операции. Набор AVX-инструкций использует трёхоперандный синтаксис. Например, вместо a=a+b можно использовать c=a+b, при этом регистр a остаётся неизменённым. В случаях, когда значение a используется дальше в вычислениях, это повышает производительность, так как избавляет от необходимости сохранять перед вычислением и восстанавливать после вычисления регистр, содержавший a, из другого регистра или памяти.
  • Для большинства новых инструкций отсутствуют требования к выравниванию операндов в памяти. Однако рекомендуется следить за выравниванием на размер операнда во избежание значительного снижения производительности.[3]
  • Набор инструкций AVX содержит в себе аналоги 128-битных SSE-инструкций для вещественных чисел. При этом, в отличие от оригиналов, сохранение 128-битного результата будет обнулять старшую половину YMM-регистра. 128-битные AVX-инструкции сохраняют прочие преимущества AVX, такие как новая схема кодирования, трехоперандный синтаксис и невыровненный доступ к памяти.
  • Intel рекомендует отказаться от старых SSE-инструкций в пользу новых 128-битных AVX-инструкций, даже если достаточно двух операндов.[4].

Новая схема кодирования[править | править код]

Новая схема кодирования инструкций VEX использует VEX-префикс. В настоящий момент существуют два VEX-префикса, длиной 2 и 3 байта. Для 2-байтного VEX-префикса первый байт равен 0xC5, для 3-байтного — 0xC4.

В 64-битном режиме первый байт VEX-префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS.[3]

Длина существующих 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]

Применение[править | править код]

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

Поддержка[править | править код]

  • Math Kernel Library[5]

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

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

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

Микропроцессоры с AVX[править | править код]

  • Intel:
    • Процессоры с микроархитектурой Sandy Bridge, 2011.[9]
    • Процессоры с микроархитектурой Ivy Bridge, 2012.
    • Процессоры с микроархитектурой Haswell, 2013.
    • Процессоры с микроархитектурой Broadwell, 2015.
    • Процессоры с микроархитектурой Skylake, 2015.
    • Процессоры с микроархитектурой Kaby Lake, 2017.
    • Процессоры с микроархитектурой Coffee Lake, 2017.
  • AMD:
    • Процессоры с микроархитектурой Bulldozer, 2011.[10]
    • Процессоры с микроархитектурой Piledriver, 2012.
    • Процессоры с микроархитектурой Steamroller, 2014.
    • Процессоры с микроархитектурой Excavator, 2015.
    • Процессоры с микроархитектурой Zen, 2017.
    • Процессоры с микроархитектурой Zen 2, 2019.
    • Процессоры с микроархитектурой Zen 3, 2020.

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

Микропроцессоры с AVX2[править | править код]

  • Intel Haswell[11]
  • Intel Broadwell
  • Intel Skylake
  • Intel Kaby Lake
  • Intel Coffee Lake
  • Intel Comet Lake
  • Intel Rocket Lake
  • Intel Alder Lake
  • AMD Excavator
  • AMD Zen (AMD Ryzen)
  • AMD Zen 2 (AMD Ryzen)
  • AMD Zen 3 (AMD Ryzen)

AVX-512[править | править код]

AVX-512 расширяет систему команд AVX до векторов длиной 512 бит при помощи кодировки с префиксом EVEX. Расширение AVX-512 вводит 32 векторных регистра (ZMM), каждый по 512 бит, 8 регистров масок, 512-разрядные упакованные форматы для целых и дробных чисел и операции над ними, тонкое управление режимами округления (позволяет переопределить глобальные настройки), операции broadcast (рассылка информации из одного элемента регистра в другие), подавление ошибок в операциях с дробными числами, операции gather/scatter (сборка и рассылка элементов векторного регистра в/из нескольких адресов памяти), быстрые математические операции, компактное кодирование больших смещений. AVX-512 предлагает совместимость с AVX, в том смысле, что программа может использовать инструкции как AVX, так и AVX-512 без снижения производительности. Регистры AVX (YMM0-YMM15) отображаются на младшие части регистров AVX-512 (ZMM0-ZMM15), по аналогии с SSE и AVX регистрами.[12]

Используeтся в Intel Xeon Phi (ранее Intel MIC) Knights Landing (версия AVX3.1), Intel Skylake-X,[12] Intel Ice Lake, Intel Tiger Lake, Intel Rocket Lake. Также поддержка AVX-512 имеется в производительных ядрах Golden Cove[13] процессоров Intel Alder Lake, однако энергоэффективные ядра Gracemont её лишены. По состоянию на декабрь 2021 г. поддержка AVX-512 для потребительских процессоров Alder Lake официально не заявляется.[14]

Будущие расширения[править | править код]

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

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

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

В серверных процессорах поколения Broadwell добавлены расширения AVX 3.1, а в серверных процессорах поколения Skylake — AVX 3.2.

Примечания[править | править код]

  1. ISA Extensions | Intel® Software. Дата обращения: 24 июня 2016. Архивировано 6 мая 2019 года.
  2. Intel® Xeon Phi™ Coprocessor Instruction Set Architecture Reference Manual (недоступная ссылка — история). Архивировано 11 мая 2013 года.
  3. 1 2 Introduction to Intel® Advanced Vector Extensions — Intel® Software Network. Дата обращения: 19 июля 2012. Архивировано 16 июня 2012 года.
  4. Questions about AVX — Intel® Software Network. Дата обращения: 24 июня 2016. Архивировано 7 августа 2016 года.
  5. Intel® AVX optimization in Intel® MKL. Дата обращения: 7 января 2014. Архивировано 7 января 2014 года.
  6. x86: add linux kernel support for YMM state (недоступная ссылка — история). Дата обращения: 13 июля 2009. Архивировано 5 апреля 2012 года.
  7. Linux 2.6.30 — Linux Kernel Newbies (недоступная ссылка — история). Дата обращения: 13 июля 2009. Архивировано 5 апреля 2012 года.
  8. 1 2 Enable Windows 7 Support for Intel AVX (недоступная ссылка — история). Microsoft. Дата обращения: 29 января 2011. Архивировано 5 апреля 2012 года.
  9. Intel Offers Peek at Nehalem and Larrabee. ExtremeTech (17 марта 2008). Архивировано 7 июня 2011 года.
  10. Striking a balance (недоступная ссылка — история). Dave Christie, AMD Developer blogs (7 мая 2009). Дата обращения: 8 мая 2009. Архивировано 5 апреля 2012 года.
  11. 1 2 More details on the future AVX instruction set 2.0 | Tech News Pedia. Дата обращения: 14 ноября 2012. Архивировано из оригинала 31 октября 2012 года.
  12. 1 2 James Reinders (23 July 2013), AVX-512 Instructions, Intel, <http://software.intel.com/en-us/blogs/2013/avx-512-instructions>. Проверено 20 августа 2013. Источник. Дата обращения: 18 ноября 2013. Архивировано 31 марта 2015 года.
  13. Dr Ian Cutress, Andrei Frumusanu. Intel Architecture Day 2021: Alder Lake, Golden Cove, and Gracemont Detailed. www.anandtech.com. Дата обращения: 23 декабря 2021. Архивировано 4 января 2022 года.
  14. Product Specifications (англ.). www.intel.com. Дата обращения: 23 декабря 2021.

Ссылки[править | править код]

  • Intel Advanced Vector Extensions Programming Reference (319433-011)(pdf) (англ.)
  • Использование Intel AVX: пишем программы завтрашнего дня (рус.)
  • Приемы использования масочных регистров в AVX512 коде (рус.)

Любой компьютер — это очень сложное устройство, которое состоит из десятков модулей. Сегодня мы разберём, какие процессоры работают и поддерживают инструкцию SSE2. А также что они собой представляют.

Содержание

  1. Что такое SSE2?
  2. Какие процессоры поддерживают технологию SSE
  3. Устройства, которые не имеют инструкций SSE2
  4. Проверка наличия SSE2 в процессоре на ПК

Что такое SSE2?

SSE2 являются SIMD — эта аббревиатура с английского языка переводится, как единая инструкция и множество данных. SIMD — это своего рода поток команд, который реализует параллелизм при работе с данными. Без них компьютеры нового поколения не смогли бы выполнять одновременно сотни процессов.

Фото ноутбуков

Библиотеки SSE и AVX теперь являются неотъемлемой частью программного обеспечения: Adobe Photoshop требует, чтобы процессоры поддерживали как минимум SSE4.2; API машинного обучения TensorFlow требует поддержки AVX; Microsoft Teams может выполнять фоновые видеоэффекты, только если доступен AVX2.

Это говорит только об одном: несмотря на то, что в плане обработки SIMD графическим процессорам нет равных, этот функционал ещё долго будет в арсенале CPU. Так что будем ждать нового поколения векторных расширений и надеюсь, реклама нас впечатлит.

Architecture Fabrication
(nm) Family Release Date Code name Model Group Cores SMT Clock rate (MHz) Bus Speed
& Type[a] Cache Socket Memory Controller Features L1 L2 L3 SIMD Speed/Power Other Changes Am386 Am386 Sx/SxL/SxLV[1] 1 No 25–40[1] FSB 100 PQFP[1] discrete Am486[2] 500, 350 Am486 1 No 25–120 FSB 8 168 pin PGA
208 SQFP discrete 500, 350 Enhanced Am486 66–120 FSB 8, 8/16 168 pin PGA
208 SQFP

[3]

Am5x86 350 Am5x86 X5-133 1 No 133 33
FSB 16 Socket 3
Socket 2
Socket 1
168 pin discrete K5 500, 350 AMD K5 SSA/5, 5k86 1 No 75–133 50, 60, 66
FSB 8+16 0 Socket 5
Socket 7 discrete K6 350, 250 AMD K6 Model 6, Littlefoot 1 No 166–300 50, 60, 66
FSB 32+32 0 Socket 7 discrete MMX MMX 250, 180 AMD K6-2 Chomper, Chomper Extended, mobile 166–550 66, 95, 97, 100
FSB 32+32 0, 128 Super Socket 7 MMX, 3DNow! 3DNow! 250, 180 K6-3 Sharptooth 400–550 66, 95, 96.2, 100
FSB 32+32 256 512, 1024 Super Socket 7 K7 250 Athlon Argon 1 No 500–700 100
FSB 64+64 512 Slot A discrete MMX, 3DNow! 180 Pluto/Orion 550–1000 Thunderbird 1000–1400 256 Slot A
Socket A 180 Athlon XP/MP Palomino 1500+ – 2100+ 1333–1733 133
FSB Socket A MMX, 3DNow!+, SSE

3DNow!+
SSE

130 Thoroughbred 1600+ – 2800+ 1400–2250 133, 166, 200
FSB Thorton 2000+ – 3100+ 1667–2200 Barton 2500+ – 3200+ 1833–2333 512 180 Duron Spitfire 600–950 100
FSB 64 Morgan 900–1300 64 130 Applebred 1400, 1600, 1800 133
FSB 64 180 Athlon 4 Corvette 850–1400 100
FSB 256 130 Athlon XP-M Thoroughbred 1400–2133 100, 133
FSB Barton 1667–2200 133
FSB 512 180 Mobile Duron Spitfire 600, 700 100
FSB 64 Camaro 800–1300 64 130 Sempron Thoroughbred-B 1500–2000 166
FSB 256 Thorton 1500–2000 Barton 2000–2200 166, 200
FSB 512 K8 130 Opteron Sledgehammer 100 1 No 1400–2400 800
HT 64+64 1024 Socket 940 DDR MMX, 3DNow!+, SSE, SSE2 PowerNow! AMD64,
ccNUMA

SSE2
PowerNow!
AMD64
NX Bit

200 800 90 Venus 100 1600–3000 Socket 939 Troy 200 Socket 940 Athens 800 Denmark 100 2 1600–3200 1000
HT Socket 939 AMD64,
NX Bit Italy 200 1600–3200 Socket 940 AMD64,
NX Bit,
ccNUMA Egypt 800 1600–3200 Santa Ana 1200 1800–3200 Socket AM2 DDR2 AMD64,
NX Bit Santa Rosa 2200 1800–3200 Socket F 8200 2000–3000 130 Athlon 64 FX Sledgehammer FX-51, FX-53 1 2200, 2400 800
HT Socket 940 DDR MMX, 3DNow!+, SSE, SSE2, SSE3 Cool’n’Quiet AMD64,
NX Bit

SSE3
— PowerNow!
Cool’n’Quiet
AMD-V

Clawhammer FX-53, FX-55 2400, 2400 1000
HT Socket 939 90 San Diego FX-55, FX-57 2600, 2800 Toledo FX-60 2 2600 Windsor FX-62 2800 Socket AM2 DDR2 AMD64,
NX Bit,
AMD-V FX-70, FX-72, FX-74 2600, 2800, 3000 Socket F 130 Athlon 64 Clawhammer 1 2000–2600 800
HT 1024 Socket 754 DDR MMX, 3DNow!+, SSE, SSE2 Cool’n’Quiet AMD64,
NX Bit (not in CG stepping) 1000
HT Socket 939 Newcastle 1800–2400 800
HT 512 Socket 754 AMD64,
NX Bit 1000
HT Socket 939 90 Winchester 1800–2200 Socket 939 Venice 1800–2400 800
HT Socket 754 DDR2 MMX, 3DNow!+, SSE, SSE2, SSE3 1000
HT Socket 939 San Diego 2200–2600 1024 Socket 939 Orleans 1800–2600 512 Socket AM2 AMD64,
NX Bit,
AMD-V 65 Lima 2000–2800 90 Athlon 64 X2 Manchester 3600+ 2 2000 256 PC, FS Socket 939 DDR MMX, 3DNow!+, SSE, SSE2, SSE3 Cool’n’Quiet AMD64,
NX Bit 3800+, 4200+, 4600+ 2000, 2200, 2400 512 PC, FS Toledo 3800+, 4200+, 4600+ 2000, 2200, 2400 4400+, 4800+ 2200, 2400 1024 PC, FS Windsor 3600+ 2000 256 PC, FS Socket AM2 DDR2 AMD64,
NX Bit,
AMD-V 3800+, 4200+, 4600+, 5000+, 5400+ 2000, 2200, 2400, 2600, 2800 512 PC, FS 4000+, 4400+, 4800+, 5200+, 5600+, 6000+, 6400+ 2000, 2200, 2400, 2600, 2800, 3000, 3200 1024 PC, FS 65 Brisbane 3600+, 3800+, 4000+, 4200+, 4400+, 4600+, 4800+, 5000+, 5200+, 5400+, 5600+, 5800+, 6000+ 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100 512 PC, FS 130 Sempron Paris 3000+ 1 1800 800
HT 64+64 128 Socket 754 MMX, 3DNow!+, SSE, SSE2, SSE3 Cool’n’Quiet NX Bit 3100+ 1800 256 90 Palermo 2500+ 1400 256 MMX, 3DNow!+, SSE, SSE2, SSE3[4] AMD64,[4]
NX Bit 2600+ 1600 128 2800+ 256 3000+ 1800 128 Cool’n’Quiet 3100+ 256 3300+ 2000 128 3400+ 256 3000+ 1800 128 Socket 939 MMX, 3DNow!+, SSE, SSE2, SSE3 3200+ 256 3400+ 2000 128 3500+ 256 Manila 2800+, 3200+, 3500+ 1600, 1800, 2000 128 Socket AM2 Cool’n’Quiet AMD64,
NX bit 3000+, 3400+, 3600+, 3800+ 1600, 1800, 2000, 2200 256 65 Sparta LE-1100, LE-1150 1900, 2000 LE-1200, LE-1250, LE-1300 2100, 2200, 2300 512 130 Mobile Athlon 64 Clawhammer 2700+ 1600 512 Socket 754 MMX, 3DNow!+, SSE, SSE2 2800+, 3000+, 3200+, 3400+, 3700+ 1600, 1800, 2000, 2200, 2400 1024 Odessa 2700+, 2800+, 3000+ 1600, 1800, 2000 512 90 Oakville 2700+, 2800+, 3000+ 1600, 1800, 2000 512 Newark 3000+, 3200+, 3400+, 3700+, 4000+ 1800, 2000, 2200, 2400, 2600 1024 130 Mobile Sempron Dublin 1600, 1800 128 MMX, 3DNow!+, SSE, SSE2 AMD64,
NX bit 1600 256 90 Georgetown 1600, 1800, 2000 128 1600, 1800 256 Sonora 1600, 1800 128 1600, 1800 256 Albany 1800, 2000, 2200 128 MMX, 3DNow!+, SSE, SSE2, SSE3 1800, 2000 256 Roma 1800, 2000 128 1600, 1800, 2000 256 Keene 1800, 2000 256 Socket S1 PowerNow! 1600, 1800, 2000 512 Turion 64 Lancaster MT-28, MT-32, ML-42 1600 1800, 2400 512 Socket 754 MMX, 3DNow!+, SSE, SSE2, SSE3 AMD64,
NX bit MT-30, MT-34, MT-37, MT-40, ML-44 1600, 1800, 2000, 2200, 2400 1024 Richmond MK-36, MK-38 2000, 2200 512 Turion 64 X2 Taylor TL-50 2 1600 256 Socket S1 MMX, 3DNow!+, SSE, SSE2, SSE3 AMD64
NX bit Trinidad TL-52, TL-56, TL-60, TL-64 1600, 1800, 2000, 2200 512 65 Tyler TK-53, TK-55, TK-57 1700, 1800, 1900 256 TL-56, TL-58, TL-60, TL-62, TL-64, TL-66, TL-68 1800, 1900, 2000, 2100, 2200, 2300, 2400 512 K10 65 Opteron Barcelona 4 No 1700–2500 1000
HT 64+64 256, 512 2048 Socket F MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! PowerNow! AMD64,
NX bit,
AMD-V,
ccNUMA

SSE4a
Enhanced 3DNow!

Budapest 4 1700–2500 1000
HT 256, 512 2048 Socket AM2 AMD64,
NX bit,
AMD-V Phenom Agena 9100e, 9150e, 9350e, 9450e, 9500, 9550, 9600, 9600B, 9600BE, 9650, 9670, 9750, 9750B, 9850, 9850B 9850BE, 9950BE 4 1800–2600 1600, 1800, 2000
HT 512 2048 Socket AM2+ MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V Toliman 8250e, 8400, 8450, 8450e, 8550, 8600, 8600B, 8650, 8750, 8750B, 8750BE, 8850 3 1900–2500 1600, 1800
HT 512 2048 Athlon X2 Kuma 6500BE 2 2300 1600, 1800
HT 1024 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V 7450, 7550, 7750BE, 7850BE 2400–2800 1600, 1800
HT 2048 Athlon Lima 1 2400–2700 1600, 1800
HT 512, 1024 Sempron Sparta 1 2700 1600
HT 512 K10.5 45 Phenom II Thuban 1045T, 1055T, 1075T, 1090T, 1100T 6/6 No 2600–3300 1800, 2000
HT 64+64 512 6144 Socket AM2+
Socket AM3 DDR2
DDR3 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V Zosma 840T, 960T, 970(E0 stepping) 4/6 3000–3400 1800, 2000
HT 512 6144 DDR2
DDR3 Deneb 805, 810, 820, 830, 905e, 910e, 920, 925, 940, 945, 955, 965, 970, 975, 980 4/4 2500–3700 1800, 2000
HT 512 6144 (805–820 only 4096) DDR2
DDR3 Heka 705e, 720, 740 3/4 2500–2800 2000
HT 512 6144 DDR2
DDR3 Callisto 545, 550, 555, 560, 565, 570 2/4 3000–3400 2000
HT 512 6144 DDR2
DDR3 Athlon II Propus 4 2200–2800 2000
HT 512 DDR2
DDR3 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! Cool’n’Quiet AMD64,
NX bit,
AMD-V Rana 3 2200–3100 2000
HT 512 DDR2
DDR3 Regor 2 1600–3600 2000
HT 512, 1024 DDR2
DDR3 Sempron Sargas 130 1 2600 2000
HT 512 DDR2
DDR3 MMX, SSE, SSE2, SSE3, SSE4a, Enhanced 3DNow! PowerNow! AMD64,
NX bit,
AMD-V 140 2700 1024 145 2800 150 2900 Turion II Caspian   2 2000–2700 1800, 1600
HT 512, 1024   Socket S1G3 DDR2 32 Llano Llano E2-3200, A4-3300, A4-3420, A6-3500, A6-3600, A6-3620, A6-3650, A6-3670K, A8-3800, A8-3820, A8-3850, A8-3870K 2/3/4 2100–3000 1024, 3072, 4096 Socket FM1 DDR3 Bobcat 40 Bobcat Desna,
Ontario,
Zacate C-series,
E-series,
G-series,
Z-series 1/2 No 1000 – 1750 32 + 32 512 KB (per core) Socket FT1 DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a PowerNow! AMD64,
NX bit,
AMD-V SSE3s Bulldozer 32 Bulldozer October 2011 Zambezi FX-4100 series (4100, 4120, 4130, 4150, 4170) 4 CMT 3600–4200 (3700–4300 boost) 2600 MHz
HT 64 KB inst. per module,
16 KB data per core 2 MB per module 4 MB (FX-4130), 8 MB (all other models) Socket AM3+ Dual-channel DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX Cool’n’Quiet, PowerNow!, Turbo Core 2.0 AMD64,
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA4,
CVT16/F16C,
ABM,
ECC

SSE4.1
SSE4.2
AVX
Turbo Core 2.0
IOMMU
AES
CLMUL
FMA4
XOP
CVT16
F16C
ABM
ECC

FX-6100 series (6100, 6120, 6130, 6200) 6 3300–3800 (3600–4200 boost) 8 MB FX-8100 series (8100, 8120, 8140, 8150, 8170) 8 2800–3900 (3100–4500 boost) March 2012 Zurich Opteron 3200 series (3250HE, 3260HE, 3280) 4/8 2400–2700 (2700–3700 boost) 4 MB (3250HE, 3260HE), 8 MB (3280) November 2011 Valencia Opteron 4200 series (42DX, 42MX, 4226, 4228HE, 4230HE, 4234, 4238, 4240, 4256EE,4274HE, 4276HE, 4280, 4284) 4/6/8 1600–3400 (1900–3800 boost) 3200 MHz
HT
up to 2 links 8 MB Socket C32 Dual-channel DDR3 Interlagos Opteron 6200 series (6204, 6212, 6220, 6230HE, 6234, 6238, 6262HE, 6272, 6274, 6276, 6278, 6282SE, 6284SE) 4/8/12/16 1600–3300 (2100–3600 boost) 3200 MHz
HT
up to 4 links 16 MB
(8 MB per chiplet) Socket G34 Quad-channel DDR3 Piledriver Trinity SempronX2 240, AthlonX2 340, AthlonX4 740, AthlonX4 750K, FirePro A300, FirePro A320, A4-4300M, A4-4355M, A4-5300, A4-5300B, A6-4400M, A6-4455M, A6-5400K, A6-5400B, A8-5500, A8-4500M, A8-4555M, A8-5500B, A8-5600K, A10-4600M, A10-4655M, A10-5700, A10-5800K, A10-5800B 2/4 1600–3800 (2400–4200 boost) 64 KB inst. per module,
16 KB data per core 2×2, 1 none Socket FM2
FS1r2
FP2 DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX,
AVX1.1 Cool’n’Quiet, PowerNow!, Turbo Core 3.0 AMD64,
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA3,
FMA4,
CVT16/F16C,
ABM,
BMI1,
TBM,
ECC,
EVP.

AVX1.1
Turbo Core 3.0
FMA3
BMI1
TBM
EVP

Richland SempronX2 250, AthlonX2 350, AthlonX2 370K, AthlonX2 750, AthlonX2 760K, FX-670K, A4-4000, A4-4320, A4-5145M, A4-5150M, A4-6300, A4-6300B, A4-6320, A4-6320B, A4-7300, A4PRO-7300B, A6-5345M, A6-5350M, A6-5357M, A6-6400B , A6-6400K, A6-6420B, A6-6420K, A8-5345M, A8-5350M, A8-5357M, A8-6500, A8-6500T, A8-6500B, A8-6600, A10-5745M, A10-5750M, A10-5757M, A10-6700, A10-6700T, A10-6790B , A10-6790K , A10-6800B , A10-6800K 2/4 1700–4100 (2600–4400 boost) October 2012 Vishera FX-4300 series (4300, 4320, 4350) 4 3800–4200 (4000–4300 boost) 2600 MHz
HT 2 MB per module 4 MB (FX-4300, FX-4320), 8 MB (FX-4350) Socket AM3+ Dual-channel DDR3 FX-6300 series (6300, 6350) 6 3500–3900 (4100–4200 boost) 8 MB FX-8300 series (8300, 8310, 8320, 8320E, 8350, 8370, 8370E, 9370, 9590) 8 3300–4700 (4000–5000 boost) December 2012 Delhi Opteron 3300 series (3320EE, 3350HE, 3365, 3380) 4/8 1900–2800 (2100–3800 boost) 8 MB (all models) Seoul Opteron 4300 series (43CXEE, 43GKHE, 4310EE, 4332HE, 4334, 4340, 4365EE, 4376HE, 4386) 4/6/8 2000–3500 (2300–3800 boost) 3200 MHz
HT
up to 2 links 8 MB (all models) Socket C32 Dual-channel DDR3 November 2012 Abu Dhabi Opteron 6300 series (6308, 6320, 6328, 6338P, 6344, 6348, 6366HE, 6370P, 6376, 6378, 6380, 6386SE) 4/8/12/16 1800–3500 (2300–3800 boost) 3200 MHz
HT
up to 4 links 16 MB
(8 MB per chiplet) Socket G34 Quad-channel DDR3 28 Steamroller Kaveri AthlonX2 450, AthlonX4 840, AthlonX4 860K, AthlonX4 870K, AthlonX4 880K, FX-770K, FX-7500, FX-7600P, A4PRO-7350B, A6-7000, A6Pro-7050B, A6-7400K, A6PRO-7400B, A6-7470K, A8-7100, A8Pro-7150B, A8-7200P, A8-7600, A8PRO-7600B, A8-7650K, A8-7670K, A10-7300, A10Pro-7350B, A10-7400P, A10-7700K, A10-7800, A10PRO-7800B, A10-7850K, A10-7850B, A10-7860K, A10-7870K, A10-7890K 2/4 1800–4100 (3000–4300 boost) 96 KB inst. per module,
16 KB data per core 2×2, 1 none Socket FM2+ Socket FP3 DDR3 Excavator Carrizo AthlonX4 835, AthlonX4 845, FX-8800P, A6-8500P, A6Pro-8500B, A8-8600P, A8Pro-8600B, A10-8700P, A10Pro-8700B, A10-8780P, A12Pro-8800B 2/4 1600–3500 (3000–3800 boost) 96 KB inst. per module,
32 KB data per core 1 MB per module none Socket FM2+ Socket FP4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX,
AVX1.1,
AVX2 AMD64,
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA3,
FMA4,
CVT16/F16C,
ABM,
BMI1,
BMI2,
TBM,
ECC,
EVP.

AVX2
BMI2

Bristol Ridge AthlonX4 940, AthlonX4 950, AthlonX4 970, FX-9800P, FX-9830P, A6-9500, A6PRO-9500, A6Pro-9500B, A6-9500E, A6PRO-9500E, A6-9550, A8-9600, A8PRO-9600, A8Pro-9600B, A8Pro-9630B, A10-9600P, A10-9620P, A10-9630P, A10-9700, A10PRO-9700, A10Pro-9700B, A10-9700E, A10PRO-9700E, A10Pro-9730B, A12-9700P, A12-9720P, A12-9730P, A12-9800, A12PRO-9800, A12Pro-9800B, A12-9800E, A12PRO-9800E, A12Pro-9830B 2/4 2300–3800 (3200–4200 boost) Socket AM4 Socket FP4 DDR4 Jaguar 28 Jaguar Kabini,
Temash,
Kyoto 2/4 No 1000–2200 — 32 KB inst.
32 KB data
per core 512 KB per core — Desktop: Socket AM1,
Mobile: Socket FT3 DDR3 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2,
AVX PowerNow! AMD64,
NX bit,
AMD-V,
AES,
CLMUL,
CVT16/F16C,
BMI1 Puma Beema,
Mullins,
Stepped Eagle,
Crowned Eagle,
Carrizo-L,
LX-Family, E1-6010, E1-6050, E1-6200T, E1-7010, E2-6110, E2-7110, A4-6210, A4-7210, A4Pro-3350B, A4-6400T, A6-6310, A6-7310, A8-6410, A8-7410 800–2400 Socket FT3b, Socket AM1 Zen 14

GloFo 14LP

Zen March 2017 Summit Ridge Ryzen 3 (Pro 1200, 1200, Pro 1300, 1300X) 4 No 3100–3500 (3400–3700 boost) 8.0 GT/s
PCIe 64 KB inst.
32 KB data
per core 512 KB
per core 8 MB Socket AM4 Dual-channel DDR4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA

SHA
— FMA4
— TBM
— XOP
— 3DNow
— 3DNow!+
— Enhanced 3DNow!

Ryzen 5 (1400, Pro 1500, 1500X, Pro 1600, 1600, 1600X) 4/6 Yes 3200–3600 (3400–4000 boost) 8–16 MB Ryzen 7 (Pro 1700, 1700, Pro 1700X, 1700X, 1800X) 8 3000–3600 (3700–4000 boost) 16 MB June 2017 Naples EPYC 7001 series 8/16/24/32 2000–3100

(2550–3600 all)

(2700–3800 boost)

32–64 MB Socket SP3 Octa-channel DDR4 August 2017 Whitehaven Ryzen Threadripper (1900X, 1920X, 1950X) 8/12/16 3200–3800 (3800–4000 boost) 16–32 MB Socket TR4 Quad-channel DDR4 October 2017 Raven Ridge Athlon (Pro 200U, 300U),
Ryzen 3 (2200U, 3200U, 3250U) 2 Yes 2300–2600 (3200–3500 boost) 4 MB Socket FP5 Dual-channel DDR4 Ryzen 3 (2300U, Pro 2300U) 4 No 2000 (3400 boost) Ryzen 5 (2500U, Pro 2500U, 2600H),
Ryzen 7 (2700U, Pro 2700U, 2800H) Yes 2000–3300 (3600–3800 boost) February 2018 Athlon (200GE, Pro 200GE, 220GE, 240GE, 3000G) 2 Yes 3200–3500 Socket AM4 Ryzen 3 (2200GE, Pro 2200GE, 2200G, Pro 2200G) 4 No 3200–3500 (3600–3700 boost) Ryzen 5 (2400GE, Pro 2400GE, 2400G, Pro 2400G) Yes 3200–3600 (3800–3900 boost) February 2018 Snowy Owl EPYC Embedded 3001 series 4/8/12/16 No 1500–2100

(2150–3100 all)

(2900–3100 boost)

8–32 MB
(8 MB per CCX) Socket SP4r2 Dual-channel DDR4 EPYC Embedded 3051 series Yes 1900–2700

(2450–3100 all)

(2900–3100 boost)

16–32 MB
(8 MB per CCX) Great Horned Owl Ryzen Embedded V1000 series 2/4 Yes 2000–3350 (3200–3800 boost) 4 MB Socket FP5 April 2019 Banded Kestrel Ryzen Embedded R1000 series 2 No 1200 (2600 boost) Single-channel DDR4 Yes 1500–2600 (2800–3500 boost) Dual-channel DDR4 12

GloFo 12LP

Zen+ April 2018 Pinnacle Ridge Ryzen 3 (1200 AF, 2300X) 4 No 3100–3500 (3400–4000 boost) 8.0 GT/s
PCIe 64 KB inst.
32 KB data
per core 512 KB
per core 8 MB Socket AM4 Dual-channel DDR4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA Ryzen 5 2500X Yes 3600 (4000 boost) Ryzen 5 (1600 AF, 2600, 2600E, 2600X),
Ryzen 7 (2700, 2700E, 2700X, Pro 2700X) 6/8 2800–3700 (3600–4300 boost) 16 MB August 2018 Colfax Ryzen Threadripper (2920X, 2950X, 2970WX, 2990WX) 12/16/24/32 Yes 3000–3500 (4200–4400 boost) 32–64 MB Socket TR4 Quad-channel DDR4 January 2019 Picasso Ryzen 3 (3300U, Pro 3300U, 3350U) 4 No 2100 (3500 boost) 4 MB Socket FP5 Dual-channel DDR4 Ryzen 5 (3450U, 3500C, 3500U, Pro 3500U, 3550H, 3580U),
Ryzen 7 (3700C, 3700U, Pro 3700U, 3750H, 3780U) Yes 2100–2300 (3500–4000 boost) July 2019 Ryzen 3 (3200GE, Pro 3200GE, 3200G, Pro 3200G) No 3300–3600 (3800–4000 boost) Socket AM4 Ryzen 5 (3400GE, Pro 3400GE, 3400G, Pro 3400G) Yes 3300–3700 (4000–4200 boost) July 2020 Dali Athlon Silver 3050GE
Athlon Silver PRO 3125GE 2 Yes 3400 Athlon Gold (3150G, 3150GE)
Athlon Gold PRO (3150G, 3150GE) 4 No 3500 (3800–3900 boost) 7

TSMC N7

Zen 2 July 2019 Matisse Ryzen 3 (3100, 3300X) 4 Yes 3600–3800 (3900–4200 boost) 16.0 GT/s
PCIe 32 KB inst.
32 KB data
per core 512 KB
per core 16 MB Socket AM4 Dual-channel DDR4 MMX, SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA Ryzen 5 (3500, 3500X) 6 No 3600 (4100 boost) 16–32 MB Ryzen 5 (3600, Pro 3600, 3600X, 3600XT),
Ryzen 7 (Pro 3700, 3700X, 3800X, 3800XT) 6/8 Yes 3600–3900 (4200–4700 boost) 32 MB Ryzen 9 (3900, Pro 3900, 3900X, 3900XT, 3950X) 12/16 Yes 3100–3800 (4300–4700 boost) 64 MB August 2019 Rome EPYC 7002 series 8/12/16/24/32/48/64 Yes 2000–3700 (3200–3900 boost) 32–256 MB Socket SP3 Octa-channel DDR4 November 2019 Castle Peak Ryzen Threadripper (3960X, 3970X, 3990X) 24/32/64 Yes 2900–3800 (4300–4500 boost) 128/128/256 MB Socket sTRX4 Quad-channel DDR4 March 2020 Renoir Ryzen 3 4300U 4 No 2700 (3700 boost) 4 MB Mobile:
Socket FP6

Desktop:
Socket AM4

Mobile:
Dual-channel DDR4 or LPDDR4

Desktop:
Dual-channel DDR4

Ryzen 3 (4300G, 4300GE, 4350G, 4350GE, Pro 4450U) Yes 2500–3800 (3700–4200 boost) Ryzen 5 4500U 6 No 2300 (4000 boost) 8 MB Ryzen 5 (4600U, Pro 4650U, 4600H, 4600HS, 4680U),
Ryzen 5 (4600G, 4600GE, Pro 4650G, Pro 4650GE) Yes 2100–3700 (4000–4200 boost) Ryzen 7 4700U 8 No 2000 (4100 boost) Ryzen 7 (Pro 4750U, 4800U, 4800H, 4800HS),
Ryzen 7 (4700G, 4700GE, Pro 4750G, Pro 4750GE),
Ryzen 9 (4900H, 4900HS) Yes 1800–3600 (4100–4400 boost) April 2022 Ryzen 3 4100 4 Yes 3800 (4000 boost) Ryzen 5 4500 6 3600 (4100 boost) July 2020 Castle Peak (Pro) Ryzen Threadripper Pro (3945WX, 3955WX, 3975WX, 3995WX) 12/16/32/64 Yes 2700–4000 (4200–4300 boost) 64–256 MB
(16 MB per CCX) Socket sWRX8 Octa-channel DDR4 November 2020 Grey Hawk Ryzen Embedded V2000 series 6/8 Yes 1700–3000 (3950–4250 boost) 8 MB Socket FP6 Dual-channel DDR4 or Quad-channel LPDDR4 January 2021 Lucienne Ryzen 3 5300U 4 Yes 2600 (3800 boost) 4 MB Dual-channel DDR4 or LPDDR4 Ryzen 5 5500U 6 2100 (4000 boost) 8 MB Ryzen 7 5700U 8 1800 (4300 boost) Q4 2022 Mendocino[5] Athlon Silver 7120U 2 No 2400 (3500 boost) 2 MB Socket FT6 Dual-channel LPDDR5 Athlon Gold 7220U Yes 2400 (3700 boost) 4 MB Ryzen 7020 4 Yes 2400–2800 (4100–4300) 4 MB Zen 3 November 2020 Vermeer Ryzen 5 (5600X),
Ryzen 7 (5800X),
Ryzen 9 (5900X, 5950X) 6/8/12/16 Yes 3400–3800 (4600–4900 boost) 16.0 GT/s
PCIe 32 KB inst.
32 KB data
per core 512 KB
per core 32–64 MB
(32 MB per CCD/CCX) Socket AM4 Dual-channel DDR4 MMX(+), SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2 x86-64, AMD-V, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA April 2022 Ryzen 5 5600
Ryzen 7 5700X 6/8 3400–3500 (4400–4600 boost) Ryzen 7 5800X3D 8 3400 (4500 boost) 96 MB January 2021 Cezanne Ryzen 3 (5300G, 5300GE, 5400U) 4 2600–4000 (4000–4200 boost) 8 MB Mobile:
Socket FP6

Desktop:
Socket AM4

Mobile:
Dual-channel DDR4 or LPDDR4

Desktop:
Dual-channel DDR4

Ryzen 5 (5600G, 5600GE, 5600U, 5600H, 5600HS) 6 2300–3900 (4200–4400 boost) 16 MB Ryzen 7 (5700G, 5700GE, 5800U, 5800H, 5800HS)
Ryzen 9 (5900HS, 5900HX, 5980HS, 5980HX) 8 1900–3800 (4400–4800 boost) June 2021 Ryzen 3 PRO (5350G, 5350GE) 4 3600–4000 (4200 boost) 8 MB Ryzen 5 PRO (5650G, 5650GE) 6 3400–3900 (4400 boost) 16 MB Ryzen 7 PRO (5750G, 5750GE) 8 3200–3800 (4600 boost) May 2022 Cezanne / Barcelo[6] Ryzen 3 5125C 2 3000 8 MB January 2022 Ryzen 3 5425U 4 2700 (4100 boost) April 2022 Ryzen 3 PRO 5475U May 2022 Ryzen 3 5425C January 2022 Ryzen 5 5625U 6 2300 (4300 boost) 16 MB April 2022 Ryzen 5 PRO 5675U May 2022 Ryzen 5 5625C January 2022 Ryzen 7 5825U 8 2000 (4500 boost) April 2022 Ryzen 7 PRO 5875U May 2022 Ryzen 7 5825C January 2023 Barcelo-R Ryzen 7030 4/6/8 2000–2300 (4300–4500) 8–16 MB March 2021 Milan EPYC 7003 series 8/16/24/28/32/48/56/64 2000–3700 (3450–4100 boost) 64–256 MB
(16–32 MB per CCD/CCX) Socket SP3 Octa-channel DDR4 March 2022 Milan-X[7] EPYC 7003X series 16/24/32/64 2200–3050 (3500–3800 boost) 768 MB March 2022 Chagall[8] Ryzen Threadripper Pro (5945WX, 5955WX, 5965WX, 5975WX, 5995WX) 12/16/24/32/64 2700–4100 (4500 boost) 64–256 MB
(32 MB per CCD/CCX) Socket sWRX8 6

TSMC N6

Zen 3+ January 2022 Rembrandt[9][10][11] Ryzen 5 (6600U, 6600H, 6600HS)
Ryzen 7 (6800U, 6800H, 6800HS)
Ryzen 9 (6900HS, 6900HX, 6980HS, 6980HX) 6/8 Yes 2700–3300 (4500–5000 boost) 32 KB inst.
32 KB data
per core 512 KB
per core 16 MB Socket FP7 Dual-channel DDR5 or LPDDR5 MMX(+), SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2 x86-64, AMD-V, AVX, AVX2 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA April 2022 Ryzen 5 PRO (6650U, 6650H, 6650HS)
Ryzen 7 PRO (6850U, 6850H, 6850HS)
Ryzen 9 PRO (6950H, 6950HS) 2700–3300 (4500–4900 boost) January 2023 Rembrandt-R Ryzen 7035 4/6/8 2700–3300 (4300–4750) 5

TSMC N5

Zen 4 September 2022 Raphael Ryzen 5 (7600X)
Ryzen 7 (7700X)
Ryzen 9 (7900X, 7950X) 6/8/12/16 Yes 4500–4700 (5300–5700 boost) 16.0 GT/s
PCIe 32 KB inst.
32 KB data
per core 1 MB
per core 32–64 MB
(32 MB per CCD/CCX) Socket AM5 Dual-channel DDR5 MMX(+), SSE, SSE2, SSE3, SSE3s, SSE4a, SSE4.1, SSE4.2 x86-64, AMD-V, AVX, AVX2, AVX-512 AMD64, AES,
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA AVX-512 January 2023 Ryzen 5 7600
Ryzen 7 7700
Ryzen 9 7900 6/8/12 3700–3800 (5100–5400 boost) April 2023 Ryzen 7 7800X3D 8 4200 (5000 boost) 96 MB February 2023 Ryzen 9 7900X3D
Ryzen 9 7950X3D 12/16 4200–4400 (5600–5700 boost) 96+32 MB March 2023 Phoenix Ryzen 7040 6/8 3800–4300 (5000–5200) 16 MB Socket FP7, FP7r2, FP8 Dual-channel DDR5 or LPDDR5X February 2023 Dragon Range Ryzen 7045 6/8/12/16 2500–4000 (5000–5400 boost) 32–64 MB
(32 MB per CCD/CCX) Socket FL1 Dual-channel DDR5 November 2022 Genoa EPYC 9004 series 16/24/32/48/64/84/96 2250–4100 (3700–4400 boost) 32.0 GT/s
PCIe 64–384 MB
(32 MB per CCD/CCX) Socket SP5 Dodeca-channel DDR5 Architecture Fabrication Family Release Date Code Name Model Group Cores SMT Clock rate (MHz) Bus Speed
& Type[a] L1 L2 L3 Socket Memory Controller SIMD Speed/Power Other Changes Cache Features

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

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 бит. Например, процессоры с архитектурой Xeon Phi уже в 2012 году имели векторные регистры (ZMM) шириной в 512 бит[2], и используют для работы с ними SIMD-команды с MVEX- и VEX-префиксами, но при этом они не поддерживают AVX. [источник не указан 2798 дней]
  • Неразрушающие операции. Набор AVX-инструкций использует трёхоперандный синтаксис. Например, вместо a=a+b можно использовать c=a+b, при этом регистр a остаётся неизменённым. В случаях, когда значение a используется дальше в вычислениях, это повышает производительность, так как избавляет от необходимости сохранять перед вычислением и восстанавливать после вычисления регистр, содержавший a, из другого регистра или памяти.
  • Для большинства новых инструкций отсутствуют требования к выравниванию операндов в памяти. Однако рекомендуется следить за выравниванием на размер операнда во избежание значительного снижения производительности.[3]
  • Набор инструкций AVX содержит в себе аналоги 128-битных SSE-инструкций для вещественных чисел. При этом, в отличие от оригиналов, сохранение 128-битного результата будет обнулять старшую половину YMM-регистра. 128-битные AVX-инструкции сохраняют прочие преимущества AVX, такие как новая схема кодирования, трехоперандный синтаксис и невыровненный доступ к памяти.
  • Intel рекомендует отказаться от старых SSE-инструкций в пользу новых 128-битных AVX-инструкций, даже если достаточно двух операндов.[4].

Новая схема кодирования[править | править код]

Новая схема кодирования инструкций VEX использует VEX-префикс. В настоящий момент существуют два VEX-префикса, длиной 2 и 3 байта. Для 2-байтного VEX-префикса первый байт равен 0xC5, для 3-байтного — 0xC4.

В 64-битном режиме первый байт VEX-префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS.[3]

Длина существующих 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]

Применение[править | править код]

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

Поддержка[править | править код]

  • Math Kernel Library[5]

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

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

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

Микропроцессоры с AVX[править | править код]

  • Intel:
    • Процессоры с микроархитектурой Sandy Bridge, 2011.[9]
    • Процессоры с микроархитектурой Ivy Bridge, 2012.
    • Процессоры с микроархитектурой Haswell, 2013.
    • Процессоры с микроархитектурой Broadwell, 2015.
    • Процессоры с микроархитектурой Skylake, 2015.
    • Процессоры с микроархитектурой Kaby Lake, 2017.
    • Процессоры с микроархитектурой Coffee Lake, 2017.
  • AMD:
    • Процессоры с микроархитектурой Bulldozer, 2011.[10]
    • Процессоры с микроархитектурой Piledriver, 2012.
    • Процессоры с микроархитектурой Steamroller, 2014.
    • Процессоры с микроархитектурой Excavator, 2015.
    • Процессоры с микроархитектурой Zen, 2017.
    • Процессоры с микроархитектурой Zen 2, 2019.
    • Процессоры с микроархитектурой Zen 3, 2020.

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

Микропроцессоры с AVX2[править | править код]

  • Intel Haswell[11]
  • Intel Broadwell
  • Intel Skylake
  • Intel Kaby Lake
  • Intel Coffee Lake
  • Intel Comet Lake
  • Intel Rocket Lake
  • Intel Alder Lake
  • AMD Excavator
  • AMD Zen (AMD Ryzen)
  • AMD Zen 2 (AMD Ryzen)
  • AMD Zen 3 (AMD Ryzen)

AVX-512[править | править код]

AVX-512 расширяет систему команд AVX до векторов длиной 512 бит при помощи кодировки с префиксом EVEX. Расширение AVX-512 вводит 32 векторных регистра (ZMM), каждый по 512 бит, 8 регистров масок, 512-разрядные упакованные форматы для целых и дробных чисел и операции над ними, тонкое управление режимами округления (позволяет переопределить глобальные настройки), операции broadcast (рассылка информации из одного элемента регистра в другие), подавление ошибок в операциях с дробными числами, операции gather/scatter (сборка и рассылка элементов векторного регистра в/из нескольких адресов памяти), быстрые математические операции, компактное кодирование больших смещений. AVX-512 предлагает совместимость с AVX, в том смысле, что программа может использовать инструкции как AVX, так и AVX-512 без снижения производительности. Регистры AVX (YMM0-YMM15) отображаются на младшие части регистров AVX-512 (ZMM0-ZMM15), по аналогии с SSE и AVX регистрами.[12]

Используeтся в Intel Xeon Phi (ранее Intel MIC) Knights Landing (версия AVX3.1), Intel Skylake-X,[12] Intel Ice Lake, Intel Tiger Lake, Intel Rocket Lake. Также поддержка AVX-512 имеется в производительных ядрах Golden Cove[13] процессоров Intel Alder Lake, однако энергоэффективные ядра Gracemont её лишены. По состоянию на декабрь 2021 г. поддержка AVX-512 для потребительских процессоров Alder Lake официально не заявляется.[14]

Будущие расширения[править | править код]

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

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

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

В серверных процессорах поколения Broadwell добавлены расширения AVX 3.1, а в серверных процессорах поколения Skylake — AVX 3.2.

Примечания[править | править код]

  1. ISA Extensions | Intel® Software. Дата обращения: 24 июня 2016. Архивировано 6 мая 2019 года.
  2. Intel® Xeon Phi™ Coprocessor Instruction Set Architecture Reference Manual (недоступная ссылка — история). Архивировано 11 мая 2013 года.
  3. 1 2 Introduction to Intel® Advanced Vector Extensions — Intel® Software Network. Дата обращения: 19 июля 2012. Архивировано 16 июня 2012 года.
  4. Questions about AVX — Intel® Software Network. Дата обращения: 24 июня 2016. Архивировано 7 августа 2016 года.
  5. Intel® AVX optimization in Intel® MKL. Дата обращения: 7 января 2014. Архивировано 7 января 2014 года.
  6. x86: add linux kernel support for YMM state (недоступная ссылка — история). Дата обращения: 13 июля 2009. Архивировано 5 апреля 2012 года.
  7. Linux 2.6.30 — Linux Kernel Newbies (недоступная ссылка — история). Дата обращения: 13 июля 2009. Архивировано 5 апреля 2012 года.
  8. 1 2 Enable Windows 7 Support for Intel AVX (недоступная ссылка — история). Microsoft. Дата обращения: 29 января 2011. Архивировано 5 апреля 2012 года.
  9. Intel Offers Peek at Nehalem and Larrabee. ExtremeTech (17 марта 2008). Архивировано 7 июня 2011 года.
  10. Striking a balance (недоступная ссылка — история). Dave Christie, AMD Developer blogs (7 мая 2009). Дата обращения: 8 мая 2009. Архивировано 5 апреля 2012 года.
  11. 1 2 More details on the future AVX instruction set 2.0 | Tech News Pedia. Дата обращения: 14 ноября 2012. Архивировано из оригинала 31 октября 2012 года.
  12. 1 2 James Reinders (23 July 2013), AVX-512 Instructions, Intel, <http://software.intel.com/en-us/blogs/2013/avx-512-instructions>. Проверено 20 августа 2013. Источник. Дата обращения: 18 ноября 2013. Архивировано 31 марта 2015 года.
  13. Dr Ian Cutress, Andrei Frumusanu. Intel Architecture Day 2021: Alder Lake, Golden Cove, and Gracemont Detailed. www.anandtech.com. Дата обращения: 23 декабря 2021. Архивировано 4 января 2022 года.
  14. Product Specifications (англ.). www.intel.com. Дата обращения: 23 декабря 2021.

Ссылки[править | править код]

  • Intel Advanced Vector Extensions Programming Reference (319433-011)(pdf) (англ.)
  • Использование Intel AVX: пишем программы завтрашнего дня (рус.)
  • Приемы использования масочных регистров в AVX512 коде (рус.)

Любой компьютер — это очень сложное устройство, которое состоит из десятков модулей. Сегодня мы разберём, какие процессоры работают и поддерживают инструкцию SSE2. А также что они собой представляют.

Содержание

  1. Что такое SSE2?
  2. Какие процессоры поддерживают технологию SSE
  3. Устройства, которые не имеют инструкций SSE2
  4. Проверка наличия SSE2 в процессоре на ПК

Что такое SSE2?

SSE2 являются SIMD — эта аббревиатура с английского языка переводится, как единая инструкция и множество данных. SIMD — это своего рода поток команд, который реализует параллелизм при работе с данными. Без них компьютеры нового поколения не смогли бы выполнять одновременно сотни процессов.

Фото ноутбуков

Набор был разработан инженерами компании Intel. Главная его цель — расширить возможности процессоров.

Без них компьютер лишается следующих возможностей:

  • SSE2 содержит команды по управлению кэшем, которые минимизируют заполнение памяти данными, тщательно сортируют их;
  • Сложные формулы для вычисления и преобразования чисел;
  • Инструкции для вычисления скалярных данных и для работы с упакованными данными;
  • Содержит набор инструкций для работы с потоковыми данными. Использует новые методы вычислений, которые эффективнее инструкций MMX;
  • SSE2 дополнила прошлую первую версию инструкций, добавив 144 новых команд;
  • И многое другое.

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

SIMD-процессор

В свою очередь каждый управляемый модуль имеет собственную память. Когда основной процессор получает команду к вычислению, он переправляет её всем вычислительным элементам. После чего каждый свободный элемент принимается за работу. Подобную архитектуру используют в создании компьютерных процессоров не только Intel, но и AMD.

Читайте также: CUDA error — cannot allocate big buffer for DAG как исправить.

Какие процессоры поддерживают технологию SSE

Несмотря на то, что уже есть более усовершенствованные инструкции (SSE3, SSSE3), процессоры, поддерживающие инструкцию SSE2, также до сих пор применяют. Более того, если в процессоре вашего компьютера она будет отсутствовать, вы не сможете установить на него Windows версии 8.1 и выше. А также текстовый процессор Word версии 2013 года или позднее.

Программа Word

Впервые компания Intel использовала SSE2 в Pentium 4. И с тех пор практически каждая модель процессора содержит её. Поэтому сегодня сложно найти контроллер без инструкции.

Поддержка SSE2: Пояснение:
Осуществляется в разных процессорах 32 и 64 бит. Инструкции есть в линейках AMD K8 — серии AMD Ryzen, Ruion 64, Athlon 64, FX, Phenom, Sempron.
Практически во всех Intel Core i3, Core i5, Corei7, Duo-Core, а также процессоры, которые поддерживают технологию NetBurst (Celeron D, Xeon, Pentium 4, Celeron).
В более бюджетных моделях. Intel Atom, Pentium M и процессора Celeron M.

Процессоры Intel

Вполне возможно, что вскоре будут разработаны новые инструкции, которые придут на смену старым. В этом случае SSE2 исчезнет из списка так же, как и её предшественник.

Это может быть полезным: SM контроллер шины — что это за драйвер.

Устройства, которые не имеют инструкций SSE2

Инструкции SSE2 были разработаны и внедрены в тридцати двух битные процессоры Intel или являются их усовершенствованием. Поэтому компьютерные процессоры, созданные на базе другой архитектуры (например, 16 бит) их не поддерживают. Поскольку SSE2 была разработана и внедрена в Pentium 4, то поддержка отсутствует в процессорах, выпущенных компанией до этой версии. А также нет инструкций в AMD Athlon 64. И некоторые других (Crusoe).

Процессор Crusoe

Проверка наличия SSE2 в процессоре на ПК

Чтобы определить поддержку данной инструкции на своём компьютере, необходимо воспользоваться утилитой для отображения информации о процессоре. Подобных существует очень много, самой простой является CPU-Z, которую можно загрузить бесплатно с официального сайта https://www.cpuid.com/.

Кнопка для загрузки CPU-Z

На главной странице нажмите на кнопку «Download» в окне программы для Windows. Программа очень компактна, её установочный пакет размером всего 1.9 Мб.

Линки на скачивание

После установки запустите утилиту и выберите вкладку «CPU» в том случае, если программа по умолчанию открыла другую.

Программа CPU-Z

Выберите вкладку CPU

На данной странице будет отображаться основная информацию о процессоре вашего компьютера. А именно: название, серия, кодовое название, спецификации и технологии. Инструкции находятся в соответствующей строке «Instruction». На иллюстрации видно, что текущий процессор имеет инструкции: SSE, SSE2, SSE3, AMD-V, x86-64, MMX, 3D-NOW!.

Строка с инструкциями

Если вы покупаете процессор в магазине или в интернете, то эту информацию можно узнать у консультанта. Все процессоры, которые имеют поддержку инструкций (в том числе, SSE2), в интернет-магазине можно найти на странице с подробной информацией.

Информация о процессоре

Например, на страницах популярного AliExpress достаточно выбрать модель процессора из списка, и найти эту информацию не составит труда.

Понравилась статья? Поделить с друзьями:
  • Процессор весовой пв 310 инструкция
  • Процессор ntvdm обнаружил недопустимую инструкцию
  • Процессор поддерживающий набор инструкций avx2
  • Процессор выполняет универсальные инструкции которые называются командами
  • Процессор kicx st d8 инструкция