gem5-users@gem5.org

The gem5 Users mailing list

View all threads

Configuring Multi-Level Caches in Ruby with MESI_Three_Level Protocol

KS
Karim Soliman
Thu, Apr 18, 2024 9:03 AM

Dear gem5 community,
I am writing to inquire about configuring cache coherence protocols in Ruby
with HeteroGarnet for research purposes.
As I am relatively new to this area, I appreciate your patience and
guidance.
I am currently exploring the implementation of a three-level cache
hierarchy using the MESI_three_level protocol within a Network-on-Chip
(NoC) environment. My objective is to evaluate memory access latency as a
performance metric.
My understanding, based on initial research, is that the MESI_three_level
protocol utilizes three cache levels: L0, L1, and L2. L0 and L1 are private
caches, with L0 further divided into separate instruction (L0I) and data
(L0D) caches. The L2 cache, on the other hand, is shared among all cores in
the network.
One aspect that I find intriguing is that while the MESI_three_level
protocol employs cluster grouping, the L2 cache appears to be globally
shared. Could you please confirm if this interpretation is accurate?

To further my exploration, I have a few specific questions:

  1. Why are L0, L1, and L2 chosen over a more traditional L1, L2, and L3
    hierarchy?
  2. To incorporate additional cache levels, which specific configuration
    files should I modify? I have reviewed "configs/ruby/MESI_Three_Level.py",
    "configs/common/Caches.py", and "configs/common/CacheConfig.py", but
    require further guidance on the necessary modifications.
  3. Can you elaborate on the purpose of the "version" property within the
    L2Cache_Controller class?

[image: image.png]

  1. Does gem5 support simulating cache coherence protocols with additional
    levels like L4 or L5 in the hierarchy?

Thank you for your time and assistance. I look forward to learning more
about this topic.

Best Regards,
Eng. Karim Soliman
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)

Dear gem5 community, I am writing to inquire about configuring cache coherence protocols in Ruby with HeteroGarnet for research purposes. As I am relatively new to this area, I appreciate your patience and guidance. I am currently exploring the implementation of a three-level cache hierarchy using the MESI_three_level protocol within a Network-on-Chip (NoC) environment. My objective is to evaluate memory access latency as a performance metric. My understanding, based on initial research, is that the MESI_three_level protocol utilizes three cache levels: L0, L1, and L2. L0 and L1 are private caches, with L0 further divided into separate instruction (L0I) and data (L0D) caches. The L2 cache, on the other hand, is shared among all cores in the network. One aspect that I find intriguing is that while the MESI_three_level protocol employs cluster grouping, the L2 cache appears to be globally shared. Could you please confirm if this interpretation is accurate? To further my exploration, I have a few specific questions: 1. Why are L0, L1, and L2 chosen over a more traditional L1, L2, and L3 hierarchy? 2. To incorporate additional cache levels, which specific configuration files should I modify? I have reviewed "configs/ruby/MESI_Three_Level.py", "configs/common/Caches.py", and "configs/common/CacheConfig.py", but require further guidance on the necessary modifications. 3. Can you elaborate on the purpose of the "version" property within the L2Cache_Controller class? [image: image.png] 4. Does gem5 support simulating cache coherence protocols with additional levels like L4 or L5 in the hierarchy? Thank you for your time and assistance. I look forward to learning more about this topic. Best Regards, *Eng. Karim Soliman* Teaching Assistant Computer Engineering Department Pharos University in Alexandria (P.U.A)