内部分析で背景を探る

アプリケーション/ゲームベンチを一通り終わらせて、傾向は見えてきたと思う。とにかく謎なのは、なんで「Core i7-8700Kの性能が異様に高いのか」というあたりである。このあたりを含めて、RMMTとSandraで少し内部分析をしてみたい。

ちなみにここからは再び外部GPUとしてGeForce GTX 1080を利用してテストを行っている。

RightMark Multi-Thread Memory Test 1.1(グラフ75~76)

cpu.rightmark.org
http://cpu.rightmark.org/

おなじみRMMTだが、今回Ryzen R7 1800Xについてのみ、ちょっと測定法をいじってみた。RMMTは同時最大8 Threadまで駆動できるが、8 Threadを超えた場合にはWindowsの管理する先頭8 Threadのみが対象になる。

Ryzen 7の場合、2つのCCX(Core Complex)で構成されているが、Thread 0~7はCCX #1、Thread 8~15はCCX #2に割り当てられる。なのでデフォルト状態だとCCX #1しか動かない事になる。

そこでRMMTを立ち上げた状態で、Task Managerを起動(Photo31)、ここで関係の設定を呼び出し(Photo32)、ここでCPUを偶数番号のみ割り当てるように変更する(Photo33)。これで、Thread 0/2/4/6(CCX #1)とThread 8/10/12/14(CCX #2)の両方がRMMTから利用できるようになる。今回Ryzen R7 1800Xの性能が大幅に変わったのは、これが理由である。

Photo31:Task Managerの詳細画面でターゲットを選んで右クリックでコンテクストメニューから「関係の設定」を呼び出す

Photo32:デフォルトだとCPU 0~15が全部RMMTから見えることになる

Photo33:別に奇数だけでもいいのだが

ちなみに同じ事はCore i7-8700Kにも当てはまるのだが、Ryzen 7と異なりCore Complexに相当するものは1つしかないので、こちらでは何も設定していない。

ということで、まずグラフ75がReadである。ピーク性能が一番高いのはCore i7-8700Kで、2 Thread時に41.5GB/secであり、Core i7-7700Kと比較して4GB/secほどの上乗せがある。逆に8 Thread時に最高速なのはなんとRyzen R7 1800で39.7GB/secほど。ただこの時点でもまだCore i7-8700KはCore i7-7700Kと比べて2GB/secほど上回る帯域を確保している。

余談だが、Ryzen ThreadRipperのテストでは、Ryzen R7 1800Xの性能はピークで30GB/sec、8Threadで27.5GB/secほどと示したが、これはテスト方法の問題で、ちゃんと両方のCCX(というか、全てのコア)を使うともっと性能が上がることが分かった。要するにメモリコントローラではなくコア側がボトルネックだった訳だ。

話を戻すと、Write(グラフ76)は関係性の設定の効果もむなしく、相変わらずRyzen R7 1800Xは16GB/secほどである。一方Core i7-8700Kは8 ThreadになるとCore i7-7700Kと大差ない18.5GB/sec程度に収束するが、2 Threadだと25.5GB/secほどでCore i7-7700Kに比べてやはり2GB/secほどの上乗せがある。

これがコアの性能向上なのか、メモリコントローラの性能向上なのかは判断できない(可能性的にはメモリコントローラっぽいが)が、この性能向上がCore i7-8700Kの性能改善の一助である可能性は否定できない。