7

由于 Spectre 缓解而对所有当前 CPU 禁用硬件锁定消除是否正确,并且任何使用 HLE 内在函数/指令的互斥锁的尝试都会导致通常的互斥锁?

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

4

1 回答 1

5

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

这是英特尔网站上的相关文章:

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

链接包含以下信息:

  • 某些未来甚至当前的 CPU 可能具有针对 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 文章说:

某些处理器可能需要加载微码更新以添加对IA32_TSX_CTRL. MSR 支持通过设置禁用 Intel TSX 的 RTM 功能TSX_CTRL_RTM_DISABLE (bit 0)。当该位置位时,所有 RTM 事务将在任何指令可以在事务中执行之前以中止代码 0 中止,即使是推测性的。在 enumerate 的处理器上IA32_ARCH_CAPABILITIES[TSX_CTRL] (bit 7)=1,HLE 前缀提示总是被忽略。

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

2.5 英特尔指令集架构和删除的功能

英特尔® 内存保护扩展(英特尔® MPX)MSR_TEST_CTRL,第 31 位(MSR 地址 33H)硬件锁定消除 (HLE)

我相信我有我的问题的答案:

由于Spectre TAA 缓解而对所有当前 CPU 禁用硬件锁定消除是否正确,并且任何使用 HLE 内在函数/指令的互斥锁的尝试都会导致通常的互斥锁?

是的。它已被弃用。除非英特尔不赞成它。

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

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

于 2020-04-20T17:12:23.577 回答