FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

自作RISC-V ISSでCoremarkが動作するようになった

という訳で、ISSをいろいろ修正して、無事にRISC-VのISSでCoremarkが動作するようになった。 あとは、これにいろいろデバッグ機能を足して、改良していく、という感じかな。

MIPS側のビルドもメンテナンスを行ったので、RISC-VとMIPS、どちらでも同じ機能が利用できるようになった。

github.com

ベンチマークプログラムとしては、以下のリポジトリを利用している。とにかく、いろんなベンチマークをこのリポジトリに集めてテストしよう。

github.com

less init.lua
riscv = make_core ("risc-v")
set_pc (riscv, 0x00100)
run (riscv)
./swimmer_riscv --max 1000000 --out debug.log --binfile ~/benchmarks/coremark_v1.0/coremark.bin --script init.lua  --debug_func --debug_gvar --debug
less debug.log
...
    330518 : [80001d5c] 00008067 : jalr       r00,r01,r103         r01=>80002910 pc<=80002910
    330519 : [80002910] 04e10513 : addi       r10,r02,0x04e        r02=>7f003f78 r10<=7f003fc6
    330520 : [80002914] fc1fe0ef : jal        r01,0xfc1fe          r01<=80002918 pc<=800018d4
<Func: portable_fini>
    330521 : [800018d4] 00050023 : sb         r10,r00,0x00|r00     r10=>7f003fc6 r00=>00000000 (7f003fc6)<=00000000
    330522 : [800018d8] 00008067 : jalr       r00,r01,r103         r01=>80002918 pc<=80002918
    330523 : [80002918] 08c12083 : lw         r01,r02,0x08c        r02=>7f003f78 (7f004004)=>00000190 r01<=00000190
    330524 : [8000291c] 00000513 : addi       r10,r00,0x000        r00=>00000000 r10<=00000000
    330525 : [80002920] 08812403 : lw         r08,r02,0x088        r02=>7f003f78 (7f004000)=>800022e8 r08<=800022e8
    330526 : [80002924] 08412483 : lw         r09,r02,0x084        r02=>7f003f78 (7f003ffc)=>00000000 r09<=00000000
    330527 : [80002928] 08012903 : lw         r18,r02,0x080        r02=>7f003f78 (7f003ff8)=>00000000 r18<=00000000
    330528 : [8000292c] 07c12983 : lw         r19,r02,0x07c        r02=>7f003f78 (7f003ff4)=>00000000 r19<=00000000
    330529 : [80002930] 07812a03 : lw         r20,r02,0x078        r02=>7f003f78 (7f003ff0)=>00000000 r20<=00000000
    330530 : [80002934] 07412a83 : lw         r21,r02,0x074        r02=>7f003f78 (7f003fec)=>00000000 r21<=00000000
    330531 : [80002938] 07012b03 : lw         r22,r02,0x070        r02=>7f003f78 (7f003fe8)=>00000000 r22<=00000000
    330532 : [8000293c] 06c12b83 : lw         r23,r02,0x06c        r02=>7f003f78 (7f003fe4)=>00000000 r23<=00000000
    330533 : [80002940] 06812c03 : lw         r24,r02,0x068        r02=>7f003f78 (7f003fe0)=>00000000 r24<=00000000
    330534 : [80002944] 06412c83 : lw         r25,r02,0x064        r02=>7f003f78 (7f003fdc)=>00000000 r25<=00000000
    330535 : [80002948] 06012d03 : lw         r26,r02,0x060        r02=>7f003f78 (7f003fd8)=>00000000 r26<=00000000
    330536 : [8000294c] 05c12d83 : lw         r27,r02,0x05c        r02=>7f003f78 (7f003fd4)=>00000000 r27<=00000000
    330537 : [80002950] 09010113 : addi       r02,r02,0x090        r02=>7f003f78 r02<=7f004008
    330538 : [80002954] 00008067 : jalr       r00,r01,r103         r01=>00000190 pc<=00000190
    330539 : [00000190] 00100093 : addi       r01,r00,0x001        r00=>00000000 r01<=00000001
    330540 : [00000194] 78009073 : csrrw      r00,0x780,r01        mtohost=>00000000 r01=>00000001 mtohost<=00000001

関数のトレースとグローバル変数のトレースも表示されるようになった。