テストレポート
「CPUの脆弱性」対策パッチで,ゲーム性能はどれだけ低下するのか。Intel製CPUを使って取り急ぎ現状を確認してみた
ただ,4Gamer読者が気になるのは,「ゲームにおいてどの程度の影響が出るか」ではないだろうか。
2018年1月20日時点では,まだ各社の対策パッチが出揃っているわけではない。しかもIntelは北米時間17日付けで,「Sandy Bridge世代からKaby Lake世代のCPUを搭載する一部の環境で,OSが再起動する問題」の発生を告知済みだ。Intelは,「すでに導入済みの環境をロールバックすることは勧めない」「再起動の恐れがあるパッチを今後も提供するかどうかはパートナーの裁量に任せる」「来週には修正版をパートナーに向けてリリースする」ことも告知していたりする。「セキュリティ対策のため,とにかく急いですべてのパッチを導入しなければならない」状況には,幸か不幸かなっていないと言えるだろう。
なので,あくまでも対策途上の状況となるが,手元にあった「Core i7-7700K」(以下,i7-7700K)と「Core i7-4790K」(以下,i7-4790K)の両方で,脆弱性対策を行う前と後とで,ゲーム性能にどれだけの影響があるのか,速報版として,ざっと確かめてみたいと思う。
CPUマイクロコードとOSの対策のみを行った状態でテスト
Googleのセキュリティ研究チーム「Project Zero」が公表した脆弱性には,「Variant1」「Variant2」「Variant3」の3つがある。その概要は1月5日掲載の記事を参照してもらえればと思うが,誤解を恐れず,ものすごく簡略化して紹介すると,
- Variant1:CPUが持つ命令の投機実行機能を悪用して,本来なら閲覧できないメモリ範囲の内容を推定できてしまうもので,Spectreの構成要素。ソフトウェア(=修正プログラム)による対策が可能
- Variant2:条件分岐の高速化を図るためCPU側へ実装されている分岐予測アルゴリズムやバッファ(=Branch Target Buffer)の制限を悪用して,割り当てられているのとは別のプロセスにあるメモリの内容を推定できてしまうもので,Spectreの構成要素。ソフトウェアおよびCPUのマイクロコード更新による対策が可能
- Variant3:ユーザープログラムからカーネルのメモリ領域を読み出せる可能性があるというもので,Meltdownに当たる。ソフトウェアによる対策が可能
このうち,Variant2の影響を受けるIntelは,前述のとおり,すでにCPUのマイクロコード更新を行い,マザーボードメーカーへの配布を始めている※。
エンドユーザーは,マザーボードのUEFI(≒BIOS)をアップデートすることでこのマイクロコードを適用可能で,主要マザーボードメーカーのうち,ASUSTeK Computer(以下,ASUS)とMSI,GIGA-BYTE TECHNOLOGY,ASRockは,すでに対策版UEFIの公開を開始している。古い製品だと未対策というケースもあるが,ここ1〜2世代の製品はおおむね対策が終わっている――再起動問題という別のトラブルは発生したが――ようだ。
※AMD製CPUやAPUに対し,Variant2を悪用した攻撃が行えた例はないが,AMDは声明を出して,マイクロコードの提供を予告した。ただし,適用は任意だという。
また,OSの側だと,MicrosoftはVariant2およびVariant3対策として,Windows 10用のセキュリティ更新プログラム「KB4056892」をすでに用意している。
このプログラムはWindows Update経由で適用できるようになっており,64bit版Windows 10 Proの場合,ビルドは16299.125から16299.192へ引き上げられることになる。
一方,ブラウザゲームで重要になるWebブラウザだが,たとえばGoogleの「Chrome」は,北米時間1月23日前後にリリース予定のバージョン64で対策を果たす見込みである。Mozillaの「Firefox」はバージョン57.0.4で対策済み,Microsoftの「Edge」はバージョン41.16299.15.0で対策済みだ。
今回は速報版ということで,ブラウザは対策済み版Edgeのみを使う。この点はあらかじめお断りしておきたい。
というわけでテストのセットアップとなるが,冒頭でも紹介したとおり,今回用意できたのは,Kaby Lakeマイクロアーキテクチャを採用するi7-7700Kと,Haswellマイクロアーキテクチャベースのi7-4790Kだ。依然として利用者数の多いKaby Lake世代と,脆弱性対策によりベンチマークのスコアが大幅に低下するとMicrosoftが指摘しているHaswell世代のCPUという紹介も可能だろう。
組み合わせたマザーボードは,i7-7700KがASUS製の「MAXIMUS IX FORMULA」,i7-4790Kが同社製の「MAXIMUS VII RANGER」となる。ASUSの告知でも明らかなとおり,前者はバージョン1203のUEFIでVariant2へ対策済み。後者は現時点で未対策だ。
本稿では,「対策前」と「対策後」でスコアを比較するが,i7-7700Kとi7-4790Kでは対策後の意味合いが以下のとおり異なることになるので,この点は注意してほしい。もっとはっきり言うと,今回のテスト条件では,i7-4790Kよりi7-7700Kにおける対策後のスコア低下が大きくなる可能性がある。
●i7-7700K
- 対策前:UEFI Version 1009,Windows 10(Build 16299.125)
- 対策後:UEFI Version 1203,Windows 10(Build 16299.192)
●i7-4790K
- 対策前:UEFI Version 3003,Windows 10(Build 16299.125)
- 対策後:UEFI Version 3003,Windows 10(Build 16299.192)
テストに先立って,「Windows環境でSpectre&Meltdown対策を行えているか否かのチェックツール」を実行した結果も次のとおり示しておこう。
テストに用いたGPUは「GeForce GTX 1080 Ti」で,そのグラフィックスドライバには,Variant1&2対策済みの「GeForce 390.65 Driver」を利用することにした。対策前と対策後とでグラフィックスドライバを統一することで,CPU性能への影響が分かりやすくなるはずだと考えている。
そのほかテスト環境は表のとおりとなる。
テスト方法は基本的に,4Gamerのベンチマークレギュレーション21.0準拠。ただし,時間的都合により,「3DMark」(Version 2.4.4180)では,「Fire Strike」と「Time Spy」のみにテスト項目を絞り,さらに「Forza Motorsport 7」のテストは省略。残るゲームタイトルではCPU性能の違いが表れやすい1920
一方,ブラウザゲームを想定したWebブラウザのテストでEdgeを使うというのは前述のとおりだが,テストは「AnTuTu HTML5 Test」「BMark」「Unity WebGL Benchmark」「Octane 2.0」の4つを実施することとした。ウインドウサイズによりスコアが変わることを避けるため,今回は解像度1920
対策後は最小フレームレートが下がる傾向。とくにWebブラウザは多大な影響を受ける
グラフ中に限り,純粋に見分けやすくするため,対策後のみCPU名の後ろに丸括弧書きで「(対策後)」と付記することをお断りしつつ,テスト結果を順に見ていこう。
グラフ1は3DMarkのFire Strikeにおける総合スコアを,詳細スコアである「Graphics Score」「Physics Score」「Combined Score」ともどもまとめたものだ。
まずi7-7700Kの場合,総合スコアは対策前と対策後でほぼ同じ。しかし,事実上のGPUテストであるGraphics score,そしてCPUテストであるPhysics scoreのいずれにおいても,対策後のスコアは対策前と比べて約98%となっている。Graphics scoreも落ちているというのがミソで,脆弱性対策によりシステムコール数が増えて遅延を生み出し,GPUテストにも負の影響をもたらしている可能性を指摘できそうである。
i7-4790Kでも総合スコアは対策前と対策後でほぼ同じ。対策後のGraphics scoreもほぼ同じで,Physics scoreの落ち込みも小さいのは,Variant2対策済みUEFIを未導入だからだろう。
次にグラフ2は,同じく3DMarkから,Time Spyにおける総合スコアと,詳細スコアの「Graphics Score」「CPU test」を並べたものになる。
ここでi7-7700Kの対策後は,対策前と比べて総合スコアは互角。Graphics scoreは約99%,CPU scoreは約97%となった。i7-4790Kもほぼ同じ傾向だが,i7-4790Kは総合スコアでも対策後が対策前と比べて約98%と,若干低い数字が出ている。DirectX 12ベースのテストであるTime SpyはFire StrikeよりもCPU性能が総合スコアに与える影響が大きいため,こういう結果になったのだろう。
「Prey」の結果がグラフ3で,ここだとi7-7700K,i7-4790Kのいずれも,対策後の平均フレームレートは対策前の約99%,最小フレームレートは同97%と,最小フレームレートの落ち込みが相対的に大きくなった。
「Overwatch」におけるスコアがグラフ4だ。i7-7700Kの平均フレームレートは対策前と対策後でほぼ同じだが,最小フレームレートは約99%と若干低下した。i7-4790Kのほうだと,平均で約99%,最小で約97%と,対策後のスコア低下が大きくなっている。
グラフ5は「PLAYERUNKNOWN'S BATTLEGROUNDS」(以下,PUBG)の結果だが,Overwatchと同じく,i7-7700Kの平均フレームレートは対策前と後では約1%のスコア差が付き,最小フレームレートは約2%に開いた。
一方のi7-4790Kは順に約2%,約4%で,対策後のスコアの低下が大きい。もっとも,PUBGはテスト条件次第でスコアがブレやすいため,これだけで「i7-4790Kで性能へのインパクトが大きい」とまでは言い切れないだろう。
Shadow of Warの結果がグラフ6で,そのスコア傾向はOverwatchと似たものになった。i7-7700Kとi7-4790Kのいずれも対策後のスコア低下は最小フレームレートのほうが大きく,またi7-4790Kのほうがスコア低下量が大きい。
グラフ7のWildlandsでもスコア傾向はOverwatchおよびShadow of Warと同じ。ただしここだと,i7-4790Kで対策前と比べて対策後の平均フレームレートは約97%,最小フレームレートが約96%と,スコアの低下率がやや大きい。
「ファイナルファンタジーXIV: 紅蓮のリベレーター ベンチマーク」(以下,FFXIV紅蓮のリベレーター ベンチ)の総合スコアをまとめたものがグラフ8となるが,ここではi7-4790Kが対策前と対策後でほぼ変わらないスコアとなったのに対し,i7-7700Kは約99%と,数字が若干落ちた。UEFIのアップデートによる影響がi7-7700Kで出ていると言えるだろう。
グラフ9はフレームレートを追ったものだが,平均フレームレートは総合スコアを踏襲している。対策前と比べると対策後の最小フレームレートはi7-7700Kが約97%,i7-4790Kが約98%で,ここでも最小フレームレートのほうが対策前と後のスコア差は大きくなった。
ここからは,Webブラウザのテストである。
グラフ10はスマートフォン用のベンチマークツールとしてよく知られているAnTuTu HTML5 Testの結果だ。AnTuTu HTML5 Testはその名のとおり,主にHTML5の処理性能を確認できるのだが,i7-7700Kは対策後に対策前比で約86%と,大きくスコアを落とした。一方のi7-4790Kは約96%なので,マイクロコードレベルのVariant2対策による影響はかなり大きいということになりそうだ。
HTML5を用いた3Dグラフィックス描画性能を計測できるBMarkの総合スコアをまとめたものがグラフ11だが,i7-7700Kにおける対策後のスコアは,対策前の約92%。i7-4790Kだと約99%なので,やはりマイクロコードレベルのVariant2対策による影響の大きさが感じられる結果と言える。
グラフ12はBMarkを構成する4テストの個別スコアを見るものだが,対策後のi7-7700Kで最も大きくスコアを落としたのは,2Dレンダリングのテストである「Canvas score - Test 1」だった。対策前と比べて約83%というスコアには,やはりインパクトがある。
WebGLベースのグラフィックス性能を見ることができるUnity WebGL Benchmark,その総合スコアをまとめたものがグラフ13」だ。
ここで対策前と比べてi7-7700Kの対策後は約95%,i7-4790Kは約96%という結果になった。Haswellに対してはマイクロコードレベルの対策がなされていない以上,ここはVariant3対策の影響がまず出て,さらにi7-7700KではVariant2対策の影響も出ているという理解が適切だろう。
Unity Web Benchmarkの詳細スコアは項目によって数字が大きく異なるため,グラフ14〜16の3つに分けているが,ここで注目したいのは,フラクタル図形であるマンデルブロ集合の描画性能をテストする「Mandelbrot GPU」の結果で,i7-7700Kとi7-4790Kの両方で大きくスコアを落としているところである。
前述しているように,Haswellに対するVariant対策の影響は軽微と思われる。また,ブラウザレベルにおけるVariant2対策の影響は,ブラウザが同じ以上,同程度のはずだ。そこで対策前に対するスコアがi7-7700Kで約93%,i7-4790Kで約95%ということは,Variant3対策の影響で,どちらもI/O周りの性能が低下した結果と考えるのが妥当ではなかろうか。
なお,i7-4790Kだけは,隕石帯の描画を行う「Asteroid Field」で対策後のスコアが対策前と比べて約91%に落ち込んでいるが,この理由は何とも言えない。
Googleが開発したJavaScriptベンチマークであるOctane 2.0の総合スコアがグラフ17となるが,ここでは対策前に対するi7-7700K対策後のスコアが約87%と,大きく低下した。i7-4790Kにおけるスコアの低下率は約3%なので,ここでもマイクロコードレベルにおけるVariant2対策の影響は大きいと言えそうだ。
グラフ18〜20は,やはり数字の大きさ別にOctane 2.0の詳細スコアを3グループに分割したものだが,i7-7700Kはいたるところで対策後の大幅なスコア低下を確認できる。とくにコンパイラの待ち時間を計測する「SplayLatency」とナビエストークス方程式で倍精度配列操作を多用する「NavierStokes」は,それぞれ半分前後にまでスコアが下がっているのが印象的だ(※スコアは正規化したものなので,「Latency」テストでも数字は大きいほうが速いことを示す)。
i7-7700Kだけ大幅なスコア低下となっている以上,ここはVariant2対策の影響ということでいいだろう。マイクロコードがリリースされ,UEFIに反映されると,i7-4790Kでも似たようなスコア低下が生じるはずである。
PCゲーム性能は対策によって若干低下も,ほぼ無視できるレベルか。ブラウザゲームでは致命的になる恐れあり
以上のテスト結果から,現時点でほぼ確実に言えそうなことは,次のとおりだ。
- 脆弱性対策を行うと,Kaby Lake世代とHaswell世代のCPUで確実にゲーム性能が低下する。ただしその低下率は,ほぼ体感できないレベルに留まる
- Webブラウザの処理性能は,脆弱性対策で大きく低下する
- 現時点で脆弱性対策が十全になされていないCPUを搭載する環境では,今後,対策が入ることにより,さらに大きな性能低下を招く可能性がある
また,今回のテストからだと断言はできないものの,エントリークラスのCPUを搭載する環境だと,いままで快適にプレイできていたようなブラウザゲームで快適性が損なわれたと感るようになる可能性もあるだろう。
いずれにせよ,今回のテスト結果は途中経過に過ぎないので,その点は十分に注意してほしい。「脆弱性対策と,それがもたらす影響」については,ある程度まで対策が出揃ったところであらためて検証し直す必要があると筆者は考えている。
Graz University of Technologyによる「脆弱性まとめ」サイト(英語)
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ
「CPUの脆弱性」に手元のゲームPCは対策できているのか。Windows環境で簡単にチェックできるツールを作ってみた
AMD,「CPUの脆弱性」に対策するマイクロコードのリリースを予告
- 関連タイトル:
第7世代Core(Kaby Lake)
- 関連タイトル:
Core i7・i5・i3-4000番台(Haswell)
- この記事のURL: