このような複数の条件分岐予測を1サイクルで行う機構の例として、図8.8のような機構がある。この予測機構では条件分岐命令のアドレスは無視してグローバル履歴だけで予測を行うGAg構造を用い、最初の条件分岐命令のTaken/Not Taken予測値をグローバル履歴に追加して、次の条件分岐命令の予測に使用し、さらに先行する2つの予測値をグローバル履歴に追加して3番目の条件分岐方向を予測する。しかし、これらの予測を順次に行うのではなく、全体を1サイクルで実行する必要がある。

図8.8 GAg構造の3分岐命令の並列予測機構

そのため、PHT(Pattern History Table)を4つのバンクに分割し、グローバル履歴の最下位の2ビットでバンクを識別するようにする。したがって、最初の条件分岐命令の予測では、グローバル履歴の最下位の2ビットを除いた部分をインデックスとして4つのPHTをアクセスし、MX1マルチプレクサでグローバル履歴の最下位2ビットに対応するバンクの選択を行い最初の条件分岐命令の予測値P1を取り出す。一方、2番目の条件分岐命令に対しては、論理的には最初の予測値がグローバル履歴にシフトインされるので、グローバル履歴の最上位の1ビット(シフトアウトされてしまうビット)と最下位の1ビットを除いた部分でPHTをアクセスし、 最下位の1ビットでMX2、MX3を制御し、最初の予測値でMX4を制御して予測値P2を得る。

また、3番目の条件分岐命令の予測では、グローバル履歴の最上位の2ビットを除いた部分でPHTをアクセスし、1番目と2番目の予測値でMX5を制御して予測値P3を得る、このような構成を用いると、順次に予測値をグローバル履歴レジスタにシフトインしたのと同じ予測結果を1サイクルの内に得ることができる。

Rotenberg氏のマイクロアーキテクチャでは、命令のフェッチに当たっては、プログラムカウンタの指す命令アドレスで通常の命令キャッシュとトレースキャッシュを並列にアクセスする。そして、トレースキャッシュにヒットすればトレースキャッシュから命令を供給する。トレースキャッシュにヒットし、分岐予測が正しい場合は、ベストケースでは2つのTaken分岐をストールなしに乗り越えられるので性能改善効果が大きい。一方、トレースキャッシュがミスし、命令キャッシュがヒットした場合は通常の命令キャッシュから命令を供給するので、通常のプロセサと同じ性能になる。

しかし、 Rotenberg氏のトレースキャッシュは、分岐履歴のタグマッチを必要とするので、最初の命令のアドレスが同じでも分岐履歴の違う命令列が出てくると、格納している内容を無効化して、異なる分岐履歴の命令列を格納する必要がある。この問題は、トレースキャッシュをセットアソシアティブとして、同じ先頭アドレスの異なる分岐履歴をもつキャッシュラインを同時に格納できるようにすることで解決できるが、両方のラインに格納される命令列の最初の部分は同じ命令列を格納することになり、メモリの利用効率は低下する。

また、1つのキャッシュラインに含まれる分岐命令数に制限があるので、キャッシュラインの後ろに空きが出る場合がある。さらに、キャッシュラインの長さの制限によりベーシックブロックの途中で打ち切られ、次の命令が別のキャッシュラインに格納される場合があるが、その直後に分岐による入り口がある場合は、その入り口の命令を先頭とするキャッシュラインも必要となり、複数のキャッシュラインがかなり重複したデータを持つことになり通常の命令キャッシュに比べるとメモリの利用効率が悪いという問題がある。