Patents by Inventor Robert Ralph Roediger

Robert Ralph Roediger 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: 7856618
    Abstract: A program feature set is compared to a processor feature set. The comparison may be performed in response to restoring the program onto a system or requesting its execution. The processor feature set represents zero, one or more optional hardware features supported by the processor, whereas the program feature set represents zero, one or more optional hardware features the program relies upon in its generated code. Comparison of the feature sets determines whether a particular program may run on a particular processor. Programs may be automatically or manually rebuilt to achieve full compatibility. If the comparison indicates that the program requires a feature not supported by the processor, the program is rebuilt based on the processor feature set. Alternatively, the program may be rebuilt in response to a rebuild request, rather than the comparison. The program is preferably rebuilt from an intermediate representation (IR) stored with or locatable from the program.
    Type: Grant
    Filed: August 4, 2005
    Date of Patent: December 21, 2010
    Assignee: International Business Machines Corporation
    Inventors: Robert John Donovan, Paul Lu Verne Godtland, Sherri Lynn McMeeking, Joseph Patrick Reynolds, Scott Thomas Robinson, Robert Ralph Roediger, William Jon Schmidt, Roger Wayne Southwick
  • Patent number: 7120907
    Abstract: Methods and apparatus are disclosed for improved loop unrolling by a compiler. A large class of loops exists for which effective loop unrolling has not previously been performed because they are too large to be completely unrolled, but which do not have a single hot trace that covers an entire loop iteration. The present invention recognizes such loops that have partial hot traces identified using profile data. A set of instructions which constitute a proper superset of the hot trace and a proper subset of the entire loop, and which forms a complete loop iteration is identified. This set of instructions can then be unrolled without unrolling the entire loop.
    Type: Grant
    Filed: August 28, 2003
    Date of Patent: October 10, 2006
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt, Peter Jerome Steinmetz
  • Patent number: 7086043
    Abstract: A superblock unroller creates a superblock in a first instruction stream, and unrolls the superblock using different methods depending on the suitability of the superblock to different types of unrolling. The superblock unroller uses complete unrolling if a number of iterations of the superblock is sufficiently small and if the number of iterations is known at compile-time. The superblock unroller uses static unrolling if the number of iterations of the superblock is too large for complete unrolling and if the number of iterations is known at compile-time. The superblock unroller uses dynamic unrolling if the number of iterations of the superblock is unknown at compile-time. Each of these unrolling methods may include the insertion of count rectification code into the first instruction stream to account for execution that exits the superblock. Code performance may be improved by providing the sophisticated unrolling of superblocks disclosed herein.
    Type: Grant
    Filed: October 29, 2002
    Date of Patent: August 1, 2006
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt, Peter Jerome Steinmetz
  • Patent number: 7086044
    Abstract: A method, apparatus and article of manufacture for performing automatic intermodule call linkage optimization. In one embodiment, the run time is optimized for an object code generated from a source code. Initially, information is extracted for each procedure call in the source code. The extracted information is used to select a call linkage for each procedure call. The call linkages are selected to minimize the run time of the object code generated from the source code. Once the object code is generated form the source code, the object code is run using the selected call linkages for each procedure call.
    Type: Grant
    Filed: March 22, 2001
    Date of Patent: August 1, 2006
    Assignee: International Business Machines Corporation
    Inventors: Scott Patrick Hanson, Craig Arthur Orcutt, Robert Ralph Roediger
  • Patent number: 6968541
    Abstract: Automatic template instantiation for cross compilation is provided. More particularly, a routine (40) on a development computer system (10) extracts template information from source code (22). The routine (40) uses the template information to generate template source files (56, 56A, 56B), which may then be compiled with a cross compiler (20) to provide object code (54, 54A, 54B). Owing to one or more templates being dependent on one or more other templates, the routine is repeated until all templates, and their associated dependencies, are compiled into object code (54B) with the cross compiler (20). This object code is then portable from the development computer system (10) to a target computer system (60) for automatic template instantiation. Moreover, a template repository (52) is used to hold in part the template information. By centrally locating template information, duplicate templates may be avoided to conserve data resources.
    Type: Grant
    Filed: October 4, 2000
    Date of Patent: November 22, 2005
    Assignee: International Business Machines Corporation
    Inventors: Scott Patrick Hanson, Curtis P. Meier, Craig Arthur Orcutt, Robert Ralph Roediger
  • Patent number: 6938249
    Abstract: A profile-based loop optimizer generates an execution frequency table for each loop that gives more detailed profile data that allows making a more intelligent decision regarding if and how to optimize each loop in the computer program. The execution frequency table contains entries that correlate a number of times a loop is executed each time the loop is entered with a count of the occurrences of each number during the execution of an instrumented instruction stream. The execution frequency table is used to determine whether there is one dominant mode that appears in the profile data, and if so, optimizes the loop according to the dominant mode. The optimizer may perform optimizations by peeling a loop, by unrolling a loop, and by performing both peeling and unrolling on a loop according to the profile data in the execution frequency table for the loop.
    Type: Grant
    Filed: November 19, 2001
    Date of Patent: August 30, 2005
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 6772414
    Abstract: A mechanism and method for hoisting invariant computations from loops analyzes the lifetimes of fixed processor resources defined by an instruction, and determines whether a group of computations present in multiple instructions within the lifetime are, taken together, loop-invariant and legal to hoist from the loop. If the group of computations within the lifetime of the fixed processor resource are loop-invariant and hoistable, all of the computations are hoisted out of the loop as a group. By determining the lifetimes of fixed processor resources defined in an instruction, the hoisting mechanism succeeds in hoisting out groups of computations that cannot be individually hoisted out of a loop, thereby achieving better performance when the computer program executes.
    Type: Grant
    Filed: June 18, 1998
    Date of Patent: August 3, 2004
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt
  • Publication number: 20040083459
    Abstract: A superblock unroller creates a superblock in a first instruction stream, and unrolls the superblock using different methods depending on the suitability of the superblock to different types of unrolling. The superblock unroller uses complete unrolling if a number of iterations of the superblock is sufficiently small and if the number of iterations is known at compile-time. The superblock unroller uses static unrolling if the number of iterations of the superblock is too large for complete unrolling and if the number of iterations is known at compile-time. The superblock unroller uses dynamic unrolling if the number of iterations of the superblock is unknown at compile-time. Each of these unrolling methods may include the insertion of count rectification code into the first instruction stream to account for execution that exits the superblock. Code performance may be improved by providing the sophisticated unrolling of superblocks disclosed herein.
    Type: Application
    Filed: October 29, 2002
    Publication date: April 29, 2004
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Robert Ralph Roediger, William Jon Schmidt, Peter Jerome Steinmetz
  • Publication number: 20040015925
    Abstract: A method, apparatus and article of manufacture for performing automatic intermodule call linkage optimization. In one embodiment, the run time is optimized for an object code generated from a source code. Initially, information is extracted for each procedure call in the source code. The extracted information is used to select a call linkage for each procedure call. The call linkages are selected to minimize the run time of the object code generated from the source code. Once the object code is generated form the source code, the object code is run using the selected call linkages for each procedure call.
    Type: Application
    Filed: March 22, 2001
    Publication date: January 22, 2004
    Applicant: International Business Machines Corporation
    Inventors: Scott Patrick Hanson, Craig Arthur Orcutt, Robert Ralph Roediger
  • Patent number: 6631518
    Abstract: Disclosed is a system and method for a profiling system wherein profile data is stored in a separable hierarchical fashion such that profile data for each compiled procedure in a computer program can be readily identified and utilized. In particular, each source module has a corresponding profile data file and each procedure has a corresponding procedure profile area. The system and method also includes a mechanism for verifying the existence and validity of profile information, and a mechanism for handling invalid profile information.
    Type: Grant
    Filed: March 19, 1997
    Date of Patent: October 7, 2003
    Assignee: International Business Machines Corporation
    Inventors: Vita Bortnikov, David John Lambert, Bilha Mendelson, Robert Ralph Roediger, William Jon Schmidt, Inbal Shavit-Lottem
  • Publication number: 20030097652
    Abstract: A profile-based loop optimizer generates an execution frequency table for each loop that gives more detailed profile data that allows making a more intelligent decision regarding if and how to optimize each loop in the computer program. The execution frequency table contains entries that correlate a number of times a loop is executed each time the loop is entered with a count of the occurrences of each number during the execution of an instrumented instruction stream. The execution frequency table is used to determine whether there is one dominant mode that appears in the profile data, and if so, optimizes the loop according to the dominant mode. The optimizer may perform optimizations by peeling a loop, by unrolling a loop, and by performing both peeling and unrolling on a loop according to the profile data in the execution frequency table for the loop.
    Type: Application
    Filed: November 19, 2001
    Publication date: May 22, 2003
    Applicant: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 6308324
    Abstract: A profiler that operates in a multi-stage environment is disclosed. As program code undergoes a series of transformations, branches of interest are selected and tracked. Regardless of how many transformations are involved only a single instrumentation/data gathering phase is required. The gathered profile data is then used to perform various optimizations at the differing transformation stages.
    Type: Grant
    Filed: June 10, 1999
    Date of Patent: October 23, 2001
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 6305014
    Abstract: An instruction scheduler in an optimizing compiler schedules instructions in a computer program by determining the lifetimes of fixed registers in the computer program. By determining the lifetimes of fixed registers, the instruction scheduler can achieve a schedule that has a higher degree of parallelism by relaxing dependences between instructions in independent lifetimes of a fixed register so that instructions can be scheduled earlier than would otherwise be possible if those dependences were precisely honored.
    Type: Grant
    Filed: June 18, 1998
    Date of Patent: October 16, 2001
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 6301652
    Abstract: A compiler system and method is provided that can 1) generate a second instruction stream from a first instruction stream, 2) read in and process predetermined external information regarding the basic blocks that makes up the second instruction stream and 3) place certain of the basic blocks on cache line boundaries based on predicted execution frequencies. In particular, the compiler system and method utilize profile information containing predicted block execution or edge-weight execution frequencies to determine which of the basic blocks to align on cache line boundaries. One method for obtaining profile information includes precompiling the source code, creating an executable program, executing the program with test inputs, and outputting a profile containing execution frequency information. Once the profile information is obtained, the source code can then be recompiled using the profile information. The compiler can then selectively cache align those blocks identified as important.
    Type: Grant
    Filed: January 31, 1996
    Date of Patent: October 9, 2001
    Assignee: International Business Machines Corporation
    Inventors: Edward Curtis Prosser, Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 6090155
    Abstract: Apparatus and a method are provided for defining visibility boundaries in compiled code of an optimizing compiler used with a digital computer for converting a source program to an object code. The source program is received and a first intermediate representation of the source program is generated. A pseudo operation representing a predetermined event is inserted in the first intermediate representation. Sequential operations of the first intermediate representation including the inserted pseudo operations are processed for defining an internal data structure of the source program. A visibility boundary for a selected variable is identified responsive to identifying a pseudo operation in the first intermediate representation.
    Type: Grant
    Filed: June 5, 1995
    Date of Patent: July 18, 2000
    Assignee: International Business Machines Corporation
    Inventors: Robert John Donovan, Daniel Rodman Hicks, James Albert Kryka, David John Lambert, Robert Ralph Roediger
  • Patent number: 6072951
    Abstract: A compiler and method of compiling provide enhanced performance by inlining one or more frequently executed paths through a child procedure into a parent procedure without inlining the entire child procedure. Accordingly, a substantial improvement in speed of execution of the program can be achieved by reducing procedure call overhead, with reduced expense in terms of program size as compared to traditional inlining. Various criteria for determining whether to inline particular child procedures are also described.
    Type: Grant
    Filed: October 15, 1997
    Date of Patent: June 6, 2000
    Assignee: International Business Machines Corporation
    Inventors: Robert John Donovan, Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 6029004
    Abstract: An apparatus and method reorder portions of a computer program in a way that achieves both enhanced performance and maintainability of the computer program. A global call graph is initially constructed that includes profile data. From the information in the global call graph, an intramodular call graph is generated for each module. Reordering techniques are used to reorder the procedures in each module according to the profile data in each intramodular call graph. An intermodular call graph is generated from the information in the global call graph. Reordering techniques are used to reorder the modules in the computer program. By reordering procedures within modules, then reordering the modules, enhanced performance is achieved without reordering procedures across module boundaries.
    Type: Grant
    Filed: March 17, 1997
    Date of Patent: February 22, 2000
    Assignee: International Business Machines Corporation
    Inventors: Vita Bortnikov, Bilha Mendelson, Mark Novick, Robert Ralph Roediger, William Jon Schmidt, Inbal Shavit-Lottem
  • Patent number: 5960198
    Abstract: Disclosed is a system and method for a profiling system wherein the collection of profile data may be enabled and disabled during the execution of an instrumented computer program. The invention utilizes a dedicated bit in a condition register which is checked each time a block of instrumentation code is to be executed. If the bit is enabled, the instrumentation code is executed and profile data is collected. If the bit is not enabled, then the instrumentation block is skipped and not executed and no profile information is collected. The enabling and disabling of the bit in the condition register may be implemented in hardware, in software, or in a combination of the two.
    Type: Grant
    Filed: March 19, 1997
    Date of Patent: September 28, 1999
    Assignee: International Business Machines Corporation
    Inventors: Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 5946491
    Abstract: A method and apparatus for minimizing spill code in regions of low register pressure determines the register pressure at various locations in the computer program. When a live range is selected for spilling, spill code is generated to relieve the register pressure in regions of high register pressure, while spill code is avoided in regions of low register pressure. In this manner a minimum amount of spill code is generated, enhancing both the compile time and the run time of the resultant instruction stream.
    Type: Grant
    Filed: June 6, 1996
    Date of Patent: August 31, 1999
    Assignee: International Business Machines Corporation
    Inventors: Nava Arela Aizikowitz, Liviu Asnash, Roy Bar-Haim, Edward Curtis Prosser, Robert Ralph Roediger, William Jon Schmidt
  • Patent number: 5937196
    Abstract: A compiler and method of compiling provide partial redundant copy elimination by eliminating copy statements having at least one eligible reachable use and at least one ineligible reachable use. To eliminate such statements, the used operand of each eligible use is replaced with the used operand in the copy statement, and the copy statement is duplicated prior to each ineligible use.
    Type: Grant
    Filed: September 19, 1997
    Date of Patent: August 10, 1999
    Assignee: International Business Machines Corporation
    Inventors: William Jon Schmidt, Edward Curtis Prosser, Robert Ralph Roediger