計算で使用しているハードウェア
マンデルブロ集合の計算を実行するには、通常はいわゆるパソコンでやる。
高速に計算したければGPUを使う、というのが今風と思う。
しかしながら、なぜか私は自作の専用ハードウェアを使っている。こんなやつです。
思い返せば15年くらい前、秋葉原の秋月電子で32bit 1チップマイコンを見つけたのが事の始まり。SH-7125F 、今でも売ってるみたい。長寿命、スゴイねぇ。
※ 秋月電子のHPより
32bit x 32bitの整数乗算ができるということで、ふと思いついてしまったのが、固定小数点の多倍長でマンデルブロ集合の計算をアセンブラで組んだら面白そう・・というもの。
クロックは50MHzと速くはないが、1枚1,500円と安いので、複数枚使用して並列計算でカバーしよう。だけど複数枚の配線は大変そうだなぁ・・・と思っていると。
左下写真のような足の長いコネクタも売っていた。これを先のボードにハンダ付けして積み重ねれば、並列配線の部分はOKかも。と、悪魔の囁き。
ただし、40ピンしかなかったので、ノコギリで28ピンに切らなきゃいけないケドね。
右下の写真はコネクタをハンダ付けした1ユニット分。
ということで、当時は単身赴任中で、比較的時間に余裕があったこともあり、深く考えもせず、今から思えば、とんでもない事を始めてしまったのだ。
下は、通信制御用の基板に、8ユニットを積み重ねたモジュール。
タワーの左には通信用にNMIで割り込みをかけるため、各ユニットから1本だけ配線を取り出してます。
通信制御用には、秋月電子の16bit 1チップマイコンボードAKI-H8/3069Fを使いました。上記の制御用基板の裏に張り付いています。
使用した3069Fボード(AKI-H8/3069F)
各ユニットで1点の計算が終了すると、対応するLEDが光り、3069が結果を取り込みます。下の写真は稼働中のもの。
計算中はLEDがチカチカしてて、がんばって計算してますョ感があり、カッコいいです。
最終的には、16モジュールを製作。各モジュールからシリアル接続で最上位の3069Fに結果を集約するシステムとなりました。
最上位の3069Fは、昔使っていた古いノートパソコンにシリアル接続。
ノートパソコンから計算条件が転送されると下位のモジュールへ条件を配信し、下位モジュールで計算が終了すると結果を取り込み、ノートパソコンへ計算結果を転送します。
ケースは、DIYのお店でアルミの板と在庫処分の木製柱(仏壇用?)を購入し、組み立て。それらしくなりました。
計算部分のみで8ユニットx16モジュール=128CPU。
う~ん、最初のイメージよりずいぶんと大がかりなモノになってしまった。
下の写真は、最上位の通信用3069Fユニット。液晶モニタも付けました。
単身赴任中でしたが、仕事が忙しくなると中断・再スタートと、何度かチャレンジするも完成せず。特にソフトウェアは、中断すると忘れてしまい、毎回作り直すハメに。
ギブアップという感じでしたが、定年後に新型コロナ騒動があり、たっぷりとおうち時間が取れたので、再チャレンジし、なんとか完成。
「よく動きましたねぇ」という感じです。
特にマイコンのソフトウェアはアセンブラで、デバッガもなく、動いたのは奇跡的。
計算速度は遅くても、カワイイやつです。
コネクタ部等で怪しげなところもありますが、1年以上稼働して、停止したのは1度だけ。 ・・・ まあ、よしとしよう。