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
|