mem: Remove infinite queue between Ruby and memory
authorMatthew Poremba <matthew.poremba@amd.com>
Fri, 8 May 2020 22:16:28 +0000 (17:16 -0500)
committerBradford Beckmann <brad.beckmann@amd.com>
Tue, 12 May 2020 21:12:21 +0000 (21:12 +0000)
commit27426fab83887cfd48d3eb97be10fd1285918771
tree3e35a2d89d4afca6e3727dabc8182448527bf863
parent1e4a6b32b462a4d1d302724421b4b2b78f9c9bd8
mem: Remove infinite queue between Ruby and memory

AbstractController sends requests using a QueuedMasterPort which has an
implicit buffer which is unbounded. Remove this by changing the port to
a MasterPort and implement a retry mechanism for AbstractController.
Although the request remains in the MessageBuffer if a retry is needed,
the additional retry logic optimizes serviceMemoryQueue slightly and
prevents the DRAMCtrl retry stats from being incorrect due to multiple
calls to sendTimingReq.

Change-Id: I8c592af92a1a499a418f34cfee16dd69d84803ad
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28387
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Bradford Beckmann <brad.beckmann@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/ruby/slicc_interface/AbstractController.cc
src/mem/ruby/slicc_interface/AbstractController.hh