DragonFly kernel List (threaded) for 2003-07
Re: MESI Caching work start (was Re: caching and userapi)
On Sat, Jul 19, 2003 at 01:20:18PM -0700, Matthew Dillon wrote:
> [ snip ]
> :Regarding broadcast communication between CPUs, we can model it
> :as an broadcasting ethernet: you store data on shared media
> :(a global page for all CPUs, for example), tag some recipients
> :on this data (like an 48bit ethernet address would be)
> :and then send a global interrupt to all nodes,
> :which would copy it to internal buffers and resume
> :processing as fast as possible.
> One can use a 'global' FIFO for this which has one write index and multiple
> read indexes. Anyone can write, and all the CPUs can read the request at
> their own pace. The entry will not be overwritten (fifo action) until
> all readers have bumped their read index past the object. This places a
> burden on the writer but allows the readers lockless access to the FIFO.
I assume that you have to control write access to the global FIFO,
using mutexes, semaphores, locking, or some other explicit system.
This would become a hotspot for synchronization, sort of a "BIG KERNEL LOCK".
Having a separate FIFO for each cache (one for network routing table, other
for inodes, etc...) would partition nicely, anyways.
ps. Matt, is your mail system using some "dialup blocking list" to filter adresses?
1. Dado un programa, siempre tiene al menos un fallo.
2. Dadas varias lineas de codigo, siempre se pueden acortar a menos lineas.
3. Por induccion, todos los programas se pueden
reducir a una linea que no funciona.