“对缓存块,写策略至少有两个独立选择。 Write through(WT) 在写命中时更新缓存并把这次写送到下层; write back(WB) 先只改缓存,把该块标dirty,逐出或显式fl…”
形式陈述
缓存保存较低层内存中若干连续块的副本。先定义直接映射模型:字节地址宽度为
地址按定宽整数的无符号规则解释为
块号q只能放在index指定的唯一缓存行。该行valid为真且保存的tag相等,才命中;否则缺失。缺失后填入的是从
直觉
index是查哪一行的路标,tag是核对该行目前属于谁的证件,offset是到行内取哪个字节的位置。多个内存块可以有同一个index,所以“找到行”并不等于“找到了数据”。
valid区分“这一行已经有合法副本”和“元数据恰好长得像目标”。冷启动时tag的旧比特值没有意义;不检查valid会把未初始化数据误判为命中。
例子与边界
一次32位地址拆分
取
地址
容量空着仍会反复缺失
冷启动后依次读取
把第二个独立对象的基址改为
块内偏移不选择寄存器字节序
地址
推论与应用
组相联保留按index找组的规则,让每组有多个候选行。写策略另决定何时把修改传播到下层,二者是不同设计轴。
外存模型按块传输计费,却未施加这里的直接映射约束;理想缓存又允许全相联和最优替换。不能拿理想缓存中可同时驻留的两个块,直接断言它们在此映射下不会冲突。
参考资料
- UC Berkeley CS61C,Direct Mapped Cache,课程笔记,访问于 2026-10-08,映射、有效位与tag。
- David A. Patterson and John L. Hennessy, Computer Organization and Design RISC-V Edition, 2nd ed., 2021,Ch. 5。本文地址配置与布局反例均独立给定。