Re: [Gems-users] prefetch question


Date: Mon, 7 Jun 2010 05:05:12 -0700 (PDT)
From: Muhammad abid Mughal <mabidm_pieas@xxxxxxxxx>
Subject: Re: [Gems-users] prefetch question
Is there any other place to modify?
My answer was for Software prefetches. You still see prefetch count in ruby dump file is due to Hardware prefetches.Go to opal/config/config.defaults and disable all hardware Prefetchers,such as DL1_STREAM_BUFFERS.

opal uses rubycache_t::prefetch () to issue all prefetch types (Software+Hardware) to Ruby. just grep this function in some files just as rubycache_t
,memop.C, etc to get an idea about prefetches.

I am a little confused that why prefetch request is issued when meeting store request.
we issue prefetch for store 1) when source of store is not ready && 2) we are not using WriteBuffer. The purpose is just to make sure that 
store hit when issued to data$.

I trace the code but I can't find out where this Execute function is called.
 see dynamic_inst_t::Schedule(). its called at "case EXECUTE_STAGE"


Regards,
Muhammad abid


From: Jerry Lin <cosjerry@xxxxxxxxx>
To: Gems Users <gems-users@xxxxxxxxxxx>
Sent: Monday, June 7, 2010 18:01:17
Subject: Re: [Gems-users] prefetch question

Thanks for answering.
But the prefetch count in ruby dump file is still non-zero after I comment out the lines as your reply shown.
Is there any other place to modify?
I trace the code but I can't find out where this Execute function is called.
I also try to comment out the "prefetch" function in "store_inst_t::continueExecution()" in opal/system/memop.C
And it seems still doesn't work.
I am a little confused that why prefetch request is issued when meeting store request.
 
Thanks again.
2010/6/7 Muhammad abid Mughal <mabidm_pieas@xxxxxxxxx>
hi,
     when prefetch inst gets executed the following member funtcion from memop.C file called:

    void  prefetch_inst_t::Execute( void ) {
  STAT_INC( m_pseq->m_stat_prefetches_exec[m_proc] );
//  trap_type_t t = addressGenerate( OPAL_LOAD );
//this can only be true for Non i/o and non mmu prefetches
//  if (t != Trap_NoTrap) {
    /* couldn't correctly generate address -- we're done! */
    SetStage( COMPLETE_STAGE );
    return;
//  }

  /* can't complete I/O accesses, and moreover they are uncacheable */
 //We dont need to set trap to Trap_Use_Functional bec prefetch inst dont affect program regs
/*  if ( m_physical_addr != (pa_t) -1 &&
       isIOAccess( m_physical_addr ) ) {
    SetStage( COMPLETE_STAGE );
    STAT_INC( m_pseq->m_stat_count_io_access[m_proc] ); 
    return;
  }
 /////////////// no lsq or WB concept for prefetches
  if ( isCacheable() ) {
    ASSERT( m_physical_addr != (pa_t) -1 );

    //set address to be valid
    m_addr_valid = true;

    if (!accessCache())//accessCache() always ret true
      return;
  } // is cacheable

  Complete();
*/
}

comment out as shown above.
what i am doing is just setting  stage to "COMPLETE_STAGE" and returning.



Regards,
Muhammad abid


From: Jerry Lin <cosjerry@xxxxxxxxx>
To: Gems Users <gems-users@xxxxxxxxxxx>
Sent: Monday, June 7, 2010 15:15:08
Subject: [Gems-users] prefetch question

Hello all,
When I running workloads with Ruby and Opal using default configuration, the prefetch count in the dump file won't be zero.
Is there any configuration to turn on/off the prefetcher?
Or is there any modification can be done to turn on/off the prefetcher?
 
Thanks for helping.


_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.




[← Prev in Thread] Current Thread [Next in Thread→]