Hoa Nguyen has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/66771?usp=email )

Change subject: stdlib: Fix errors in MESI_Three_Level_Cache_Hierarchy
......................................................................

stdlib: Fix errors in MESI_Three_Level_Cache_Hierarchy

Change-Id: I60ae47f4336cb1b54bcca3fce3bdd13858daa92a
Signed-off-by: Hoa Nguyen <hoangu...@ucdavis.edu>
---
M src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/dma_controller.py M src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l1_cache.py M src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l2_cache.py M src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l3_cache.py
4 files changed, 31 insertions(+), 19 deletions(-)



diff --git a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/dma_controller.py b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/dma_controller.py
index ab76d4c..f731869 100644
--- a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/dma_controller.py +++ b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/dma_controller.py
@@ -25,16 +25,26 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 from ......utils.override import overrides
-from ..abstract_dma_controller import AbstractDMAController

-from m5.objects import MessageBuffer
+from m5.objects import MessageBuffer, DMA_Controller


-class DMAController(AbstractDMAController):
-    def __init__(self, network, cache_line_size):
-        super().__init__(network, cache_line_size)
+class DMAController(DMA_Controller):
+    _version = 0

-    @overrides(AbstractDMAController)
+    @classmethod
+    def _get_version(cls):
+        cls._version += 1
+        return cls._version - 1
+
+    def __init__(self, dma_sequencer, ruby_system):
+        super().__init__(
+            version=self._get_version(),
+            dma_sequencer=dma_sequencer,
+            ruby_system=ruby_system,
+        )
+        self.connectQueues(self.ruby_system.network)
+
     def connectQueues(self, network):
         self.mandatoryQueue = MessageBuffer()
         self.responseFromDir = MessageBuffer(ordered=True)
diff --git a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l1_cache.py b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l1_cache.py
index 2ce13d3..9d68550 100644
--- a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l1_cache.py +++ b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l1_cache.py
@@ -68,14 +68,14 @@
         self.Icache = RubyCache(
             size=l1i_size,
             assoc=l1i_assoc,
-            start_index_bit=self.getBlockSizeBits(),
+            start_index_bit=int(math.log(cache_line_size, 2)),
             is_icache=True,
             replacement_policy=LRURP(),
         )
         self.Dcache = RubyCache(
             size=l1d_size,
             assoc=l1d_assoc,
-            start_index_bit=self.getBlockSizeBits(),
+            start_index_bit=int(math.log(cache_line_size, 2)),
             is_icache=False,
             replacement_policy=LRURP(),
         )
@@ -88,15 +88,8 @@
         self.response_latency = 2

         self.version = self.versionCount()
-        self._cache_line_size = cache_line_size
         self.connectQueues(network)

-    def getBlockSizeBits(self):
-        bits = int(math.log(self._cache_line_size, 2))
-        if 2**bits != self._cache_line_size.value:
-            raise Exception("Cache line size is not a power of 2!")
-        return bits
-
     def connectQueues(self, network):
         self.prefetchQueue = MessageBuffer()
         self.mandatoryQueue = MessageBuffer()
diff --git a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l2_cache.py b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l2_cache.py
index e29f566..e9f7270 100644
--- a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l2_cache.py +++ b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l2_cache.py
@@ -67,7 +67,7 @@
         self.cache = RubyCache(
             size=l2_size,
             assoc=l2_assoc,
-            start_index_bit=self.getBlockSizeBits(),
+            start_index_bit=int(math.log(cache_line_size, 2)),
             is_icache=False,
         )
         # l2_select_num_bits is ruby backend terminology.
@@ -86,7 +86,6 @@
         self.to_l2_latency = 1

         self.version = self.versionCount()
-        self._cache_line_size = cache_line_size
         self.connectQueues(network)

     def connectQueues(self, network):
diff --git a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l3_cache.py b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l3_cache.py
index 6d46d1f..c5e9112 100644
--- a/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l3_cache.py +++ b/src/python/gem5/components/cachehierarchies/ruby/caches/mesi_three_level/l3_cache.py
@@ -54,7 +54,8 @@
         self.L2cache = RubyCache(
             size=l3_size,
             assoc=l3_assoc,
-            start_index_bit=self.getIndexBit(num_l3Caches),
+            start_index_bit=int(math.log(cache_line_size, 2))
+            + int(math.log(num_l3Caches, 2)),
         )

         self.transitions_per_cycle = 4
@@ -64,7 +65,6 @@
         self.to_l1_latency = 1

         self.version = self.versionCount()
-        self._cache_line_size = cache_line_size
         self.connectQueues(network)

     def getIndexBit(self, num_l3caches):

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/66771?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I60ae47f4336cb1b54bcca3fce3bdd13858daa92a
Gerrit-Change-Number: 66771
Gerrit-PatchSet: 1
Gerrit-Owner: Hoa Nguyen <hoangu...@ucdavis.edu>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to