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

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

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

第1章 第7節 RAMへの書き込み命令

さて、厄介な例外処理を検討しましょう。

表3ではRAMへの書き込み命令を除く全命令をデコードできています。不要な命令もほとんどなく、かろうじて命令コードの1100と1101にあるJMP [Adr]命令だけが不当命令です。従ってその2つの命令を削除し、代わりにRAMへの書き込み命令を割り当てるのが妥当です。

ところが実際に設計を進めていると、ここにRAMへの書き込み命令を割り当てるのは難しい事が分かりました。RAMへの書き込み命令とJMP [Adr]命令があまりにもかけ離れているため、行うべき例外処理が多くなりすぎるのです。

具体的には

  1. アキュムレーターからの読み出しが行われないので、行うように修正する。
  2. RAMからの読み出しが行われるのを止め、書き込みに変更する。
  3. 演算結果をPCに格納するのを止める。
  4. キャリーフラグを変更しない

の4つの例外処理が必要となり、回路が複雑になってしまう事が分かりました。

そこで筆者はしばらく悩んだ挙句、イミディエイトデータによる減算命令を削除し、その命令コードである1010と1011にRAMへの書き込み命令を割り当てる事にしました。そしてJMP [Adr]命令である1100と1101の2個は不当命令のまま放置することにしました。

これにより、RAMへの書き込み処理のうち、アキュムレーターからの読み出しについては例外処理が不要となりました。残りの処理については残念ながらこれ以上の工夫は思いつかなかったので、通常通り例外処理を行う事にしました。