Patents by Inventor Gregory M. Wright
Gregory M. Wright 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: 9176760Abstract: The various aspects provide a dynamic compilation framework that includes a machine-independent optimization module operating on a computing device and methods for optimizing code with the machine-independent optimization module using a single, combined-forwards-backwards pass of the code. In the various aspects, the machine-independent optimization module may generate a graph of nodes from the IR, optimize nodes in the graph using forwards and backwards optimizations, and propagating the forwards and backwards optimizations to nodes in a bounded subgraph recognized or defined based on the position of the node currently being optimized. In the various aspects, the machine-independent optimization module may optimize the graph by performing forwards and/or backwards optimizations during a single pass through the graph, thereby achieving an effective degree of optimization and shorter overall compile times.Type: GrantFiled: September 24, 2013Date of Patent: November 3, 2015Assignee: QUALCOMM IncorporatedInventors: Ashok Halambi, Gregory M. Wright, Christopher A. Vick
-
Patent number: 9098309Abstract: In the various aspects, a virtual machine operating at the machine layer may use power consumption models to partition object code into portions, identify the relative power efficiencies of the mobile device processors for the various code portions, and route the code portions to the mobile device processors that can perform the operations using the least amount of energy. A dynamic binary translator process may translate the object code portions into an instruction set language supported by the hardware component identified as being preferred. The code portions may be executed and the amount of power consumed may be measured, with the measurements used to generate and/or update performance and power consumption models.Type: GrantFiled: November 23, 2011Date of Patent: August 4, 2015Assignee: QUALCOMM IncorporatedInventors: Christopher A. Vick, Gregory M. Wright
-
Publication number: 20150089484Abstract: The various aspects provide a dynamic compilation framework that includes a machine-independent optimization module operating on a computing device and methods for optimizing code with the machine-independent optimization module using a single, combined-forwards-backwards pass of the code. In the various aspects, the machine-independent optimization module may generate a graph of nodes from the IR, optimize nodes in the graph using forwards and backwards optimizations, and propagating the forwards and backwards optimizations to nodes in a bounded subgraph recognized or defined based on the position of the node currently being optimized. In the various aspects, the machine-independent optimization module may optimize the graph by performing forwards and/or backwards optimizations during a single pass through the graph, thereby achieving an effective degree of optimization and shorter overall compile times.Type: ApplicationFiled: September 24, 2013Publication date: March 26, 2015Applicant: Qualcomm IncorporatedInventors: Ashok HALAMBI, Gregory M. Wright, Christopher A. Vick
-
Patent number: 8959277Abstract: One embodiment of the present invention provides a system that facilitates precise exception semantics for a virtual machine. During operation, the system executes a program in the virtual machine using a processor that includes a gated store buffer that stores values to be written to a memory. This gated store buffer is configured to delay a store to the memory until after a speculatively-optimized region of the program commits. The processor signals an exception when it detects that a load following the store is attempting to access the same memory region being written by the store prior to the commitment of the speculatively-optimized region.Type: GrantFiled: December 12, 2008Date of Patent: February 17, 2015Assignee: Oracle America, Inc.Inventors: Christopher A. Vick, Gregory M. Wright, Mark S. Moir
-
Patent number: 8893104Abstract: The aspects enable a computing device to allocate memory space to variables during runtime compilation of a software application. A compiler may be modified to identify operations that can be performed on either a main pipe or an alternative pipe, identify chains of related operations that can be performed on either the main pipe or the alternative pipe, identify points in the execution of code at which the number of live values will exceed the number of registers, and choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of live values at identified points in the execution of code. The entire chosen chain of operations may be moved to the alternative pipe. The alternative pipe may perform the computations and return the results to the main pipe for execution.Type: GrantFiled: March 1, 2012Date of Patent: November 18, 2014Assignee: QUALCOMM IncorporatedInventors: Christopher A. Vick, Gregory M. Wright
-
Patent number: 8799693Abstract: In the various aspects, virtualization techniques may be used to reduce the amount of power consumed by execution of applications by power-optimizing the code prior to execution. A dynamic binary translator operating at the machine layer may use a power consumption model to identify code segments that can benefit from optimization and to perform an instruction-sequence to instruction-sequence translation of object code to generate power-optimized object code. Execution hardware may be instrumented with additional circuitry to measure the power consumption characteristics of executing code. The power consumption models may be updated and object code may be regenerated based on the measured the power consumption characteristics of previously executed code. In an aspect, power optimization may be accomplished when the computing device is connected to a battery charger.Type: GrantFiled: November 23, 2011Date of Patent: August 5, 2014Assignee: QUALCOMM IncorporatedInventors: Christopher A. Vick, Gregory M. Wright
-
Patent number: 8799879Abstract: One embodiment provides a system that protects translated guest program code in a virtual machine that supports self-modifying program code. While executing a guest program in the virtual machine, the system uses a guest shadow page table associated with the guest program and the virtual machine to map a virtual memory page for the guest program to a physical memory page on the host computing device. The system then uses a dynamic compiler to translate guest program code in the virtual memory page into translated guest program code (e.g., native program instructions for the computing device). During compilation, the dynamic compiler stores in a compiler shadow page table and the guest shadow page table information that tracks whether the guest program code in the virtual memory page has been translated. The compiler subsequently uses the information stored in the guest shadow page table to detect attempts to modify the contents of the virtual memory page.Type: GrantFiled: June 30, 2009Date of Patent: August 5, 2014Assignee: Oracle America, Inc.Inventors: Gregory M. Wright, Christopher A. Vick, Peter B. Kessler
-
Patent number: 8732442Abstract: A method for managing data, including obtaining a first instruction for moving a first data item from a first source to a first destination, determining a data type of the first data item, determining a data type supported by the first destination, comparing the data type of the first data item with the data type supported by the first destination to test a validity of the first instruction, and moving the first data item from the first source to the first destination based on the validity of the first instruction.Type: GrantFiled: June 25, 2008Date of Patent: May 20, 2014Assignee: Oracle America, Inc.Inventors: Mario I. Wolczko, Gregory M. Wright, Matthew L. Seidl
-
Patent number: 8726248Abstract: One embodiment of the present invention provides a system that improves program performance by enregistering memory locations. During operation, the system receives program object code which has been generated to use a specified number of registers that are available for a given target hardware implementation. Next, the system translates this object code to execute on a second hardware implementation which includes more registers than the first hardware implementation. The system uses these additional registers to improve the performance of the translated object code for the second hardware implementation. More specifically, the system identifies a memory access in the object code, and then rewrites an instruction associated with this memory access to access an available register instead of the original target memory location. To preserve program semantics, the system subsequently moderates accesses to the memory location to ensure that no threads access a stale value in the enregistered memory location.Type: GrantFiled: June 12, 2008Date of Patent: May 13, 2014Assignee: Oracle America, Inc.Inventors: Christopher A. Vick, Gregory M. Wright
-
Publication number: 20130198495Abstract: The aspects enable a computing device to allocate memory space to variables during runtime compilation of a software application. A compiler may be modified to identify operations that can be performed on either a main pipe or an alternative pipe, identify chains of related operations that can be performed on either the main pipe or the alternative pipe, identify points in the execution of code at which the number of live values will exceed the number of registers, and choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of live values at identified points in the execution of code. The entire chosen chain of operations may be moved to the alternative pipe. The alternative pipe may perform the computations and return the results to the main pipe for execution.Type: ApplicationFiled: March 1, 2012Publication date: August 1, 2013Applicant: QUALCOMM INCORPORATEDInventors: Christopher A. Vick, Gregory M. Wright
-
Patent number: 8453128Abstract: A method for implementing a just-in-time compiler involves obtaining high-level code templates in a high-level programming language, where the high-level programming language is designed for compilation to an intermediate language capable of execution by a virtual machine, and where each high-level code template represents an instruction in the intermediate language. The method further involves compiling the high-level code templates to native code to obtain optimized native code templates, where compiling the high-level code templates is performed, prior to runtime, using an optimizing static compiler designed for runtime use with the virtual machine. The method further involves implementing the just-in-time compiler using the optimized native code templates, where the just-in-time compiler is configured to substitute an optimized native code template when a corresponding instruction in the intermediate language is encountered at runtime.Type: GrantFiled: September 28, 2007Date of Patent: May 28, 2013Assignee: Oracle America, Inc.Inventors: Laurent Daynes, Bernd J. Mathiske, Gregory M. Wright, Mario I. Wolczko
-
Publication number: 20130080805Abstract: In the various aspects, a virtual machine operating at the machine layer may use power consumption models to partition object code into portions, identify the relative power efficiencies of the mobile device processors for the various code portions, and route the code portions to the mobile device processors that can perform the operations using the least amount of energy. A dynamic binary translator process may translate the object code portions into an instruction set language supported by the hardware component identified as being preferred. The code portions may be executed and the amount of power consumed may be measured, with the measurements used to generate and/or update performance and power consumption models.Type: ApplicationFiled: November 23, 2011Publication date: March 28, 2013Applicant: QUALCOMM INCORPORATEDInventors: Christopher A. Vick, Gregory M. Wright
-
Publication number: 20130073883Abstract: In the various aspects, virtualization techniques may be used to reduce the amount of power consumed by execution of applications by power-optimizing the code prior to execution. A dynamic binary translator operating at the machine layer may use a power consumption model to identify code segments that can benefit from optimization and to perform an instruction-sequence to instruction-sequence translation of object code to generate power-optimized object code. Execution hardware may be instrumented with additional circuitry to measure the power consumption characteristics of executing code. The power consumption models may be updated and object code may be regenerated based on the measured the power consumption characteristics of previously executed code. In an aspect, power optimization may be accomplished when the computing device is connected to a battery charger.Type: ApplicationFiled: November 23, 2011Publication date: March 21, 2013Applicant: QUALCOMM INCORPORATEDInventors: Christopher A. Vick, Gregory M. Wright
-
Patent number: 8397219Abstract: Described is a system that tracks enregistered memory locations. The system receives program object code that enregisters a memory location (e.g., a set of data at a given memory address) and executes the program code using a thread. Enregistering memory locations involves using additional registers to cache frequently used memory locations while the object code is executing, these additional registers being available on an architecture on which the program executes, but generally not available on an architecture for which the object code was generated. After enregistering the memory location, the system uses a table that identifies enregistered memory locations to track the associated memory address and a thread identifier for the thread. The system checks this table during memory accesses to ensure that other threads attempting to access an enregistered memory location receive a current value for the enregistered memory location.Type: GrantFiled: March 31, 2009Date of Patent: March 12, 2013Assignee: Oracle America, Inc.Inventors: Christopher A. Vick, Gregory M. Wright
-
Patent number: 8375195Abstract: One embodiment of the present invention provides a system that accesses memory locations in an object-addressed memory system. During a memory access in the object-addressed memory system, the system receives an object identifier and an address. The system then uses the object identifier to identify a paged memory object associated with the memory access. Next, the system uses the address and a page table associated with the paged memory object to identify a memory page associated with the memory access. After determining the memory page, the system uses the address to access a memory location in the memory page.Type: GrantFiled: March 5, 2009Date of Patent: February 12, 2013Assignee: Oracle America, Inc.Inventors: Gregory M. Wright, Christopher A. Vick, Mario I. Wolczko
-
Patent number: 8307353Abstract: A system and method are provided for inlining across protection domain boundaries with a system virtual machine. A protection domain comprises a unique combination of a privilege level and a memory address space. The system virtual machine interprets or dynamically compiles not only application code executing under guest operating systems, but also the guest operating systems. For a program call that crosses a protection domain boundary, the virtual machine assembles an intermediate representation (IR) graph that spans the boundary. Region nodes corresponding to code on both sides of the call are enhanced with information identifying the applicable protection domains. The IR is optimized and used to generate instructions in a native ISA (Instruction Set Architecture) of the virtual machine. Individual instructions reveal the protection domain in which they are to operate, and instructions corresponding to different domains may be interleaved.Type: GrantFiled: August 12, 2008Date of Patent: November 6, 2012Assignee: Oracle America, Inc.Inventors: Gregory M. Wright, Christopher A. Vick, Mario I. Wolczko
-
Patent number: 8281296Abstract: A system and method are provided for inlining a program call between processes executing under separate ISAs (Instruction Set Architectures) within a system virtual machine. The system virtual machine hosts any number of virtual operating system instances, each of which may execute any number of applications. The system virtual machine interprets or dynamically compiles not only application code executing under virtual operating systems, but also the virtual operating systems. For a program call that crosses ISA boundaries, the virtual machine assembles an intermediate representation (IR) graph that spans the boundary. Region nodes corresponding to code on both sides of the call are enhanced with information identifying the virtual ISA of the code. The IR is optimized and used to generate instructions in a native ISA (Instruction Set Architecture) of the virtual machine. Individual instructions are configured and executed (or emulated) to perform as they would within the virtual ISA.Type: GrantFiled: August 12, 2008Date of Patent: October 2, 2012Assignee: Oracle America, Inc.Inventors: Christopher A. Vick, Gregory M. Wright, Mario I. Wolczko
-
Patent number: 8185692Abstract: One embodiment provides a system that includes a processor with a unified cache structure that facilitates accessing translation table entries (TTEs). This unified cache structure can simultaneously store program instructions, program data, and TTEs. During a memory access, the system receives a virtual memory address. The system then uses this virtual memory address to identify one or more cache lines in the unified cache structure which are associated with the virtual memory address. Next, the system compares a tag portion of the virtual memory address with the tags for the identified cache line(s) to identify a cache line that matches the virtual memory address. The system then loads a translation table entry that corresponds to the virtual memory address from the identified cache line.Type: GrantFiled: February 9, 2009Date of Patent: May 22, 2012Assignee: Oracle America, Inc.Inventors: Paul Caprioli, Gregory M. Wright
-
Patent number: 8078854Abstract: One embodiment of the present invention provides a system that facilitates precise exception semantics. The system includes a processor that uses register rename maps to support out-of-order execution, where the register rename maps track mappings between native architectural registers and physical registers for a program executing on the processor. These register rename maps include: 1) a working rename map that maps architectural registers associated with a decoded instruction to corresponding physical registers; 2) a retire rename map that tracks and preserves a set of physical registers that are associated with retired instructions; and 3) a checkpoint rename map that stores a mapping between a set of architectural registers and a set of physical registers for a preceding checkpoint in the program. When the program signals an exception, the processor uses the checkpoint rename map to roll back program execution to the preceding checkpoint.Type: GrantFiled: December 12, 2008Date of Patent: December 13, 2011Assignee: Oracle America, Inc.Inventors: Christopher A. Vick, Gregory M. Wright
-
Patent number: 8065349Abstract: The present invention provides a system that facilitates performing concurrent garbage collection. During operation, the system executes a first mutator thread. While executing the first mutator thread, the system performs a garbage-collection operation using a garbage-collector thread. Performing the garbage-collection operation involves: discovering a live object in a from-space, which is being collected; creating a copy of the live object to a to-space, where live objects are copied to during garbage collection; and replacing the live object in the from-space with a forwarding pointer which points to a location of the copy of the live object in the to-space.Type: GrantFiled: June 30, 2008Date of Patent: November 22, 2011Assignee: Oracle America, Inc.Inventors: Gregory M. Wright, Mario I. Wolczko