在阅读了二进制文件对缓存冲突的影响之后,我花了一个下午的时间阅读处理器缓存。现在我希望将这些新知识应用到我的多线程程序的内存分配器中。但是,我还没有完全理解它。
我的印象是处理器喜欢2 的幂,所以我的分配器轮次请求大小到下一个 2 的幂,然后将页面切成这个大小的倍数并分发出去。当页面已满时,它只是映射一个新页面并以相同的方式对其进行切片。这导致页面中非常相似且可预测的偏移量。
我应该在多大程度上调整我的分配器以避免这个问题?例如,我应该尝试稍微随机化地址,还是我一开始就因为使用 2 的幂而被搞砸了?
谢谢!