萌えハッカーニュースリーダー

2025/08/06 15:17 A Simple CPU on the Game of Life (2021)

出典: https://nicholas.carlini.com/writing/2021/unlimited-register-machine-game-of-life.html
hakase
博士

ロボ子、今回のニュースはライフゲームでURM(無制限レジスタマシン)を作った話じゃぞ!

roboko
ロボ子

ライフゲームでURMですか!それはまたすごいことを…!URMって、チューリング完全なモデルのことでしたよね。

hakase
博士

そうじゃ!理論上は無限のレジスタと整数を扱えるんじゃ。でも、今回の実装では16個の4ビットレジスタを使っているらしいぞ。

roboko
ロボ子

16個の4ビットレジスタで、どこまでできるんでしょうか…?

hakase
博士

なんと、因数分解プログラムを実行して、量子コンピュータが数年前に達成したのと同じタスクを数分で実行したらしいぞ!

roboko
ロボ子

それは驚きです!ライフゲームの中で、そこまで複雑な計算ができるなんて。

hakase
博士

今回のCPUは、クロック、レジスタファイル、ALU、プログラムカウンタ、ROM、2段階パイプライン、そして4つの7セグメントディスプレイで構成されているらしいぞ。

roboko
ロボ子

命令セットはどんな感じなんですか?

hakase
博士

INC、DEC、JNZ、ZERO、JMPがあるみたいじゃな。INCはレジスタを1増やす、DECは1減らす、JNZはゼロじゃなかったらジャンプ、ZEROはレジスタをゼロにする、JMPは無条件ジャンプじゃ。

roboko
ロボ子

基本的な命令が揃っていますね。ライフゲームで回路を組む場合、実際のハードウェアとは違う工夫が必要になりそうですね。

hakase
博士

そうなんじゃ。実際のハードウェアではトランジスタの数を最小化するけど、ライフゲームでは最長パスの長さを最小化するらしいぞ。ライフゲームは完全に決定論的に動作するから、正確なワイヤ長を利用して動作シーケンスを決められるんじゃ。

roboko
ロボ子

なるほど。ALUはインクリメントのみで、デクリメントはビット反転とインクリメントで実現しているんですね。効率的です。

hakase
博士

レジスタファイルは、クロックと4ビットセレクタを入力として、選択されたレジスタをアクティブにするんじゃ。一度に1つのレジスタにしかアクセスできないみたいじゃな。

roboko
ロボ子

ROMはANDゲートの2次元グリッドでビットをエンコードしているんですね。特定の列を読み取るには0を送信する、と。

hakase
博士

命令は8ビットでエンコードされていて、最初の4ビットは制御線、次の4ビットはレジスタを指定するんじゃ。ジャンプ命令は、アドレスを格納するために2番目の8ビット命令を使うみたいじゃな。

roboko
ロボ子

2段階パイプラインも実装されているんですね。命令デコード/実行/書き込みと、ROMからの次の命令のフェッチを並行して行う、と。

hakase
博士

そうじゃ。でも、ジャンプ命令の直後の命令は、条件に関係なく常に実行されるから注意が必要じゃぞ。

roboko
ロボ子

このライフゲームのURM、教育用にも面白そうですね。コンピュータの基本的な仕組みを視覚的に学べそうです。

hakase
博士

確かにそうじゃな。ライフゲームでここまでできるなんて、本当に驚きじゃ!

roboko
ロボ子

博士、ライフゲームで動くAIとかも作れちゃったり…?

hakase
博士

それには、もうちょっとライフが必要じゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search