小编amo*_*kov的帖子

现有 CPU 中是否有任何指令受 IA32_UARCH_MISC_CTL[DOITM] 影响?

在题为“数据操作数独立时序指令集架构 (ISA) 指南”的文档中,英特尔推出了一种新的IA32_UARCH_MISC_CTLMSR,其中切换位 0 可启用“数据操作数独立时序模式”(DOITM)。此 MSR 可在代号为 Ice Lake 的 Intel Core、代号为 Gracemont 的 Atom 以及较新的 CPU(即撰写本文时的 Alder Lake)上使用。Ice Lake 和 Gracemont 之前的处理器的行为就像始终启用 DOIT 模式一样。

在 Intel Core CPU 上,不涉及复杂微代码的整数指令通常被理解为对于数据操作数具有固定延迟,但对于地址操作数则不然(自 Ice Lake 以来,整数除法似乎以固定延迟运行,并且在此之前进行了微编码[uops .info])。当涉及次正规时,浮点指令可能会有所不同。这看起来很自然,因为 CPU 后端需要提前计算结果的可用性。

在 DOIT 文档中,英特尔似乎表示他们正在设想进一步的 CPU 优化,其中某些指令可能具有更短的延迟,具体取决于其数据操作数。除了令人困惑的短语外,优化的确切性质并未公开:

例如,启用数据操作数独立计时可能会禁用数据相关预取

这很难解释为适用于数据操作数,但不适用于地址操作数。

根据数据操作数的不同,可以有意义地具有不同延迟的指令的一个具体示例是指令IMUL:当乘以在寄存器重命名时已知为零的操作数时(因为它之前在重命名阶段按照习惯用法被归零xor same, same),则结果也可以在重命名阶段解析为零,以实现零执行延迟而不是三或四个周期。类似的技术可以应用于许多基本的单周期 ALU 操作(例如,将重命名为 0 的操作数的ADD/ OR/的结果解析为第二个操作数)。XOR

在 DOIT 模式下,某些(但不是全部)指令保证相对于数据操作数具有固定延迟,就像在 Ice Lake 之前的 CPU 上一样。标题为“数据操作数独立时序指令”的随附文档中列举了此类指令。有点令人困惑的是,该列表包括类似LDDQU和的指令POP,但没有任何数据操作数。

切换 DOIT …

x86 intel cpu-architecture micro-architecture

6
推荐指数
1
解决办法
140
查看次数

标签 统计

cpu-architecture ×1

intel ×1

micro-architecture ×1

x86 ×1