ちまちまと自作RISC-Vコアを実装している。DhrystoneがPASSできるようになったが、まだまだ性能的にはひどいもんだ。
BTBとBIMがDhrystoneをある程度動かせるようになってきたので、性能を見てみた。 Dead状態になるコミットはかなり減ってきた。ただしまだ全体の内1/4はパイプラインフラッシュによって殺されている。
分岐予測失敗のうち、Conditional Branchによる失敗はかなり減ってきた。次に問題となるのはReturn命令だ。 RASの実装が足りていないのがここに来てボトルネックになっている。これを実装して行こう。
" 24386" : { "commit" : { "cmt" : 339, "inst" : 1109, "dead" : 150 }, "icache" : { "request" : 733, "hit" : 733, "miss" : 0 }, "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" : 141, "hit" : 108, "miss" : 0, "conflict" : 33 } "port[4]" : { "req" : 279, "hit" : 219, "miss" : 0, "conflict" : 60 } "port[5]" : { "req" : 189, "hit" : 116, "miss" : 0, "conflict" : 73 } }, "branch" : { "execute" : 317, "cmp" : { "execute" : 193, "hit" : 177 }, "uncond" : { "ret" : { "execute" : 55, "hit" : 35}, "others" : { "execute" : 69, "hit" : 69 }}, }, } " 28386" : { "commit" : { "cmt" : 333, "inst" : 1094, "dead" : 143 }, "icache" : { "request" : 743, "hit" : 743, "miss" : 0 }, "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" : 157, "hit" : 114, "miss" : 0, "conflict" : 43 } "port[4]" : { "req" : 301, "hit" : 221, "miss" : 0, "conflict" : 80 } "port[5]" : { "req" : 203, "hit" : 119, "miss" : 0, "conflict" : 84 } }, "branch" : { "execute" : 308, "cmp" : { "execute" : 186, "hit" : 172 }, "uncond" : { "ret" : { "execute" : 56, "hit" : 35}, "others" : { "execute" : 66, "hit" : 66 }}, }, }