chocopaの日記: 「ロボットの起源」"--C言語"と新CPUは16bit?
発掘したコンパイラは構造化BASICですが、
新CPU用コンパイラはC言語に似た互換性の無いサブセットにすることにしました。
サブセットなので、"--C言語"(C#でPreDecCの名前で開発中)となります。
C++の評価値は元のままだから互換性があって当然だけど--Cは評価値がサブセット後だからCとの互換性なくてもいいよね!(笑)
コーディングをしながらTTL規格表をめくってTTLで組みやすい構造とか数とか調べているのですが、なかなか厳しいですねぇ。
ちょっと普通に作ろうと思うと、標準サイズの2足歩行ロボットとして破格に大きなペイロードを持つバルキーにすら乗りそうにないです。
実用性は無いけどCPUの要素は全てあるでしょ?みたいなのなら小さくできますが、実用性を考えるとアドレスが8bitというわけにもいかなくなるのです。
データーを8bitとして、アドレスやインデックスレジスタを扱うのに2回アクセスになったりするとbit数から来る以上に回路規模が膨らみますね。
そして、それは説明も難しくなる。
そこで、一つ思いつきました。
データもアドレスも16bitにする案です。
データもインデックスもレジスタは同じ。
メモリ→レジスタ、レジスタ→メモリ、レジスタ同士演算、直値→レジスタ
の命令で行く感じです。
制御的には学習用で実用性の無いCPUと同水準にしてbit幅を拡大する方向です。
複数の16bitレジスタが有り、2本だけ少し特殊にしておきます。
ALUの入力の片方と出力に繋がっているアキュームレーターとしてのレジスタが1本。
プログラムカウンタそのもののレジスタが1本。
おもいっきり拡大路線やん!と突っ込みが入りそうですが解決策があります。
レジスタに使う8bitのDラッチは、特殊の2種を除いてフラットパッケージを積層(昔の言い方で言う亀の子)にして、積層している同じbit番号の出力と入力を全部繋いでしまいます。
その一山からは、8bitの双方向バスが出ているだけとなります。
こうすると、複雑さと量と性能のバランスが両立できるのではないかと思っていますが検討は続きます。
んんんん・・・ 当初言うてたんと全然違う印象のCPUですね。
やっぱり大きすぎるやろ(笑)
「ロボットの起源」"--C言語"と新CPUは16bit? More ログイン