关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释

为便于说明问题,我们假设当前正在执行0地址处的指令,从下面的两幅图中可以清楚地得到结论。

 

ARM7是三级流水线,AMR7的三级流水线如下:

执行

指令地址=0

 

 

 

 

 

取指

PC = 4

解码

执行

指令地址=4

 

 

 

 

取指

PC = 8

解码

执行

指令地址=8

 

 

 

 

取指

PC = 12

解码

执行

指令地址=12

 

 

 

 

取指

PC = 16

解码

执行

指令地址=16

 

ARM9是五级流水线,ARM9的五级流水线如下:

执行

指令地址=0

 

 

 

 

 

取指

PC = 4

解码

执行

指令地址=4

缓存/数据

回写

 

 

取指

PC = 8

解码

执行

指令地址=8

缓存/数据

回写

 

 

取指

PC = 12

解码

执行

指令地址=12

缓存/数据

 

 

 

取指

PC = 16

解码

执行

指令地址=16

 

       可见,ARM9ARM7中都是PC=当前执行指令地址+8的根本的原因是,两者的流水线设计中,指令的执行阶段都是处于流水线的第三级。

你可能感兴趣的:(关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释)