似乎不太为人所知的是,在新的架构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的变体受到影响,因为人们会认为它们都会共享相同的微体系结构,因此同样会受到这个bug的影响.
顺便说一下,这样的微码“修复”的另一种方式可以操作,并且可能更隐蔽:我认为有可能进行仍然暴露TSX存在的微代码更新(使得它似乎仍然启用了功能)但是会覆盖新的TSX指令的实现,其中“虚拟实现”实际上永远不会忽略锁,实际上只是以老式的方式执行代码,从而避免了错误,但也提到了TSX可以提供的性能改进.确定是否发生这种情况的唯一方法是通过性能测量.
任何人都有关于Skylake TSX状态的更多信息?在任何情况下,奇怪的是,没有更多的信息被释放,人们必须猜测受影响的是什么,什么不是.事实上,如果该功能使用安全.
我有一个6700K,功能仍在那里.但这也取决于BIOS制造商是否采用了微码更新,而且我还没有实际测量性能,所以我不能排除它仍然可能已被禁用cf.上一段.
据我所知,它应该是2016-07-14最新的公共微代码更新包.对于Skylake,这将是Skylake基本微码的修订版0x9d / 0x9e(处理器签名0x406e3和0x506e3).这个新的TSX错误似乎也出现在Broadwell上.我认为它也是通过随新的Skylake微码更新发布的新一批Broadwell- *微码更新得到修复的.
对于Linux,它通过引导加载程序发送的数据更新微码,应用更新是微不足道的,并且它已经在大多数(严重)发行版中可用.对于Windows,您需要检测系统供应商以获取EFI / BIOS更新.
对不起,我没有办法在最新的Skylake / Broadwell微码中测试TSX,以检查它是否是锁定或“总是失败”.至于禁用TSX,您必须了解它对L3有效性(它不是免费的!)和功耗有实际影响,在具有较小L3的任何东西上使BIOS禁用TSX会很有意义.
有趣的是,TSX“鸡位”上的信息不公开,我们不知道如何禁用(或重新启用)它.