【初心者・非エンジニアでもわかる】レジスタとは

レジスタとは?

レジスタ(Register)は、コンピュータのCPU(中央処理装置)内部にある非常に高速で小容量のメモリ領域です。レジスタは、演算やデータ処理を行う際に必要な一時的なデータを格納するために使用されます。メインメモリ(RAM)と比較すると、レジスタははるかに高速で、CPUの処理速度を最大限に引き出すために不可欠な存在です。
レジスタを簡単に例えるなら、キッチンで使う「手元に置いてすぐに使える調味料棚」のようなものです。レジスタは、CPUが直前に使用するデータや結果を一時的に保存するため、毎回遠くにある「冷蔵庫」(メインメモリ)までデータを取りに行く必要がありません。

レジスタの役割

レジスタは、主に以下のような役割を持っています。
  1. データの一時保存 演算する数値や、計算結果を一時的に保存します。
  1. メモリアドレスの保持 メモリのどこにデータがあるかを指し示すアドレス(位置)を保持します。
  1. 命令実行のサポート CPUが次に実行する命令や現在の処理位置を保持します。

レジスタの種類

CPUには、さまざまな役割を持つ複数のレジスタが存在します。以下に主なレジスタの種類を紹介します。
レジスタ名説明サイズ
汎用レジスタデータの計算や移動に使われる一般的なレジスタ(AX、BX、CX、DXなど)16ビット, 32ビット, 64ビット
フラグレジスタ演算結果の状態(ゼロか、負の値かなど)を示すフラグを保持します16ビット
インデックスレジスタメモリアドレスの計算に使われ、配列や文字列の処理に使われます16ビット
スタックポインタスタックと呼ばれるメモリ領域を管理し、データの積み下ろしに使われます16ビット
プログラムカウンタ現在実行中の命令のアドレスを保持し、次に実行すべき命令の場所を指します16ビット, 32ビット

汎用レジスタの例

汎用レジスタは、CPU内部でさまざまな演算やデータの移動に使用されるため、非常に重要です。以下は、x86アーキテクチャにおける汎用レジスタの代表例です。
レジスタ名用途
AXメインの演算用レジスタ(「累算器」とも呼ばれる)
BXメモリアドレスの格納などに使用
CXループカウンタとしてよく使われる
DX入出力操作や乗除算の補助に使われる

図:汎用レジスタの役割

レジスタの使用例

次に、レジスタを使った具体的なアセンブリ言語のコード例を紹介します。
このコードでは、に5を、に10を格納し、その後の値を加算します。結果として、には15が格納されます。このように、レジスタは演算やデータの一時保存に使われます。

レジスタの利点と制限

利点

  1. 非常に高速 レジスタはCPUの内部にあるため、データの読み書きが非常に高速です。
  1. 低レイテンシ メインメモリを使うよりもレジスタを使う方が、CPUの処理効率を向上させます。

制限

  1. 容量が小さい レジスタは非常に高速ですが、容量が非常に小さく、大量のデータを保持することはできません。
  1. 数が限られている CPUが持つレジスタの数は限られているため、プログラム内で有効に使う必要があります。

メインメモリとの違い

レジスタとメインメモリ(RAM)には大きな違いがあります。以下の表でその違いを確認しましょう。
特徴レジスタメインメモリ(RAM)
速度非常に高速高速だがレジスタほどではない
容量非常に小さい(通常数十~数百バイト)大容量(数ギガバイト)
役割演算中のデータの一時保存プログラムやデータの格納
アクセス方法CPU内部で直接アクセスメモリコントローラを介してアクセス

まとめ

レジスタは、コンピュータのCPUが処理を高速に行うために不可欠な小さくて高速なメモリです。プログラムが演算やデータ操作を行う際に、一時的なデータを格納する役割を果たします。レジスタの数は限られており、容量も少ないですが、その圧倒的な高速性が、コンピュータのパフォーマンスに大きな影響を与えます。