综合项目:超标量处理器
项目目标
设计一个双发射超标量 RISC-V 处理器!
项目要求
必选特性
- 双发射
- 每周期取 2 条指令
- 每周期最多发射 2 条指令
- 处理结构冒险
- 分支预测
- GShare 预测器
- BTB(256 项)
- 准确率 > 85%
- Cache
- I-Cache:16KB,2 路
- D-Cache:16KB,2 路
- 命中率 > 90%
- 性能目标
- IPC > 1.4
- CoreMark > 3.0/MHz
可选特性
- 乱序执行(Tomasulo)
- 寄存器重命名
- 三发射
设计要点
1. 双发射逻辑
// 同时取 2 条指令
wire [31:0] inst0 = icache_data[63:32];
wire [31:0] inst1 = icache_data[31:0];
// 检查依赖
wire dep = (inst1_rs1 == inst0_rd) ||
(inst1_rs2 == inst0_rd);
// 发射决策
wire issue_both = !dep && !struct_hazard;
思考:什么情况下不能双发射?
2. 结构冒险处理
// 寄存器堆:4 读 2 写
reg [31:0] regs [31:0];
wire [31:0] rs1_data0, rs2_data0;
wire [31:0] rs1_data1, rs2_data1;
3. 性能监控
reg [31:0] dual_issue_count;
reg [31:0] single_issue_count;
always @(posedge clk) begin
if (issue_both) dual_issue_count <= dual_issue_count + 1;
else single_issue_count <= single_issue_count + 1;
end
测试基准
CoreMark
make coremark
./coremark.elf
Dhrystone
make dhrystone
./dhrystone.elf
评分标准
- IPC > 1.4:及格
- IPC > 1.6:良好
- IPC > 1.8:优秀
恭喜你完成 B 级课程!
下一步
继续挑战 A 级课程,探索多核和 SoC 设计!