[理工] 计组一题

楼主: foogty (夫葛踢)   2021-09-22 21:15:18
https://i.imgur.com/GJ4lk8h.jpg
解答上是写(1)(2)(4)
想请问为什么(3)不用存下来呢?
感谢
作者: jacksoncsie (资工肥宅)   2021-09-22 21:22:00
非当下吧 整条 pipeline 每个 register 在不同时间存的值 都不同 context switch 只管储存当前状态所以 c 没有 以上我个人想法
作者: kkk99923 (sakamama)   2021-09-22 22:13:00
因为是以指令为单位的吧 如果以pipeline的stage为单位各个架构的stage数也不一样我是这样理解的
楼主: foogty (夫葛踢)   2021-09-22 22:32:00
我还是不太理解,如果说是以指令为单位的话,那么在复原时要从那个指令开始往下做呢? 这时候的PC因为pipeline的关系应该存的不是正确的吧?像是某些指令还卡在pipeline中还没执行完,但是PC已经往下抓其他指令了
作者: jacksoncsie (资工肥宅)   2021-09-22 23:10:00
比如说有个register有被多个stage用到 这样的话pipeline 储存的方式不就会发生 race condition ?所以我觉得 c 没有 其他有事因为在同个 stage 吧
楼主: foogty (夫葛踢)   2021-09-22 23:27:00
咦 可是pipeline reg不是像ID/IF这种reg吗?里面存的应该是指令的格式(opcode, rs rt编号...等等)和一些controlsignal吧?还是我有理解错误的地方呢
作者: jacksoncsie (资工肥宅)   2021-09-22 23:41:00
https://i.imgur.com/YHg5Ewp.png原文书写的关于 context switch 的部分
作者: BusterButter (奶油巴斯特)   2021-09-22 23:53:00
pipeline reg存的是上个stage做完的结果,并不是最后instruction的结果。因为存到memory要花很多很多个cycle, context switch时与其存到memory, 不如直接flush掉switch back时 ,再从之前被flush掉的第一个instruction开始做 (general reg存的是做完instruction的结果,所以存回memory)
楼主: foogty (夫葛踢)   2021-09-23 00:07:00
我了解了!!感谢楼上的各位这么晚还在回复我的问题

Links booklink

Contact Us: admin [ a t ] ucptt.com