MIPS 结构性危害

Pro*_*oob 5 mips pipelining mips32

我正在尝试了解 MIPS 管道以及与之相关的危害。我无法想象MIPS 指令中的结构危险是什么样的。

我已经读过,在这种情况下,两条(或更多条)指令需要同时使用给定的硬件资源。而且我之前看过以时钟周期显示的示例。但是谁能提供一个简单的 MIPS 指令集示例给我看?我很难在网上找到一个。只需查看大量数据危害示例,这不是我想要的。谢谢!

Dan*_*iel 5

你很难遇到这个问题,因为它通常在硬件架构中解决......

这里有两个例子:

  1. 假设写入阶段5(WB)期间向寄存器文件(RF)制作和读取被制成相同的寄存器上阶段2(ID)的RF同时。这是一种结构性风险,因为两条指令试图在同一时钟周期访问同一资源(将读取什么值?)。这可以解决(在硬件中),例如,通过将 RF 访问分成两个时钟相位,在高电平写入和在低电平读取。此外,如果您考虑一下,结构性风险就是为什么 RF 中有单独的 2 个读端口和 1 个写端口。

  2. 假设正在从内存中获取一条指令(阶段 1,IF),并且在阶段 4(MEM)上对内存进行另一次读/写。同样,在同一周期访问相同的资源。这是通过分离数据和指令存储器(哈佛架构)来解决的。这对您来说可能很明显,但您可以查找普林斯顿架构并查看统一内存的示例。

因此,如果我们以第一个示例为例:任何带有加载 (lw) 命令的指令集都与在其他两条指令之后的 R 类型命令(如添加)中的寄存器相同:

lw $8, 100($9)
add $10, $11, $12
add $10, $11, $12
add $10, $8, $12
Run Code Online (Sandbox Code Playgroud)

希望有帮助。