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的根本的原因是,两者的流水线设计中,指令的执行阶段都是处于流水线的第三级。
转载自:http://blog.youkuaiyun.com/csuwzc/article/details/6567754