找出会互相冲突的地址
在 0 到 31 里,找出所有和地址 0 落在同一行的地址(不含 0 自己)。
阅读更多 →
自己写:二路组相联
把缓存改成每组两行,比一比同一串访问下的命中次数。
阅读更多 →
自己写:算块号和行号
给一串地址,算出各自的「块号-行号」。
阅读更多 →
两块抢同一行会怎样
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 def sim(addrs, ways=1): sets = LINES // ways tags =
阅读更多 →
这几个地址各落在哪一行
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 for a in (0, 4, 16, 20): print(str(a // BLK) + "-&qu
阅读更多 →
组相联好在哪
把缓存改成「二路组相联」(每组两行),好处是【0】。
阅读更多 →
行号是怎么算出来的
直接映射下,一块数据该放第几行,是【0】算出来的。
阅读更多 →
一块数据能放在哪一行
直接映射的缓存里,一块数据【0】。
阅读更多 →
算命中率
用上一题的计数器,算出两种数据规模下的命中率(保留两位小数)。
阅读更多 →
自己写:数命中和未命中
补全一个最简单的缓存:只有 4 行、每块 4 个元素、直接映射。数出顺序访问 32 个元素时的命中与未命中。
阅读更多 →