Hello,
 I have a question regarding the treatment of MEMBAR instruction in the  
opal+ruby setup. According to the ISCA'05 tutorial list, membar (as  
well as STBAR) is implemented by opal. However, when I go to look at  
the opal source code, both system/ix.i and system/dx.i contain empty  
block of code for membar.
 According to Sun's documentation, membar ensures the ordering of the  
memory accesses that come after it with respect to the ones that come  
before it. In order to realize this faithfully in opal+ruby setup, I'd  
imagine that there should be some sort of "polling" mechanism by which  
the opal can ask ruby if the given set of memory accesses (ones that  
come before membar) are complete (globally performed), so that it can  
hold off executing (retiring) the memory accesses that come after it.  
However I don't see interface functions to suit such need in ruby/ 
interfaces/OpalInterface.h
 As I understand, opal+ruby setup follows the timing-first approach to  
correctness, whereby only a subset of SPARC ISA is implemented. This  
explains the correctness as a whole (correct as in "in accordance to  
SC implemented by simics) of the system despite no special actions  
taken in the event of membar/stbar.
 Have I missed something here? Now I'm a little confused as to why  
membar and stbar were included in the list of instructions implemented  
by opal in the ISCA slides.
Thanks,
Byn
 
 |