这个策略很直观,但是问题也很明显,那就是这个策略很慢。无论数据是不是在 Cache 里面,我
们都需要把数据写到主内存里面。这个方式就有点儿像 Java 里 volatile 关键字,始终都要把数
据同步到主内存里面。2. 写回(Write-Back)如果要写入的数据,就在 CPU Cache 里面,那么就只
更新 CPU Cache 里面的数据。同时标记 CPU Cache 里的这个 Block 是脏(Dirty)的。就是这个时
候,CPU Cache 里的这个 Block 的数据,和主内存是不一致的。如果要写入的数据所对应的
Cache Block 里,放的是别的内存地址的数据,那么就要看一看,Cache Block 里的数据有没有被
标记成脏的。如果是脏的,要先把这个 Cache Block 里面的数据,写入到主内存里面。
然后,再把当前要写入的数据,写入到 Cache 里,同时把 Cache Block 标记成脏的。如果 Block
里面的数据没有被标记成脏的,那么我们直接把数据写入到 Cache 里面,然后再把 Cache Block
标记成脏的就好了。然而,无论是写回还是写直达,都没有解决多线程,或者是多个 CPU 核的缓
存一致性的问题。这也就是我们在写入修改缓存后,需要解决的第二个问题。要解决这个问题,我
们需要引入一个新的方法,叫作 MESI 协议。
电脑常见英文词汇
overloaded operator 多载化运算子 被重载的操作符
overloaded set 多载集合 重载集合
override 改写、覆写 重载、改写、重新定义
(在 derived class 中重新定义虚拟函式
package 套件 包
pair 对组
palette 调色盘、组件盘、工具箱
pane 窗格 窗格
(有时为嵌板之意,例 Java Content Pane)
parallel 平行 并行
parameter 叁数(函式叁数列上的变数) 叁数、形式叁数、形叁