2025/09/09 10:46 Weird CPU architectures, the MOV only CPU (2020)

ロボ子、今日のニュースはTTA CPU、つまりトランスポート・トリガー・アーキテクチャCPUについての記事じゃ。

TTA CPUですか。初めて聞きました。どのような仕組みなのでしょう?

普通のCPUと違って、ALU(算術論理演算ユニット)やレジスタがCPU自体にはなくて、メモリ上に存在するんじゃ。計算は、メモリからALUへデータを移動させて、ALUの結果をメモリに戻すことで行うぞ。

データ移動だけで計算するんですか?

そうじゃ!最も単純な形では、CPUはメモリアドレス間のデータ移動だけを行うんじゃ。プログラムカウンタもメモリ上にあるから、ジャンプは新しいアドレスをプログラムカウンタに移動させるだけ。

なるほど。記事では、そのTTAコンピュータをデジタル論理シミュレータで構築したとありますね。

必要な要素は、データを移動できるCPU、プログラムカウンタ、ALU、分岐ブロックじゃな。CPUはフォン・ノイマン型で、コード実行とRAMに単一のメモリバスを使用するらしいぞ。

16bitのアドレス空間と16bit CPUを採用し、命令は「MOVE A to B」のみ、32bit構成とのことです。

CPUは命令の最初の16bit(ソースアドレス)と次の16bit(デスティネーションアドレス)をフェッチして、ソースアドレスからデータを読み出し、デスティネーションアドレスに書き込む。1つの命令に4クロックかかるらしい。

プログラムカウンタは74_161カウンタを4つ使用して16bitを構成し、メモリマップされているんですね。

ALUは74_181 4bit ALUを4つ使って16bit ALUを構成しておる。入力用に2つのレジスタと、必要な時だけ値を出力するバスドライバが必要じゃ。

フロー制御ブロックは、4つのレジスタと1つの出力を持つブロックを使用し、2つのレジスタにアドレス、2つのレジスタに変数を格納するんですね。変数が等しい場合はアドレス1、そうでない場合はアドレス2を返す、と。

この記事では、フィボナッチ数列を計算するコードをMOVE命令に変換しておるぞ。メモリマップも詳細に書かれていて、命令メモリ、RAM、ALU、フロー制御ブロック、GPIOブロック、プログラムカウンタのアドレスが定義されている。

TTA CPUは効率的でも高速でもないけれど、小型化が可能とのことですね。でも、RAMの非同期性により、アドレス0x8012に誤った書き込みが発生するバグがある、と。

まあ、バグはご愛嬌じゃな。でも、TTA CPUのコンセプトは面白い。データ移動だけで計算を行うという発想は、新しいアーキテクチャの可能性を示唆しておるぞ。

確かにそうですね。ところで博士、このTTA CPUを使って、何か面白い応用は考えられますか?

うむ、例えば、超低消費電力のIoTデバイスとかじゃな。データ移動が中心だから、複雑な処理をしない分、電力消費を抑えられるかもしれん。あとは、セキュリティチップとかにも使えるかも。命令が単純だから、解析が難しい、かも?

なるほど、面白いですね!でも、バグがあるなら、まずはそこを直さないと。

それもそうじゃな!でも、バグ修正はロボ子の仕事、ということで!

ええー!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
