2 レジスタとは何か

2.1 レジスタとは何か

レジスタを一言で言うと、CPU内の記憶装置みたいなものです。メモリーと同 じで、いろいろなデータを記憶させます。メモリとレジスタの違いは、どこに あるのでしょうか?。以下のような違いを列挙できます。

2.2 コンピューターはどのようにプログラムを実行するか

コンピューターのプログラムは、データと命令から構成されます。この命令と データは、実行時に主記憶装置(メインメモリ)に格納されます。この格納の動 作をロードと言います。これらのプログラムは、CPU内部のレジスタに読み込 まれ、処理されます。実際のコンピューターでのプログラムの動作順序は、次 の通りです。
  1. 補助記憶装置(ハードディスク等)からプログラムがメインメモリーに ロードされます。この指令は、Operating System(OS)が出します。
  2. メインメモリーに格納されたプログラムの指示に従い、CPUが動作しま す。その動作は、
    1. CPUがメインメモリーから命令を取り出します。命令を取り出す アドレスは、CPUのプログラムレジスタに書かれています。
    2. 取り出した命令は、CPU内の命令デコーダーにより、命令の内容 を解析されます。
    3. 解析された命令は、論理演算装置(ALU:arithematic logic unit)により、演算が実行されます。
    4. 演算結果は、各種のレジスターに格納されます。
    5. プログラムレジスタの値を再設定します。
    6. 以上の動作 をプログラム終了まで繰り返します。
    です。
このプログラムの実行方法からも、CPUの中にもデータを記憶する場所が必要 と理解できるでしょう。そのCPU内の記憶装置をレジスタといいます。わざわ ざCPU内に作らなくても、メインメモリーの一部を使えば良いのでは、と考え る人も居るかもしれません。たぶんそれでもコンピューターはできるでしょう が、今よりも複雑になると思います。また、CPUとメモリーのデータの交換が 増えて、動作が遅くなるでしょう。

CPUと主記憶装置は、図3のような関係です。CPUは主記憶 装置のアドレスを指定することにより、主記憶装置に格納されているデータを 引き出します。そして、それはレジスタに記憶され、その中身に従い、処理さ れます。処理された結果ももちろん、レジスタに記憶されます。レジスタの中 身を主記憶装置に戻すことにより、データの加工が完了します。

レジスタもデータなどを蓄えるので、メインメモリー同様、記憶装置の一種です。し かし、それぞれ、役割が異なります。

要するに主記憶装置は、いろいろなデータ(命令もデータの一種と考える)を蓄 えるファイルキャビネットのようなものです。一方、レジスタは、実際にCPU がデータを加工するときに一時的に記憶する場所と考えてください。

C言語やFORTRANのプログラムでは、主記憶装置のデータを加工して、書き換え ているように思いますが、実際は、それらを加工する場合、レジスタが一時的 にデータを記憶し、それをCPUが加工して、主記憶装置に戻しています。

図 3: CPUと主記憶装置の関係
\includegraphics[keepaspectratio, scale=0.9]{figure/COMET_II.eps}



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年9月7日


no counter