そこで、いろいろな大きさのメモリブロックを用意して、そのデータ転送速度を調べればわかるだろうということで測ってみました。こういうメモリ速度測定ソフトっていくつかあるようですけど、探すのが面倒だったので、ちょろっと自作しました。ソースはこれ(ただし64bitモード用は別ソース)。速攻で作成したのでバグがあるかも?
それで、実際に速度を測定したところ、はっきりとキャッシュの効果を確認できたうえになかなか面白い結果となったので公開しちゃいました。ついでにパソコンで主流のIntelチップとの比較もしちゃいました。
|
|
|
|
(コンパイルoption) |
|
|
|
|
(-O2 -6) |
|
|
|
|
(-O3 -march=pentium3) |
|
|
|
|
(-O3 -march=pentium3) |
|
|
|
|
(コンパイルoption) |
270MHz (Ultra5) |
|
(64MB×2) |
|
(-O3 -mtune=v9) |
400MHz (Ultra5) |
|
(128MB×2+64MB×2) |
|
32bit:(-O3 -mcpu=v9) 64bit:(-O3 -mcpu=v9 -m64) |
500MHz (Blade100) |
|
|
|
32bit:(-O3 -mcpu=v9) 64bit:(-O3 -mcpu=v9 -m64) |
2002年10月時点で最速?なPentium4 2.8GHz+PC1066 RDRAM の結果を追加しました。 コンパイラが違うから単純な比較をしたらいけないのでしょうけど。。速すぎます。 でも、128KBから速度が落ちているのが気になります。
CPU 2次キャッシュ メモリ OS コンパイラ
(コンパイルoption)Pentium4 2.8GHz 512KB(内部) PC1066RDRAM Windows2000SP3 VisualC++6.0
(-O2 など)