Hi Vilas,
Sorry, this is a bug in the code. It's fixed in the version we have.
It's better to account for the barriers and remove the #if FULL_SYSTEM
from iew_impl.hh. I think that should get rid of your error.
Kevin
Vilas Sridharan wrote:
Hello again --
I'm running some of the spec2k benchmarks using m5 v2.0b2 (ALPHA_SE),
and am getting an almost immediate assertion failure when running
swim. Specifically, the memDepUnit attempts to find a memory barrier
instruction and cannot.
The problem, as best as I can tell, is as follows:
From iew_impl.hh:1125 (function dispatchInsts):
#if FULL_SYSTEM
} else if (inst->isMemBarrier() || inst->isWriteBarrier()) {
// Same as non-speculative stores.
inst->setCanCommit();
instQueue.insertBarrier(inst);
add_to_iq = false;
#endif
But in inst_queue_impl.hh:966 (function wakeDependents):
if (completed_inst->isMemRef()) {
memDepUnit[completed_inst->threadNumber].wakeDependents(completed_inst);
completeMemInst(completed_inst);
} else if (completed_inst->isMemBarrier() ||
completed_inst->isWriteBarrier()) {
memDepUnit[completed_inst->threadNumber].completeBarrier(completed_inst);
}
Note the lack of an #if FULL_SYSTEM directive around the
IsMemBarrier() code. This seems to be what is causing the assertion
failure.
Which is correct in SE mode? To ignore the barriers (I should add #if
FULL_SYSTEM around the code in inst_queue_impl.hh) or to account for
the barriers (I should remove the #if FULL_SYSTEM from iew_impl.hh)?
Thanks,
-Vilas
------------------------------------------------------------------------
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users