首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定在MIP数据风险的指令之间插入多少NOP

确定在MIP数据风险的指令之间插入多少NOP
EN

Stack Overflow用户
提问于 2021-11-29 23:46:04
回答 1查看 77关注 0票数 0

如何知道在两条指令之间需要多少NOP来修复数据风险?我目前的理解是,如果第二条指令的操作数依赖于第一条指令的目的地,我们需要等到第一条指令到达数据可用的特定阶段。

例如:

添加$t1 $t2 $t3

sub $t5 $t1 $t4

我知道我必须等到第一个指令到达WB阶段,所以我需要至少3个NOPs或指令。

但是,如果第一条指令被更改为存储、加载或立即执行,情况会怎样呢?如果第二条指令被更改了呢?我用的是Patterson和Hennessy这本书,而我的教授的讲课并不能让它更容易理解。任何帮助理解这一点的人都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-11-30 00:17:44

NOP是字面上的处理器指令,当构建程序时,编译器或汇编语言程序员必须将其插入到指令序列中。

只有在移除转发和停止硬件时才需要插入NOP,所以这个问题并不真正适用于真实的硬件,而可能适用于一些假想的硬件。

另一方面,停顿对于处理器实现来说是一种有效的方法,可以减轻诸如写后读(RAW)之类的风险-有时是严格必要的,有时是转发的糟糕替代方案。

通常,在以寄存器为目标的指令(如add )和使用该结果的指令之间,需要两个或三个停顿周期而不进行转发,以便第二条指令读取正确的数据。

大多数MIPS实现将描述WB阶段是简单的并且可以在周期的前半部分完成,并且ID阶段是简单的并且可以在同一周期的后半部分完成。这意味着对于在同一周期中发生的WB写入和ID读取,ID读取将能够看到由WB写入所写入的值。由于重叠朝着期望的效果工作,因此只需要2个停顿周期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70162629

复制
相关文章

相似问题

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