今週で一連の講義は一応終了したのだが、Qパイプの分岐予測が気持ち悪かったし、少なくともQパイプのBZ命令の予測ミスの処理はバグっていることを確信していたので、多少修正。
修正のポイントは、分岐予測を同一クロックスロットでの予測と考えることで対応。(つまり、同一読み出し単位に二つの分岐が入ると、エントリの競合による性能低下を起こすが、普通はないことなの無視)
1)QパイプBZ命令not takenのtaken予測ミスの処理は、PCとの比較対照をQパイプの次命令アドレスとする(Pパイプと同一)
2)Qパイプのtaken予測ミス時にも、分岐予測バッファへの登録を行う。
これによって、ソートの例題で、11256クロックから10838クロックと400クロック以上の大幅な性能向上を得た。(もちろん、実行結果は同一)
先日のファイルに上書きしたので、ダウンロードは、ここ(IP ARCH, Inc.)から。