命令デコーダとは、命令フェッチによって、命令レジスタに読み出されたオペコードをデコードする論理回路のことです。
命令デコーダは、命令レジスタのオペコード部の出力を入力とした組み合わせ回路です。そして、命令デコーダの出力は、命令を実行するために必要な論理回路の構成に切り替えるための複数の制御信号(HighもしくはLow)となります。
つまり、命令デコーダは、オペコードのビット数分の命題を持ち、必要な制御信号の本数分の真理値表を実現する組み合わせ回路と言えます。
例えば、オペコードが3ビット(ABC)で、ある制御信号がYであれば、以下のような真理値表となる組み合わせ回路が制御信号Y用の命令デコーダとなります。
A | B | C | Y |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
真理値表は、選言標準形で表すことができるので、選言標準形の論理式に対応した論理ゲートを使って、組み合わせ回路を作ることができます。
使用する論理ゲートの数を減らすために、部分的にカルノー図を使うこともできます。