Поддерживает ли процессор, поддерживающий SSE4, инструкции SSSE3?

Я разрабатываю аппаратную платформу, для которой требуется набор инструкций SSSE3. Если посмотреть на такой процессор, как Intel Atom® x5-Z8350, datasheet сообщает, что он поддерживает SSE4.1 и SSE4.2. Позволит ли это программное обеспечение, написанное для инструкций SSSE3, работать?

Я считаю, что этот вопрос немного отличается от этого вопроса поскольку в нем никогда прямо не говорится, что SSE4 является надмножеством SSSE3. Это только говорит о том, что AVX - это надмножество.


person Eric Johnson    schedule 07.03.2018    source источник
comment
да............   -  person Mysticial    schedule 07.03.2018
comment
Есть источники или ссылки?   -  person Eric Johnson    schedule 07.03.2018
comment
Я думаю, это верно для всех процессоров Intel, но есть исключения AMD.   -  person Paul R    schedule 07.03.2018
comment
У меня нет никаких ссылок в голове. Но что касается реальных процессоров, которые когда-либо существовали: SSE4.1 подразумевает все, от MMX до SSSE3. (с парой исключений в SSE3, которые AMD не реализовала) SSE4a - это вещь AMD, и она подразумевает только SSE3. IIRC, первые процессоры AMD с SSE4a не поддерживали SSSE3.   -  person Mysticial    schedule 07.03.2018


Ответы (2)


Этот ответ предназначен только для процессоров Intel.

Во-первых, все процессоры Intel Atom от самых ранних до самых последних поддерживают SSSE3. В разделе 1.2.14 руководства Intel говорится:

Первоначальное семейство процессоров Intel Atom и последующие поколения, включая процессоры Intel Atom серии D2000, N2000, E2000, Z2000, C1000, обеспечивают следующие функции:

  • ...
  • Поддержка расширений набора инструкций, включая дополнительные расширения SIMD для потоковой передачи 3 (SSSE3).
  • ...

А также в таблице 5-1 руководства указано:

Расширения SSSE3: процессор Intel Xeon 3xxx, 5100, 5200, 5300, 5400, 5500, 5600, 7300, 7400, 7500 серии, процессоры Intel Core 2 Extreme серии QX6000, Intel Core 2 Duo, процессоры Intel Core 2 Quad, Intel Pentium Dual- Core процессоры, процессоры Intel Atom.

Это также согласуется с Википедией.

Я не уверен, прямо ли в руководстве указано, что если поддерживается SSE4, то поддерживается и SSSE3, но мы можем это вывести.

В разделе 12.7.3 обсуждается, как проверить поддержку SSSE3:

Прежде чем приложение попытается использовать расширения SSSE3, оно должно выполнить шаги, описанные в Раздел 11.6.2, «Проверка поддержки SSE / SSE2». Затем используйте дополнительный шаг, указанный ниже:

  • Убедитесь, что процессор поддерживает SSSE3 (если CPUID.01H: ECX.SSSE3 [бит 9] = 1).

также в Разделе 12.12.2 обсуждается, как проверить поддержку SSE4.1:

Убедитесь, что процессор поддерживает SSE4.1 (если CPUID.01H: ECX.SSE4_1 [бит 19] = 1), SSE3 (если CPUID.01H: ECX.SSE3 [бит 0] = 1), и SSSE3 (если CPUID.01H: ECX.SSSE3 [бит 9] = 1).

и, наконец, в Разделе 12.12.3 обсуждается, как проверить поддержку SSE4.2:

Убедитесь, что процессор поддерживает SSE4.2 (если CPUID.01H: ECX.SSE4_2 [бит 20] = 1), SSE4.1 (если CPUID.01H: ECX.SSE4_1 [бит 19] = 1), и SSSE3 (если CPUID.01H: ECX.SSSE3 [бит 9] = 1).

Как видите, и SSE4.1, и SSE4.1 требуют поддержки SSSE3. Также можно сделать вывод, что SSSE3 требует поддержки SSE2.

ПРЕДОСТЕРЕЖЕНИЕ: скорее всего, это сохранится и в будущем, хотя трудно быть уверенным на 100%.

Однако одно интересное наблюдение заключается в том, что при сравнении списка процессоров, поддерживающих SSSE3, со списками тех, которые поддерживают SSE4.1 и SSE4.2 (Таблица 5-1 и Таблица 5-2), есть только один процессор, Intel Core i7 965. процессор, который находится в списке SSE4.2, но не SSSE3, но процессор фактически поддерживает SSSE3. Не уверен, является ли это ошибкой в ​​руководстве или, что ужасно, оно неполное.

Еще одно интересное наблюдение: для процессоров, отличных от Atom (см. Цитату из Раздела 1.2.14 выше), кажется, что поддержка SSSE3, SSE4.1 или SSE4.2 не обязательно означает, что SSE3 поддерживается. Я не нашел в руководстве ничего, что позволило бы мне сделать такой вывод. В то же время я не знаю ни одного процессора, который поддерживает SSSE3, SSE4.1 или SSE4.2, но не SSE3.

Раздел 12.1.1 определяет, какие регистры доступны в SSSE3:

В режиме совместимости SSE3, SSSE3 и SSE4 работают так же, как и в защищенном режиме. В 64-битном режиме доступны восемь дополнительных регистров XMM. Доступ к регистрам XMM8-XMM15 осуществляется с помощью префиксов REX.

В разделе 12.7.1 обсуждается поддержка ОС для SSSE3:

Убедитесь, что ваша операционная система поддерживает расширения SSE / SSE2 / SSE3 / SSSE3. (Поддержка расширений SSE операционной системой подразумевает достаточную поддержку SSE2, SSE3 и SSSE3.)

Таким образом, любая ОС, для которой требуется SSE, автоматически поддерживает SSSE3.

person Hadi Brais    schedule 08.03.2018

Я думаю, что «поддержка» в новых процессорах означает «новые» вещи, в то время как обратная совместимость является обязательной, по крайней мере, в области Intel - некоторые вещи могут отличаться для AMD, тогда в коде ОС используется наименьший общий знаменатель и только низкий - варианты ядра уровня / пути могут быть оптимизированы, если это действительно стоит. Специальное / научное / экспериментальное / мультимедийное программное обеспечение может указывать требуемый процессор ISA (рендеринг видео, аудио DSP FX и т. Д.)

person falken    schedule 08.09.2018