あなたCPUなんか創ってどうするのかしら?! 第0章 第2節

~あんたCPUなんか創ってどうするのよ?! Vol.4~

2019/4/14
技術書典6
池袋サンシャインシティ 文化会館ビル2F 展示ホールD「う11」

第0章 第2節 なぜ2桁なのか

なぜTD4EX4では2桁の電卓しか作れないのでしょうか?

これは、使用するICの数を20個未満に制限した結果、出来上がる予定のCPUに以下の技術的な問題点が生じるからです。

第0章 第2節 第1項 RAM容量の問題

前作Vol.3である「この世のCPUを食べ尽くすのだ!」ではTD4を拡張してRAMを搭載しています。これは命令コードの下位4ビットをアドレス指定に使用することで最大16語のRAMにアクセスできます。最小限のICでRAMを搭載するにはこれが最適だと判断しました。

この世のCPUを食べ尽くすのだ!
図1 この世のCPUを食べ尽くすのだ!

この16語を電卓に使用する場合、入力の数値が2つ、出力用の数値が1つ、乗除算のための作業エリアが1つ必要であることを考えると、せいぜい3桁程度の電卓しか作れない事が予想できます。入力されたキーの判別や、符号、現在実行中の演算の種類を記憶しておく領域等も考慮すると、3桁すらも厳しいかも知れません。そこで筆者は無理をせず、2桁の電卓にしました。

第0章 第2節 第2項 プログラム上の問題

Z80や6809等の一般的なCPUには、多数のデータを効率的に処理するための様々な機能があります。C言語でいうところの配列やポインタ、構造体、スタック、ヒープといった機能です。ところがTD4はもちろんTD4EX4にもそのような機能はありませんので多数のデータの処理は非常に困難になります。もし十分な容量のRAMを搭載しても、そのRAMを活かすための機能がTD4EX4には無いのです。

ここで重要なのは「困難」という言葉です。つまり、ある程度は可能という事です。電卓の例で説明するとTD4EX4ではプログラムの量は以下のようになります。

  • 加減算……桁数に比例してプログラム量が増加
  • 乗除算……桁数の2乗に比例してプログラム量が増加

大ざっぱに言って3桁では2桁のほぼ倍のプログラム量が必要になり、8桁となると10倍~16倍のプログラム量が必要となります。従って努力と根性があれば桁数の多い電卓も実現可能なのですが、CPUの機能不足を人間がカバーするのは時間の無駄でしょう。機能が足りないのなら、その機能をCPUに追加するのが正しいやり方です。

電卓のプログラムサンプルを示すだけなら2桁で十分ですから、今回制作する電卓は2桁にしました。