什么样的优化才算数
一次缓存优化算成功的判据是【0】。
优化前后的两个数
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 def sim(addrs, ways=1): sets = LINES // ways tags = [[None] * ways for _
自己写:一个命中率计量器
给一串访问,交出「命中 / 未命中 / 命中率」三样(命中率保留两位小数)。
用分块把数据装进去
把「扫两遍 32 个元素」改成「分两批、每批扫两遍」,量出改进前后的未命中次数。
把冲突也修掉
把两个互相冲突的地址错开,量出改进前后的未命中次数和倍数。
⚠️ 改了布局,结果不能变
把「错开地址」这个优化做完之后,验证两种布局读到的数据完全一样。
收官:出一份缓存优化报告
对同一段访问,交出四段报告:改前未命中 / 改后未命中 / 降了几倍 / 结果一致否。
想知道一段访问对 Cache 友不友好,怎么看
想判断一段内存访问对 Cache 友不友好,最靠谱的办法是【0】。 (判分只看你在受控容器里的真机产物,纯本机、纯 Python,没有 gcc。)
这串访问命中几次
真机:访问序列 1 2 1 3 1,容量足够大、之前访问过就算命中,一共命中几次? (判分只看你在受控容器里的真机产物,纯本机、纯 Python,没有 gcc。)
查:命中/缺失轨迹
场景:~/lab/cache.py 是只读工具,跑 ~/lab/access.txt 里的访问序列(LRU、容量 4)。 任务:跑 python3 ~/lab/cache.py --trace,读它报的 命中轨迹 = X(形如 M-M-H-