作者Aa841018 (andrew)
看板Grad-ProbAsk
標題[理工] 計組上冊324(2)!
時間Wed Nov 14 15:56:19 2018
https://i.imgur.com/AihTSZK.jpg
請問一下,為何(2)是load,不是store?兩個都是20%,cpi又都是3,是怎麼區分的啊?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.94.62
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1542182181.A.70F.html
1F:推 ss455032: Register-mem,add $t0,t1,0(S2),可以想成先load到一個re 11/14 16:06
2F:→ ss455032: gister在相加 11/14 16:06
3F:→ Aa841018: 可是store也是register-memory啊!怎麼就不是store? 11/14 16:12
4F:推 b10007034: 覺得詳解不知道在幹麻,如果q2是如詳解這樣寫,那為何 11/14 23:41
5F:→ b10007034: q3計算load的部份沒有把cpi=3改為cpi=2? 11/14 23:41
6F:→ b10007034: 我的想法是load&store都是受益者,新的cpi計算為2*0.4 11/14 23:44
7F:→ b10007034: +2*0.2+2*0.2+2*0.2=2,新的cpu time=IC*2*1.05T仍然 11/14 23:44
8F:→ b10007034: 大於舊的,因此不選擇新的 11/14 23:44
9F:推 b10007034: 有人可以解釋一下嗎,我也想知道解答寫啥QQ 11/14 23:46
10F:推 b10007034: 自問自答,我剛剛查了一下知道怎麼了,store-load其實 11/15 00:09
11F:→ b10007034: 是reg-reg的架構,原文書是這樣的定義。 11/15 00:09
12F:→ b10007034: 同第一個的推文,只要想add $1,$2,imm,這樣類似的指 11/15 00:13
13F:→ b10007034: 令可以直接存取記憶體就好 11/15 00:13
14F:推 b10007034: 只有load的原因是因為原來要做運算的話一定要把資料從 11/15 00:19
15F:→ b10007034: 記憶體搬到reg(load)才可以,而這個定址模式解放這 11/15 00:19
16F:→ b10007034: 個限制了,所以load的數量就會變少。 11/15 00:19
17F:→ b10007034: 沒有store的原因也就是上述說明的相反,沒有人希望在 11/15 00:23
18F:→ b10007034: 記憶體做運算,因為可以在reg算就盡量在reg算,reg跟 11/15 00:23
19F:→ b10007034: 記憶體的解碼速度差太多了,還有sram跟dram的差別。 11/15 00:23
20F:推 seika555: 題目開始有假設ALU的cpi及總cycle time都增加,又他是從 11/15 02:13
21F:→ seika555: reg-reg改成reg-mem 因此合理的假設ALU多了access mem 11/15 02:13
22F:→ seika555: 的部分,然後在做運算時是要取暫存器的值,sw 是把reg 11/15 02:13
23F:→ seika555: 存回mem不會影響讀取,因此能減少的就是原本lw 的指令, 11/15 02:13
24F:→ seika555: 分給ALU讓他可access mem 和運算,就不用全透過lw去acce 11/15 02:13
25F:→ seika555: ss 不知道這樣想對不對 11/15 02:13
26F:推 b10007034: 你是從MIPS現有架構去思考這個問題嗎? 11/15 09:17
27F:→ b10007034: 假設要相容現有架構的話,我認為是從instruction deco 11/15 09:19
28F:→ b10007034: de就有access mem.的部份了 11/15 09:19
29F:推 seika555: 哦哦對耶 沒考慮到 不過我想說的是多pipelined 的第4個s 11/15 09:25
30F:→ seika555: tep 11/15 09:25