自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 一応、簡単なベンチマークでこの問題が解決できることを見たので、次にDhrystoneを流してどれくらい実行速度が向上するのか見てみよう。
Dhrystoneを流してみると、途中でフリーズしてしまった。これは私の実装ミス。
これまで、命令の「フラッシュ」の定義を「命令グループの中で、例外信号を含み、かつどれか1つ以上の命令が死んでいない状態」としていたが、ANOTHER_FLUSH
は少し様子が違う。ANOTHER_FLUSH
はフラッシュされる命令自体も死んでおり、有効な命令が1つも存在していない状態となる。この際のリカバリについて考慮する必要があった。
この際の実装についていろいろ変更しつつDhrystoneを実行している。まだ、Dhrystone内でANOTHER_FLUSH
を発見できない... 早くそこまで到達したい...