← Back to Patent Explorer
US6151705A Expired / Lapsed US ⏱️ 0.0 years remaining

Efficient use of the base register auto-increment feature of memory access instructions

Assignee: Hewlett Packard Enterprise Development LP
•
Filing: 1997-10-30
•
Granted: 2000-11-21
•
Expires: 2017-10-30
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention is a compiler optimization algorithm that reduces address computation overhead for architectures that support an auto-increment addressing mode for memory access instructions. The compiler algorithm identifies opportunities for auto-increment synthesis in a low level intermediate representation. Candidate loads and stores are transformed to use a base+displacement addressing mode (even if a base+displacement addressing mode is not supported in the target architecture) prior to instruction scheduling. After instruction scheduling, the pseudo (base+displacement) instructions are transformed back into memory operations that increment their base register operands to set up effective memory addresses.

Inventors

  • 👤 Vatsa Santhanam

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-27 06:03
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/34; G06F9/355; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/443

Claims Analysis

Total Claims: 26
Claim 1
Independent Claim 73 words
A compiler optimization algorithm including the steps of: (i) identifying candidate memory access instructions for auto-increment synthesis; (ii) transforming candidate memory access instructions into memory access instructions that employ an addressing mode not supported by the target architecture; (iii) scheduling the memory access instructions that are not supported by the target architecture; and (iv) transforming the memory access instructions that are not supported by the target architecture into an auto-increment memory access instructions.
Claim 2
Dependent Claim 73 words
A compiler optimization algorithm including the steps of: (i) identifying candidate memory access instructions for auto-increment synthesis; (ii) transforming candidate memory access instructions into memory access instructions that employ an addressing mode not supported by the target architecture; (iii) scheduling the memory access instructions that are not supported by the target architecture; and (iv) transforming the memory access instructions that are not supported by the target architecture into an auto-increment memory access instructions.
Claim 3
Dependent Claim 116 words
A compiler optimization algorithm for optimizing a low-level representation of a program for a target architecture that supports an auto-increment addressing mode, including the steps of: identifying candidate memory access instructions for auto-increment synthesis; transforming candidate memory access instructions into pseudo base+displacement memory access instructions, wherein the step of transforming candidate memory access instruction into pseudo base+displacement memory access instructions occurs prior to the step of instruction scheduling; scheduling the pseudo base+displacement memory instructions; and converting the pseudo base+displacement memory access instructions into memory access instructions that auto-increment their base register operands, wherein the step of converting the base+displacement memory access instructions into memory access instructions that auto-increment their base operands is performed after instruction scheduling.
Claim 4
Dependent Claim 116 words
A compiler optimization algorithm for optimizing a low-level representation of a program for a target architecture that supports an auto-increment addressing mode, including the steps of: identifying candidate memory access instructions for auto-increment synthesis; transforming candidate memory access instructions into pseudo base+displacement memory access instructions, wherein the step of transforming candidate memory access instruction into pseudo base+displacement memory access instructions occurs prior to the step of instruction scheduling; scheduling the pseudo base+displacement memory instructions; and converting the pseudo base+displacement memory access instructions into memory access instructions that auto-increment their base register operands, wherein the step of converting the base+displacement memory access instructions into memory access instructions that auto-increment their base operands is performed after instruction scheduling.
Claim 5
Dependent Claim 31 words
The method recited in claim 2 wherein the candidates are memory access instructions that occur in loops which specify an address that is a linear function of a loop induction variable.
Claim 6
Dependent Claim 43 words
The method recited in claim 2 further including the step of generating a list schedule for a loop to determine a maximum initiation interval (MAX ii ), estimating the minimum initiation interval (MIN ii ) and attempting to find a software pipeline schedule.
Claim 7
Dependent Claim 30 words
The method recited in claim 4 wherein if the software pipeline schedule is not found for a MIN ii less than MAX ii , the minimum initiation interval is incremented.
Claim 8
Dependent Claim 40 words
The method recited in claim 4 wherein if the software pipeline schedule is not found and MIN ii is greater than MAX ii , the list schedule for the loop is generated and auto-increments for the list schedule are synthesized.
Claim 9
Dependent Claim 38 words
The method recited in claim 4 further including the step of determining whether auto-increments can be synthesized for the software pipeline schedule when the software pipeline schedule is found for a MIN ii less than MAX ii .
Claim 10
Dependent Claim 31 words
The method recited in claim 7 further including the step of determining whether the software pipeline kernel can be register allocated when auto-increments can be synthesized for the software pipeline schedule.
Claim 11
Dependent Claim 29 words
The method recited in claim 8 further including the step of generating a software pipeline schedule when it is determined that the software pipeline kernel can be register allocated.
Claim 12
Dependent Claim 18 words
The method recited in claim 2 where the base+displacement addressing mode is not supported by the target architecture.
Claim 13
Dependent Claim 20 words
The method recited in claim 10 wherein all of the candidate memory instructions are converted to base+displacement instructions before scheduling.
Claim 14
Dependent Claim 17 words
The method recited in claim 2 where the base+displacement addressing mode is supported by the target architecture.
Claim 15
Dependent Claim 20 words
The method recited in claim 12 wherein all of the candidate memory instructions are converted to base+displacement instructions before scheduling.
Claim 16
Dependent Claim 105 words
A compiler optimization algorithm for optimizing a low-level representation of a program for a target architecture that supports an auto-increment addressing mode, including the steps of: identifying candidate memory access instructions for auto-increment synthesis; transforming candidate memory access instructions into pseudo base+displacement memory access instructions; and converting the pseudo base+displacement memory access instructions into memory access instructions that auto-increment their base resister operands, wherein the pseudo base+displacement memory access instructions are converted into memory access instructions that post-increment their base register operands, further including the step of determining whether the same base register is used by multiple memory access instruction scheduled in the same cycle.
Claim 17
Dependent Claim 105 words
A compiler optimization algorithm for optimizing a low-level representation of a program for a target architecture that supports an auto-increment addressing mode, including the steps of: identifying candidate memory access instructions for auto-increment synthesis; transforming candidate memory access instructions into pseudo base+displacement memory access instructions; and converting the pseudo base+displacement memory access instructions into memory access instructions that auto-increment their base resister operands, wherein the pseudo base+displacement memory access instructions are converted into memory access instructions that post-increment their base register operands, further including the step of determining whether the same base register is used by multiple memory access instruction scheduled in the same cycle.
Claim 18
Dependent Claim 49 words
The method recited in claim 14 wherein if the same base register is not used by at least two memory access instructions scheduled in the same cycle, upstream memory access instructions are transformed to post-increment their base register operands on behalf of the memory access instructions in that cycle.
Claim 19
Dependent Claim 47 words
The method recited in claim 14 further including the step of determining whether upstream memory access instructions can post-increment their base registers on behalf of downstream memory access instructions when the same base register is not used by multiple memory access instructions scheduled in the same cycle.
Claim 20
Dependent Claim 61 words
The method recited in claim 16 further including the step of transforming an upstream memory access instruction into a memory access instruction that post-increments its base register operand on behalf of a downstream memory access instruction when it is determined that the upstream memory access instruction can be post-increment its base register operand on behalf of the downstream memory access instruction.
Claim 21
Dependent Claim 23 words
The method recited in claim 17 further including the step of converting the downstream memory access instruction to use the appropriate base register.
Claim 22
Dependent Claim 23 words
The method recited in claim 14 further including the step of determining whether base register cloning is more efficient than inserting spill code.
Claim 23
Dependent Claim 37 words
The method recited in claim 19 further including the step of inserting spill code on behalf of a memory access instruction when it is determined that inserting spill code is more efficient than cloning a base register.
Claim 24
Dependent Claim 22 words
The method recited in claim 20 further including the step of converting the memory access instruction to use the appropriate base register.
Claim 25
Dependent Claim 31 words
The method recited in claim 19 further including the step of cloning the base register when it is determined that cloning the base register is more efficient than inserting spill code.
Claim 26
Dependent Claim 22 words
The method recited in claim 22 further including the step of converting the memory access instruction to use the appropriate base register.

References Cited (Backward Citations)

US5167026A Cited
US5475856A Cited
US5699544A Cited
US5860130A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-11-21 2004-05-22 2004-11-21 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-11-21 2008-05-22 2008-11-21 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-11-21 2012-05-22 2012-11-21 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag