週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

3D V-Cache搭載「Ryzen 9 7950X3D」はゲーミングCPUの最高峰に輝くのか?【前編】

2023年02月27日 23時00分更新

コアの使い分けは“ゲームか否か”

 2種類の特性の異なるコアを備えるインテルの第12世代・第13世代コアの場合、PコアとEコアの使い分けはCPU内に搭載された「ITD(Intel Thread Director)」とOSのスケジューラー(Windows 11が最適だが、Linuxでも対応が進んでいる)の連携で実装されている。

 各CPUコアの負荷や電力効率がOSのタスクスケジューラーに随時フィードバックされ、処理の内容(命令の種類、フォアグラウンドかバックグラウンドか、など)を加味した上で適切なコアに処理が振り分けられる。

 一方AMDはITDのようなハードウェア的な仕組みではなく、ソフトウェア的なアプローチを選択した。チップセットドライバー(5.01.0.3.005以降)に搭載された「AMD 3D V-Cache Performance Optimizer Driver」とAGESA 1.0.0.5c以降のBIOSの組み合わせが振り分け技術の核心部分だ。

 この3D V-Cache Performance Optimizer Driverが“どのコアに処理を振り分けるべきか”を決める。専門的な言い方をすればPreferred Coreが処理の内容により変更される。Preferred Coreの最上位はクロックの高いCCD1側のコアであり、通常の処理ではこれが選ばれる。しかし、ゲームの処理ではPreferred Coreが変更されL3キャッシュの多いCCD0側のコアに処理が割り当てられる。正確なところはもう少し複雑(キー入力のフォーカス等も勘案する)なのだが、概要はこんなところだ。

「HWiNFO Pro」を使えば、Ryzen 9 7950X3Dのコアにどんな優先順位が付けられているかを知ることができる。CPPC上の優先順位である「perf #x」の値が若いほど優先度が高い(非ゲームの場合)ことを示すが、1位から7位まで全てCCD1側のコアである

3D V-Cache搭載Ryzenを組み込む際は、マザーのBIOSをAGESA 1.0.0.5c以降のBIOSにアップデートしておこう。古くても起動はするが、3D V-Cacheの実力は引き出せない。図はASRock「X670E Taichi」のBIOSリスト。1.18 AS03より対応が始まっている

Ryzen 7000X3Dシリーズに対応するAMDチップセットドライバーには、AMD 3D V-Cache Performance Optimizer Driverの項目が存在する

Ryzen 9 7950X3D/ 7900X3Dのセットアップを済ませたら、「AMD 3D V-Cache Performance Optimizer Driver Service」がサービス一覧に登録され、動作していることを確認したい

同様にバックグラウンドで「amd3dvcacheSvc」「amd3dvcacheUser」の2つのプログラムが動いていることもタスクマネージャーで確認しよう

デバイスマネージャーの「システムデバイス」の下にもAMD 3D V-Cache Performance Optimizerが出現する

 では3D V-Cache Performance Optimizer Driverは「何をもって」ゲームか否かを判断しているのだろうか? それは「Windowsのゲームモードか、Mixed Realityモードが発動すればゲームと判断」している。つまりCPU側で「こういう命令ならばゲームである/ない」かという判断をせずに、ゲームか否かの判断はWindows側に丸投げしているのだ。よってRyzen 9 7950X3D/7900X3D利用時はWindows側のゲームモードを有効にする必要がある

 となると必然的にWindows側のデータベースの不備でゲームモードが発動しないゲームが出てくる可能性も考えなければならない。その場合は慌てず騒がず「Xbox Game Bar」を起動し、「これをゲームとして記憶する」にチェックを入れればよい。

 ITDのようなハードウェアありき、かつ汎用性を強く志向した仕組みだとコア仕分けのルール変更はそう簡単ではない(アプリ側の更新、根本ルールを変えるならマイクロコードレベルの更新も必要)が、AMDのやり方なら即時更新が期待できないゲームでも対処できる。

 また、Windowsのゲームモードは実行ファイルのファイル名で判断しているため、ファイル名を既知のゲームのファイル名と同じにするというかなり古典的な方法も使える。ITDよりも“先端技術の結晶”感は乏しく、OSの特定の機能に強く依存する一方で、人間の手による介在の余地を大きく残しているのが面白い。

「CINEBENCH R23」のシングルスレッドテストを実行させると、負荷はCCD1(下側16マス)のコアだけに偏る。CINEBENCH R23はゲームではないため、処理をするのは高クロックで動作するCCD1側のコアが自動的に選ばれる

Win+Gキーを押してXbox Game Barを起動し、ギアアイコンの「設定」内にある「これをゲームとして記憶する」にチェックを入れる(矢印部分)。この瞬間からCINEBENCH R23はゲームとして認識される

この状態でシングルスレッドテストを実行すると、負荷はCCD0(上側16マス)に偏る

 CCD0/ CCD1のどちらを優先するのかはBIOS設定で固定することも可能だ。Ryzen 7000X3Dシリーズ対応BIOSでは、「SMU Common Options」内に「CPPC Dynamic Preferred Cores」なる設定が出現し、「Auto」「Driver」「Cache」「Frequency」の4択から挙動を選択できる。

「Cache」を選んだ場合は処理の内容に関係なく常にCCD0のコアが優先、「Frequency」ならCCD1が優先、デフォルトの「Auto」あるいは「Driver」であれば3D V-Cache Performance Optimizer Driverに任せるということになる。

X670E TaichiのBIOS設画面における設定例。CCD0優先なら「Cache」、CCD1優先なら「Frequency」を選ぶ。特別な理由がないなら自動判別である「Driver」、あるいは同じ設定になる「Auto」設定で良い

 AMDチップセットドライバーと共に導入される「AMD PPM Provisioning File Driver」も、3D V-Cacheを有効活用するための大きなカギだ(このドライバーは従来のチップセットドライバーにも含まれている)。

 このドライバーはWindowsのゲーム/Mixed Realityモード下において、性能の順位の低いコアの動作を止める(コアパーキング)ことでキャッシュヒット率を高める役割を持つ。CPU全体の占有率が一定レベルより高くなった場合はコアパーキングは解除され、手空きのCCDにも仕事が割り振られるため、コア数が不当に制限される訳ではない。

 以上のことを踏まえて、実際のゲームにおける挙動を確認してみよう。ここでは「Tiny Tina's Wonderlands」を使用した。解像度フルHD、画質“最低”状態で立ち止まった時のクロックを観察してみる。まずはCPPC Dynamic Preferred Cores設定がAuto(=Driver)、次にFrequency、最後はAuto設定だがWindowsゲームモードをオフにした時のものだ。

CPPC Dynamic Preferred Cores設定をAuto設定における各コアの負荷およびクロック(「CapFrameX」と「RTSS」を使用)。負荷は全て前半、即ちCCD0上のコアに集中。クロックは変動するが5.175GHzと出ている。下半分のコア(CCD1)も一瞬負荷がかかる時もあるが、上がっても10%止まりだ

CPPC Dynamic Preferred Cores設定をFrequency設定における各コアの負荷及びクロック。今度は後半、即ちCCD1上にあるコアのみが使われる。動作クロックも最大5.625GHzとCCD0に寄せた時よりも高いが、フレームレート(一番上の行)はAuto設定時よりも大きく下がっている点も見逃せない

CPPC Dynamic Preferred Cores設定はAutoだが、Windowsゲームモードをオフにした際の各コアの負荷およびクロック。CCD1側のコアの占有率が高く、かつCCD0側のコアにも低めの負荷が常時かかり続ける。フレームレートはFrequency設定時よりもさらに低い点に注目

 1枚目のスクリーンショットから分かるように、ゲームとそれに関連する処理がCCD0に集められ、パフォーマンス(フレームレート)も大きく向上する。3枚目のようにコア全体に負荷を散らしてしまうと、逆にCCDをまたぐ処理が多くなり、結果的にパフォーマンスが上がりきらない。

 そしてゲームモードをオフにすると、3D V-Cache Performance Optimizer DriverやProvisioning File Driverが判断できなくなり、処理がCPU全体に分散してしまうことが分かる。

 3D V-Cache Performance Optimizer Driver等が働いている状況下では、ゲームから見るとRyzen 9 7950X3Dは実質8コアCPU、Ryzen 9 7900X3Dは実質6コアCPUのように見えると考えることもできる。もちろんアクティブコア数や処理の並列度が一定の閾値を上回れば、即時にコアパーキングは解除されるので単なる6コア/ 8コアCPUと同じではない。必要に応じスケールするCPUと言うべきだろうか。何とも面白い挙動をするCPUに仕上がっている。

 ここまで読んで頂いた読者の皆様はもう分かったと思うが、3D V-Cache Performance Optimizer Driverは複数のCCDを持つRyzen特有の挙動(欠点)をねじ伏せるためのドライバーである。つまり1CCDしか持たないRyzen 7 7800X3Dでは、BIOS設定も3D V-Cache Performance Optimizer Driverも必要ないと考えることができる。

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう

この連載の記事