Patents by Inventor John Kevin O'Brien

John Kevin O'Brien 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: 7496494
    Abstract: A method (and system) for executing a multiprocessor program written for a target instruction set architecture on a host computing system having a plurality of processors designed to process instructions of a second instruction set architecture, includes representing each portion of the program designed to run on a processor of the target computing system as one or more program threads to be executed on the host computing system.
    Type: Grant
    Filed: September 17, 2002
    Date of Patent: February 24, 2009
    Assignee: International Business Machines Corporation
    Inventors: Erik Richter Altman, Ravi Nair, John Kevin O'Brien, Kathryn Mary O'Brien, Peter Howland Oden, Daniel Arthur Prener, Sumedh Wasudeo Sathaye
  • Publication number: 20080010635
    Abstract: A compiler includes a mechanism for improving branch prediction in a processor that supports a branch hint instruction. The compiler receives a sequence of instructions, wherein the sequence of instructions comprises a loop. This loop sequence employs an hbr instruction to avoid the misprediction penalty of the taken branch to the start of the loop on each loop iteration. However, this penalty will be incurred regardless, on exiting the loop. The compiler inserts a compare and select instruction sequence which dynamically changes the input to the hbr instruction thereby avoiding this penalty when leaving the loop.
    Type: Application
    Filed: July 7, 2006
    Publication date: January 10, 2008
    Inventors: John Kevin O'Brien, Kathryn M. O'Brien
  • Publication number: 20070174825
    Abstract: An apparatus and method for optimizing scalar code executed on a single instruction multiple data (SIMD) engine is provided that aligns the slots of SIMD registers. With the apparatus and method, a compiler is provided that parses source code and, for each statement in the program, generates an expression tree. The compiler inspects all storage inputs to scalar operations in the expression tree to determine their alignment in the SIMD registers. This alignment is propagated up the expression tree from the leaves. When the alignments of two operands in the expression tree are the same, the resulting alignment is the shared value. When the alignments of two operands in the expression tree are different, one operand is shifted. For shifted operands, a shift operation is inserted in the expression tree. The executable code is then generated for the expression tree and shifts are inserted where indicated.
    Type: Application
    Filed: January 25, 2006
    Publication date: July 26, 2007
    Inventors: Alexandre Eichenberger, John Kevin O'Brien
  • Publication number: 20070174828
    Abstract: An apparatus and method for partitioning programs between a general purpose core and one or more accelerators are provided. With the apparatus and method, a compiler front end is provided for converting a program source code in a corresponding high level programming language into an intermediate code representation. This intermediate code representation is provided to an interprocedural optimizer which determines which core processor or accelerator each portion of the program should execute on and partitions the program into sub-programs based on this set of decisions. The interprocedural optimizer may further add instructions to the partitions to coordinate and synchronize the sub-programs as required. Each sub-program is compiled on an appropriate compiler backend for the instruction set architecture of the particular core processor or accelerator selected to execute the sub-program. The compiled sub-programs and then linked to thereby generate an executable program.
    Type: Application
    Filed: January 25, 2006
    Publication date: July 26, 2007
    Inventors: John Kevin O'Brien, Kathryn O'Brien, Daniel Prener
  • Patent number: 7243333
    Abstract: The present invention provides a compilation system for compiling and linking an integrated executable adapted to execute on a heterogeneous parallel processor architecture. The compiler and linker compile different segments of the source code for a first and second processor architecture, and generate appropriate stub functions directed at loading code and data to remote nodes so as to cause them to perform operations described by the transmitted code on the data. The compiler and linker generate stub objects to represent remote execution capability, and stub objects encapsulate the transfers necessary to execute code in such environment.
    Type: Grant
    Filed: October 24, 2002
    Date of Patent: July 10, 2007
    Assignee: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Patent number: 7225431
    Abstract: The present invention provides inserting and deleting a breakpoint in a parallel processing system. A breakpoint is inserted in a module loaded into the execution environment of an attached processor unit. The breakpoint can be inserted directly. Furthermore, the unloaded image of the module can also have a breakpoint associated with it. The breakpoint can be inserted directly into the module image, or a breakpoint request can be generated, and the breakpoint is inserted when the module is loaded into the execution environment of the attached processor unit.
    Type: Grant
    Filed: October 24, 2002
    Date of Patent: May 29, 2007
    Assignee: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Patent number: 7222332
    Abstract: The present invention provides for creating and employing code and data partitions in a heterogeneous environment. This is achieved by separating source code and data into at least two partitioned sections and at least one unpartitioned section. Generally, a partitioned section is targeted for execution on an independent memory device, such as an attached processor unit. Then, at least two overlay sections are generated from at least one partition section. The plurality of partition sections are pre-bound to each other. A root module is also created, associated with both the pre-bound plurality of partitions and the overlay sections. The root module is employable to exchange the at least two overlay sections between the first and second execution environments. The pre-bound plurality of partition sections are then bound to the at least one unpartitioned section. The binding produces an integrated executable.
    Type: Grant
    Filed: October 24, 2002
    Date of Patent: May 22, 2007
    Assignee: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Patent number: 7213123
    Abstract: The present invention provides for the employment of a dynamic debugger for a parallel processing environment. This is achieved by dynamically updating mapping information at run-time in a mapping table, wherein the mapping table is read by the dynamic debugger.
    Type: Grant
    Filed: October 24, 2002
    Date of Patent: May 1, 2007
    Assignee: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Patent number: 7200840
    Abstract: In the present invention, global information is passed from a first execution environment to a second execution environment, wherein both the first and second processor units comprise separate memories. The global variable is transferred through the invocation of a memory flow controller by a stub function. The global descriptor has a plurality of field indicia that allow a binder to link separate object files bound to the first and second execution environments.
    Type: Grant
    Filed: October 24, 2002
    Date of Patent: April 3, 2007
    Assignee: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Patent number: 7146607
    Abstract: A method (and system) of transparent dynamic optimization in a multiprocessing environment, includes monitoring execution of an application on a first processor with an execution monitor running on another processor of the system, and transparently optimizing one or more segments of the original application with a runtime optimizer executing on the another processor of the system.
    Type: Grant
    Filed: September 17, 2002
    Date of Patent: December 5, 2006
    Assignee: International Business Machines Corporation
    Inventors: Ravi Nair, John Kevin O'Brien, Kathryn Mary O'Brien, Peter Howland Oden, Daniel Arthur Prener
  • Publication number: 20060123405
    Abstract: The present invention provides for a method for computer program code optimization for a software managed cache in either a uni-processor or a multi-processor system. A single source file comprising a plurality of array references is received. The plurality of array references is analyzed to identify predictable accesses. The plurality of array references is analyzed to identify secondary predictable accesses. One or more of the plurality of array references is aggregated based on identified predictable accesses and identified secondary predictable accesses to generate aggregated references. The single source file is restructured based on the aggregated references to generate restructured code. Prefetch code is inserted in the restructured code based on the aggregated references. Software cache update code is inserted in the restructured code based on the aggregated references. Explicit cache lookup code is inserted for the remaining unpredictable accesses.
    Type: Application
    Filed: December 2, 2004
    Publication date: June 8, 2006
    Applicant: International Business Machines Corporation
    Inventors: John Kevin O'Brien, Kathryn O'Brien
  • Publication number: 20060112368
    Abstract: A system and method for managing position independent code using a software framework is presented. A software framework provides the ability to cache multiple plug-in's which are loaded in a processor's local storage. A processor receives a command or data stream from another processor, which includes information corresponding to a particular plug-in. The processor uses the plug-in identifier to load the plug-in from shared memory into local memory before it is required in order to minimize latency. When the data stream requests the processor to use the plug-in, the processor retrieves a location offset corresponding to the plug-in and applies the plug-in to the data stream. A plug-in manager manages an entry point table that identifies memory locations corresponding to each plug-in and, therefore, plug-ins may be placed anywhere in a processor's local memory.
    Type: Application
    Filed: November 12, 2004
    Publication date: May 25, 2006
    Applicant: International Business Machines Corporation
    Inventors: Michael Gowen, Barry Minor, Mark Nutter, John Kevin O'Brien
  • Publication number: 20040083458
    Abstract: The present invention provides inserting and deleting a breakpoint in a parallel processing system. A breakpoint is inserted in a module loaded into the execution environment of an attached processor unit. The breakpoint can be inserted directly. Furthermore, the unloaded image of the module can also have a breakpoint associated with it. The breakpoint can be inserted directly into the module image, or a breakpoint request can be generated, and the breakpoint is inserted when the module is loaded into the execution environment of the attached processor unit.
    Type: Application
    Filed: October 24, 2002
    Publication date: April 29, 2004
    Applicant: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Publication number: 20040083342
    Abstract: In the present invention, global information is passed from a first execution environment to a second execution environment, wherein both the first and second processor units comprise separate memories. The global variable is transferred through the invocation of a memory flow controller by a stub function. The global descriptor has a plurality of field indicia that allow a binder to link separate object files bound to the first and second execution environments.
    Type: Application
    Filed: October 24, 2002
    Publication date: April 29, 2004
    Applicant: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Publication number: 20040083462
    Abstract: The present invention provides a compilation system for compiling and linking an integrated executable adapted to execute on a heterogeneous parallel processor architecture. The compiler and linker compile different segments of the source code for a first and second processor architecture, and generate appropriate stub functions directed at loading code and data to remote nodes so as to cause them to perform operations described by the transmitted code on the data. The compiler and linker generate stub objects to represent remote execution capability, and stub objects encapsulate the transfers necessary to execute code in such environment.
    Type: Application
    Filed: October 24, 2002
    Publication date: April 29, 2004
    Applicant: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Publication number: 20040083455
    Abstract: The present invention provides for creating and employing code and data partitions in a heterogeneous environment. This is achieved by separating source code and data into at least two partitioned sections and at least one unpartitioned section. Generally, a partitioned section is targeted for execution on an independent memory device, such as an attached processor unit. Then, at least two overlay sections are generated from at least one partition section. The plurality of partition sections are pre-bound to each other. A root module is also created, associated with both the pre-bound plurality of partitions and the overlay sections. The root module is employable to exchange the at least two overlay sections between the first and second execution environments. The pre-bound plurality of partition sections are then bound to the at least one unpartitioned section. The binding produces an integrated executable.
    Type: Application
    Filed: October 24, 2002
    Publication date: April 29, 2004
    Applicant: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Publication number: 20040083331
    Abstract: The present invention provides for the employment of a dynamic debugger for a parallel processing environment. This is achieved by dynamically updating mapping information at run-time in a mapping table, wherein the mapping table is read by the dynamic debugger.
    Type: Application
    Filed: October 24, 2002
    Publication date: April 29, 2004
    Applicant: International Business Machines Corporation
    Inventors: Michael Karl Gschwind, Kathryn M. O'Brien, John Kevin O'Brien, Valentina Salapura
  • Publication number: 20040078186
    Abstract: A method (and system) of emulation in a multiprocessor system, includes performing an emulation in which a host multiprocessing system of the multiprocessor system supports a weak consistency model, and the target multiprocessing system of the multiprocessor system supports a strong consistency model.
    Type: Application
    Filed: September 17, 2002
    Publication date: April 22, 2004
    Applicant: International Business Machines Corporation
    Inventors: Ravi Nair, John Kevin O'brien, Kathryn Mary O'brien, Peter Howland Oden, Daniel Arthur Prener
  • Publication number: 20040054518
    Abstract: A method (and system) for emulating a target system's memory addressing using a virtual-to-real memory mapping mechanism of a host multiprocessor system's operating system, includes inputting a target virtual memory address into a simulated page table to obtain a host virtual memory address. The target system is oblivious to the software it is running on.
    Type: Application
    Filed: September 17, 2002
    Publication date: March 18, 2004
    Applicant: International Business Machines Corporation
    Inventors: Erik Richter Altman, Ravi Nair, John Kevin O'Brien, Kathryn Mary O'Brien, Peter Howland Oden, Daniel Arthur Prener, Sumedh Wasudeo Sathaye
  • Publication number: 20040054992
    Abstract: A method (and system) of transparent dynamic optimization in a multiprocessing environment, includes monitoring execution of an application on a first processor with an execution monitor running on another processor of the system, and transparently optimizing one or more segments of the original application with a runtime optimizer executing on the another processor of the system.
    Type: Application
    Filed: September 17, 2002
    Publication date: March 18, 2004
    Applicant: International Business Machines Corporation
    Inventors: Ravi Nair, John Kevin O'Brien, Kathryn Mary O'Brien, Peter Howland Oden, Daniel Arthur Prener