【メモリたいいきはば】

メモリ帯域幅 とは?

最終更新:
💡 プロセッサへデータを運ぶ「水道管」の太さ

メモリとプロセッサの間で1秒間に転送できるデータ量。AI学習やHPCではメモリ帯域幅がボトルネックになりやすく、性能を左右する重要な指標。

📌 このページのポイント
メモリ帯域幅:1秒に運べるデータ量データ転送が処理の制約になる場合メモリCPU/GPUデータ待ち帯域が狭いメモリCPU/GPU待ちを軽減帯域を広げる理論例:DDR5-4800・データ幅 計64bit4800 × 64 ÷ 8 = 38.4GB/s帯域の比 ≠ アプリの速度比。実効値とも別
パイプの太さは転送能力の比喩で、メモリ容量とは別です。計算能力や遅延が制約なら効果は変わり、理論例は実測性能の保証ではありません。
ひよこ ひよこ
メモリ帯域幅ってなに?容量とは違うの?
ペンギン先生 ペンギン先生
メモリ容量が「バケツの大きさ」だとしたら、帯域幅は「水道管の太さ」だよ。バケツが大きくても水道管が細いと水が流れるのに時間がかかるよね。プロセッサにデータを送る速度のことなんだ。
ひよこ ひよこ
なんでそんなに大事なの?
ペンギン先生 ペンギン先生
最近のGPUは計算能力がものすごく高いんだけど、計算に必要なデータをメモリから読み出す速度が追いつかないことがあるんだ。いくら速い調理器具があっても、食材が届かなければ料理できないよね。
ひよこ ひよこ
AI学習で特に問題になるの?
ペンギン先生 ペンギン先生
AIでも、読み書きするデータ量に対して計算が少ない処理では問題になりやすいよ。一方、データを再利用して大量の計算を行う処理は、計算能力が上限になることもある。AI向けGPUにはHBMを使う製品があるけれど、学習全体が必ずメモリ帯域で決まるわけではないんだ。
ひよこ ひよこ
帯域幅を増やすにはどうするの?
ペンギン先生 ペンギン先生
1秒当たりの転送回数を増やすか、同時に送れるデータ幅を広げるのが基本だよ。独立したメモリチャネルを並列に使う構成もある。ただし、メモリを増設すれば必ず帯域が増えるわけではなく、CPUや基板の対応構成、実際の動作速度を確認する必要があるよ。
ひよこ ひよこ
具体的にどのくらいの数字なの?
ペンギン先生 ペンギン先生
例えばDDR5-4800が4800MT/s、データ幅が合計64ビットで動く構成なら、理論値は4800×64÷8=38400MB/s、つまり38.4GB/sだよ。MT/sには1秒当たりの転送回数が含まれるから、DDRだからといってさらに2倍にはしない。実際には待ち時間などがあり、この理論値やアプリの処理速度を保証する数字ではないよ。
もっと詳しく知りたい人へ

メモリ帯域幅が2倍なら、アプリも2倍速くなる?

一般にはなりません。メモリ転送が主な制約で、同じデータ量を処理する場合には改善が期待できますが、計算能力や遅延が制約なら効果は限られます。GPUでも演算の種類、データの再利用、並列に動かせる処理数で制約が変わるため、対象アプリを計測して判断します。

DDR5の32ビットサブチャネルは帯域計算でどう数える?

通常のDDR5モジュールは32ビットの独立したサブチャネル2つで、データ幅は合計64ビットです。DDR5-4800で両方を合計した理論帯域は38.4GB/sになります。ECC用ビットはアプリのデータ幅に含めません。これは1モジュール分の例で、PC全体の帯域はメモリコントローラーやチャネル構成にも依存します。GBは10億バイトとして計算しています。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「メモリ帯域幅」って出てきたら「メモリとプロセッサの間で、単位時間にやり取りできるデータ量」と思えばだいたいOK!
📖 おまけ:英語の意味
「Memory Bandwidth」 = メモリ帯域幅
💬 Memoryは記憶、Bandwidthは帯域幅。ここでは単位時間に転送できるデータ量を表す言葉だよ

参考資料

← 用語集にもどる