1. ホーム
  2. c

分岐予測器に、分岐をたどる可能性を伝えることは可能ですか?

2023-08-16 05:46:39

質問

はっきりさせておきたいのですが、私は移植性を求めているわけではないので、特定のボックスに私を縛り付けるようなソリューションでもかまいません。

基本的に、99% の時間で true と評価される if 文があり、パフォーマンスの最後のクロックをすべて削り取ろうとしているのですが、ある種のコンパイラー コマンド (GCC 4.1.2 と x86 ISA を使用、それが重要なら) を発行して、分岐予測装置にその分岐に対してキャッシュするように指示できますか?

どのように解決するのですか?

はい。 http://kerneltrap.org/node/4705

__builtin_expect は gcc (バージョン >= 2.96) が提供する方法です。 プログラマが分岐予測情報を示すために 予測情報を という方法です。の戻り値は __builtin_expect の戻り値は最初の引数(整数でなければならない)である。 に渡されます。

if (__builtin_expect (x, 0))
                foo ();

     [This] would indicate that we do not expect to call `foo', since we
     expect `x' to be zero.