本当は怖いHPC

HPC屋の外部記憶装置。メモ書き。ちゃんとしたものは別のところに書く予定です

DDRメモリの理論メモリバンド幅の求め方

HPCの研究や開発をしていると、システムの理論メモリバンド幅を計算する必要が出てきます。アプリケーションがハードウェアの性能をどれくらい引き出すことができているかの目安になるからです。計算方法は、わかってしまえば当たり前ですが、はっきりと書いてある資料はあまり多くありません。よって自分用メモ。

理論メモリバンド幅は、ピークメモリバンド幅あるいはバーストレートとも呼ばれ、ハードウェア規格上の 限界値(上限)を示します。つまり、ハードウェアが規格通りに動作する限り、 それ以上の性能は絶対に出ないということです。

ピークメモリバンド幅は、以下の4つの要素の積で求められます。

  1. Base DRAM clock frequency
  2. Number of data transfers per clock = データ転送回数 [MT/s] = 2 (固定値:DDRはDouble Data Rateを指します)
  3. memory bass width = 8B (64 bits) (固定値:DDRシリーズの規格(DDR, DDR2, DDR3, DDR4)では共通)
  4. Number of interface=チャネル数

(1),(2),(3)はメモリの性能で規格の名前から、(4)は下図のようにCPU側の性能でスペックシートから得られます。

f:id:keisukefukuda:20151105105534p:plain

「DDR3-1333」のようなメモリの規格の名称についている「1333」などの数字は、 (1) Base DRAM clock frequency × (2) data transfer per clock の積をあらわします。実は、(2) data transfer per clockは、普通のDDRメモリであれば2で固定です。よって、DDR3-1600であれば、(1) Base DRAM frequencyは800MHzと逆算できます。

まとめると、計算式は

理論メモリバンド幅 =  (1) × (2) × (3) × (4)
          =「規格の後ろの数字」× 8 × 「CPUのメモリチャネル数」

となります。

Core i7 3930KにDDR3-1600のメモリを接続した場合の理論バンド幅は、

1600 * 8 * 4 = 51200 [MB/s] = 51.2 [GB/s]

ということで、Intelのページのスペック表とも一致しますね(下図)。

f:id:keisukefukuda:20151106102815p:plain

http://ark.intel.com/products/63697/Intel-Core-i7-3930K-Processor-12M-Cache-up-to-3_80-GHz

プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus)

プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus)