当我查看lmbench生成的内存延迟曲线时(例如,https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W51a7ffcf4dfd_4b40_9d82_446ebc23c550/page/Untangling%20memory%20access%20measurements%20-%20memory%20latency),我想知道数组大小如何影响其确切的分配位置。
我目前的猜测是,将在缓存中分配100KB的数组,而在主内存中分配80MB的数组。如果不是这样,即大小为100KB的数组也在主存储器中初始化,其延迟肯定等于主存储器延迟,则曲线中不应有延迟上升。
我只是想确定我的猜测是否正确或我对内存延迟的理解有问题。
答案 0 :(得分:0)
两个阵列都将分配在“主存储器”中 - 毕竟它们必须具有真实地址。差异只在于访问 - 因为你不太可能有80 MB的缓存,迭代更大的数组会导致一堆缓存未命中,而这些缓存在较小的数组中永远不会发生。