首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS结构危险

MIPS结构危险
EN

Stack Overflow用户
提问于 2016-04-02 16:43:32
回答 2查看 4.7K关注 0票数 4

我试着了解MIPS管道内衬和相关的危害。我很难想象结构危险在MIPS指令中是什么样子。

我读过这样一种情况,即两个(或更多)指令同时需要使用给定的硬件资源。我以前见过时钟周期的例子。但是,有人能给我提供一个简单的MIPS指令集示例吗?我很难在网上找到一个。只需看很多数据危害的例子,这不是我要找的。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-16 20:21:37

您很难解决这个问题,因为它通常是在HW架构中解决的。

以下是两个例子:

  1. 假设在第5阶段(WB)期间对寄存器文件( RF )进行写入,并且在第2阶段(ID) 上对RF上的同一寄存器同时进行读取。这是一个结构风险,因为两个指令试图在同一个时钟周期访问相同的资源(将读取什么值?)这可以被解决(在HW中),例如,通过将RF访问分成两个时钟阶段,高写入和低读取。此外,如果你想一想,一个结构性的危险是为什么在射频中有两个单独的读端口和一个写端口。
  2. 假设从内存(第1阶段,IF)获取指令,并对第4阶段的内存 (MEM)进行另一次读/写。同样,同一周期访问的资源也是相同的。这是通过分离数据和指令存储器(哈佛架构)来解决的。在您看来,这可能是显而易见的,但是您可以查找普林斯顿建筑,并看到一个统一内存的示例。

因此,如果我们以第一个例子为例:在其他两条指令之后,带有load (lw)命令的指令集与R型命令(例如add)中的寄存器相同,就可以做到这一点:

代码语言:javascript
复制
lw $8, 100($9)
add $10, $11, $12
add $10, $11, $12
add $10, $8, $12

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2016-04-02 18:54:49

这可能有用,但我不是一个大的MIPS的人:

代码语言:javascript
复制
add $t0, $t1, $t2 
sw  $t3, 0($t4)
sub $t5, $t6, $t7
sub $t8, $t9, $t0
sw  $t0, 0($s0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36375975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档