ARM9——五级流水线结构,以及PC指针

    ARM7是三级流水线,所以PC = 执行指令地址 + 8,这很好理解,但是在ARM9中,是五级流水线,

仍然是:PC = 执行指令地址 + 8,而不是 PC = 执行指令地址 + 16.

    这个理解显然有些难度,首先看下ARM7和ARM9的流水线区别和联系:

    

    相比ARM7,ARM9采用了更高效的五级流水线设计,在取指令、译码、执行之后,又增加了LS1和LS2阶段,LS1负责加载和存储指令中制定的数据,LS2则负责提取、符号扩展,通过字节或半字加载命令来加载数据,但是LS1和LS2仅对加载(LDR)和存储命令(STR)有效,其他的指令是不需要执行这两个阶段的。

   ARM9五级流水线中,读寄存器的操作转移到译码阶段,将三级流水中的执行阶段进一步细化,减少每个始终周期内必须要完成的工作量,这样可以使流水线的各个阶段在功能上更加平衡,避免数据的访问和取指的总线冲突,每条指令的平均周期明显减少。

    

    

有一句话要牢记,那就是:

PC不是指向你正在运行的指令,而是-PC始终指向你要取得指令的地址。


【总结】

ARM7的三级流水线,PC=PC+8,

ARM9的五级流水线,也是PC=PC+8,

根本的原因是,两者的流水线设计中,指令的Execute执行阶段,都是处于流水线的第三级。

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/80899038