Hoa Nguyen has submitted this change. (
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>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/66771
Reviewed-by: Matt Sinclair <mattdsincl...@gmail.com>
Reviewed-by: Jason Lowe-Power <power...@gmail.com>
Maintainer: Matt Sinclair <mattdsincl...@gmail.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
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, 47 insertions(+), 19 deletions(-)
Approvals:
Jason Lowe-Power: Looks good to me, approved
Matt Sinclair: Looks good to me, but someone else must approve; Looks
good to me, approved
kokoro: Regressions pass
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..9f47e41 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=self.getBlockSizeBits(cache_line_size.value),
is_icache=True,
replacement_policy=LRURP(),
)
self.Dcache = RubyCache(
size=l1d_size,
assoc=l1d_assoc,
- start_index_bit=self.getBlockSizeBits(),
+ start_index_bit=self.getBlockSizeBits(cache_line_size.value),
is_icache=False,
replacement_policy=LRURP(),
)
@@ -88,12 +88,11 @@
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:
+ def getBlockSizeBits(self, cache_line_size):
+ bits = int(math.log(cache_line_size, 2))
+ if 2**bits != cache_line_size:
raise Exception("Cache line size is not a power of 2!")
return bits
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..d8c9659 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=self.getBlockSizeBits(cache_line_size.value),
is_icache=False,
)
# l2_select_num_bits is ruby backend terminology.
@@ -86,9 +86,14 @@
self.to_l2_latency = 1
self.version = self.versionCount()
- self._cache_line_size = cache_line_size
self.connectQueues(network)
+ def getBlockSizeBits(self, cache_line_size):
+ bits = int(math.log(cache_line_size, 2))
+ if 2**bits != cache_line_size:
+ raise Exception("Cache line size is not a power of 2!")
+ return bits
+
def connectQueues(self, network):
self.mandatoryQueue = MessageBuffer()
self.optionalQueue = MessageBuffer()
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..0a93d9b 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,7 @@
self.L2cache = RubyCache(
size=l3_size,
assoc=l3_assoc,
- start_index_bit=self.getIndexBit(num_l3Caches),
+ start_index_bit=self.getIndexBit(num_l3Caches,
cache_line_size),
)
self.transitions_per_cycle = 4
@@ -64,12 +64,11 @@
self.to_l1_latency = 1
self.version = self.versionCount()
- self._cache_line_size = cache_line_size
self.connectQueues(network)
- def getIndexBit(self, num_l3caches):
- l3_bits = int(math.log(num_l3caches, 2))
- bits = int(math.log(self._cache_line_size, 2)) + l3_bits
+ def getIndexBit(self, num_l3Caches, cache_line_size):
+ l3_bits = int(math.log(num_l3Caches, 2))
+ bits = int(math.log(cache_line_size, 2)) + l3_bits
return bits
def connectQueues(self, network):
--
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: 5
Gerrit-Owner: Hoa Nguyen <hoangu...@ucdavis.edu>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Hoa Nguyen <hoangu...@ucdavis.edu>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: Matt Sinclair <mattdsincl...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org