FPGA開発日記

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

RISC-V RocketコアとBOOMコアでサポートされているISAの違い

f:id:msyksphinz:20170325154038p:plain

msyksphinz.hatenablog.com

前回BOOMコアでRTLシミュレーションを行おうとしてRTLシミュレーションエラーになってしまっていたのだが、どうしてもエラーの理由が分からず、まさかと思いriscv-toolsをboomのブランチでリコンパイルして動作させてみた結果、動いてしまった。

つまり、現在私の環境には、

  • /home/msyksphinz/riscv : RocketChipシミュレーションプログラム・コンパイル用のgcc
  • /home/msyksphinz/riscv-boom : BOOMコアシミュレーションプログラム・コンパイル用のgcc

が存在していることになる。なんだこれは!

が、逆アセンブルしてみてすぐに分かった。そうか、BOOMプロセッサはCompressed ISAをサポートしていないんだ。

  • RocketChip用リポジトリgccでビルドした場合のdhrystoneスタートアップコード
セクション .text.init の逆アセンブル:

0000000080000000 <_start>:
    80000000:   4081                    li      ra,0
    80000002:   4101                    li      sp,0
    80000004:   4181                    li      gp,0
    80000006:   4201                    li      tp,0
    80000008:   4281                    li      t0,0
    8000000a:   4301                    li      t1,0
...
  • BOOM用リポジトリgccでビルドした場合のdhrystoneスタートアップコード
セクション .text.init の逆アセンブル:

0000000080000000 <_start>:
    80000000:   00000297                auipc   t0,0x0
    80000004:   0d828293                addi    t0,t0,216 # 800000d8 <trap_entry>
    80000008:   30529073                csrw    mtvec,t0
    8000000c:   00000093                li      ra,0
    80000010:   00000113                li      sp,0
    80000014:   00000193                li      gp,0
...

なるほど、RocketChipはRV64のCompressedまでサポートしているが、BOOMは4bype Instructionsに固定してあるのか。

RocketChipとBOOMの性能の違い

Coremarkのコンパイルまではまだ行っていないが、標準で添付されているベンチマークを使うとこれだけの差が現れた。

BOOM : matmul(cid, nc, 16, input1_data, input2_data, results_data); barrier(nc): 19292 cycles, 4.7 cycles/iter, 0.6 CPI
RocketChip matmul(cid, nc, 16, input1_data, input2_data, results_data); barrier(nc): 42136 cycles, 10.2 cycles/iter, 1.5 CPI

BOOMの性能はRocketChipの倍以上だな。