Minimal RAM Latency 8MB(グラフ93~100)
先のグラフ89~92はAverage、つまり平均のLatencyだがこちらはMinimal、つまり最小Latencyである。サイズは8MBのみを選んだが、これは先ほども書いたとおりL3 Cacheの容量に合わせての事だ。つまりテスト名としてはRAM Latencyだが、実際にはL3 Cacheをアクセスする場合のLatencyを測定していると考えて欲しい。テストはL1 Cache LineへのLoadとL2 Cache LineのLoadの2種類について、4種類のアクセスパターンで行なっている。ちなみにグラフの横軸がNOP Countになっているのは、テストがあらかじめNOP命令を埋め込んだページを作っておき、これをメモリからCache LineにFillする速度を測定しているためで、間違いではない。
さてまずL1 Cache LineのForward(グラフ93)を見てみると、Ivy Bridgeで5.6cycleほど、Haswellで5.1cycleほどに収束する。Backward(グラフ94)も同傾向だが、Haswellのデータがやや暴れだすのが気になるところ。で、Random(グラフ95)ではHaswellがほぼ平均的にLatencyが増えているのが判る。Pseudo-Random(グラフ96)でも同じで、平均して6~7cycleほどIvy BridgeよりLatencyが増えているのが判る。
この傾向はL2 Cache Lineへの場合(グラフ97~100)もほぼ同じである。理屈から言えば、L1 Cache Line FillはL3→L2→L1で、一方L2 Cache Line FillはL3→L2で済む分Latencyが若干少ないはずで、実際グラフを見ても微妙にLatencyの絶対値が減っているが、1回の転送ならばともかく64byte(ということはCache Line 1本分)のFillともなると連続して転送が行なわれる関係で、L2→L1の転送のオーバーヘッドは遮蔽されてしまうようだ。そんなわけでこちらも結果はほぼ同じ様になっている。というわけで、L3に関してもやはり、シーケンシャルは高速だがランダムとかは遅いという傾向がはっきり見える事になった。