作者fmtshk (fmtshk)
看板Grad-ProbAsk
標題[理工] 計組_p.386
時間Mon Sep 2 01:40:25 2019
https://i.imgur.com/CbZfsJI.jpg
答案是False
想請問 edge-triggered 是什麼意思,以及這題錯在哪?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.96.199 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1567359627.A.AC8.html
1F:推 FXW11314: edge-triggered的意思是在信號改變的瞬間觸發動作 09/02 02:09
2F:→ FXW11314: mips是在0→1的時候執行write,1→0的時候執行read 09/02 02:09
3F:→ FXW11314: 舉個例子,考慮這句程式碼: 09/02 02:14
4F:→ FXW11314: addi $1 $1 123 09/02 02:14
5F:→ FXW11314: 則CU會在某個clock從1→0的時候把$1的內容讀出來丟給AL 09/02 02:14
6F:→ FXW11314: U,然後在下一個cycle從0→1的時候寫入$1 09/02 02:14
7F:→ FXW11314: 因此從頭到尾只需要一個register 09/02 02:14
8F:推 FXW11314: *只需要一個register file 09/02 04:12
9F:→ fmtshk: 好像有想起上課講過@@ 09/02 11:01
11F:→ fmtshk: ↑這樣腦補正確嗎? 09/02 11:02
12F:推 ok8752665: 順便問一下 那structural hazard也可以這樣解嗎 09/02 11:08
13F:→ ok8752665: 0→1 做Load/Store 1→0讀指令? 09/02 11:08
14F:推 FXW11314: 圖應該沒錯,簡單來說你可以把register file想像成一個 09/02 15:07
15F:→ FXW11314: 有入口跟出口兩扇門的房間,這兩扇門不可以同時打開不 09/02 15:07
16F:→ FXW11314: 然資料會錯誤 09/02 15:07
17F:→ FXW11314: 如果發生需要打開兩扇門的情況就要用一些方式解決,MIP 09/02 15:07
18F:→ FXW11314: S的解決方法是edge triggered,就是一半的時間開放入口 09/02 15:07
19F:→ FXW11314: 一半的時間開放出口 09/02 15:07
20F:→ FXW11314: 有些架構則是用shadow register之類的方式 09/02 15:07
21F:推 FXW11314: 然後structural hazard應該是pipeline類型的問題,張凡 09/02 15:58
22F:→ FXW11314: 上課講得很模糊,實際上可以再分成兩種,第一種是像我 09/02 15:58
23F:→ FXW11314: 剛剛的比喻,假設register file只有一個門,但是在pipe 09/02 15:58
24F:→ FXW11314: line的情況下有可能發生兩個人同時要進來的情況,這是 09/02 15:58
25F:→ FXW11314: 第一種structural hazard也就是張凡上課講的,多開幾個 09/02 15:58
26F:→ FXW11314: 門就好了 09/02 15:58
27F:→ FXW11314: edge triggered反而解決不了問題 09/02 15:58
28F:→ FXW11314: 第二種就是你講的狀況,但是pipeline裡面對register的 09/02 15:58
29F:→ FXW11314: 存取都需要一整個clock cycle所以也沒辦法分成兩半來用 09/02 15:58
30F:→ FXW11314: ,我想應該是這樣 09/02 15:58
31F:推 ok8752665: 所以我問的這種關於memory 的 structural hazard不能靠 09/02 16:10
32F:→ ok8752665: 增加clock cycle time 讓它可以在一個clock裡面做完嗎 09/02 16:10
33F:推 mistel: 你有考慮到control unit要怎麼設memWrite跟memRead的訊號 09/02 16:53
34F:→ mistel: 嗎? 09/02 16:53
35F:推 mistel: 像lw同時要寫跟讀,所以你在同一個clock下,MemREAD跟Mem 09/02 16:56
36F:→ mistel: WRITE同時打開的情況下,如果再做IF會不會把奇怪的資料弄 09/02 16:56
37F:→ mistel: 進memory? 我覺得應該會有問題吧 09/02 16:56
38F:推 ok8752665: 好吧 09/02 19:34
39F:推 antagonism: Reg file 可設計成clock的前半週期做寫 後半週期做讀 09/02 23:33
40F:→ antagonism: 是因為 進出此零件的資料很小 而structure harzard的 09/02 23:33
41F:→ antagonism: mem若也如此設計的話 例如sw在ME階段 其他指令在IF階 09/02 23:33
42F:→ antagonism: 段 會造成一個clock cycle過長 因為進出mem的資料可 09/02 23:33
43F:→ antagonism: 到Gb等級 大大降低pipeline 效能 這樣就失去管線化之 09/02 23:33
44F:→ antagonism: 目的 09/02 23:33
45F:推 antagonism: 若是lw在ME 其他指令在IF 他們本來就在搶mem來access 09/02 23:37
46F:→ antagonism: 因此本來就無法solve by延長clock cycle 09/02 23:37
47F:→ ok8752665: 瞭解 謝謝 09/03 07:48