【问题标题】:Does a processor that supports SSE4 support SSSE3 instructions?支持 SSE4 的处理器是否支持 SSSE3 指令?
【发布时间】:2018-08-15 21:16:10
【问题描述】:

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

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

【问题讨论】:

  • 是的............
  • 任何来源或参考资料?
  • 我认为适用于所有 Intel CPU,但也有 AMD 例外。
  • 我没有想到任何参考资料。但就曾经存在的实际处理器而言:SSE4.1 意味着从 MMX 到 SSSE3 的所有内容。 (在 SSE3 中有几个例外,AMD 没有实现)SSE4a 是 AMD 的东西,它只暗示通过 SSE3。 IIRC,第一个带有 SSE4a 的 AMD 处理器不支持 SSSE3。

标签: x86 sse instruction-set sse4


【解决方案1】:

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

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

最初的英特尔凌动处理器家族和包括英特尔凌动在内的后续产品 处理器 D2000、N2000、E2000、Z2000、C1000 系列提供 以下特点:

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

还有手册状态表5-1:

SSSE3 扩展:英特尔至强处理器 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 双核处理器,Intel Atom 处理器

这也与Wikipedia一致。

我不确定手册是否明确指出,如果支持 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[bit 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[bit 9] = 1).

如您所见,SSE4.1 和 SSE4.1 都需要支持 SSSE3。我们还可以得出结论,SSSE3 需要对 SSE2 的支持。

警告:这很可能会在未来继续存在,尽管很难确定 100%。

一个有趣的观察结果是,将支持 SSSE3 的处理器列表与支持 SSE4.1 和 SSE4.2 的处理器列表(表 5-1 和表 5-2)进行比较时,只有一个处理器,英特尔Core i7 965 处理器,即在 SSE4.2 列表中但不在 SSSE3 列表中,但该处理器实际上支持 SSSE3。不确定这是否是手册中的错误,或者更可怕的是,它不完整。

另一个有趣的观察是,对于 Atom 以外的处理器(参见上面第 1.2.14 节的引用),似乎支持 SSSE3、SSE4.1 或 SSE4.2 确实 not 一定表示支持 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。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多