メモリアドレス 【memory address】

概要

メモリアドレス(memory address)とは、コンピュータのメインメモリ上での位置を指し示す数値。「番地」とも呼ばれ、現代のコンピュータでは先頭からのバイト数で示すことが多い。

コンピュータのCPUメモリ上に格納されたプログラムから命令を一つずつ読み込み、指定されたメモリ上の位置にあるデータを読み込んで演算を行い、指定の位置に格納する。これら一連の動作の中で、命令やデータを読み込むメモリ上の位置を表す値のことをメモリアドレスという。

メモリ装置には1ビットのデータ(「0」または「1」の2進数の値)を格納できる記憶素子が並んでいるが、1ビット単位でアクセスするのは効率が悪いため、「ワード」と呼ばれるある程度の長さのビット列を一つの単位としてアクセスする。現代のほとんどのコンピュータでは1ワードは8ビット(1バイト)であり、バイト単位でデータの出し入れを行う。

メモリアドレスはメモリ装置先頭からのバイト数で表される。一度にどのくらいの広さのアドレスを指し示すことができるかはコンピュータ内部の伝送路であるバスが一度に転送できるビット数(バス幅)と、CPU内部の一時的な記憶装置であるレジスタビット数によって決まる。

例えば、バス幅32ビットの32ビットCPUの場合は、メモリアドレスとして0から232-1までの値を指定することができ、232バイト(4GiB)までのメモリ空間にアクセスすることができる。バス幅64ビットの64ビットCPUの場合は0~264-1であり、264バイト(16EiB)までの広大な空間を利用できる。

物理アドレスと論理アドレス

現代のコンピュータおよびオペレーティングシステム(OS)では「仮想メモリ」という仕組みが組み込まれており、ほとんどのコンピュータプログラムメモリ装置の物理的な位置(物理アドレス)によってメモリアドレスを指定することはない。

代わりに、OSが設定した論理的なメモリ空間上における先頭から位置(論理アドレス)を指定するようになっており、物理アドレスとの対応関係はOSおよびCPU内部のメモリ管理ユニットMMUMemory Management Unit)によって管理される。これにより、物理的なメモリ容量を超えるメモリ空間を確保し、物理メモリに収まりきらない部分をストレージ上に確保することができる。

ストレージ上に確保した領域はメモリとして直接アクセスすることはできないため、実際に読み書きが必要になったらその時使っていない物理メモリ領域との入れ替えが行われる。この操作を「スワップ」(swap)あるいは「ページング」(paging)と呼び、OSが自動的に行うため利用者やアプリケーションは意識しなくてよい。

(2023.12.31更新)

他の辞典による解説 (外部サイト)

試験出題履歴

ITパスポート試験 : 平24春 問78
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。