Assembly 战争危险导致管道中出现泡沫(MIPS)?
如果我有两条装配线,如:Assembly 战争危险导致管道中出现泡沫(MIPS)?,assembly,mips,cpu-architecture,Assembly,Mips,Cpu Architecture,如果我有两条装配线,如: add $s1, $s3, $s5 sub $s3, $s6, $s8 这会导致战争(读后写)危险,对吗 问题是,我不明白这是否会导致管道中插入气泡,因为我必须绘制管道表 是否有其他情况会导致危险 战争危险在合理的情况下是罕见的/不可能的(按顺序) 管道 这里有一个表格来说明为什么,在一个5级流水线CPU中。让我们给它们贴上说明1和说明2 IF | ID | EX | MEM | WB ------------------------- 1 | |
add $s1, $s3, $s5
sub $s3, $s6, $s8
这会导致战争(读后写)危险,对吗
问题是,我不明白这是否会导致管道中插入气泡,因为我必须绘制管道表
是否有其他情况会导致危险
战争危险在合理的情况下是罕见的/不可能的(按顺序)
管道
这里有一个表格来说明为什么,在一个5级流水线CPU中。让我们给它们贴上说明1和说明2
IF | ID | EX | MEM | WB
-------------------------
1 | | | |
-------------------------
2 |(1) | | | Instruction 1 is obtaining $s3
-------------------------
| 2 | 1 | |
-------------------------
| | 2 | 1 |
-------------------------
| | | 2 | 1
-------------------------
| | | |(2) Instruction 2 is writing $s3 back
指令在ID(指令解码)阶段从寄存器文件获取操作数,但直到WB(写回)阶段,结果才写回寄存器文件。指令1在指令2在WB阶段之前处于ID阶段4个时钟周期,因此在使用前不可能覆盖$s3
战争危险在合理的情况下是罕见的/不可能的(按顺序)
管道
这里有一个表格来说明为什么,在一个5级流水线CPU中。让我们给它们贴上说明1和说明2
IF | ID | EX | MEM | WB
-------------------------
1 | | | |
-------------------------
2 |(1) | | | Instruction 1 is obtaining $s3
-------------------------
| 2 | 1 | |
-------------------------
| | 2 | 1 |
-------------------------
| | | 2 | 1
-------------------------
| | | |(2) Instruction 2 is writing $s3 back
指令在ID(指令解码)阶段从寄存器文件获取操作数,但直到WB(写回)阶段,结果才写回寄存器文件。指令1在指令2在WB阶段之前处于ID阶段4个时钟周期,因此在使用之前不可能覆盖
$s3
。您的管道中有多少个阶段?如果有5个阶段,这不是危险。是的,这是一个5阶段的管道(获取、解码、读取、执行、写入)。所以不需要泡沫?这确实是一种反依赖,但在经典的管道中不会产生危险。“读取发生得很早,写入发生得很晚,这没有问题。”GiacomoBenso,顺便说一句,欢迎使用堆栈溢出。如果我没有解决您的问题,请告诉我,否则您可以投票和/或接受我的答案。@IRTFM:[cpu体系结构]标记包含管道中的数据危险等内容。如果您正在解决在其他问题中滥用[hazard]标签的问题,请在尚未出现的情况下添加该问题。您的流程中有多少个阶段?如果有5个阶段,这不是危险。是的,这是一个5阶段的管道(获取、解码、读取、执行、写入)。所以不需要泡沫?这确实是一种反依赖,但在经典的管道中不会产生危险。“读取发生得很早,写入发生得很晚,这没有问题。”GiacomoBenso,顺便说一句,欢迎使用堆栈溢出。如果我没有解决您的问题,请告诉我,否则您可以投票和/或接受我的答案。@IRTFM:[cpu体系结构]标记包含管道中的数据危险等内容。如果您正在解决在其他问题中滥用[危险]标签的问题,请在尚未出现的情况下添加该问题。