目录
无处不在的 Cache
限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型。越往塔顶,存取效率越高、但成本也越高,所以容量也就越小。得益于程序访问的局部性原理,这种节省成本的做法也能取得不俗的运行效率。从存储器的层次结构以及计算机对数据的处理方式来看,上层一般作为下层的 Cache 层来使用(广义上的 Cache)。
比如寄存器缓存 CPU Cache 的数据,CPU Cache L1~L3 层视具体实现彼此缓存或直接缓存内存的数据,而内存往往缓存来自本地磁盘的数据。本文主要讨论磁盘 IO 操作,故只聚焦于 Local Disk 的访问特性和其与 DRAM 之间的数据交互。
Cache 和 Buffer 的区别在哪里?
Cache 和 Buffer 是两个不同的概念,简单的说,Cache 是加速 “读”,而 Buffer 是缓冲 “写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。在很多情况下,这两个名词并没有严格区分,常常把读写混合类型称为 buffer/ cache。