FPGA開発日記

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

自作CPUのGshareの性能をモデルと比較する (3. Gshareの動作を修正する)

モデルおよびBOOMv3に比べてどうも分岐予測の精度が悪い気がしているので、いろいろと調査していた。 もうちょっと外乱に強いように、いろいろ変更する。結構外乱の要因として大きいのが、フェッチステージから命令バッファに入るときに、命令バッファが満杯の時はそのフェッチ・リクエストは破棄される。この時もグローバル履歴のテーブルをもとに戻さなくていけなくて、こういう処理も結構大変だった。

一応、ほとんどの場合においてグローバル履歴テーブルは汚れなくなったが、もうちょっといろいろケアしてやる必要がある。

もう一つは、RASの扱いだ。現在RASによる予測はもうちょっと遅れたステージで予測しているので、ちょっと面倒なことになっている。 RASによる予測が発生した場合も、同様にグローバル履歴テーブルをロールバックさせる必要がある。これも実際にはRASの位置をフェッチステージの同じタイミングまで戻したほうがいいと思っている。

あとは、キャッシュ・ライン内で複数の分岐命令が発生したときをサポートするために、かなり無理やりなGshareの論理になっているので、これも修正しなければならない。