收官:出一份缓存优化报告
对同一段访问,交出四段报告:改前未命中 / 改后未命中 / 降了几倍 / 结果一致否。
阅读更多 →
⚠️ 改了布局,结果不能变
把「错开地址」这个优化做完之后,验证两种布局读到的数据完全一样。
阅读更多 →
把冲突也修掉
把两个互相冲突的地址错开,量出改进前后的未命中次数和倍数。
阅读更多 →
用分块把数据装进去
把「扫两遍 32 个元素」改成「分两批、每批扫两遍」,量出改进前后的未命中次数。
阅读更多 →
自己写:一个命中率计量器
给一串访问,交出「命中 / 未命中 / 命中率」三样(命中率保留两位小数)。
阅读更多 →
优化前后的两个数
运行下面这段程序,填写它打印出来的结果。 BLK = 4 LINES = 4 def sim(addrs, ways=1): sets = LINES // ways tags =
阅读更多 →
什么样的优化才算数
一次缓存优化算成功的判据是【0】。
阅读更多 →
优化命中率的第一步
要提高一段程序的命中率,第一步应该【0】。
阅读更多 →
⚠️ 看代码完全看不出来
两段代码逻辑完全一样(都是两个核各加五次),只有变量摆放的位置不同。把两段的「加了几次 / 搬了几趟」都打出来。
阅读更多 →
几个核一起抢会怎样
把核数从 2 个加到 4 个,都挤在同一块上。数出 2 核和 4 核各搬了多少趟。
阅读更多 →