本帖最后由 mybao 于 2012-1-12 21:26 编辑
ldr 需要两个指令周期,
ldr r0,[r3]
add r0,r0,#1
数据加载到r0后,立即用的话,CPU会插入一个等待周期,两条指令要三个周期(add需要一个)。
再看如下指令:
ldr r0,[r3]
add r0,r0,#1
ldr r1,[r3,#4]
add r1,r1,#1
add r1,r1,r0
总共需要七个周期,如果指令重新排序一下,如下:
ldr r0,[r3]
ldr r1,[r3,#4]
add r0,r0,#1
add r1,r1,#1
add r1,r1,r0
对于流水线的ARM只需要五个周期,在ARM9以上的CPU是这样,ARM7应该也是这样,但是cortex m3,指令重排序后,并没有改善,那这个cortex m3的流水线徒有虚名,假的,失望
|