分岐予測は設計経験がないうえにいろいろ試行錯誤しながら作っているのだが、なかなか性能が伸びない。
とりあえず試行錯誤したバージョンは意外と性能が伸びていない。 RASのインデックスがずれてしまうのが問題のようだ。投機的にRASのインデックスが更新されてしまうので、それを上手く参照できていない。
JSONで取得している実行記録は以下のようになっており、まだまだパイプラインフラッシュが良く発生している状況だ。
" 24386" : { "commit" : { "cmt" : 302, "inst" : 999, "dead" : 183 }, "icache" : { "request" : 752, "hit" : 752, "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" : 139, "hit" : 108, "miss" : 0, "conflict" : 31 } "port[4]" : { "req" : 286, "hit" : 217, "miss" : 0, "conflict" : 69 } "port[5]" : { "req" : 178, "hit" : 98, "miss" : 0, "conflict" : 80 } }, "branch" : { "execute" : 266, "cmp" : { "execute" : 156, "hit" : 141 }, "uncond" : { "ret" : { "execute" : 48, "hit" : 19}, "others" : { "execute" : 62, "hit" : 62 }}, }, } " 28386" : { "commit" : { "cmt" : 310, "inst" : 1019, "dead" : 202 }, "icache" : { "request" : 773, "hit" : 773, "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" : 122, "hit" : 92, "miss" : 0, "conflict" : 30 } "port[4]" : { "req" : 259, "hit" : 211, "miss" : 0, "conflict" : 48 } "port[5]" : { "req" : 164, "hit" : 116, "miss" : 0, "conflict" : 48 } }, "branch" : { "execute" : 284, "cmp" : { "execute" : 188, "hit" : 170 }, "uncond" : { "ret" : { "execute" : 44, "hit" : 12}, "others" : { "execute" : 52, "hit" : 52 }}, }, }
ret
の欄においてhit
率が全く伸びない。BOOMの実装を読み直してもう少し確かめてみるか...