Patent US5894576A successfully refreshed from Google Patents.
US5894576A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method and apparatus for instruction scheduling to reduce negative effects of compensation code
Assignee: Intel Corp
•
Filing: 1996-11-12
•
Granted: 1999-04-13
•
Expires: 2016-11-12
Abstract
Abstract A method is described for scheduling an instruction of a computer program. The instruction is scheduled into an active block of the computer program if no compensation copy is necessary, or if any necessary compensation copy is acceptable.
Inventors
- 👤 Jayashankar Bharadwaj
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-04 21:28
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/445
Claims Analysis
Total Claims: 18
Claim 1
Independent Claim
211 words
A method of scheduling an instruction of a computer program into a region of the computer program, comprising: identifying a plurality of basic blocks of the computer program, wherein a plurality of edges interconnect the basic blocks to form a control flow path; removing all edges from a split block to a join block within the region by the insertion of empty compensation blocks; determining whether the compensation blocks impede the control flow path, and if they do, the compensation blocks being deemed dummy blocks; identifying at least one of the basic blocks as a wavefront, wherein any control flow path from an entry point of the region to an exit point of the region passes through the wavefront and the wavefront is strongly independent; identifying a basic block on the wavefront as an active block; consulting the basic blocks on the wavefront to determine whether the insertion of compensation code into the basic blocks will produce a harmful effect on the control flow path, and if it will, the compensation code being deemed unacceptable; scheduling the instruction into the active block if the compensation code is acceptable; updating the wavefront when the active block closes; and repeating the scheduling step until all the instructions in the region have been scheduled.
Claim 2
Independent Claim
211 words
A method of scheduling an instruction of a computer program into a region of the computer program, comprising: identifying a plurality of basic blocks of the computer program, wherein a plurality of edges interconnect the basic blocks to form a control flow path; removing all edges from a split block to a join block within the region by the insertion of empty compensation blocks; determining whether the compensation blocks impede the control flow path, and if they do, the compensation blocks being deemed dummy blocks; identifying at least one of the basic blocks as a wavefront, wherein any control flow path from an entry point of the region to an exit point of the region passes through the wavefront and the wavefront is strongly independent; identifying a basic block on the wavefront as an active block; consulting the basic blocks on the wavefront to determine whether the insertion of compensation code into the basic blocks will produce a harmful effect on the control flow path, and if it will, the compensation code being deemed unacceptable; scheduling the instruction into the active block if the compensation code is acceptable; updating the wavefront when the active block closes; and repeating the scheduling step until all the instructions in the region have been scheduled.
Claim 3
Dependent Claim
31 words
The method of claim 1, wherein the necessary compensation code is acceptable if none of the bottom-most basic blocks in the control flow path and the wavefront is a dummy block.
Claim 4
Dependent Claim
44 words
The method of claim 1, wherein the compensation code is acceptable if insertion of the compensation code into one of the bottom-most basic blocks in the control flow path and the wavefront does not increase a critical path for one of the basic blocks.
Claim 5
Dependent Claim
48 words
The method as set forth in claim 1, wherein the compensation code is acceptable if insertion of the compensation into one of the bottom-most basic blocks in the control flow path and the wavefront does not use a resource that is scarce in one of the basic blocks.
Claim 6
Dependent Claim
42 words
The method as set forth in claim 1, further comprising: removing the active block from the wavefront in response to the active block closing; adding to the wavefront all successor basic blocks of the active block; and identifying a new active block.
Claim 7
Dependent Claim
235 words
A program storage device readable by a general purpose computer, the program storage device encoding statements for performing a method of scheduling an instruction of a computer program, the method comprising scheduling the instruction into a region of the computer program by: identifying a plurality of basic blocks of the computer program, wherein a plurality of edges interconnect the basic blocks to form a control flow path; removing all edges from a split block to a join block within the region by the insertion of empty compensation blocks; determining whether the compensation blocks impede the control flow path, and if they do, the compensation blocks being deemed dummy blocks; identifying at least one of the basic blocks as a wavefront, wherein any control flow path from an entry point of the region to an exit point of the region passes through the wavefront and the wavefront is strongly independent; identifying a basic block on the wavefront as an active block; consulting the basic blocks on the wavefront to determine whether the insertion of compensation code into the basic blocks will produce a harmful effect on the control flow path, and if it will, the compensation code being deemed unacceptable; scheduling the instruction into the active block if the compensation code is acceptable; updating the wavefront when the active block closes; and repeating the scheduling step until all the instructions in the region have been scheduled.
Claim 8
Dependent Claim
235 words
A program storage device readable by a general purpose computer, the program storage device encoding statements for performing a method of scheduling an instruction of a computer program, the method comprising scheduling the instruction into a region of the computer program by: identifying a plurality of basic blocks of the computer program, wherein a plurality of edges interconnect the basic blocks to form a control flow path; removing all edges from a split block to a join block within the region by the insertion of empty compensation blocks; determining whether the compensation blocks impede the control flow path, and if they do, the compensation blocks being deemed dummy blocks; identifying at least one of the basic blocks as a wavefront, wherein any control flow path from an entry point of the region to an exit point of the region passes through the wavefront and the wavefront is strongly independent; identifying a basic block on the wavefront as an active block; consulting the basic blocks on the wavefront to determine whether the insertion of compensation code into the basic blocks will produce a harmful effect on the control flow path, and if it will, the compensation code being deemed unacceptable; scheduling the instruction into the active block if the compensation code is acceptable; updating the wavefront when the active block closes; and repeating the scheduling step until all the instructions in the region have been scheduled.
Claim 9
Dependent Claim
35 words
The program storage device as set forth in claim 6, wherein the compensation code is acceptable if none of the bottom-most basic blocks in the control flow path and the wavefront is a dummy block.
Claim 10
Dependent Claim
49 words
The program storage device as set forth in claim 6, wherein the compensation code is acceptable if insertion of the compensation code into one of the bottom-most basic blocks in the control flow path and the wavefront does not increase a critical path for one of the basic blocks.
Claim 11
Dependent Claim
50 words
The program storage device as set forth in claim 6, wherein the compensation code is acceptable if insertion of the compensation into one of the bottom-most basic blocks in the control flow path and the wavefront does not use a resource that is scarce in one of the basic blocks.
Claim 12
Dependent Claim
46 words
The program storage device as set forth in claim 6, the method further comprising: removing the active block from the wavefront in response to the active block closing; adding to the wavefront all successor basic blocks of the active block; and identifying a new active block.
Claim 13
Dependent Claim
226 words
A computer programmed with a first program, the first program including statements for a method, the method comprising scheduling an instruction of a second program into a region of the second program by: identifying a plurality of basic blocks of the computer program, wherein a plurality of edges interconnect the basic blocks to form a control flow path; removing all edges from a split block to a join block within the region by the insertion of empty compensation blocks; determining whether the compensation blocks impede the control flow path, and if they do, the compensation blocks being deemed dummy blocks; identifying at least one of the basic blocks as a wavefront, wherein any control flow path from an entry point of the region to an exit point of the region passes through the wavefront and the wavefront is strongly independent; identifying a basic block on the wavefront as an active block; consulting the basic blocks on the wavefront to determine whether the insertion of compensation code into the basic blocks will produce a harmful effect on the control flow path, and if it will, the compensation code being deemed unacceptable; scheduling the instruction into the active block if the compensation code is acceptable; updating the wavefront when the active block closes; and repeating the scheduling step until all the instructions in the region have been scheduled.
Claim 14
Dependent Claim
226 words
A computer programmed with a first program, the first program including statements for a method, the method comprising scheduling an instruction of a second program into a region of the second program by: identifying a plurality of basic blocks of the computer program, wherein a plurality of edges interconnect the basic blocks to form a control flow path; removing all edges from a split block to a join block within the region by the insertion of empty compensation blocks; determining whether the compensation blocks impede the control flow path, and if they do, the compensation blocks being deemed dummy blocks; identifying at least one of the basic blocks as a wavefront, wherein any control flow path from an entry point of the region to an exit point of the region passes through the wavefront and the wavefront is strongly independent; identifying a basic block on the wavefront as an active block; consulting the basic blocks on the wavefront to determine whether the insertion of compensation code into the basic blocks will produce a harmful effect on the control flow path, and if it will, the compensation code being deemed unacceptable; scheduling the instruction into the active block if the compensation code is acceptable; updating the wavefront when the active block closes; and repeating the scheduling step until all the instructions in the region have been scheduled.
Claim 15
Dependent Claim
33 words
The computer as set forth in claim 11, wherein the compensation code is acceptable if none of the bottom-most basic blocks in the control flow path and the wavefront is a dummy block.
Claim 16
Dependent Claim
47 words
The computer as set forth in claim 11, wherein the compensation code is acceptable if insertion of the compensation code into one of the bottom-most basic blocks in the control flow path and the wavefront does not increase a critical path for one of the basic blocks.
Claim 17
Dependent Claim
48 words
The computer as set forth in claim 11, wherein the compensation code is acceptable if insertion of the compensation into one of the bottom-most basic blocks in the control flow path and the wavefront does not use a resource that is scarce in one of the basic blocks.
Claim 18
Dependent Claim
45 words
The computer as set forth in claim 11, wherein the method further comprises: removing the active block from the wavefront in response to the active block closing; adding to the wavefront all successor basic blocks of the active block; and identifying a new active block.
References Cited (Backward Citations)
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2002-04-12 | 2002-10-12 | 2003-04-13 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2006-04-12 | 2006-10-12 | 2007-04-13 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2010-04-12 | 2010-10-12 | 2011-04-13 | $7700.00 | Window Closed / Lapsed |