Hardware Lock Elision 是否因为 Spectre Mitigation 而永远消失了?

Has Hardware Lock Elision gone forever due to Spectre Mitigation?

由于 Spectre 缓解措施,所有当前 CPU 都禁用了硬件锁省略,并且任何使用 HLE intrinsics/instructions 获得互斥锁的尝试都会导致通常的互斥锁,这是否正确?

未来是否可能不会有像 HLE 互斥体这样的东西来避免像 Spectre 这样的漏洞?

因此,禁用 TSX 可能不是为了缓解 Spectre,而是作为另一个漏洞缓解措施的一部分,即 TSX 异步中止 (TAA)。

英特尔网站上的相关文章如下:

其中链接到两篇更详细的文章:

链接包含以下信息:

  • 一些未来甚至当前的 CPUs 可能有针对 TAA 的硬件缓解,由 IA32_ARCH_CAPABILITIES[TAA_NO]=1 检测到。
  • 否则,如果 CPU 容易受到 MDS (IA32_ARCH_CAPABILITIES[MDS_NO]=0) 的影响,MDS 的软件缓解也将缓解 TAA
  • IA32_ARCH_CAPABILITIES[TAA_NO]=0 IA32_ARCH_CAPABILITIES[MDS_NO]=1 的情况下,应通过以下方式之一缓解 TAA:
    • 软件缓解
    • 有选择地禁用 TSX

上述有选择地禁用 TSX 的能力随着微码更新而到来。这样的微码更新后,控制 TSX 的能力由 IA32_ARCH_CAPABILITIES[TSX_CTRL] (bit 7)=1.

控制

现在,关于 HLE。 TAA article 说:

Some processors may need to load a microcode update to add support for IA32_TSX_CTRL. The MSR supports disabling the RTM functionality of Intel TSX by setting TSX_CTRL_RTM_DISABLE (bit 0). When this bit is set, all RTM transactions will abort with abort code 0 before any instructions can execute within the transaction, even speculatively. On processors that enumerate IA32_ARCH_CAPABILITIES[TSX_CTRL] (bit 7)=1, HLE prefix hints are always ignored.

HLE 功能在 Intel® 64 和 IA-32 架构中也被标记为已删除 软件开发人员手册

2.5 INTEL INSTRUCTION SET ARCHITECTURE AND FEATURES REMOVED

Intel® Memory Protection Extensions (Intel® MPX) MSR_TEST_CTRL, bit 31 (MSR address 33H) Hardware Lock Elision (HLE)

我相信我有问题的答案:

Is this correct that Hardware Lock Elision is disabled for all current CPUs due to Spectre TAA mitigation, and any attempt to have a mutex using HLE intrinsics/instructions would result in usual mutex?

是的。它已被弃用。除非英特尔反对它。

Is this likely that there will not be anything like HLE mutexes in future to avoid vulnerabilities like Spectre?

没有。还有 RTM,它可能没有被禁用,它可以用来创建像 HLE 互斥锁一样的互斥锁。未来可能还会有不易受 TAA 影响的处理器,RTM 可能适用于它们。