3.5 高速缓冲存储器
3.5.1 程序访问的局部性原理
3.5.2 Cache 的基本工作原理

CPU 与 Cache 之间的数据交换以字为单位。
Cache 与主存之间的数据交换以 Cache 块为单位。
CPU 与主存之间的数据交换以字为单位。
3.5.3 Cache 和主存的映射方式
如何解决 Cache 与主存的数据块对应关系?
地址映射是指把主存地址空间映射到 Cache 地址空间,即把存放在主存中的信息按照某种规则装入 Cache。
Cache 中为什么要有标记?
由于 Cache 行数比主存少得很多,因此主存中只有一部分块的信息可放在 Cache 中,因此在 Cache 中要为每个块加一个标记,指明它时主存中哪一块的副本。给标记的内容相当于主存中块的编号。为了说明 Cache 中的信息是否有效,每个 Cache 行需要有一个有效位。
1.直接映射
主存中每一块只能装入 Cache 中唯一位置。


2.全相联映射
主存中的每一块可以装入 Cache 中的任何一个位置。

3.组相联映射
组间直接映射,组内全相连映射。

3.5.4 Cache 中主存块的替换算法
Cache 很小,主存很大,如果 Cache 满了怎么办?
全相联映射:Cache 完全满了才需要替换算法。
直接映射:直接替换。
组相联映射:组内满了才替换算法。
(1)随机算法:随机替换。
(2)先进先出:从前往后。
(3)最近最少使用(LRU):从后往前。
(4)最不经常使用:
3.5.5 Cache 写策略
CPU 修改了 Cache,如何保持 Cache 与主存内容一致?
写命中时(要被修改的单元在 Cache 中):
(1)全写法
开家长会,对儿子和爸爸一起说一遍。所以没有修改位。因为儿子就不需要再跟爸爸说了。

写缓冲解决速度不匹配的问题。
全写法:CPU 将信息写入 Cache 和内存。
(2) 回写法
只写入 Cache,等块被换出时才写回主存。设置修改位(脏位),修改位为 1 时,替换后要写回主存。
CPU 写入 Cache,Cache 换出且修改位为 1 时写回内存。
写不命中:
(1)写分配法
加载主存中的块到 Cache 中,然后更新这个块。
主存写入 Cache。
(2)非写分配法
CPU 只写入主存。
写分配法与回写法搭配,非写分配法与全写法搭配。
若计算机主存地址为 32 位,按字节编址,Cache 数据区大小为 32KB,主存块大小为 32B,采用直接映射方式和回写策略,则 Cache 行的位数至少是?
Cache 数据区大小为 32KB,主存块的大小为 32B,那么 Cache 中共有 1K 个 Cache 行,物理地址中偏移量部分的长度为 5bit,