为了账号安全,请及时绑定邮箱和手机立即绑定

为什么打破LZCNT的“输出依赖性”很重要?

为什么打破LZCNT的“输出依赖性”很重要?

哈士奇WWW 2019-12-05 13:20:45
在进行基准测试时,我测得的吞吐量比我计算的要低得多,我将其缩小到LZCNT指令(TZCNT也是如此),如以下基准测试所示:  xor ecx, ecx_benchloop:  lzcnt eax, edx  add ecx, 1  jnz _benchloop和:  xor ecx, ecx_benchloop:  xor eax, eax  ; this shouldn't help, but it does  lzcnt eax, edx  add ecx, 1  jnz _benchloop第二个版本要快得多。不应该这样 没有理由为什么LZCNT应该对其输出具有输入依赖性。与BSR / BSF不同,xZCNT指令始终覆盖其输出。我正在4770K上运行它,因此LZCNT和TZCNT不会作为BSR / BSF执行。这里发生了什么?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

没什么可不幸的。您似乎已经排除了对齐方式,而我们只是排除了部分标志的依赖性。“当您消除了不可能的事物时,无论多么不可能,仍然是必须存在的事实。”我们可能还没有消除所有其他事物,但是看起来越来越像在您的处理器上实现的xZCNT依赖于其输出寄存器重命名。

查看完整回答
反对 回复 2019-12-05
  • 3 回答
  • 0 关注
  • 616 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信