没有 SSSE3 的最新 CPU 基于AMD K10 微架构 https://en.wikipedia.org/wiki/AMD_10h:
-
AMD 羿龙 II https://en.wikipedia.org/wiki/Phenom_II,Bulldozer 系列之前的最后一代 K10 插座桌面 CPU。他们是2008年至2012年生产.
-
AMD Llano APU https://en.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit#K10_architecture_(2011):_Llano,2011 年 6 月推出。 (基于推土机的 APU 于 2012 年 10 月推出,IDK 是在最后一批 Llano APU 制造/销售时)。同样基于 K10 内核,但报告 CPUID“系列”= 12h。
K10 CPU 支持 SSE3(FP 指令,例如movddup
and haddps
)和仅限 AMD 的 SSE4a。一些早期的K8核心只有SSE2,但后来的K8也有SSE3。
请注意,AMD CPU 列于https://en.wikipedia.org/wiki/SSSE3#CPUs_with_SSSE3 https://en.wikipedia.org/wiki/SSSE3#CPUs_with_SSSE3仅从 Bulldozer 开始,但确实包括 AMD 的低功耗 Bobcat / Jaguar CPU。
如果你用谷歌搜索AMD Phenom II ssse3
,您会发现一些关于某些游戏删除了 SSSE3 要求的页面,以便它们可以在 Phenom II 上运行。
在 Intel 上,您必须追溯到 Pentium M / Core,因为 SSSE3 是随 Core 2 一起引入的。(第一代 core2 (Conroe/Merom) 仅具有 64 位宽的 shuffle 执行单元,因此pshufb
是比较慢的。但SSE2也是如此pshufd
. See 在 x86 上进行水平浮点向量和的最快方法 https://stackoverflow.com/questions/6996764/fastest-way-to-do-horizontal-float-vector-sum-on-x86/35270026#35270026.)
我认为即使是第一代 Atom 也有 SSSE3。https://en.wikipedia.org/wiki/Intel_Atom https://en.wikipedia.org/wiki/Intel_Atom.
有像这样的CPUAMD Geode https://en.wikipedia.org/wiki/Geode_(processor)根本没有 SSE,但我认为问题的关键在于CPUdo有 SSE2/3 但没有 SSSE3。
没有任何新的主流 CPU 不具备 SSE4.2,但一些 Phenom II CPU 甚至在 2018 年可能仍在使用。它们越旧,新软件就越可能无法在它们上运行。
There are unfortunately still brand-new mainstream CPUs being made without AVX and BMI: Intel's Pentium and Celeron models, even for Skylake / Kaby Lake. Presumably when a die has defects in the upper 128-bits of its vector ALUs, e.g. the large FMA units, they fuse it off and disable decoding of VEX prefixes, and label it as a Pentium or Celeron1. (This is presumably why Pentium/Celeron models don't support BMI1/BMI2 either; other than pext
/pdep
those take trivial die area.)
因此,在未来的某个时刻,我们不会更接近 BMI1/BMI2 的基线,这确实很不幸,因为它是英特尔 CPU 上的单微指令变量计数移位所必需的。 (shl cl,reg
是 3 uop,因为 cl=0 no-flag-update 情况是可能的; SHLX / SHRX 为 1 uop)。 BMI1/2 在整个代码中使用时最有用,而不仅仅是在几个函数中。
脚注1:当然,一些完全工作的芯片也得到了这种待遇,特别是一旦新工艺的产量提高了,但对于一致性/市场细分,它们仍然受到削弱。
But I think rep movs/rep stos
ERMSB 仍可使用 256 位加载/存储,因此 FP 寄存器文件、加载/存储单元和旁路转发网络仍需要支持全宽度。 (与矢量循环相比,ERMSB 变得更具吸引力,因为它可以使用两倍的宽度。
我想知道是否有办法用保险丝重新连接 CPU,以便它可以使用正在工作的 FMA 单元的 4 个 128 位通道中的任意 2 个。我们知道 Skylake-AVX512 可以混合和匹配端口 0、1 和 5 的 FMA 单元,仅为 512 位向量启动 p5 FMA(如果可用),并将 p0 和 p1 上的 256 位 FMA 单元组合为一个512 位 FMA 单元。静态地对熔丝进行类似的操作可能会让英特尔使用存在缺陷的芯片,该缺陷会影响一个 FMA 单元的两个通道。
无论如何,这纯粹是猜测。有可能,但不知道我们是否有任何可靠的消息来源表明英特尔实际上曾经这样做过作为销售具有 FMA 缺陷的芯片的一种方式。我们确实知道,整个物理核心存在缺陷的芯片会作为较低核心数的 SKU 出售,就像四核芯片上的双核芯片一样。四核 i5 CPU 只有 6MB 的 L3 缓存而不是 8MB,这意味着它们禁用了 4 个 L3 缓存片之一,这可能也是为了挽救缺陷。