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  初筆