本作品为2025龙芯杯个人赛参赛作品,获得了总决赛二等奖。整体架构为乱序四发射(ALU0,ALU1,MEM,MUL),常规流水线深度为10级。使用Chisel编写主要模块。
特性关键词:超标量,乱序执行(Tomasulo),分支预测(局部历史+BTB+RAS),背靠背唤醒,ICache,WriteBuffer
CPU在不产生时序为例的情况下,最高运行在70MHz。在评测中,最高能稳定运行在109MHz,运行时间如下:
| Stream | Matrix | Cryptonight | Final |
|---|---|---|---|
| 0.036s | 0.058s | 0.165s | 0.036s |
更多介绍与设计思路请参照设计文档 design.pdf。
- Scala版本:2.3.15
- Chisel版本:6.6.0
确保已安装sbt,然后在项目根目录下执行:
sbt run
进入 report 目录,使用 Typst 编译。
typst c experiment.typ
由于时间和个人精力原因,维护这一个项目已经力不从心,即使到决赛,也很有可能存在潜在的Bug;有一些特性对于个人赛而言也是未必需要的。因此,希望后续的参赛者不要照搬这里的代码,而是理解流程后,做出更适合个人赛要求的优化。希望在今后的赛场上见到更优秀的作品!
-
感谢两位学长以及他们去年参加团队赛的项目 NoAXI Loongarch CPU,对我理解乱序的工作原理起到了关键的帮助。
-
项目 XUCPU 提供的测试脚本,对我的调试至关重要。
-
仍有其他列举不尽的项目,我从中学习了UART串口设计、了解了决赛出题形式等。在此一并感谢它们的作者!