[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2021-01-26 Thread zhen bang via gem5-users
Hello Jason:
Thank you for your reply, thank you very much.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2021-01-25 Thread Jason Lowe-Power via gem5-users
Hi Zhen,

Sorry for missing your previous message.

(1) I think the biggest difference is that the former does not implement a
port for each bank, is it right?
- I guess it assumes that the banks are the bottlenecks not the ports. It
assumes that the banks are distributed and have separate ports, IIRC.

For the L1TagArrayRead... If the transition reads both the I-cache tag and
the L1 tag, then yes. I don't have a definitive answer for you. It depends
on how you want to model the performance.

Cheers,
Jason

On Sat, Jan 23, 2021 at 4:07 AM zhen bang via gem5-users <
gem5-users@gem5.org> wrote:

> Hello Jason:
>   I have tag every transition in the cache controller (i.e.,
> MESI_Three_Level-L0cache.sm) with the required resources, but there is
> something wrong, during the
> implementation of the L0 multi-bank, I have doubt whether need to add L1
> RequestType? It also means require L1 cache resources.
> for example:
>   transition(I, Ifetch, Inst_IS) {ITagArrayRead}{
> pp_allocateICacheBlock;
> i_allocateTBE;
> a_issueGETS;
> uu_profileInstMiss;
> po_observeMiss;
> k_popMandatoryQueue;
> debugTransition1;
>   }
> Instruction fetch missed in the L0, should I add L1TagArrayRead like this:
> transition(I, Ifetch, Inst_IS) {ITagArrayRead, L1TagArrayRead}
>
> Looking forward to your reply.
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2021-01-23 Thread zhen bang via gem5-users
Hello Jason:
  I have tag every transition in the cache controller (i.e., 
MESI_Three_Level-L0cache.sm) with the required resources, but there is 
something wrong, during the
implementation of the L0 multi-bank, I have doubt whether need to add L1 
RequestType? It also means require L1 cache resources.
for example:
  transition(I, Ifetch, Inst_IS) {ITagArrayRead}{
pp_allocateICacheBlock;
i_allocateTBE;
a_issueGETS;
uu_profileInstMiss;
po_observeMiss;
k_popMandatoryQueue;
debugTransition1;
  }
Instruction fetch missed in the L0, should I add L1TagArrayRead like this:
transition(I, Ifetch, Inst_IS) {ITagArrayRead, L1TagArrayRead}

Looking forward to your reply.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-11-08 Thread zhen bang via gem5-users
Hello Jason:
Comparing resource stalls to model banking with "real banking", 
(1) I think the biggest difference is that the former does not implement a port 
for each bank, is it right?
(2) I have read MOESI_AMD_Base-corepaire.sm that you have mentioned, during the 
implementing L0 multi-bank, I have doubt whether need to add L1 RequestType? 
(In part of the transition of L0cache, the tagarray or dataarray of L1 should 
be accessed?)

  enumeration(RequestType, desc="To communicate stats from transitions to 
recordStats") {
IDataArrayRead,desc="Read the data array";
IDataArrayWrite,   desc="Write the data array";
ITagArrayRead, desc="Read the data array";
ITagArrayWrite,desc="Write the data array";
DDataArrayRead,desc="Read the data array";
DDataArrayWrite,   desc="Write the data array";
DTagArrayRead, desc="Read the data array";
DTagArrayWrite,desc="Write the data array";

for example, should I add L1DataArrayRead ?
Looking forward to your reply.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-11-03 Thread Jason Lowe-Power via gem5-users
Hello,

(1) Yes, I believe so.
(2) I thought MOESI_hammer was annotated, but it doesn't look like
(huh...). However, AMD MOESI Base is annotated. See all of the transition
in the core-pair file, for instance:
https://gem5.googlesource.com/public/gem5/+/refs/tags/v20.1.0.0/src/mem/ruby/protocol/MOESI_AMD_Base-CorePair.sm#2480

Cheers,
Jason

On Thu, Oct 29, 2020 at 5:54 AM zhen bang via gem5-users <
gem5-users@gem5.org> wrote:

> Hello Jason:
> (1) Can I use resource stalls to simulate the multi-bank implementation of
> L0 and L1, and  model L2 a distributed cache? By the way, the
> implementation of L2 multi-bank in gem5 is not interleaving (multi-bank),
> right?
> (2) "add annotations to the transitions in the L0 and L1 cache", I am not
> sure how this should be done, could you give me an example?
>
> Looking forward to your reply.
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-29 Thread zhen bang via gem5-users
Hello Jason:
(1) Can I use resource stalls to simulate the multi-bank implementation of L0 
and L1, and  model L2 a distributed cache? By the way, the implementation of L2 
multi-bank in gem5 is not interleaving (multi-bank), right?
(2) "add annotations to the transitions in the L0 and L1 cache", I am not sure 
how this should be done, could you give me an example?

Looking forward to your reply.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-28 Thread Jason Lowe-Power via gem5-users
Hello,

For (1), yes. You can set this *in the python configuration file*. You
should not modify the SimObject description file to change a default
parameter.

For (2), yes, that's exactly where you should modify.

Cheers,
Jason

On Wed, Oct 28, 2020 at 9:47 AM zhen bang via gem5-users <
gem5-users@gem5.org> wrote:

> Hello Jason:
> I would use the resource stalls to model banking, I have read
> src/mem/ruby/structures/Rubycache.py and
> src/mem/ruby/structures/BankedArray.cc
> (1)  I have seen
> dataArrayBanks = Param.Int(1, "Number of banks for the data array")
> tagArrayBanks = Param.Int(1, "Number of banks for the tag array")
>
> If I want to configure multiple banks, can I directly modify these
> parameters?
>
> (2) To extend the BankedCache implementation to model arbitrary address
> interleaving, which files or functions should I modify?
> Should I modify the following function in
> src/mem/ruby/structures/BankedArray.cc?
> unsigned int
> BankedArray::mapIndexToBank(int64_t idx)
> {
> if (banks == 1) {
> return 0;
> }
> return idx % banks;
> }
>
> Looking forward to your reply.
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-28 Thread zhen bang via gem5-users
Hello Jason:
I would use the resource stalls to model banking, I have read 
src/mem/ruby/structures/Rubycache.py and src/mem/ruby/structures/BankedArray.cc
(1)  I have seen 
dataArrayBanks = Param.Int(1, "Number of banks for the data array")
tagArrayBanks = Param.Int(1, "Number of banks for the tag array")

If I want to configure multiple banks, can I directly modify these parameters?

(2) To extend the BankedCache implementation to model arbitrary address
interleaving, which files or functions should I modify?
Should I modify the following function in 
src/mem/ruby/structures/BankedArray.cc?
unsigned int
BankedArray::mapIndexToBank(int64_t idx)
{
if (banks == 1) {
return 0;
}
return idx % banks;
}

Looking forward to your reply.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-22 Thread 1154063264--- via gem5-users
Hello Jason:
   Resource stall, you mean there is only one bank, but we use resource stall 
to implement interleaving bank?
I want to config multi banks of L0 and L1 to improve the parallelism of 
cache,and  the number of banks can point by defined L0_bank_number arguments in 
.py scripy,if I want to do this, should I implement "real" banking?
If I want to implement "real" banking, I should add L0_select_number_bits 
refer to L1_select_number_bits?I have been added L0_select_number_bits, but L1 
becomes shared cache, no more private for one cpu. Maybe the reason is that I 
connect L0 to ruby network.
As I know, bank interleaving is a basic multi banks cache solution. But I 
don't know how to define bank index,and how to find data when config multi 
banks?  For example,  how a set associate cache bank stores data? A bank store 
a complete cache line or just a few bytes? If the cache line is 8 bytes and the 
private L0 is divided into four banks, does each bank store only 2 bytes of 
data?
   I wonder whether multi-bank L0 and L1 cache will affect the MESI Coherence 
Protocol ?
I fell doubt about the details, Looking forward to your reply.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-21 Thread Jason Lowe-Power via gem5-users
In this case, I would use the resource stalls to model banking. You can
extend the BankedCache implementation to model arbitrary address
interleaving, if that's important to your model. To do this, you'll have to
add annotations to the transitions in the L0 and L1 cache, but this should
be easier than implementing "real" banking.

Cheers,
Jason

On Wed, Oct 21, 2020 at 8:20 AM 1154063264--- via gem5-users <
gem5-users@gem5.org> wrote:

> Hello Jason:
> I want to configure L0 and L1 as Multi-Banking (Interleaving) Caches ,
> considering  L0 and L1 are private, so I have two questions:
> (1). If L0 and L1 are configured as multiple banks, do I need to connect
> L0 to the ruby ​​network?
>
> (2). To configure multiple banks, should I need to add a cache controller
> for each bank?
>
> Looking forward to your reply.
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-21 Thread 1154063264--- via gem5-users
Hello Jason:
I want to configure L0 and L1 as Multi-Banking (Interleaving) Caches , 
considering  L0 and L1 are private, so I have two questions:
(1). If L0 and L1 are configured as multiple banks, do I need to connect L0 to 
the ruby ​​network?

(2). To configure multiple banks, should I need to add a cache controller for 
each bank?

Looking forward to your reply.
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: Configure multi-bank cache in ruby ​mode with MESI coherence protocol

2020-10-19 Thread Jason Lowe-Power via gem5-users
Hello,

It depends on how you want to model banking. If you just want to set and
limit the bandwidth to a cache, you can use the "resourceStalls = true"
option on the RubyCache object and set the tag and data array values. You
will also have to tag every transition in the cache controller (i.e.,
MESI_Two_Level-L2cache.sm) with the required resources (see MOESI_hammer
for an example).

If you want to model a distributed cache, then you can configure your "L2"
caches to have a slice of the address range and update the
"mapAddressToRange" function to map the addresses to the correct
distributed caches. This could be as simple as setting the
l2_select_num_bits parameter on the "L1" caches.

Cheers,
Jason

On Wed, Oct 14, 2020 at 7:15 PM 1154063264--- via gem5-users <
gem5-users@gem5.org> wrote:

> I want to implement multi-bank cache in ruby ​​mode, and I use the
> MESI_Three_Level protocol to maintain the consistency of the three-level
> cache. Which scripts should I modify to realize multi-bank cache ?
>
> (1) Do I need to modify all the .sm files in src/mem/ruby/protocol/,  such
> as,  MESI_Three_Level-L0cache.sm , L1cache.sm
> To Modify variables such as out_msg.Dest in the above script ?
>
> (2) Or the implementation of multi-bank cache is independent of the
> protocol and should not be modified in the above script ?
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s