Patents by Inventor David L. Detlefs
David L. Detlefs has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Publication number: 20110145553Abstract: Handling parallelism in transactions. One embodiment includes a method that includes beginning a cache resident transaction. The method further includes encountering a nested structured parallelism construct within the cache resident transaction. A determination is made as to whether the transaction would run faster serially in cache resident mode or faster parallel in software transactional memory mode for the overall transaction. In the software transactional memory mode, cache resident mode is used for one or more hierarchically lower nested transactions. The method further includes continuing the transaction in the mode determined.Type: ApplicationFiled: December 15, 2009Publication date: June 16, 2011Applicant: MICROSOFT CORPORATIONInventors: Yosseff Levanoni, David L. Detlefs, Jan S. Gray
-
Publication number: 20100275209Abstract: A scalable locking system is described herein that allows processors to access shared data with reduced cache contention to increase parallelism and scalability. The system provides a reader/writer lock implementation that uses randomization and spends extra space to spread possible contention over multiple cache lines. The system avoids updates to a single shared location in acquiring/releasing a read lock by spreading the lock count over multiple sub-counts in multiple cache lines, and hashing thread identifiers to those cache lines. Carefully crafted invariants allow the use of partially lock-free code in the common path of acquisition and release of a read lock. A careful protocol allows the system to reuse space allocated for a read lock for subsequent locking to avoid frequent reallocating of read lock data structures. The system also provides fairness for write-locking threads and uses object pooling techniques to make reduce costs associated with the lock data structures.Type: ApplicationFiled: April 28, 2009Publication date: October 28, 2010Applicant: Microsoft CorporationInventor: David L. Detlefs
-
Patent number: 7805467Abstract: A methodology has been discovered for transforming garbage collection-dependent algorithms, shared object implementations and/or concurrent software mechanisms into a form that does not presume the existence of an independent, or execution environment provided, garbage collector. Algorithms, shared object implementations and/or mechanisms designed or transformed using techniques described herein provide explicit reclamation of storage using lock-free pointer operations. Transformations can be applied to lock-free algorithms and shared object implementations and preserve lock-freedom of such algorithms and implementations. As a result, existing and future lock-free algorithms and shared object implementations that depend on a garbage-collected execution environment can be exploited in environments that do not provide garbage collection.Type: GrantFiled: January 30, 2006Date of Patent: September 28, 2010Assignee: Oracle America, Inc.Inventors: Mark S. Moir, David L. Detlefs, Simon Doherty, Maurice P. Herlihy, Victor M. Luchangco, Paul A. Martin, Guy L. Steele, Jr.
-
Publication number: 20100228929Abstract: A software transactional memory system is provided that provides privatization safety. The system identifies situations where the completion of a transaction may be expedited because a privatization artifact will not occur. The system determines whether a privatization artifact may occur using a read and write set intersection test, transactional variables, pessimistic locks, or declared privatizing transactions. If a privatization artifact will not occur for a transaction, then the system may allow the transaction to complete prior to one or more earlier transactions.Type: ApplicationFiled: March 9, 2009Publication date: September 9, 2010Applicant: Microsoft CorporationInventors: David L. Detlefs, Yosseff Levanoni, Weirong Zhu, Dana Groff, Alexander Dadiomov
-
Publication number: 20100211931Abstract: A software transactional memory system is provided with overflow handling. The system includes a global version counter with an epoch number and a version number. The system accesses the global version counter prior to and subsequent to memory accesses of transactions to validate read accesses of the transaction. The system includes mechanisms to detect global version number overflow and may allow some or all transactions to execute to completion subsequent to the global version number overflowing. The system also provides publication, privatization, and granular safety properties.Type: ApplicationFiled: February 13, 2009Publication date: August 19, 2010Applicant: Microsoft CorporationInventors: Yosseff Levanoni, David L. Detlefs, Weirong Zhu, Timothy L. Harris, Michael M. Magruder, Mathew B. Tolton
-
Patent number: 7779054Abstract: A method for heuristic-based resumption of fully-young garbage collection intervals comprises allocating memory to objects within one or more regions of a heap partitioned into a plurality of regions, and classifying each heap region as belonging to a category of a plurality of categories based at least in part on the recency of allocation of objects within the regions. The method may further comprise determining, using a garbage collection efficiency metric, whether regions belonging to a first category of the plurality of categories are to be excluded from a collection set of a particular garbage collection interval on the heap. In response to determining that the first category of regions is to be excluded, the method may comprise selecting a collection set that does not include any regions of the first category, and reclaiming memory from that collection set.Type: GrantFiled: September 30, 2005Date of Patent: August 17, 2010Assignee: Oracle America, Inc.Inventors: Antonios Printezis, David L. Detlefs
-
Patent number: 7765555Abstract: One embodiment of the present invention provides a system that facilitates bulk lock-unbiasing for objects within an object-based computing system. The system maintains an epoch, which is a field containing a timestamp, for a biasable object class and each instance of the biasable object class. If the epoch for the biasable object class matches the epoch for a specific instance of the biasable object class, the system knows that any bias for that specific instance is currently valid. When the system receives a signal to perform a bulk lock-unbiasing operation for instances of the biasable object class, it responds by stopping all threads in the object-based computing system at a safe point. Then, the system performs a bulk lock-unbiasing operation for unlocked instances of the biasable object class by incrementing the epoch for the biasable object class and by incrementing corresponding epochs for locked instances of the biasable object class.Type: GrantFiled: February 14, 2006Date of Patent: July 27, 2010Assignee: Oracle America, Inc.Inventors: David L. Detlefs, Kenneth B. Russell
-
Publication number: 20100083257Abstract: A software transactional memory system is provided that creates an array of transactional locks for each array object that is accessed by transactions. The system divides the array object into non-overlapping portions and associates each portion with a different transactional lock. The system acquires transactional locks for transactions that access corresponding portions of the array object. By doing so, different portions of the array object can be accessed by different transactions concurrently. The system may use a shared shadow or undo copy for accesses to the array object.Type: ApplicationFiled: October 1, 2008Publication date: April 1, 2010Applicant: Microsoft CorporationInventors: Weirong Zhu, David L. Detlefs, Yosseff Levanoni, Lingli Zhang
-
Patent number: 7685580Abstract: In a computer system that uses a “snapshot-at-the-beginning” garbage collector and in which write barrier code is generated for pointer write instructions in order to support the operation of the garbage collector, a static analysis of the computer program source code is performed prior to generating compiled code for the application and garbage collector in order to identify source code instructions that, at runtime, will perform initializing pointer writes as indicated by the fact that they overwrite memory locations that contain a predetermined pre-write value, such as NULL. The identified instructions are then compiled in a conventional manner, but no write barrier code is generated for them. Thus, at runtime, those instructions that perform initializing writes will incur no write barrier cost penalty.Type: GrantFiled: August 30, 2005Date of Patent: March 23, 2010Assignee: Sun Microsystems, Inc.Inventors: David L. Detlefs, V. Krishna Nandivada
-
Patent number: 7676511Abstract: In some circumstances a generational garbage collector may be made more efficient by “pre-tenuring” objects or directly allocating new objects in an old generation instead of allocating them in the normal fashion in a young generation. A pre-tenuring decision is made by a two step process. In the first step, during a young-generation collection, an execution frequency is determined for each allocation site and sites with the highest execution frequency are selected as candidate sites. In the second step, during a subsequent young-generation collection, the survival rates are determined for the candidate sites. After this, objects allocated from sites with sufficiently high survival rates are allocated directly in the old generation.Type: GrantFiled: January 27, 2006Date of Patent: March 9, 2010Assignee: Sun Microsystems, Inc.Inventors: Antonios Printezis, David L. Detlefs, Fabio Rojas
-
Patent number: 7672983Abstract: The time cost of collecting a region in a Garbage-First garbage collector is adjusted to account for concurrent thread activity. The overhead of a concurrent thread is tracked by dividing elapsed time into relatively short time “windows” and monitoring the system during those windows to determine how long that thread is scheduled to run during those windows. Using measurements of this type for each concurrent thread, the percentage of each elapsed time window dedicated to each concurrent thread is determined. Finally, by summing the percentages of elapsed time dedicated to concurrent thread activity, the cost of collecting a region can be increased by adding the overhead attributable to concurrent activity.Type: GrantFiled: December 19, 2005Date of Patent: March 2, 2010Assignee: Sun Microsystems, Inc.Inventors: Antonios Printezis, David L. Detlefs
-
Publication number: 20090327291Abstract: Software transactional memory (STM) primitives are provided that allow the results of prior open calls to be used by subsequent open calls either as-is or through another STM primitive that consumes the results of the previous invocation. The STM primitives are configured to ensure that the address of a shadow copy representing a memory location will not changed across a wide range of operations and thereby enable re-use of the shadow copy.Type: ApplicationFiled: June 27, 2008Publication date: December 31, 2009Applicant: Microsoft CorporationInventors: Yosseff Levanoni, David L. Detlefs, Michael M. Magruder, Vinod K. Grover
-
Publication number: 20090327636Abstract: A software transactional memory system is provided that generates and stores compressed transactional locks in a portion of object headers. The software transactional memory system allocates preferred write log memory with a predefined size of memory that corresponds to a number of bits in the compressed transactional locks. The compressed transactional locks identify write log entries in corresponding write logs in the preferred write log memory. If the preferred write log memory becomes full, additional write log memory is allocated for write log entries and subsequent transactional locks are stored uncompressed in an auxiliary memory. A pointer that may be used to locate the uncompressed transactional lock is stored in the header. If an object header with a compressed transactional lock is needed for another use, the compressed transactional lock is uncompressed and stored in the auxiliary memory. A pointer that may be used to locate the uncompressed transactional lock is stored in the header.Type: ApplicationFiled: June 27, 2008Publication date: December 31, 2009Applicant: Microsoft CorporationInventors: David L. Detlefs, Vinod K. Grover, Yosseff Levanoni, Michael M. Magruder
-
Publication number: 20090328019Abstract: A dynamic race detection system is provided that detects race conditions in code that executes concurrently in a computer system. The dynamic race detection system uses a modified software transactional memory (STM) system to detect race conditions. A compiler converts portions of the code that are not configured to operate with the STM system into pseudo STM code that operates with the STM system. The dynamic race detection system detects race conditions in response to either a pseudo STM transaction in the pseudo STM code failing to validate when executed or an actual STM transaction failing to validate when executed because of conflict with a concurrent pseudo STM transaction.Type: ApplicationFiled: June 27, 2008Publication date: December 31, 2009Applicant: MICROSOFT CORPORATIONInventors: David L. Detlefs, Michael M. Magruder, Yosseff Levanoni
-
Publication number: 20090328018Abstract: A compiler is provided that determines when the use of software transactional memory (STM) primitives may be optimized with respect to a set of collectively dominating STM primitives. The compiler analysis coordinates the use of variables containing possible shadow copy pointers to allow the analysis to be performed for both direct write and buffered write STM systems. The coordination of the variables containing the possible shadow copy pointers ensures that the results of STM primitives are properly reused. The compiler analysis identifies memory accesses where STM primitives may be eliminated, combined, or substituted for lower overhead STM primitives.Type: ApplicationFiled: June 27, 2008Publication date: December 31, 2009Applicant: MICROSOFT CORPORATIONInventors: David L. Detlefs, Michael M. Magruder, Yosseff Levanoni, Vinod K. Grover
-
Patent number: 7640544Abstract: A multiprocessor, multi-program, stop-the-world garbage collection program is described. The system initially over partitions the root sources, and then iteratively employs static and dynamic work balancing. Garbage collection threads compete dynamically for the initial partitions. Work stealing double-ended queues, where contention is reduced, are described to provide dynamic load balancing among the threads. Contention is resolved by using atomic instructions. The heap is broken into a young and an old generation where parallel semi-space copying is used to collect the young generation and parallel mark-compacting the old generation. Speed and efficiency of collection is enhanced by use of card tables and linking objects, and overflow conditions are efficiently handled by linking using class pointers. A garbage collection termination employs a global status word.Type: GrantFiled: November 23, 2004Date of Patent: December 29, 2009Assignee: Sun Microsystems, Inc.Inventors: Christine H. Flood, David L. Detlefs, Nir N. Shavit, Xiaolan Zhang, Ole Agesen
-
Patent number: 7636745Abstract: A garbage collector uses the results a whole-heap marking operation to select collection sets for subsequent collection. It repeatedly calculates a measure of the cumulative collection efficiency since the marking operation, and it initiates another marking operation when the cumulative efficiency begins to deteriorate.Type: GrantFiled: November 11, 2004Date of Patent: December 22, 2009Assignee: Sun Microsystems, Inc.Inventor: David L. Detlefs
-
Patent number: 7606989Abstract: In a generational garbage collector, a decision is made to pre-tenure, or allocate new objects directly in the old generation, by a two step process. In the first step, during a young-generation collection, the number of bytes that survive collection is determined for each allocation site and a predetermined number of sites with the highest number of surviving bytes are selected as candidate sites. In the second step, during a subsequent young-generation collection, the survival rates are determined for the candidate sites and objects to be allocated from sites with a sufficiently high survival rate are allocated directly in older generations.Type: GrantFiled: September 1, 2005Date of Patent: October 20, 2009Assignee: Sun Microsystems, Inc.Inventors: David L. Detlefs, Antonios Printezis, Fabio Rojas
-
Patent number: 7599973Abstract: In a generational, copying garbage collector, young generation collection may be made more efficient by dynamically measuring object survival rates as a function of “fine-grained” allocation age, and choosing, on the basis of these survival rates, part of the young generation that will be not be collected, but instead scanned for pointers to objects in the rest of the young generation. The rest of the young generation, including objects referenced by the pointers, is then collected.Type: GrantFiled: January 12, 2006Date of Patent: October 6, 2009Assignee: Sun Microsystems, Inc.Inventors: David L. Detlefs, Antonios Printezis, Steven K. Heller
-
Patent number: 7596667Abstract: In a computer system having a multithreaded application and a generational garbage collector that dynamically pre-tenures objects from a predetermined number of candidate allocation sites, allocated byte accounting is performed by each application thread using an array that contains a number of entries equal to the total number of candidate sites at any given time. Each array is indexed by a site number assigned to that site and contains a bytes allocated count for that site. At compilation time, object allocation code that is generated by the compiler is modified to update an array entry associated with a site number that is assigned when the site is selected as a candidate site. Since each array is local to the thread that contains it, each thread can write into its array without using atomic operations or locks.Type: GrantFiled: September 1, 2005Date of Patent: September 29, 2009Assignee: Sun Microsystems, Inc.Inventors: David L. Detlefs, Antonios Printezis, Fabio Rojas