众所周知,英特尔不得不通过微码更新禁用 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 微码“修复”一样完全禁用 TSX?谷歌搜索“SKL105”没有给出任何结果,所以似乎社区通常不知道它?
一些用户注意到 TSX 功能被“悄悄地”禁用(但似乎没有意识到上面的勘误表):
https://www.reddit.com/r/hardware/comments/44k218/intel_disables_tsx_transactional_memory_again_in/
如果只有 CPU 的某些变体受到影响,这很奇怪,因为人们会假设它们都将共享相同的微架构,因此同样会受到此错误的影响。
顺便说一下,这种微码“修复”可以运行的另一种方式,并且可能更加隐蔽:我想可以进行微码更新,但仍然会暴露 TSX 的存在(看起来该功能仍然启用)但是会用“虚拟实现”覆盖新 TSX 指令的实现,这些虚拟实现实际上永远不会忽略锁,基本上只是以老式方式执行代码,从而避免了错误,但也放弃了 TSX 可以提供的性能改进。确定是否发生这种情况的唯一方法是通过性能测量。
有人有更多关于 Skylake 中 TSX 状态的信息吗?无论如何,奇怪的是没有更多的信息被发布,人们不得不猜测什么受到影响,什么没有受到影响。事实上,如果该功能可以安全使用。
我有一个 6700K 并且该功能仍然存在。但这也取决于 BIOS 制造商是否接受了微码更新,而且我还没有实际测量过性能,所以我不能排除它仍然可能被禁用。上一段。