作者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/cn.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