Re: [Gems-users] Ruby DataBlock


Date: Sun, 22 Apr 2007 12:17:17 -0500
From: Dan Gibson <degibson@xxxxxxxx>
Subject: Re: [Gems-users] Ruby DataBlock
1) Is there a version of Ruby that supports the DataBlk? Not that I am aware of. In every version I have ever seen, DATA_BLOCK has been a deprecated flag. Perhaps some other list members have had success with it...?

2)  How hard would it be to change the cache structure to once again support the  DataBlk.  I'm guessing fairly hard, but I'd like your opinion.

Now this is an interesting question. IF you need Simics to actually observe a different value than the one it will look for in its memory image, the you should look into the difference between the "timing interface" and the "snoop interface", which I believe are described in the Simics User Guide and/or the Simics Programming Guide/Manual. In short, Ruby uses the timing interface to force a timing onto the memory requests, and the old implementation of DATA_BLOCK used the snoop interface to actually force a value onto Simics.

I would suspect that DATA_BLOCK was never ported to Simics 2.2+ from Simics 2.0 or even Simics 1.x (pre-GEMS release), though I do not know for sure. Some of the code is still in-place, in ruby.c for instance, to install Ruby as both a snoop model as well as a timing model. I think Ruby's high-level code can probably still support DATA_BLOCK, but the portion that talks to Simics is almost certainly broken (and thats the hard part).

3)  In a non-transactional memory protocol, does the variable m_XactMemory help to store the data values at all?  I saw a post which referenced this, but I didn't understand it very well.

I don't understand the LogTM implementation at all. You'll have to pester the LogTMers to answer this one.

4)  Do you have any other ideas?

Check out the snoop interface, as I mentioned above. If you don't want to tackle fixing DATA_BLOCK, you could implement your own "snoop model" as a separate module or as a new implementation within Ruby.

Question to the list:
Does anyone out there know specifically why DATA_BLOCK breaks?

Regards,
Dan

Robert William Havlik wrote:
Hi Dan,

Unfortunately, I think we do need to know the data that resides in the cache...
Our project sounds similar to the post here:
https://lists.cs.wisc.edu/archive/gems-users/2006-October/msg00008.shtml
we would like to simulate a system in which there
might be several different speculative values for the same address, on
different cache controllers. Obviously, this can not be directly implemented
in Simics, due to the single global memory image. The different values
should be held on the Ruby caches

A few possibilities:

1) Is there a version of Ruby that supports the DataBlk?
2)  How hard would it be to change the cache structure to once again support the  DataBlk.  I'm guessing fairly hard, but I'd like your opinion.

3)  In a non-transactional memory protocol, does the variable m_XactMemory help to store the data values at all?  I saw a post which referenced this, but I didn't understand it very well.

4)  Do you have any other ideas?

Thanks so much!
Rob, Brianna, and Liz

---- Original message ----
Date: Sat, 21 Apr 2007 22:15:14 -0500
From: Dan Gibson <degibson@xxxxxxxx> Subject: Re: [Gems-users] Ruby DataBlock To: Gems Users <gems-users@xxxxxxxxxxx>

Do you need to know the data that resides in the cache, or do you need to know the *correct* value of the data at a given moment? The latter can be obtained by the SIMICS_read_physical_memory() API. The former will require reviving the somewhat deprecated DATA_BLOCK flag... I'm not sure who to ask about that.

Regards,
Dan

Robert William Havlik wrote:

Hello,
  I am trying to look at the data values within the cache lines with Ruby.  When I try to set DATA_BLOCK to true in rubyconfig.defaults, I get the following error when I run anything:

failed assertion 'SIMICS_check_memory_value(m_proc, mem_trans->s.physical_address, buffer, mem_trans->s.size)' at fn void SimicsProcessor::observeMemoryAccess(memory_transaction_t*) in simics/SimicsProcessor.C:493
failed assertion 'SIMICS_check_memory_value(m_proc, mem_trans->s.physical_address, buffer, mem_trans->s.size)' at fn void SimicsProcessor::observeMemoryAccess(memory_transaction_t*) in simics/SimicsProcessor.C:493
At this point you might want to attach a debug to the running and get to the
crash site; otherwise press enter to continue
PID: 15562

When I looked at some of the other forum posts, I decided to try commenting the assert that fails above, when I comment this, I get:

[cpu0 info] Got exception 0x34 at (MAXTL - 1) - entering RED_state
Write to unimplemented ASI 0x60, VA 0x0, data 0x0
[cpu0 info] Got exception 0x32 at MAXTL - entering error_state
[cpu0 info] Triggering watchdog reset to end error_state
error_state entered
[cpu0] v:0xfffffffff0000040 p:0x7fff0000040  stxa %g0, [%g0 + %g0] 0x60  # ASI_IIU_INST_TRAP

Does anyone have any ideas to get the DATA_BLOCK setting to work, or know of another way to look at the data within a cache line.  Thanks!

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


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

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

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