From 06a8a473222c870ac9313d6e1eae807ba338e8d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20M=C3=BCck?= Date: Thu, 17 Jun 2021 15:06:43 -0500 Subject: [PATCH] configs: fix CHI mem buffers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disabling randomization for the memory request and response buffers. CHI requires that memory responses for the same address arrive in the same order the request was sent. Change-Id: Ia4236188679beaf2969978675414a870ccd9f94a Signed-off-by: Tiago Mück Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/63673 Tested-by: kokoro Maintainer: Bobby Bruce Reviewed-by: Jason Lowe-Power --- configs/ruby/CHI_config.py | 14 ++++++++++++-- .../chi/nodes/memory_controller.py | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/configs/ruby/CHI_config.py b/configs/ruby/CHI_config.py index a95efec16f..25d4f0575e 100644 --- a/configs/ruby/CHI_config.py +++ b/configs/ruby/CHI_config.py @@ -183,6 +183,16 @@ class OrderedTriggerMessageBuffer(TriggerMessageBuffer): ordered = True +class MemCtrlMessageBuffer(MessageBuffer): + """ + MessageBuffer exchanging messages with the memory + These buffers should also not be affected by the Ruby tester randomization. + """ + + randomization = "disabled" + ordered = True + + class CHI_Cache_Controller(Cache_Controller): """ Default parameters for a Cache controller @@ -667,8 +677,8 @@ class CHI_SNF_Base(CHI_Node): version=Versions.getVersion(Memory_Controller), ruby_system=ruby_system, triggerQueue=TriggerMessageBuffer(), - responseFromMemory=MessageBuffer(), - requestToMemory=MessageBuffer(ordered=True), + responseFromMemory=MemCtrlMessageBuffer(), + requestToMemory=MemCtrlMessageBuffer(), reqRdy=TriggerMessageBuffer(), transitions_per_cycle=1024, ) 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 4d0589499d..bee5e8887f 100644 --- a/src/python/gem5/components/cachehierarchies/chi/nodes/memory_controller.py +++ b/src/python/gem5/components/cachehierarchies/chi/nodes/memory_controller.py @@ -37,6 +37,16 @@ from m5.objects import ( from .abstract_node import TriggerMessageBuffer +class MemCtrlMessageBuffer(MessageBuffer): + """ + MessageBuffer exchanging messages with the memory + These buffers should also not be affected by the Ruby tester randomization. + """ + + randomization = "disabled" + ordered = True + + class MemoryController(Memory_Controller): """A controller that connects to memory""" @@ -62,8 +72,8 @@ class MemoryController(Memory_Controller): def connectQueues(self, network): self.triggerQueue = TriggerMessageBuffer() - self.responseFromMemory = MessageBuffer() - self.requestToMemory = MessageBuffer(ordered=True) + self.responseFromMemory = MemCtrlMessageBuffer() + self.requestToMemory = MemCtrlMessageBuffer() self.reqRdy = TriggerMessageBuffer() self.reqOut = MessageBuffer()