レッドストーンCPUでコラッツ予想を実行(配布あり)
前置き
みなさんは、コラッツ予想をご存じですか?
コラッツ予想とは、正の整数nに対して、ある操作をすると必ず1になるというものです。
今回は、専用に設計されたレッドストーンCPUを使って、ほんとに1になるのか実行してみたいと思います。
コラッツ予想とは
コラッツ予想とは、正の整数nに対して、ある操作をすると必ず1になるというものです。
その操作とは、
・nが奇数ならnに3をかけて1を足す
・nが偶数ならnを2で割る
というものです。
一見証明するのも簡単そうですが、実は非常に難しくまだ証明されていないそうです。(2024年7月11日時点)
CRED VIII(バージョン2)
今回は、コラッツ予想の実行専用に設計されたレッドストーンCPU、CRED VIIIを使って、実際にコラッツ予想を実行してみたいと思います。
ちなみに、証明をするわけではありません。
上の画像が、CRED VIII(バージョン2)になります。
実は、バージョン1はタフなレッドストーンCPUを制作していのたのですが、そのCPU独自の機構を作っている途中で不具合が発生し、原因が分からなかったため、お蔵入りになりました。
それでは、CRED VIII(バージョン2)の解説をしていきたいと思います。
CRED VIII(バージョン2)は、1bit CPUになっています。
ですが、シリアル通信により疑似的に16bit化させています。
この前紹介したCRED VII(バージョン10)と同じ仕組みですね。
なぜ小型重視でもないCRED VIII(バージョン2)で1bit化を採用したのかというと、それは疑似的でもいいから16bitのレッドストーンCPUが必要だったからです。
通常のレッドストーンCPUで16bitを実現しようとすると、かなり大きくなってしまい、制御も大変になるのでできれば避けたかったのです。
そこで、1bit化を採用しました。
1bit CPUを疑似的に4bitや8bitにする技術です。
この技術を使えば、疑似的ですが16bitや32bitにすることも容易になるため、今回この技術を採用しました。
1bit CPUを採用したことで、演算装置や記憶装置をこのサイズに収めることが可能になりました。
16bitと考えると、革命的なサイズです。
赤紫のI/Oポートだけ大きいですが、I/Oポートはパラレル通信になっているためです。
つまり、通常のCPUで16bitにすると、赤紫のI/Oポートと同等のサイズになっていました。
ですが、1bit化させることにより、上の画像のサイズに演算装置と記憶装置を収めることができ、その下に赤のコンクリートで作られた制御回路などを配置しています。
ALU&レジスタ
このレッドストーンCPUは、コラッツ予想の実行のためだけに設計されました。
そのため、機能もコラッツ予想専用になっています。
ALUは、3倍+1と右シフトが可能になっています。
右シフトは、実質的に2分の1ということになります。
つまり、コラッツ予想の偶数だった時と奇数だった時の実行するべき処理のみが1命令で行えるようになっています。
ここが重要で、専用設計のため1命令で行うことができ、命令の短縮と高速化を実現しています。
レジスタも、1bit化されループ式になっています。
また、コラッツ予想を実行するだけなら、レジスタは1つで十分だったため、レジスタは一つのみ搭載しています。
レジスタを一つにすることで、小型化と低負荷化と命令セットの小型化を実現しています。
I/Oポート
CRED VIII(バージョン2)のI/Oポートは、CRED VII(バージョン10)と同様に、通常のパラレル通信になっています。
ALUやレジスタは1bitのシリアル通信ですが、I/Oポートはパラレル通信にすることで見やすさや入力のしやすさを向上させています。
ちなみに、回路の構造的な問題で、アウトプット側は下が1bit目ですが、インプット側は上が1bit目になっています。
つまり、インプットだけ上下が逆になっています。
ROM&PC
グレーのコンクリで作られているROMは、命令を7個保存できるようになっています。
これは、レッドストーンCPUとしてもかなり少ない方で、専用設計だからこその容量になっています。
コラッツ予想を実行するには十分な容量です。
画像には映っていませんが、空色のコンクリートで作られているPCは、小型化のために信号強度式になっていますが、ROMの容量的に3bitになっています。
これは、4bitに対応させてもあまり意味がないからです。
通常のPCにしていると、おそらく3倍以上のサイズになっていたので、信号強度化の恩恵は大きいです。
まとめ
CRED VIIIは、僕のレッドストーンCPUとしては珍しく、コラッツ予想専用と用途が決まっているレッドストーンCPUでしたね。
一応、プログラムの書き換えは可能ですが、ALUの機能がコラッツ予想専用となっていたり、レジスタが1つしかなかったり、条件分岐が演算結果の1bit目のオンオフでしか実行できないなど、いろんな問題があるため、他のプログラムを実行させるのはかなり難しいです。
ちなみに、作り始めてから完成まで、約2日だったのを覚えています。
僕がレッドストーンCPU制作に慣れているのもあると思いますが、コラッツ予想専用ということで、かなりシンプルな構造にできたのも、製作期間を縮めることが出来た要因の一つだと思います。
あと、無料でCRED VIII(バージョン2)を配布したいと思います!
CRED VIII(バージョン2)は、コラッツ予想専用レッドストーンCPUのため、プログラミングなどをして楽しむことはできませんが、実際に数値を入力して動かしてみてほしいです!
CRED Vの配布と違い、既にプログラムされている状態なので、だれでも簡単にレッドストーンCPUに触れることができます!
注意:こちらでダウンロードできるCRED VIII(バージョン2)はMinecraftのBEで作られています。
なので、JEでは使えません。
また、Switchなどのゲーム機だと、利用できない可能性が高いです(PCやスマホなどのBEでは利用できると思います)。
こちらからCRED VIII(バージョン2)のダウンロード(ワールドエクスポートと、ストラクチャーのエクスポート)が可能ですが、
CRED VIII(バージョン2)は僕が一人で作った赤石CPUなので、もしかしたら不具合などが残っている可能性があります。
(もちろん、動作テストはやっていますが、可能性はあります)
CRED VIII(バージョン2)に不具合が残っていた場合でも、原因が分からないなどで修正されない可能性があります。
(マイクラのアプデで仕様が変わったり、バグが追加()されたりして動かなくなる可能性もあります)
こちらでは、CRED VIII(バージョン2)のダウンロードが可能ですが、その前にダウンロードしたら、回路のリセットを行ってほしいので、こちらの動画を見ながらお願いします。
また、操作方法などもこちらの動画で紹介しています。
https://youtu.be/E1UVFcY_kAc
CRED VIII(バージョン2)のワールドの方のデータはこちらです
CRED VIII(バージョン2)のストラクチャーブロックの方のデータはこちらです
どちらをダウンロードしても問題ありませんが、
演出などの関係上、僕はワールドの方を推奨します。
(ダウンロードしたCRED VIII(バージョン2)を、僕(水地)の許可なく配布などは、行わないでください)
最後に、
読んでいただき、ありがとうございました!
この記事が気に入ったらサポートをしてみませんか?