arm的5级流水线的学习笔记

ARM 72浏览

arm的5级流水线的学习笔记

[ 2010-11-24 9:22:00 | By: crazyleen ]

今天复习了一遍arm的体系结构与指令系统,发现有很多遗留的东西没搞明白:1.多级流水线 2.中断PC保存与恢复为什么要偏移4或8

了解了流水线的过程后,有点豁然开朗的感觉。

假设程序为:

0:

ldr r3, [r0], #4

str r3, [r1], #4

cmp r2, r0

bne 0b

ARM9的5级流水线过程:

1.取指----------->2译码----------->3执行----------->4存储----------->5写

bne cmp str ldr

当前执行的指令是str,而pc指向bne,是当前执行指令的第二条指令,arm的指令为4字节,所以pc值永远为当前指令的地址加8。

注意:

1)执行一条分支指令或直接修改 PC 而发生跳转时,会使 ARM 内核凊空流水线

2)即使产生了一个中断,一条处于“执行”阶段的指令也将会完成。流水线里其他指令将会放弃,而处理器将从向量表的适当入口开始填充流水线

理解了5级流水线的原理后,回过头去看中断的pc值设置就不会再困惑了。