让以下管道架构:
- FETCH
- 解码 - 阅读寄存器
- READ MEMORY
- ALU
- 存储/读取存储器
- 写回 - 存储到寄存器
醇>
我们基本上添加了一个阶段,使我们能够在ALU阶段之前从内存中读取数据。
考虑以下新命令:
lwPointer $2, imm($3) # $2:= Memory[Memory[$3] + imm]`
swPointer $2, imm($3) # Memory[Memory[$3] + imm] := $2
让以下程序:
1. add $3 $2 $1
2. lwPointer $1, 0($3)
3. sw $7 0($3)
为什么命令#3
之间没有数据危害?在我看来,由$3
命令解码的#3
未经更新。