作者foogty (夫葛踢)
看板Grad-ProbAsk
標題[理工] 計組一題
時間Wed Sep 22 21:15:18 2021
https://i.imgur.com/GJ4lk8h.jpg
解答上是寫(1)(2)(4)
想請問為什麼(3)不用存下來呢?
感謝
----
Sent from
BePTT on my Samsung SM-A205GN
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.136.115 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1632316520.A.B37.html
1F:推 jacksoncsie: 非當下吧 整條 pipeline 每個 register 在不同時間存 09/22 21:22
2F:→ jacksoncsie: 的值 都不同 context switch 只管儲存當前狀態 09/22 21:22
3F:→ jacksoncsie: 所以 c 沒有 以上我個人想法 09/22 21:23
4F:推 kkk99923: 因為是以指令為單位的吧 如果以pipeline的stage為單位 09/22 22:13
5F:→ kkk99923: 各個架構的stage數也不一樣 09/22 22:13
6F:→ kkk99923: 我是這樣理解的 09/22 22:13
7F:→ foogty: 我還是不太理解,如果說是以指令為單位的話,那麼在復原 09/22 22:32
8F:→ foogty: 時要從那個指令開始往下做呢? 這時候的PC因為pipeline的 09/22 22:32
9F:→ foogty: 關係應該存的不是正確的吧? 09/22 22:32
10F:→ foogty: 像是某些指令還卡在pipeline中還沒執行完,但是PC已經往 09/22 22:35
11F:→ foogty: 下抓其他指令了 09/22 22:35
12F:推 jacksoncsie: 比如說有個register有被多個stage用到 這樣的話 09/22 23:10
13F:→ jacksoncsie: pipeline 儲存的方式不就會發生 race condition ? 09/22 23:11
14F:→ jacksoncsie: 所以我覺得 c 沒有 其他有事因為在同個 stage 吧 09/22 23:12
15F:→ foogty: 咦 可是pipeline reg不是像ID/IF這種reg嗎?裡面存的應該 09/22 23:27
16F:→ foogty: 是指令的格式(opcode, rs rt編號...等等)和一些control 09/22 23:27
17F:→ foogty: signal吧?還是我有理解錯誤的地方呢 09/22 23:27
19F:→ jacksoncsie: 原文書寫的 09/22 23:41
20F:→ jacksoncsie: 關於 context switch 的部分 09/22 23:42
21F:推 BusterButter: pipeline reg存的是上個stage做完的結果,並不是最 09/22 23:53
22F:→ BusterButter: 後instruction的結果。因為存到memory要花很多很多 09/22 23:53
23F:→ BusterButter: 個cycle, context switch時與其存到memory, 不如直 09/22 23:53
24F:→ BusterButter: 接flush掉 09/22 23:53
25F:→ BusterButter: switch back時 ,再從之前被flush掉的第一個instruc 09/22 23:55
26F:→ BusterButter: tion開始做 (general reg存的是做完instruction的 09/22 23:55
27F:→ BusterButter: 結果,所以存回memory) 09/22 23:55
28F:→ foogty: 我了解了!!感謝樓上的各位這麼晚還在回覆我的問題 09/23 00:07