Write Through写直写和 Write Back写回是 Cache 的写策略Write Policy。它们解决的核心问题是当 CPU 修改了 Cache 中的数据时如何保证 Cache 与主存Main Memory之间的数据一致性这两种策略在性能、硬件复杂度和数据安全性上有着截然不同的表现1. Write Through (WT写直写)* 工作机制CPU 每次向 Cache 写入数据时同时将该数据写入主存。即 Cache 和主存始终保持完全一致。* 优点* 数据一致性极高主存中永远保留着最新的数据。即使系统突然断电数据也不会丢失。* 硬件实现简单不需要额外的状态位来追踪数据是否被修改过。* 缺点* 严重浪费主存带宽CPU 的速度远快于主存如果每次写操作都要等主存写完CPU 会被严重拖慢。* 写延迟高每次写操作都要经历主存的写入时间。* 适用场景* 对数据安全性要求极高的系统如金融交易、航空航天。* 多核系统中当多个核心共享主存且没有复杂的硬件缓存一致性协议Cache Coherence支持时。* 通常搭配 Non-Write Allocate非写分配 策略使用。2. Write Back (WB写回)* 工作机制CPU 写入数据时只修改 Cache不写主存。只有当这个被修改的 Cache 行Dirty Line脏行因为空间不足被替换Evict出去时才会把数据写回主存。* 硬件支持为了实现这种机制Cache 的每个数据行必须增加一个额外的状态位——脏位Dirty Bit。只有当 Dirty Bit 为 1 时替换该数据行才需要写回主存如果为 0说明没被修改过直接丢弃即可。* 优点* 极高的写入性能CPU 的写操作只需等待 Cache 完成无需等待慢速的主存。* 节省主存带宽多次对同一 Cache 行的修改最终只在替换时发生一次主存写操作。* 缺点* 数据丢失风险如果在脏数据写回主存之前系统发生断电或崩溃这部分数据将永久丢失。* 硬件复杂度高需要维护 Dirty Bit并且在替换时增加了额外的写回逻辑。* 适用场景* 现代高性能处理器如 x86、ARM 的 L1/L2 Cache 几乎全部采用 WB。* 通常搭配 Write Allocate写分配 策略使用。 核心对比总结特性 Write Through (写直写) Write Back (写回)写入目标 Cache 主存同时写 仅 Cache替换时才写主存写入速度 慢受限于主存速度 快仅受限于 Cache 速度主存带宽消耗 极高每次写都占用 低仅在替换时占用硬件复杂度 低 高需要 Dirty Bit 状态位断电安全性 高主存始终最新 低存在数据丢失风险工程实践中的演进在现代计算机中为了兼顾两者的优点通常会采用多级 Cache 混合策略。例如* L1 Cache采用 Write Back以追求极致的单核执行性能。* L2/L3 Cache采用 Write Back继续利用空间局部性减少主存访问。* 主存控制器/特定外设区域对于 DMA 传输或某些对一致性要求苛刻的内存映射 I/OMMIO区域硬件会强制将其配置为 Write Through以确保外设能立刻读到 CPU 写入的最新数据。Cache 这一块基本都过完了要不要接着聊聊虚拟内存和 TLB和前面这些是紧密关联的。