RMMT(RightMark Multi-Threaded Memory Test)の使い方とか
miyuri <miyuri@p2.tcnet.ne.jp>
概要
RMMTの使用方法と、関連事項の解説を行う。
1.RMMTの設定項目について
2.プリフェッチについて
3.非テンポラルな書込について
1.RMMTの設定項目について
■All Threads
Lock Virtual Memory Pages
計測に用いる領域を、ページングファイル上ではなく、実メモリに割り当てる。
Set Threads Affinity to Cores
スレッドを各CPUに割り当てる。
期待通りにキャッシュメモリを効かせる等の効果がある。
Start Selected
スレッド毎の設定の`Include in All Thread group'に
チェックが入っているスレッドで、一斉に計測する。
Stop All
全ての計測を停止する。
■Thread N
Include in All Thread group
説明済。
Memory, KB
ここで指定した量のメモリに対して、読み書きを繰り返す。
スレッド毎に異なる領域を確保する。
キャッシュメモリの帯域を計測したいなら、相応に小さくする。
DRAMのそれであれば、十分に大きくする。
Operation
Read
ごく普通の、メモリ→CPUレジスタの読込を行う。
Read w/PF
プリフェッチ命令(prefetchnta)の後で、メモリ→CPUレジスタの読込命令を続ける。
Write
ごく普通の、CPUレジスタ→メモリの書込を行う。
Write NT
非テンポラルな、CPUレジスタ→メモリの書込を行う。
Registers
読み書きに使用するCPUレジスタを選択する。
PF Distance
プリフェッチ距離を設定する。
Start
このスレッドでの計測を開始する。
Stop
このスレッドでの計測を終了する。
2.プリフェッチについて
ここでは、メモリからCPUレジスタに読み込むよりも先に、
よりCPUレジスタに近い場所(L1キャッシュメモリ等)にデータを読み込む事を言う。
ここでの、プリフェッチ距離は、
CPUレジスタへ読み込む直前に発行するプリフェッチ命令で、
どれだけ先のアドレスを与えるかを言う。
プリフェッチは、キャッシュメモリ→CPUレジスタへの読込とは非同期に実行する為、
しない場合に比べて高速化を望める。
3.非テンポラルな書込について
非テンポラルな書込には、次の特徴がある。
・通常のキャッシュメモリではなく、
ライトコンバイニングバッファ(書込み専用のキャッシュメモリ)に書き込む
・それ故に、ライトアロケートを行わない
ライトアロケートとは、CPUレジスタからの書込を、
全てキャッシュメモリ上に対して行う為の手法である。
CPUレジスタから書込を行おうとする場合、
外部メモリのデータを、キャッシュメモリへ読込む。
スタック上の変数を操作する場合等に有利であるが、
大量のデータを書き込む場合は不利になる。
March 22, 2009 初筆