Subject: Re: memsync/cacheflush proposals: status
To: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
From: Eduardo E. Horvath <eeh@one-o.com>
List: tech-userlevel
Date: 02/09/1999 09:56:49
On Tue, 9 Feb 1999, Ignatios Souvatzis wrote:
> - Some people said the MIPS ABI for the cache synchronization provides
> enough functionality, and 3rd-party programs (that need it) are likely to
> know how to use it, so we should not invent a new interface. (Jason Thorpe
> expressed this earlier on this list).
>
> [[I feel this is a valid argument. Additionally whatever I wanted to do with
> this work can be done with the MIPS ABI.
>From what I know about the MIPS ABI I do not feel that it is sufficient
to handle all possible cache/CPU architectures. You can have any
combination of:
physical or virtual
split or unified
writeback or write through
snoopy or not snoopy
Uni-processor or MP
And with multiple cache levels you can have different combinations at each
level. Let's take a nasty example of a non-snoopy split virtual
write-back cache on an MP system, which is probably the nastiest of the
bunch.
When generating new JIT code you need to a way to do I$/D$
synchronization. You need to communicate this to all the other CPUs to have them
invalidate their D$ *and* I$ also.
When spinning on a lock the CPU doing the spinning needs to invalidate its
D$, and the CPU who grabs/releases the lock needs to force the store of
the lock through its D$ and store buffers to RAM.
Then things start geting even more complicated if the architecture has a
relaxed memory model where loads and stores can be re-ordered with
respect to each other and pass each other such as Alpha or SPARC.
=========================================================================
Eduardo Horvath eeh@one-o.com
"I need to find a pithy new quote." -- me