【问题标题】:Does memory locality matter for writes?内存位置对写入重要吗?
【发布时间】:2023-03-03 09:42:01
【问题描述】:

如果我将值写入内存,而不是再次读取它们,如果内存位置不连续,是否会对性能产生任何影响? (即不在写缓存中)

处理器可以在有机会的时候在后台将它们写入内存,还是会导致缓存问题?

【问题讨论】:

    标签: caching memory processor


    【解决方案1】:

    CPU 中的大多数缓存都是回写式的,这意味着写入不会传播到内存层次结构的下一级,直到缓存空间发生争用,并且必须刷新某些内容。如果您进行单次随机写入,您不太可能看到任何性能影响,但如果您进行持续随机写入,您会发现其性能会明显低于顺序写入。

    进行随机写入可能需要分配高速缓存行,因为它可能是该内存段中唯一访问的内容。一旦你进行了足够多的写入,你就会用每行包含一个有效字的行填满数据缓存,并且必须刷新其中一行。由于内存的组织和访问方式,刷新不会比刷新整行快多少,这使得随机写入的速度与连续写入的 32 字节(典型行大小)大致相同。

    我建议您编写自己的程序来测试这一点。分配比上一级缓存大得多的内存,并为相同数量的随机和连续 32 位写入计时。我敢打赌,您会发现随机写入的速度比顺序写入快 1/8 到 1/4。

    对您而言,另一个因素是随机写入与不访问内存的其他计算的相对平衡。如果它们很少见,是的,它们会在后台被冲洗掉。只有当它们成为瓶颈时,您才会注意到性能影响。顺序写入也会出现同样的问题,但没有那么严重。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 1970-01-01
      相关资源
      最近更新 更多