Alpha EV8の分岐予測機に関する論文を読み始めた。
4章のハイブリッドの予測器の構成について間違いを指摘して頂いたので、もう一度勉強し直している。
まず、分岐予測器のエイリアシングというのが出てきたのだが、これをまず知らんかった。 複数の個々の分岐命令が予測テーブルを共有してしまうことにより、分岐予測の精度が下がってしまうこと。GShareなどの分岐予測ではこれがありうる。一方で、ローカル予測ではこれは起きない、そりゃそうだ。
で、それを解決するのがE-gskewという方式だという理解。E-gskewの論文は詳細を読んでいないので分からないけれども、多数決を入れているので、GShareの履歴が乱されたときはローカル予測に戻る、とかそういう機構な気がする。
Alpha-EV8が採用している2BC-gskewなのだが、これはE-gskewとかなり似ているが、最後にMeta Predictionにより最終分岐予測を決定している。 さらにPartial Update Policyという説明があり、これは分岐命令の種類と結果により、どの分岐予測テーブルをアップデートするか(つまり一律すべての分岐予測器をアップデートしない)ということだと思う。
予測の結果、ヒットしたときとミスしたときで結構挙動が違う、というか動作の説明が英語の文章なのでわけわからなくなる。
混乱したのでテーブルを作った。たぶんこういうことだと思う。
分岐予測は難しいなあ。