缓存操作与LRU算法详解
1. CPU事务与缓存操作
1.1 缓存写事务
- 写缺失情况 :当CPU进行写操作且发生缓存缺失时,缓存控制器会将CPU块内容(如由0xE0、0xE1、0xE2和0xE3组成的块)写入集合地址00处的最低有效缓存位置,并将标签内存内容更新为1000。同时,该块会被存储在写回缓冲区,脏位(dirty bit)设为1,因为该块仅存在于缓存中,主存中并无副本。有效位(valid bit)设为逻辑1,表示这是来自CPU的有效块,主存尚未更新。当该块被转移到主存后,脏位变为0,有效位仍为1。
- 写命中情况 :若写操作命中缓存,缓存控制器会将新的数据块(如0xF0、0xF1、0xF2和0xF3)写入缓存内存的最低有效块位置,替换旧块(如0xE0、0xE1、0xE2和0xE3),并将相同数据写入写回缓冲区。这种写回方案相较于直写方案具有明显的速度优势,因为无需将旧块从写回缓冲区转移到主存。
1.2 缓存读事务
当CPU进行读操作且发生缓存缺失时,位于主存地址11000000的数据块(如0xD0、0xD1、0xD2和0xD3)会被转移到集合地址00处的最高有效块位置,因为该位置的内存引用次数为零。该集合地址的标签内存内容更新为1100,有效位设为逻辑1,脏位设为逻辑0。
2. 最近最少使用(LRU)替换算法
2.1 LRU算法原理
之前提出的简单算法是用最少引用次数的数据块替换,以帮助理解缓存控制器在缓存缺失时的工作原理。而实际的缓存数据替换策略基于最近