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!