読み方 : じっこうアドレス

実効アドレス【efficient address】

概要

実効アドレスとは、CPUが命令を実行する際にメモリ上のデータにアクセスするために最終的に算出されるアドレスのこと。命令中に記述されたアドレス情報にレジスタの値やオフセットなどを加算することで導き出される。
実効アドレスのイメージ画像

コンピュータプログラムメモリ上のデータを読み書きする命令を多数含んでいる。命令の中にアクセス先のアドレスを直接記述する方法もあるが、それだけでは柔軟なプログラムを作ることは難しい。例えば、配列の要素を順番に処理する場合、アクセスするアドレスはループのたびに変化するため、固定のアドレスをそのまま命令に埋め込む形では対応できない。

そのような場合に、基準となる値や相対位置(オフセット)などの情報を組み合わせてアドレスを表現する方法が用意されている。これを「アドレッシングモード」(アドレス指定方式)と呼び、代表的なものは「直接アドレス指定」「間接アドレス指定」「インデックスアドレス指定」などがある。これらの方式では、命令に含まれる値やレジスタの内容をもとに計算が行われ、その結果として求められるのが実効アドレスである。

例えば、「ベースアドレス指定」では、基点となるメモリ上の特定のアドレス(ベースアドレス)に、処理の進行に応じて変化するレジスタの値(インデックス)を加えることで、メモリ上の連続した領域に順番にアクセスすることができる。これは配列の各要素を順次処理するのに効率がよい。他にも、複数のレジスタの値を組み合わせるなど多様な算出方式が存在し、CPUアーキテクチャ基本設計)によって利用できるアドレッシングモードの種類は異なる。

なお、実効アドレスはあくまでプログラムが認識する仮想アドレス空間上のアドレスであり、現代のOSが採用する仮想メモリの仕組みのもとでは、このアドレスがさらにページテーブルを通じて物理メモリ上の実際の物理的な番地に変換され、メモリアクセスが行われる。アセンブリ言語によるプログラミングや低レベル(ハードウェア寄り)なプログラム開発では、実効アドレスの計算を意識しながらコードを記述することが性能やコード品質の向上に繋がる。

資格試験などの「実効アドレス」の出題履歴

▼ 基本情報技術者試験
平28修1 問9】 インデックス修飾によってオペランドを指定する場合,表に示す値のときの実効アドレスはどれか。 インデックスレジスタの値 10 命令語のアドレス部の値 100 命令が格納されているアドレス 1000 。
平25修7 問9】 インデックス修飾によってオペランドを指定する場合,表に示す値のときの実効アドレスはどれか。 インデックスレジスタの値 10 命令語のアドレス部の値 100 命令が格納されているアドレス 1000 。
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。