我輩の出来る範囲で、極力簡単に CPU の原理をたとえ話で説明しよ うと試みます。幼稚な部分もありますが、しばしご辛抱を。
このTD4は処理単位が4ビットなので、メモリのデータ(後述) を除く、ほとんどの情報が4ビット単位(16進数だと1桁)である、という ことになっています。言われたことはその通りにしますが、何せ物覚えが悪いので、いつもすぐにメ モできるように身の回りに書いたり消したりできるメモを2枚持っています。
それを レジスタ (register, reg. とも表記) と呼び、 取り敢えずAとBの2つがある(メモ用紙2枚に対応)とします。このTD4君は、 処理単位に従ってレジスタも4ビット単位です。TD4君は何せ単純なので、先生(父親でも上司でも可?)が仕事をお願いする ときも一度に複雑なことを言ったのではパニックしてしまいます。なので、逐 一単純な仕事に細かくわけて、それを順々に指示をしないといけないのです。 そこで先生は考えました。引出し付き書棚を用意しておいて、その中に分解し た作業をメモにして順番にいれておき、TD4君には最初(一番上)の引出しから 順々にあけていき、そこに書いてある指示にしたがえばよい、という約束にし ました。
これが メモリ (memory) です。このTD4君は、メモ リは8ビット単位です(後述)。そのとき、いま何段目までやったか忘れないように[今実行している指示は何 段目のもの]か、もメモっておくことにします。ちなみに一番最初は1ではな く0から始まることになっています。さらに、特に指示がない限り、何か指示 をこなすとメモの値を1増やしたものに書きかえる、とします。
このメモも4ビットの情報を持てるものとします。この特別な メモのことを "PC" (Program Counter) と呼びます。 4ビットなので0〜15 のいずれかになります。
さらに厄介なことに、メモは2進数8桁で、そのうち指示は左4桁、パラメー タは右4桁(パラメータが不要な場合もあり)になってい る (ご都合主義で申し訳ないです) ので、TD4 君にはその数と作業の対応関係の表も渡しておきます。
この対応関係をひもとくことこそ、CPU の動作の fetch-decode-execute の decode (復号?) に対応する処理なのです、が、詳細は略します。
先生は、とりあえずこのやり方で仕事を頼んでみることにしました。
この場合、左4桁、すなわち実際に実行すべき機械語の命令のことを オ ペコード (operation code, opecode) 、右4桁のような、その命令の操 作対象(パラメータ)に対応するものを オペランド (operand) 、 と呼ぶことがあります。さらに、このオペランドは、一般的に、レジスタ番号を持ったり、メモリアド レスを持ったり、直接の数値(今回はこれ)だったり、いろいろな場合がある ことも頭の片隅に置いておいてください。ちなみにこのような直接の数値のこ とを 即値データ (immediate data) と呼びます。
この場合、レジスタの内容を表示するだけで、オペランドは無かった(何 か値があっても無視する)です。この TD4の場合はJMP (後述)以外の命 令は全てPC を1増やすのですが、他の CPU では、機械語命令の長さはひ とつに決まってるわけではないです。
実はこの TD4 には終了命令が無いので(ある CPU も勿論あります)、処理が 終了したら何もしない無限ループにする、という約束になっています。おしまいということなので、TD4君は「簡単、簡単」ということで、今回のおし ごとは終了です。
それを見ていた先生は表示されてる数字を見て「ふむ、2か。ちゃんと足し算 できてるな」と納得しました。