【问题标题】:Is the x86_64 architecture continuously being updated?x86_64 架构是否在不断更新?
【发布时间】:2021-10-23 15:15:18
【问题描述】:

据我们所知,ARM 不断更新 arm 架构,我猜最近发布了 v9。

但是 x86_64 架构是否也被 Intel 或 AMD 不断更新?

【问题讨论】:

  • 是的,添加了新的 ISA 扩展并创建了新的微架构改进/功能。只是他们使用了一个糟糕的命名。
  • x86_64 的发展是非线性的。 Intel vs AMD 引入了不同的 ISA 扩展,有些被其他供应商采用,有些后来被放弃。

标签: x86-64 cpu-architecture


【解决方案1】:

x86-64 按名称进行扩展,只有一个事实上的策略(英特尔)让未来的 CPU 支持以前 CPU 所做的所有扩展(即向后兼容性)。

即使英特尔在服务器 CPU 中引入了新的 ISA 扩展,但在当代台式机 CPU 中没有引入新的 ISA 扩展,或者 movbe 明显早于主流 CPU (Haswell) 出现在 Atom 中,这也导致了一些分裂。并继续销售不带 AVX 或 BMI1/BMI2 的 Pentium / Celeron CPU。 (虽然 Ice Lake 和后来的 Pentium / Celeron 最终可能会使用 AVX2 处理 256 位向量,从而解码 VEX 前缀并能够启用 BMI1/BMI2。)


如果英特尔从不采用它们,AMD 有时甚至会放弃对其 ISA 扩展的支持。 (就像 Bulldozer 系列中引入的 XOP,Zen 中删除了。而 Bulldozer 中的 FMA4 再次从 Bulldozer 中删除,但在 Zen 1 中仍然有效,在 Zen 2 中确实消失了。)另见 Agner Fog 的博客文章Stop the instruction set war


不幸的是,供应商之间没有就架构版本达成一致的机制,例如,英特尔以“486 或更高版本”、“奔腾及更高版本”、“ P6 家族及以后”。见Why is integer assignment on a naturally aligned variable atomic on x86?

请注意,在这种情况下,英特尔和 AMD 对可缓存内存的加载/存储原子性保证的共同子集实际上来自 AMD:英特尔保证不会撕裂任何不跨越缓存行边界。但是 AMD 只保证这些大小在对齐的 8 字节块内的原子性,而多套接字 K10 确实会撕裂套接字之间的传输。

没有一个文档涵盖现代 x86-64 CPU 中功能和指令集扩展的最低公分母。

【讨论】:

  • 现在情况更糟:英特尔在其下一个主流台式机和笔记本电脑处理器系列(Alder Lake)中放弃了 AVX-512,此前它们曾出现在(Ice Lake、Tiger Lake、Rocket Lake)中。
  • @BeeOnRope:是的,我的浏览器吃了一个关于这个的编辑。如果基于相同核心的相应台式机/笔记本电脑没有,甚至可能会出现一些服务器/客户端碎片,例如蓝宝石急流(金湾)中的enqcmd。 (可能是因为 Alder Lake 中的效率核心没有它而被禁用,并且与 AVX-512 一样,他们不希望软件必须处理某些核心的指令会导致其他核心出现故障。)
  • 是的,我认为这是 100%,因为他们还没有关于异构 ISA 的可靠故事,并且考虑到现有的编程模型围绕 cpuid 旋转。例如,有些人建议在小内核上使用 AVX512 可能会“简单地”出错,作业会迁移到大内核,但是为什么进程首先要使用 AVX-512 指令,除非 cpuid 报告支持?如果cpuid确实报告支持,几乎每个进程最终都会使用 AVX-512,因为在 libc 等其他地方使用。
  • 好吧,我想知道英特尔或 AMD 将如何解决苹果芯片中的手臂问题。看起来,如果奇迹不会在一夜之间发生,主流笔记本电脑和台式机市场将慢慢从 x86 转向 arm……比许多人预期的要快。
猜你喜欢
  • 2017-03-29
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2018-02-26
相关资源
最近更新 更多