Thanks Nauman and Mike.
I will try protocol debug tracer. Actually, I have a few more question. I want
to trace speculative wrong-path loads in ruby.
When it is known that the speculatively executed path is wrong and what happens,
how recovery is handled in opal, where I should look for?
Thanks a lot for your help and time,
Ayse Yilmazer.
Quoting Mike Marty <mikem@xxxxxxxxxxx>:
> 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
> >
> _______________________________________________
> Gems-users mailing list
> Gems-users@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
>
|