CPUにも記憶する能力があるんですか? ~レジスタとは~

「スーパーで卵買ってきて」

とお使いを頼まれたとしましょう。とてもシンプルなお願いのように聞こえますが、実はその指示の中には、いろんな命令が詰まっています。

この指示を実行するには、スーパーの卵売り場に行き、卵をレジで買い、持って帰ってこなければなりません。人間に指示するときは、「スーパーで卵買ってきて」の一言でこの複雑な処理を実行できますが、コンピュータの場合はそうはいきません。

1つ1つの細かい命令を指示してやらなければならないのです。

CPUが命令を実行していく流れ

実行するプログラムは、補助記憶装置から主記憶装置へと読み込まれます。そして、プログラムは複数の命令で構成されています。

一方、CPUは基本的に命令を1つずつ実行していきます。なので、主記憶装置に読み込まれたプログラムから命令を順番に取り出して実行していきます。

CPUによるプログラムの命令実行手順は以下の通りです。

①主記憶装置から命令の取り出し

②命令の解読

③使用するデータの読み出し

④命令実行!

⑤次の命令の処理へ(①に戻る)

ここで1つ疑問があります。

主記憶装置から命令を取り出すとありますが、その命令はいったいどこに記憶しておくのでしょうか?

また、命令を順番に取り出すとありますが、どれが次の命令だという情報はどこにあるのでしょうか?

取り出した命令はCPU内部のレジスタに記憶される

実はCPU内部にも記憶装置が存在し、これはレジスタと呼ばれます。レジスタが上記の疑問を解決してくれるのです。

あれ、CPU内部で記憶できるなら、主記憶装置とか必要ないのでは?

と思いますが、レジスタの容量はほんのわずかなので、なんでもかんでも記憶できるわけではありません(そのかわり、読み書きの速度はバツグンです)。

レジスタには次のような種類があります。

〇プログラムカウンタ:次に実行する命令が入っているアドレスが記憶されています。

 〇命令レジスタ:取り出した命令を記憶します。

 〇アキュムレータ:演算の対象となるデータ(数や演算結果)を記憶します。 

〇メモリアドレスレジスタ:アクセス対象となるメモリの位置情報を記憶します。 

〇メモリデータレジスタ:メモリから読み込むデータまたは、メモリに書き込むデータを記憶します。 

〇汎用レジスタ:特に機能を限定しないレジスタ。演算対象やアドレス情報といった様々な情報を記憶します。

 この他にも数種類のレジスタがあるようです。あるレジスタで別のレジスタを代用する場合もあるようなので、すべてのCPUにすべての種類のレジスタが搭載されているというわけではありません。なんだか頭が痛くなってきたような気がしますね(笑) 

ここまでの内容から、大体CPU内部がどんな感じになっているかというと、図のようになります。 

このようにして、CPUの内部に必要な情報を保持しているんですね。各レジスタがどのような役割を担っているかを大まかに理解しておく必要はありそうです。

今回は、CPUの処理の流れと、レジスタの概要についてまとめてみました。今後、もう少し細かく命令の実行手順を見ていきたいと思います!

ではでは👋