Skip to content

乱序 RV32IM 处理器

单发射乱序 RV32IM 处理器核,包含 reorder buffer、四个 reservation station、bimodal 分支预测器,以及指令、数据分离的 4 路组相联 L1 cache。

CPU RTL RISC-V Cache Tomasulo
Contents

框图:fetch、decode、RAT、ROB、GPR、四个 reservation station 及其执行单元,以及 CDB

微架构

  • 前端。Fetch 每次访问取回一条指令,放进 16 项的 instruction queue。分支被预测为 taken 时,分支预测器重定向 fetch。
  • Rename 与 dispatch。32 项的 RAT 把每个架构寄存器映射到将要产生它的 ROB 项。操作数来自 register file、已完成的 ROB 项,或之后的 CDB 广播。
  • 执行。四个 reservation station(ALU、MDU、LSU、JMP),每个 4 项。每个 station 从队头按序 issue。乱序执行来自四个单元彼此独立运行。MDU 使用 DesignWare 的多周期(sequential)乘法器和除法器。
  • Commit。16 项的 reorder buffer 每周期 commit 一条指令。分支在 commit 时检查,预测错误时 flush 整个核。
  • 分支预测。64 个 2-bit 计数器和 16 项的 BTB,都在 commit 时更新。
  • 存储。指令和数据 cache 分离,各 2 KB:4 路、16 组、32 B cache line、write-back、tree-PLRU。16 项的 store buffer 按序写入 D-cache。Load 和 store 只有到达 ROB 队头时才访问 cache。

验证与工具

  • ROB 通过 RVFI 上报每条 commit 的指令,脚本把这份 commit log 与运行同一程序的 Spike 逐条比对。
  • Performance monitor 按指令类别打印 IPC,以及 cache 命中率、reservation station 等待周期和 flush 次数。
  • 随机化的单元 testbench 覆盖 instruction queue 和 cacheline adapter。
  • 一个小型 HTML 流水线查看器,用仿真 dump 回放 instruction queue、ROB 和 reservation station 的状态。

结果(2024 年 12 月)

指标数值
时钟100 MHz,slack 0.78 ns
面积172,397 µm²(核心约占 40%,两个 cache 各约 30%)
IPCCoreMark 0.53 · AES-SHA 0.47 · FFT 0.57

工作范围

课程提供了 testbench 基础设施、memory model、RVFI monitor 和 benchmark 程序。RTL、performance monitor、单元 testbench 和流水线查看器由团队完成。

Discussion

Loading comments…

Checking sign-in…