Subject: Re: memsync/cacheflush proposals: status
To: <>
From: Ignatios Souvatzis <is@jocelyn.rhein.de>
List: tech-userlevel
Date: 02/09/1999 20:35:24
On Tue, Feb 09, 1999 at 09:56:49AM -0800, Eduardo E. Horvath wrote:
> 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.

Uhm, no. Real CPUs (I've read a lot of PPC documentation in the last year) have
special primitives to build synchronization code... and were not, you could 
always create a system call to deal with this.

	-is