FPGA開発日記

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

自作RISC-V CPUコアで構成を変えながら性能を測定していく (3. Dhrystoneのボトルネック解析ツール)

自作RISC-V CPUコアの方は、いくつかのコンフィグレーションにおいてDhrystoneを完走させることができるくらいになってきた。

前回の結果に基づいて、どの部分でストールが発生しているかというのをチェックする。

まず、命令バッファが埋まり切っているタイミングで、どのリソースが足りていないのかをチェックする。

命令バッファが埋まっているタイミング。どのリソースが足りずにストールしているのか。

このタイミングでは、STQが埋まってしまっており命令が動かなくなっている。 STQを見てみると、確かにほぼ埋まり切っている(が、満タンではない)これ以上命令が進むことが出来ない。

STQがほぼ埋まっている様子。新しい命令を格納することが出来ない。

なんでSTQが埋まり切ってしまっているかというと、STQはMissUnitとST-Bufferの両方と関わりがあるので、それぞれを確認する。

MissUnitとSt-Bufferは完全に埋まっているわけではない

では、STQのステートマシンの動きが遅いのか?

うーん言えることは、

  • フォワーディングが遅くて命令の発行が遅れている
  • WAIT_COMMITが長く、ストア命令が確定するまで時間がかかっている

ということは、まずはSTQの大きさを大きくしてみるところかなあ。しかし、フォワーディングが速くなければ結局STQも早く動くことが出来ない感じがしている。