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

Mor*_*rty 5 hardware performance x86 intel tsx

众所周知,英特尔不得不通过微代码更新来禁用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的变体受到影响,因为人们会认为它们都会共享相同的微体系结构,因此同样会受到这个bug的影响.

顺便说一下,这样的微码"修复"的另一种方式可以操作,并且可能更隐蔽:我认为有可能进行仍然暴露TSX存在的微代码更新(使得它似乎仍然启用了功能)但是会覆盖新的TSX指令的实现,其中"虚拟实现"实际上永远不会忽略锁,实际上只是以老式的方式执行代码,从而避免了错误,但也提到了TSX可以提供的性能改进.确定是否发生这种情况的唯一方法是通过性能测量.

任何人都有关于Skylake TSX状态的更多信息?在任何情况下,奇怪的是,没有更多的信息被释放,人们必须猜测受影响的是什么,什么不是.事实上,如果该功能使用安全.

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

ano*_*ous 6

据我所知,它应该是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"鸡位"上的信息不公开,我们不知道如何禁用(或重新启用)它.

  • [本文](http://arxiv.org/pdf/1504.04640.pdf)触及了一些TSX性能细节,并得出了一些有趣的结论,包括具有完整L3大小的只读事务.它在参考文献部分有关于TSX的有趣论文...... (3认同)
  • 从我读过的内容来看,它发生在执行事务的核心的L1内部.根据David Kanter的[HSW文章](http://www.realworldtech.com/haswell-cpu/5/),即使L2不是交易性的,更不用说L3了.他说他关于Haswell如何实施它的猜测是正确的; 它为每个L1缓存行使用额外的位.(参见他之前的文章:http://www.realworldtech.com/haswell-tm/和http://www.realworldtech.com/haswell-tm-alt/).坎特说TM是他的主要专业兴趣之一,因此可能没有任何重大错误. (2认同)