In your terminology, Opal drives Simics -- at least that's my understanding.
Opal fetches instructions directly from the memory object, not involving
Simics. When an instruction retires (in order), Opal tells Simics to
execute that instruction. Then the Simics processor state and the Opal
state are compared to check for correctness. If the Simics state
doesn't agree with Opal, then Opal reinitializes with the Simics state
and restarts the pipeline with the next instruction.
Opal won't retire a memory instruction until it's complete. So there's
no possibility that Simics will execute an instruction before it's been
executed in Opal.
...Greg Byrd, NC State
|