LA 挑战赛:龙芯杯团体赛总结

时间线

以下时间线根据仓库 commit 来写:

  • 4 月 1 号,开始建立仓库并搭建开发环境
  • 5 月中旬,完成了绝大部分指令,接入 chiplab
  • 6 月初,开始做 cache
  • 6 月中旬,成功通过 rtthread 等测试程序
  • 7 月 1 号,经过不断地 debug,终于在 chiplab 仿真环境中启动 linux
  • 7 月 24 号,成功在fpga 下板启动 linux
  • 7 月 27 号,重构微架构,但失败
  • 7 月 30 号,重构微架构,成功下板启动 linux
  • 8 月 5 号,加上分支预测器,初赛提交代码
  • 8 月 18 号,完善最后的代码,
  • 8 月 20 号,提交决赛包

投入总时长大约 600 h

CPU 的缺陷

  • cache 访问需要 2 个周期,浪费一个周期,IPC 上限为 0.5
  • 关键路径延迟太高,频率只能达到 40M
  • cache 用 LUTRAM 实现,延迟高
  • tlb 也是单周期访问,延迟高
  • 分支预测惩罚高,没有时间优化
  • 指令缓存没优化,有大量冗余信号
  • reg 用的太多,没考虑优化
  • MEM 设置太复杂,增加延迟
  • load_use 太浪费时钟周期,相关解决办法待改进

分数

性能分只有 0.6 左右(30M 的 Openla500 为 1),提升潜力巨大。

评价

一个带分支预测的双 cache CPU 核,能启动 linux_kernel,拿到了国三奖,感觉提升潜力巨大。

展望

如果有时间,明年再次参加一次龙芯杯,这次的目标是 100M + 多发射乱序 + 优化的分支预测器 + L2cache,希望能达到这个目标。


LA 挑战赛:龙芯杯团体赛总结
http://blog.luliang.online/2025/08/26/LA挑战赛12/
作者
Luyoung
发布于
2025年8月26日
许可协议