diff --git a/configs/ruby/CHI_config.py b/configs/ruby/CHI_config.py index 25d4f0575e..6d2084bc7b 100644 --- a/configs/ruby/CHI_config.py +++ b/configs/ruby/CHI_config.py @@ -683,6 +683,13 @@ class CHI_SNF_Base(CHI_Node): transitions_per_cycle=1024, ) + # The Memory_Controller implementation deallocates the TBE for + # write requests when they are queue up to memory. The size of this + # buffer must be limited to prevent unlimited outstanding writes. + self._cntrl.requestToMemory.buffer_size = ( + int(self._cntrl.to_memory_controller_latency) + 1 + ) + self.connectController(self._cntrl) if parent: diff --git a/src/python/gem5/components/cachehierarchies/chi/nodes/memory_controller.py b/src/python/gem5/components/cachehierarchies/chi/nodes/memory_controller.py index bee5e8887f..e7cbafefb2 100644 --- a/src/python/gem5/components/cachehierarchies/chi/nodes/memory_controller.py +++ b/src/python/gem5/components/cachehierarchies/chi/nodes/memory_controller.py @@ -76,6 +76,13 @@ class MemoryController(Memory_Controller): self.requestToMemory = MemCtrlMessageBuffer() self.reqRdy = TriggerMessageBuffer() + # The Memory_Controller implementation deallocates the TBE for + # write requests when they are queue up to memory. The size of this + # buffer must be limited to prevent unlimited outstanding writes. + self.requestToMemory.buffer_size = ( + int(self.to_memory_controller_latency) + 1 + ) + self.reqOut = MessageBuffer() self.rspOut = MessageBuffer() self.snpOut = MessageBuffer()