まとめ
-
GCC の分岐予測ミスのスケールに 3 を追加すると、分岐予測ミスを警戒するようになります。
-
CPU のスペック 2017 NAB テストでは、最新の AMD および Intel CPU で最大 12% の高速化が示されました。
-
この変更は、2027 年に予定されている GCC 17 で導入される予定です。
本当に小さなコードの調整が顕著なパフォーマンスの向上をもたらした奇妙な月でした。ほんの数日前のことです 誰かが Linux カーネルの 3 行のコードを変更し、次のことを達成したことがわかりました。 これにより、ストレージ速度が 5% 向上しました。さて、誰かが名乗り出て、GCC コンパイラーの 1 行の変更により、Spec CPU 2017 ベンチマークにおける最新の AMD および Intel チップのパフォーマンスが 12% 向上したと主張しました。
変数に 3 を加算すると、新しい AMD および Intel プロセッサが大きな勝利を収めました
全体として、これは 3 つに対する非常に印象的な追加でした。
Phoronix が発見したように、Intel ソフトウェア エンジニアの Lily Cui は、GCC コンパイラへの最小限の変更でパフォーマンスを向上させる方法を発見しました。 Cui がこの特別なパフォーマンスを実現するために使用する正確なプロセスは少し複雑なので、詳しく見てみましょう。
CPU がコードを実行するとき、そのパフォーマンスを「不正行為」しようとします。 CPU は、コード内での決定 (if/else ステートメントなど) に直面した場合、どのパスを取るべきか計算によって指示されるのを待つ必要があります。ただし、「投機的実行」と呼ばれるプロセスでは、CPU がプログラムがどのパスを通るかを予測し、後続のコードの処理を前もって開始します。
これは、友人にハンバーガーが食べたいかピザが食べたいかを尋ねるメッセージを送信し、その後、ハンバーガーが食べたいだろうと予測して、グリルでパティを焼くようなものです。あなたが正しければ、ハンバーガーをより速く調理し、そのスピードで友達を感心させることができます。間違っている場合は、停止してすべてを片付け、代わりにピザを調理する必要があります。同様に、CPU からの誤った推測は、決定を元に戻して別のパスを選択する必要があることを意味します。
これは「分岐の予測ミス」と呼ばれるもので、Cui 氏は、これらを最新の CPU で実行すると、人々が以前に予想していたよりもパフォーマンスが低下することに気づきました。
最近の CPU には深いパイプラインがあり、分岐の予測ミスのコストが高くなります。このコストを増やすと if 変換が促進され、予測ミスによる分岐によるパイプラインのストールが回避されます。
これを修正するために、Cui 氏は分岐予測の誤りのスケールを定義するコード行を変更しました。GCC の内部コード生成数学では、分岐でギャンブルするリスクを冒す価値があるかどうかを測定するためにこのスケールが使用されます。 Cui はスケールに 3 を加えたばかりで、コンパイラは標準の分岐コードの生成について非常に慎重になっています。これにより、分岐のないシーケンスなど、別の方法でコードが最適化される可能性が高くなります。
完了後、Cui は、分子の物理学と化学を計算する 544.nab_r Nucleic Acid Builder (NAB) と呼ばれる SPEC CPU 2017 ベンチマークにプロセッサを実行させました。 Cui 氏は、後戻りする時間が減り、コードをかき回す時間が増えたため、Intel と AMD の両方のチップでパフォーマンスが 12% 向上したことを確認しました。
来年リリースされる GCC 17 に合わせて統合されているため、この変更が表示されるまでにはしばらく時間がかかります。しかし、これは小さな変化が大きな違いを生む可能性があることを示す良い物語です。

電力使用量と温度を削減するための 5 つの隠れた BIOS 調整
パフォーマンスを損なうことなく、より優れたシステムを実現









Leave a Reply