I think maybe I got misled by the earlier discussion about keeping a pointer
to the macroop in the thread context.  Correct me if I'm wrong, but the
issue now isn't really about that pointer.  The issue is that when a series
of microops from a single macroop reaches the head of the ROB, and one of
those interior microops is marked as faulting, do I flush the preceding
non-faulting microops from the same macroop before invoking the fault
handler or not?

If this is the problem, then it only applies to faults and not to
interrupts, since as we've discussed you'll never get an interrupt in the
middle of a macroop.

You're saying that outside of this funky optimization for string moves (and
maybe other instructions) then it's OK to always flush the microops.  I
agree.

Thinking about it a little more, I'd bet it's always OK to flush the
microops... looking at the string move case, you really don't care about
restarting the macroop that faults (since that macroop represents only the
last iteration of the REP)... what you really want to do is retry the entire
macroop with the "safe" version of the microcode before you invoke the
actual fault handler.

So is it that simple?  Or am I missing something?

Steve
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to