FPGA開発日記

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

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの性能確認)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。Dhrystoneの実行に当たりしばらくデバッグしていたのだが、いろいろ試行錯誤してようやくまともに動作するようになってきた気がする。

LDQ/STQ間フラッシュインタフェースを適用することで、もともとの実装に対してどれくらい性能が向上したのかを見てみよう。

  • LDQ/STQフラッシュインタフェース実装前
$ grep "ISS MCYCLE" dhrystone.riscv.log
ISS MCYCLE is updated to RTL = 000000000000075b
ISS MCYCLE is updated to RTL = 00000000000007a8
ISS MCYCLE is updated to RTL = 0000000000069437
ISS MCYCLE is updated to RTL = 0000000000069457

STARTからSTOPまでのサイクル数は0x69457-0x7a8 = 0x68caf = 429,231 (10進数) だった。

これをフラッシュインタフェース実装した場合で同様に性能測定してみる。

$ grep "ISS MCYCLE" dhrystone.riscv.log
ISS MCYCLE is updated to RTL = 000000000000036e
ISS MCYCLE is updated to RTL = 00000000000003a2
ISS MCYCLE is updated to RTL = 000000000002dd13
ISS MCYCLE is updated to RTL = 000000000002dd2d

STARTからSTOPまでのサイクル数は0x2dd13 - 0x3a2 = 0x2d971 = 186,737 (10進数) だった。 おお、かなり速くなったなあ。

次の課題は、それ以外のテストケースのデバッグと、CALL/RETの最適化が未完なのでこれを見てみよう。