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