![]() |
1
4
根据我的微博客,结果可以在 uops.info ,此优化方法是通过砂桥引入的( http://uops.info/html-tp/SNB/ADC_R64_I8-Measurements.html ). Westmere不做这种优化( http://uops.info/html-tp/WSM/ADC_R64_I8-Measurements.html ). 数据是用i7-2600和i5-650核获得的。 此外,关于 计量单位信息 显示如果使用8位寄存器,则不执行优化( Sandy Bridge , Ivy Bridge , Haswell ). |
![]() |
2
3
尼哈琳身上没有,但在艾维布里奇身上。所以无论是桑迪布里奇还是IvB都是新的。
我猜是桑迪布里奇干的
,因为这是对解码器的重大重新设计(产生多达4个总UOP,而不是像Core2/Nehalem中可能出现的4+1+1+1这样的模式),并坚持可以宏融合的指令(如
重要的是,我认为SnB解码器也会在imm8的立即计数移位中检查它是否为零,而不是只在执行单元中这样做 二 . 迄今为止的硬数据 :
脚注1:
在Skylake上,没有ModR/M字节的al/ax/eax/rax、imm8/16/32/32短格式编码仍然解码为2 uops,即使立即数为零。例如,
看起来英特尔忘记更新其他直接形式的
默认情况下,汇编程序将对不适合imm8的即时消息使用缩写形式,例如
瓶颈的循环
脚注2
:见
INC instruction vs ADD 1: Does it matter?
引用英特尔优化手册中有关Core2在以后的指令从
但SnB家族并没有这么做
解码器
显然要检查imm8,看看指令是否无条件地写入标志,或者是否保持标志不变。因此,检查imm8是SnB解码器已经做的事情,并且可以有效地
|
![]() |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
![]() |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
![]() |
Prince · 复制大型文件需要更多时间 2 年前 |
![]() |
Sagar · 为什么在循环之外声明变量会更快? 2 年前 |
![]() |
seco · 如何在不挂起页面的情况下加载JS 2 年前 |