推 ss455032: Register-mem,add $t0,t1,0(S2),可以想成先load到一個re 11/14 16:06
→ ss455032: gister在相加 11/14 16:06
→ Aa841018: 可是store也是register-memory啊!怎麼就不是store? 11/14 16:12
推 b10007034: 覺得詳解不知道在幹麻,如果q2是如詳解這樣寫,那為何 11/14 23:41
→ b10007034: q3計算load的部份沒有把cpi=3改為cpi=2? 11/14 23:41
→ b10007034: 我的想法是load&store都是受益者,新的cpi計算為2*0.4 11/14 23:44
→ b10007034: +2*0.2+2*0.2+2*0.2=2,新的cpu time=IC*2*1.05T仍然 11/14 23:44
→ b10007034: 大於舊的,因此不選擇新的 11/14 23:44
推 b10007034: 有人可以解釋一下嗎,我也想知道解答寫啥QQ 11/14 23:46
推 b10007034: 自問自答,我剛剛查了一下知道怎麼了,store-load其實 11/15 00:09
→ b10007034: 是reg-reg的架構,原文書是這樣的定義。 11/15 00:09
→ b10007034: 同第一個的推文,只要想add $1,$2,imm,這樣類似的指 11/15 00:13
→ b10007034: 令可以直接存取記憶體就好 11/15 00:13
推 b10007034: 只有load的原因是因為原來要做運算的話一定要把資料從 11/15 00:19
→ b10007034: 記憶體搬到reg(load)才可以,而這個定址模式解放這 11/15 00:19
→ b10007034: 個限制了,所以load的數量就會變少。 11/15 00:19
→ b10007034: 沒有store的原因也就是上述說明的相反,沒有人希望在 11/15 00:23
→ b10007034: 記憶體做運算,因為可以在reg算就盡量在reg算,reg跟 11/15 00:23
→ b10007034: 記憶體的解碼速度差太多了,還有sram跟dram的差別。 11/15 00:23
推 seika555: 題目開始有假設ALU的cpi及總cycle time都增加,又他是從 11/15 02:13
→ seika555: reg-reg改成reg-mem 因此合理的假設ALU多了access mem 11/15 02:13
→ seika555: 的部分,然後在做運算時是要取暫存器的值,sw 是把reg 11/15 02:13
→ seika555: 存回mem不會影響讀取,因此能減少的就是原本lw 的指令, 11/15 02:13
→ seika555: 分給ALU讓他可access mem 和運算,就不用全透過lw去acce 11/15 02:13
→ seika555: ss 不知道這樣想對不對 11/15 02:13
推 b10007034: 你是從MIPS現有架構去思考這個問題嗎? 11/15 09:17
→ b10007034: 假設要相容現有架構的話,我認為是從instruction deco 11/15 09:19
→ b10007034: de就有access mem.的部份了 11/15 09:19
推 seika555: 哦哦對耶 沒考慮到 不過我想說的是多pipelined 的第4個s 11/15 09:25
→ seika555: tep 11/15 09:25