与 TSX 相关的 Skylake 勘误表 SKL-105 的状态如何?

What is the status of the TSX-related Skylake errata SKL-105?

众所周知,英特尔不得不通过微代码更新禁用 Haswell 系列处理器中的 TSX。这是由于 TSX 实现中的一个错误,如果使用这些指令可能会给出错误的结果。

似乎不​​太为人所知的是,在较新的架构 Skylake 上,显然还有一个影响 TSX 的勘误表。特别是此处提到的勘误表 "SKL-105":

http://www.intel.com/content/www/us/en/processors/core/desktop-6th-gen-core-family-spec-update.html

它特别指出使用 TSX 会导致不可预测的系统行为。但是,它还指出 BIOS 可能会进行修复。但是,问题是此修复需要什么。它是否像 Haswell 微码 "fix" 一样完全禁用 TSX?谷歌搜索 "SKL105" 没有结果,所以社区似乎普遍没有意识到这一点?

一些用户已经注意到 TSX 功能被 "steathily" 禁用(但似乎没有意识到上面的勘误表):

https://www.reddit.com/r/hardware/comments/44k218/intel_disables_tsx_transactional_memory_again_in/

如果只有某些 CPU 变体受到影响,这很奇怪,因为人们会认为它们都共享相同的微体系结构,因此同样受到此错误的影响。

顺便说一句,这样的微代码 "fix" 可以运行的另一种方式,并且可能更加隐蔽:我想有可能进行微代码更新,仍然会暴露 TSX 的存在(使其成为似乎该功能仍处于启用状态),但会使用 "dummy implementations" 覆盖新 TSX 指令的实现,这实际上永远不会消除锁定,本质上只是以老式的方式执行代码,从而避免了错误,但也放弃了TSX 可以提供的性能改进。确定是否发生这种情况的唯一方法是通过性能测量。

有人知道更多关于 Skylake 中 TSX 状态的信息吗?无论如何,奇怪的是没有发布更多信息,人们不得不猜测什么受到影响,什么没有受到影响。事实上,如果该功能可以安全使用。

我有一个 6700K,但该功能仍然存在。但这也取决于 BIOS 制造商是否接受了微码更新,而且我还没有实际测量性能,所以我不能排除它仍然可以被禁用 cf。上一段。

据我所知,它应该已在 2016-07-14 的最新 public 微码更新包中修复。对于 Skylake,这将是 Skylake 基本微代码的修订版 0x9d/0x9e(处理器签名 0x406e3 和 0x506e3)。

这个新的 TSX 勘误表似乎也出现在 Broadwell 上。我假设它也已通过与新的 Skylake 微代码更新一起发布的新一批 Broadwell-* 微代码更新得到修复。

对于 Linux,它通过引导加载程序发送的数据更新微代码,应用更新很简单,并且它已经在大多数(正式)发行版中可用。对于 Windows,您需要联系您的系统供应商进行 EFI/BIOS 更新。

抱歉,我没有办法在最新的 Skylake/Broadwell 微代码中测试 TSX,以检查它是否正在删除锁或 "always failing"。至于禁用 TSX,您必须了解它对 L3 有效性(它 不是 免费提供!)和功耗有实际影响,禁用 TSX 很有意义通过 BIOS 在 L3 较小的任何东西上。

有趣的是,TSX "chicken bit" 上的信息不是 public,我们不知道如何禁用(或重新启用)它。