changeset c75015bbbd78 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=c75015bbbd78
description:
        cpu: Relax check on squashed non-speculative instructions

        This patch relaxes the check performed when squashing non-speculative
        instructions, as it caused problems with loads that were marked ready,
        and then stalled on a blocked cache. The assertion is now allowing
        memory references to be non-faulting.

diffstat:

 src/cpu/o3/inst_queue_impl.hh |  9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diffs (20 lines):

diff -r dffa80408656 -r c75015bbbd78 src/cpu/o3/inst_queue_impl.hh
--- a/src/cpu/o3/inst_queue_impl.hh     Fri Jan 24 15:29:29 2014 -0600
+++ b/src/cpu/o3/inst_queue_impl.hh     Fri Jan 24 15:29:29 2014 -0600
@@ -1192,8 +1192,15 @@
                 NonSpecMapIt ns_inst_it =
                     nonSpecInsts.find(squashed_inst->seqNum);
 
+                // we remove non-speculative instructions from
+                // nonSpecInsts already when they are ready, and so we
+                // cannot always expect to find them
                 if (ns_inst_it == nonSpecInsts.end()) {
-                    assert(squashed_inst->getFault() != NoFault);
+                    // loads that became ready but stalled on a
+                    // blocked cache are alreayd removed from
+                    // nonSpecInsts, and have not faulted
+                    assert(squashed_inst->getFault() != NoFault ||
+                           squashed_inst->isMemRef());
                 } else {
 
                     (*ns_inst_it).second = NULL;
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to