Helge Hafting <[email protected]> writes:
> Joachim Breuer wrote:
>> > Well, one has to read it from scratch. I'll set about seeing how to do.
>> > CLues welcome.
>>
>> Just an idea, I don't know how well this works what with the 'IDE
>> can't do write barriers right' and related effects:
>>
>> - Allow all nodes to cache as many blocks as they wish
>> - The atomic operation "update this block" includes "invalidate this
>> block, if cached" broadcast to all nodes
>>
> You can't just invalidate like that, you'll need synchronization.
> Something like "I want write access to this block - stop using it."
> And then you _wait_, until everybody else has released it. This
> could take some time if someone was busy using it.
More or less what I meant - I assumed the requirement of mutual
exclusion was already agreed upon. I might have phrased it more
clearly as in "the locking protocol provides the "other" nodes with
sensible invalidation data". Something which a "budgeting" type
locking protocol would not normally do (allow each node a range of its
own for exclusive writes; everyone can read everywhere (with a bit
more locking to make the writes look atomic if they aren't already
perhaps)).
>> Performance would certainly become an issue; depending on the
>> architecture bus sniffing as in certain MP cache consistency protocols
>> might be feasible (I, node 3, see a transfer from node 1 going to
>> block #42, which is in my cache; so I update my cache using the data
>> part of the block transfer as it comes by on the bus).
>
> Possible only when there is a shared bus. Of course today's
> IDE/SCSI don't do this.
Well, SCSI can be *made* to do it (actually, this is what I had in
mind when I wrote it up) - but I don't know whether any mainstream
controllers would be able to "sniff" sensibly.
Anyway, so long,
Joe
--
"I use emacs, which might be thought of as a thermonuclear
word processor."
-- Neal Stephenson, "In the beginning... was the command line"