在芯片领域,能跑《毁灭战士》(Doom)似乎已经成为某种“硬核认证”——就像程序员圈子里那句玩笑话:“万物皆可跑Doom,从计算器到妊娠测试仪,现在轮到我们的自研CPU了。”
近日,一支来自国内高校的硬件开源团队“朱雀芯”在社交媒体上发布了一段视频:一块布满了跳线和测试引脚的FPGA开发板上,经典的《毁灭战士》第一人称画面流畅运行,帧率稳定在30帧左右。而驱动这一切的核心,是一颗完全由学生们自主设计、基于RISC-V指令集的定制CPU。视频发布当天,转发量突破三万,评论区挤满了全球硬件爱好者的惊叹与提问。
从课设到“硬核玩具”
“初衷其实很简单,就是我们研究生课程《计算机组成与设计》的期末大作业。”项目负责人、博士生李明远在接受采访时坦言。按照课程要求,每组需要设计一个能运行简单汇编程序的CPU核,但“朱雀芯”团队决定挑战极限——他们不仅要做出一个完整的、支持Linux内核的CPU,还要在上面运行图形界面程序。
“Doom是开源界的‘Hello World’。它体积小、依赖少,但涉及图形渲染、音频处理和实时输入,对CPU的指令集覆盖、中断处理和内存管理都是真实检验。”团队成员张涵解释道。为了在CPU上跑通Doom,他们花了整整两个月:先是在Verilog代码里实现了RV32IM(整数乘除与原子指令)子集,随后移植了精简版Linux内核,最后通过修改SDL库适配了自家的帧缓冲驱动。
“工业级”挑战与意外收获
视频走红后,质疑声也随之而来。“FPGA上运行的CPU软核,性能能跟真正的流片相比吗?”“是不是用了大量的硬件加速模块?”对此,团队在GitHub上公开了全部设计文档和源码。实际上,这颗名为“朱雀一号”的CPU并未使用任何专用的GPU或显示加速器——Doom的所有像素计算都由通用寄存器堆和算术逻辑单元完成,最终通过VGA接口逐像素输出。
“最困难的是解决缓存一致性问题。”李明远回忆。当CPU尝试从内存读取纹理数据时,由于没有设计二级缓存,频繁的访存操作导致画面卡顿。团队最终通过添加一个简单的预取指令和软件层面的双缓冲技术,将帧率从可怜的5帧提升到了可玩的25~30帧。
这种“软硬协同优化”的思路意外获得了业内人士认可。某国产CPU设计公司的工程师在评论区留言:“很多初创团队在流片前都会用FPGA验证,你们对实时性瓶颈的定位方法非常有工程价值。”
病毒式传播背后的意义
视频走红并非偶然。在Twitter和Reddit的硬件社区,“在自研CPU上运行Doom”长期被视为“终极成就”。但过去这类项目多由海外极客或大厂实验室完成,鲜有中国学生团队公开完整方案。“朱雀芯”的视频恰好填补了这种期待:简陋的开发板、密密麻麻的杜邦线、终端里滚动的调试信息——这种“硬核粗糙感”反而激发了同好的共鸣。
一位来自硅谷的芯片设计工程师在视频下回复:“我看到了二十年前自己在车库里造CPU的影子。”而更让团队意外的是,已有两家国内AI芯片初创公司向他们发出了实习邀请,希望利用这套开源框架进行指令集定制化验证。
不只是“玩梗”
“跑通Doom只是起点。”指导教授王教授评价道,“他们从应用出发倒推微架构设计,这种以终为始的思路正好契合当前RISC-V生态‘应用定义芯片’的趋势。”
目前,“朱雀芯”团队已启动下一阶段:将CPU设计流片为28nm工艺的测试芯片,并尝试在其上运行更复杂的操作系统与游戏。至于能否再现《毁灭战士》的辉煌?李明远笑了笑:“我们更希望证明,中国年轻人的开源硬件能力,配得上这场全球狂欢。”
从一张FPGA开发板到全网爆火,这颗小小的“朱雀一号”CPU承载的,或许正是中国硬件社区从追随者向定义者转变的野心。而《毁灭战士》那经典的像素画面,也仿佛在说:只要足够热爱,任何硬件都能成为通往无限可能的传送门。