mem-ruby: fix MOESI_CMP_directory functional reads
This patch properly sets the access permissions in all controllers. 'Busy' was used for all transient states, which is incorrect in lots of cases when we still hold a valid copy of the line and are able to handle a functional read. In the L2 controller these states were split to differentiate the access permissions: IFGXX -> IFGXX, IFGXXD IGMO -> IGMO, IGMOU IGMIOF -> IGMIOF, IGMIOFD Same for the dir. controller: IS -> IS, IS_M MM -> MM, MM_M The dir. controllers also has the states WBI/WBS for lines that have been queued for a writeback. In these states we hold the data in the TBE for replying to functional reads until the memory acks the write and we move to I or S. Other minor changes includes updated debug messages and asserts. Change-Id: Ie4f6eac3b4d2641ec91ac6b168a0a017f61c0d6f Signed-off-by: Tiago Mück <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21927 Maintainer: Jason Lowe-Power <power.jg@gmail.com> Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -211,6 +211,7 @@ def create_system(options, full_system, system, dma_ports, bootmem,
|
||||
dir_cntrl.forwardFromDir.master = ruby_system.network.slave
|
||||
dir_cntrl.requestToMemory = MessageBuffer()
|
||||
dir_cntrl.responseFromMemory = MessageBuffer()
|
||||
dir_cntrl.triggerQueue = MessageBuffer(ordered = True)
|
||||
|
||||
|
||||
for i, dma_port in enumerate(dma_ports):
|
||||
|
||||
Reference in New Issue
Block a user