以下是Computer organization and design 3ed的問題,懇請賜教
[1] {p340}
http://img69.imageshack.us/i/58618715.jpg/
第一題的答案是false,請問是為什麼呢?
我自已是支持true,因為jump在cycle 3所做的動作為{PC[31:28]:IR[25:00]<<2}
如果只是串接實在沒理由等到cycle 3,當然了我也有想了為啥不可以:
可能在Cycle 2 ID過程中,處理器還無法知道是什麼指令,(也就是Control unit
還不能使用),但這在後面的pipelined processor、以及習題時,被反駁了! 因為
對於Branch而言,pipelined processor可以改進Branch,讓它在ID 2時做完,使
其在Cycle 3就讓新的指令讀入,減少stall。習題也說明了Cycle2 就可進行invalid
instruction 的偵測換言之在cycle 2就可以知道是怎樣的指令了。
[2] {p354}
題目: http://img683.imageshack.us/i/29677330.jpg/
[2.1] 5.2 的ALUop1的解答
http://img651.imageshack.us/i/89556532.jpg/
解答寫除了sub以外的R-type指令,都會被影響,
我想這是因為在ALUop 01就是執行減法了
但是這個就有另一個問題了,那add呢? ALUop 00 不是也是執行加法嗎?
[2.2] 5.2的MemWrite解答
http://img541.imageshack.us/i/26767284.jpg/
他寫著只有sw可以正常運作,那jump不能正常執行嗎?
其它指令都會用到ALU計算,所以會進行寫入,這我理解
但是jump呢? 完全沒有用到ALU呢!!
是因為以ALUop,在書本中的設計,的確jump得在ALUOP 00 和ALUOP 01選一個
隨便執行嗎?
順便問jump的control signal。
[3] {p356}
題目: http://img835.imageshack.us/i/88908672.jpg/
5.29的PCWrite解答: http://img24.imageshack.us/i/62404699.jpg/
文中寫只有jump不會正常執行,但是multicycle中的state 0(cycle 1)全部的
指令都要執行PC=PC+4不是? 如果巨觀來看,而不是只焦點在一行指令的話,
是不是所有的指令都會受到影響?
[4]
有人能告訴我為何MemRead及MemWrite要分成兩個嗎?
由習題中,我們可以知道
http://img251.imageshack.us/i/44716509.jpg/
http://img525.imageshack.us/i/31567301.jpg/
MemRead使其總是為1,對其它指令也不會有影響(就像Regiter file總是可以讀取,
而不用多出一個RegRead控制線)
[5]
http://img828.imageshack.us/i/33477447.jpg/
各位可以看到Pipelined Processor的RegDst位在EXE stage,這讓我很不解,
為何RegDst不直接在ID stage就好了?這樣還可以節省ID/EXE pipelined register的用量
[6]
http://img227.imageshack.us/i/46052837.jpg/
答案是 2 5對
但是我有的疑問是3
假設A組有10000行指令沒有lw,sw,所以所有的指令都可在4cycle內執行
B組當然就是有lw,sw,所以必須要5cycle
那A組需要 10000+3=10003個cycle
B組需要 10000+4=10004個cycle
只差ㄧ個cycle,但的確他用了比較少一點的cycle(雖然只有少1)
且文句中,也說了這種方式沒什麼效益
那這到底算對還錯?
另外徵求ㄧ起看原文書的同伴們 :p
可以晚上MSN、skype討論,如果是彰化的夥伴更好囉XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.187.85