Sse 4 2 на каких процессорах
SSE4 — новый набор команд микроархитектуры Intel Core, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD) [1] .
Он был анонсирован 27 сентября 2006 года, однако детальное описание стало доступно только весной 2007 года. Более подробное описание новых возможностей процессоров для программистов можно найти на сайте Intel.
Новые инструкции SSE4.1
Округления
- ROUND xmm1, xmm2/m128, imm8 — (Round Packed Single/Double Precision Floating-Point Values)
Округление всех 32/64-х битных полей. Режим округления (4 варианта) выбирается либо из MXCSR.RC, либо задаётся непосредственно в imm8. Также можно подавить генерацию исключения потери точности.
- ROUND xmm1, xmm2/m128, imm8 — (Round Scalar Single/Double Precision Floating-Point Values)
Округление только младшего 32/64-х битного поля (остальные биты остаются неизменными).
Смешивания
- BLENDV xmm1, xmm2/m128, — (Variable Blend Packed Single/Double Precision Floating-Point Values)
Выбор каждого 32/64-битного поля результата осуществляется в зависимости от знака такого же поля в неявном аргументе xmm0: либо из первого, либо из второго аргумента.
- BLEND xmm1, xmm2/m128, imm8 — (Blend Packed Single/Double Precision Floating-Point Values)
Битовая маска (4 или 2 бита) в imm8 указывает из какого аргумента следует взять каждое 32/64-битное поле результата.
- PBLENDVB xmm1, xmm2/m128, — (Variable Blend Packed Bytes)
Выбор каждого байтового поля результата осуществляется в зависимости от знака байта такого же поля в неявном аргументе xmm0: либо из первого, либо из второго аргумента.
- PBLENDW xmm1, xmm2/m128, imm8 — (Blend Packed Words)
Битовая маска (8 бит) в imm8 указывает из какого аргумента следует взять каждое 16-битное поле результата.
Изменения
Добавлены инструкции, ускоряющие компенсацию движения в видеокодеках, быстрое чтение из USWC памяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32, popcnt. Впервые в SSE4 регистр xmm0 стал использоваться как неявный аргумент для некоторых инструкций.
Чтение WC памяти
- MOVNTDQA xmm1, m128 — (Load Double Quadword Non-Temporal Aligned Hint)
Операция чтения, позволяющая ускорить (до 7.5 раз) работу с write-combining областями памяти.
Векторные примитивы
- PCMPGTQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Greater Than)
Проверка 64-х битных полей на "больше чем" и выдача 64-х битных масок.
SSE4a
Набор инструкций SSE4a был введен компанией AMD в процессоры на архитектуре Barcelona. Эти инструкции не доступны в процессорах Intel. Поддержка определяется через CPUID.80000001H:ECX.SSE4A[Bit 6] флаг. [4]
Инструкция | Описание |
---|---|
EXTRQ/INSERTQ | Комбинированные инструкции маскирования и сдвига |
MOVNTSD/MOVNTSS | Скалярные инструкции потоковой записи |
Смотреть что такое "SSE4" в других словарях:
SSE4.1 — SSE4 это новый набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007, свежее … Википедия
SSE4.2 — SSE4 это новый набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007, свежее … Википедия
SSE4.1 — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE4 — Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d’instructions supplémentaires pour l’architecture x86. Le jeu complet comprend… … Wikipédia en Français
SSE4 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
SSE4.1 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
SSE4.2 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
Nehalem New Instructions — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE-4 — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
Пользователи некоторых старых компьютеров все чаще обнаруживают, что часть новых программ и компьютерных игр больше не работает на их системах. При чем это не зависит от версии или разрядности операционной системы. Ограничения находятся на аппаратном уровне и связаны с поддержкой инструкций SSE 4.1 и SSE 4.2. В данной статье мы расскажем, что это такое и какие процессоры поддерживают SSE 4.1 и SSE 4.2.
Новые инструкции SSE4.1
Векторные примитивы
- P xmm1, xmm2/m128 — (Minimum/Maximum of Packed Signed/Unsigned Byte/Word/DWord Integers)
Каждое поле результата есть минимальное/максимальное значение соответствующих полей двух аргументов. Байтовые поля рассматриваются только как числа со знаком, 16-ти битные — только как числа без знака. Для 32-х битных упакованных полей предусмотрен вариант как со знаком, так и без.
Перемножение 32-х битных полей со знаком с выдачей полных 64-х бит результата (две операции умножения над 0 и 2 полями аргументов).
Перемножение 32-х битных полей со знаком с выдачей младших 32-х бит результатов (четыре операции умножения над всеми полями аргументов).
- PACKUSDW xmm1, xmm2/m128 — (Pack with Unsigned Saturation)
Упаковка 32-х битных полей со знаком в 16-ти битные поля без знака с насыщением.
- PCMPEQQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Equal)
Проверка 64-х битных полей на равенство и выдача 64-х битных масок.
Обработка строк
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обоих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
Все они оказывают влияние на флаги процессора: SF устанавливается если в xmm1 не полная строка, ZF — если в xmm2/m128 не полная строка, CF — если результат не нулевой, OF — если младший бит результата не нулевой. Флаги AF и PF сбрасываются.
Явное задание размера строк в , (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре ecx.
Явное задание размера строк в , (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре xmm0.
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре ecx.
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре xmm0.
Проверки бит
- PTEST xmm1, xmm2/m128 — (Logical Compare)
Установить флаг ZF, если только в xmm2/m128 все биты помеченные маской из xmm1 равны нулю. Если все не помеченные биты равны нулю, то установить флаг CF. Остальные флаги (AF, OF, PF, SF) всегда сбрасываются. Инструкция не модифицирует xmm1.
Векторные примитивы
- PCMPGTQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Greater Than)
Проверка 64-х битных полей на "больше чем" и выдача 64-х битных масок.
Процессоры с SSE4
Подсчет CRC32
Накопление значения CRC-32C (другие обозначения CRC-32/ISCSI CRC-32/CASTAGNOLI) для 8, 16, 32 или 64 битного аргумента (используется полином 0x11EDC6F41).
Векторные примитивы
- PCMPGTQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Greater Than)
Проверка 64-х битных полей на «больше чем» и выдача 64-х битных масок.
Векторные примитивы
- P xmm1, xmm2/m128 — (Minimum/Maximum of Packed Signed/Unsigned Byte/Word/DWord Integers)
Каждое поле результата есть минимальное/максимальное значение соответствующих полей двух аргументов. Байтовые поля рассматриваются только как числа со знаком, 16-ти битные — только как числа без знака. Для 32-х битных упакованных полей предусмотрен вариант как со знаком, так и без.
Перемножение 32-х битных полей со знаком с выдачей полных 64-х бит результата (две операции умножения над 0 и 2 полями аргументов).
Перемножение 32-х битных полей со знаком с выдачей младших 32-х бит результатов (четыре операции умножения над всеми полями аргументов).
- PACKUSDW xmm1, xmm2/m128 — (Pack with Unsigned Saturation)
Упаковка 32-х битных полей со знаком в 16-ти битные поля без знака с насыщением.
- PCMPEQQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Equal)
Проверка 64-х битных полей на равенство и выдача 64-х битных масок.
Новые инструкции SSE4.2
Скалярное умножение векторов
- DPPS xmm1, xmm2/m128, imm8 — (Dot Product of Packed Single Precision Floating-Point Values)
- DPPD xmm1, xmm2/m128, imm8 — (Dot Product of Packed Double Precision Floating-Point Values)
Скалярное умножение векторов (dot product) 32/64 битных полей. Посредством битовой маски в imm8 указывается, какие произведения полей должны суммироваться и что следует прописать в каждое поле результата: сумму указанных произведений или +0.0.
Смешивания
- BLENDV xmm1, xmm2/m128, — (Variable Blend Packed Single/Double Precision Floating-Point Values)
Выбор каждого 32/64-битного поля результата осуществляется в зависимости от знака такого же поля в неявном аргументе xmm0: либо из первого, либо из второго аргумента.
- BLEND xmm1, xmm2/m128, imm8 — (Blend Packed Single/Double Precision Floating-Point Values)
Битовая маска (4 или 2 бита) в imm8 указывает из какого аргумента следует взять каждое 32/64-битное поле результата.
- PBLENDVB xmm1, xmm2/m128, — (Variable Blend Packed Bytes)
Выбор каждого байтового поля результата осуществляется в зависимости от знака байта такого же поля в неявном аргументе xmm0: либо из первого, либо из второго аргумента.
- PBLENDW xmm1, xmm2/m128, imm8 — (Blend Packed Words)
Битовая маска (8 бит) в imm8 указывает из какого аргумента следует взять каждое 16-битное поле результата.
Полезное
Подсчет CRC32
Накопление значения CRC-32C (другие обозначения CRC-32/ISCSI CRC-32/CASTAGNOLI) для 8, 16, 32 или 64 битного аргумента (используется полином 0x11EDC6F41).
Новые инструкции SSE4.2
Speccy
Для того чтобы проверить наличие поддержки инструкций SSE 4.1 и SSE 4.2 нужно запустить программу Speccy и перейти в раздел « CPU ». Как и в CPU-Z, здесь в строке « Instructions » будут указаны все поддерживаемые инструкции.
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
SSE4 это новый набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007, свежее описание для программистов можно найти здесь на сайте Intel.
Компилятор языка Си от Intel начиная с версии 10 генерирует инструкции SSE4 при задании опции -QxS.
Набор команд
Подгруппа | Процессорные команды | Описание | Ожидаемые улучшения в работе приложения |
---|---|---|---|
Различные упакованные операции DWORD | PMULLD, PMULDQ | Новая поддержка четырех знаковых (и без знака) 32x32 битных умножений за одну инструкцию, так же как знаковые умножения вида 32x32->64. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran). |
Скалярное произведение с плавающей точкой | DPPS, DPPD | Повышенная производительность обработки данных типа AOS (массив структур) посредством поддержки скалярных произведений с одинарной и двойной точностью. | Создание трехмерного контента, игр. Поддержка языков программирования, таких как CG и HLSL. |
Упакованное сопряжение | BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDDW | Условно операция сопряжения копирует одно поле от источника и переносит его в место назначения. Эти новые процессорные команды повысят производительность операций сопряжения для большинства размеров полей, посредством упаковки операций умножения в единую инструкцию. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran), а также для приложений, предназначенных для обработки изображений, видеоинформации. Мультимедиа и игровые ресурсы. |
Упакованные целочисленные максимальные и минимальные значения | PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINDS, PMAXSD | Сравнивает упакованные знаковые/без знака на уровне байт/слов/двойных слов целочисленные значения в операнде назначения и в исходном операнде и возвращает минимальное или максимальное значение за одну инструкцию для каждого запакованного операнда в операнде назначения. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran), а также для приложений, предназначенных для обработки изображений, видеоинформации. |
Округление значений с плавающей запятой | ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSD | Эффективно округляет скаляр и упакованный операнд с одинарной или двойной точностью до целочисленного значения с поддержкой требований языков программирования Fortran, JAVA и C99. | Обработка изображений, графики, видеоинформации. Приложения с двухмерной/трехмерной мультимедиа и игровые ресурсы. |
Вставка/извлечение регистров | INSERTPS, PINSRB, PINSRD, PINSRQ, EXTRACTPS, PEXTRB, PEXTRD, PEXTRW, PEXTRQ | Эти новые процессорные команды упрощают процесс вставки и извлечения между регистрами GPR (или памятью) и XMM. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran), а также для приложений, предназначенных для обработки изображений, видеоинформации. |
Упакованное преобразование форматов | PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQ | Преобразует упакованное целочисленное значение (из регистра XMM или памяти) в целочисленное значение более широкого типа со знаковым или нулевым расширением. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran), а также для приложений, предназначенных для обработки изображений, видеоинформации. |
Упакованная проверка и установка | PTEST | Более быстрое ветвление архитектуры SIMD, осуществляемое для поддержки векторизированного кода. | Применимо для автоматизации компиляторной векторизации обработки данных, обработки изображений и видеоинформации, создания трехмерного контента. Мультимедиа и игровые ресурсы. |
Упакованное определение идентичности | PCMPEQQ, PCMPGTQ | Архитектура SIMD определяет идентичность упакованных значений QWORDs в операнде назначения и в исходном операнде. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran), а также для приложений, предназначенных для обработки изображений, видеоинформации. Мультимедиа и игровые ресурсы. |
Упаковка DWORD в беззнаковый формат WORD | PACKUSDW | Преобразует упакованный знаковый DWORD в упакованный формат WORD без знака посредством беззнакового сосредоточения для обработки условий переполнения. Эта новая процессорная команда завершает набор других команд в этом формате. | Широко применимо для автоматизации компиляторной векторизации обработки данных, написанных на языках программирования высокого уровня (таких как C и Fortran), а также для приложений, предназначенных для обработки изображений, видеоинформации. Мультимедиа и игровые ресурсы. |
Улучшенные строковые операции | PCMPESTRI, PCMPESTRM, PCMPISTRI, PCMPISTRM | Эти новые процессорные команды содержат в себе большое количество возможностей обработки строк и текста, которые обычно требуют участия большего количества кодов операции. | Повышенная производительность для сканирования вирусов, поиска текста, строковой обработки библиотек, таких как ZLIB, базы данных, компиляторы и приложения, предназначенные для конечного автомата. |
Компилятор языка Си от Intel начиная с версии 10 генерирует инструкции SSE4 при задании опции -QxS. Компилятор Sun Studio от Sun Microsystems с версии 12 update 1 генерирует инструкции SSE4 с помощью опций -xarch=sse4_1 (SSE4.1) и -xarch=sse4_2 (SSE4.2) [2] . Компилятор GCC поддерживает SSE4.1 и SSE4.2 с версии 4.3 [3] , опции -msse4.1 и -msse4.2, или -msse4, включающая оба варианта.
Подсчет популяции единичных бит
- POPCNT r, r/m* — (Return the Count of Number of Bits Set to 1)
Подсчет числа единичных битов. Три варианта инструкции: для 16, 32 и 64-х битных регистров. Также присутствует в SSE4A от AMD.
Скалярное умножение векторов
- DPPS xmm1, xmm2/m128, imm8 — (Dot Product of Packed Single Precision Floating-Point Values)
- DPPD xmm1, xmm2/m128, imm8 — (Dot Product of Packed Double Precision Floating-Point Values)
Скалярное умножение векторов (dot product) 32/64 битных полей. Посредством битовой маски в imm8 указывается, какие произведения полей должны суммироваться и что следует прописать в каждое поле результата: сумму указанных произведений или +0.0.
Литература
Wikimedia Foundation . 2010 .
Скалярное умножение векторов
- DPPS xmm1, xmm2/m128, imm8 — (Dot Product of Packed Single Precision Floating-Point Values)
- DPPD xmm1, xmm2/m128, imm8 — (Dot Product of Packed Double Precision Floating-Point Values)
Скалярное умножение векторов (dot product) 32/64 битных полей. Посредством битовой маски в imm8 указывается, какие произведения полей должны суммироваться и что следует прописать в каждое поле результата: сумму указанных произведений или +0.0.
Содержание
Вставки/извлечения
- INSERTPS xmm1, xmm2/m32, imm8 — (Insert Packed Single Precision Floating-Point Value)
Вставка 32-х битного поля из xmm2 (возможно выбрать любой из 4 полей этого регистра) или из 32-х битной ячейки памяти в произвольное поле результата. Кроме того, для каждого из полей результата можно задать сброс его в +0.0.
- EXTRACTPS r/m32, xmm, imm8 — (Extract Packed Single Precision Floating-Point Value)
Извлечение 32-х битного поля из xmm регистра, номер поля указывается в младших 2 битах imm8. Если в качестве результата указан 64-х битный регистр, то его старшие 32 бита сбрасываются (расширение без знака).
- PINSR xmm, r/m*, imm8 — (Insert Byte/Dword/Qword)
Вставка 8, 32, или 64-х битного значения в указанное поле xmm регистра (остальные поля не изменяются).
- PEXTR r/m*, xmm, imm8 — (Extract Byte/Word/Dword/Qword)
Извлечение 8, 16, 32, 64 битного поля из указанного в imm8 поля xmm регистра. Если в качестве результата указан регистр, то его старшая часть сбрасывается (расширение без знака).
Литература
Векторные примитивы
- P xmm1, xmm2/m128 — (Minimum/Maximum of Packed Signed/Unsigned Byte/Word/DWord Integers)
Каждое поле результата есть минимальное/максимальное значение соответствующих полей двух аргументов. Байтовые поля рассматриваются только как числа со знаком, 16-ти битные — только как числа без знака. Для 32-х битных упакованных полей предусмотрен вариант как со знаком, так и без.
Перемножение 32-х битных полей со знаком с выдачей полных 64-х бит результата (две операции умножения над 0 и 2 полями аргументов).
Перемножение 32-х битных полей со знаком с выдачей младших 32-х бит результатов (четыре операции умножения над всеми полями аргументов).
- PACKUSDW xmm1, xmm2/m128 — (Pack with Unsigned Saturation)
Упаковка 32-х битных полей со знаком в 16-ти битные поля без знака с насыщением.
- PCMPEQQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Equal)
Проверка 64-х битных полей на равенство и выдача 64-х битных масок.
Новые инструкции SSE4.2
Intel
В настольных процессорах Intel поддержка SSE 4.1 появилась в архитектуре Penryn (процессоры Core 2 Duo, Core 2 Quad), а поддержка SSE 4.2 в архитектуре Nehalem (процессоры Intel Core 1-поколения).
Полная же поддержка инструкций SSE 4.2 (включая POPCNT и LZCNT) доступна начиная с архитектуры Haswell (процессоры Intel Core 4-поколения).
Более подробная информация о поддержке в таблице внизу.
Микроархитектура Intel | Процессоры | Поддержка инструкций |
Silvermont |
В настольных процессорах AMD сначала появилась поддержка собственного набора инструкций SSE4a, который отсутствовал в процессорах Intel.
Но, уже начиная микроархитектуры Bulldozer (FX) была внедрена поддержка SSE 4.1 и SSE 4.2 (включая инструкции POPCNT и LZCNT). Последовавшая в дальнейшем микроархитектура Zen (Ryzen) также в полной мере поддерживает SSE 4.1 и SSE 4.2.
Более подробная информация о поддержке в таблице внизу.
Микроархитектура AMD | Процессоры | Поддержка инструкций |
K10 |
Смешивания
- BLENDV xmm1, xmm2/m128, — (Variable Blend Packed Single/Double Precision Floating-Point Values)
Выбор каждого 32/64-битного поля результата осуществляется в зависимости от знака такого же поля в неявном аргументе xmm0: либо из первого, либо из второго аргумента.
- BLEND xmm1, xmm2/m128, imm8 — (Blend Packed Single/Double Precision Floating-Point Values)
Битовая маска (4 или 2 бита) в imm8 указывает из какого аргумента следует взять каждое 32/64-битное поле результата.
- PBLENDVB xmm1, xmm2/m128, — (Variable Blend Packed Bytes)
Выбор каждого байтового поля результата осуществляется в зависимости от знака байта такого же поля в неявном аргументе xmm0: либо из первого, либо из второго аргумента.
- PBLENDW xmm1, xmm2/m128, imm8 — (Blend Packed Words)
Битовая маска (8 бит) в imm8 указывает из какого аргумента следует взять каждое 16-битное поле результата.
Проверки бит
- PTEST xmm1, xmm2/m128 — (Logical Compare)
Установить флаг ZF, если только в xmm2/m128 все биты помеченные маской из xmm1 равны нулю. Если все не помеченные биты равны нулю, то установить флаг CF. Остальные флаги (AF, OF, PF, SF) всегда сбрасываются. Инструкция не модифицирует xmm1.
Вставки/извлечения
- INSERTPS xmm1, xmm2/m32, imm8 — (Insert Packed Single Precision Floating-Point Value)
Вставка 32-х битного поля из xmm2 (возможно выбрать любой из 4 полей этого регистра) или из 32-х битной ячейки памяти в произвольное поле результата. Кроме того, для каждого из полей результата можно задать сброс его в +0.0.
- EXTRACTPS r/m32, xmm, imm8 — (Extract Packed Single Precision Floating-Point Value)
Извлечение 32-х битного поля из xmm регистра, номер поля указывается в младших 2 битах imm8. Если в качестве результата указан 64-х битный регистр, то его старшие 32 бита сбрасываются (расширение без знака).
- PINSR xmm, r/m*, imm8 — (Insert Byte/Dword/Qword)
Вставка 8, 32, или 64-х битного значения в указанное поле xmm регистра (остальные поля не изменяются).
- PEXTR r/m*, xmm, imm8 — (Extract Byte/Word/Dword/Qword)
Извлечение 8, 16, 32, 64 битного поля из указанного в imm8 поля xmm регистра. Если в качестве результата указан регистр, то его старшая часть сбрасывается (расширение без знака).
Смотреть что такое "SSE4.2" в других словарях:
SSE4 — SSE4 новый набор команд микроархитектуры Intel Core, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD)[1]. Он был анонсирован 27 сентября 2006 года, однако детальное описание стало доступно только весной… … Википедия
SSE4.1 — SSE4 это новый набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007, свежее … Википедия
SSE4.1 — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE4 — Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d’instructions supplémentaires pour l’architecture x86. Le jeu complet comprend… … Wikipédia en Français
SSE4 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
SSE4.1 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
SSE4.2 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
Nehalem New Instructions — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE-4 — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE4 это новый набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007, свежее описание для программистов можно найти здесь на сайте Intel.
Компилятор языка Си от Intel начиная с версии 10 генерирует инструкции SSE4 при задании опции -QxS.
Процессоры, поддерживающие SSE 4.1 и SSE 4.2
Практически все современные процессоры поддерживают инструкции SSE 4.1 и SSE 4.2. Ниже мы расскажем в каких процессорах Intel и AMD поддержка этих инструкций появилась впервые.
Как узнать, что процессор поддерживает SSE 4.1 и SSE 4.2?
Вы можете скачать установочную версию утилиты (1.) или портативную (2.). Если не хотите устанавливать утилиту на свою систему, можете скачать портативную версию CPU-Z.
В своем примере, буду использовать портативную версию. После загрузки CPU-Z, открываем архив и запускаем исполняемый файл CPU-Z, в соответствии с разрядностью своей системы:
После запуска утилиты CPU-Z, смотрим на строку «Instructions» на вкладке «CPU»:
Если строка «Instructions» не содержит информации о SSE 4.2, значит, процессор не поддерживает SSE 4.2.
Приветствуются комментарии с полезной информацией: уточнениями, дополнениями, вопросами. Очень хорошо, когда вы делитесь своим опытом. Ваш опыт и информация, могут быть полезны другим.
Категорически запрещено в комментариях использование ненормативной лексики (в том числе нецензурную речь). Комментарии со спамом и рекламой, не пройдут модерацию.
Все комментарии, проходят модерацию и публикуются только после рассмотрения и одобрения.
Без политики и языковых перепалок.
Мной была добавлена дополнительная система комментариев от Телеграм. Вы можете оставлять комментарии в обычной форме (нужен Google аккаунт) или через Телеграм (комментарии расположены выше). Правила одинаковые:
Без мата и оскорблений.
Без политики и языковых перепалок.
Без спама и рекламы.
Изменения
Добавлены инструкции, ускоряющие компенсацию движения в видеокодеках, быстрое чтение из WC памяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32, popcnt. Впервые в SSE4 регистр xmm0 стал использоваться как неявный аргумент для некоторых инструкций.
Округления
- ROUND xmm1, xmm2/m128, imm8 — (Round Packed Single/Double Precision Floating-Point Values)
Округление всех 32/64-х битных полей. Режим округления (4 варианта) выбирается либо из MXCSR.RC, либо задаётся непосредственно в imm8. Также можно подавить генерацию исключения потери точности.
- ROUND xmm1, xmm2/m128, imm8 — (Round Scalar Single/Double Precision Floating-Point Values)
Округление только младшего 32/64-х битного поля (остальные биты остаются неизменными).
Примечания
- ↑Инновационный набор команд Streaming SIMD Extensions 4 (SSE4)
- ↑Sun Studio 12 Update 1: C Compiler 5.10 Readme
- ↑GCC 4.3 Release Series — Changes, New Features, and Fixes — GNU Project — Free Software Foundation (FSF)
- ↑AMD CPUID Specification
- Инструкции x86
- Расширения архитектуры x86
Wikimedia Foundation . 2010 .
Подсчет популяции единичных бит
- POPCNT r, r/m* — (Return the Count of Number of Bits Set to 1)
Подсчет числа единичных бит. Три варианта инструкции: для 16, 32 и 64-х битных регистров. Также присутствует в SSE4A от AMD.
Новые инструкции SSE4.1
Обработка строк
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обоих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
Все они оказывают влияние на флаги процессора: SF устанавливается если в xmm1 не полная строка, ZF — если в xmm2/m128 не полная строка, CF — если результат не нулевой, OF — если младший бит результата не нулевой. Флаги AF и PF сбрасываются.
Явное задание размера строк в , (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре ecx.
Явное задание размера строк в , (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре xmm0.
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре ecx.
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре xmm0.
Чтение WC памяти
- MOVNTDQA xmm1, m128 — (Load Double Quadword Non-Temporal Aligned Hint)
Операция чтения, позволяющая ускорить (до 7.5 раз) работу с write-combining областями памяти.
Чтение WC памяти
- MOVNTDQA xmm1, m128 — (Load Double Quadword Non-Temporal Aligned Hint)
Операция чтения, позволяющая ускорить (до 7.5 раз) работу с write-combining областями памяти.
Литература
Wikimedia Foundation . 2010 .
Обработка строк
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обоих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
Все они оказывают влияние на флаги процессора: SF устанавливается если в xmm1 не полная строка, ZF — если в xmm2/m128 не полная строка, CF — если результат не нулевой, OF — если младший бит результата не нулевой. Флаги AF и PF сбрасываются.
Явное задание размера строк в , (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре ecx.
Явное задание размера строк в , (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре xmm0.
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре ecx.
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре xmm0.
Проверки бит
- PTEST xmm1, xmm2/m128 — (Logical Compare)
Установить флаг ZF, если только в xmm2/m128 все биты помеченные маской из xmm1 равны нулю. Если все не помеченные биты равны нулю, то установить флаг CF. Остальные флаги (AF, OF, PF, SF) всегда сбрасываются. Инструкция не модифицирует xmm1.
Вставки/извлечения
- INSERTPS xmm1, xmm2/m32, imm8 — (Insert Packed Single Precision Floating-Point Value)
Вставка 32-х битного поля из xmm2 (возможно выбрать любой из 4 полей этого регистра) или из 32-х битной ячейки памяти в произвольное поле результата. Кроме того, для каждого из полей результата можно задать сброс его в +0.0.
- EXTRACTPS r/m32, xmm, imm8 — (Extract Packed Single Precision Floating-Point Value)
Извлечение 32-х битного поля из xmm регистра, номер поля указывается в младших 2 битах imm8. Если в качестве результата указан 64-х битный регистр, то его старшие 32 бита сбрасываются (расширение без знака).
- PINSR xmm, r/m*, imm8 — (Insert Byte/Dword/Qword)
Вставка 8, 32, или 64-х битного значения в указанное поле xmm регистра (остальные поля не изменяются).
- PEXTR r/m*, xmm, imm8 — (Extract Byte/Word/Dword/Qword)
Извлечение 8, 16, 32, 64 битного поля из указанного в imm8 поля xmm регистра. Если в качестве результата указан регистр, то его старшая часть сбрасывается (расширение без знака).
Ускорение видео
Вычисление восьми сумм абсолютных значений разностей (SAD) смещённых 4-х байтных беззнаковых групп. Расположение операндов для 16-ти битных SAD определяется 3-мя битами непосредственного аргумента imm8.
- PHMINPOSUW xmm1, xmm2/m128 — (Packed Horizontal Word Minimum)
- Input — < A0, A1,… A7 >
- Output —
Поиск среди 16-ти битных беззнаковых полей A0…A7 такого, который имеет минимальное значение (и позицию с меньшим номером, если таких полей несколько). Возвращается 16-ти битное значение и его позиция.
- PMOV xmm1, xmm2/m — (Packed Move with Sign/Zero Extend)
Группа из 12-ти инструкций для расширения формата упакованных полей. Упакованные 8, 16, или 32-х битные поля из младшей части аргумента расширяются (со знаком или без) в 16, 32 или 64-х битные поля результата.
Процессоры с SSE4
- Семейство Penryn процессоров Intel (ядра Wolfdale, Yorkfield и более новые)
- Семейство Nehalem от Intel.
Изменения
Добавлены инструкции, ускоряющие компенсацию движения в видеокодеках, быстрое чтение из WC памяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32, popcnt. Впервые в SSE4 регистр xmm0 стал использоваться как неявный аргумент для некоторых инструкций.
Ускорение видео
Вычисление восьми сумм абсолютных значений разностей (SAD) смещённых 4-х байтных беззнаковых групп. Расположение операндов для 16-ти битных SAD определяется 3-мя битами непосредственного аргумента imm8.
- PHMINPOSUW xmm1, xmm2/m128 — (Packed Horizontal Word Minimum)
- Input — < A0, A1,… A7 >
- Output —
Поиск среди 16-ти битных беззнаковых полей A0…A7 такого, который имеет минимальное значение (и позицию с меньшим номером, если таких полей несколько). Возвращается 16-ти битное значение и его позиция.
- PMOV xmm1, xmm2/m — (Packed Move with Sign/Zero Extend)
Группа из 12-ти инструкций для расширения формата упакованных полей. Упакованные 8, 16, или 32-х битные поля из младшей части аргумента расширяются (со знаком или без) в 16, 32 или 64-х битные поля результата.
Содержание
Полезное
Округления
- ROUND xmm1, xmm2/m128, imm8 — (Round Packed Single/Double Precision Floating-Point Values)
Округление всех 32/64-х битных полей. Режим округления (4 варианта) выбирается либо из MXCSR.RC, либо задаётся непосредственно в imm8. Также можно подавить генерацию исключения потери точности.
- ROUND xmm1, xmm2/m128, imm8 — (Round Scalar Single/Double Precision Floating-Point Values)
Округление только младшего 32/64-х битного поля (остальные биты остаются неизменными).
Смотреть что такое "SSE4.1" в других словарях:
SSE4 — SSE4 новый набор команд микроархитектуры Intel Core, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD)[1]. Он был анонсирован 27 сентября 2006 года, однако детальное описание стало доступно только весной… … Википедия
SSE4.2 — SSE4 это новый набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007, свежее … Википедия
SSE4.1 — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE4 — Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d’instructions supplémentaires pour l’architecture x86. Le jeu complet comprend… … Wikipédia en Français
SSE4 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
SSE4.1 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
SSE4.2 — In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Was macht SSE 4.2 genau? Vektorisierung ist zu allgemein: was bringt sse4 für Vorteile gegenüber den Vorgängern? Du kannst Wikipedia helfen, indem du sie recherchierst und … Deutsch Wikipedia
Nehalem New Instructions — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
SSE-4 — SSE4 Pour les articles homonymes, voir NNI. SSE4 (pour Streaming SIMD Extensions version 4), aussi connu sous le nom de Nehalem New Instructions (NNI) est un jeu d instructions supplémentaires pour l architecture x86. Le jeu complet comprend 54… … Wikipédia en Français
В предыдущей заметке, мы рассматривали способ запуска Photoshop на устройствах, где процессоры не поддерживают SSE 4.2. Способ не универсальный и на данный момент, на самых последних версиях Photoshop, данный метод уже блокируется со стороны Adobe, начиная с версии Photoshop 22.3 и выше. При этом, возникает логичный вопрос, а как вообще узнать, поддерживает ли конкретный процессор SSE 4.2?
Содержание
Как узнать, что процессор поддерживает SSE 4.1 и SSE 4.2
Если у вас уже есть готовый компьютер и вы хотите узнать, поддерживает ли его процессор инструкции SSE 4.1 и SSE 4.2, то это можно сделать с помощью программ для просмотра характеристик компьютера.
Среди прочего, с помощью CPU-Z можно проверить наличие поддержки инструкций SSE 4.1 и SSE 4.2. Для этого нужно просто запустить CPU-Z и изучить строку « Instructions » на вкладке «CPU ». Здесь будет доступен список всех инструкций, которые поддерживает данный процессор.
Нужно отметить, что в интернете есть скриншоты CPU-Z практически для любого процессора. Поэтому, вместо установки CPU-Z можно просто поискать в интернете скриншот из этой программы. Для этого нужно ввести поисковый запрос « cpu-z название процессора » и перейти к просмотру картинок.
Таким образом можно найти информацию практически о любом современном процессоре.
Подсчет CRC32
Накопление значения CRC-32C (другие обозначения CRC-32/ISCSI CRC-32/CASTAGNOLI) для 8, 16, 32 или 64 битного аргумента (используется полином 0x11EDC6F41).
Полезное
Что такое SSE 4.1 и SSE 4.2
SSE 4 – это набор инструкций, который применяется в процессорах Intel и AMD. Впервые о данном наборе инструкций стало известно в конце 2006 года на форуме для разработчиков Intel, а первые процессоры с его поддержкой появились в 2008 году.
Набор SSE 4 включает в себя 54 новых инструкций, 47 из которых относятся SSE 4.1 и еще 7 к SSE 4.2. Данные инструкции включают в себя улучшенные целочисленные операции, операции с плавающей точкой, операции с плавающей точкой одинарной точности, упаковочные операции DWORD и QWORD, быстрые регистровые операции, операции для работы с памятью, а также операции со строками.
Использование данных новых инструкций позволяет значительно повысить производительность программ. Например, такие программы DivX 6.7 и VirtualDub 1.7.2 показывают рост производительности на 49%, а TMPGEncoder Xpress 4.4 на 42%.
В связи с ростом производительности, наборы SSE 4.1 и SSE 4.2 уже давно активно используются разработчиками программ и компьютерных игр. Естественно, если программа требует данного набора инструкций, то без него работать она не будет.
В результате многие современные игры и программы отказываются запускаться на старых компьютерах. Так, наличия SSE 4.1 или 4.2 требуют такие игры как No Man Sky, Dishonored 2, Far Cry 5 или Mafia 3.
Запуск таких программ на компьютере без SSE 4.1 или SSE 4.2 вызывает ошибки, например, может появляться ошибка « Incompatible CPU detected! Missing instruction sets: SSE4.2 ». В некоторых случаях ошибка указывает на конкретную инструкцию в наборе SSE 4, например, в игре Apex Legends может появляться ошибка « Unsupported CPU. CPU does not have POPCNT ».
Иногда эту проблему можно решить с помощью программного эмулятора, но это приводит к значительному снижению производительности.
Подсчет популяции единичных бит
- POPCNT r, r/m* — (Return the Count of Number of Bits Set to 1)
Подсчет числа единичных бит. Три варианта инструкции: для 16, 32 и 64-х битных регистров. Также присутствует в SSE4A от AMD.
Процессоры с SSE4
Ускорение видео
Вычисление восьми сумм абсолютных значений разностей (SAD) смещённых 4-х байтных беззнаковых групп. Расположение операндов для 16-ти битных SAD определяется 3-мя битами непосредственного аргумента imm8.
- PHMINPOSUW xmm1, xmm2/m128 — (Packed Horizontal Word Minimum)
- Input — < A0, A1,… A7 >
- Output —
Поиск среди 16-ти битных беззнаковых полей A0…A7 такого, который имеет минимальное значение (и позицию с меньшим номером, если таких полей несколько). Возвращается 16-ти битное значение и его позиция.
- PMOV xmm1, xmm2/m — (Packed Move with Sign/Zero Extend)
Группа из 12-ти инструкций для расширения формата упакованных полей. Упакованные 8, 16, или 32-х битные поля из младшей части аргумента расширяются (со знаком или без) в 16, 32 или 64-х битные поля результата.
Читайте также: