【问题标题】:Are all of the CPUs that implement the AMD64 instruction set have the same instructions and registers?是否所有实现 AMD64 指令集的 CPU 都具有相同的指令和寄存器?
【发布时间】:2019-09-07 19:27:15
【问题描述】:

实现 IA-32 指令集(即 32 位 x86 指令集)的 CPU 没有相同的指令和寄存器,例如 Intel Pentium III 具有 SSE 寄存器和指令,这些寄存器和指令不存在于英特尔奔腾 II。

但是实现 AMD64 指令集(即 64 位 x86 指令集)的 CPU 呢,这些 CPU 是否具有相同的指令和寄存器(我的意思是:是否有一些 AMD64 CPU 具有更多指令和寄存器比另一个 AMD64 CPU,就像 IA-32 CPU 比其他 IA-32 CPU 有更多指令和寄存器一样)?

【问题讨论】:

  • 不,ISA 扩展继续存在于 AMD64 中。
  • @Margaret Bloom 抱歉我的问题不是很清楚,我对其进行了编辑以使其更清楚。

标签: assembly x86 cpu x86-64


【解决方案1】:

所有 AMD64 CPU 都具有以下特性:

  • 完整的 i686 指令集
  • 一个完整的 Pentium Pro 兼容 x87 FPU 和 MMX
  • SSE 和 SSE2

一些早期的 AMD64 CPU 在长模式下会丢失 sahflahf 指令。

不保证支持其他指令集扩展,例如 SSE3、AVX、fisttp 和 BMI。

【讨论】:

  • 抱歉我的问题不是很清楚,我对其进行了编辑以使其更清楚。
  • @user247763 对于您更新的问题:答案是肯定的。例如,最近的 amd64 处理器具有 AVX 指令或 popcnt 指令,所有这些都没有出现在基准 AMD64 规范中。
  • @user247763: AVX512F 是添加新寄存器的扩展的最明显示例:k0..k7 掩码寄存器和 x/y/zmm16..31 只能通过 AVX512F 指令访问(使用 EVEX 编码.) xmm/ymm16..31 需要 AVX512VL(向量长度),只有 AVX512F 您可以使用 512 位 zmm 寄存器。 (或者对 xmm/ymm 0..15 使用 VEX 或旧版 SSE)。当然zmm0..15的上半部分也是AVX没有的新架构状态。
  • 还有其他扩展,比如MPX added bnd0 .. bnd3新架构状态,以及使用它们的新说明。
【解决方案2】:

并非一切都是平等的:

Intel 的 x86 CPU 在 64 位模式下支持 sysenter 指令,而 AMD 的 CPU(至少较旧的 CPU)不支持。

另一方面,AMD 的 CPU 在 32 位模式下支持 syscall,但英特尔的 64 位 CPU(至少是较旧的)不支持。

我确信这不是现有和/或未来 AMD64 CPU 的唯一区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    相关资源
    最近更新 更多