Patents by Inventor William B. Buzbee

William B. Buzbee 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: 8359496
    Abstract: The present disclosure relates to techniques for potentially increasing the reliability and/or stability of systems having virtual machines that support multiple modes of execution. For example, as described herein, a virtual machine partitions a plurality of program instructions into a plurality of traces for execution by a virtual machine operating on a computing device, wherein the virtual machine has first and second modes of execution, and wherein each of the plurality of traces comprises one or more of the plurality of program instructions. The virtual machine applies the second mode of execution to a first trace in the plurality of traces and determines an error condition that is caused by the application of the second mode of execution to the first trace. After determining the error condition, the virtual machine applies the first mode of execution to the first trace to recover the virtual machine from the error condition.
    Type: Grant
    Filed: August 31, 2010
    Date of Patent: January 22, 2013
    Assignee: Google Inc.
    Inventors: Daniel R. Bornstein, Ben C. Cheng, William B. Buzbee
  • Patent number: 8201026
    Abstract: The present disclosure relates to techniques for potentially increasing the reliability and/or stability of systems having virtual machines that support multiple modes of execution. For example, as described herein, a virtual machine partitions a plurality of program instructions into a plurality of traces for execution by a virtual machine operating on a computing device, wherein the virtual machine has first and second modes of execution, and wherein each of the plurality of traces comprises one or more of the plurality of program instructions. The virtual machine applies the second mode of execution to a first trace in the plurality of traces and determines an error condition that is caused by the application of the second mode of execution to the first trace. After determining the error condition, the virtual machine applies the first mode of execution to the first trace to recover the virtual machine from the error condition.
    Type: Grant
    Filed: September 30, 2011
    Date of Patent: June 12, 2012
    Assignee: Google Inc.
    Inventors: Daniel R. Bornstein, Ben C. Cheng, William B. Buzbee
  • Patent number: 7995221
    Abstract: A method of printing a document having a plurality of pages in an original sequence includes determining an second sequence to print each of the pages, wherein the second equence is different than the original sequence; loading each of the pages onto cyclic multi-page transport apparatus according to the optimal sequence; and unloading the pages from the transport apparatus according to the original sequence.
    Type: Grant
    Filed: February 22, 2007
    Date of Patent: August 9, 2011
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Steven Miller, David E. De Bellis, Daniel L. Stuart, William B. Buzbee
  • Publication number: 20080204808
    Abstract: A method of printing a document having a plurality of pages in an original sequence includes determining an second sequence to print each of the pages, wherein the second equence is different than the original sequence; loading each of the pages onto cyclic multi-page transport apparatus according to the optimal sequence; and unloading the pages from the transport apparatus according to the original sequence.
    Type: Application
    Filed: February 22, 2007
    Publication date: August 28, 2008
    Inventors: Steven Miller, David E. De Bellis, Daniel L. Stuart, William B. Buzbee
  • Patent number: 7386861
    Abstract: A blocking system intercepts communications between a software program and an operating system in order to handle blocking and unblocking of event signals. The blocking system intercepts system calls to the operating system requesting the blocking and unblocking of event signals and keeps track of which event signals are blocked and unblocked without delivering the system calls to the operating system. The blocking system also intercepts event signals from the operating system and only allows unblocked event signals to pass to the software program. Blocked event signals received by the blocking system are discarded until the program unblocks the blocked event signals. After unblocking an event signal, the blocking system determines whether a corresponding event signal was previously received and blocked. If so, the blocking system transmits a signal indicating that the event corresponding to the event signal occurred.
    Type: Grant
    Filed: July 23, 2003
    Date of Patent: June 10, 2008
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: William B. Buzbee, James S. Mattson, Lacky V. Shah
  • Patent number: 6658486
    Abstract: A blocking system intercepts communications between a software program and an operating system in order to handle blocking and unblocking of event signals. The blocking system intercepts system calls to the operating system requesting the blocking and unblocking of event signals and keeps track of which event signals are blocked and unblocked without delivering the system calls to the operating system. The blocking system also intercepts event signals from the operating system and only allows unblocked event signals to pass to the software program. Blocked event signals received by the blocking system are discarded until the program unblocks the blocked event signals. After unblocking an event signal, the blocking system determines whether a corresponding event signal was previously received and blocked. If so, the blocking system transmits a signal indicating that the event corresponding to the event signal occurred.
    Type: Grant
    Filed: February 25, 1998
    Date of Patent: December 2, 2003
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: William B. Buzbee, James S. Mattson, Lacky V. Shah
  • Publication number: 20020026534
    Abstract: A blocking system intercepts communications between a software program and an operating system in order to handle blocking and unblocking of event signals. The blocking system intercepts system calls to the operating system requesting the blocking and unblocking of event signals and keeps track of which event signals are blocked and unblocked without delivering the system calls to the operating system. The blocking system also intercepts event signals from the operating system and only allows unblocked event signals to pass to the software program. Blocked event signals received by the blocking system are discarded until the program unblocks the blocked event signals. After unblocking an event signal, the blocking system determines whether a corresponding event signal was previously received and blocked. If so, the blocking system transmits a signal indicating that the event corresponding to the event signal occurred.
    Type: Application
    Filed: February 25, 1998
    Publication date: February 28, 2002
    Inventors: WILLIAM B. BUZBEE, JAMES S. MATTSON, LACKY V. SHAH
  • Patent number: 6330691
    Abstract: Dynamic translation is used during debugging of a computer application process. The computer application process resides in a computing system in which blocks of code within a shared library are utilized by the computer application process. The blocks of code within the shared library are also available to be utilized by other applications in the system. During runtime, the computer application process is dynamically translated to produce translated code. The dynamic translation includes translation of a first block of code within the shared library to produce a translated block of code. The translated block of code is included within the translated code. Debugging code, such as a break instruction, may then be added to the translated code. Alternatively, only blocks of code within the shared library which are called by the computer application process or modified by a debugger are dynamically translated.
    Type: Grant
    Filed: February 23, 1996
    Date of Patent: December 11, 2001
    Assignee: Institute for the Development of Emerging Architectures LLC
    Inventors: William B. Buzbee, Carl D. Burch
  • Patent number: 6327704
    Abstract: A computer-implemented system, method, and product are provided for multi-branch backpatching in a dynamic translator. Such backpatching typically increases the speed of execution of translated instructions by providing a direct control path from translated multi-branch-jump instructions to their translated target instructions. In one embodiment, the multi-branch backpatching dynamic translator undertakes backpatching on an “as-needed” basis at run time. That is, backpatching is done for those branch targets that are executed rather than for all branch targets, or rather than for those branch targets that are estimated or assumed will be executed. Such backpatching is accomplished in one embodiment by generating dynamic backpatching code specific to each translated multi-branch-jump instruction. A multi-branch jump, or switch, table of each multi-branch-jump instruction is initialized so that all entries direct control to the dynamic backpatching code for that instruction.
    Type: Grant
    Filed: August 6, 1998
    Date of Patent: December 4, 2001
    Assignee: Hewlett-Packard Company
    Inventors: James S. Mattson, Jr., Lacky V. Shah, William B. Buzbee, Manuel E. Benitez
  • Patent number: 6314560
    Abstract: A translating software emulator designed for converting code from a legacy system to a target system and fully preserving the synchronous exception state while still allowing for full and aggressive optimization in the translation. A user application is translated to a target system using full optimization techniques. The translation may be done dynamically by an emulator emulating the legacy system on the target system, or the translation may be a static translation or a compilation, fully generating a new executable program operable on the target system. The invention recovers from the exception properly by restoring the target machine state to the machine state expected by the legacy system. This recovery is done by using an exception delivery mechanism to restore the machine state of the target system before executing the exception handling code.
    Type: Grant
    Filed: July 14, 2000
    Date of Patent: November 6, 2001
    Assignee: Hewlett-Packard Company
    Inventors: David A. Dunn, William B. Buzbee
  • Patent number: 6275981
    Abstract: A method and system for relating profile data generated by monitoring the execution of an optimized machine-code computer program back to the source-language description of the computer program. Logical line numbers are associated with the basic blocks of the intermediate-code representation of the computer program and actual line numbers are associated with each instruction of the intermediate-code representation of the computer program. During optimization of the intermediate code, the logical line numbers remain fixed to basic blocks, while actual line numbers remain fixed to intermediate-code instructions. A branch instruction and the target of the branch instruction in the optimized machine-code computer program or in an optimized assembly-language computer program can be related back to source-language statements by using the actual line number associated with the branch instruction and the logical line number associated with the basic block that contains the target of the branch instruction.
    Type: Grant
    Filed: November 12, 1998
    Date of Patent: August 14, 2001
    Assignee: Hewlett-Packard Company
    Inventors: William B Buzbee, Michelle A. Ruscetta, Carol L. Thompson
  • Patent number: 6247172
    Abstract: A translating software emulator designed for converting code from a legacy system to a target system and fully preserving the synchronous exception state while still allowing for full and aggressive optimization in the translation. A user application is translated to a target system using full optimization techniques. The translation may be done dynamically by an emulator emulating the legacy system on the target system, or the translation may be a static translation or a compilation, fully generating a new executable program operable on the target system. The invention recovers from the exception properly by restoring the target machine state to the machine state expected by the legacy system. This recovery is done by using an exception delivery mechanism to restore the machine state of the target system before executing the exception handling code.
    Type: Grant
    Filed: July 2, 1998
    Date of Patent: June 12, 2001
    Assignee: Hewlett-Packard Company
    Inventors: David A. Dunn, William B. Buzbee
  • Patent number: 6223339
    Abstract: The present invention is a system, method, and product for improving the speed of dynamic translation systems by efficiently positioning translated instructions in a computer memory unit. More specifically, the speed of execution of translated instructions, which is a factor of particular relevance to dynamic optimization systems, may be adversely affected by inefficient jumping between traces of translated instructions. The present invention efficiently positions the traces with respect to each other and with respect to “trampoline” instructions that redirect control flow from the traces. For example, trampoline instructions may redirect control flow to an instruction emulator if the target instruction has not been translated, or to the translation of a target instruction that has been translated. When a target instruction has been translated, a backpatcher of the invention may directly backpatch the jump to the target so that the trampoline instructions are no longer needed.
    Type: Grant
    Filed: September 8, 1998
    Date of Patent: April 24, 2001
    Assignee: Hewlett-Packard Company
    Inventors: Lacky V. Shah, James S. Mattson, Jr., William B. Buzbee
  • Patent number: 6219832
    Abstract: A method and system of dynamically translating code that uses code annotations to determine whether the dynamic translator must fully materialize machine state. At compilation time, annotations are placed in an application's executable file indicating the number of formal parameters expected by each of the application's entry points. When the application is dynamically translated, the dynamic translation system (DTS) aggressively translates the application. Therefore, the DTS does not generate instructions for materializing the machine state at potential stopping points. When the application makes a system call that arms an exception handler, the DTS looks to the annotations to determine the number of formal parameters expected by the handler. If an exception handler expects two or fewer parameters, then that handler does not use the machine state. Conversely, if a handler expects three or more parameters, then that handler may use the machine state.
    Type: Grant
    Filed: October 28, 1998
    Date of Patent: April 17, 2001
    Assignee: Hewlett-Packard Company
    Inventor: William B. Buzbee
  • Patent number: 6205545
    Abstract: A run-time optimization strategy uses a trace picker to identify traces of program code in a native code pool, and a translator to translate the traces into a code cache where the traces are executed natively. Static branch prediction hints are encoded in branch instruction in the translated traces. A program module implementing the present invention is initialized with an empty code cache and a pool of instruction in a native code pool. The trace picker analyzes the instructions in the native code pool and identifies traces of instructions that tend to be executed as a group. When a trace is identified, basic blocks lying along the trace path are translated into a code cache, with static branch predictions encoded into the branch instructions of the basic blocks based on branching behavior observed when the trace is identified.
    Type: Grant
    Filed: April 30, 1998
    Date of Patent: March 20, 2001
    Assignee: Hewlett-Packard Company
    Inventors: Lacky V. Shah, James S. Mattson, Jr., William B. Buzbee
  • Patent number: 6199202
    Abstract: The inventive mechanism allows an application to switch modes during its operation, between a compatibility or legacy mode for a previous architecture, and a native mode for a current architecture. The mechanism includes an official function descriptor which describes information for accessing a function which resides in one module. The OFD has a legacy portion is useable by a legacy module and a native portion is useable by a native module. The mechanism also includes a linkage table that resides in a second module which references the function in the first module. The portion of the OFD which corresponds to the mode of the linkage table module is copied into the linkage table. Each portion contains one entry that corresponds to an address location of the function, and another entry that is a value for a register which refers to the data segment corresponding to the load module containing the function. The information in the OFD depends on whether the function is a legacy function or a native function.
    Type: Grant
    Filed: January 6, 1998
    Date of Patent: March 6, 2001
    Assignee: Hewlett-Packard Company
    Inventors: Cary Coutant, William B. Buzbee, Anthony F. Istvan
  • Patent number: 6189141
    Abstract: A computer-implemented system, method, and product are provided to designate and translate traces of original instructions of an executable file at run time based on dynamic evaluation of control flow through frequently executed traces of instructions. Such designation typically reduces unnecessary translations and optimizations, and thereby increases execution speed and reduces the usage of memory and other resources. The invention includes a hot trace identifier to identify frequently executed traces of instructions and a hot trace instrumenter to instrument such frequently executed traces so that control flow through them may be recorded. If the amount or rate of control flow through a frequently executed trace exceeds a threshold value, a hot trace selector is invoked to select a hot trace of original instructions including those of the frequently executed trace. The hot trace may be dynamically optimized.
    Type: Grant
    Filed: May 4, 1998
    Date of Patent: February 13, 2001
    Assignee: Hewlett-Packard Company
    Inventors: Manuel E. Benitez, James S. Mattson, Jr., William B. Buzbee, Lacky V. Shah
  • Patent number: 6164841
    Abstract: A method and apparatus for improving the process of software development by a dynamic software development tool. The present invention efficiently executes in a user process and provides software developers with a high performance tool for software optimization. The present invention may augment the user process code instructions at runtime and, for every series of machine instructions that the original user source code would have executed, a series of instructions may be executed that are semantically equivalent to the user process code instructions and are altered to optimize the user process code instructions. The present invention may use emulation or translation to alter the user process code instructions. The resulting process is executed in the user process space and advantageously maintains the original flow of instruction execution. The present invention employs a technique of dynamically translating code at runtime and may operate on a virtual machine or a hardware machine.
    Type: Grant
    Filed: May 4, 1998
    Date of Patent: December 26, 2000
    Assignee: Hewlett-Packard Company
    Inventors: James S. Mattson, Jr., Lacky V. Shah, William B. Buzbee, Manuel E. Benitez
  • Patent number: 6148437
    Abstract: A computer-implemented system and method are provided to designate traces of original instructions of an executable file at run time based on evaluations of control flow through jump instructions. Such designation typically increases the opportunities for dynamic optimization based on loop unrolling and other modifications of the control-flow structure of the executable file. The target of a jump instruction is designated as the start of a trace if the number of times that control has passed to it through any one or more jump instructions of a predetermined type of jump instruction reaches a predetermined start-trace threshold. The trace is ended if the number of times that control has passed through jump instructions of one of a variety of particular types of jump instructions reaches an end-trace threshold that is predetermined for each such type of jump instruction. The invention includes an instruction emulator, a start-end designator, a trace translator and optimizer, and a backpatch manager.
    Type: Grant
    Filed: May 4, 1998
    Date of Patent: November 14, 2000
    Assignee: Hewlett-Packard Company
    Inventors: Lacky V. Shah, James S. Mattson, Jr., William B. Buzbee
  • Patent number: 6115809
    Abstract: A method and apparatus varies branch prediction strategy associated with branch instructions in a trace of program code. The present invention first profiles branch instructions within a trace to record branching behavior. Next, the present invention partitions branch instructions into groups of branch instructions that can be statically predicted and groups of branch instructions that can be dynamically predicted. Branch instructions that are profiled to have "strong" branching behavior (e.g., the same branch direction is taken 80% of the time) are placed in the group of branch instruction that are statically predicted. Branch instructions that are profiled to have "weak" branching behavior (e.g., the same branch direction is taken 60% of the time) are placed in the group of branch instruction that are dynamically predicted. Finally, branch instructions are adjusted by associating an indication of prediction strategy with each profiled branch instruction.
    Type: Grant
    Filed: April 30, 1998
    Date of Patent: September 5, 2000
    Assignee: Hewlett-Packard Company
    Inventors: James S. Mattson, Jr., Lacky V. Shah, William B. Buzbee