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

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

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

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

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

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

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

    

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

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


【总结】

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

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

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

相关文章:

  • 2021-11-03
  • 2021-11-25
  • 2021-08-09
  • 2021-09-23
  • 2021-11-29
  • 2022-12-23
  • 2021-10-06
  • 2021-12-13
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
  • 2022-01-13
  • 2021-11-04
  • 2021-06-04
  • 2021-09-16
相关资源
相似解决方案