CPUとメモリ・I/Oの間で実際のデータを運ぶバス
データバス(data bus)とは、CPU(中央処理装置)とメモリ・入出力装置の間で、実際のデータ(数値や文字の中身)を運ぶための伝送路のことです。バスには役割の異なる3種類がありますが、その中で「中身そのもの」を運ぶのがデータバスです。
身近な例で言うと、宅配便のトラックで運ばれる荷物の中身にあたります。「どの住所へ」を伝えるのがアドレスバス、「届けろ/受け取れ」と指示するのが制御バスなら、データバスは荷物そのものを乗せて運ぶ役割です。
上のツールで▶ボタンを押すと、CPUからメモリへ、そしてメモリからCPUへとデータ(緑の箱)が流れていく様子を確認できます。バス幅のボタンを切り替えると、一度に運べる量がどう変わるかも見られます。
データバスの大きな特徴は、データが両方向(双方向)に流れることです。アドレスバスがCPUからメモリへの一方通行なのに対し、データバスは行きも帰りも使います。
・書き込み(ライト):CPU → メモリの向きにデータが流れる
・読み出し(リード):メモリ → CPUの向きにデータが流れる
ただし、行きと帰りを同時に流すわけではありません。同じ1本のバスを、ある瞬間は「行き」、別の瞬間は「帰り」と時間で使い分けるのが基本です。どちらの向きで使うかは、制御バスが伝える「読み出せ/書き込め」の指示で決まります。
一車線の道路を、時間帯で上り・下りを切り替えて使うイメージです。上のツールでステップを進めると、書き込み(CPU→メモリ)と読み出し(メモリ→CPU)でデータの流れる向きが反転するのを確認できます。
バス幅とは、データバスで同時に通せる信号線の本数のこと。1本の線で1ビットを運べるので、バス幅32ビットなら一度に32ビットをまとめて運べます。高速道路の車線数が多いほど、一度に多くの車が通れるのと同じイメージです。
1回の転送量 = バス幅(ビット数)
例: 256ビットのデータを運ぶとき
・ 8bit幅 → 256 ÷ 8 = 32回
・32bit幅 → 256 ÷ 32 = 8回
・64bit幅 → 256 ÷ 64 = 4回
→ 幅が広いほど少ない回数で運べる
同じデータでも、バス幅が広いほど転送回数が減り、結果として速く運べます。覚えておきたいポイントは次のとおりです。
・バス幅が広い=1回でたくさん運べる=高速
・多くのCPUは32ビット幅や64ビット幅のデータバスを持つ
・実際の転送速度は、バス幅に加えて動作周波数(1秒に何回転送できるか)も影響する
上のツールでバス幅のボタンを切り替えると、256ビットを運ぶのに必要な転送回数が下のグラフで変化します。幅を広げるほど棒が短く(回数が少なく)なるのを確かめてみてください。