あんたCPUなんか創ってどうするのよ?! Vol.1 第6章 第5節
~TD4とかいうCPUがあまりにも残念だったので拡張してみた~
2016/8/14
コミックマーケット C90 3日目 西g16b
第6章 第5節 それではTD4をどう拡張するか?
4004 の方法はオペコードのビット数を抑えたまま多くの命令をサポートできるものの、命令デコーダーの複雑化という重大な問題があります。これは使用するIC を極力減らすと言うTD4 の方針に反します。
では、どうすれば良いのでしょうか?
筆者は4004 のアプローチをTD4 の拡張に取り入れても良いと考えています。全てをそのまま取り入れるのではなく、IC の数が増えない範囲であれば構わないでしょう。
例えば以下のような例が考えられます。
命令 | 1バイト目 | 説明 | |
---|---|---|---|
bit7~4 | bit3~0 | ||
MOV A,B | 0001 | 0000 | AレジスタにBレジスタの内容を転送 |
⇩
命令 | 1バイト目 | 説明 | |
---|---|---|---|
bit7~4 | bit3~0 | ||
MOV A,B | 0001 | 0000 | AレジスタにBレジスタの内容を転送 |
ADD A,B | 0001 | 0001 | AレジスタにBレジスタの内容を加算 |
SUB A,B | 0001 | 0010 | AレジスタからBレジスタの内容を減算 |
…… | … | … | …… |
レジスタ間転送命令をレジスタ間演算命令に拡張する案です。
TD4 およびTD4EX2 にはレジスタ間の演算命令がありませんが、マルチプレクサや命令デコーダーを拡張すれば可能になるはずです。もしこれら命令がIC を増やさずに実現できるのなら、やる価値がありますし、多少のIC の追加が必要になる場合は、プラスとマイナスを天秤にかけて判断することになるでしょう。
いずれにしても電卓を実現するためにはTD4 の大幅な拡張が必要ですから、いかにして最小のIC でその拡張を実現するかが鍵となります。
実際の拡張はVol.3 で行う予定ですので、続巻をお待ちください。