メモリ帯域幅の計算
1ピンあたりの転送レート、データバスの幅、DIMMやチップ、スタックの数を入れると、メモリのピーク帯域を計算します。実効効率を入れれば、実際に使える帯域のおおよその目安も分かります。代表的な規格はプリセットから選べます。
結果
- ピーク帯域
- –
- 実効帯域の目安
- –
- 1ピンあたりの速度
- –
- 1 nsあたりに運べるバイト数
- –
代表的な規格の比較(1単位あたり)
DDR4・DDR5はDIMM 1枚、LPDDR5Xは64ビット分、GDDR6はチップ1個、HBM3はスタック1個あたりのピーク値です。転送レートは各規格の代表的な速度で、より速い品種や遅い品種もあります。
グラフで見る
ほかの入力は今の値のまま、選んだ入力だけを今の値の1/4〜4倍の範囲で変えたときの結果です。赤い点が今の値です。
帯域の式の意味
メモリのピーク帯域は、1本のデータピンが1秒間に送れるデータの回数(転送レート)にピンの本数(バス幅)を掛け、8で割ってバイトに直したものです。DDR(ダブルデータレート)のメモリはクロックの立ち上がりと立ち下がりの両方でデータを送るため、転送レートはクロック周波数の2倍になります。例えばDDR4-3200のクロックは1,600 MHzで、転送レートは3,200 MT/sです。64ビット幅なら 3,200 × 64 ÷ 8 = 25,600 MB/s、つまり25.6 GB/sです。MHzとMT/sを取り違えると、帯域を半分や2倍に見誤ります。
ピーク帯域と実効帯域
ピーク帯域は、データが途切れずに流れ続けたときの理論上の上限です。実際のDRAMでは、記憶を保つためのリフレッシュ、同じバンクの別の行にアクセスするときの行の切り替え(バンク衝突)、読み出しと書き込みを切り替えるときの待ち時間(ターンアラウンド)などで、データを送れない時間ができます。そのため持続して得られる帯域はピークより低くなります。アクセスのパターンで大きく変わりますが、おおよそピークの60〜90%程度が目安で、連続したアドレスの読み出しでは高く、ランダムなアクセスや読み書きが混ざる場合は低くなります。
広く遅いか、狭く速いか
同じ帯域は、ピンを増やすか、1ピンの速度を上げるかで得られます。GDDR6はチップあたり32ビットの狭いバスを1ピン16 Gb/sという高速で動かし、1チップで64 GB/sを出します。一方HBM3は、DRAMのダイを積み重ねたスタックを1,024ビットという非常に広いバスでつなぎ、1ピンは6.4 Gb/sと控えめでも、1スタックで約819 GB/sに達します。HBMは配線が短く、1ビットを送るエネルギーが小さい反面、シリコンインターポーザなどの高価な実装が必要です。GDDRは通常の基板に実装できますが、高速な信号を扱うため、配線や電力の設計が難しくなります。
メモリの壁とルーフライン
プロセッサの演算性能の伸びに、メモリの帯域や遅延の改善が追いつかない問題はメモリの壁と呼ばれます。読み書きするデータ量に対して演算が少ないプログラムでは、演算器がデータを待って遊んでしまい、性能は帯域で決まります。これを表すのがルーフラインモデルで、到達できる性能は「ピーク演算性能」と「帯域 × 演算強度(1バイトあたりの演算回数)」の小さいほうになります。例えば帯域100 GB/sで演算強度が1バイトあたり1回なら、性能は最大でも毎秒1,000億回の演算です。キャッシュでデータを再利用して演算強度を上げることが、帯域の制約を和らげる基本です。
DRAMの問題を解く
- A約204.8 GB/s
- B約25.6 GB/s
- C約3.2 GB/s
答えと解説を見る
正解:B. 約25.6 GB/s
ピーク帯域は転送回数 × バス幅で、3,200 × 10⁶ 回/s × 8バイト = 25.6 GB/s です。名前の「DDR4-3200」は転送回数(MT/s)を表し、モジュールの規格名「PC4-25600」は帯域(MB/s)を表しています。実際にはリフレッシュや行の切り替え、読み書きの切り替えで待ち時間が生じるため、実効帯域はピークの7〜8割程度になることが多いです。
- Aムーアの法則
- Bシリコンサイクル
- Cメモリウォール
答えと解説を見る
正解:C. メモリウォール
プロセッサの演算性能は年率50%以上で伸びた時期がありましたが、DRAMのアクセス遅延は数十nsからほとんど改善しておらず、CPUが数百サイクルもデータを待つことになりました。これがメモリウォールです。対策として、多段のキャッシュ、メモリの並列アクセス、プリフェッチ、HBMのような広帯域メモリ、演算をメモリの近くで行うプロセッシング・イン・メモリなどが進められています。
- A0.064 GB/s
- B0.64 GB/s
- C6.4 GB/s
答えと解説を見る
正解:C. 6.4 GB/s
帯域は、同時に処理中のデータ量を待ち時間で割って求められます(リトルの法則)。ミスが1つなら 64 B ÷ 100 ns = 0.64 GB/sで、同時に10個処理できれば 10 × 64 B ÷ 100 ns = 6.4 GB/sになります。主記憶の帯域を使いきるには、待ち時間を短くするだけでなく、多くのミスを同時に処理するメモリレベル並列性が欠かせません。0.64 GB/sは同時に1つの場合の値のままで、0.064 GB/sは逆に10で割った値です。
よくある質問
DDR4-3200の帯域はいくつですか?
3,200 MT/s × 64ビット ÷ 8 = 25.6 GB/s です。これは64ビット幅の1チャネル(DIMM 1枚)のピーク値で、2チャネルなら51.2 GB/sになります。実際に使える帯域はこれより低くなります。
MT/sとMHzの違いは何ですか?
MHzはクロックの周波数、MT/sは1秒間のデータ転送の回数(百万回単位)です。DDRのメモリはクロックの立ち上がりと立ち下がりの両方で転送するため、MT/sはクロック周波数の2倍になります。DDR4-3200のクロックは1,600 MHzです。
DDR5のDIMMが2つのチャネルに分かれているのはなぜですか?
DDR5のDIMMは、32ビット幅(ECCなしの場合)の独立したサブチャネル2つでできています。合計の幅はDDR4と同じ64ビットですが、小さな単位で別々にアクセスできるため、同時に処理できる要求が増え、実効的な効率を上げやすくなります。DDR5-6400のDIMM 1枚のピーク帯域は51.2 GB/sです。