> If I understand your question, you are asking about how Opal can
> simulate executing speculatively without the use of MAI.
>
> Opal can do this because it is also a functional simulator that
> is mostly correct in functional execution. Opal fetches instructions from Simics through an
> API call, which allows it to obtain an instruction given a PC value. The
> PC value can be updated speculatively through branch prediction (thus
> affecting control flow).
> Because Opal simulates an OoO speculative processor it can still fetch
> and execute (but of course not retire) instructions in speculative mode.
>
> Since every instruction is checked on retirement this allows Opal to
> model the timing of an OoO processor but maintain the
> functional correctness of the in-order Simics processor it is checking with.
>
And to state the obvious, Opal is able to step Simics ahead several
instructions in a single cycle which, in attaining a higher IPC, is
ultimately the goal of an aggressive OoO processor.
|