THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.

The following task has been changed.  The new details are below.  For
full information about what has changed, visit the URL and click the
History tab.

FS#197 - Fail outstanding SC on invalidation
User who did this: - Ali Saidi (saidi)

Attached to Project - M5 Bugs
Summary - Fail outstanding SC on invalidation
Task Type - Bug
Category - Memory System
Status - New
Assigned To - Steve Reinhardt
Operating System - All
Severity - Low
Priority - Normal
Reported Version - 1.1
Due in Version - 2.1
Due Date - Undecided
Percent Complete - 0%
Details - We should fail an outstanding SC when it encounters a
read-only block but the block gets invalidated before the cache can
get its Upgrade onto the bus.

I believe this feature is just a performance optimization (or maybe at
most needed for livelock avoidance in pathological situations, though
I'm not convinced of that) and not having it in right away shouldn't
be a major problem.

I can think of two approaches:

1) Detect this situation when the invalidation is received (in
Cache::snoop()).
2) Detect this when we go to issue the command on the bus (where we'd
normally notice that we want to do a ReadExcl instead of an Upgrade,
but now we notice that we really don't want to do anything unless
there are additional targets other than the SC outstanding).

Comments from Ron on approach #1:
"If there is a hit in the MSHR it goes through the code surronded by
the if(mshr) in the snoop function.  If the MSHR is in service (the
request has been sent out to the bus already, then it either NACKS the
request or invlidates the block after the in flight request is
handled. You shouldn't change these functions I believe.  You should
check the mshr in the case it is not inService and go through the
targets and look for any SC's that exist.  You will need to then
remove the target corresponding to the SC and possibly remove the MSHR
if there is no remaining targets.  You should also clear the
MasterRequest flag in the BaseCache if you have no more MSHRs after
removing that one.  The best place to look would be in the MissQueue
and MSHRQueue code to see if you can reuse any of the functions there
to do the removing of the target. But I can't think of a simple
function to just remove a target from the MSHR, I haven't needed one
yet."


More information can be found at the following URL:
http://www.m5sim.org/flyspray/task/197

You are receiving this message because you have requested it from the
Flyspray bugtracking system.  You can be removed from future
notifications by visiting the URL shown above.

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

Reply via email to