命令レジスタ

読み:めいれいれじすた / 英語表記:instruction register

CPUが主記憶から取り出した(フェッチした)命令を、解読して実行するまでの間、一時的に保持しておくレジスタ。命令レジスタの内容は、命令デコーダに渡される。

イマシルちゃんの解説

料理をするとき、レシピの本から次の手順を1つ読んで、手元のメモに書き写すとするよ。

本のどのページを読むかを覚えておく「しおり」と、
今やる手順を書いておく「手元のメモ」があれば、迷わずに料理を進められるよね。
CPUの中にも、この「しおり」と「メモ」の役目をする、小さな記憶の場所があるんだ。

より深い解説

命令実行の流れ

CPUは、次のサイクルを繰り返して、プログラムを実行する。

段階内容使う構成要素
1. 命令の取出し(フェッチ)プログラムカウンタが示す番地の命令を、主記憶から読み出すプログラムカウンタ、命令レジスタ
2. 命令の解読(デコード)命令レジスタの命令を解読し、何をするかを決める命令デコーダ
3. オペランドの読出し演算に使うデータを、レジスタや主記憶から読み出す汎用レジスタ
4. 実行演算を行うALU(演算装置)
5. 結果の書込み結果を、レジスタや主記憶に書き込む汎用レジスタ、アキュムレータ

フェッチした命令は、「主記憶 → 命令レジスタ → 命令デコーダ」の順に渡される。

主なレジスタ

レジスタ役割
プログラムカウンタ(プログラムレジスタ)次に実行する命令が格納されている主記憶の番地を保持する。命令を取り出すたびに、次の番地に進む
命令レジスタ取り出した命令そのものを保持する
アキュムレータ演算の結果を一時的に保持する
汎用レジスタデータや番地など、様々な値を一時的に保持する
フラグレジスタ演算結果がゼロか、負か、桁あふれしたかなどを保持する

プログラムカウンタは「どこから取り出すか」という番地を持ち、命令レジスタは「取り出した命令」を持つ。

データキャッシュとの区別

キャッシュメモリは、主記憶とCPUの速度の差を埋めるための高速な記憶装置で、命令用(命令キャッシュ)とデータ用(データキャッシュ)に分けることがある。フェッチした命令がデコーダに渡る前に保持される場所は、命令レジスタである。

実際の試験ではここに出る!

↑