DirectX & CPU

iRacing は 3月から DirectX 11 対応

iRacing は 2016年 3月ビルドから DirectX 11 に対応する予定を明らかにしました。

パフォーマンスが向上すると言われていますが、そもそもグラフィック処理に CPU はどう使われるのでしょうか。たまにはこんな記事も :D と iRacing エンジニアの発言にインターネット検索で得られた情報を加えて記述してみました。不勉強で間違った情報を書いてしまっていたらぜひ教えてくださいね。

DirectX 11 グラフィックでは実は不十分な並列処理

現時点では、マルチコア CPU を使っていても 1つのコアだけが高い使用率となっていて、他の CPU コア(スレッド) は使われていないようにすら見えてしまったりします(だから現時点の iRacing では GPU よりも CPU のシングルスレッド性能がフレームレートに効く、というケースが案外よく聞かれます)。
iRacing のエンジニア Shawn Nash は、グラフィックエンジンを DirectX 11 に対応させても実質シングルコアしか使えないのは変わらずボトルネックだとしていますが、 DirectX 9 よりも CPU コールごとのオーバーヘッドが減少するので処理速度は向上する と言っています。
DirectX 11 はそもそもが複数の CPU コアをまだ十分には使えない仕様のようですが、GPU 命令を複数スレッドで並列処理できる DirectX 12 ならば、マルチコア CPU を活かしたさらに高速な処理ができると期待されているようですね。

なお DirectX 11 対応は移植によってフレームレートを向上させることがまず最初の目的で見た目の変化はほとんどない、と社長の Tony Gardner は言っています。グラフィック表現の向上は次のステップのようですが、DirectX 11 対応で表現を加えることはやりやすくなるとのエンジニアの発言もこれまでにいくつかありました。

マルチコア・マルチスレッドCPU のメリット

グラフィック描画処理だけを見れば CPU の複数スレッドを十分に使うことはできていないようですが、それならば、シングルコア(シングルスレッド) CPU で十分な性能が出せるのでしょうか。

Shawn Nash によれば、iRacing はすでにサウンド処理をグラフィックとは別スレッドで行っており、新しい並列処理されたサウンドではより多くのスレッドを使う とのこと。
ということはやはり、シングルスレッドCPU よりもマルチコア・マルチスレッド CPU は優位にパフォーマンスを発揮していそうですね。

バックグラウンド処理のためにメモリを空けるために iRacing が使用するメモリを制限するオプション設定でフレームレートの安定性を確保する手法からも、Windows 自身も思った以上にバックグラウンド処理を増やしているように思えます。iRacing が DirectX 12 でマルチコア・マルチスレッド CPU の恩恵を得るのはまだまだ当分先のことなのかもしれませんが、他のアプリケーションを含むバックグラウンドで稼働する処理を含めて、マルチコア・マルチスレッド CPU は今後もそのメリットを大きくしていくのでしょう。

さてハードウェアのアップグレードを検討してみましょうか、このリンクから新しいパーツを購入してアフィリエイトを…(そんなリンクはありませんがうまく広告が出ていることもあるかもしれません :P)


*Shawn Nash: Software Engineer, Papyrus > EA Sports > iRacing