mem: Make returning snoop responses occupy response layer
authorAndreas Hansson <andreas.hansson@arm.com>
Thu, 30 May 2013 16:54:02 +0000 (12:54 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Thu, 30 May 2013 16:54:02 +0000 (12:54 -0400)
commit7e13c4d046ea8335fa5681e8c035c3839f0749f9
tree1a6102adf5c6167deed7e8fa21ce5da06f98fcc2
parent2308f812ef848d027b99dd52c0900aed11260d87
mem: Make returning snoop responses occupy response layer

This patch introduces a mirrored internal snoop port to facilitate
easy addition of flow control for the snoop responses that are turned
into normal responses on their return. To perform this, the slave
ports of the coherent bus are wrapped in internal master ports that
are passed as the source ports to the response layer in question.

As a result of this patch, there is more contention for the response
resources, and as such system performance will decrease slightly.

A consequence of the mirrored internal port is that the port the bus
tells to retry (the internal one) and the port actually retrying (the
mirrored) one are not the same. Thus, the existing check in tryTiming
is not longer correct. In fact, the test is redundant as the layer is
only in the retry state while calling sendRetry on the waiting port,
and if the latter does not immediately call the bus then the retry
state is left. Consequently the check is removed.
src/mem/bus.cc
src/mem/coherent_bus.cc
src/mem/coherent_bus.hh
src/mem/port.hh