由于 Spectre 缓解而对所有当前 CPU 禁用硬件锁定消除是否正确,并且任何使用 HLE 内在函数/指令的互斥锁的尝试都会导致通常的互斥锁?
这是否有可能在未来不会有任何像 HLE 互斥锁这样的东西来避免像 Spectre 这样的漏洞?
由于 Spectre 缓解而对所有当前 CPU 禁用硬件锁定消除是否正确,并且任何使用 HLE 内在函数/指令的互斥锁的尝试都会导致通常的互斥锁?
这是否有可能在未来不会有任何像 HLE 互斥锁这样的东西来避免像 Spectre 这样的漏洞?
因此,禁用 TSX 可能不是为了缓解 Spectre,而是作为另一个漏洞缓解措施的一部分,即 TSX 异步中止 (TAA)。
这是英特尔网站上的相关文章:
其中链接到两篇更详细的文章:
链接包含以下信息:
IA32_ARCH_CAPABILITIES[TAA_NO]=1
. IA32_ARCH_CAPABILITIES[MDS_NO]=0
) 影响,则 MDS 的软件缓解也将缓解 TAAIA32_ARCH_CAPABILITIES[TAA_NO]=0
, IA32_ARCH_CAPABILITIES[MDS_NO]=1
应通过以下方式之一减轻 TAA:
上述选择性禁用 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)
我相信我有我的问题的答案:
由于SpectreTAA 缓解而对所有当前 CPU 禁用硬件锁定消除是否正确,并且任何使用 HLE 内在函数/指令的互斥锁的尝试都会导致通常的互斥锁?
是的。它已被弃用。除非英特尔不赞成它。
这是否有可能在未来不会有任何像 HLE 互斥锁这样的东西来避免像 Spectre 这样的漏洞?
不,还有 RTM,它可能没有被禁用,它可以用来创建像 HLE 互斥锁一样的互斥锁。未来的处理器可能也不会受到 TAA 的影响,RTM 可能适用于它们。