作者WishingTree (Tree)
看板Grad-ProbAsk
标题[理工] [计组] 白算盘习题4.15(control hazard)
时间Wed Jan 12 14:21:48 2022
最近在做白算盘的习题~
对4.15题的解答感到疑惑@@
题目:
https://i.imgur.com/1c7q6C3.png
解答:
https://i.imgur.com/W0eYkaY.png
4.15.1的题目说"Assume that branch outcomes are determined in the EX stage, that
there are no data hazards, and that no delay slots are used"
我想说是否跳跃既然是在EX stage才决定
那假如预测错误的话,不就是要把已经进入IF stage和ID stage的指令flush掉吗@@
这样应该是两个stalls
但解答却说会造成三个stalls
有点不能理解为什麽是三个stalls > <''
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.9.47.103 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1641968510.A.8D3.html
1F:→ BusterButter: 需要花三个cycle计算branch,到下一个cycle的时候, 01/12 15:55
2F:→ BusterButter: branch指令进入MEM阶段,这时候他才能告诉前面的sta 01/12 15:55
3F:→ BusterButter: ge把指令flush掉,这时候已经有三个指令在前面,所 01/12 15:55
4F:→ BusterButter: 以一个misprediction会造成3个cycle的stall 01/12 15:55
5F:推 try66889: 楼上B大不好意思,但如果是这样的话,原本beq在mem才判 01/12 19:37
6F:→ try66889: 断时,应该会有4个bubbles产生? 01/12 19:38
7F:→ try66889: 但我记得在mem stage判断的时候只会有3个bubbles @@ 01/12 19:39
8F:→ try66889: 还是我有哪里没注意到的地方呢? 谢谢 > < 01/12 19:40
非常感谢B大的回答> <
但我跟T大也有同样的疑惑@@
在课本4.8章的地方(p.316)
https://i.imgur.com/9d4KYBU.png
课本先假设说在MEM stage才知道是否跳跃
课本p.317也用这张图做范例来说明
https://i.imgur.com/zPQUowP.png
然後课本p.318就有这样的一段叙述> < (如下图橘线标示的地方)
https://i.imgur.com/bgh1LjY.png
还是课本没有提到说等到branch指令到WB stage的话,也要flush掉正在IF stage的指令
呢> <?
感谢大大T_T
※ 编辑: WishingTree (101.9.200.197 台湾), 01/12/2022 20:01:21
9F:推 foogty: 如果我的理解没错的话,课本这张图可以参考一下,可以看 01/12 21:01
10F:→ foogty: 到在mem stage才决定下一阶段的PCSrc,至於题目说的assum 01/12 21:01
11F:→ foogty: e branch out come determine at Ex stage 我认为他说的 01/12 21:01
12F:→ foogty: 是判断branch的结果,而在mem stage才将结果传到pc src 01/12 21:01
14F:→ foogty: 下面这张是实际的范例 01/12 21:01
16F:推 jacksoncsie: 我刚看了一下,branch 的确是在 exe 算完没错, 01/12 21:48
17F:→ jacksoncsie: 但因为要平衡 stage latency 会移 and gate 至 mem 01/12 21:48
18F:→ jacksoncsie: 所以这题基本上就是原本 branch prediction 的版本 01/12 21:49
19F:→ jacksoncsie: stall 3 cycles 没毛病 01/12 21:49
22F:→ try66889: 不过一样的句子张凡这边的解答 01/13 00:23
23F:→ try66889: 是写stall两个cycle耶 > < 01/13 00:23
24F:→ try66889: 都是branch outcome are determined in the EX stage 01/13 00:27
感谢各位大神热心回答> <
看了f大跟j大的回答才知道自己的问题是在branch那个hardware component
1. 所以做题目的时候,如果题目没特别叙述,都是预设branch在MEM stage吗> <
2. 但是看到t大po的那题又好疑惑Q_Q(t大po的是课本习题4.10.3)
3. 是不是只有当是否跳跃移到ID stage决定,才是真的连branch都移到ID stage?
所以才只有一个stall?
以下节录自课本p.319
https://i.imgur.com/g5Y0OPg.png
https://i.imgur.com/dlLkmy8.png
https://i.imgur.com/5d7IsrE.png
在此先跟各位热心的大神说声谢谢> <
※ 编辑: WishingTree (101.9.193.126 台湾), 01/13/2022 00:47:07
※ 编辑: WishingTree (101.9.193.126 台湾), 01/13/2022 01:27:25
25F:推 jimmy1112111: 101交大也有类似的问题,而凡哥对於要flush个数的 01/13 01:57
26F:→ jimmy1112111: 答案分别是3个cycle和1个cycle 01/13 01:57
29F:→ jimmy1112111: 所以凡哥的看法 01/13 01:57
30F:→ jimmy1112111: determine in ID -> flush 1 01/13 01:57
31F:→ jimmy1112111: determine in EXE -> flush 2 01/13 01:57
32F:→ jimmy1112111: determine in MEM -> flush 3 01/13 01:57
33F:→ jimmy1112111: 建议照张凡的,因为他完全以考试为主 01/13 01:57
34F:推 foogty: 1. 题目没说的话是预设在mem stage 决定没错 01/13 11:10
35F:→ foogty: 2. 我觉得是叙述理解问题,这边是白算盘4.5节control haz 01/13 11:10
36F:→ foogty: ard 介绍部分,可以看到课本把determine outcome 跟the b 01/13 11:10
37F:→ foogty: ranch knows what address to fetch 视作两个动作https:/ 01/13 11:10
38F:→ foogty: /i.imgur.com/m2BIfcN.jpg 01/13 11:10
39F:→ foogty: 4.8节 reduce the delay of branch 部分,课本也选择使用 01/13 11:10
40F:→ foogty: next PC select in mem 来说明 01/13 11:10
42F:→ foogty: 如果是交大考卷出determine at exe stage 的话建议是可以 01/13 11:10
43F:→ foogty: 按照原文书来做,如果要释疑附上原文书的来源也较可能成 01/13 11:10
44F:→ foogty: 功,至於其他学校的话我就不太清楚了,以上是个人浅见 01/13 11:10
46F:推 try66889: 感谢楼上各位大大~有比较清楚惹! 01/13 11:38
非常感谢j大f大的解说> <
终於比较了解了Q_Q
※ 编辑: WishingTree (140.116.191.215 台湾), 01/14/2022 10:30:24