|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
正在看《计算机体系结构:量化》这本书。
关于MIPS的流水线中的stall,有一些问题不明白,请大侠指点迷津。
感觉stall, nop, flush这些东西很像,但是不太明白区别在哪里?
如果一个典型的5级流水线 IF ID EX MEM WB, 一般如果和前面的指令有data hazard,那么就要加stall。不过stall加在哪里?
看例子有好几种: (1) stall, IF, ID, EX, MEM, WB 就是所有的步骤都滞后一个cycle;
(2) IF, stall, ID, EX, MEM, WB 就是先IF 然后 在译码前 stall 了一个cycle,虽然我不明白为什么非得把IF提前,但是我明白滞后ID的意思;
(3) IF, ID, stall, EX, MEM, WB 这是把上一个LD的MEM后产生的数前递到当前指令的EX的结果
虽然都能说得通,但是为什么不直接把stall放到IF前面呢(这样多整齐啊)? |
|