Re: [理工] [计系] 101 台大电机丙

楼主: galapous (墨)   2015-01-18 16:04:21
※ 引述《kather (Kather)》之铭言:
: ※ 引述《winnie48 (winnie)》之铭言:
: : 先附上题目连结:
: : http://exam.lib.ntu.edu.tw/sites/default/files/exam/graduate/101/101404.pdf
: : 想要问第7题和第18题(答案分别是AD及CE)
: 第7
: 首先没有stall时CPI是1
: 题目说系统执行指令是假定j跟beq都不会更改原有流程
: 直接把剩下的指令都拿进pipeline跑
: => 如果流程有变(jump换了位置 beq成立换了位置)
: => 原本吃进来的指令都是错的
: => 系统就要stall 把错误的指令清出pipeline
: 先了解一下清除这些指令的所需花费
: j =>一定要清除 j是在第二个时脉就跳走了
: =>pipeline的IF阶段是个错误的指令
: =>stall一个
: beq =>第三阶段跳
: =>stall两个
: 这台机器上的程式有
: 5%jump 20%branch,其中的60%会跳
: 5%的指令 (j)会stall 1个cycle=>多 5%的cycle在stall上
: 12%的指令(br)会stall 2个cycle=>多24%的cycle在stall上
: 总cycle129%
: 又指令数不变,CPI => 129%
: 原本的执行时间就是(Ins指令数先不管它 反正执行的都一样多)
: CPI * Ins * CycleTime
: 129% * ins * 10ns
: 看看后来
: 把第一个阶段改成两阶段,stall多一个cycle了
: j的stall变成2个cycle=>多10% cycle
: b的stall变成3个cycle=>多36% cycle
: 总cycle:146%
: 后来的执行时间
: CPI * Ins * CycleTime
: 146% * Ins * 8ns
: 就是1290%ins vs 1168%ins(时间)(ins是指令数)
: 速度差异是1.1倍,后来的较快
: 第8
: TLB找到了=>知道他在mem中的哪个位置,直接去那个位置找
: =>1次TLB,1次mem
: TLB找不到=>先去查表,表几层就查几次
: =>例如one-level:
: =>一次查TLB 一次查表(mem) 最后一次知道在哪了去拿(mem)
: =>1次TLB,2次mem
: 存取的花费=>TLB:50ns , Mem:300ns
: (A)90%hit , one-level
: 90%*(50+300) +
: 10%*(50+300+300)
: = 380
: 题目说390,错
: (B)99%hit , one-level
: 99%*(50+300) +
: 1% *(50+300+300)
: = 353
: 题目说356,错
: (C)90%hit , two-level
: 90%*(50+300) +
: 10%*(50+300+300+300)
: =410 对
: (D)一样的算式...
: 356
: (E)99%hit , three-level
: 359
: : 遇到这种计算都不太会算(但是好像蛮常考...)
: : 拜托能给我详细的解法,谢谢大家!!
刚写完这年,
想问一下这串讨论到的第18题,
在计算tlb miss时间时为何要把tlb存取时间跟查表时间相加呢?
印象中计组里好像是说tlb跟查表是同时进行不是吗?
这样查表时间跟tlb查询时间应该是重叠的?
楼主: galapous (墨)   2015-01-18 16:29:00
还有想问c-scan跟c-look回程时间大家都有算吗?感谢
作者: maque (Roadside)   2015-01-18 17:42:00
自己是都有算进去,因为想到look是电梯算法,如果题目有说回程是快速定位话,才觉得不用算
楼主: galapous (墨)   2015-01-18 21:26:00
3Q

Links booklink

Contact Us: admin [ a t ] ucptt.com