PCのメモリのDual ChannelでGanged/Unganged比較

ちょっと仕事用のPCを追加しようと思っていて、HDDをたくさん入れつつ電気食わない感じで作りたく、久々にパーツ情報を調べていました。いやー、日進月歩、変わってるねぇ。前に組み立てたのはAthlon II X2 250eっていうCPUで、M4A88T-M/USB3というマザーボードでした。4年半ほど前の年末に買ったらしい。東京にいる頃で、秋葉原にメモリを買いに行ったような気もする。それ以来、そっち系の情報はあまり追いかけていなかったので、ちょっと思い出すように調査中。

その中で、メモリのDual Channelってなんだっけっていう、割と古い話に戻ってしまいました。というわけで、自分の中での整理と、ベンチマークも取ってみたのでその検証をば。

とりあえずDual Channelってのはメモリを複数のChannel(経路、伝送路)に分けて配置して、並列で制御することで速度をアップさせる技術です。ものによっては3つや4つの経路を備えたマザーボードもあるようです。良さそうな技術に聞こえるけれど、それぞれのメモリを協調させて動作させなければならず、場合によってはSingle Channelモードで動かしたほうが早い場合もあるようです。

またDual Channelにもモードがあるようで、各経路を一まとめにして制御するGangedモードと、各経路を別々に制御するUngangedモードです。一まとめにしたほうが一気にごっそり取ってこれるので、大量のメモリを使用するアプリケーションが単独で動くシステムでは有利っぽい。でも並列の場合はそれぞれ制御できるので、プロセスが並列で動いている場合に有利。DB専用サーバとか画像や動画を処理する場合はGangedかな。CPU内のキャッシュのヒット率が高い場合もGangedでいいかも。うちのPCみたいにL3削って安くしている場合はUngangedの方が良さそう。

ChannelモードやGanged/Ungangedモードの調整はBIOSで設定したり、場合によってはPCのふたを開けてメモリの挿し位置を調整する必要があります。現状がどうなっているのかはOS側から確認できます。CPU-Zで確認する人が多いようですね。
CPU-Z | Softwares | CPUID.

で、今使っているPCのマザーボードもDual Channelに対応していて、買ったときもDual Channelを有効活用するために同じメモリを二つ買った記憶があります。組み立てて満足していたので、4年半たった今、改めてベンチマークを取ってみました。

結果はこんな感じ。ベンチマークはCrystalMarkで取りました。
CrystalMark 2004 – ソフトウェア – Crystal Dew World.

Single Dual, (Ganged) Dual, (Unganged)
CrystalMark 119827 118701 123783
ALU 23936 23026 24035
Fibonacci 9178 9151 9166
Napierian 4048 3806 4022
Eratosthenes 3444 3276 3578
QuickSort 7244 6771 7247
FPU 22773 21728 22609
MikoFPU 2907 2704 2924
RandMeanSS 11486 11212 11271
FFT 4646 4337 4715
Mandelbrot 3712 3453 3677
MEM 20067 19880 23259
Read 6306.26 MB/s (6306) 6313.44 MB/s (6313) 6202.80 MB/s (6202)
Write 3588.39 MB/s (3588) 4591.36 MB/s (4591) 5806.01 MB/s (5806)
Read/Write 3582.82 MB/s (3582) 4319.31 MB/s (4319) 5409.73 MB/s (5409)
Cache 65693.44 MB/s (6569) 46356.55 MB/s (4635) 58206.84 MB/s (5820)

CrystalMarkってのが総合ポイント、DiskとGPUの結果は載せてないけど、全ての総合です。ALUとFPUのとこはCPU関連。問題のメモリはMemoryってとこです。

Single ChannelからDual ChannelのGangedに変わると、Readは変わらないけれどWriteが良くなる。Read/Writeも良くなる。でもCacheが悪くなる。結果、Memory総合が悪くなる。CPU系も微減。ふむ。

これがDual ChannelのUngangedになると、Readが微減するものの、Writeはさらに改善。Read/Writeもつられて改善。CacheもGangedの時ほど落ちない。そのためMemory総合はいい感じ。CPU関連も若干改善してシステム全体で見ても若干の改善が見られました。

ところで、MemoryのCacheってのが何を意味しているのか分からないんだけど、なんだろね。CPU内のL2、L3キャッシュに関連することかな?その他の値の10倍ぐらいの値だからそんな感じがする。キャッシュに収まるぐらいのサイズの読み込みなのかな?Dual Channelにすると下がるってのはなんでだろう。Dual Channel制御にすることでキャッシュ制御の仕方に問題が出るのか、ヒットしにくくなるのか、とにかく、このシステムではそうなるようです。

まー、そんなわけで、安くしたいからってL3削るのは良くないっていう結論になりました。いや、L3あるシステムで検証してないから想像だけどね。

次のマシンはどうしようかな。