mem: Enforce insertion order on the cache response path
Review Request #3152 - Created Oct. 13, 2015 and submitted
Information | |
---|---|
Andreas Hansson | |
gem5 | |
default | |
Reviewers | |
Default | |
Changeset 11175:7efa6f630cd8 --------------------------- mem: Enforce insertion order on the cache response path This patch enforces insertion order transmission of packets on the response path in the cache. Note that the logic to enforce order is already present in the packet queue, this patch simply turns it on for queues in the response path. Without this patch, there are corner cases where a request-response is faster than a response-response forwarded through the cache. This violation of queuing order causes problems in the snoop filter leaving it with inaccurate information. This causes assert failures in the snoop filter later on. A follow on patch relaxes the order enforcement in the packet queue to limit the performance impact.
I am not really aware of the protocol used by the classic side.
But typically ordering only makes protocols more correct, though
less performing. So, the patch is fine with me.
Can you elaborate on the ordering issue? Couldn't it be solved just by making sure the appropriate latencies are used?
Also, I know it's outside the scope of this patch, but 'force_order' is a really ambiguous name, and I originally thought it had the opposite effect that it does. Basically packets in the queue can be timestamp ordered or insertion-sequence ordered, and 'order' doesn't disambiguate between those.
Summary: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diff: |
Revision 2 (+5 -5) |
Ship It!