---
source_url: https://www.armaangomes.com/blogs/doom/
source_title: "Running DOOM on our Custom CPU and Going Viral"
tags: custom-cpu,doom,fpga,emulation,hardware
generated_at: 2026-07-21T08:00:51.201Z
model: claude-haiku-4-5
---
# カスタムCPUでDOOMを実行し、動画が200万回再生された

TL;DR: Liam、Ryan Tang、Ozkl は1993年にid Softwareがリリースしたゲーム「DOOM」をロジックゲートレベルから設計したカスタムCPUで実行することに成功した。FPGAに展開されたこのシステムは最終的に15～20 FPS でDOOMを実行でき、その9秒間の動画は200万回以上の再生数を獲得した。

ゲームの伝説「何にでも DOOM は動く」を文字通りに実証するため、3人の開発者が自作のカスタムCPUを構築した。「DOOM は1993年にid Softwareがリリースしたビデオゲームである。ゲーム業界に革命をもたらし、世界中に広がり、現代のFPSを定義した」と説明される通り、その人気の高さから「DOOM は何にでも動く」という言葉が生まれ、マイコンからトースターまであらゆるデバイスへの移植が行われてきた。

## CPU設計と構成

設計されたカスタムCPUは「ロジックゲートレベルで設計し、周辺機器を接続し、DOOM のソースコードを自分たちのマシンで動くよう改造し、FPGAにデプロイしてリアルタイム実行した」ものである。CPUは5段パイプライン設計（命令フェッチ、デコード、レジスタ読み込み、実行、ライトバック）を採用し、ICache とDCache はそれぞれ2048本のキャッシュラインを持ち、1本あたり4ワードのデータを格納する。キャッシュラインには有効ビットとダーティビットの2つのステータスビットが含まれる。メモリアクセスはDCache をDCache より優先する統一インターフェースで抽象化された。

クロック周波数は初期の100 MHz から125 MHz に引き上げられ、これにより20%のフレームレート向上が実現された。

## パフォーマンスの最適化プロセス

DOOMは元々14メガバイトのshareware版（doom1.wad）であり、FPGAのBRAMが1メガバイト未満という制約下での実行は多くの課題をもたらした。初期のパフォーマンスは0.7 FPS にとどまっていた。段階的な最適化により、フェッチステージの修正で2.5 FPS、乗算演算子の実装（RV32I-ZMMUL対応）で3.5 FPS、キャッシュ読み込みのパイプライン化とVGA書き込み戦略の修正で6.7 FPS へと向上した。

最終的にはコンパイラ最適化を行うことで15～20 FPS の実用的なパフォーマンスを達成した。この過程では、ハードウェアタイマーのMMIOポインタが volatile として マークされていなかったため、コンパイラによって最適化されるという問題も発見・修正された。

## 周辺機器の実装

Xilinx の Memory Interface Generator（MIG）を用いてDDR3メモリインターフェースが実装され、Clock Domain Crossings（CDC）とFIFOによりタイミングの問題に対応した。VGAコントローラは12ビットカラー対応で構築され、HDMIに接続された。ハードウェアタイマーはマイクロ秒単位で時間を追跡し、UARTトランスミッターは出力用のFIFOバッファを備え、UARTレシーバーはラップトップからのキープレス入力を受け取った。

## ポーティングと検証

Doomgeneric を使用してポーティングプロセスを簡略化したが、ファイルシステムの問題、レンダリングの課題、printf の問題など複数の障害に直面した。バグはCPUの設計エラー（無限ループやランダムジャンプ）を露呈させ、初期段階ではメモリが初期化されていないため、メモリ領域がゼロで埋められていないというハードウェア側の問題によりDOOMが動作しなかった。これらの課題を段階的に解決し、最終的に9秒間の動画として実行例を投稿したところ、現在200万回以上の再生数を達成している。

## 筆者の見立て

- 「DOOM は何にでも動く」という解釈をしている
- 「自分たちの実装でDOOMが動くことに驚いている」という意見を示している
- 「アウト・オブ・オーダー処理とその他の最適化により、最終的に30 FPS に到達することを期待している」と予想している

*この記事は元記事の事実のみに基づいて自動生成されました。*

## 出典

元記事: Running DOOM on our Custom CPU and Going Viral
URL: https://www.armaangomes.com/blogs/doom/
