FPGA開発日記

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

自作RISC-V OoOコアの分岐予測性能解析用Performance Monitorの作成2

f:id:msyksphinz:20211004232850p:plain

ちまちまと自作RISC-Vコアを実装している。DhrystoneがPASSできるようになったが、まだまだ性能的にはひどいもんだ。

分岐予測の性能を向上させるためにBTBとBIMのデータ幅を増やしている。最初の方はかなり性能が上がってきた。

"               20386" : {
  "commit" : {  "cmt" :   188,   "inst" :   590,   "dead" :   188  },
  "icache" : {  "request" :   529,   "hit" :   496,   "miss" :    33  },
  "dcache" : {
    "port[0]" : {    "req" :     0,     "hit" :     0,     "miss" :     0,     "conflict" :     0    }
    "port[1]" : {    "req" :     0,     "hit" :     0,     "miss" :     0,     "conflict" :     0    }
    "port[2]" : {    "req" :     0,     "hit" :     0,     "miss" :     0,     "conflict" :     0    }
    "port[3]" : {    "req" :    62,     "hit" :    44,     "miss" :     8,     "conflict" :    10    }
    "port[4]" : {    "req" :   138,     "hit" :   116,     "miss" :     3,     "conflict" :    19    }
    "port[5]" : {    "req" :   107,     "hit" :    82,     "miss" :     1,     "conflict" :    24    }
  },
  "branch" : {    "execute" :   196,     "cmp" : { "execute" :   120, "hit" :   104 },     "uncond" : { "execute" :    76, "hit" :    16 },   },

しかしまだ途中で落ちてしまう。要デバッグだな。

20978 : 1361 : PC=[0000000080002bdc] (22,04) 0ffb7b13 andi    s6, s6, 255
GPR[22](15) <= 0000000000000042
20978 : 1362 : PC=[0000000080002be0] (22,08) 0767e163 bltu    a5, s6, pc + 98
20978 : 1363 : PC=[0000000080002be4] (22,10) 04300593 li      a1, 67
GPR[11](188) <= 0000000000000043
20982 : 1364 : PC=[0000000080002be8] (23,01) 0000855a c.mv    a0, s6
GPR[10](98) <= 0000000000000042
20982 : 1365 : PC=[0000000080002bea] (23,02) c68ff0ef jal     pc - 0xb98
GPR[01](52) <= 0000000080002bee
21014 : 1366 : PC=[0000000080002c42] (24,01) f4442783 lw      a5, -188(s0)
==========================================
Wrong PC: RTL = 0000000080002c42, ISS = 0000000080002052
==========================================
===============================
SIMULATION FINISH : FAIL (CODE=100)
===============================