关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
关于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 |
可见,ARM9和ARM7中都是PC=当前执行指令地址+8的根本的原因是,两者的流水线设计中,指令的执行阶段都是处于流水线的第三级
评论暂时关闭