Composite registers

SummaryWe introduce a shared data object, called acomposite register, that generalizes the notion of an atomic register. A composite register is an array-like shared data object that is partitioned into a number of components. An operation of a composite register either writes a value to a single component or reads the values of all components. A composite register reduces to an ordinary atomic register when there is only one component. In this paper, we show that multi-reader, singlewriter atomic registers can be used to implement a composite register in which there is only one writer per component. In a related paper, we show how to use the composite register construction of this paper to implement a composite register with multiple writers per component. These two constructions show that it is possible to implement a shared memory that can be read in its entirety in a single snapshot operation, without using mutual exclusion.

[1]  John Tromp How to Construct an Atomic Variable (Extended Abstract) , 1989, WDAG.

[2]  Evangelos Kranakis,et al.  Atomic Multireader Register , 1987, WDAG.

[3]  Bard Bloom Constructing Two-Writer Atomic Registers , 1988, IEEE Trans. Computers.

[4]  Maurice Herlihy,et al.  Wait-free data structures in the asynchronous PRAM model , 1990, SPAA '90.

[5]  Baruch Awerbuch,et al.  A Proof Technique for Register Automicity , 1988, FSTTCS.

[6]  Amos Israeli,et al.  On processor coordination using asynchronous hardware , 1987, PODC '87.

[7]  Gary L. Peterson,et al.  Constructing multi-reader atomic values from non-atomic values , 1987, PODC '87.

[8]  Richard Newman-Wolfe,et al.  A protocol for wait-free, atomic, multi-reader shared variables , 1987, PODC '87.

[9]  Ambuj K. Singh,et al.  The elusive atomic register revisited , 1987, PODC '87.

[10]  Baruch Awerbuch,et al.  Atomic shared register access by asynchronous hardware , 1986, 27th Annual Symposium on Foundations of Computer Science (sfcs 1986).

[11]  Gary L. Peterson,et al.  Concurrent Reading While Writing , 1983, TOPL.

[12]  Leslie Lamport,et al.  Concurrent reading and writing , 1977, Commun. ACM.

[13]  Paul M. B. Vitányi,et al.  How to Share Concurrent Asynchronous Wait-Free Varaibles (Preliminary Version) , 1989, ICALP.

[14]  Amos Israeli,et al.  Bounded time-stamps , 1987, 28th Annual Symposium on Foundations of Computer Science (sfcs 1987).

[15]  Richard E. Newman A Protocol for Wait-Free, Atomic, Multi-Reader Shared Variables , 1987, PODC.

[16]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[17]  Jayadev Misra Axioms for Memory Access in Asynchronous Hardware Systems , 1984, Seminar on Concurrency.

[18]  Maurice Herlihy,et al.  Axioms for concurrent objects , 1987, POPL '87.

[19]  James H. Anderson,et al.  Pseudo Read-Modify-Write Operations: Bounded Wait-Free Implementations (Extended Abstract) , 1991, WDAG.

[20]  James H. Anderson Composite Registers , 1990, PODC.

[21]  J. Huddleston The Language of Negotiation. , 1976 .

[22]  Nir Shavit,et al.  Atomic snapshots of shared memory , 1990, PODC '90.

[23]  Gary L. Peterson,et al.  Concurrent reading while writing II: The multi-writer case , 1987, 28th Annual Symposium on Foundations of Computer Science (sfcs 1987).

[24]  James H. Anderson,et al.  The Virtue of Patience: Concurrent Programming with and Without Waiting , 1990 .

[25]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[26]  K. Mani Chandy Parallel program design , 1989 .

[27]  Baruch Awerbuch,et al.  On proving register atomicity , 1987 .

[28]  Guillermo Ricardo Simari,et al.  A Mathematical Treatment of Defeasible Reasoning and its Implementation , 1992, Artif. Intell..

[29]  John Tromp,et al.  How to construct an atomic variable , 1989 .

[30]  James H. Anderson,et al.  Atomicity of concurrent programs , 1990 .

[31]  David Lorge Parnas,et al.  Concurrent control with “readers” and “writers” , 1971, CACM.

[32]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .