推 FXW11314: edge-triggered的意思是在信號改變的瞬間觸發動作 09/02 02:09
→ FXW11314: mips是在0→1的時候執行write,1→0的時候執行read 09/02 02:09
→ FXW11314: 舉個例子,考慮這句程式碼: 09/02 02:14
→ FXW11314: addi $1 $1 123 09/02 02:14
→ FXW11314: 則CU會在某個clock從1→0的時候把$1的內容讀出來丟給AL 09/02 02:14
→ FXW11314: U,然後在下一個cycle從0→1的時候寫入$1 09/02 02:14
→ FXW11314: 因此從頭到尾只需要一個register 09/02 02:14
推 FXW11314: *只需要一個register file 09/02 04:12
→ fmtshk: 好像有想起上課講過@@ 09/02 11:01
→ fmtshk: ↑這樣腦補正確嗎? 09/02 11:02
推 ok8752665: 順便問一下 那structural hazard也可以這樣解嗎 09/02 11:08
→ ok8752665: 0→1 做Load/Store 1→0讀指令? 09/02 11:08
推 FXW11314: 圖應該沒錯,簡單來說你可以把register file想像成一個 09/02 15:07
→ FXW11314: 有入口跟出口兩扇門的房間,這兩扇門不可以同時打開不 09/02 15:07
→ FXW11314: 然資料會錯誤 09/02 15:07
→ FXW11314: 如果發生需要打開兩扇門的情況就要用一些方式解決,MIP 09/02 15:07
→ FXW11314: S的解決方法是edge triggered,就是一半的時間開放入口 09/02 15:07
→ FXW11314: 一半的時間開放出口 09/02 15:07
→ FXW11314: 有些架構則是用shadow register之類的方式 09/02 15:07
推 FXW11314: 然後structural hazard應該是pipeline類型的問題,張凡 09/02 15:58
→ FXW11314: 上課講得很模糊,實際上可以再分成兩種,第一種是像我 09/02 15:58
→ FXW11314: 剛剛的比喻,假設register file只有一個門,但是在pipe 09/02 15:58
→ FXW11314: line的情況下有可能發生兩個人同時要進來的情況,這是 09/02 15:58
→ FXW11314: 第一種structural hazard也就是張凡上課講的,多開幾個 09/02 15:58
→ FXW11314: 門就好了 09/02 15:58
→ FXW11314: edge triggered反而解決不了問題 09/02 15:58
→ FXW11314: 第二種就是你講的狀況,但是pipeline裡面對register的 09/02 15:58
→ FXW11314: 存取都需要一整個clock cycle所以也沒辦法分成兩半來用 09/02 15:58
→ FXW11314: ,我想應該是這樣 09/02 15:58
推 ok8752665: 所以我問的這種關於memory 的 structural hazard不能靠 09/02 16:10
→ ok8752665: 增加clock cycle time 讓它可以在一個clock裡面做完嗎 09/02 16:10
推 mistel: 你有考慮到control unit要怎麼設memWrite跟memRead的訊號 09/02 16:53
→ mistel: 嗎? 09/02 16:53
推 mistel: 像lw同時要寫跟讀,所以你在同一個clock下,MemREAD跟Mem 09/02 16:56
→ mistel: WRITE同時打開的情況下,如果再做IF會不會把奇怪的資料弄 09/02 16:56
→ mistel: 進memory? 我覺得應該會有問題吧 09/02 16:56
推 ok8752665: 好吧 09/02 19:34
推 antagonism: Reg file 可設計成clock的前半週期做寫 後半週期做讀 09/02 23:33
→ antagonism: 是因為 進出此零件的資料很小 而structure harzard的 09/02 23:33
→ antagonism: mem若也如此設計的話 例如sw在ME階段 其他指令在IF階 09/02 23:33
→ antagonism: 段 會造成一個clock cycle過長 因為進出mem的資料可 09/02 23:33
→ antagonism: 到Gb等級 大大降低pipeline 效能 這樣就失去管線化之 09/02 23:33
→ antagonism: 目的 09/02 23:33
推 antagonism: 若是lw在ME 其他指令在IF 他們本來就在搶mem來access 09/02 23:37
→ antagonism: 因此本來就無法solve by延長clock cycle 09/02 23:37
→ ok8752665: 瞭解 謝謝 09/03 07:48