1コアではこんなものだが、では全コア有効にするとどこまで性能が伸びるか? ということで、グラフ41のSandraのMemory Bandwidthの64MB/256MBの結果の平均を取ったのがグラフ70である(最初は16MBも計算に入れたのだが、そうするとCore MAが合計で12MBのL2を搭載していることがかなり影響してしまったため、これを抜いて判断した)。

結果を見ると良く判らんというか、SandraはStreamをベースとしたもので、一方RMMAは独自ロジックということもあって、傾向的には同じであるが、数字の比較は難しい感じだ。

そこで、新たなベンチマークを投入してみた。RMMAはバージョンアップに伴い、時々新しいツールが追加されることがある。今回利用したRMMT(RightMark Multi-Thread Memory Test)は、RightMark 3.72から追加されたものであり、RMMA 3.8に付属するRMMTはVersion 1.1となる(Photo03)。これを使い、Threadの数を1~8まで増減させながらRead/Writeを行い、システム全体としてのBandwidthを測定した。ちなみに初期状態だとI/Oのサイズが1MBとなっているが、これだとCore MAにしてもNehalem MAにしてもL2あるいはL3で収まってしまう。そこでI/Oサイズは10MBとし、RegisterはSSE2を利用した。また測定は各条件で30秒間実施し、その30秒後の結果を目視で確認して記録している(このあたりも、もう少し何とかしてほしいところだ)。

Photo03: CPUの数にあわせて自動的にテスト項目が増える仕組みになっており、仮想CPUが8個の状態で、横幅はWUXGA(1920ピクセル)サイズでないと画面に表示できないほど広がる。このあたりはもうすこし何とかしてほしいというか、なんとも思わなかったのか? というか

さて、Readの結果がグラフ71、Writeの結果がグラフ72となる。Core 2や、Core i7でもHTを無効にした場合は、Windowsから認識できるCPUが4つとなるので、この場合は4Threadまでしかテストが出来ないようになっている。そうした事を加味した上で見ていただきたい。

まずグラフ71であるが、少なくともNehalem MAの場合、1Threadでメモリ帯域を使い切るのはちょっと難しいことが見て取れる。とはいえ、大体3Thread程度で完全にメモリ帯域は飽和するようで、4Thead以上をフルに使いたい場合、メモリアクセスをどう緩和するか、が問題になりそうだ。またCore MAと比べた場合、圧倒的な性能差となっていることも判る。Core MAも2Threadで最大9.7GB/secで、Readの理論帯域の75%ほど(Nehalemも25.6GB/secに対する19.7GB/secだから、やはり76%で同等である)を出しているから、効率が特に悪いというわけではなく、もう純粋に絶対値としての帯域の差がそのまま出ている感じではあるが。ただ1Threadでのテスト結果も結構差があるあたりは、(Nehalem MAに比べると)効率が悪い感は否めない。

一方グラフ72の方だが、こちらはCore MA/Nehalem MAのどちらも先にMemory側が飽和している感がある。もっと高速なMemoryを使えば、より高速に動作しそうだ。またCore MAとNehalem MAの差がこれだけ大きいのは、やはり3-way Interleaveで書き込み動作が出来ることの両方が効いているのではないかと考えられる。理論上の帯域が2倍で、かつInterleaveが2-way vs 3-wayだから、計算上は3倍の性能差になる筈で、結果もCore MAが3GB/sec前後なのに対しNehalem MAは9GB/sec近いから、ほぼこの考察にマッチした結果になる。(書き込みの絶対値が低いのはDDR3-SDRAMというか、DRAMの原理的な問題であって、これはCPUに責任は無い)。