FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

自作プロセッサの性能解析とその対策(4. 分岐予測アルゴリズムの改善)

自作RISC-Vプロセッサの性能向上対策その4。分岐予測アルゴリズムを、4ステートの分岐予測方式に切り替える。

これまでは、単純な2ステートの分岐予測アルゴリズムを利用していた。

  • 当該命令で分岐すると、次に同じ命令では分岐と予測する
  • 当該命令で分岐しないと、次に同じ命令では分岐しないと予測する

f:id:msyksphinz:20161123162108p:plain

これを、4ステートの分岐予測アルゴリズムに切り替える。4ステートの分岐予測アルゴリズムでは、「Strong Through」「Weak Through」「Weak Jump」「Strong Jump」の4ステートである。

  • Strong Throughステートの場合、当該命令で分岐すると、Weak Throughステートに移行する
  • Weak Throughステートの場合、当該命令で分岐すると、Weak Jumpに移行、分岐しない場合はStrong Throughに移行する。
  • Weak Jumpステートの場合、当該命令で分岐すると、Strong Jumpに移行、分岐しない場合はWeak Throughに移行する。
  • Strong Jumpステートの場合、当該命令で分岐しない場合、Weak Jumpステートに移行する。

f:id:msyksphinz:20161123162611p:plain

この2つを比較して、性能向上比率を測定した。

Cycle Rate
2-state Branch Prediction 49889 100%
4-state Branch Prediction 45528 91.2%

おおよそ9%の性能向上となった。IPCの経過グラフを作成すると、以下のようになった。

青のグラフが、前回のロードレイテンシ+1のグラフ、赤が前回のロードレイテンシ+0のグラフ、さらに黄色のグラフが分岐予測のアルゴリズムを4-stateに変更したものだ。

f:id:msyksphinz:20161123163231p:plain:w800

過去の性能向上対策と解析

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com