FE EXAM

アドレスバス(番地を指定するバス)

CPUがアクセス先のメモリ番地を指定するために使うバス

INTERACTIVE VISUALIZATION
CPU
送る番地
メモリ
アドレスバス幅
32 bit
区別できる番地数 (2ⁿ)
4,294,967,296
アドレス空間(1番地=1B)
4 GB
アドレスバス幅(ビット数)
幅 n ビット → 区別できる番地は 2ⁿ 個。
ステップ 1 / 5
STEP 1/5待機状態CPU(中央処理装置)とメモリがアドレスバスでつながっています。アドレスバスは「どの番地(住所)にアクセスするか」をCPUからメモリへ伝えるための専用の伝送路です。
CPU番地を指定メモリ4,294,967,296 個の番地アドレスバス(32bit幅)単方向: CPU → メモリ(一方通行)
アドレスバス幅とアドレス空間の関係(1番地=1バイトと仮定)
バス幅番地数 (2ⁿ)アドレス空間
4bit2^4 = 1616 B
8bit2^8 = 256256 B
16bit2^16 = 65,53664 KB
20bit2^20 = 1,048,5761 MB
32bit2^32 = 4,294,967,2964 GB
64bit2^64 = 18,446,744,073,709,552,00016384 PB
バス幅が1ビット増えるごとに、扱える番地の数(=アドレス空間)は2倍になります。
解説

📌
アドレスバスとは

「どの番地か」を伝えるCPU0x1Aメモリ一方通行(CPU → メモリ)

アドレスバス(address bus)とは、CPU(中央処理装置)が「メモリのどの番地(住所)にアクセスしたいか」を伝えるための伝送路のことです。メモリは番地(アドレス)という通し番号で区切られた箱の集まりで、CPUはこの番号を指定して目的の箱を選びます。

身近な例で言うと、大きなマンションの郵便受けを思い浮かべてください。各部屋にはすべて部屋番号(101号室、102号室…)が振られていて、配達員は「何号室へ」という番号を指定して荷物を届けます。アドレスバスは、この「何号室か」という部屋番号を伝える役割を果たします。

上のツールで▶ボタンを押すと、CPUが番地を決め、その番地(緑の箱)がアドレスバスを通ってメモリへ送られ、メモリが該当の箱を選び出すまでの流れを確認できます。

➡️
単方向(CPU→メモリ)

番地は片道のみ。逆向きは流れないCPUメモリアドレス →逆向きには送らない(×)

アドレスバスの大きな特徴は、常にCPUからメモリへの一方通行(単方向)であることです。番地を指定するのは必ずCPU側で、メモリ側から「この番地です」と返してくることはありません。

データバスと比べると違いがはっきりします。
アドレスバス:CPU → メモリの一方通行(単方向)。番地を伝えるだけ
データバス:読み書きの両方で使う双方向。データの中身が行き来する

マンションの例で言えば、部屋番号(住所)を指定するのは届ける側だけで、部屋の方から番号を送ってくることはありません。一方、荷物(データ)は届けることも受け取ることもあるので双方向、という対比で覚えると整理しやすいです。

📐
アドレス空間の計算

アドレスバスの幅(線の本数)が決まると、CPUが区別できる番地の数──すなわちアドレス空間(扱えるメモリの広さ)が決まります。1本の線で0か1の2通りを表せるので、n ビットあれば 2 を n 回かけた個数の番地を区別できます。

アドレス空間 = 2^(アドレスバス幅)

例: 1番地に1バイト置けると仮定
・16bit → 2^16 = 65,536 番地 = 64 KB
・20bit → 2^20 = 約100万番地 = 1 MB
・32bit → 2^32 = 約43億番地 = 4 GB
・64bit → 2^64 = 膨大(理論上16 EB)

ここで覚えておきたい重要な性質があります。
バス幅が1ビット増えるごとに、アドレス空間は2倍になる
32ビット幅なら最大4GBのメモリを区別できる(昔の32ビットPCで4GBが上限だった理由)
64ビット幅になると事実上ほぼ無制限のメモリを扱える

上のツールでバス幅のボタンを切り替えると、番地数(2ⁿ)とアドレス空間が連動して変わります。表で各幅の値を見比べ、「1ビットで2倍になる」感覚を確かめてみてください。

関連コンテンツ