現在CPUの欠陥「Spectre」と「Meltdown」が大きな話題となっています。対応にはOS側の修正が必要で、特に「Meltdown」修正によりパフォーマンスの大幅な劣化が懸念されているなか、Microsoftは9日、「Understanding the performance impact of Spectre and Meltdown mitigations on Windows Systems」と題した文書を公開し、SpectreおよびMeltdownの緩和策のパフォーマンスへの影響を説明しています
このドキュメントによるとパフォーマンスへの影響はWindowsのバージョンとCPUの世代が大きく影響している模様。
- Windows 10で2016年のSkylake、Kabylake、それ以降のCPUの場合、ベンチマークは一桁遅くなる。しかしパフォーマンス劣化はミリセカンド単位なので多くのユーザーは気づかない
- Windows 10で2015年のHaswellまはたそれより古いCPUの場合、ベンチマークはより遅くなる。パフォーマンスの低下に気がつくユーザーも増える
- Windows 8と7でHaswellまはたそれより古いCPUの場合、大部分のユーザーはパフォーマンス低下に気がつく
- Windows Serverで特にIOを集中して使用するアプリケーションを使用している場合、Windows Serverインスタンス内の信頼できないコードを緩和するために対策有効にすると、パフォーマンスの影響がより顕著になる。各Windows Serverインスタンスの信頼できないコードのリスクを慎重に評価し、環境に対するセキュリティとパフォーマンスのトレードオフのバランスを取る必要がある。
Skylakeやそれ以降の新しいCPUでは、インテルが分岐予測を間接的な分岐に限定しないようにするためのインストラクションを改良し、Spectre対策によるパフォーマンス劣化の影響を軽減しているそうです。
またWindows 7およびWindows 8では、カーネル内ですべてのフォントレンダリングが行われるなど、ユーザー=カーネル間の遷移が多く、Windowsの古いバージョンの方がパフォーマンスインパクトが大きいとされています。
少なくともWindowsを使用している場合、基本的にOSもCPUも新しい方が影響を受けにくいということかもしれません。