一个支持SSE4的处理器是否支持SSSE3指令?

4
我正在开发一个需要使用SSSE3指令集的硬件平台。当查看像Intel Atom® x5-Z8350这样的处理器时,数据手册中显示它支持SSE4.1和SSE4.2。这是否允许为SSSE3指令编写的软件正常运行?
我认为这个问题与这个问题略有不同,因为它从未明确说明SSE4是SSSE3的超集。它只说AVX是超集。

2
是的。 - Mysticial
有任何来源或参考资料吗? - Eric Johnson
所有英特尔CPU都是这样,但是有些AMD例外。 - Paul R
3
我脑海中没有任何参考资料,但就实际存在过的处理器而言:SSE4.1包括从MMX到SSSE3的所有内容(在SSE3中有几个例外情况,AMD没有实现)。SSE4a是AMD的专利,仅涉及到SSE3之前的内容。据我所知,第一批支持SSE4a的AMD处理器不支持SSSE3。 - Mysticial
2个回答

5

这个答案仅适用于英特尔处理器。

首先,从最早的处理器到最新的处理器,所有英特尔Atom处理器都支持SSSE3。英特尔手册的第1.2.14节说明:

最初的英特尔Atom处理器系列和随后的几代处理器,包括英特尔Atom处理器D2000、N2000、E2000、Z2000、C1000系列提供以下功能:

  • ...
  • 支持直到并包括Supplemental Streaming SIMD Extensions 3(SSSE3)的指令集扩展。
  • ...

此外,手册的表5-1还说明:

SSSE3扩展:英特尔至强处理器3xxx、5100、5200、5300、5400、5500、5600、7300、7400、7500系列,英特尔Core 2 Extreme处理器QX6000系列,英特尔Core 2 Duo,英特尔Core 2 Quad处理器,英特尔Pentium双核处理器,英特尔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寄存器。使用REX前缀可以访问寄存器XMM8-XMM15。 第12.7.1节讨论了操作系统对SSSE3的支持: 确保您的操作系统支持SSE/SSE2/SSE3/SSSE3扩展。(操作系统对SSE扩展的支持意味着对SSE2、SSE3和SSSE3有足够的支持。) 因此,任何需要SSE的操作系统自动支持SSSE3。

0
我认为新处理器中的“支持”意味着“新”的事物,而向后兼容性是强制性的,至少在英特尔领域如此 - 对于 AMD 可能会有一些不同,因此操作系统代码中使用最低公共分母,并且只有在真正值得时才能优化低级内核变体/路径。特殊/科学/实验/媒体软件可能会声明所需的处理器 ISA(视频渲染、音频 DSP FX 等)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接