先週、Zen 4 CPU セキュリティ緩和策を無効にすると、Ryzen 7000 シリーズの CPU パフォーマンスが実際に *損なわれる可能性があるという驚くべき初期の数値をいくつか共有しました。従来の通念と過去の Intel/AMD プロセッサでは、CPU セキュリティ緩和を無効にするとパフォーマンスが向上しますが、Ryzen 9 7950X では基本的に逆であることがわかりました。その後、さらに多くのテストを実施し、AMD Ryzen 5 7600X を使用して以前の結果を確認し、データをさらに掘り下げました。
先週共有されたデータは、ほとんどのテストで、 AMD Ryzen 9 7950X をデフォルトの安全な緩和状態に保ち、Spectre V1/V2/V4 に関連するいくつかのソフトウェア制御を維持した方が実際には高速でした。これは、Ryzen 7000「Zen 4」プロセッサのすぐに使える Linux の状態であり、「軽減策=オフ」でカーネルを起動すると、実際にはパフォーマンスが低下しました。以前の x86_64 で見られたものとは逆です。
AMD Ryzen 5 7600X とその他のわずかなハードウェア/ソフトウェアの違い、およびほとんど同じベンチマークを使用して、先週の調査結果を確認するためだけにテストを繰り返しました。確かに、Ryzen 5 7600X は、軽減策=オフの状態よりもデフォルトの軽減策の方が明らかに優れたパフォーマンスを示しました。以下は、Ryzen 5 7600X と Linux 6.0 のデフォルトと mitigations=off を並べたものです。
大多数のベンチマークでは、デフォルトの状態を維持する方が mitigations=off よりも高速でした。.軽減策を無効にすると、テストの小さなサブセット、主にさまざまな合成カーネル ベンチマークで効果がありました。 OpenJDK Java ワークロード、データベース ワークロード、Web ブラウザー テスト、および Spectre 軽減策によって通常悪影響を受ける他の多くのワークロードは、軽減策を無効にした場合よりも、この Ryzen 5 7600X システムで実際に実行されました。
念のため、Zen 4 は、既知の CPU セキュリティの脆弱性のほとんどの影響を受けません。 CPU MSrs に基づいて Linux 6.0 に適用されたソフトウェアの観点からまだ関連があるのは、SSBD/Spectre V4 軽減策と、usercopy/SWAPGS バリアおよび __user ポインターのサニタイズに対する Spectre V1 軽減策のために、prctl を介して投機的ストア バイパスを無効にすることです。次に、Spectre V2 には、Retpolines、条件付き間接分岐予測バリア (IBPB)、IBRS ファームウェア、常時オンのシングル スレッド間接分岐予測 (STIBP)、およびリターン スタック バッファー (RSB) 充填があります。
したがって好奇心が強く、より深く掘り下げて、これらの軽減策についてよりターゲットを絞ったカーネルオプションをいくつか試して、特に無効にしたときに Zen 4 の実行が遅くなる原因を特定しました.
SSBD が prctl() によって無効になっているため、 AMD Ryzen 5 7600X では、”spectre_v2=off”を指定して追加の実行を実行し、Spectre V2 のデフォルトの緩和策を無効にし、次に個別に”no_spectrev1″を指定して Spectre V1 の緩和策を無効にしました….
すぐに次のようになりました。無効にすると Zen 4 のパフォーマンスが低下するのは、特に Spectre V2 の軽減策であることは明らかです。 Spectre V1 緩和策を無効にしてもパフォーマンスにはあまり意味がありませんでしたが、Spectre V2 を無効にすると、突然多くのワークロードが低下し、mitigations=off と同様のパフォーマンスが得られました。
多くの異なるワークロードについて、Spectre V2 緩和策を無効にすると、 Ryzen 7000 シリーズでは、実際にはパフォーマンスを向上させるどころか低下させていました…
Spectre V2 緩和策を無効にすることで、デフォルト (安全な) 状態を維持するよりも、コード コンパイル ワークロードを含めてマイナスの影響を受けました。
p>
現実世界のさまざまなワークロードでは、パフォーマンスを向上させるために緩和策を無効にするよりも、Zen 4 をデフォルトのカーネル状態に戻すことが最善であることが示されました.
少なくともこの一連のテストから、以前のプロセッサ ファミリで見慣れていたものとは逆に、パフォーマンスの低下を避けるために Zen 4 に残しておく必要があるのは、特に Spectre V2 の軽減策であることがわかりました。
Spectre V2 軽減策を無効にすると、Ryzen 7000 シリーズのパフォーマンスが実際に遅くなる理由については、AMD だけが効果的に回答できる可能性がありますが、おそらく、Zen 4 が Spectre V2 軽減策の動作を想定してより適切に調整/最適化されていることに帰着します。マイクロアーキテクチャ。いずれにせよ、これは最終的にはエンド ユーザーにとって朗報であり、実稼働システムを使用しているユーザーは、”mitigations=off”モードを実行しようとするのではなく、既定の (安全な) 状態で実行する必要があります。
興味のある方はすべてをご覧ください。 こちらの結果ページを介して、Linux 6.0 上の AMD Ryzen 5 7600X からの緩和テストの結果をご覧ください。