Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!lll-winken!vette!brooks From: brooks@vette.llnl.gov (Eugene Brooks) Newsgroups: comp.arch Subject: Re: Multi-Processor Serializability Keywords: data ordering, coherence, shared memory multiprocessing Message-ID: <19635@lll-winken.LLNL.GOV> Date: 1 Feb 89 06:22:39 GMT References: <3492@cloud9.Stratus.COM> Sender: usenet@lll-winken.LLNL.GOV Reply-To: brooks@maddog.llnl.gov.UUCP (Eugene Brooks) Organization: Lawrence Livermore National Laboratory Lines: 14 In article <3492@cloud9.Stratus.COM> tomc@cloud9.Stratus.COM (Tom Clark) writes: >In any computer system, the programmer expects operations in the source >code to be carried out in the order specified. This is especially true >in a multi-processor system where multiple processes may share data. In ANSI C the tool to use to enforce reference order for reads and writes is the keyword volatile, although I suppose that the purveyors of this keyword did not have shared memory multiprocessors in mind when they inserted it into the ANSI C definition. If instruction reordering can be performed invisibly by the system at lower levels than the compiler, the effect of these keywords must trickle down into the hardware properly. We use the volatile keyword support in GNU C on our shared memory multiprocessors routinely in codes which require certainly references to actually go out to main memory for synchronization purposes.