【技術】自作CPUでDOOM動かしてバズった件「RISC-V(RV32I)コアの実装であって独自ISAちゃうんかい」【FPGA】
投稿日時: 2026/07/21 12:54
■ 概要・編集部サマリー
【背景・課題】自作CPU上でDOOMを動作させSNSで話題になったプロジェクトに対し、技術コミュニティから実装内容や用いた用語に関する精緻な議論が起きた。 【焦点・技術】実態は独自ISAの新規開発ではなく、FPGA上にChiselを用いて構築したRISC-Vの自作マイクロアーキテクチャコアであった。 【評価・議論】既存ISAの自作実装としての価値が認められる一方、Zmmul(乗算のみ)の選定理由や、C/C++での自作エミュレータ開発・LLMを活用した学習アプローチにまで議論が波及した。
1. 「DOOMが動いて一人前」の自作CPUハードウェア
Verilog HDLを用いてロジックエレメント上に命令デコード、レジスタファイル、ALUを構築し、純粋なRISC-Vコアを設計した。
標準CコンパイラでコンパイルされたDOOMのソースコードを、自作CPU上で命令通りに実行させることに成功した。
2. RV32I命令セット実装とVGAフレームバッファ制御
命令キャッシュやブランチ予測の最適化を行い、クロック数の低いFPGA上でも滑らかなフレームレートを確保した。
ソフトCPUと自作VGAフレームバッファとの間のメモリ衝突を解決したプロセスが回路図とともに詳細に解説されている。
3. コンピュータアーキテクチャの実践的学習
CPUの動作原理からグラフィック出力までを一貫して自作・移植した、圧巻のハードウェアハック成果である。
低レイヤ技術者にとって最高のインスピレーション源だ。
海外掲示板の反応・まとめ
■ 記事概要:自作CPUをFPGA上に構築し、DOOMを動作させてSNSでバズった開発者の体験記。コメント欄では「独自ISAではなくRISC-V(RV32I)コアの実装」という用語の定義に関する議論や、乗算機能(Zmmul)の選定理由、自作エミュレータ構築の実体験などが語られている。
「自作CPU」ってタイトル見て飛んできたらFPGA上のRISC-Vコアやんけ!記事の中でそれに触れるまでが長いねん
>>2 まぁ既存のISA使ってても、ゼロからロジック書いてFPGAに実装したなら自作CPUって言ってええやろ。アーキテクチャ(仕様)とマイクロアーキテクチャ(実装)は別物やぞ
>>3 正確には「既存アーキテクチャの自作実装」やな。単に最小のRV32Iコア作るだけなら大学の講義レベルでもあるし。まあこの記事のはChisel使ってて完成度高いけど
ワイも自作CPUって言うからwafer.spaceみたいなガチの自作シリコン(ウェハ)期待してもうたわ。FPGAかい!
なんでM拡張(乗除算)フルじゃなくてZmmul(乗算のみ)なんや?FPGAのリソース節約?それともDOOM移植の過程で除算消せたんか?
>>6 作者「ぶっちゃけ面倒だったから(笑)。いまOut-of-Order(OoO)実装を進めてるから、乗算や浮動小数点足す前にまず強固なRV32Iの基盤を作りたかったんや」とのこと
ワイも昔C++でRV32Iエミュレータ書いてDOOM動かしたことあるけど、M拡張足した途端に爆速になって感動したわ。やっぱりハードウェア乗算器は神
自作エミュレータでDOOM動かすの楽しそうやな。ChatGPTに最小環境聞いて、switch-caseで命令デコードして画面描画用のsyscall生やせば手軽に作れるらしいで
>>9 AI頼らんでも、RISC-Vの仕様書とOpcode表見ながらC言語で書けば週末でRV64IMシミュレータ作れるぞ。RISC命令は「dest = src1 OP src2」のパターンばっかだから構造が単純で学習に最適や