マイクラで最小のCPUを自作した話
マインクラフトで1bit CPUを自作した記録。作ることで得られる生きた理解。
マインクラフトで、CPUを作った。
きっかけは単純な疑問だった。「CPUって、実際どう動いているんだろう」 CPUについて調べていると「なるほど」と思う。でもそれは真の理解じゃない。そう感じていた。
だから作ることにした。最小構成からのスタート。1bitのCPUだ。
レッドストーンという制約
使ったのはレッドストーン回路。マインクラフト独自の"電気"のようなものだが、現実とは少し違う。
- 信号の伝播に時間がかかる(1ティック = 0.1秒)
- 回路が3次元空間に広がっていく
最初はこの物理的な制約が面倒に見えた。でも逆だった。 制約があるから「なぜこの設計にするのか」を真剣に考えるようになった。 ここに腕の見せ所があるような気がしてワクワクした。もっともまだその境地には達していないが。
作ったもの
1bit構成のCPUで、以下の要素を実装した。
命令セット(4種類)
| 命令 | 内容 |
|---|---|
| NOP | 何もしない |
| A = A + B | AレジスタにA+Bを格納 |
| B = A + B | BレジスタにA+Bを格納 |
| A = A NAND B | AレジスタにNAND結果を格納 |
ALU(算術論理演算ユニット)
加算とNANDの2種類。これだけで論理演算の基礎はカバーできる。
レジスタ
Dフリップフロップ3個並べたもの。AとBの2レジスタ構成にオーバーフローを示す1レジスタ。
プログラムカウンタ
インクリメンタ + ラッチで構成。
メモリ(ROM)
手動で配線した固定命令列。1セル2bitで4命令対応。つまり8bit。
作ることで得られるもの
この「最小」が重要だった。機能を削るたびに、「これは何のためにあるのか」を考えた。
- プログラムカウンタがなければ命令が進まない
- レジスタがなければ計算結果が消える
- ALUがなければ演算ができない
ひとつひとつの役割が、手を動かすことで染み込んでいった。
学習はほとんどAIとの対話で行った。「CPUって何?」という抽象的な問いから始めて、 質問・回答・確認・また質問、をひたすら繰り返して理解していった。 マインクラフトはその理解の実証実験だった。
コンピュータアーキテクチャの本を読み続けるより、少し手を動かす方が生きた知識になることもある。 この経験がそれを証明したように感じる。
まだ最小構成だが、この土台があれば、次に何を追加すべきかが見える。 「わかるまでやる」は、まだ続く。
