-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/769/
-----------------------------------------------------------

Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan 
Binkert.


Summary
-------

O3: Don't delete insts if they're still being translated.

If O3 is done processing an instruction, it puts it into a "removeList". It
later goes through the list and deletes the instructions on it. The CPU might
be done with an instruction, but it could have triggered delayed translation
which might not have finished yet. When it does finish, the translation will
use the pointer it has to record things like faults. It's hard to say exactly
what will happen then, but in one instance the memory under the DynInst had
been allocated for a new instruction which was currently being executed. The
translation raised a fault (which is not surprising for a misspeculated
instruction) and that fault was effectively injected into the new, unrelated
instruction.

This change forces O3 to stop going through the removeList if an instruction
on it is still being translated. When the translation finishes, then the
instruction can be removed.

Another alternative would be to make commit wait on any instruction which was
still being translated, even if it was squashed or otherwise invalid. I
decided not to do that since it might unrealistically hurt performance if
other, valid instructions were held up for a result which was going to be
thrown away anyway.


Diffs
-----

  src/cpu/o3/cpu.cc 1b4b9c05ad2b 

Diff: http://reviews.m5sim.org/r/769/diff


Testing
-------


Thanks,

Gabe

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

Reply via email to