Из Википедии, бесплатной энциклопедии
  (Перенаправлено с SSE4.2 )
Перейти к навигации Перейти к поиску

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

Подмножества SSE4 [ править ]

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

Начиная с процессоров на базе Barcelona , AMD представила набор инструкций SSE4a , который имеет 4 инструкции SSE4 и 4 новые инструкции 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. (Операции перемешивания переупорядочивают байты в регистре.)

SSE4.1 [ править ]

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

SSE4.2 [ править ]

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

POPCNT и LZCNT [ править ]

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

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

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

Завершающие нули можно подсчитать с помощью инструкций bsf (перемотка вперед по битам) или tzcnt .

SSE4a [ править ]

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

Поддерживающие процессоры [ править ]

  • Intel
    • Процессоры Silvermont (поддерживаются SSE4.1, SSE4.2 и POPCNT)
    • Процессоры Goldmont (поддерживаются SSE4.1, SSE4.2 и POPCNT)
    • Процессоры Goldmont Plus (поддерживаются SSE4.1, SSE4.2 и POPCNT)
    • Процессоры Tremont (поддерживаются SSE4.1, SSE4.2 и POPCNT)
    • Процессоры Penryn (поддерживается SSE4.1, кроме Pentium Dual-Core и Celeron )
    • Процессоры Nehalem и Westmere (поддерживаются SSE4.1, SSE4.2 и POPCNT, кроме Pentium и Celeron )
    • Процессоры Sandy Bridge и новее (поддерживаются SSE4.1, SSE4.2 и POPCNT, включая Pentium и Celeron )
    • Процессоры Haswell и новее (поддерживаются SSE4.1, SSE4.2, POPCNT и LZCNT)
  • AMD
    • Процессоры на базе K10 (поддерживаются SSE4a, POPCNT и LZCNT)
    • "Кошачьи" маломощные процессоры
      • Процессоры на базе Bobcat (поддерживаются SSE4a, POPCNT и LZCNT)
      • Процессоры на базе Jaguar и новее (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
      • Процессоры на базе Puma и новее (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
    • Процессоры "тяжелого оборудования" (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
      • Процессоры на базе бульдозеров
      • Процессоры на базе Piledriver [18]
      • Процессоры на базе Steamroller
      • Экскаваторные процессоры и новее
    • Процессоры на базе Zen (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
    • Процессоры на базе Zen + (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
    • Процессоры на базе Zen2 (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
    • Процессоры на базе Zen3 (поддерживаются SSE4a, SSE4.1, SSE4.2, POPCNT и LZCNT)
  • ЧЕРЕЗ
    • Процессоры Nano 3000, X2, QuadCore (с поддержкой SSE4.1)
    • Процессоры Nano QuadCore серии C4000 (с поддержкой SSE4.1, SSE4.2)
    • Процессоры Eden X4 (поддерживаются SSE4.1, SSE4.2)
  • Чжаосин
    • Процессоры ZX-C и новее (поддерживаются SSE4.1, SSE4.2)

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

  1. ^ Intel Streaming SIMD Extensions 4 (SSE4) Instruction Set Innovation , Intel.
  2. ^ Настройка Intel SSE4 для 45-нм микроархитектуры Intel Core следующего поколения , Intel.
  3. ^ Справочник по программированию Intel SSE4
  4. ^ " Функция процессора " Барселона ": несогласованный доступ SSE" . AMD. Архивировано из оригинала 9 августа 2016 года . Проверено 3 марта 2015 года .
  5. ^ "Внутри микроархитектуры Intel Nehalem" . Проверено 3 марта 2015 года .
  6. ^ Мой опыт работы с Conroe , DailyTech
  7. Расширение самой популярной в мире архитектуры процессора. Архивировано 24 ноября 2011 г. на Wayback Machine , Intel.
  8. ^ «Intel - Решения для центров обработки данных, Интернет вещей и инновации в ПК» . Intel .
  9. ^ Оценка движения с Intel Streaming SIMD Extensions 4 (Intel SSE4) , Intel.
  10. ^ «Проверка схемы с помощью Intel® Streaming SIMD Extensions 4 (Intel® SSE4)» .
  11. ^ «Ускоритель синтаксического анализа XML с Intel® Streaming SIMD Extensions 4 (Intel® SSE4)» .
  12. ^ Справочник по программированию Intel SSE4, стр. 61. См. Также RFC 3385 для обсуждения полинома CRC32C.
  13. ^ Быстрое параллельное вычисление CRC с использованием инструкции Nehalem CRC32 - д-р Доббс, 12 апреля 2011 г.
  14. ^ Intel® 64 и IA-32 Архитектура Software Developer Руководства, Том 2B: Набор команды, N-Z .
  15. ^ a b Спецификация AMD CPUID
  16. ^ Рахул Chaturvedi (17 сентября 2007). « Характеристики процессора « Барселона »: набор инструкций SSE4a» . Архивировано из оригинального 25 октября 2013 года .
  17. ^ Рахул Chaturvedi (2 октября 2007). « Характеристики процессора « Барселона »: SSE4a, часть 2» . Архивировано из оригинального 25 октября 2013 года .
  18. ^ "AMD FX-Series FX-6300 - FD6300WMW6KHK / FD6300WMHKBOX" .

Внешние ссылки [ править ]

  • Справочник по программированию SSE4 от Intel
  • Калькулятор PCMPSTR для строковых инструкций SSE 4.2