Subsections

2 レジスター

2.1 レジスターとは何か

コンピューターは,おもに計算をするCPUとプログラム(命令とデータ)を格納するメモリ から構成される.CPUとメモリーの間で,命令やデータをやりとりして,プログラムを実 行する.

計算を司るCPUの中にも,容量は小さいながらもレジスターと呼ばれる記憶装置がある. 計算をするためにはある程度の記憶が必要である.教科書を読み理解するときの人間の動 作を考えると分かりやすい.この場合,教科書がメモリーで脳がCPUに対応する.内容を 理解するためには単語を一時的に記憶しているはずで,その記憶する場所がレジスターと 考えればよい.

ここで,第一回の講義で述べたコンピューターの原理を示すチューリングマシーン(図 1)について,思い出して欲しい.明らかに,書き換え可能なテー プがメモリー,オートマトンがCPUを表している.オートマトンの中にあり,内部状態を 表すものがレジスターである.

CPU内にある小さな記憶装置がレジスターである.ここにはCPUで計算するデータや計算 結果を一時的に記憶する.
図 1: チューリング機械
\includegraphics[keepaspectratio, scale=0.9]{figure/Turing_machine.eps}

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

以前述べたように,コンピューターのプログラムはデータと命令から構成される.この命 令とデータは,実行時に主記憶装置(メインメモリ)に格納される2.CPUと主記憶装置は,図2のような関係になっ ている.CPUは主記憶装置のアドレスを指定することにより,主記憶装置に格納されてい るデータを取り出す.そして,それはレジスタに記憶し,その中身に従い,処理する.処 理された結果ももちろん,レジスタに記憶する.レジスタの中身を主記憶装置に戻すこと により,データの加工が完了する.

ここで,諸君が使っている実際のコンピューターでのプログラムの動作順序を示しておく.

  1. 補助記憶装置(ハードディスク等)からプログラムがメインメモリーにロードされ る.この指令は,Operating System(OS)が出す.
  2. メインメモリーに格納されたプログラムの指示に従い,CPUが動作する.その動 作は,
    1. CPUがメインメモリーから命令を取り出す.命令を取り出すアドレスは, CPUのプログラムレジスタに書かれている.
    2. 取り出した命令は,CPU内の命令デコーダーが内容を解析する.
    3. 解析された命令は,論理演算装置(ALU:arithematic logic unit)が 処理(計算)する.
    4. 各種のレジスターに処理の結果が格納される.
    5. プログラムレジスタの値を再設定する.
    6. 以上の動作をプログラム終了まで繰り返す.
    である.

2.2.0.1 注意

CASL IIの学習で1の補助記憶装置からメインメモリーへのロードは学習 の範囲外である.以降の講義では,2の動作について学習する.

このプログラムの実行方法からも,CPUの中にもデータを記憶する装置(レジスター)が必 要な理由が理解できるであろう.ところで,ここでプログラムレジスタという訳の分から ないもが使われていることに気づく.これも教科書の読むときの動作を考えると分かりや すい.プログラムレジスタは,脳の中に記憶される教科書のページ番号だと思えばよい. どこまで読んだか憶えていて,そのページを読んだら次のページをめくるのである.

わざわざCPU内に作らなくても,メインメモリーの一部を使えば良いのでは,と考える人 もいるであろう.それでもコンピューターは可能であるが,今よりも複雑になるだろう. また,CPU とメモリーのデータの間でのデータの交換回数が極端に増加して,動作が遅く なるに違いない.

レジスタもデータなどを蓄えるので,メインメモリー同様,記憶装置の一種である.しか し,以下のような違いがある.

要するに主記憶装置は,いろいろなデータ(命令もデータの一種と考える)を蓄えるファイ ルキャビネットのようなものである.一方,レジスタは,実際にCPU がデータを加工すると きに一時的に記憶する場所と考えれば良い.レジスターにある加工されたデータをメモリー にコピーすることにより,データ処理が完成するのである.

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



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2005-11-18


no counter