用于写入的循环顺序缓存

Loop order cache for writing

所以我熟悉用于读取优化的循环交换,因为数组在内存中的布局方式。

我对缓存的工作原理有点陌生。我了解磁盘 I/O 技术,如预读和等待写入,但我不确定其他用于写入的缓存优化。

写入数组或向量时循环顺序是否重要?如果是这样,您能解释一下缓存机制为什么以及如何工作吗?

谢谢!

通常,缓存是内存中的顺序位置,用于在其他操作发生时临时保存值。您可以将它们视为一维数组。

缓存也可能是不同的结构。例如,磁盘驱动器缓存可能是一个 Trie,使用扇区作为索引。处理器可能有一个缓存数组,使用内存地址的散列作为索引。

一般来说,无论是增量访问、递减访问还是随机访问,从缓存中读取的性能都是一样的,只要访问的是同一个缓存行。某些处理器可能具有指向高速缓存值的指针,这些值在读取后递增或递减。

缓存的优化技巧是让您经常访问的数据适合缓存行。例如,如果您有一个二维数组,则每一行都应该是一个缓存行。行内的任何访问(例如行内的列)都是最佳的。但是,遍历行并保持列不变并不是最佳选择,因为处理器必须加载(或搜索)另一行并将其放入缓存中。

对于硬盘驱动器,缓存有两个用途:1) 包含经常访问的数据;和 2) 在将数据写入驱动器时缓冲来自处理器的数据。在情况 2) 中,处理者不必等待事务完成;它转储数据然后继续其他操作,同时驱动器将数据从其缓存传输到盘片。