4

我正在开发一个需要 SSSE3 指令集的硬件平台。在查看诸如 Intel Atom® x5-Z8350 之类的处理器时,数据表显示它支持 SSE4.1 和 SSE4.2。这会允许为 SSSE3 指令编写的软件运行吗?

我相信这个问题与这个问题略有不同,因为它从未明确表示 SSE4 是 SSSE3 的超集。它只说 AVX 是一个超集。

4

2 回答 2

5

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

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

最初的 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-核心处理器,英特尔凌动处理器

这也与维基百科一致。

我不确定手册是否明确指出如果支持 SSE4 则支持 SSSE3,但我们可以得出这一点。

第 12.7.3 节讨论如何检查 SSSE3 支持:

在应用程序尝试使用 SSSE3 扩展之前,应用程序应遵循第 11.6.2 节“检查 SSE/SSE2 支持”中说明的步骤。接下来,使用下面提供的附加步骤:

  • 检查处理器是否支持 SSSE3(如果 CPUID.01H:ECX.SSSE3[bit 9] = 1)。

第 12.12.2 节还讨论了如何检查 SSE4.1 支持:

检查处理器是否支持 SSE4.1(如果 CPUID.01H:ECX.SSE4_1[bit 19] = 1)、SSE3(如果 CPUID.01H:ECX.SSE3[bit 0] = 1)和 SSSE3(如果 CPUID.01H :ECX.SSSE3[位 9] = 1)

最后第 12.12.3 节讨论了如何检查 SSE4.2 支持:

检查处理器是否支持 SSE4.2(如果 CPUID.01H:ECX.SSE4_2[bit 20] = 1)、SSE4.1(如果 CPUID.01H:ECX.SSE4_1[bit 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 位模式下,可以访问 8 个额外的 XMM 寄存器。使用 REX 前缀访问寄存器 XMM8-XMM15。

第 12.7.1 节讨论了操作系统对 SSSE3 的支持:

确保您的操作系统支持 SSE/SSE2/SSE3/SSSE3 扩展。(操作系统对 SSE 扩展的支持意味着对 SSE2、SSE3 和 SSSE3 的充分支持。

所以任何需要 SSE 的操作系统都会自动支持 SSSE3。

于 2018-03-08T20:18:19.880 回答
0

我认为新处理器中的“支持”意味着“新”的东西,而向后兼容性是强制性的,至少在英特尔领域 - AMD 可能会有所不同,然后在操作系统代码中使用最低公分母,只有低 -如果确实值得,可以优化级别内核变体/路径。特殊/科学/实验/媒体软件可能要求处理器 ISA(视频渲染、音频 DSP FX 等)

于 2018-09-08T03:52:47.250 回答