Jump to content

SSE4

SSE4 ( Streaming SIMD Extensions 4 ) — SIMD ЦП набор инструкций , используемый в микроархитектуре Intel Core и AMD K10 (K8L) . Об этом было объявлено 27 сентября 2006 года на осеннем форуме разработчиков Intel 2006 года с расплывчатыми подробностями в официальном документе ; [1] Более точные сведения о 47 инструкциях стали доступны на форуме разработчиков Intel весной 2007 года в Пекине , в презентации. [2] SSE4 расширил набор инструкций SSE3 , выпущенный в начале 2004 года. Все программное обеспечение, использующее предыдущие инструкции Intel SIMD (например, SSE3), совместимо с современными микропроцессорами, поддерживающими инструкции SSE4. Все существующее программное обеспечение продолжает корректно работать без изменений на микропроцессорах, включающих SSE4, а также при наличии существующих и новых приложений, включающих SSE4. [3]

Как и другие наборы команд SIMD процессора предыдущего поколения, SSE4 поддерживает до 16 регистров, каждый из которых имеет ширину 128 бит, которые могут загружать четыре 32-битных целых числа, четыре 32-битных числа с плавающей запятой одинарной точности или два 64-битных числа с плавающей запятой двойной точности. . [1] Операции SIMD, такие как поэлементное сложение/умножение векторов и скалярное сложение/умножение векторов, обрабатывают несколько байтов данных в одной инструкции ЦП. Параллельная работа обеспечивает заметное увеличение производительности. В SSE4.2 представлены новые строковые операции SIMD, включая инструкцию для сравнения двух строковых фрагментов размером до 16 байт каждый. [1] SSE4.2 является подмножеством SSE4 и был выпущен через несколько лет после первого выпуска SSE4.

Подмножества SSE4

[ редактировать ]

Intel SSE4 состоит из 54 инструкций. Подмножество, состоящее из 47 инструкций, называемое в некоторой документации Intel SSE4.1 , доступно в Penryn . Кроме того, SSE4.2 , второе подмножество, состоящее из семи оставшихся инструкций, впервые доступно в Nehalem на базе Core i7 . Intel считает, что отзывы разработчиков сыграли важную роль в разработке набора инструкций.

Начиная с процессоров на базе процессоров Barcelona , ​​AMD представила набор инструкций SSE4a , который включает четыре инструкции SSE4 и четыре новые инструкции SSE. Эти инструкции отсутствуют в процессорах Intel, поддерживающих SSE4.1, а процессоры AMD начали поддерживать Intel SSE4.1 и SSE4.2 (полный набор инструкций SSE4) только в процессорах FX на базе Bulldozer . В SSE4a также была представлена ​​функция смещенного SSE, что означало, что невыровненные инструкции загрузки выполнялись так же быстро, как и выровненные версии по выровненным адресам. Это также позволило отключить проверку выравнивания для операций SSE без загрузки, обращающихся к памяти. [4] Позже Intel представила аналогичные улучшения скорости для невыровненного SSE в своих процессорах Nehalem, но не вводила невыровненный доступ с помощью инструкций SSE без загрузки до AVX . [5]

Путаница в именах

[ редактировать ]

То, что сейчас известно как SSSE3 (Supplemental Streaming SIMD Extensions 3), представленное в линейке процессоров Intel Core 2 , в некоторых средствах массовой информации называлось SSE4, пока Intel не придумала прозвище SSSE3. Компания Intel, получившая внутреннее название Merom New Instructions, изначально не планировала присваивать им специальное название, что подверглось критике со стороны некоторых журналистов. [6] В конце концов Intel устранила путаницу и зарезервировала имя SSE4 для своего следующего расширения набора команд. [7]

Intel использует маркетинговый термин HD Boost для обозначения SSE4. [8]

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

[ редактировать ]

В отличие от всех предыдущих версий SSE, SSE4 содержит инструкции, выполняющие операции, не специфичные для мультимедийных приложений. Он включает в себя ряд инструкций, действие которых определяется постоянным полем, и набор инструкций, которые принимают XMM0 в качестве неявного третьего операнда.

Некоторые из этих инструкций выполняются однотактным механизмом тасования в Penryn. (Операции перемешивания изменяют порядок байтов в регистре.)

Эти инструкции были представлены в микроархитектуре Penryn , уменьшенной на 45 нм микроархитектуре Intel Core . Поддержка указывается флагом CPUID.01H:ECX.SSE41[бит 19].

Инструкция Описание
MPSADBWВычислите восемь сумм смещений абсолютных разностей, по четыре за раз (т. е. |x 0 −y 0 |+|x 1 −y 1 |+|x 2 −y 2 |+|x 3 −y 3 |, |x 0 -y 1 |+|x 1 -y 2 |+|x 2 -y 3 |+|x 3 -y 4 |, ..., |x 0 -y 7 |+|x 1 -y 8 |+| х 2 9 |+|х 3 10 |); эта операция важна для некоторых HD кодеков и позволяет вычислить разницу блоков 8×8 менее чем за семь циклов. [9] Один бит трехбитного непосредственного операнда указывает, следует ли использовать y 0 .. y 10 или y 4 .. y 14 из операнда-адресата, два других - следует ли использовать x 0 ..x 3 , x 4 ..x 7 , x 8 ..x 11 или x 12 ..x 15 следует использовать из источника.
PHMINPOSUWУстанавливает нижнее 16-битное слово без знака назначения в наименьшее 16-битное слово без знака в источнике, а следующее снизу - в индекс этого слова в источнике.
PMULDQУпакованное 32-битное «длинное» умножение со знаком: умножение двух (1-го и 3-го) из четырех упакованных целых чисел дает два упакованных 64-битных результата.
PMULLDУпакованное 32-битное «низкое» умножение со знаком, умножение четырех упакованных наборов целых чисел дает четыре упакованных 32-битных результата.
DPPS, DPPDСкалярное произведение для данных AOS (массив структур). Для этого требуется непосредственный операнд, состоящий из четырех (или двух для DPPD) битов, чтобы выбрать, какую из записей во входных данных следует умножать и накапливать, и еще четыре (или два для DPPD), чтобы выбрать, следует ли помещать 0 или скалярное произведение в соответствующее поле вывода.
BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDWУсловное копирование элементов из одного места в другое на основе (для формы, отличной от V) битов в непосредственном операнде и (для формы V) на битах в регистре XMM0.
PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSDУпакованный минимум/максимум для разных типов целочисленных операндов
ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSDОкругление значений в регистре с плавающей запятой до целых чисел, используя один из четырех режимов округления, заданных непосредственным операндом.
INSERTPS, PINSRB, PINSRD/ PINSRQ, EXTRACTPS, PEXTRB, PEXTRD/PEXTRQИнструкции INSERTPS и PINSR считывают 8, 16 или 32 бита из регистра x86 или ячейки памяти и вставляют их в поле регистра назначения, заданное непосредственным операндом. EXTRACTPS и PEXTR считывают поле из исходного регистра и вставляют его в регистр x86 или в ячейку памяти. Например, PEXTRD eax, [xmm0], 1; EXTRACTPS [addr+4*eax], xmm1, 1 сохраняет первое поле xmm1 по адресу, заданному первым полем xmm0.
PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQУпакованное расширение знака/ноля для более широких типов.
PTESTЭто похоже на TEST Инструкция, в которой она устанавливает флаг Z в результате операции И между своими операндами: ZF устанавливается, если DEST AND SRC равно 0. Кроме того, она устанавливает флаг C, если (NOT DEST) AND SRC равно нулю.

Это эквивалентно установке флага Z, если не установлен ни один из битов, замаскированных SRC, и флага C, если установлены все биты, замаскированные SRC.

PCMPEQQЧетверное слово (64 бита) сравнивается на равенство
PACKUSDWПреобразуйте подписанные DWORD в беззнаковые WORD с насыщением.
MOVNTDQAЭффективное чтение из области памяти с объединением записей в регистр SSE; это полезно для получения результатов от периферийных устройств, подключенных к шине памяти.

В SSE4.2 добавлен STTNI (новые строковые и текстовые инструкции), [10] несколько новых инструкций, выполняющих поиск символов и сравнение двух операндов по 16 байт за раз. Они были разработаны (помимо прочего) для ускорения анализа XML- документов. [11] Он также добавил CRC32 инструкция для вычисления проверок циклическим избыточным кодом , используемых в некоторых протоколах передачи данных. Эти инструкции были впервые реализованы в Nehalem на базе линейке продуктов Intel Core i7 и дополняют набор инструкций SSE4. AMD, с другой стороны, первой добавила поддержку, начиная с микроархитектуры Bulldozer . Поддержка указывается флагом CPUID.01H:ECX.SSE42[бит 20].

Windows 11 24H2 требует, чтобы процессор поддерживал SSE4.2, в противном случае ядро ​​Windows невозможно будет загрузить. [12]

Инструкция Описание
CRC32Накопите значение CRC32 C, используя полином 0x11EDC6F41 (или, без старшего бита, 0x1EDC6F41). [13] [14]
PCMPESTRIУпакованные строки сравнения явной длины, индекс возврата
PCMPESTRMУпакованные строки сравнения явной длины, маска возврата
PCMPISTRIУпакованные строки сравнения неявной длины, индекс возврата
PCMPISTRMУпакованные строки сравнения неявной длины, маска возврата
PCMPGTQСравните упакованные 64-битные данные со знаком на предмет «больше»

Эти инструкции работают с целыми числами, а не с регистрами SSE, поскольку они не являются инструкциями SIMD, но появляются одновременно, и хотя они представлены AMD с набором инструкций SSE4a, они считаются отдельными расширениями со своими собственными выделенными битами CPUID для обозначения поддержки. Intel реализует POPCNT начиная с микроархитектуры Nehalem и LZCNT начиная с микроархитектуры Haswell . AMD реализует и то, и другое, начиная с микроархитектуры Barcelona .

AMD называет эту пару инструкций Advanced Bit Manipulation (ABM) .

Кодировка LZCNT использует тот же путь кодирования, что и кодирование BSR (обратное сканирование битов). Это приводит к проблеме, когда LZCNT вызов некоторых процессоров, не поддерживающих его, например процессоров Intel до Haswell, может неправильно выполнить команду BSR операцию вместо того, чтобы вызывать исключение недопустимой инструкции . Это проблема, поскольку результирующие значения LZCNT и BSR разные.

Конечные нули можно подсчитать с помощью BSF (битовое сканирование вперед) или TZCNT инструкции.

Windows 11 24H2 требует, чтобы процессор поддерживал POPCNT, в противном случае ядро ​​Windows невозможно будет загрузить. [15]

Инструкция Описание
POPCNTПодсчет населения (количество битов подсчета установлено в 1). Поддержка указывается флагом CPUID.01H:ECX.POPCNT[бит 23]. [16]
LZCNTСчет ведущих нулей . Поддержка указывается с помощью флага CPUID.80000001H:ECX.ABM[бит 5]. [17]

Группа инструкций SSE4a была представлена ​​в микроархитектуре AMD Barcelona . Эти инструкции недоступны в процессорах Intel. Поддержка указывается с помощью флага CPUID.80000001H:ECX.SSE4A[бит 6]. [17]

Инструкция Описание
EXTRQ/ INSERTQКомбинированные инструкции по смене маски. [18]
MOVNTSD/ MOVNTSSИнструкции магазина скалярной потоковой передачи. [19]

Поддержка процессоров

[ редактировать ]

X86-64 v2 Процессоры :

  1. ^ Jump up to: а б с Инновационный набор инструкций Intel Streaming SIMD Extensions 4 (SSE4). Архивировано 30 мая 2009 г. в Wayback Machine , Intel.
  2. ^ Настройка Intel SSE4 для 45-нм микроархитектуры Intel Core следующего поколения. Архивировано 8 марта 2021 г. в Wayback Machine , Intel.
  3. ^ «Справочник по программированию Intel SSE4» (PDF) . Архивировано (PDF) оригинала 15 февраля 2020 г. Проверено 26 декабря 2014 г.
  4. ^ « Функция процессора «Барселона»: неверный доступ SSE» . АМД. Архивировано из оригинала 9 августа 2016 года . Проверено 3 марта 2015 г.
  5. ^ «Внутри микроархитектуры Intel Nehalem» . Архивировано из оригинала 2 апреля 2015 года . Проверено 3 марта 2015 г.
  6. Мой опыт работы с «Conroe». Архивировано 15 октября 2013 г. в Wayback Machine , DailyTech.
  7. Расширение самой популярной в мире архитектуры процессоров. Архивировано 24 ноября 2011 г. в Wayback Machine , Intel.
  8. ^ «Intel — решения для центров обработки данных, Интернет вещей и инновации в ПК» . Интел . Архивировано из оригинала 7 февраля 2013 года . Проверено 17 сентября 2009 г.
  9. ^ Оценка движения с помощью Intel Streaming SIMD Extensions 4 (Intel SSE4). Архивировано 16 июня 2018 г. на Wayback Machine , Intel.
  10. ^ «Проверка схемы с помощью Intel® Streaming SIMD Extensions 4 (Intel® SSE4)» . Архивировано из оригинала 17 июня 2018 года . Проверено 6 февраля 2012 г.
  11. ^ «Ускоритель синтаксического анализа XML с Intel® Streaming SIMD Extensions 4 (Intel® SSE4)» . Архивировано из оригинала 17 июня 2018 года . Проверено 6 февраля 2012 г.
  12. ^ Клотц, Аарон (24 апреля 2024 г.). «Microsoft блокирует использование Windows 11 на некоторых компьютерах круглосуточно — процессор должен поддерживать SSE4.2, иначе операционная система не будет загружаться» . Аппаратное обеспечение Тома . Проверено 29 апреля 2024 г.
  13. ^ Справочник по программированию Intel SSE4. Архивировано 15 февраля 2020 г., на Wayback Machine, стр. 61. См. также RFC 3385, заархивированный 19 июня 2008 г., на сайте Wayback Machine , где обсуждается полином CRC32C.
  14. ^ Быстрое параллельное вычисление CRC с использованием инструкции Nehalem CRC32 - доктор Доббс, 12 апреля 2011 г.
  15. ^ Сен, Саян (17 марта 2024 г.). «Microsoft исправляет ошибочный блок PopCnt, но требования Windows 11 24H2 могут остаться в силе» . Неовин . Проверено 17 марта 2024 г.
  16. ^ Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 2B: Справочник по набору инструкций, N – Z. Архивировано 8 марта 2011 г., на Wayback Machine .
  17. ^ Jump up to: а б «Спецификация AMD CPUID» (PDF) . Архивировано (PDF) из оригинала 1 ноября 2013 г. Проверено 30 октября 2013 г.
  18. ^ Рахул Чатурведи (17 сентября 2007 г.). « Особенность процессора «Барселона»: набор инструкций SSE4a» . Архивировано из оригинала 25 октября 2013 года.
  19. ^ Рахул Чатурведи (2 октября 2007 г.). « Особенность процессора «Барселона»: SSE4a, часть 2» . Архивировано из оригинала 25 октября 2013 года.
  20. ^ «AMD FX-Series FX-6300 — FD6300WMW6KHK / FD6300WMHKBOX» . Архивировано из оригинала 17 августа 2017 года . Проверено 9 октября 2015 г.
[ редактировать ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4624d44450fd21b11ae9350bcdd3931d__1722706800
URL1:https://arc.ask3.ru/arc/aa/46/1d/4624d44450fd21b11ae9350bcdd3931d.html
Заголовок, (Title) документа по адресу, URL1:
SSE4 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)