Patent US5452457A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5452457A Expired / Lapsed US ⏱️ 0.0 years remaining

Program construct and methods/systems for optimizing assembled code for execution

Assignee: International Business Machines Corp
•
Filing: 1993-01-29
•
Granted: 1995-09-19
•
Expires: 2013-01-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract In one aspect, a software development technique is capable of efficiently organizing for execution a conditional code segment having multiple associated conditional paths. The development technique employs in association with each path of the code segment, a probability compiler directive which dictates to the compiler a probability for satisfying a conditional test of the associated path. In another aspect, a system/process is capable of optimizing organization of assembled program code for a code's particular execution environment. This optimization approach tunes assembled code organization for each specific execution environment, employing run-time based statistical data collected during performance execution of the assembled code. The execution environment, consisting of hardware, software, and other factors such as workload, input data, etc., can also be collected and employed by an optimizer unit to best reorganize the assembled program code for a current execution environment.

Inventors

  • 👤 Alan I. Alpert
  • 👤 Paul G. Greenstein
  • 👤 John T. Rodell
  • 👤 Ramanathan Raghavan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-02 11:59
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/443; G06F11/00; G06F11/30; G06F11/34; G06F11/3409; G06F8/445; G06F8/4451; G06F2201/00; G06F2201/815; G06F2201/865; G06F2201/885

Claims Analysis

Total Claims: 21
Claim 1
Independent Claim 135 words
A method for enhancing processor execution of a compilable high-level language, conditional code segment having at lest two associated conditional paths, said method comprising the steps of: (a) associating a different one of at least two probability compiler directives with each conditional path of said conditional code segment, each associated probability compiler directive being assigned an approximate probability for satisfying a test condition of the associated conditional path when said path is taken by a processor; and (b) compiling said conditional code segment, using a computer, into an assembled code segment according to the assigned probabilities of said probability compiler directives, said compiling including arranging said assembled code segment such that said conditional paths are placed in said assembled code segment in a manner that results in a shortest possible execution time for said processor.
Claim 2
Independent Claim 135 words
A method for enhancing processor execution of a compilable high-level language, conditional code segment having at lest two associated conditional paths, said method comprising the steps of: (a) associating a different one of at least two probability compiler directives with each conditional path of said conditional code segment, each associated probability compiler directive being assigned an approximate probability for satisfying a test condition of the associated conditional path when said path is taken by a processor; and (b) compiling said conditional code segment, using a computer, into an assembled code segment according to the assigned probabilities of said probability compiler directives, said compiling including arranging said assembled code segment such that said conditional paths are placed in said assembled code segment in a manner that results in a shortest possible execution time for said processor.
Claim 3
Dependent Claim 129 words
The method of claim 1, further comprising the steps of: (c) performance testing said assembled code segment of step (b); (d) simultaneous with said step (c), collecting for each conditional path compiled into said assembled code segment performance test data; (e) revising assigned probabilities of said probability compiler directives, said assigned probabilities being revised to reflect said performance test data collected in said step (d); and (f) re-compiling said conditional code segment with said revised assigned probabilities of step (e) into an enhanced assembled code segment, said enhanced assembled code segment being arranged according to the revised probabilities assigned to said probability compiler directives such that conditional branches are disposed within said assembled code segment in a manner that results in a shortest possible execution time for said processor.
Claim 4
Dependent Claim 17 words
The method of claim 2, further comprising the step of repeating steps (c)-(f) at least one time.
Claim 5
Dependent Claim 46 words
The method of claim 1, wherein said conditional code segment comprises one of an IF-THEN-ELSE statement of language PL/I, COBOL, PASCAL, or ALGOL, an IF-THEN-ELSIF-ELSE statement of language FORTRAN-78, a SWITCH-CASE statement of language C, a SELECT statement of PL/I and a CASE statement of PASCAL.
Claim 6
Dependent Claim 49 words
The method of claim 1, wherein said approximate probability indication of said step (a) assigned to each probability compiler directive comprises a floating point number having a value x, wherein 0.0<×<1.0, and wherein a summation of said floating-point numbers of said at least two probability compiler directives equals 1.0.
Claim 7
Dependent Claim 40 words
The method of claim 1, wherein said compiling step (b) includes arranging said assembled code segment such that said conditional paths are organized in said assembled code segment from most likely to be taken to least likely to be taken.
Claim 8
Dependent Claim 49 words
The method of claim 1, wherein said conditional code segment comprises an outer conditional code segment, said outer conditional code segment including at least one inner conditional code segment, and wherein said method further comprises the step of repeating steps (a) & (b) for each inner conditional code segment.
Claim 9
Dependent Claim 144 words
A programed computer system for enhancing processor execution of a compilable high-level language, conditional code segment having at least two associated conditional paths, said programmed computer system comprising: means for associating a different one of at least two probability compiler directives with each conditional path of said conditional code segment, each associated probability compiler directive being assigned an approximate probability for satisfying a test condition of the associated conditional path when said path is taken by a processor; and means for compiling said conditional code segment, using said programmed computer system, into an assembled code segment according to the assigned probabilities of said probability compiler directives, said means for compiling including means for arranging said assembled code segment such that said conditional paths are placed in said assembled code segment in a manner that results in a shortest possible execution time for said processor.
Claim 10
Dependent Claim 144 words
A programed computer system for enhancing processor execution of a compilable high-level language, conditional code segment having at least two associated conditional paths, said programmed computer system comprising: means for associating a different one of at least two probability compiler directives with each conditional path of said conditional code segment, each associated probability compiler directive being assigned an approximate probability for satisfying a test condition of the associated conditional path when said path is taken by a processor; and means for compiling said conditional code segment, using said programmed computer system, into an assembled code segment according to the assigned probabilities of said probability compiler directives, said means for compiling including means for arranging said assembled code segment such that said conditional paths are placed in said assembled code segment in a manner that results in a shortest possible execution time for said processor.
Claim 11
Dependent Claim 122 words
The programmed computer system of claim 8, further comprising: means for performance testing said assembled code segment; means for collecting for each conditional path compiled into said assembled code segment performance test data simultaneous with said performance testing; means for revising assigned probabilities of said probability compiler directives, said assigned probabilities being revised to reflect said collected performance test data; and means for re-compiling said conditional code segment with said revised assigned probabilities into an enhanced assembled code segment, said enhanced assembled code segment being arranged according to the revised probabilities assigned to said probability compiler directives such that conditional branches are disposed within said assembled code segment in a manner that results in a shortest possible execution time for said processor.
Claim 12
Dependent Claim 26 words
The programmed computer system of claim 9, further comprising means for repeating said performance testing, said collecting, said revising and said re-compiling at least one time.
Claim 13
Dependent Claim 48 words
The programmed computer system of claim 8, wherein said conditional code segment comprises one of an IF-THEN-ELSE statement of language PL/I, COBOL, PASCAL, or ALGOL, and IF-THEN-ELSIF-ELSE statement of language FORTRAN-78, a SWITCH-CASE statement of language C, a SELECT statement of PL/I and a CASE statement of PASCAL.
Claim 14
Dependent Claim 47 words
The programmed computer system of claim 8, wherein said approximate probability indication assigned to each probability compiler directive comprises a floating point number having a value x, wherein 0.0<×1.0, and wherein a summation of said floating-point numbers of said at least two probability compiler directives equals 1.0.
Claim 15
Dependent Claim 44 words
The programmed computer system of claim 8, wherein said means for compiling includes means for arranging said assembled code segment such that said conditional paths are organized in said assembled code segment from most likely to be taken to least likely to be taken.
Claim 16
Dependent Claim 53 words
The programmed computer system of claim 8, wherein said conditional code segment comprises an outer conditional code segment, said outer conditional code segment including at least one inner conditional code segment, and wherein said programmed computer system further comprises means for repeating said associating and said compiling for each inner conditional code segment.
Claim 17
Dependent Claim 85 words
A programmed computer having a memory, said memory having a conditional code segment of a compilable high-level language disposed therein, said conditional code segment comprising: at least two associated conditional paths; and at least two probability compiler directives, each probability compiler directive being associated with a different one of said at least two conditional paths, and each probability compiler directive indicating an approximate probability for satisfying a test condition of the associated conditional path when said conditional code segment is executed by said programmed computer.
Claim 18
Dependent Claim 85 words
A programmed computer having a memory, said memory having a conditional code segment of a compilable high-level language disposed therein, said conditional code segment comprising: at least two associated conditional paths; and at least two probability compiler directives, each probability compiler directive being associated with a different one of said at least two conditional paths, and each probability compiler directive indicating an approximate probability for satisfying a test condition of the associated conditional path when said conditional code segment is executed by said programmed computer.
Claim 19
Dependent Claim 30 words
The programmed computer of claim 15, wherein said conditional code segment comprises one of an IF statement, an ELSIF statement, an ELSE statement, a CASE statement, and a SELECT statement.
Claim 20
Dependent Claim 43 words
The programmed computer of claim 15, wherein said approximate probability indicated within each probability compiler directive comprises a floating-point number having a value x, wherein 0.0<×<1.0, and a sum of floating-point numbers assigned to said at least two probability compiler directives equals 1.0.
Claim 21
Dependent Claim 18 words
The programmed computer of claim 15, wherein said approximate probability indication of each probability compiler directive is modifiable.

References Cited (Backward Citations)

US4435759A Cited
US4974151A Cited
US4736318A Cited
US4908750A Cited
US4642765A Cited
US5109331A Cited
US4802091A Cited
US4833599A Cited
US5121501A Cited
EP0442624A2 Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-09-18 1999-03-20 1999-09-19 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-09-18 2003-03-20 2003-09-19 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-09-18 2007-03-20 2007-09-19 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag