アドレスバスとは、コンピュータのバスアーキテクチャの一部で、CPUがメインメモリや周辺機器内の特定の位置(アドレス)を指定するための信号線(ワイヤ)の集合です。各信号線は1ビット分のアドレス情報を運び、複数の線を組み合わせることで2進数のアドレスを表現します。

 

仕組み(基本的な動作)

アドレスバスは通常、CPUから外部へ向かう一方向の信号路です。CPUがメモリからデータを読み出したり書き込んだりするとき、まず目的のメモリ位置を表すアドレスをアドレスバス上に出力します。その後、制御バス上の信号(読み出し/書き込みなど)に従って、データバスで実際のデータ転送が行われます。一般的な流れは次のとおりです。

  • CPUがアドレスをアドレスバスに置く。
  • 制御バスの信号(例:MEM_READ、MEM_WRITE)が有効になる。
  • 該当するメモリや周辺機器がアドレスを受け取り、データバスを介してデータを返す(または受け取る)。

アドレスバス幅とアドレス可能なメモリ容量

アドレスバスの幅(線の本数)n に対して、理論上アドレスできるバイト数は 2^n です。実例で分かりやすく示すと:

  • 32ビットのアドレスバス:2^32 = 4,294,967,296 バイト ≒ 4 ギビバイト(GiB)
  • 36本のアドレス線:2^36 = 68,719,476,736 バイト ≒ 64 GiB(古いPCや拡張物理アドレッシングで見られる場合があります) — 最近のパーソナルコンピュータやマッキントッシュは、最大36本のアドレス線を持っています。
  • 64ビットのアドレスバス:理論上は2^64 バイト = 16 exbibytes を超える容量を表現できます(2^64 = 16 × 2^60 バイト = 16 EiB)。

ただし、実際に使用可能なメモリ容量はチップセット、マザーボードやOSの制限、CPUの実装(物理アドレスビット数の制限)などにより、理論値より小さくなることがほとんどです(例:多くの64ビットCPUでも利用可能な物理アドレス幅は64ビット未満です)。

アドレスバスの役割と関連するバス

コンピュータのシステムバスは一般に次の3つで構成されます:アドレスバス、データバス、制御バス。各役割は次のとおりです。

  • アドレスバス:メモリ位置やメモリマップドI/Oのアドレス指定(どこを読んだり書いたりするか)を行う。
  • データバス:実際のデータ(読み書きされる値)を転送する。通常は双方向。
  • 制御バス:読み書きの種類や同期、割り込みなど、転送を制御する信号を送る。

また、アドレスバスはメモリマップドI/O(周辺機器をメモリ空間に割り当てる方式)でも使用され、周辺機器が指定されたアドレスに応答してデータをやり取りします。

実務上の注意点:仮想アドレスと物理アドレス

現代のOSは仮想メモリを使っており、プロセスが扱う「仮想アドレス」はMMU(メモリ管理ユニット)によって物理アドレスに変換されます。したがって「CPUのアドレス幅=プロセスが使える仮想メモリ空間」という単純な関係にはならない点に注意が必要です。さらに、ハードウェアやファームウェアの制限(BIOS/UEFI、チップセット)が実効的な上限を決めます。

まとめ

アドレスバスはCPUがメモリや周辺機器のどの位置を操作するかを指定するための重要な信号線群です。線の本数が増えるほど理論上アドレスできるメモリは指数的に増えますが、実際の利用可能量はハードウェアやOSの制約を受けます。アドレスバスはデータバスや制御バスと協調して動作し、コンピュータシステム全体のデータ転送を支えています。