[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2006-03-09 (04:32) |
From: | skaller <skaller@u...> |
Subject: | Re: [Caml-list] STM support in OCaml |
On Wed, 2006-03-08 at 21:19 -0600, Brian Hurt wrote: > > I couldn't believe it! That's why we tried the experiment: > > did the OS really invalidate the 'whole' caches, or did our > > trivial increment program fail, because the memory being > > incremented wasn't coherent? > I'm simplifying > enormously here, I know, so was I -- I've read the AMD64 specs. Suppose I have a thread that creates an array which fits roughly in the cache. Then I hand it over to another thread to fold. The first thread has to load stuff from RAM to populate the array, which slows it down. Then it has to write the whole array back to RAM, and the second thread reloads the whole array from RAM into the cache. In that case the whole cache has to be not only flushed to RAM, it has to be reloaded into another cache. Pretty nasty .. on a MP machine. On a uniprocessor, the same CPU will do the fold, and the cache doesn't have to be either saved or reloaded. Yes, that's an extreme case! -- John Skaller <skaller at users dot sourceforge dot net> Async PL, Realtime software consultants Checkout Felix: http://felix.sourceforge.net