0

若い分岐命令が分岐予測メカニズムによって既に処理されているが、対応する lhr (または実装によっては ghr) がまだ古い分岐の実際の結果で更新されていない場合、長いパイプラインで実行可能なシナリオであるかどうか疑問に思っています。パイプラインの長さのため。

これは実行可能なシナリオですが、どのように回避されますか?

4

2 に答える 2

0

質問で言及したシナリオは正当に思えますが、これが Branch Predictor に関連する機能/パフォーマンスの問題を引き起こすかどうかは疑問です. 2 つの連続するブランチがあるシナリオを考えてみましょう。古いブランチの予測結果は、若いブランチには表示されません。しかし、背中合わせのブランチがある場合、次の結果が考えられます。

  • 古いブランチが取得され、正しく予測された - ブランチが正しく予測されたため、予測アルゴリズムは予測結果を使用し、その情報を使用して新しいブランチを予測します。古いブランチは既に正しく予測されているため、更新は予測結果に影響しません。
  • 古いブランチが取得され、正しく予測されていない- この場合、プロセッサは古いブランチのシャドウで行われたすべての命令/更新をとにかく押しつぶすため、若いブランチ自体は問題ではありません。したがって、予測は役に立たないでしょう。

同じことが、分岐が行われず、正しく/間違って予測されるシナリオにも当てはまります。これがあなたの質問に答えることを願っています。

于 2017-05-30T09:08:27.507 に答える