アドレスレジスタ(アドレスレジスタ)とは | 意味や読み方など丁寧でわかりやすい用語解説

アドレスレジスタ(アドレスレジスタ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

アドレスレジスタ (アドレスレジスタ)

英語表記

address register (アドレスレジスタ)

用語解説

アドレスレジスタは、コンピュータの中央処理装置(CPU)の内部に存在する、レジスタと呼ばれる高速な記憶装置の一種である。その主な役割は、コンピュータの主記憶装置(メインメモリ)上の位置情報、すなわちメモリアドレスを一時的に保持することである。CPUがプログラムの命令を実行したり、データを処理したりするためには、メモリ上のどこに目的の命令やデータが格納されているかを知る必要がある。アドレスレジスタは、その「どこに」という住所情報をCPUに提供するための専用の保管場所として機能する。CPUのあらゆるメモリアクセス動作の基点となるため、コンピュータの基本的な動作原理を理解する上で極めて重要な構成要素と言える。

CPUがメモリからデータを読み出す、あるいはメモリへデータを書き込む一連の処理において、アドレスレジスタは中心的な役割を担う。まず、CPUは実行中のプログラムの指示に基づき、アクセスしたいメモリの番地、つまりアドレスを決定する。この決定されたアドレス値がアドレスレジスタに格納される。次に、アドレスレジスタに保持されたアドレス情報は、アドレスバスという専用の信号線を通じてメモリコントローラに伝達される。メモリコントローラは、受け取ったアドレスを解読し、メインメモリ上の対応する物理的な場所にアクセスする。データの読み出しであればその場所からデータをCPUへ送り、書き込みであればCPUから送られてきたデータをその場所に格納する。このように、アドレスレジスタはCPUがメモリに対して操作を行う際の宛先を指定する指示書のような役割を果たしている。

アドレスレジスタには、その用途に応じていくつかの種類が存在する。最も代表的なものがプログラムカウンタである。インストラクションポインタとも呼ばれるこのレジスタは、CPUが次に実行すべき命令が格納されているメモリアドレスを常に保持している。CPUは命令を一つ実行し終えると、自動的にプログラムカウンタの値を更新して次の命令のアドレスを指すようにし、プログラムを順序正しく実行していく。また、スタックポインタも重要なアドレスレジスタの一つである。これは、スタックと呼ばれる、データの一時的な退避場所として利用されるメモリ領域の先頭アドレスを指し示す。関数の呼び出し時に戻り先のアドレスやローカル変数を格納したり、割り込み処理が発生した際に現在のCPUの状態を保存したりする際に不可欠な役割を持つ。その他にも、スタック内での基準アドレスを示すベースポインタや、配列データのように連続したメモリ領域に効率的にアクセスするために基準アドレスからの距離(オフセット)を保持するインデックスレジスタなどがある。これらのレジスタは、特定の機能に特化している場合もあれば、汎用レジスタがアドレスレジスタとしての役割を兼ねるアーキテクチャも存在する。

さらに、アドレスレジスタは、CPUがメモリアドレスを算出するための多様な方式であるアドレッシングモードの実現に深く関わっている。例えば、レジスタ間接アドレッシングでは、アドレスレジスタが保持している値そのものをメモリアドレスとして使用する。これにより、ポインタのように、プログラムの実行状況に応じてアクセス先を動的に変更することが可能になる。インデックスアドレッシングでは、ある基準となるアドレスにインデックスレジスタの値を加算した結果を最終的なアクセス先のアドレスとする。この方式は、配列の各要素に順番にアクセスするような繰り返し処理で極めて効率的に動作する。これらのアドレッシングモードを駆使することで、プログラマやコンパイラは複雑で柔軟なメモリアクセスを伴うプログラムを記述できる。

アドレスレジスタのビット幅、つまり一度に保持できるアドレス情報の桁数は、CPUが直接管理できるメモリ空間の最大サイズを決定づける重要な要素である。例えば、32ビットのアドレスレJスタを持つCPUは、2の32乗、すなわち約43億通りの異なるアドレスを表現できる。これは、最大で4ギガバイト(GB)のメモリ空間を直接扱うことができることを意味する。一方で、64ビットのアドレスレジスタを持つCPUでは、2の64乗という天文学的な数のアドレスを表現可能であり、理論上は16エクサバイトという、事実上無限に近い広大なメモリ空間をアドレッシングできる。これが、32ビット版OSと64ビット版OSで搭載できるメモリ容量に大きな差が生まれる根本的な理由である。このように、アドレスレジスタは単なるアドレスの格納場所にとどまらず、コンピュータシステムの性能や拡張性を規定する根幹的な技術なのである。

関連コンテンツ

アドレスレジスタ(アドレスレジスタ)とは | 意味や読み方など丁寧でわかりやすい用語解説 | いっしー@Webエンジニア