操作系统

操作系统相关书籍:《Linux是怎样工作的 - [日]武内觉》

存储层次

高速缓存

存储器的层次结构
从内存直接和寄存器之间做数据拷贝很慢,高速缓存的存在,正是为了抹平寄存器与内存之间的性能差距。

读取数据

从内存读取数据时,数据显呗送往高速缓存,在被送往寄存器,读取的数据大小取决于缓存块大小(cache line size),该值由各个CPU规定。
假设缓存块的大小为 10 字节,高速缓存的容量为 50 字节,并且存在两个长度为 10 字节的寄存器(R0 与 R1)。在这样的运行环境下,把内存地址 300 上的数据读取到 R0 时的情形如图 6-2 所示。此后,当 CPU 需要再次读取地址 300 上的数据时,比如需要再次把同样的数据读取到 R1 时,将不用从内存读取数据,只需读取已经存在于高速缓存上的数据即可
将内存地址300上的数据读取到R0

写入数据

改写R0的值
当需要将寄存器上的数据重新写回到地址 300 上时,首先会把改写后的数据写入高速缓存,如图 6-5 所示。此时依然以缓存块大小为单位写入数据。然后,为这些缓存块添加一个标记,以表明这部分从内存读取的数据被改写了。通常我们会称这些被标记的缓存块“脏了”。这些被标记的数据会在写入高速缓存后的某个指定时间点,通过后台处理写入内存。随之,这些缓存块就不再脏了 [3],如图 6-6 所示。也就是说,只需要访问速度更快的高速缓存,即可完成图 6-5 中的写入操作

作者

jszero

发布于

2025-04-05

更新于

2025-05-06

许可协议

评论