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

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

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

第2章 第6節 減算命令の制御

TD4EX4では減算命令を、RAMから読み出されたデータを2の補数化してから加算する、という方法で実現しています。そして2の補数は、1の補数に1を加算する方法で実現しています。

図9 減算回路
図9 減算回路

RAMから読み出されたデータを1の補数に変換する方法は、各ビットの1と0を反転するだけです。ただしこれは減算命令を実行するときだけ行うので、命令デコーダーからの信号に従って反転するかどうかを切り替る必要があります。

TD4EX4ではこの反転を74HC86によって行っています。74HC86は論理演算のXORを4個内蔵したICです。これを図10のように接続します。

図10 TD4EX4の減算回路
図10 TD4EX4の減算回路

減算命令を読み込むと、図10の左下の「命令デコーダーより」の信号が1になり、74HC86によってRAMから読み込まれたデータの1と0が反転します。これで1の補数への変換を実現します。

同時に加算用ICである74HC283のキャリー入力を1にします。これにより減算命令の時だけ1が加算され、1の補数を2の補数に変換しています。つまり余分なICの追加せずに2の補数への変換を実現している訳です。TD4EX4にはキャリーを演算入力に使う命令が存在しないので、余分な回路は不要で、命令デコーダーからの減算指令をそのまま74HC283に突っ込んでいます。

減算の結果は図10の右側に出力されます。このうちキャリー出力については第1章の第8節で説明したとおり、結果が正の場合に1、負の場合に0となります。