我需要多少个摊位才能正确执行以下说明。我对我所做的有点困惑,所以我在这里看到专家的答案。装配流水线
lw $1,0($2);
beq $1,$2,Label;
请注意,检查分支是否会发生将在解码阶段完成。但是在这种情况下$ 1的beq的源寄存器rs将在lw指令的写回阶段后更新。所以我们需要在存储器阶段将新数据从存储器转发到beq指令的解码阶段。
阶段是这样的:
IF:指令的读取; ID:指令解码 例如:执行/ ALU阶段 MEM:在目的地存储数据寄存器
这是我迄今所做的:从内存 WB读取数据。
当lw处于执行阶段并且在解码阶段beq时,失速条件变为真并且产生气泡。现在lw处于Mem阶段,由于气泡,beq仍处于解码阶段,失速状态再次变为真,第二个失速发生。现在lw处于WB(写回)状态,beq处于解码阶段,但仍然是数值1美元将在WB阶段结束时更新,这最终意味着beq仍然会以1美元的错误价值工作。
“检查分支是否会发生” - 您的意思是检查。根据http://www.csc.gatech.edu/~copeland/3055-00/lab/lab-2/MIPS_pipes.JPEG分支在EX中完成;并且新的PC被转发到MEM的PC寄存器。 – osgx
由于延迟分支,您需要添加1个额外的摊位。所以你需要7个摊位。 – Blood
它如何成为7档?最多的摊位可以是2 – Alfred