Re: [Gems-users] About data prefetch


Date: Mon, 24 May 2010 11:58:40 +0800
From: lori zhuang <lorizhuang@xxxxxxxxx>
Subject: Re: [Gems-users] About data prefetch
Dan, how can I add prefetching function in Ruby? I mean simulating the behavior of the prefetch instrutions. What should I refer to do this? Please give me a clue.

Thanks,
lorizhuang

On Fri, May 21, 2010 at 11:46 AM, lori zhuang <lorizhuang@xxxxxxxxx> wrote:
Thanks a lot, Dan!

Regards,
lorizhuang
 
Date: Thu, 20 May 2010 06:42:30 -0600
From: Dan Gibson <degibson@xxxxxxxx>
To: Gems Users <gems-users@xxxxxxxxxxx>
Subject: Re: [Gems-users] About data prefetch
Message-ID:
       <AANLkTilj__QDb7K4ooknV7X47bNYLbfYUlj3r_Mkkrcu@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset="iso-8859-1"

Ruby currently ignores software prefetches, as you point out. At one time,
there was some internal code that did hardware prefetching, but I don't
think that was ever released (however, its remnants remain scattered here
and there, e.g., the prefetch bit).

Regards,
Dan

On Thu, May 20, 2010 at 12:30 AM, lori zhuang <lorizhuang@xxxxxxxxx> wrote:

> List,
>      I wonder if Ruby simulates the behavior of data prefetch. It seems
> like it does according to this link
> https://lists.cs.wisc.edu/archive/gems-users/2007-November/msg00102.shtml.
> But it seems like it doesn't according to the code in SimicsDriver.C:
>
> int SimicsDriver::makeRequest(memory_transaction_t *mem_trans) {
>     ...
>     ...
>     //* skip unsupported types*
>     if (*isUnhandledTransaction*(mem_trans)) {
>     ret = Unhandled;
>     } else {
>      // perform makeRequest()
>       int proc = SIMICS_get_proc_no(mem_trans->s.ini_ptr);
>      ret = m_processors[proc]->makeRequest(mem_trans);
>    }
>    ...
>   ...
> }
>
> bool SimicsDriver::*isUnhandledTransaction*(memory_transaction_t*
> mem_trans) {
>   // only handle user data?
>   if (USER_MODE_DATA_ONLY) {
>     if(PRIV_MODE) {
>       return true;
>     }
>     if(mem_trans->s.type == Sim_Trans_Instr_Fetch) {
>       return true;
>     }
>   }
>
>   // no prefetches
>   if (mem_trans->s.type == Sim_Trans_Prefetch) {
>     return true;
>   }
>
>   // no cache flush
>   if (mem_trans->s.type == Sim_Trans_Cache) {
>     return true;
>   }
>
>   // no DMA & IO
>   if (IS_DEV_MEM_OP(mem_trans->s.ini_type) ||
>       IS_OTH_MEM_OP(mem_trans->s.ini_type) ||
>       mem_trans->s.physical_address >
> uinteger_t(RubyConfig::memorySizeBytes())
>      ) {
>     return true;
>   }
>
>   return false;
> }
>
> Ruby skips supported types memory request and it threats Sim_Trans_Prefetch
> as unsupported types. Hence I think Ruby doesn't simulates data prefetching.
> Am I right?
> Since I'm going to add a prefetch instruction of the SPARC v9 instruction
> set to a benchmark and see if any speedups. That's why I care so much about
> prefetching. Any suggestion is highly appreciated.
>
>
> Thanks,
> lorizhuang
>
>
>
>
> _______________________________________________
> 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.
>
>
>


--
http://www.cs.wisc.edu/~gibson [esc]:wq!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.wisc.edu/archive/gems-users/attachments/20100520/cea220e7/attachment.html>

------------------------------

_______________________________________________
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.

End of Gems-users Digest, Vol 237, Issue 2
******************************************


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