在MIPS中使用NOP和停顿有什么区别

问题描述 投票:6回答:1

使用NOP而不是停顿有什么不同。在流水线操作的情况下,两者都碰巧执行相同的任务。我不明白

mips32
1个回答
9
投票

我觉得你的术语很混乱。

处理器将一个停顿注入管道以解决数据危险(处理指令所需的数据尚不可用的情况.NOP只是一个没有副作用的指令。


Stalls

回想一下5管道阶段classic RISC pipeline

  1. IF - 取指令(从存储器中取出下一条指令)
  2. ID - 指令解码(找出这是什么指令以及操作数是什么)
  3. EX - 执行(执行操作)
  4. MEM - 内存访问(存储或读取内存)
  5. WB - 写回(将结果写回寄存器)

考虑代码段:

add $t0, $t1, $t1
sub $t2, $t0, $t0

从这里可以看出,第二条指令依赖于第一条指令的结果。这是一个data hazard:Read After Write(RAW);一个真正的依赖。

sub在其EX阶段需要add的值,但add将仅处于其MEM阶段 - 在WB阶段之前该值将不可用:

+------------------------------+----+----+----+-----+----+---+---+---+---+
|                              |         CPU Cycles                      |
+------------------------------+----+----+----+-----+----+---+---+---+---+
|         Instruction          | 1  | 2  | 3  | 4   | 5  | 6 | 7 | 8 | 9 |
+------------------------------------------------------------------------+
|       0 | add $t0, $t1, $t1  | IF | ID | EX | MEM | WB |   |   |   |   |
|       1 | sub $t2, $t0, $t0  |    | IF | ID | EX  |    |   |   |   |   |
+---------+--------------------+----+----+----+-----+----+---+---+---+---+

One solution这个问题是处理器插入停顿或冒泡管道直到数据可用。

+------------------------------+----+----+----+-----+----+----+-----+---+----+
|                              |         CPU Cycles                          |
+------------------------------+----+----+----+-----+----+----+-----+----+---+
|         Instruction          | 1  | 2  | 3  | 4   | 5  | 6  | 7   | 8  | 9 |
+----------------------------------------------------------------------------+
|        0 | add $t0, $t1, $t1 | IF | ID | EX | MEM | WB |    |     |    |   |
|        1 | sub $t2, $t0, $t0 |    | IF | ID | S   | S  | EX | MEM | WB |   |
+----------+-------------------+----+----+----+-----+----+---+---+---+-------+

NOPs

NOP是一种什么都不做的指令(没有副作用)。 MIPS汇编程序通常支持nop指令,但在MIPS this is equivalent to sll $zero $zero 0中。

该指令将占用管道的所有5个阶段。它最常用于填充跳跃或分支的branch delay slot,当没有其他任何有用的东西可以在那个插槽中完成。

j label
nop # nothing useful to put here

如果您使用的是MIPS仿真器,则可能需要启用分支延迟时隙仿真才能看到此情况。 (例如,在spim中使用-delayed_branches参数)

© www.soinside.com 2019 - 2024. All rights reserved.