GPUを自分で設計しながら学ぶインタラクティブゲーム「Mvidia」
(jaso1024.com)- トランジスタからGPUまでのコンピューティングスタック全体を段階的に構築しながら学ぶシミュレーション型ゲーム
- 各段階はACTで構成され、トランジスタ・論理ゲート・ALU・プロセッサ・GPU・シェーダーの順に発展
- ACT 1ではNMOS・PMOSを使って基本的な論理ゲートを作り、ACT 2ではそれを拡張してALUとプロセッサコアを完成
- その後の段階であるソフトウェア・GPU・シェーダーパートは現在COMING SOONとして開発中
- ハードウェア設計とプログラミングを統合的に体験できる教育向けインタラクティブプロジェクト
Mvidiaゲーム概要
- Mvidiaは、ユーザーがGPUを自ら設計・構築する過程を段階的に体験するインタラクティブ学習ゲーム
- ゲームはトランジスタから始まり、論理ゲート、ALU、プロセッサ、GPUへと発展する構成
- 各段階は「ACT」で区切られ、各ACTは複数の学習および実装課題で構成
- 進行状況は**達成率(例: 0/10 COMPLETED)**の形で表示され、学習の進捗を視覚的に確認可能
ACT 1: 初日 (YOUR FIRST DAY)
- テーマはTransistors → Logic Gatesで、トランジスタを使って基本的な論理ゲートを構成する段階
- 主な課題構成
- 1.1 The Switch: NMOSをスイッチとして使用
- 1.2 The Other Switch: PMOSをスイッチとして使用
- 1.3 Two Halves: NMOSとPMOSの結合
- 1.4 NAND It: NANDゲートの構成
- 1.5 The Dual: 論理ゲートのペアを構成
- 1.6 Truth Tables: 真理値表の作成
- 1.7 AND Gate, 1.8 OR Gate, 1.9 XOR Gate: 基本ゲートの実装
- 1.10 Choose Wisely: 3つのゲートを組み合わせて選択構造を完成
- ACT 1を完了するとACT 2: THE COREがアンロック
ACT 2: コア (THE CORE)
- テーマはGates → ALU → Processorで、論理ゲートを使って算術論理演算装置(ALU)とプロセッサを構成する段階
- 全34の詳細課題で構成され、各課題は前段階の成果物を基に進行
- 主な段階
- 2.1 Half Adder, 2.5 Full Adder: 加算回路の構成
- 2.3 The Decoder, 2.25 Register File: データ選択および保存構造の設計
- 2.4 The Capacitor, 2.7 1T1C, 2.12 The Sense Amp, 2.17 The Array: メモリセルおよびセンスアンプの構成
- 2.10 Adding Bytes, 2.13 Hex Racer, 2.15 Bit Twiddling: バイト単位演算への拡張
- 2.20 Edge Trigger, 2.21 Refresh, 2.31 Refresh Controller: クロックおよびメモリリフレッシュ制御
- 2.27 The ALU, 2.30 Fetch, Decode, Execute, 2.32 The Mvidia Core: プロセッサの中核構造を完成
- 2.33 DRAM Memory, 2.34 Mvidia Core v2: DRAMベースの拡張とコアのアップグレード
- ACT 2を完了するとACT 3: THE SOFTWAREがアンロック
ACT 3: ソフトウェア (THE SOFTWARE)
- テーマはProgramming the Processorで、完成したプロセッサをプログラミングする段階
- 現在はCOMING SOONの状態で、具体的な課題内容は未公開
ACT 4: GPU (THE GPU)
- テーマはBuilding a Graphics Processorで、グラフィックスプロセッサを構成する段階
- 現在はCOMING SOONの状態で、今後GPUアーキテクチャ設計に関する課題が追加予定
ACT 5: シェーダー (THE SHADER)
- テーマはProgramming the GPUで、GPUを使ったシェーダープログラミングの段階
- 現在はCOMING SOONで、今後GPUプログラミング学習コンテンツへ拡張予定
1件のコメント
Hacker Newsのコメント
本当に素晴らしいプロジェクト。
ただ、truth tables の段階では重複した問題が多く、最初の問題は制限時間が1秒しかなかった。
コンデンサの部分も混乱した。コンデンサには
enableゲートがないのに、2.7(1T1C)ではトランジスタで直接作らなければならない。ところが今はすでに primitive に
enableゲートがあって、NMOSゲートが不要になっている。もしかして LLMの助け を借りて作ったのか気になる。特に、ここまでUIをうまく作ったワークフローが印象的だった。
enableゲートを追加した。シミュレーションシステムの構造上必要だった。コンデンサ実装は最初からかなり悩んでいた。完全なコンデンサモデルをシミュレーションシステムに合わせて作るのは難しかった。
truth tables のバグは修正予定。星評価は endless mode でプレイすると獲得できる。
開発過程では Claude をかなり使った。配線とシミュレーション部分は大変だったが、グラフィックは細かく指示して仕上げた。
NAND、NOR、Inverter の定義をクイズの後で学ぶ構成になっている。順番を入れ替えるとよいと思う。
それと タイマー が短すぎる。問題を全部わかっている自分でも時間内に入力するのが大変だった。いっそタイマー自体をなくすのも検討の余地がある。
このゲームが気に入ったなら Turing Complete もおすすめ。
最後には自分だけのCPUとアセンブリ言語まで作れる。とはいえ、まだ Early Access のままで長く止まっている。
mixed-signal IC を10年以上設計してきたのに、最初のレベルすらクリアできなかった。
NMOSを、入力が1のとき出力が0、0のときはZ状態になるようにしろという問題だった。
ドレインは出力に、ソースはGNDに、ゲートは入力につなぐ必要があった。
ところがテストの半分が失敗した。後で見ると、背景の太い灰色の線が ワイヤのように見えて勘違い していた。自分で接続線を追加しなければならなかった。
フィードバックをいくつか。
アイデアは良いが、Turing Complete をやった立場としては序盤の段階は飛ばしてGPU特化の部分に行きたかった。
NANDをトランジスタで直感的に理解するのが難しく、難易度の壁を感じた。
難易度のばらつきは大きいが、easyモードはよかった。
コンデンサのリフレッシュ段階は速すぎて、キーボード入力が追いつかなかった。
配線が複雑になると 可読性 が急激に落ち、色分けや手動ルート指定ができない点が不便だった。
Firefoxでは接続点の選択がうまくいかず、マウスを端までドラッグして 画面移動(pan) できるとよかった。
“show solution” は実際の解答というよりヒント程度。テストケースをもっと表示するオプションがあるとよい。
本当に素晴らしいアイデア。
ただ、基礎知識が足りずチュートリアルのメッセージを理解できず、最初のレベルから詰まってしまった。
レベル3のNOTゲートもまだピンと来ていない。それでも、こういう 3-state回路パズル は初めてで新鮮。かわいいストーリーを載せればSteamでも通用しそう。
良いアイデアなので HN Arcade に追加した。
「10回試してもダメなら答えを見せるボタン」が必要。
そうすれば、問題自体が壊れているのか、自分が間違っているのかを区別できる。
出力テスト用の 一時ノード があるとよい。
さらに言えば、テストを実行しなくても truth tableがリアルタイムで更新 されれば学習に役立つと思う。
学習用途としては、略語(nmos, pmos, gnd, vdd) を一度は正式名称で説明してくれると助かる。
インターフェースはすっきりしていて、教育向けのニッチをうまく埋めている。
ただ、略語を展開しても直感的ではないので、大きな助けにはならないかもしれない。
応急処置はしたが、洗練した版として再追加する予定。任意で見られるようにする。
素晴らしいゲーム。学習用として、各レベルをクリアしたあとに 模範解答 や解説を見られるとよい。