两轮访问,第二轮还中不中
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 def sim(addrs, ways=1): sets = LINES // ways tags = [[None] * ways for _
同样装不下,换个顺序试试
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 def sim(addrs, ways=1): sets = LINES // ways tags = [[None] * ways for _
自己写:把未命中分类
数出三种未命中各有多少:第一次见到的算冷,其余算非冷。
用全相联把冲突分出来
同一串访问,分别用直接映射和全相联跑一次。差出来的那部分就是冲突未命中。
⚠️ 只看总数看不出该修哪一种
两段程序未命中次数完全一样,但一段全是冷未命中、一段大半是冲突。把两段的「总数 / 冷 / 非冷」都打出来。
为什么不用挂钟时间当答案
量缓存的影响时,用「未命中次数」而不是「跑了多少毫秒」,因为【0】。
数据量多大时开始变慢
数据量慢慢变大,未命中次数【0】。
量之前要先做什么
要量准缓存的影响,测量之前必须【0】。
数据量翻倍,未命中怎么涨
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 def sim(addrs, ways=1): sets = LINES // ways tags = [[None] * ways for _
自己写:扫描数据量
对 8、16、24、32 四种数据量各量一次未命中次数。