跳转至

缓存模块

1. 概述

本项目包含两个缓存模块:指令缓存 (I-Cache) 和数据缓存 (D-Cache)。

2. I-Cache (指令缓存)

2.1 规格

参数
容量 16KB
关联度 2-way
行大小 32B (8 words)
组数 256
替换策略 LRU
写策略 只读

2.2 接口

信号 方向 描述
clk input 时钟
rst_n input 复位
cpu_addr input CPU 地址
cpu_rdata output 读回数据
cpu_valid input 访问有效
cpu_ready output 就绪
axi_arvalid output AXI 读地址有效
axi_arready input AXI 读地址就绪
axi_rvalid input AXI 读数据有效
axi_rdata input AXI 读数据

3. D-Cache (数据缓存)

3.1 规格

参数
容量 16KB
关联度 2-way
行大小 32B (8 words)
组数 256
替换策略 LRU
写策略 Write-Back
写分配

3.2 写策略

  • 写命中: 更新缓存行,标记脏位
  • 写未命中: 分配缓存行,从下级存储加载,然后更新

4. 缓存行结构

| Tag (20 bits) | Index (8 bits) | Offset (5 bits) |

缓存行格式

| Valid (1bit) | Dirty (1bit) | Tag (20bits) | Data (256bits) |

5. 实现文件

文件 描述
icache.v 指令缓存顶层
icache_ctrl.v 指令缓存控制
icache_ram.v 指令缓存 SRAM
dcache.v 数据缓存顶层
dcache_ctrl.v 数据缓存控制
dcache_ram.v 数据缓存 SRAM
lru.v LRU 替换逻辑