stringtranslate.com

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]

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

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

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

Начиная с процессоров на базе Barcelona , ​​AMD представила набор инструкций SSE4a , который содержит четыре инструкции SSE4 и четыре новые инструкции SSE. Эти инструкции отсутствуют в процессорах Intel, поддерживающих SSE4.1, а процессоры AMD начали поддерживать SSE4.1 и SSE4.2 (полный набор инструкций SSE4) Intel только в процессорах 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. (Операции перемешивания изменяют порядок байтов в регистре.)

ССЕ4.1

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

ССЕ4.2

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

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

POPCNTиLZCNT

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

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

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

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

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

SSE4a

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

Поддерживаемые процессоры

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

Ссылки

  1. ^ abc Intel Streaming SIMD Extensions 4 (SSE4) Instruction Set Innovation. Архивировано 30 мая 2009 г. на Wayback Machine , Intel.
  2. Настройка Intel SSE4 для 45-нм микроархитектуры Intel Core следующего поколения. Архивировано 8 марта 2021 г. на Wayback Machine , Intel.
  3. ^ "Intel SSE4 Programming Reference" (PDF) . Архивировано (PDF) из оригинала 15 февраля 2020 г. . Получено 26 декабря 2014 г. .
  4. ^ "Функция процессора "Барселона": невыровненный доступ к SSE". AMD. Архивировано из оригинала 9 августа 2016 г. Получено 3 марта 2015 г.
  5. ^ "Внутри микроархитектуры Intel Nehalem". Архивировано из оригинала 2 апреля 2015 г. Получено 3 марта 2015 г.
  6. Мой опыт с «Конро» Архивировано 15 октября 2013 г., Wayback Machine , DailyTech
  7. Расширение архитектуры самого популярного процессора в мире. Архивировано 24 ноября 2011 г. на Wayback Machine , Intel.
  8. ^ "Intel - Data Center Solutions, IoT, and PC Innovation". Intel . Архивировано из оригинала 7 февраля 2013 г. Получено 17 сентября 2009 г.
  9. Оценка движения с помощью Intel Streaming SIMD Extensions 4 (Intel SSE4). Архивировано 16 июня 2018 г. на Wayback Machine , Intel.
  10. ^ "Schema Validation with Intel® Streaming SIMD Extensions 4 (Intel® SSE4)". Архивировано из оригинала 17 июня 2018 г. Получено 6 февраля 2012 г.
  11. ^ "XML Parsing Accelerator with Intel® Streaming SIMD Extensions 4 (Intel® SSE4)". Архивировано из оригинала 17 июня 2018 г. Получено 6 февраля 2012 г.
  12. ^ Сен, Саян (17 марта 2024 г.). «Microsoft исправляет неисправный блок PopCnt, но требования Windows 11 24H2 могут остаться». Neowin . Получено 17 марта 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 могут остаться». Neowin . Получено 17 марта 2024 г.
  16. Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 2B: Справочник по набору инструкций, N–Z. Архивировано 8 марта 2011 г. на Wayback Machine .
  17. ^ ab "AMD CPUID Specification" (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 г.

Внешние ссылки