MEM: Simplify cache ports preparing for master/slave split
Review Request #1056 - Created Feb. 20, 2012 and submitted
| Information | |
|---|---|
| Andreas Hansson | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
MEM: Simplify cache ports preparing for master/slave split This patch splits the two cache ports into a master (memory-side) and slave (cpu-side) subclass of port with slightly different functionality. For example, it is only the CPU-side port that blocks incoming requests, and only the memory-side port that schedules send events outside of what the transmit list dictates. This patch simplifies the two classes by relying further on SimpleTimingPort and also generalises the latter to better accommodate the changes (introducing trySendTiming and scheduleSend). The memory-side cache port overrides sendDeferredPacket to be able to not only send responses from the transmit list, but also send requests based on the MSHRs. A follow on patch further simplifies the SimpleTimingPort and the cache ports.
util/regress all passing (disregarding t1000 and eio)
Posted (Feb. 21, 2012, 10:13 a.m.)
looks fine to me, but steve probably needs to take a look.
Posted (Feb. 22, 2012, 1:17 a.m.)
Most of my issues are with the comments and not with the code, so that's a pretty good sign...
-
src/mem/cache/cache_impl.hh (Diff revision 1) -
"not" should be "note", might want to add that we don't have a functionalSnoop method because functional requests do the same thing regardless of which side they come in
-
src/mem/tport.hh (Diff revision 1) -
The default for label should be something generic but meaningful, like "SimpleTimingPort"
-
src/mem/tport.cc (Diff revision 1) -
Does having a constructor parameter with the same name as a member even work? I'm surprised if it does...
-
src/mem/tport.cc (Diff revision 1) -
I think this comment is a little misleading... I'd say "if we are waiting on a retry, there's no need to schedule sendEvent"
-
src/mem/tport.cc (Diff revision 1) -
Missing part of this comment
-
src/mem/tport.cc (Diff revision 1) -
Should "not" be "note" here? Also should "do not" be "may not"?
Ship It!
