当前位置: 首页 > 知识库问答 >
问题:

单一指令中的数据危害

蒋斯伯
2023-03-14

考虑以下mips代码段

add $t1, $t1,$t2
lw $t1, 0($sp)

我知道指令1和2之间的$t1上存在WAW数据危险,但第1行是否存在战争危险,因为我们在一条指令中读取和写入$t1?

共有1个答案

孙昂然
2023-03-14

我们认为WAR危险是由于以非程序顺序执行指令而导致的无序机器问题。

给定程序

add $t4, $t1, $t5 ; instruction 1, program order
add $t5, $t1, $t2 ; instruction 2, program order

一台失序的机器可以决定执行1

因为我们在一条指令中读取和写入$t1,所以第1行是否存在战争危险?

不,在单个指令中,例如add$t1,$t1,$t2处理器在计算加法的结果之前没有新值$t1,它必须已经获取$t1$t2-因此,没有现实的可能性将新值与旧值混淆(在指令中),因为新值在加法时还不存在。

 类似资料:
  • 问题内容: 在处理内部数据(例如,插入或删除数据)时如何在Angular指令中触发变量,但不给该变量分配新对象? 我有一个当前从JSON文件加载的简单数据集。我的Angular控制器可以做到这一点,并定义一些功能: 我有一个正确地称为函数,并且新对象正确插入到集合中。每次点击“添加”按钮,我设置的表格都会更新。 但是,在所有这些情况发生时,我设置的要监视的指令不会被触发。 我在HTML中定义了标签

  • 数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD

  • 在上面的MIPS代码中,在解决方案表中,真正的依赖项标记为I3-

  • 问题内容: 我一直在尝试定义指令,以便可以根据字段的类型及其参数(存储在数据库中)以表格形式显示不同的“窗口小部件”。我需要对不同类型的场景做出反应,因此需要使用指令来处理布局。 在玩一些示例时,我想出了 kinda 可以工作的代码: HTML 指示 这似乎可行(尽管明显比* proper * angularJS变量绑定要慢),但我认为必须有更好的方法来做到这一点。谁能阐明这件事? 问题答案: 我

  • 本文向大家介绍JS从一组数据中找到指定的单条数据的方法,包括了JS从一组数据中找到指定的单条数据的方法的使用技巧和注意事项,需要的朋友参考一下 下面小编给大家介绍基于js如何从一组数据中找到指定的单条数据。具体方法如下所示: 在一般情况下,我们会要求后端在列表的时候输出一堆列表的JSON数据给我们,然后我们把这堆数据循环,就能在前端上显示列表了. 而我们在内容页的时候,则要求输出一个内容页的JSO