Patents by Inventor Bjarne Steensgaard

Bjarne Steensgaard 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).

  • Patent number: 9110791
    Abstract: Object relocation often involves a multi-word copy of the object from a source address to a destination address, followed by updating the references (e.g., pointers) to the object. However, during the relocation, other threads may write to portions of the object that have already been relocated, and the updates may be lost when the references are updated to point to the destination address. A non-blocking relocation technique may be implemented to permit threads to write to the object during the relocation, wherein the memory accesses are monitored for a write to the object. If a write is detected during the relocation, the relocation fails and the memory at the destination address is deallocated; but if no write is detected, the relocation succeeds and the references are updated to point to the destination address. Refinements of this technique may be implemented to reduce other synchronization issues.
    Type: Grant
    Filed: March 3, 2008
    Date of Patent: August 18, 2015
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Filip Pizlo, Erez Petrank, Bjarne Steensgaard
  • Patent number: 8825719
    Abstract: Concurrent, incremental, and lock-free stack scanning for garbage collectors is disclosed. This method uses a summary table and return barriers to allow high responsiveness. The method also supports programs that employ fine-synchronization to avoid locks, imposes negligible overhead on program execution, can be used with existing concurrent collectors, and supports the special in-stack references existing in languages such as C#.
    Type: Grant
    Filed: October 30, 2008
    Date of Patent: September 2, 2014
    Assignee: Microsoft Corporation
    Inventors: Bjarne Steensgaard, Erez Petrank, Gabriel Kliot
  • Patent number: 8782627
    Abstract: Mechanism that employs code cloning and specialized code execution for barriers to minimize runtime overhead. This is facilitated by duplicating code and inserting specializations of the barriers in the code copies. The mechanism is effective for garbage collection when the garbage collection executes through different phases, and the barrier behavior and overheads depend on these phases. The duplicated and specialized code enables the program to run efficiently by reducing the dynamic count of a phase check when the phase is well-known and phase checks can be avoided.
    Type: Grant
    Filed: November 29, 2007
    Date of Patent: July 15, 2014
    Assignee: Microsoft Corporation
    Inventors: Bjarne Steensgaard, Erez Petrank, Filip Pizlo
  • Patent number: 8245005
    Abstract: Object relocation often involves a multi-word copy of the object from a source memory to a destination memory, followed by updating the references (e.g., pointers) to the object. However, during the relocation, other threads may write to portions of the object that have already been relocated, and the updates may be lost when the references are updated to point to the destination memory. The object relocation may therefore mark the words of the object during relocation with a relocation value to indicate transfer to the destination memory without locking the threads. The threads may be configured to check the value the source memory during object access, and to access the corresponding word of the destination memory if the source memory word comprises the relocation value. While the probability of a large (e.g., 64-bit) relocation value appearing in the object is small, safety measures are provided to detect and mitigate conflicts.
    Type: Grant
    Filed: March 3, 2008
    Date of Patent: August 14, 2012
    Assignee: Microsoft Corporation
    Inventors: Filip Pizlo, Erez Petrank, Bjarne Steensgaard
  • Patent number: 8041752
    Abstract: Described is a technology by which a real-time data relocating mechanism is provided for multiprocessing environments, including supporting lock-free programs that run in parallel. The relocating mechanism moves an object by using a status field related to the data field, possibly in an interim (wide) object space, which is then copied to a to-space object. The status information for each data field of the original object contains information indicating where a current version of the data for each field is present, that is, in the original, wide or to-space object. In one example, a handshake mechanism of a garbage collector establishes preparation and copy phases between the mechanism and other threads that determine where memory accesses occur. Also described is support for program thread compare-and-swap (CAS) operations and/or multi-word atomic operations.
    Type: Grant
    Filed: March 24, 2010
    Date of Patent: October 18, 2011
    Assignee: Microsoft Corporation
    Inventors: Erez Petrank, Filip Jerzy Pizlo, Bjarne Steensgaard
  • Patent number: 8032898
    Abstract: Described herein are one or more implementations that separate kernel interfaces functions into those that act on kernel objects owned by a process and accessed exclusively by that process—described herein as local kernel objects—from access to kernel objects owned by a process and accessible by other active processes.
    Type: Grant
    Filed: June 30, 2006
    Date of Patent: October 4, 2011
    Assignee: Microsoft Corporation
    Inventors: Galen C. Hunt, James R. Larus, Manuel Fähndrich, Bjarne Steensgaard, David R. Tarditi, Brian Zill
  • Publication number: 20100179971
    Abstract: Described is a technology by which a real-time data relocating mechanism is provided for multiprocessing environments, including supporting lock-free programs that run in parallel. The relocating mechanism moves an object by using a status field related to the data field, possibly in an interim (wide) object space, which is then copied to a to-space object. The status information for each data field of the original object contains information indicating where a current version of the data for each field is present, that is, in the original, wide or to-space object. In one example, a handshake mechanism of a garbage collector establishes preparation and copy phases between the mechanism and other threads that determine where memory accesses occur. Also described is support for program thread compare-and-swap (CAS) operations and/or multi-word atomic operations.
    Type: Application
    Filed: March 24, 2010
    Publication date: July 15, 2010
    Applicant: Microsoft Corporation
    Inventors: Erez Petrank, Filip Jerzy Pizlo, Bjarne Steensgaard
  • Patent number: 7716192
    Abstract: Described is a technology by which a real-time data relocating mechanism is provided for multiprocessing environments, including supporting lock-free programs that run in parallel. The relocating mechanism moves an object by using a status field related to the data field, possibly in an interim (wide) object space, which is then copied to a to-space object. The status information for each data field of the original object contains information indicating where a current version of the data for each field is present, that is, in the original, wide or to-space object. In one example, a handshake mechanism of a garbage collector establishes preparation and copy phases between the mechanism and other threads that determine where memory accesses occur. Also described is support for program thread compare-and-swap (CAS) operations and/or multi-word atomic operations.
    Type: Grant
    Filed: May 8, 2007
    Date of Patent: May 11, 2010
    Assignee: Microsoft Corporation
    Inventors: Erez Petrank, Filip Jerzy Pizlo, Bjarne Steensgaard
  • Publication number: 20100114998
    Abstract: Concurrent, incremental, and lock-free stack scanning for garbage collectors is disclosed. This method uses a summary table and return barriers to allow high responsiveness. The method also supports programs that employ fine-synchronization to avoid locks, imposes negligible overhead on program execution, can be used with existing concurrent collectors, and supports the special in-stack references existing in languages such as C#.
    Type: Application
    Filed: October 30, 2008
    Publication date: May 6, 2010
    Applicant: Microsoft Corporation
    Inventors: Bjarne Steensgaard, Erez Petrank, Gabriel Kliot
  • Patent number: 7607125
    Abstract: Existing methods for returning program state to a previous state are often too heavy weight. Often these methods attempt to guarantee a series of properties to a programmer across a distributed environment or multiple threads. Instead, a program state reversion mechanism provides a light weight and efficient runtime solution for general purpose programming languages. For example, a series of program statements (e.g., methods, instructions, etc.) are indicated by a programmer in a state reversion language construct, such as a TryAll block. If an exception is thrown anywhere from within the TryAll block, the program is reverted to the pre-TryAll block state.
    Type: Grant
    Filed: November 11, 2004
    Date of Patent: October 20, 2009
    Assignee: Microsoft Corporation
    Inventors: Avraham E. Shinnar, David Read Tarditi, Jr., Bjarne Steensgaard
  • Publication number: 20090222634
    Abstract: Object relocation often involves a multi-word copy of the object from a source memory to a destination memory, followed by updating the references (e.g., pointers) to the object. However, during the relocation, other threads may write to portions of the object that have already been relocated, and the updates may be lost when the references are updated to point to the destination memory. The object relocation may therefore mark the words of the object during relocation with a relocation value to indicate transfer to the destination memory without locking the threads. The threads may be configured to check the value the source memory during object access, and to access the corresponding word of the destination memory if the source memory word comprises the relocation value. While the probability of a large (e.g., 64-bit) relocation value appearing in the object is small, safety measures are provided to detect and mitigate conflicts.
    Type: Application
    Filed: March 3, 2008
    Publication date: September 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Filip Pizlo, Erez Petrank, Bjarne Steensgaard
  • Publication number: 20090222494
    Abstract: Object relocation often involves a multi-word copy of the object from a source address to a destination address, followed by updating the references (e.g., pointers) to the object. However, during the relocation, other threads may write to portions of the object that have already been relocated, and the updates may be lost when the references are updated to point to the destination address. A non-blocking relocation technique may be implemented to permit threads to write to the object during the relocation, wherein the memory accesses are monitored for a write to the object. If a write is detected during the relocation, the relocation fails and the memory at the destination address is deallocated; but if no write is detected, the relocation succeeds and the references are updated to point to the destination address. Refinements of this technique may be implemented to reduce other synchronization issues.
    Type: Application
    Filed: March 3, 2008
    Publication date: September 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Filip Pizlo, Erez Petrank, Bjarne Steensgaard
  • Publication number: 20090144712
    Abstract: Mechanism that employs code cloning and specialized code execution for barriers to minimize runtime overhead. This is facilitated by duplicating code and inserting specializations of the barriers in the code copies. The mechanism is effective for garbage collection when the garbage collection executes through different phases, and the barrier behavior and overheads depend on these phases. The duplicated and specialized code enables the program to run efficiently by reducing the dynamic count of a phase check when the phase is well-known and phase checks can be avoided.
    Type: Application
    Filed: November 29, 2007
    Publication date: June 4, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Bjarne Steensgaard, Erez Petrank, Filip Pizlo
  • Publication number: 20080281886
    Abstract: Described is a technology by which a real-time data relocating mechanism is provided for multiprocessing environments, including supporting lock-free programs that run in parallel. The relocating mechanism moves an object by using a status field related to the data field, possibly in an interim (wide) object space, which is then copied to a to-space object. The status information for each data field of the original object contains information indicating where a current version of the data for each field is present, that is, in the original, wide or to-space object. In one example, a handshake mechanism of a garbage collector establishes preparation and copy phases between the mechanism and other threads that determine where memory accesses occur. Also described is support for program thread compare-and-swap (CAS) operations and/or multi-word atomic operations.
    Type: Application
    Filed: May 8, 2007
    Publication date: November 13, 2008
    Applicant: Microsoft Corporation
    Inventors: Erez Petrank, Filip Jerzy Pizlo, Bjarne Steensgaard
  • Publication number: 20080010327
    Abstract: An object-oriented program is modified to create objects within specified regions, allowing memory de-allocation to take place for entire regions at once. The contents and associations between the regions are described by one or more shape graphs, which are created from an analysis of the program code. The region association metadata stored by the shape graphs allows the region-based memory management to take place while requiring no more than one region to be passed to methods for each object passed.
    Type: Application
    Filed: August 22, 2007
    Publication date: January 10, 2008
    Applicant: Microsoft Corporation
    Inventors: Bjarne Steensgaard, Daniel Spoonhower
  • Publication number: 20080005750
    Abstract: Described herein are one or more implementations that separate kernel interfaces functions into those that act on kernel objects owned by a process and accessed exclusively by that process—described herein as local kernel objects—from access to kernel objects owned by a process and accessible_by other active processes.
    Type: Application
    Filed: June 30, 2006
    Publication date: January 3, 2008
    Applicant: Microsoft Corporation
    Inventors: Galen C. Hunt, James R. Larus, Manuel A. Fahndrich, Bjarne Steensgaard, David R. Tarditi, Brian Zill
  • Patent number: 7263532
    Abstract: An object-oriented program is modified to create objects within specified regions, allowing memory de-allocation to take place for entire regions at once. The contents and associations between the regions are described by one or more shape graphs, which are created from an analysis of the program code. The region association metadata stored by the shape graphs allows the region-based memory management to take place while requiring no more than one region to be passed to methods for each object passed.
    Type: Grant
    Filed: February 19, 2004
    Date of Patent: August 28, 2007
    Assignee: Microsoft Corporation
    Inventors: Bjarne Steensgaard, Daniel John Spoonhower
  • Publication number: 20070094673
    Abstract: Described herein are one or more implementations for describing and/or addressing the configuration requirements of applications, extensions, device drivers, and other components of a software system.
    Type: Application
    Filed: June 30, 2006
    Publication date: April 26, 2007
    Applicant: Microsoft Corporation
    Inventors: Galen Hunt, James Larus, Manuel Fanndrich, Orion Hodson, Steven Levi, Bjarne Steensgaard, David Tarditi, Michael Spear, Michael Carbin
  • Publication number: 20070094495
    Abstract: Described herein are one or more implementations of an operating system that provides for statically verifiable inter-process communication between isolated processes. Also, described herein are one or more implementations of programming tools that facilitate the development of statically verifiable isolated processes having inter-process communication.
    Type: Application
    Filed: June 30, 2006
    Publication date: April 26, 2007
    Applicant: Microsoft Corporation
    Inventors: Galen Hunt, James Larus, Martin Abadi, Mark Aiken, Paul Barham, Manuel Fahndrich, Chris Hawblitzel, Orion Hodson, Steven Levi, Nicholas Murphy, Bjarne Steensgaard, David Tarditi, Edward Wobber, Brian Zill
  • Patent number: 7111294
    Abstract: Thread-specific heaps are employed in multithreaded programs to decrease garbage collection latency in such programs. Program data in a target program is analyzed to identify thread-specific data and shared data. Thread-specific data is identified on the basis that the thread-specific data is determined to be reachable only from a single program thread of the target program. Each program thread can be associated with an individual thread-specific heap. Shared data is identified on the basis that the shared data is potentially reachable from a plurality of program threads of the target program. An exemplary method of identifying such data is referred to as a thread escape analysis. Garbage collection of such heaps may be performed independently or with minimal synchronization. Remembered sets may also be used to increase the independence of collection of individual heaps and to decrease garbage collection latency.
    Type: Grant
    Filed: January 16, 2001
    Date of Patent: September 19, 2006
    Assignee: Microsoft Corporation
    Inventor: Bjarne Steensgaard