米Microsoftでは1月9日、Windows 10の開発責任者であるテリー・マイヤーソン氏が公式ブログに状況のまとめを公開した。
同氏によれば、Variant 1の「境界チェックバイパス」とVariant 3の「不正なデータのキャッシュ読み込み」についてはパフォーマンス上の影響が最小限で、むしろ「分岐ターゲットのインジェクション」であるVariant 2の影響が大きい。
Variant 3(Meltdown)はIntelプロセッサ特有の問題だが(一部でArmの最新プロセッサに含まれる可能性が指摘されている)、Variant 1とVariant 2(Spectre)はIntel以外のプロセッサでの影響も指摘されており、その影響が広範囲に及ぶとみている。
この報告ではIntelのプロセッサにおける影響のみ触れられている。詳細は以下の通りだ。
この中で最も影響が大きいのがWindows Serverだ。前回のレポートでも指摘したように複数のインスタンスやアプリケーションが集中して動作するサーバ環境での影響は避けられない。
またサーバでなくても、ディスクI/Oの頻発する処理(大量のファイルコピーやデータベースアクセスなど)や画像処理などのメモリアクセス、I/Oまわりに負荷を掛けるアプリケーションを実行した場合、アップデートの適用前と後で比較的顕著な差がみられる可能性がある。
一方で、ほとんどの処理では数%程度の変化にとどまり、恐らくベンチマークテストを適用しない限りは体感レベルでの差は小さいと思われる。
興味深いのは、OSとプロセッサの組み合わせで顕著にパフォーマンスの差が出る部分だ。OSとプロセッサの世代が古いほど、パフォーマンス低下の影響が大きいことから、新OSや新プロセッサへの買い換え促進のために旧世代システムにおける性能低下をわざと顕著にしているのではないか、といったユーザーの声も少なくない。
Windows 7/8とWindows 10との間での差は、OSの古さが関係すると予想している。設計思想が新しく、コードも日々リフレッシュされるWindows 10に比べ、既にメインストリームサポートを終了してメンテナンスフェーズに入ったWindows 7/8では対応に差が出るのも仕方がないのではないだろうか。
これに対して同氏は「フォントのレンダリングなどがカーネル内で実行されているなど、古いシステムデザインが残っている」と述べており、Spectreの実行ペナルティになる処理の多くが分離できなかったことを理由に挙げている。
なお、Windows 7/8の世代で新プロセッサによる検証報告がないのは、Microsoftのプロセッサ世代のサポートポリシーによるものだ。Microsoftは新世代プロセッサにおけるサポート対象OSをWindows 10に絞りつつある。
Skylake(第6世代Core)以降の世代とHaswell(第4世代Core)以前の世代とでアップデート後のパフォーマンスが異なる部分について、同氏は「IntelがSkylake以降で分岐予測、より具体的には間接分岐を無効化するよう命令セットを刷新しており、これがSpectre対策におけるパフォーマンス上のペナルティを軽減している」と述べている。
Skylake以降の世代のプロセッサでは新機能として「Intel MPX(Memory Protection Extensions)」と「Intel SGX(Software Guard Extensions)」という命令セットを導入しているが、これは主に仮想化に使われるハイパーバイザー環境におけるメモリ保護を目的としており、同氏の指摘はこの辺りを指しているのではないかと推察する。
また本件に詳しい関係者によれば、Skylake以降ではメモリコントローラー関係で手が入っており、本来であれば仮想マシンの動作高速化に寄与する部分が、結果的にSpectre対策のパフォーマンスへの悪影響を抑えたと説明している。
従って、OSやプロセッサの買い換え促進を狙った情報公開というわけではなく、高速化のためにソフトウェアとハードウェアの双方に施された対策が、結果として新世代プロセッサにおけるパフォーマンスへの影響を軽微にしているということだ。
Copyright © ITmedia, Inc. All Rights Reserved.