Re: [Gems-users] cache statistics with timing info.


Date: Sat, 5 Mar 2005 22:12:22 -0600 (CST)
From: Mike Marty <mikem@xxxxxxxxxxx>
Subject: Re: [Gems-users] cache statistics with timing info.
Nauman and Ayse,

Its great to see others contributing to this mailing list!  Your
information was quite good.

By default, the Ruby statistics will tell you how many transitions
occured.  As Nauman pointed out, these transitions and states are
specified in the SLICC files.

In order to get the time of these transitions, you can use the protocol
debug tracer.  This is mentioned briefly on our documentation site in the
"Debugging Ruby README" file.  Have a look at this.

In short, set the RUBY_DEBUG Makefile flag to true.  Ensure that the
PROTOCOL_DEBUG_TRACE option is also set to true in the
ruby/config/rubydefaults.config.

This will enabled a trace of every transition that occurs.  To start the
trace in Simics, enter this command:

  ruby0.debug-start-time "1"'

This will start the protocol trace at time 1 (the very first cycle).  It
will give you every transition, for every block, and give you the time as
well.


I believe you can direct this output to a file as well with this command:

  ruby0.debug-output-file /scratch/ruby_debug_output.txt

--Mike


> You have to look into SLICC specification of cache coherence protocols. The
> SLICC specification is translated automatically to C++ code. So all the code for
> caches is automatically generated.
> To find the specification for different protocols, look into the protocols
> directory in gems folder.
>
> Here is an example of profiling in SLICC
> -------------------------------------------------------------------------------
>   action(uu_profileMiss, "\u", desc="Profile the demand miss") {
>     peek(L1requestNetwork_in, RequestMsg) {
>       // AccessModeType not implemented
>       profile_L2Cache_miss(convertToGenericType(in_msg.Type), in_msg.AccessMode,
> MessageSizeTypeToInt(in_msg.MessageSize),  in_msg.Prefetch,
> machineIDToNodeID(in_msg.Requestor));
>     }
>   }
> -------------------------------------------------------------------------------
>
> The function profile_L2Cache_miss is declared in RubySlicc_Profiler.sm,
> GEMS/ruby/slicc_interface/RubySlicc_Profiler_interface.h and
> GEMS/ruby/slicc_interface/RubySlicc_Profiler_interface.C.
> It is implemented in files in GEMS/ruby/profiler.
> So make your own function on the same pattern.
> p.s.
> Just trying to point you in the right direction. I am a newbie too so dont trust
> me too much :)
>
> Thanks.
> --
> Nauman
>
>
> Quoting yilmazer@xxxxxxxxxxx:
>
> > Hi,
> > I have just started to use gems. I want to collect some statistics from ruby
> > cache module. What I want to do is to track transitions of shared
> > cache-lines
> > with timing information.
> >    t1: Modified
> >    ..
> >    tn: Modified/Shared
> >    tm: Invalid
> >    what is t1 time, tn and tm?
> > I looked over the source code but I couldn't figure out where to start. If
> > you
> > can help me, I will very appreciate it.
> > Thanks,
> > Ayse Yilmazer.
> >
> > _______________________________________________
> > Gems-users mailing list
> > Gems-users@xxxxxxxxxxx
> > https://lists.cs.wisc.edu/mailman/listinfo/gems-users
> >
>
> _______________________________________________
> Gems-users mailing list
> Gems-users@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
>
[← Prev in Thread] Current Thread [Next in Thread→]