Hi,
After reading the source code of Opal, I come to the point that it doesn’t pay
any attention to store instructions in mis-predicted branch. It may have issued
load/stores to Ruby when the pipeline has been flashed.
Yes,
I understand that Opal was designed to be a very aggressive optimistic OOO
processor. I find it ok to even issue stores out of order, and so is to issue
loads speculatively. But it’s unacceptable to me if the stores are
speculatively issued to Ruby, which will pollute the statistics of Ruby and be
impractical to real-world systems.
Can
anybody prove me wrong or explain why it was designed like this?
G.R.