Patents by Inventor Trishul A. Chilimbi

Trishul A. Chilimbi 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: 8046752
    Abstract: A method and system for creating and injecting code into a running program that identifies a hot data stream, and prefetching data elements in the stream so they are available when needed by the processor. The injected code identifies the first few elements in a hot data stream (i.e. the prefix), and prefetches the balance of the elements in the stream (i.e., the suffix). Since the hot data stream identification code and prefetch code is injected at run time, pointer related time-dependencies inherent in earlier prefetch systems are eliminated. A global deterministic finite state machine (DFSM) is used to help create conceptual logic used to generate the code injected into the program for prefix detection.
    Type: Grant
    Filed: November 15, 2005
    Date of Patent: October 25, 2011
    Assignee: Microsoft Corporation
    Inventors: Trishul Chilimbi, Martin Hirzel
  • Patent number: 8020141
    Abstract: Described herein is an implementation of a technology for the construction, identity, and/or optimization of operating-system processes. At least one implementation, described herein, constructs an operating-system process having the contents as defined by a process manifest. Once constructed, the operating-system process is unalterable.
    Type: Grant
    Filed: December 6, 2004
    Date of Patent: September 13, 2011
    Assignee: Microsoft Corporation
    Inventors: Galen C. Hunt, James R. Larus, John D. DeTreville, Edward P. Wobber, Martin Abadi, Michael B. Jones, Trishul Chilimbi
  • Patent number: 7962901
    Abstract: Model checking has been used to verify program behavior. However, exploration of the model is often impractical for many general purpose programs due to the complexity of an exploding state space. Instead, a program is instrumented with code that records pointer dereference information. The instrumented program is executed thereby recording pointer dereference frequency information. Then, a model of the program is explored using the pointer dereference frequency information to direct state space exploration of the model.
    Type: Grant
    Filed: April 17, 2006
    Date of Patent: June 14, 2011
    Assignee: Microsoft Corporation
    Inventors: Stephen McCamant, Trishul Chilimbi
  • Patent number: 7926043
    Abstract: The described technology provides data structure path profiling. An instrumented version of a program is created that calls a profiler runtime when pointer based data structures are allocated or accessed via pointers. A model of the heap is created and nodes in the model data structures are assigned unique identifiers. Paths traversed through the model data structures are assigned unique identifiers. The paths are counted in order to identify paths through the data structure model that are traversed frequently. The model is useful for providing information about high frequency data paths to the program developer and for various optimization purposes, such as prefetching and or increasing data locality during garbage collection.
    Type: Grant
    Filed: June 20, 2006
    Date of Patent: April 12, 2011
    Assignee: Microsoft Corporation
    Inventors: Kapil Vaswani, Trishul Chilimbi
  • Patent number: 7912877
    Abstract: A program analysis tool leverages the garbage collection process to dynamically infer invariants of objects or data structures created by a program on the heap during execution. During execution of the program in a garbage-collected execution environment, the program analysis tool tracks object allocations made by the program, and records some meta data relating to invariants tracked for the type of the object, which are initially assumed satisfied by the object. Whenever a garbage collection pass visits the object, the tool checks whether the object still satisfies the invariants, and updates the meta data accordingly. The tool finally reports the invariants reflected by the meta data upon the object's death or at termination of the program. The invariants can then be used to annotate the program source code and/or detect bugs that violate the invariants.
    Type: Grant
    Filed: May 20, 2005
    Date of Patent: March 22, 2011
    Assignee: Microsoft Corporation
    Inventors: Ajeet Shankar, Trishul Chilimbi
  • Publication number: 20100318852
    Abstract: A system and method for identifying a root cause of a wait in a computer system are provided. Given the identity of a thread of interest and time window, a longest wait period for the thread of interest within the time window is identified. The longest wait period is used as a starting node to generate a ready tree by walking backwards through the data in a system trace to construct a tree of readying events that ready threads for running on a processor. A potentially anomalous chain of events is automatically identified and highlighted in the ready tree. A visualization of the ready tree is presented to a user so that the user can explore the events in the tree and annotate the automatically generated tree to aid in problem diagnosis.
    Type: Application
    Filed: June 16, 2009
    Publication date: December 16, 2010
    Applicant: Microsoft Corporation
    Inventors: Alice X. Zheng, Trishul A. Chilimbi, Shuo-Hsien Hsiao, Danyel A. Fisher, David M. Andrzejewski
  • Publication number: 20100299662
    Abstract: The described implementations relate to resource aware programming. In one case a program is obtained that is configured to perform a task in accordance with one or more quantitative metrics. An approximate version can be generated from the program. The approximate version is configured to perform the task in a manner that satisfies the one or more quantitative metrics while using fewer computer resources than the program.
    Type: Application
    Filed: May 20, 2009
    Publication date: November 25, 2010
    Applicant: Microsoft Corporation
    Inventors: Trishul A. Chilimbi, Woongki Baek
  • Patent number: 7788637
    Abstract: Described herein is an implementation of a technology for the construction, identification, and/or optimization of operating-system processes. At least one implementation, described herein, constructs an operating-system process having the contents as defined by a process manifest. Once constructed, the operating-system process is unalterable.
    Type: Grant
    Filed: April 29, 2005
    Date of Patent: August 31, 2010
    Assignee: Microsoft Corporation
    Inventors: Galen C. Hunt, James R. Larus, John D. DeTreville, Edward P Wobber, Martin Abadi, Michael B. Jones, Trishul A. Chilimbi
  • Patent number: 7770153
    Abstract: A dynamic analysis tool uses anomaly detection to find heap-based bugs. In spite of the evolving nature of the heap, programs generally exhibit several of properties of their heap usage that remain stable. Periodically, during the execution of the program, the analysis tool computes a suite of metrics which are sensitive to the state of the heap. These metrics track heap behavior, and the stability of the heap reflects quantitatively in the values of these metrics. The ranges of stable metrics, obtained by running a program on a multiple input training set, are then treated as indicators of correct behavior, and are used in conjunction with an anomaly detector to find heap-based bugs.
    Type: Grant
    Filed: May 20, 2005
    Date of Patent: August 3, 2010
    Assignee: Microsoft Corporation
    Inventors: Trishul Chilimbi, Vinod Ganapathy
  • Publication number: 20100107142
    Abstract: Described is predicting cache locality in a multicore/multithreaded processing environment including when threads share cache data in a non-uniform interleaving manner. Thread execution traces are analyzed to compute a set of per-thread parameters that can then be used to predict cache miss rates for other cache sizes. In one aspect, a model is based upon a probability that the cache reuse distance will increase because of accesses by other threads, and another probability that the reuse distance will decrease because of intercept accesses by other threads to shared data blocks. Estimates of the number of shared data blocks, possibly shared data blocks and private data blocks are used in the computations.
    Type: Application
    Filed: October 24, 2008
    Publication date: April 29, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Trishul A. Chilimbi, Chen Ding
  • Publication number: 20100088684
    Abstract: Bounding resource consumption of code that processes recursive data structures and collections includes making use of quantitative functions (based on user input) that are associated with a tuple of data-structures and whose semantics is specified by describing the effect of various data-structure methods on the relevant quantitative functions. Counter variables are incorporated into source code to count loop iterations (and number of recursive procedure call invocations). Relevant quantitative functions are incorporated into the source code to allow computation of invariants (and hence bounds) on the incorporated counter variables in terms of the quantitative functions.
    Type: Application
    Filed: October 7, 2008
    Publication date: April 8, 2010
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Krishna Kumar Mehra, Trishul A. Chilimbi
  • Publication number: 20100088546
    Abstract: The method executes the application and if there are no errors from the execution of the application, the method ends. If errors exist, the errors are collected from the execution of the application in an error report. Labeled application paths are created by adding a unique label to individual application paths where the application paths are individual loops and individual functions in the application. An analysis is created of the labeled application paths by executing the application with the labeled paths, reviewing the error report for data related to the labels and if an error is sufficiently related to application paths with labels, storing the path that created the errors in a report. If an error is not sufficient related to the application path with labels, the method is repeated by the creating the analysis again by substituting additional application paths for the application paths.
    Type: Application
    Filed: October 3, 2008
    Publication date: April 8, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Trishul Chilimbi, Krishna Kumar Mehra, Benjamin Robert Liblit, Aditya V. Nori, Kapil Vaswani
  • Patent number: 7694300
    Abstract: Described herein is an implementation of a technology for the construction, identification, and/or optimization of operating-system processes. At least one implementation, described herein, constructs an operating-system process having the contents as defined by a process manifest. Once constructed, the operating-system process is unalterable.
    Type: Grant
    Filed: April 29, 2005
    Date of Patent: April 6, 2010
    Assignee: Microsoft Corporation
    Inventors: Galen C. Hunt, James R. Larus, John D. DeTreville, Michael B. Jones, Trishul A. Chilimbi
  • Publication number: 20090276763
    Abstract: Bounding resource consumption of code using abstract interpretation includes a static analysis to estimate a code's resource consumption in terms of units of resources utilized at any point during execution, expressed as a function of its scalar inputs. An instrumentation mechanism and an abstract interpretation mechanism are employed to compute bounds on the code resource consumption. The instrumentation mechanism includes incorporating one or more counter variables in the source code to count the number of loop iterations and recursive procedure call invocations. The abstract interpretation mechanism includes computing invariants on the instrumented counter variables and scalar program variables to obtain bounds on the number of loop iterations and recursive procedure call invocations, which are then composed together to obtain resource bounds for the entire program.
    Type: Application
    Filed: May 5, 2008
    Publication date: November 5, 2009
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Krishna Kumar Mehra, Trishul A. Chilimbi
  • Patent number: 7607119
    Abstract: A run time software test tool instruments a program to perform a low overhead profiling of the program's execution, which records the execution time of frequent acyclic control flow paths using hardware performance counters. An analysis of the profiling data is performed to identify those program paths that have significant variation in execution time across different dynamic traversals in the same program run. This variation (measured as the difference between the fastest execution of that path and slower executions) represents the potential speedup that potentially could be achieved if the paths were optimized (such as by the addition of simple pre-fetch optimizations) to do away with these variations. The variational paths are identified to the programmer to guide optimization.
    Type: Grant
    Filed: April 26, 2005
    Date of Patent: October 20, 2009
    Assignee: Microsoft Corporation
    Inventors: Trishul Chilimbi, Erez Perelman
  • Patent number: 7587709
    Abstract: Techniques described herein provide low-overhead adaptive instrumentation runtime monitoring and analysis of software. A method of instrumenting a program to provide instrumentation data creates instrumentation versions comprising duplicate versions of original procedures in the program with instrumentation code for capturing instrumentation data, and adaptively decreases the sampling rate of the instrumented version of a procedure as the frequency of execution of the procedure increases. Additionally, the instrumentation methods can be used to build runtime tools that monitor the correctness of a program with very little overhead.
    Type: Grant
    Filed: October 24, 2003
    Date of Patent: September 8, 2009
    Assignee: Microsoft Corporation
    Inventors: Trishul Chilimbi, Matthias Hauswirth
  • Patent number: 7577943
    Abstract: A method of detecting memory leaks. The method of detecting memory leaks comprises, adaptively bursty tracing a program execution to track accesses to heap objects with low overhead and using this information identify stale heap objects, which are reported as leaks.
    Type: Grant
    Filed: July 15, 2004
    Date of Patent: August 18, 2009
    Assignee: Microsoft Corporation
    Inventors: Trishul A Chilimbi, Matthias M Hauswirth
  • Patent number: 7343598
    Abstract: Techniques and tools for coallocating objects and/or object fields for the sake of cache performance are described. For example, a tool improves cache performance by coallocating contemporaneously accessed heap objects. The tool analyzes object accesses to identify hot data streams in a profile run of a program. The tool directs allocations for objects in a given hot data steam to the same sequentially allocated arena, separating intervening allocations coming from other allocation sites. The tool enforces the solution by redirecting heap allocations to a run-time coallocation library. The tool and analysis extend to coallocation at object field granularity. The resulting field coallocation solution generalizes common data restructuring techniques and provides insight into object restructuring by breaking down the coallocation benefit on a per-technique basis.
    Type: Grant
    Filed: December 15, 2003
    Date of Patent: March 11, 2008
    Assignee: Microsoft Corporation
    Inventors: Trishul Chilimbi, Ran Shaham
  • Publication number: 20080005208
    Abstract: The described technology provides data structure path profiling. An instrumented version of a program is created that calls a profiler runtime when pointer based data structures are allocated or accessed via pointers. A model of the heap is created and nodes in the model data structures are assigned unique identifiers. Paths traversed through the model data structures are assigned unique identifiers. The paths are counted in order to identify paths through the data structure model that are traversed frequently. The model is useful for providing information about high frequency data paths to the program developer and for various optimization purposes, such as prefetching and or increasing data locality during garbage collection.
    Type: Application
    Filed: June 20, 2006
    Publication date: January 3, 2008
    Applicant: Microsoft Corporation
    Inventors: Kapil Vaswani, Trishul Chilimbi
  • Publication number: 20070244942
    Abstract: Model checking has been used to verify program behavior. However, exploration of the model is often impractical for many general purpose programs due to the complexity of an exploding state space. Instead, a program is instrumented with code that records pointer dereference information. The instrumented program is executed thereby recording pointer dereference frequency information. Then, a model of the program is explored using the pointer dereference frequency information to direct state space exploration of the model.
    Type: Application
    Filed: April 17, 2006
    Publication date: October 18, 2007
    Inventors: Stephen McCamant, Trishul Chilimbi