Re: [Gems-users] Read and write misses


Date: Wed, 12 Oct 2005 09:22:11 -0500 (CDT)
From: Mike Marty <mikem@xxxxxxxxxxx>
Subject: Re: [Gems-users] Read and write misses
> I did as suggested however the counter for the read/write miss
> counts increment even before the actual simulation starts
> ( i.e. when I type "c" on the simics prompt) which means the
> Sequencer:issueRequest() gets called even before the actual
> instructions in a binary file(used for simulation) are
> executed. That shouldn't be the case right?
>

No.  Is this a counter you added?  If so, make sure it is initialized to
0.

> Second question is I use following code snippet to count the
> read and write misses inside the function I have declared in
> Sequencer( but called in Profiler.C). I would like to know if
> it covers all the cases for counting read/write misses
>

The Sequencer should call the Profiler, not the other way around.

--Mike




> if(!hit &&(request.getType()== CacheRequestType_LD ||
> request.getTYpe()== CacheRequestType_IFETCH)){
> return CACHE_RD_MISS;// For read misses
> }
>
> if(!hit &&(request.getType()== CacheRequestType_ST ||
> request.getTYpe()== CacheRequestType_ATOMIC)){
> return CACHE_WR_MISS;// For write misses
> }
>
> hit is defined just as in Sequencer::doRequest()
>
> -Alokika
>
> ---- Original message ----
> >Date: Mon, 10 Oct 2005 13:50:39 -0500 (CDT)
> >From: Mike Marty <mikem@xxxxxxxxxxx>
> >Subject: Re: [Gems-users] Read and write misses
> >To: adash@xxxxxxx
> >Cc: Gems Users <gems-users@xxxxxxxxxxx>
> >
> >Yes, you can call your function inside the Sequencer instead
> of SLICC.
> >
> >A sequencer is already created for each processor.  Call your
> function
> >like this:
> >
> >g_system_ptr->getProfiler()->miss_profile(msg,
> >m_chip_ptr->getID()*RubyConfig::numberOfProcsPerChip()  +
> m_version));
> >
> >Where to add it?  You should be able to add this inside of
> >Sequencer::issueRequest
> >
> >--Mike
> >
> >
> >
> >> I'm planning to add a function:
> >> void miss_profile(const CacheMsg& msg, NodeID id) in
> >> Profiler.C to account
> >> for read and write misses. Also, I noticed that a function in
> >> Sequencer.C
> >> (doRequest(const CacheMsg& request)) that can be used to find
> >> out a cache
> >> hit and hence read or write miss. I have the following
> questions:
> >> o How do I access doRequest() inside Profiler.C (Do I need to
> >> instantiate a Sequencer object ?)
> >> o Is this the right way of finding out miss statistics -or- is
> >> there any
> >> other way to calcuate the same inside Profiler.C ?
> >>
> >> ---- Original message ----
> >> >Date: Mon, 10 Oct 2005 10:40:08 -0500 (CDT)
> >> >From: Mike Marty <mikem@xxxxxxxxxxx>
> >> >Subject: Re: [Gems-users] Read and write misses
> >> >To: adash@xxxxxxx, Gems Users <gems-users@xxxxxxxxxxx>
> >> >
> >> >You will need to add some code to do this.  First, modify
> >> >ruby/profiler/Profiler.C and Profiler.h to add a function to
> >> track the
> >> >read and write misses in which you can pass the processor ID.
> >>  To hook
> >> >this up to SLICC, you will also need to add a function to
> >> >ruby/slicc_interface/RubySlicc_Profiler_interface.[Ch] to
> >> access the
> >> >function you added to the Profiler object.  Finally add
> the same
> >> >definition to the RubySlicc_Profiler_interface.sm file in the
> >> protocols
> >> >directory.
> >> >
> >> >Then in the SLICC protocol specification, you will need to
> >> call your new
> >> >function passing the "machineID" variable (which is of type
> >> MachineID)
> >> >when a miss occurs.  To extract a processor number (starting
> >> with P0) from
> >> >the MachineID in the C++ function, dereference the "num"
> field of
> >> >MachineID (like id.num).
> >> >
> >> >--Mike
> >> >
> >> >
> >> >> Hi,
> >> >>
> >> >>  I am interested in finding out the number of read and write
> >> >> misses(separately)on the system bus generated for a single
> >> >> processor (when the snoop controller probes the Cache
> because
> >> >> of these misses)
> >> >>
> >> >> I would like to know the following for that.
> >> >> How to I differentiate one processor from other ...(Is
> is from
> >> >> some proc_id)
> >> >> How to I link GETS and GETX to the read and write misses and
> >> >> where do I modify the code?
> >> >>
> >> >> In the Ruby Dump stats file I have event counts Own_GETS,
> >> >> Other_GETS .....Is it something relevant to the read and
> >> >> misses that I want monitor?
> >> >>
> >> >> -Alokika
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> _______________________________________________
> >> >> Gems-users mailing list
> >> >> Gems-users@xxxxxxxxxxx
> >> >> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
> >> >>
> >> ***********************************
> >> Alokika Dash
> >> Academic Adviser(LTSC)
> >> Graduate Student
> >> ECE Department
> >> University of Maryland,College Park
> >> ***********************************
> >>
>
[← Prev in Thread] Current Thread [Next in Thread→]