|
本帖最后由 cybrans 于 2011-5-8 11:38 编辑
nom8393 发表于 2011-5-7 17:15 ![]()
晕,ARM体系的CPU指令都是编译器编译好的顺序指令,请问怎么做成乱序执行的?
没有任何编译器编译出来的代码是乱序执行的。
单线程的程序无论什么体系都是顺序指令好不好?乱序执行不过是提前读取后面的代码,做分支预测,挖掘单线程中的可并行特征或者作线程投机.....
比如说下面的汇编伪代码
.......
ADD R1,R2
ADD R3,R4
MUL R1,R3
DIV R2,R3
.....
无论什么体系的编译器编译出来的十六进制文件翻译成汇编大概都是这个样子
但是乱序执行的话就变成
并发1
add r1,r2
mul r1,r3
并发2
add r3,r4
div r2,r3
把一段本来顺序执行要4个周期的代码,通过乱序处理变成2个周期执行完毕,这样一来就大大的加快了单线程的速度
而酷睿和I7单线程之所以快于翼龙II,其中最大的原因也就是酷睿和I7是乱序并发4指令,而翼龙只能乱序并发3指令
|
|