书籍:张凡计组第二版(上)
题目和解答:
https://i.imgur.com/GJkfPOd.jpg
https://i.imgur.com/55hIl8G.jpg
https://i.imgur.com/BM2uWJh.jpg
想请问此练习题的 (3)a.部分
对于此题我画了一个时脉周期管线图如下:
https://i.imgur.com/GmfE9se.jpg
我知道 $1 可借由 forwarding 从第一个指令的 Mem stage 拉到 第三个指令的 Ex stag
e, 但我不晓得 $6 在 有 forwarding 的情况下是怎么传的,
在解答里,此题没有插入任何 nop, 代表第二个指令在 Ex stage 算好新的 $6 的值后有
办法传到 第三个指令的 Mem stage, 但是我不知道这中间的线是怎么拉的,因为我记得
forwarding 都是把线拉到 ALU 的 input
我在课本中看到了下方这电路图(p.456):
https://i.imgur.com/bElLPSI.jpg
这电路说明了经过 mux 后会传到 memory 的 write data,但我对这张图感到困惑,这样
的拉线代表 ALU 的第2个算子必定与 write data 相同,然而在此题中,第三个指令在
Ex stage 时,第二个算子为 50,若依照此电路图为了传上一个指令的 $6 内容值,
50就不会被选到,如此 addr就会算错
我原先是以为要等 $6 写入暂存器,下个指另再从 Registerfile 读取,所以觉得此题要
在第二、第三指令间安插两个nop
抱歉打的有点多,不知这样写清不清楚...
我总结一下: 我的问题重点就是不清楚 data memeory 的 write data 有无支援 forwar
ding,是如何forwarding?
谢谢!!
ps. 我在课堂笔记上看到老师有在 data memory 的 write data 前加一个 mux,并支援
从 Mem/WB reg 经由 forwarding unit 2 拉 write data过来,会不会是这种拉法呢?张
凡的课
本没提到....
ps. 老师在讲解 p.527 第7题的(5)有讲这部分,答案也有把电路图画出来,现在才发
现... 拍谢