レジスタを一言で言うと、CPU内の記憶装置みたいなものです。メモリーと同
じで、いろいろなデータを記憶させます。メモリとレジスタの違いは、どこに
あるのでしょうか?。以下のような違いを列挙できます。
- レジスタはCPU内部にあり、データを加工するために一時的に、記憶さ
せる。また、加工結果も記憶する。
- メモリに比べて、レジスタの記憶領域は小さい。COMET IIの場合、メ
モリーのアドレス数は65536個あるに対して、レジスタは20〜30個程度
です。
- メモリは番地を指定して目的のデータにアクセスする。一方、レジス
タは名前を指定して、目的のデータにアクセスする。
- 現実の装置の場合、CPUのデータのアクセススピードは、レジスタの方
がはるかに早い(C言語ではレジスタを使ったプログラムができる)。
コンピューターのプログラムは、データと命令から構成されます。この命令と
データは、実行時に主記憶装置(メインメモリ)に格納されます。この格納の動
作をロードと言います。これらのプログラムは、CPU内部のレジスタに読み込
まれ、処理されます。実際のコンピューターでのプログラムの動作順序は、次
の通りです。
- 補助記憶装置(ハードディスク等)からプログラムがメインメモリーに
ロードされます。この指令は、Operating System(OS)が出します。
- メインメモリーに格納されたプログラムの指示に従い、CPUが動作しま
す。その動作は、
- CPUがメインメモリーから命令を取り出します。命令を取り出す
アドレスは、CPUのプログラムレジスタに書かれています。
- 取り出した命令は、CPU内の命令デコーダーにより、命令の内容
を解析されます。
- 解析された命令は、論理演算装置(ALU:arithematic logic
unit)により、演算が実行されます。
- 演算結果は、各種のレジスターに格納されます。
- プログラムレジスタの値を再設定します。
- 以上の動作
をプログラム終了まで繰り返します。
です。
このプログラムの実行方法からも、CPUの中にもデータを記憶する場所が必要
と理解できるでしょう。そのCPU内の記憶装置をレジスタといいます。わざわ
ざCPU内に作らなくても、メインメモリーの一部を使えば良いのでは、と考え
る人も居るかもしれません。たぶんそれでもコンピューターはできるでしょう
が、今よりも複雑になると思います。また、CPUとメモリーのデータの交換が
増えて、動作が遅くなるでしょう。
CPUと主記憶装置は、図3のような関係です。CPUは主記憶
装置のアドレスを指定することにより、主記憶装置に格納されているデータを
引き出します。そして、それはレジスタに記憶され、その中身に従い、処理さ
れます。処理された結果ももちろん、レジスタに記憶されます。レジスタの中
身を主記憶装置に戻すことにより、データの加工が完了します。
レジスタもデータなどを蓄えるので、メインメモリー同様、記憶装置の一種です。し
かし、それぞれ、役割が異なります。
- 主記憶装置
- CPUとは独立です。
- プログラムを格納します。
- データも格納します。
- レジスタ
- CPUの構成部品のひとつです。
- 演算の対象や演算結果を格納します。
- 主記憶装置のアドレスを格納するレジスタもあります。
要するに主記憶装置は、いろいろなデータ(命令もデータの一種と考える)を蓄
えるファイルキャビネットのようなものです。一方、レジスタは、実際にCPU
がデータを加工するときに一時的に記憶する場所と考えてください。
C言語やFORTRANのプログラムでは、主記憶装置のデータを加工して、書き換え
ているように思いますが、実際は、それらを加工する場合、レジスタが一時的
にデータを記憶し、それをCPUが加工して、主記憶装置に戻しています。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年9月7日