途中経過を覚えておくために必要な場所【レジスタ】

レジスタ


スーパーやコンビニにある「レジ」はお客から預かった代金を一時的に保管しておくところです。

コンピュータにも似たような仕組みがあり、そこではデータを一時的に留めておきます。両者に共通することは計算のために途中経過を一旦「留めておくこと」です(店舗の場合は売上、コンピュータの場合は数値)。

この記事ではCPUの中に存在するコンピュータのレジスタについて解説していきます。

レジスタとは?


レジスタとは、CPU内部に存在する極小の記憶領域のことです。

CPUではプログラムを実行する際にプログラムやデータをメモリとやり取りしています。そのたびに受け取ったものを一時的に保持しておく必要があるわけです。

これはCPUで処理される演算についても同じことです。たとえば、計算結果をディスプレイに出力することについて考えてみましょう。

処理が終わると一瞬で結果が表示されますが、そのまま直接ディスプレイに表示されるわけではありません。一時的に記憶領域に留めておいて、そこからディスプレイに命令をすること初めてディスプレイに映ります。CPUにはそのための記憶領域があり、それがレジスタなのです。

制御用レジスタ


一口に「レジスタ」といっても、その役割ごとに種類があります。大きく分けて、制御用レジスタ演算用レジスタです。前者は命令を、後者はデータを記憶すると捉えてもいいでしょう。

ここではまず、プログラム制御の際に使用する制御用レジスタについてまとめていきます。

命令アドレスレジスタ


命令アドレスレジスタとは、実行するプログラムがメモリ上のどこにあるかを保持しておくレジスタです(メモリの示す場所を「アドレス」といいます)。別名「プログラムカウンタ」ともいいます。

保持しているアドレス情報からプログラムを取得し命令レジスタに渡すと、次に実行するプログラムのアドレスを指します。

命令レジスタ


命令レジスタとは、命令アドレスレジスタから取得したプログラムを保持しておくレジスタです。

「命令アドレスレジスタ」と「命令レジスタ」は名称が似通っていて紛らわしいのですが、明確な違いがあります。命令アドレスレジスタは「アドレス」を保持し、命令レジスタは「プログラム(命令)」を保持するのです。それぞれ扱うデータが異なります。

ちなみにここでいう「プログラム」とは、プログラムを細かく分割した命令語のことです。

演算用レジスタ


この記事のはじめに「レジスタは計算のために途中経過を留めておくところ」という旨を書きました。演算用レジスタは演算に利用するデータ(とそのメモリアドレス)や途中経過を留めておく場所です。

ここでは演算用レジスタについてまとめていきます。

指標レジスタ


指標レジスタとは、基準となるアドレスとの相対的な差を保持するレジスタです。

指標レジスタは多くのプログラム言語でサポートされている配列、つまりメモリ上に連続して配置されるデータ構造を実現するために利用されるレジスタです。これは「基準から何バイトずつデータにアクセスすればいいのか」を表します。

指標レジスタは別名「インデックスレジスタ」ともいいます。

基底レジスタ


基底レジスタとは、メモリアクセスの際に基準となるアドレスやプログラムの先頭位置を保持するレジスタです。

このレジスタのお陰でプログラムがメモリ内のどこに配置されても目的のデータにアクセスできます。これは「プログラムの再配置性」と呼ばれるものです。

基底レジスタは別名「ベースレジスタ」ともいいます。

累算器


累算器とは演算装置で処理されるデータや処理結果のデータを保持するレジスタです。ちょうどわたしたちが算数の計算問題を解くときに計算過程書き留めておくノートのページをイメージしていただけると分かりやすいと思います。

累算器は別名「アキュムレータ」といいます。

汎用レジスタ


汎用レジスタとは、その名前の示す通り送られてきたプログラムに応じて動作するレジスタです。

主な役割は、CPUとメモリとのやり取りをスムーズにするためにメモリからあらかじめプログラムやデータを取得しておくことです。

忘れないためには「レジスタ」が必要になる


CPUのレジスタはメモリよりも速く処理できますが、多くのデータを保持することはできません。膨大な処理をこなすには途中経過忘れてしまわないための工夫が必要です。


イメージとしては、ちょうど私たちが計算問題解くことと同じです。計算する数字を覚えておいて素早く数式を操作し、解き終わったらすぐ次の問題に取り掛かると思います。

そして、それ以前に計算した内容など覚えていないはずです。これもレジスタと同じ点でしょう。


そして桁が大きな数の計算はたいていの方々には難しい問題です(かくいうわたしも!)。計算する数の桁も長くなりますし計算過程についても多くの情報が必要だからです。

九九と5桁同士のかけ算とでは利用する能力は同じですが、必要となる情報や留めておかなければならない過程は多くなります。後者を暗算でこなすことはまずできませんから、通常は途中経過を紙に書き留めておくはずです。


このように記憶をするにも作業に応じて方法が変わってきますが、共通することは「途中経過を留めておくこと」が必要な点です。





それでは、今回はここまでといたします。
最後までお読みいただきありがとうございます。


レジスタ
最新情報をチェックしよう!