最新的处理器不支持 SSSE3 指令? [关闭]

2024-02-13

是否有任何不支持 SSSE3 指令的仍然相关的 CPU(Intel/AMD/Atom)?

没有 SSSE3 的最新 CPU 是什么?


没有 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 stosERMSB 仍可使用 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 缓存片之一,这可能也是为了挽救缺陷。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最新的处理器不支持 SSSE3 指令? [关闭] 的相关文章

  • 如何在 AVX/AVX2 中递增向量

    我想使用内在函数来增加 SIMD 向量的元素 最简单的方法似乎是为每个元素加 1 如下所示 note vec inc之前已设置为1 vec mm256 add epi16 vec vec inc 但是是否有任何特殊指令来增加向量 类似于in
  • 如何阅读英特尔操作码符号

    我正在阅读一些引用的材料Intel vol 2 SDM x86 手册 https www intel com content www us en developer articles technical intel sdm html关于汇编
  • mfence 和 asm 易失性 ("" : : : "内存") 的区别

    据我了解 mfence是硬件内存屏障 而asm volatile memory 是编译器障碍 但是 可以asm volatile memory 用来代替 mfence 我感到困惑的原因是这个链接 http gcc gnu org ml gc
  • 跳转目的地太远:3 个字节

    我的循环有问题 其中包含的代码很长并且给了我错误jump destination too far by 3 byte s 当我删除时 mov edx offset str1 call writestring 这部分位于主过程下方 它不会给出
  • 当内存排序放宽时,C++ 延迟会增加

    我在 Windows 7 64 位 VS2013 x64 发行版 上尝试内存排序 我想使用最快的同步来共享对容器的访问 我选择了原子比较和交换 我的程序产生两个线程 写入器推送到向量 读取器检测到这一点 最初我没有指定任何内存顺序 所以我假
  • 优化算术编码器

    我正在优化名为的 C 库的编码步骤PackJPG http www elektronik htw aalen de packjpg 我使用 Intel VTune 对代码进行了分析 发现当前的瓶颈是 PackJPG 使用的算术编码器中的以下
  • 为什么将 char 传递给函数会改变它在 c 中的值?

    我目前正在关注本作业簿 http www cs bham ac uk exr lectures opsys 10 11 lectures os dev pdf关于构建操作系统 我的目的是写一个64位内核 我已经在文本模式下加载 内核 代码并
  • 任何浮点密集型代码是否会在任何基于 x86 的架构中产生位精确的结果?

    我想知道使用浮点运算的 C 或 C 代码是否会在任何基于 x86 的体系结构中产生位精确的结果 无论代码的复杂性如何 据我所知 自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE 754 浮点数的 FPU 单元 并且
  • 为什么“+=”在 SSE 内在函数中给出了意想不到的结果

    sse内在累加有两种实现方式 但其中之一得到了错误的结果 include
  • 如何在 x86 汇编中编写自修改代码

    我正在考虑为我最近开发的一个业余爱好虚拟机编写一个 JIT 编译器 我了解一些汇编语言 我主要是一名 C 程序员 我可以阅读大多数汇编语言并参考我不理解的操作码 并编写一些简单的程序 但是我很难理解这几个示例我在网上找到的自我修改代码 这是
  • 给寄存器赋值并加减

    我对此完全迷失了 我需要使用寄存器来计算以下表达式的编程 varA varA varB varC varD 其中 varA varB 等是变量 将整数值分配给上述变量的 EAX EBX ECX 和 EDX 寄存器 这意味着 您可以对输入进行
  • 返回地址预测堆栈缓冲区与堆栈存储的返回地址?

    一直在阅读 Agner Fog 的 Intel AMD 和 VIA CPU 的微架构 他在第 34 页描述了 返回地址预测 http www agner org optimize microarchitecture pdf http www
  • MS-DOS - 是否可以对 24 位图形进行编程?

    是否可以在 DOS 机器上以 24 位颜色深度进行编程 我知道 VGA 支持 8 位色深 但是有没有办法弄出 24 位色深 谷歌的研究没有发现任何结果 我正在 FreeDOS 而不是 MS DOS 上编程 如果这会影响答案的话 对的 这是可
  • int 13h 42h 不会在 Bochs 中加载任何内容

    我将引导加载程序从 CHS 更改为 LBA 因此我更换了int 13h 02h with int 13h 42h 它在 QEMU 中工作正常 但是 我在 Bochs 和我的笔记本电脑上运行它时遇到问题 我将引导加载程序写入 USB 闪存驱动
  • 二元炸弹 - 第 6 阶段

    这是拆解phase 6 08048dbf
  • goto 指令对 CUDA 代码中扭曲内发散的影响

    对于CUDA中简单的warp内线程发散 我所知道的是SM选择一个重新收敛点 PC地址 并在两个 多个路径中执行指令 同时禁用未采用该路径的线程的执行效果 例如 在下面的代码中 if threadIdx x lt 16 A do someth
  • 英特尔 SSE:为什么 `_mm_extract_ps` 返回 `int` 而不是 `float`?

    为什么 mm extract ps返回一个int代替float 读单的正确方法是什么float来自 C 中的 XMM 寄存器 或者更确切地说 另一种询问方式是 其相反的是什么 mm set ps操作说明 所有答案似乎都没有真正回答问题 wh
  • 函数地址不是实际代码地址

    在 Visual Studio 2008 C 中调试一些代码时 我注意到函数指针变量中的地址不是函数本身的实际地址 这是一个外部 C 函数 int main void printaddr const char print debug sho
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • 如何在 x86 ASM 中将整数转换为浮点值?

    我需要将一个整数 二进制补码 乘以一个浮点常数 这是我所拥有的 data pi dd 3 14 int dd 0ah code fld pi fmul ST 1 ST 我怎样才能转换int乘以浮点值pi 你需要fild操作说明 这是一个参考

随机推荐