Patents by Inventor Ross C. Knippel

Ross C. Knippel 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: 6842838
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future-demand values for memory blocks of those sizes. It then splits larger blocks into smaller ones preemptively, i.e., before a request for the result of the splitting.
    Type: Grant
    Filed: March 21, 2002
    Date of Patent: January 11, 2005
    Assignee: Sun Microsystems, Inc.
    Inventors: Steven K. Heller, David L. Detlefs, Ross C. Knippel
  • Patent number: 6839822
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of different sizes are allocated, and it projects from those frequencies future demand for different-sized memory blocks. When it needs to coalesce multiple smaller blocks to fulfil an actual or expected request for a larger block, it bases its selection of which constituent blocks to coalesce on whether enough free blocks of a constituent block's size exist to meet the projected demand for them.
    Type: Grant
    Filed: October 29, 2001
    Date of Patent: January 4, 2005
    Assignee: Sun Microsystems, Inc.
    Inventors: Ross C. Knippel, Steven K. Heller, David L. Detlefs
  • Patent number: 6829686
    Abstract: A method for providing a remembered set involves maintaining the remembered set as a bag, identifying when an event occurs, and transforming the remembered set into a set when the event occurs. The step of transforming includes obtaining a plurality of thread local store buffers and flushing the thread local store buffers to a global store buffer.
    Type: Grant
    Filed: February 8, 2001
    Date of Patent: December 7, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Bernd J. W. Mathiske, Ross C. Knippel
  • Patent number: 6801990
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future demand for memory blocks of those sizes. To split a relatively large block in order to meet an actual or expected request for a smaller block, it bases its selection of the larger block to be split on whether the supply of free blocks of the larger block's size is great enough to meet the expected demand for such blocks.
    Type: Grant
    Filed: October 29, 2001
    Date of Patent: October 5, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Ross C. Knippel, Steven K. Heller, David L. Detlefs
  • Publication number: 20030084265
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future-demand values for memory blocks of those sizes. It then splits larger blocks into smaller ones preemptively, i.e., before a request for the result of the splitting.
    Type: Application
    Filed: March 21, 2002
    Publication date: May 1, 2003
    Inventors: Steven K. Heller, David L. Detlefs, Ross C. Knippel
  • Publication number: 20030084264
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future-demand values for memory blocks of those sizes. It then splits larger blocks into smaller ones preemptively, i.e., before a request for the result of the splitting.
    Type: Application
    Filed: October 29, 2001
    Publication date: May 1, 2003
    Inventors: Steven K. Heller, David L. Detlefs, Ross C. Knippel
  • Publication number: 20030084266
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future demand for memory blocks of those sizes. To split a relatively large block in order to meet an actual or expected request for a smaller block, it bases its selection of the larger block to be split on whether the supply of free blocks of the larger block's size is great enough to meet the expected demand for such blocks.
    Type: Application
    Filed: October 29, 2001
    Publication date: May 1, 2003
    Inventors: Ross C. Knippel, Steven K. Heller, David L. Detlefs
  • Publication number: 20030084263
    Abstract: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of different sizes are allocated, and it projects from those frequencies future demand for different-sized memory blocks. When it needs to coalesce multiple smaller blocks to fulfil an actual or expected request for a larger block, it bases its selection of which constituent blocks to coalesce on whether enough free blocks of a constituent block's size exist to meet the projected demand for them.
    Type: Application
    Filed: October 29, 2001
    Publication date: May 1, 2003
    Inventors: Ross C. Knippel, Steven K. Heller, David L. Detlefs
  • Publication number: 20020107667
    Abstract: The present invention provides a method and apparatus for bag-to-set, buffering remembered set. In accordance with the present invention, a remembered set is initially maintained as a bag. Then, at evenly spaced intervals over the execution of the computer program (or at other intervals), the bag is transformed into a set. By transforming the bag to a set at various intervals in the program's execution, the user observable pause associated with write barrier code becomes minimal or non-existent. In addition, when a process uses the remembered set, a garbage collector or persistent checkpoint, for instance, the remembered set can be scanned more efficiently. In one embodiment, the addresses of all updated objects are pushed to a thread local store buffer, which may be in the form of a stack data structure. When the thread local stack overflows, the local stack is flushed to a global store buffer. The threads comprise concurrent paths of execution within a single computer program.
    Type: Application
    Filed: February 8, 2001
    Publication date: August 8, 2002
    Inventors: Bernd J.W. Mathiske, Ross C. Knippel
  • Patent number: 6173442
    Abstract: An object structure's header (40) allocates a two-bit synchronization-state field (42) solely to monitor data for implementing synchronization on that object. When the object is locked by a particular execution thread, or when one or more execution threads are waiting for a lock or notification on that object, its header contains a pointer to monitor resources in the form of a linked list of lock records (50, 52, 54) associated with the threads involved. The synchronization-state field (42) ordinarily contains an indication of whether such a linked list exists and, if so, whether its first member is associated with a thread that has a lock on the object. When a thread attempts to gain access to that linked list, it employs an atomic swap operation to place a special busy value in that lock-state field (42) and write its execution-environment pointer into the object's header (40).
    Type: Grant
    Filed: February 5, 1999
    Date of Patent: January 9, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Ole Agesen, David L. Detlefs, Alex Garthwaite, Ross C. Knippel, Y. Srinivas Ramakrishna, Derek White
  • Patent number: 6049810
    Abstract: Apparatus, methods, systems and computer program products are disclosed describing a data structure and associated processes that optimize garbage collection. The invention sections a card vector associated with a card marked heap into portions. Each portion can be individually write protected. A section vector contains section data structures that are used to control their respective portions. When a write-barrier executes and attempts to mark a card marker in a read-only portion of the card vector, the invention traps the mark operation, sets the portion to read-write, changes the status of the section data structure and completes the mark operation. When a garbage collection phase scans the heap during the garbage collection process, it skips over portions of the card vector associated with sections having a read-only status--thus, improving the garbage collection process.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: April 11, 2000
    Assignee: Sun Microsystems, Inc.
    Inventors: David C. Schwartz, Ross C. Knippel
  • Patent number: 6038572
    Abstract: Apparatus, methods, systems and computer program products are disclosed describing processes that optimize generational garbage collection techniques in a card-marked heap. The invention localizes nodes in an older generation that have a pointer to a newer generation. This node localization increases the density of such nodes in the cards marked as having these nodes and thus reduces the number of marked cards that need to be examined for nodes having pointers to the newer generation.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: March 14, 2000
    Assignee: Sun Microsystems, Inc.
    Inventors: David C. Schwartz, Ross C. Knippel
  • Patent number: 5903900
    Abstract: Apparatus, methods, systems and computer program products are disclosed that optimize a programmed loop that stores pointer variables in an array in a card-marked heap. These methods also optimize garbage collection operations on these pointer variables. Instead of implementing a write-barrier in the body of a programmed loop, the loop is parameterized. This parameterization is associated with the pointer array stored in the heap. This parameterization specifies the first and last modified elements in the array. It further specifies the stride (which indicates how many elements are skipped to reach the next modified element of the array). The parameterization is modified by successive loops that access the array. During a garbage collection operation, the array's parameterization is used to optimize the process of locating modified elements in the array.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: May 11, 1999
    Assignee: Sun Microsystems, Inc.
    Inventors: Ross C. Knippel, Boris Beylin