Does it make sense that MOESI_CMP_token is the only protocol affected?

On Sat, Mar 26, 2011 at 5:39 PM, Beckmann, Brad <brad.beckm...@amd.com> wrote:
> Thanks!
>
> Brad
>
>
>> -----Original Message-----
>> From: m5-dev-boun...@m5sim.org [mailto:m5-dev-boun...@m5sim.org] On
>> Behalf Of Steve Reinhardt
>> Sent: Saturday, March 26, 2011 1:54 PM
>> To: M5 Developer List
>> Subject: Re: [m5-dev] changeset in m5: ruby: fixed cache index setting
>>
>> I can do it... just wanted to make sure it was expected and not an
>> actual bug.
>>
>> On Sat, Mar 26, 2011 at 1:46 PM, Beckmann, Brad <brad.beckm...@amd.com>
>> wrote:
>> > Hi Steve,
>> >
>> > Oops.  It was such a small change in configuration, I didn't think
>> about rerunning the regression tester, but now thinking about it, yes
>> it could impact the results.  The cache indexing functions were not
>> using the right bits before this change.
>> >
>> > I can go ahead and update the stats tonight.  However, let me know if
>> it is more convenient for you to update them yourself.
>> >
>> > Brad
>> >
>> >
>> >> -----Original Message-----
>> >> From: m5-dev-boun...@m5sim.org [mailto:m5-dev-boun...@m5sim.org] On
>> >> Behalf Of Steve Reinhardt
>> >> Sent: Saturday, March 26, 2011 6:20 AM
>> >> To: M5 Developer List
>> >> Subject: Re: [m5-dev] changeset in m5: ruby: fixed cache index
>> setting
>> >>
>> >> Hi Brad,
>> >>
>> >> Would you expect this to change the results for the ruby regressions
>> >> slightly?  The regressions passed last night because the tests
>> didn't
>> >> actually get rerun (since scons doesn't see the config file as a
>> >> dependency), but I'm seeing some failures in the tip on tests I'm
>> >> running and I suspect it's due to this change.
>> >>
>> >> Steve
>> >>
>> >> On Fri, Mar 25, 2011 at 10:15 AM, Brad Beckmann
>> <brad.beckm...@amd.com>
>> >> wrote:
>> >> > changeset d8587c913ccf in /z/repo/m5
>> >> > details: http://repo.m5sim.org/m5?cmd=changeset;node=d8587c913ccf
>> >> > description:
>> >> >        ruby: fixed cache index setting
>> >> >
>> >> > diffstat:
>> >> >
>> >> >  configs/ruby/MESI_CMP_directory.py  |  17 +++++++++++------
>> >> >  configs/ruby/MI_example.py          |   4 +++-
>> >> >  configs/ruby/MOESI_CMP_directory.py |  17 +++++++++++------
>> >> >  configs/ruby/MOESI_CMP_token.py     |  15 +++++++++------
>> >> >  configs/ruby/MOESI_hammer.py        |  10 +++++++---
>> >> >  5 files changed, 41 insertions(+), 22 deletions(-)
>> >> >
>> >> > diffs (207 lines):
>> >> >
>> >> > diff -r bbab80b639cb -r d8587c913ccf
>> >> configs/ruby/MESI_CMP_directory.py
>> >> > --- a/configs/ruby/MESI_CMP_directory.py        Fri Mar 25
>> 00:46:14
>> >> 2011 -0400
>> >> > +++ b/configs/ruby/MESI_CMP_directory.py        Fri Mar 25
>> 10:13:50
>> >> 2011 -0700
>> >> > @@ -68,15 +68,19 @@
>> >> >     # Must create the individual controllers before the network to
>> >> ensure the
>> >> >     # controller constructors are called before the network
>> >> constructor
>> >> >     #
>> >> > +    l2_bits = int(math.log(options.num_l2caches, 2))
>> >> > +    block_size_bits = int(math.log(options.cacheline_size, 2))
>> >> >
>> >> >     for i in xrange(options.num_cpus):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l1i_cache = L1Cache(size = options.l1i_size,
>> >> > -                            assoc = options.l1i_assoc)
>> >> > +                            assoc = options.l1i_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >         l1d_cache = L1Cache(size = options.l1d_size,
>> >> > -                            assoc = options.l1d_assoc)
>> >> > +                            assoc = options.l1d_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >
>> >> >         cpu_seq = RubySequencer(version = i,
>> >> >                                 icache = l1i_cache,
>> >> > @@ -91,9 +95,7 @@
>> >> >                                       sequencer = cpu_seq,
>> >> >                                       L1IcacheMemory = l1i_cache,
>> >> >                                       L1DcacheMemory = l1d_cache,
>> >> > -                                      l2_select_num_bits = \
>> >> > -
>> >>  math.log(options.num_l2caches,
>> >> > -                                                 2))
>> >> > +                                      l2_select_num_bits =
>> l2_bits)
>> >> >
>> >> >         exec("system.l1_cntrl%d = l1_cntrl" % i)
>> >> >
>> >> > @@ -103,12 +105,15 @@
>> >> >         cpu_sequencers.append(cpu_seq)
>> >> >         l1_cntrl_nodes.append(l1_cntrl)
>> >> >
>> >> > +    l2_index_start = block_size_bits + l2_bits
>> >> > +
>> >> >     for i in xrange(options.num_l2caches):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l2_cache = L2Cache(size = options.l2_size,
>> >> > -                           assoc = options.l2_assoc)
>> >> > +                           assoc = options.l2_assoc,
>> >> > +                           start_index_bit = l2_index_start)
>> >> >
>> >> >         l2_cntrl = L2Cache_Controller(version = i,
>> >> >                                       L2cacheMemory = l2_cache)
>> >> > diff -r bbab80b639cb -r d8587c913ccf configs/ruby/MI_example.py
>> >> > --- a/configs/ruby/MI_example.py        Fri Mar 25 00:46:14 2011 -
>> >> 0400
>> >> > +++ b/configs/ruby/MI_example.py        Fri Mar 25 10:13:50 2011 -
>> >> 0700
>> >> > @@ -60,6 +60,7 @@
>> >> >     # Must create the individual controllers before the network to
>> >> ensure the
>> >> >     # controller constructors are called before the network
>> >> constructor
>> >> >     #
>> >> > +    block_size_bits = int(math.log(options.cacheline_size, 2))
>> >> >
>> >> >     for i in xrange(options.num_cpus):
>> >> >         #
>> >> > @@ -68,7 +69,8 @@
>> >> >         # config parameters.
>> >> >         #
>> >> >         cache = Cache(size = options.l1d_size,
>> >> > -                      assoc = options.l1d_assoc)
>> >> > +                      assoc = options.l1d_assoc,
>> >> > +                      start_index_bit = block_size_bits)
>> >> >
>> >> >         #
>> >> >         # Only one unified L1 cache exists.  Can cache
>> instructions
>> >> and data.
>> >> > diff -r bbab80b639cb -r d8587c913ccf
>> >> configs/ruby/MOESI_CMP_directory.py
>> >> > --- a/configs/ruby/MOESI_CMP_directory.py       Fri Mar 25
>> 00:46:14
>> >> 2011 -0400
>> >> > +++ b/configs/ruby/MOESI_CMP_directory.py       Fri Mar 25
>> 10:13:50
>> >> 2011 -0700
>> >> > @@ -68,15 +68,19 @@
>> >> >     # Must create the individual controllers before the network to
>> >> ensure the
>> >> >     # controller constructors are called before the network
>> >> constructor
>> >> >     #
>> >> > +    l2_bits = int(math.log(options.num_l2caches, 2))
>> >> > +    block_size_bits = int(math.log(options.cacheline_size, 2))
>> >> >
>> >> >     for i in xrange(options.num_cpus):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l1i_cache = L1Cache(size = options.l1i_size,
>> >> > -                            assoc = options.l1i_assoc)
>> >> > +                            assoc = options.l1i_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >         l1d_cache = L1Cache(size = options.l1d_size,
>> >> > -                            assoc = options.l1d_assoc)
>> >> > +                            assoc = options.l1d_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >
>> >> >         cpu_seq = RubySequencer(version = i,
>> >> >                                 icache = l1i_cache,
>> >> > @@ -91,9 +95,7 @@
>> >> >                                       sequencer = cpu_seq,
>> >> >                                       L1IcacheMemory = l1i_cache,
>> >> >                                       L1DcacheMemory = l1d_cache,
>> >> > -                                      l2_select_num_bits = \
>> >> > -
>>  math.log(options.num_l2caches,
>> >> > -                                               2))
>> >> > +                                      l2_select_num_bits =
>> l2_bits)
>> >> >
>> >> >         exec("system.l1_cntrl%d = l1_cntrl" % i)
>> >> >         #
>> >> > @@ -102,12 +104,15 @@
>> >> >         cpu_sequencers.append(cpu_seq)
>> >> >         l1_cntrl_nodes.append(l1_cntrl)
>> >> >
>> >> > +    l2_index_start = block_size_bits + l2_bits
>> >> > +
>> >> >     for i in xrange(options.num_l2caches):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l2_cache = L2Cache(size = options.l2_size,
>> >> > -                           assoc = options.l2_assoc)
>> >> > +                           assoc = options.l2_assoc,
>> >> > +                           start_index_bit = l2_index_start)
>> >> >
>> >> >         l2_cntrl = L2Cache_Controller(version = i,
>> >> >                                       L2cacheMemory = l2_cache)
>> >> > diff -r bbab80b639cb -r d8587c913ccf
>> configs/ruby/MOESI_CMP_token.py
>> >> > --- a/configs/ruby/MOESI_CMP_token.py   Fri Mar 25 00:46:14 2011 -
>> >> 0400
>> >> > +++ b/configs/ruby/MOESI_CMP_token.py   Fri Mar 25 10:13:50 2011 -
>> >> 0700
>> >> > @@ -82,15 +82,18 @@
>> >> >     # controller constructors are called before the network
>> >> constructor
>> >> >     #
>> >> >     l2_bits = int(math.log(options.num_l2caches, 2))
>> >> > +    block_size_bits = int(math.log(options.cacheline_size, 2))
>> >> >
>> >> >     for i in xrange(options.num_cpus):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l1i_cache = L1Cache(size = options.l1i_size,
>> >> > -                            assoc = options.l1i_assoc)
>> >> > +                            assoc = options.l1i_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >         l1d_cache = L1Cache(size = options.l1d_size,
>> >> > -                            assoc = options.l1d_assoc)
>> >> > +                            assoc = options.l1d_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >
>> >> >         cpu_seq = RubySequencer(version = i,
>> >> >                                 icache = l1i_cache,
>> >> > @@ -123,13 +126,15 @@
>> >> >         cpu_sequencers.append(cpu_seq)
>> >> >         l1_cntrl_nodes.append(l1_cntrl)
>> >> >
>> >> > +    l2_index_start = block_size_bits + l2_bits
>> >> > +
>> >> >     for i in xrange(options.num_l2caches):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l2_cache = L2Cache(size = options.l2_size,
>> >> >                            assoc = options.l2_assoc,
>> >> > -                           start_index_bit = l2_bits)
>> >> > +                           start_index_bit = l2_index_start)
>> >> >
>> >> >         l2_cntrl = L2Cache_Controller(version = i,
>> >> >                                       L2cacheMemory = l2_cache,
>> >> > @@ -158,9 +163,7 @@
>> >> >                                                              size
>> = \
>> >> >
>> >>  dir_size),
>> >> >                                          memBuffer = mem_cntrl,
>> >> > -                                         l2_select_num_bits = \
>> >> > -
>> >> math.log(options.num_l2caches,
>> >> > -                                                    2))
>> >> > +                                         l2_select_num_bits =
>> >> l2_bits)
>> >> >
>> >> >         exec("system.dir_cntrl%d = dir_cntrl" % i)
>> >> >         dir_cntrl_nodes.append(dir_cntrl)
>> >> > diff -r bbab80b639cb -r d8587c913ccf configs/ruby/MOESI_hammer.py
>> >> > --- a/configs/ruby/MOESI_hammer.py      Fri Mar 25 00:46:14 2011 -
>> >> 0400
>> >> > +++ b/configs/ruby/MOESI_hammer.py      Fri Mar 25 10:13:50 2011 -
>> >> 0700
>> >> > @@ -78,17 +78,21 @@
>> >> >     # Must create the individual controllers before the network to
>> >> ensure the
>> >> >     # controller constructors are called before the network
>> >> constructor
>> >> >     #
>> >> > +    block_size_bits = int(math.log(options.cacheline_size, 2))
>> >> >
>> >> >     for i in xrange(options.num_cpus):
>> >> >         #
>> >> >         # First create the Ruby objects associated with this cpu
>> >> >         #
>> >> >         l1i_cache = L1Cache(size = options.l1i_size,
>> >> > -                            assoc = options.l1i_assoc)
>> >> > +                            assoc = options.l1i_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >         l1d_cache = L1Cache(size = options.l1d_size,
>> >> > -                            assoc = options.l1d_assoc)
>> >> > +                            assoc = options.l1d_assoc,
>> >> > +                            start_index_bit = block_size_bits)
>> >> >         l2_cache = L2Cache(size = options.l2_size,
>> >> > -                           assoc = options.l2_assoc)
>> >> > +                           assoc = options.l2_assoc,
>> >> > +                           start_index_bit = block_size_bits)
>> >> >
>> >> >         cpu_seq = RubySequencer(version = i,
>> >> >                                 icache = l1i_cache,
>> >> > _______________________________________________
>> >> > m5-dev mailing list
>> >> > m5-dev@m5sim.org
>> >> > http://m5sim.org/mailman/listinfo/m5-dev
>> >> >
>> >> _______________________________________________
>> >> m5-dev mailing list
>> >> m5-dev@m5sim.org
>> >> http://m5sim.org/mailman/listinfo/m5-dev
>> >
>> >
>> > _______________________________________________
>> > m5-dev mailing list
>> > m5-dev@m5sim.org
>> > http://m5sim.org/mailman/listinfo/m5-dev
>> >
>> _______________________________________________
>> m5-dev mailing list
>> m5-dev@m5sim.org
>> http://m5sim.org/mailman/listinfo/m5-dev
>
>
> _______________________________________________
> m5-dev mailing list
> m5-dev@m5sim.org
> http://m5sim.org/mailman/listinfo/m5-dev
>
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to