Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A substantially zero overhead mutual-exclusion apparatus and method (90, 120) is provided that allows concurrent reading and updating data while maintaining data coherency. That is, a data reading process executes the same sequence of instructions that would be executed if the data were never updated. Rather than depending exclusively on overhead-imposing locks, this mutual-exclusion mechanism tracks an execution history (138) of a thread (16, 112) to determine safe times for processing a current generation (108, 130, 131) of data updates while a next generation (110, 132, 133) of data updates is concurrently being saved. A thread is any locus of control, such as a processor. A summary of thread activity (106, 122) tracks which threads have passed through a quiescent state after the current generation of updates was started. When the last thread related to the current generation passes through a quiescent state, the summary of thread activity signals a callback processor (104, 124)...

InventorsJohn D. Slingwine, Paul E. McKenney
Original AssigneeSequent Computer Systems, Inc.
Primary Examiner: Matthew M. Kim
Current U.S. Classification717/147; 707/799; 707/803; 707/956; 707/999.008; 711/147; 711/158; 718/106
International Classification: G06F 1300

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US4747043Mar 27, 1987May 24, 1988Prime Computer, Inc.Multiprocessor cache coherence system
US5027316Aug 8, 1989Jun 25, 1991International Business Machines CorporationVersioning of message formats in a 24-hour operating environment
US5185861Aug 19, 1991Feb 9, 1993Sequent Computer Systems, Inc.Cache affinity scheduler
US5214766Aug 19, 1992May 25, 1993International Business Machines CorporationData prefetching based on store information in multi-processor caches
US5249283Dec 24, 1990Sep 28, 1993NCR CorporationCache coherency method and apparatus for a multiple path interconnection network

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US5644768Dec 9, 1994Jul 1, 1997Borland International, Inc.Systems and methods for sharing resources in a multi-user environment
US5713025Sep 8, 1994Jan 27, 1998Sun Microsystems, Inc.Asynchronous arbiter using multiple arbiter elements to enhance speed
US5717897Sep 9, 1996Feb 10, 1998Unisys CorporationSystem for coordinating coherency of cache memories of multiple host computers of a distributed information system
US5745778Jan 26, 1994Apr 28, 1998Data General CorporationApparatus and method for improved CPU affinity in a multiprocessor system
US5799143Aug 26, 1996Aug 25, 1998Motorola, Inc.Multiple context software analysis
US5799182Jan 21, 1997Aug 25, 1998Ford Motor CompanyMultiple thread micro-sequencer apparatus and method with a single processor
US5828880Jul 6, 1995Oct 27, 1998Sun Microsystems, Inc.Pipeline system and method for multiprocessor applications in which each of a plurality of threads execute all steps of a process characterized by normal and parallel steps on a respective datum
US5829052Dec 10, 1996Oct 27, 1998Intel CorporationMethod and apparatus for managing memory accesses in a multiple multiprocessor cluster system
US5835906Jul 1, 1996Nov 10, 1998Sun Microsystems, Inc.Methods and apparatus for sharing stored data objects in a computer system
US5848402Aug 6, 1996Dec 8, 1998AI Ware, Inc.Universal system for artificial intelligence based learning, categorization, and optimization
US5860120Dec 9, 1996Jan 12, 1999Intel CorporationDirectory-based coherency system using two bits to maintain coherency on a dual ported memory system
US5875339May 15, 1997Feb 23, 1999Sun Microsystems, Inc.Asynchronous arbiter using multiple arbiter elements to enhance speed
US5884308Nov 12, 1996Mar 16, 1999British Telecommunications public limited companyUpdating distributed data files using active token distributed at different times to different sites
US5905998May 19, 1997May 18, 1999Sun Microsystems, Inc.Transaction activation processor for controlling memory transaction processing in a packet switched cache coherent multiprocessor system
US5913925Dec 16, 1996Jun 22, 1999International Business Machines CorporationMethod and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5924098Jun 30, 1997Jul 13, 1999Sun Microsystems, Inc.Method and apparatus for managing a linked-list data structure
US5940813Jul 26, 1996Aug 17, 1999Citibank, N.A.Process facility management matrix and system and method for performing batch, processing in an on-line environment
US5951672Jul 2, 1997Sep 14, 1999International Business Machines CorporationSynchronization method for work distribution in a multiprocessor system
US5966543Jun 26, 1997Oct 12, 1999International Business Machines CorporationMethod of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
US5991790Jul 1, 1996Nov 23, 1999Sun Microsystems, Inc.Generation and delivery of signals in a two-level, multithreaded system
US6044438Jul 10, 1997Mar 28, 2000International Business Machiness CorporationMemory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6047390Dec 22, 1997Apr 4, 2000Motorola, Inc.Multiple context software analysis
US6078997Dec 9, 1996Jun 20, 2000Intel CorporationDirectory-based coherency system for maintaining coherency in a dual-ported memory system
US6092155Jul 10, 1997Jul 18, 2000International Business Machines CorporationCache coherent network adapter for scalable shared memory processing systems
US6105049Aug 25, 1998Aug 15, 2000International Business Machines CorporationResource lock/unlock capability in multithreaded computer environment
US6105050Aug 25, 1998Aug 15, 2000International Business Machines CorporationSystem for resource lock/unlock capability in multithreaded computer environment
US6112222Aug 25, 1998Aug 29, 2000International Business Machines CorporationMethod for resource lock/unlock capability in multithreaded computer environment
US6122659Sep 10, 1999Sep 19, 2000International Business Machines CorporationMemory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6122674Sep 10, 1999Sep 19, 2000International Business Machines CorporationBi-directional network adapter for interfacing local node of shared memory parallel processing system to multi-stage switching network for communications with remote node
US6128705Jan 7, 1998Oct 3, 2000International Business Machines CorporationMethod and apparatus for executing multiply-initiated, multiply-sourced variable delay system bus operations
US6128706Feb 3, 1998Oct 3, 2000Institute for the Development of Emerging Architectures, L.L.C.Apparatus and method for a load bias--load with intent to semaphore
US6134627Nov 4, 1996Oct 17, 2000Sun Microsystems, Inc.Thread synchronization in a computer controlled by an object-based program
US6151663Jan 2, 1998Nov 21, 2000Intel CorporationCluster controller for memory and data cache in a multiple cluster processing system
US6167424Oct 27, 1997Dec 26, 2000Sun Microsystems, Inc.Method and apparatus for concurrent thread synchronization
US6212608Jun 22, 1998Apr 3, 2001Sun Microsystems, Inc.Method and apparatus for thread synchronization in an object-based system
US6219690Nov 1, 1996Apr 17, 2001International Business Machines CorporationApparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US6260057Mar 1, 1995Jul 10, 2001Sun Microsystems, Inc.Apparatus and method for high performance implementation of system calls
US6278963Jul 1, 1998Aug 21, 2001OPNET Technologies, Inc.System architecture for distribution of discrete-event simulations
US6343346Mar 1, 2000Jan 29, 2002International Business Machines CorporationCache coherent network adapter for scalable shared memory processing systems
US6510437Sep 26, 2000Jan 21, 2003Sun Microsystems, Inc.Method and apparatus for concurrent thread synchronization
US6539464Mar 23, 2001Mar 25, 2003Memory allocator for multithread environment
US6658652Jun 8, 2000Dec 2, 2003International Business Machines CorporationMethod and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6662359Jul 20, 2000Dec 9, 2003International Business Machines CorporationSystem and method for injecting hooks into Java classes to handle exception and finalization processing
US6678772Dec 19, 2000Jan 13, 2004International Businesss Machines CorporationAdaptive reader-writer lock
US6684262Oct 25, 2000Jan 27, 2004International Business Machines CorporationMethod and system for controlling peripheral device interface behavior using thread registration
US6735758Jul 6, 2000May 11, 2004International Business Machines CorporationMethod and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
US6742178Jul 20, 2000May 25, 2004International Business Machines CorporationSystem and method for instrumenting application class files with correlation information to the instrumentation
US6745027Mar 13, 2001Jun 1, 2004Seekernet IncorporatedClass switched networks for tracking articles
US6760909Jul 14, 1998Jul 6, 2004Microsoft CorporationVirtual memory system and methods
US6823429Sep 10, 1999Nov 23, 2004International Business Machines CorporationMemory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6874144Apr 5, 1999Mar 29, 2005International Business Machines CorporationSystem, method, and program for implementing priority inheritance in an operating system
US6886162Jul 31, 1998Apr 26, 2005International Business Machines CorporationHigh speed methods for maintaining a summary of thread activity for multiprocessor computer systems
US6892331Jan 17, 2002May 10, 2005International Business Machines CorporationMethod and system for error detection in a managed application environment
US6904594Jul 6, 2000Jun 7, 2005International Business Machines CorporationMethod and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment
US6934540Jun 23, 2003Aug 23, 2005Seekernet, Inc.Network formation in asset-tracking system based on asset class
US6944615Jun 28, 2001Sep 13, 2005International Business Machines CorporationSystem and method for avoiding deadlock situations due to pseudo-deleted entries
US6996812Jun 18, 2001Feb 7, 2006International Business Machines CorporationSoftware implementation of synchronous memory barriers
US7133704Nov 12, 2004Nov 7, 2006Terahop Networks, Inc.Manufacture of LPRF device wake up using wireless tag
US7155264Nov 12, 2004Dec 26, 2006Terahop Networks, Inc.Systems and methods having LPRF device wake up using wireless tag
US7191272Dec 9, 2003Mar 13, 2007International Business Machines CorporationAdaptive reader-writer lock
US7200132Aug 8, 2005Apr 3, 2007Terahop Networks, Inc.Forming ad hoc RSI networks among transceivers sharing common designation
US7209468Aug 8, 2005Apr 24, 2007Terahop Networks, Inc.Forming communication cluster of wireless AD HOC network based on common designation
US7209771May 14, 2003Apr 24, 2007Terahop Networks, Inc.Battery powered wireless transceiver having LPRF component and second wake up receiver
US7221668Aug 8, 2005May 22, 2007Terahop Networks, Inc.Communications within population of wireless transceivers based on common designation
US7287135Sep 29, 2004Oct 23, 2007International Business Machines CorporationAdapting RCU for real-time operating system usage
US7349926Mar 30, 2004Mar 25, 2008International Business Machines CorporationAtomic renaming and moving of data files while permitting lock-free look-ups
US7353346Mar 24, 2006Apr 1, 2008International Business Machines CorporationRead-copy-update (RCU) operations with reduced memory barrier usage
US7389497Jul 6, 2000Jun 17, 2008International Business Machines CorporationMethod and system for tracing profiling information using per thread metric variables with reused kernel threads
US7391321Jan 10, 2006Jun 24, 2008Terahop Networks, Inc.Keyhole communication device for tracking and monitoring shipping container and contents thereof
US7394361Jan 10, 2006Jul 1, 2008Terahop Networks, Inc.Keyhole communication device for tracking and monitoring shipping container and contents thereof
US7395263Oct 12, 2005Jul 1, 2008International Business Machines CorporationRealtime-safe read copy update with lock-free readers
US7395383Nov 1, 2005Jul 1, 2008International Business Machines CorporationRealtime-safe read copy update with per-processor read/write locks
US7430437Aug 8, 2005Sep 30, 2008Terahop Networks, Inc.Transmitting sensor-acquired data using step-power filtering
US7430627Feb 17, 2005Sep 30, 2008International Business Machines CorporationAdaptive reader-writer lock
US7472228Oct 27, 2004Dec 30, 2008International Business Machines CorporationRead-copy update method
US7522568Aug 8, 2005Apr 21, 2009Terahop Networks, Inc.Propagating ad hoc wireless networks based on common designation and routine
US7526381Jun 5, 2006Apr 28, 2009Terahop Networks, Inc.Network aided terrestrial triangulation using stars (NATTS)
US7529547Jun 5, 2006May 5, 2009Terahop Networks, Inc.Using wake-up receivers for soft hand-off in wireless communications
US7539520Jun 19, 2006May 26, 2009TeraHop Networks, Inc.Remote sensor interface (RSI) having power conservative transceiver for transmitting and receiving wakeup signals
US7542849Jun 5, 2006Jun 2, 2009Terahop Networks, Inc.Network aided terrestrial triangulation using stars (NATTS)
US7554442Jun 19, 2006Jun 30, 2009Terahop Networks, Inc.Event-driven mobile hazmat monitoring
US7563991Jun 8, 2006Jul 21, 2009Terahop Networks, Inc.All weather housing assembly for electronic components
US7574168Jun 16, 2006Aug 11, 2009Terahop Networks, Inc.Selective GPS denial system
US7574300Jun 16, 2006Aug 11, 2009Terahop Networks, Inc.GPS denial device detection and location system
US7583769Jun 16, 2006Sep 1, 2009Terahop Netowrks, Inc.Operating GPS receivers in GPS-adverse environment
US7650135Jun 5, 2006Jan 19, 2010Terahop Networks, Inc.Remote sensor interface (RSI) stepped wake-up sequence
US7653791Apr 11, 2008Jan 26, 2010International Business Machines CorporationRealtime-safe read copy update with per-processor read/write locks
US7681196Nov 18, 2004Mar 16, 2010Oracle International CorporationProviding optimal number of threads to applications performing multi-tasking using threads
US7685181Feb 26, 2007Mar 23, 2010International Business Machines CorporationMethod and system for utilizing a hierarchical bitmap structure to provide a fast and reliable mechanism to represent large deleted data sets in relational databases
US7705747Aug 18, 2006Apr 27, 2010Terahop Networks, Inc.Sensor networks for monitoring pipelines and power lines
US7733818Dec 13, 2006Jun 8, 2010Terahop Networks, Inc.Intelligent node communication using network formation messages in a mobile Ad hoc network
US7734879Jul 27, 2006Jun 8, 2010International Business Machines CorporationEfficiently boosting priority of read-copy update readers in a real-time data processing system
US7734881Jul 17, 2007Jun 8, 2010International Business Machines CorporationAdapting RCU for real-time operating system usage
US7742744Jan 14, 2009Jun 22, 2010Terahop Networks, Inc.Screening transmissions for power level and object identifier in asset monitoring and tracking systems
US7742745May 29, 2009Jun 22, 2010Terahop Networks, Inc.LPRF device wake up using wireless tag
US7742772Oct 31, 2006Jun 22, 2010Terahop Networks, Inc.Determining relative elevation using GPS and ranging
US7742773Oct 31, 2006Jun 22, 2010Terahop Networks, Inc.Using GPS and ranging to determine relative elevation of an asset
US7746838Feb 8, 2009Jun 29, 2010Terahop Networks, Inc.Logically distinct wireless data communication networks sharing gateway for communicating with external networks
US7747805May 6, 2008Jun 29, 2010International Business Machines CorporationAdaptive reader-writer lock
US7752621Sep 15, 2004Jul 6, 2010International Business Machines CorporationSystem, method and program for implementing priority inheritance in an operating system
US7770170Jul 12, 2005Aug 3, 2010Microsoft CorporationBlocking local sense synchronization barrier
US7783246Jun 16, 2006Aug 24, 2010TeraHop Networks, Inc.Tactical GPS denial and denial detection system
US7788332May 6, 2005Aug 31, 2010Cornell Research Foundation, Inc.Sensor-network processors using event-driven architecture
US7818306Apr 21, 2007Oct 19, 2010International Business Machines CorporationRead-copy-update (RCU) operations with reduced memory barrier usage
US7830273Aug 18, 2006Nov 9, 2010Terahop Networks, Inc.Sensor networks for pipeline monitoring
US7830850Dec 24, 2008Nov 9, 2010Terahop Networks, Inc.Class-switching in class-based data communcations network
US7830852Feb 8, 2009Nov 9, 2010Terahop Networks, Inc.Automatic and dynamic changing of class in class-based asset tracking and monitoring systems
US7904436May 21, 2008Mar 8, 2011International Business Machines CorporationRealtime-safe read copy update with lock-free readers
US7907941Jan 1, 2007Mar 15, 2011Terahop Networks, Inc.Determining presence of radio frequency communication device
US7940716Jul 3, 2006May 10, 2011Terahop Networks, Inc.Maintaining information facilitating deterministic network routing
US7940717Oct 31, 2007May 10, 2011Terahop Networks, Inc.Selective wake-up of data packet radio component using common designation communication
US7940719Feb 8, 2009May 10, 2011Terahop Networks, Inc.Automatic and dynamic changing of class in class-based networks
US7940736Oct 31, 2007May 10, 2011Terahop Networks, Inc.Selective response to radio frequency (RF) transmissions by wireless two-way RF data communication device
US7941095May 6, 2009May 10, 2011Terahop Networks, Inc.LPRF device wake up using wireless tag
US7953708Jul 28, 2008May 31, 2011International Business Machines CorporationOptimizing grace period detection for preemptible read-copy update on uniprocessor systems
US7953778May 20, 2008May 31, 2011International Business Machines CorporationEfficient support of consistent cyclic search with read-copy update and parallel updates
US7987166Apr 22, 2007Jul 26, 2011International Business Machines CorporationAtomic renaming and moving of data files while permitting lock-free look-ups
US8020160Jul 28, 2008Sep 13, 2011International Business Machines CorporationUser-level read-copy update that does not require disabling preemption or signal handling
US8050625Jan 7, 2009Nov 1, 2011Terahop Networks, Inc.Wireless reader tags (WRTs) with sensor components in asset monitoring and tracking systems
US8055860Jan 27, 2008Nov 8, 2011International Business Machines CorporationRead-copy-update (RCU) operations with reduced memory barrier usage
US8055918Apr 3, 2008Nov 8, 2011International Business Machines CorporationOptimizing preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US8078139May 14, 2010Dec 13, 2011TeraHop Networks, Inc.Wireless data communications network system for tracking container
US8095070Jan 7, 2009Jan 10, 2012Terahop Networks, Inc.Wireless reader tags (WRTS) with sensor components in asset monitoring and tracking systems
US8108696Jul 24, 2008Jan 31, 2012International Business Machines CorporationOptimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US8117599Apr 29, 2008Feb 14, 2012International Business Machines CorporationTracing profiling information using per thread metric variables with reused kernel threads
US8144671Jul 3, 2006Mar 27, 2012Communicating via nondeterministic and deterministic network routing
US8161250May 20, 2009Apr 17, 2012Sharp Laboratories of America, Inc.Methods and systems for partially-transacted data concurrency
US8176489Dec 9, 2004May 8, 2012International Business Machines CorporationUse of rollback RCU with read-side modifications to RCU-protected data structures
US8185697Jan 7, 2005May 22, 2012Hewlett-Packard Development Company, L.P.Methods and systems for coherence protocol tuning
US8185704Sep 2, 2009May 22, 2012International Business Machines CorporationHigh performance real-time read-copy update
US8195893Nov 3, 2008Jun 5, 2012International Business Machines CorporationEliminating synchronous grace period detection for non-preemptible read-copy update on uniprocessor systems
US8218514May 27, 2009Jul 10, 2012Google, Inc.Wireless data communications network system for tracking containers
US8223680Jan 13, 2009Jul 17, 2012Google Inc.Mesh network control using common designation wake-up

Claims

1. A mutual-exclusion apparatus for maintaining data coherency while concurrently reading and updating a current generation data element stored in first sites of a memory of a computer, the mutual-exclusion apparatus comprising:

a first thread controlling the reading of the current generation data element;
a second thread controlling the updating of the current generation data element and storing the updated data element in second sites as a next generation data element;
a thread activity monitor producing and storing in the memory, execution history data indicative of states of the first and second threads; and
an element processor processing the current and next generation data elements in response to the execution history data that indicate the first and second threads have one of entered a predetermined state and passed through the predetermined state.

2. The mutual-exclusion apparatus of claim 1 in which the thread activity monitor includes at least one of a bitmask, a dense bitmap, a distributed bitmap, a hierarchical bitmap, and a per-thread quiescent state counter.

3. The mutual-exclusion apparatus of claim 2 in which the thread activity monitor further includes a generation counter.

4. The mutual-exclusion apparatus of claim 2 in which the thread activity monitor further includes a thread counter.

5. The apparatus of claim 1 in which the predetermined state is a quiescent state.

6. The mutual-exclusion apparatus of claim 5 in which the quiescent state includes at least one of an idle loop, a user mode, a context switching point, a wait for user input, a wait for messages, a wait for transactions, a wait for control input, a base priority level, an event queue processor, and an artificially created quiescent state.

7. The mutual-exclusion apparatus of claim 1 in which the element processor processes the first and next generation data elements such that the current generation data element is replaced by the next generation data element.

8. The mutual-exclusion apparatus of claim 1 in which the current generation data elements are tracked by a first callback that is an element of a current generation data structure and the next generation data elements are tracked by a second callback that is an element of a next generation data structure, and the element processor is a callback processor that processes the current generation data elements in accordance with a processing function stored in the first callback and processes the next generation data elements in accordance with a processing function stored in the second callback.

9. The mutual-exclusion apparatus of claim 1 in which each of the first and second threads includes at least one of a processor, a process, a task, an interrupt handler, a service procedure, a co-routine, and a transaction.

10. The mutual-exclusion apparatus of claim 1 in which the element processor processes the current and next generation data elements when at least one of a controlling thread enters a quiescent state, leaves a quiescent state, a reader thread accesses a data structure, an updater thread updates a data structure, and an interrupt is received by the element processor.

11. The apparatus of claim 1 in which the computer is of a multiprocessor type.

12. In a computer system, a method for providing mutual-exclusion between current and next generation data elements, the next generation data element being formed by updating while concurrently reading the current generation data element stored in first memory sites of a computer, the mutual-exclusion method comprising the steps of:

reading under control of a first thread the current generation data element;
updating under control of a second thread the current generation data element to form and store in second memory sites the next generation data element;
monitoring the first and second threads to produce execution history data indicative of states of the first and second threads; and
processing the current and next generation data elements in response to execution history data that indicate the first and second threads have one of entered a predetermined state and passed through the predetermined state.

13. The method of claim 12 in which the execution history data are stored in at least one of a bitmask, a dense bitmap, a distributed bitmap, a hierarchical bitmap, and a per-thread quiescent state counter.

14. The method of claim 13 in which the execution history data are further stored in a generation counter.

15. The method of claim 13 in which the execution history data are further stored in a thread counter.

16. The method of claim 12 in which the predetermined state is a quiescent state.

17. The method of claim 16 in which the quiescent state includes at least one of an idle loop, a user mode, a context switching point, a wait for user input, a wait for messages, a wait for transactions, a wait for control input, a base priority level, an event queue processor, and an artificially created quiescent state.

18. The method of claim 12 further including a step of resetting the execution history data in response to performing the processing step.

19. The method of claim 12 in which the current generation data elements are tracked by a first callback that is an element of a current generation data structure and the next generation data elements are tracked by a second callback that is an element of a next generation data structure, and the processing step further includes processing the current generation data elements in accordance with a processing function stored in the first callback and processing the next generation data elements in accordance with a processing function stored in the second callback.

20. The method of claim 12 in which the processing step comprises replacing the current generation data element with the next generation data element in response to the execution history data indicating that the first and second threads have one of entered a predetermined state and passed through the predetermined state.

21. The method of claim 12 in which each of the first and second threads includes at least one of a processor, a process, a task, an interrupt handler, a service procedure, and a transaction.

22. The method of claim 12 in which the computer system includes at least one of a reader thread, an updater thread, and a callback processor and in which the processing step commences when one of the first and second threads one of enters a quiescent state, leaves the quiescent state, the reader thread accesses a data structure, the updater thread updates a data structure, and the callback processor receives an interrupt.

23. The method of claim 12 in which the computer is of a multiprocessor type.

24. A computer system operating in accordance with the method of claim 12.