jjzjj

numReads

全部标签

c++ - 缓存未命中压力测试 : stunning results. 。有什么解释吗?

为了获得现代计算机相对于缓存未命中的实际性能(内存中的数据是如何“传播”的),我进行了一个简单的测试,我分配了500MB的RAM,然后执行恒定数量的读取,然后我使用增加的字节偏移量执行该测试。最后,当我到达1000MB缓冲区的末尾时,我将其包裹起来。我对结果感到非常惊讶。看起来在32字节左右存在成本障碍,另一个在32KB左右。我想这与L1/L2/L3缓存负载或虚拟内存页面大小有关?最让我震惊的是,似乎只有大约16个完全不同的内存位置被缓存。太低了!!!任何解释(操作系统、硬件)?这是在3台不同计算机上的结果,从最快的一台到最便宜的一台,然后是我的简单测试代码(仅使用标准库)。16GBR

c++ - 缓存未命中压力测试 : stunning results. 。有什么解释吗?

为了获得现代计算机相对于缓存未命中的实际性能(内存中的数据是如何“传播”的),我进行了一个简单的测试,我分配了500MB的RAM,然后执行恒定数量的读取,然后我使用增加的字节偏移量执行该测试。最后,当我到达1000MB缓冲区的末尾时,我将其包裹起来。我对结果感到非常惊讶。看起来在32字节左右存在成本障碍,另一个在32KB左右。我想这与L1/L2/L3缓存负载或虚拟内存页面大小有关?最让我震惊的是,似乎只有大约16个完全不同的内存位置被缓存。太低了!!!任何解释(操作系统、硬件)?这是在3台不同计算机上的结果,从最快的一台到最便宜的一台,然后是我的简单测试代码(仅使用标准库)。16GBR