Quoting Steve Reinhardt <[email protected]>:

On Fri, Sep 10, 2010 at 1:07 PM, Gabriel Michael Black
<[email protected]> wrote:
That would still require some fix for Gabe's
completeAcc-not-getting-called-in-O3 problem.  I'm a little confused
because I believe that the completeAcc callback is used for
store-conditionals to write back the success flag, which means that
(1) his solution of calling it right away won't work and (2) it must
be getting called somewhere in O3 since Alpha store-conditionals do
work there.

I don't know about store conditional, but I didn't see anywhere completeAcc
was called on the path stores take in the load/store queue. There may be
some other mechanism to handle that, but again I don't really know how those
work in O3. If they -do- work using some other mechanism, then that would
take care of (1), right?

Here's the answer, from line ~1244 of iew_impl.hh:

            } else if (inst->isStore()) {
                fault = ldstQueue.executeStore(inst);

                // If the store had a fault then it may not have a mem req
                if (!inst->isStoreConditional() && fault == NoFault) {
                    inst->setExecuted();

Not sure what this means about the right fix, but it does explain
how/why things work today.  I will go out on a limb and say that this
does seem like a really crufty workaround; it would be nice to treat
all stores the same way.


Hmm. That probably doesn't work with delayed translation either, since the fault might not be available yet.

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

Reply via email to