只有当 CPU 在 Cache
中找不到数据的时候,才会去访问内存,并将读取到的数据写入 Cache 之中。那么,Cache 如何
根据内存地址定位到数据呢?根据内存地址的低位,计算在 Cache 中的索引;判断有效位,确认
Cache 中的数据是有效的;对比内存地址的高位,和 Cache 中的组标记,确认 Cache 中的数据就
是我们要访问的内存数据,从 Cache Line
中读取到对应的数据块(Data Block);根据内存地址的Offset位,从Data Block中,读取希望读取
到的字如果在2、3这两个步骤中,CPU 发现,Cache 中的数据并不是要访问的内存地址的数据,那
CPU 就会访问内存,并把对应的 Block Data 更新到 Cache Line 中,同时更新对应的有效位和组
标记的数据。
总结一下,一个内存的访问地址,最终包括高位代表的组标记、低位代表的索引,以及在对应的
Data Block中定位对应字的位置偏移量。Cpu Cache 写入数据当 Cpu 要写入数据时,到底是写
Cache 还是写主存呢,如何保证一致性呢?这里介绍两种写入策略。1. 写直达(Write-Through)写
入前,我们会先去判断数据是否已经在 Cache 里面了。如果数据已经在 Cache 里面了,我们先把
数据写入更新到 Cache 里面,再写入到主内存里面;如果数据不在 Cache 里,我们就只更新主内
存。
电脑常见英文词汇
online 线上 在线
opaque 不透明的
operand 运算元 操作数
operating system (OS) 作业系统 操作系统
operation 操作、操作行为 操作
operator 运算子 操作符、运算符
option 选项,可选方案 选项
ordinary 常规的 常规的
overflow 上限溢位(相对於 underflow) 溢出(underflow:下溢)
overhead 额外负担、额外开销 额外开销
overload 多载化、多载化、重载 重载
overloaded function 多载化函式 重载的函数