Back to Project

miniCPU

用 verilog 手搓一个 CPU (ongoing)

一个用于学习的小项目: 尝试用 Verilog 从零手写一个 RISC-V 五级流水线 CPU.

先说明白: 这颗 CPU 没有什么实用价值, 性能, 面积, 功耗都无从谈起, 市面上也有无数成熟得多的开源核. 它存在的唯一理由, 是我想借着亲手实现一遍, 把计算机组成真正弄懂一点.

目标

  • 指令集: RISC-V (从最基础的 RV32I 整数指令子集做起)
  • 微架构: 经典的五级流水 — 取指 (IF), 译码 (ID), 执行 (EX), 访存 (MEM), 写回 (WB)
  • 手段: 纯手写 Verilog, 不依赖现成 IP 核
  • 验证: 以仿真跑通简单程序为初步目标

为什么想做这个

书上的流水线图画起来都很漂亮, 但只有自己去处理数据冒险, 控制冒险, 去思考 forwarding 该怎么加, 分支预测错了怎么办的时候, 才会发现很多”理所当然”其实一点都不显然. 这个项目就是把这些坑一个一个踩过去的记录.

进展和踩坑过程会直接写在仓库里, 感兴趣的话欢迎围观; 如果发现有写错的地方, 也非常欢迎指正.

一点题外话

给项目起名 miniCPU, 是因为它确实很小 — 无论是规模, 还是作者的水平. 希望以后回头看时, 它能成为”至少曾经认真做过一件事”的证据.

商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。本文采用 CC BY-NC-SA 4.0 - 非商业性使用 - 相同方式共享 4.0 国际 进行许可。

Comments

Notes, questions, and follow-ups are welcome here.

Comments are temporarily unavailable because WALINE_SERVER_URL or PUBLIC_WALINE_SERVER_URL is not configured.