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

Method and apparatus for addressing extended registers on a processor in a computer system

Assignee: Oracle America Inc
•
Filing: 1996-06-14
•
Granted: 1999-01-05
•
Expires: 2016-06-14
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract In its various embodiments, the present invention provides a method and apparatus for creating a target executable program from the source code of a target computer program for execution on a target processor. The target processor provided by the method and apparatus has a first set of registers and a second set of registers. Generally, the target processor is capable of executing a first set of instructions which only address the first set of registers. The method and apparatus provides a second set of instruction for the target processor which include a subset of frequently executed instructions within the first set of instructions. These second set of instructions are novel because they able to address both the first set of registers and the second set of registers. A compiler is provided and used for compiling the source code into a number of target executable instructions and allocating the registers on the target processor. The registers within the second set of registers are only allocated to those target executable instructions in the second set of instructions. According to principles of the present invention, the more frequently executed instructions are able to address a register in the second set of registers located on the target processor.

Inventors

  • 👤 Daniel D. Grove

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-31 13:00
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30181; G06F9/30185; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/441; G06F8/447; G06F9/30098; G06F9/3012; G06F9/30138; G06F9/30145

Claims Analysis

Total Claims: 20
Claim 1
Independent Claim 179 words
A computer implemented method for creating a target executable program from the source code of a target computer program for execution on a target processor, said method comprising the steps of: providing a target processor having a first set of registers and a second set of registers; providing a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; providing a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions wherein said second set of instructions are able to address said first set of registers and said second set of registers; and compiling said source code into a plurality of target executable instructions wherein the registers within said second set of registers are only allocated to those target executable instructions in said second set of instructions, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 2
Dependent Claim 179 words
A computer implemented method for creating a target executable program from the source code of a target computer program for execution on a target processor, said method comprising the steps of: providing a target processor having a first set of registers and a second set of registers; providing a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; providing a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions wherein said second set of instructions are able to address said first set of registers and said second set of registers; and compiling said source code into a plurality of target executable instructions wherein the registers within said second set of registers are only allocated to those target executable instructions in said second set of instructions, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 3
Dependent Claim 105 words
The method of claim 1 wherein said step of providing said second set of instructions further comprises the steps of: executing instructions in at least one computer program on said target processor; recording an execution frequency for each instruction in said first set of instructions; determining an execution frequency threshold based upon said execution frequencies recorded in said recording step; and grouping instructions from said first set of instructions with an execution frequency equal to or exceeding said execution frequency threshold into a subset set of frequently executed instructions, said subset of frequently executed instructions capable of addressing registers in said second set of registers.
Claim 4
Dependent Claim 43 words
The method of claim 2 wherein said step of grouping further comprises the step of using one or more unused bits in the first set of instructions to distinguish instructions in said first set of instructions from instructions in said subset of instructions.
Claim 5
Dependent Claim 149 words
The method of claim 1 wherein said step of compiling further comprises the steps of: generating a plurality of intermediate instructions from said source code of said target computer program; assigning at least one virtual register to at least one intermediate instruction within said plurality of intermediate instructions, wherein a virtual register may be shared by a plurality of intermediate instructions; marking a virtual register as poisoned if said virtual register is assigned to at least one intermediate instruction which represents an instruction in said first set of instructions; allocating physical registers to each instruction assigned in said assigning step by performing the following steps: if a virtual register is marked as poisoned then allocating a register in said first set of registers to said instruction; and if a virtual register is not marked as poisoned then allocating a register in said second set of register to said instruction.
Claim 6
Independent Claim 171 words
A method of modifying an instruction set of a target processor, said method comprising the steps of: providing a target processor having a first set of registers and a second set of registers; providing a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; executing instructions in at least one computer program on said target processor; recording an execution frequency for each instruction in said first set of instructions executed in said step of executing; determining an execution frequency threshold based upon said execution frequencies recorded in said recording step; and grouping instructions from said first set of instructions with an execution frequency equal to or exceeding said execution frequency threshold into said subset set of frequently executed instructions, said subset of frequently executed instructions capable of addressing registers in said second set of registers, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 7
Independent Claim 171 words
A method of modifying an instruction set of a target processor, said method comprising the steps of: providing a target processor having a first set of registers and a second set of registers; providing a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; executing instructions in at least one computer program on said target processor; recording an execution frequency for each instruction in said first set of instructions executed in said step of executing; determining an execution frequency threshold based upon said execution frequencies recorded in said recording step; and grouping instructions from said first set of instructions with an execution frequency equal to or exceeding said execution frequency threshold into said subset set of frequently executed instructions, said subset of frequently executed instructions capable of addressing registers in said second set of registers, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 8
Dependent Claim 17 words
The method of claim 5 wherein said at least one computer program in said executing step SPECint92.
Claim 9
Dependent Claim 17 words
The method of claim 5 wherein said at least one computer program in said executing step SPECint95.
Claim 10
Dependent Claim 33 words
The method of claim 5 wherein said execution frequency threshold in said determining step is selected in a manner which maximizes the number of instructions capable of addressing said additional set of registers.
Claim 11
Independent Claim 260 words
A method of compiling the source code of a target computer program into a target executable program which optimizes the use of registers on a target processor, said method further comprising the steps of: providing a target processor having a first set of registers and a second set of registers; providing a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; providing a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions wherein said second set of instructions are able to address said first set of registers and said second set of registers; generating a plurality of intermediate instructions from said source code of said target computer program; assigning at least one virtual registers to at least one intermediate instruction within said plurality of intermediate instructions, wherein a virtual register may be shared by a plurality of intermediate instructions; marking a virtual register as poisoned if said virtual register is assigned to at least one intermediate instruction which represents an instruction in said first set of instructions; allocating physical registers to each instruction assigned in said assigning step by performing the following steps: if a virtual register is marked as poisoned then allocating a register in said first set of registers to said instruction; and if a virtual register is not marked as poisoned then allocating a register in said second set of register to said instruction.
Claim 12
Independent Claim 260 words
A method of compiling the source code of a target computer program into a target executable program which optimizes the use of registers on a target processor, said method further comprising the steps of: providing a target processor having a first set of registers and a second set of registers; providing a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; providing a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions wherein said second set of instructions are able to address said first set of registers and said second set of registers; generating a plurality of intermediate instructions from said source code of said target computer program; assigning at least one virtual registers to at least one intermediate instruction within said plurality of intermediate instructions, wherein a virtual register may be shared by a plurality of intermediate instructions; marking a virtual register as poisoned if said virtual register is assigned to at least one intermediate instruction which represents an instruction in said first set of instructions; allocating physical registers to each instruction assigned in said assigning step by performing the following steps: if a virtual register is marked as poisoned then allocating a register in said first set of registers to said instruction; and if a virtual register is not marked as poisoned then allocating a register in said second set of register to said instruction.
Claim 13
Independent Claim 193 words
An apparatus for creating a target executable program from the source code of a target computer program for execution on a target processor comprising: a first program mechanism which provides a target processor having a first set of registers and a second set of registers; a second program mechanism which provides a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; a third program mechanism which provides a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions further wherein said second set of instructions are able to address said first set of registers and said second set of registers; and a fourth program mechanism which compiles said source code into a plurality of target executable instructions wherein the registers within said second set of registers are only allocated to those target executable instructions in said second set of instructions, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 14
Independent Claim 193 words
An apparatus for creating a target executable program from the source code of a target computer program for execution on a target processor comprising: a first program mechanism which provides a target processor having a first set of registers and a second set of registers; a second program mechanism which provides a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; a third program mechanism which provides a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions further wherein said second set of instructions are able to address said first set of registers and said second set of registers; and a fourth program mechanism which compiles said source code into a plurality of target executable instructions wherein the registers within said second set of registers are only allocated to those target executable instructions in said second set of instructions, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 15
Dependent Claim 124 words
The apparatus of claim 10 wherein said third program mechanism which provides said second set of instructions further comprises: a first program mechanism which executes instructions in at least one computer program on said target processor; a second program mechanism which records an execution frequency for each instruction in said first set of instructions; a third program mechanism which determines an execution frequency threshold based upon said execution frequencies recorded in said recording step; and a fourth program mechanism which groups instructions from said first set of instructions with an execution frequency equal to or exceeding said execution frequency threshold into said subset set of frequently executed instructions, said subset of frequently executed instructions capable of addressing registers in said second set of registers.
Claim 16
Dependent Claim 159 words
The apparatus of claim 10 wherein said fourth program mechanism which compiles further comprises: a first program mechanism which generates a plurality of intermediate instructions from said source code of said target computer program; a second program mechanism which assigns at least one virtual register to at least one intermediate instruction within said plurality of intermediate instructions, wherein a virtual register may be shared by a plurality of intermediate instructions; a third program mechanism which marks a virtual register as poisoned if said virtual register is assigned to at least one intermediate instruction which represents an instruction in said first set of instructions; a fourth program mechanism which allocates a register in said first set of registers to an instruction if said instruction has a virtual register marked as poisoned; and a fifth program mechanism which allocates a register in said second set of registers to an instruction if said instruction uses a virtual register not marked as poisoned.
Claim 17
Dependent Claim 209 words
A computer program product comprising: a computer usable medium having computer readable program code tangibly embedded in said computer program product, the program code configured to cause the computer to create a target executable program from the source code of a target computer program for execution on a target processor, said code comprising: code that provides a target processor having a first set of registers and a second set of registers; code that provides a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; code that provides a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions wherein said second set of instructions are able to address said first set of registers and said second set of registers; and code that compiles said source code into a plurality of target executable instructions wherein the registers within said second set of registers are only allocated to those target executable instructions in said second set of instructions, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 18
Dependent Claim 209 words
A computer program product comprising: a computer usable medium having computer readable program code tangibly embedded in said computer program product, the program code configured to cause the computer to create a target executable program from the source code of a target computer program for execution on a target processor, said code comprising: code that provides a target processor having a first set of registers and a second set of registers; code that provides a first set of instructions for said target processor, wherein said first set of instructions are only able to address said first set of registers; code that provides a second set of instructions for said target processor, wherein said second set of instructions comprises a subset of frequently executed instructions within said first set of instructions wherein said second set of instructions are able to address said first set of registers and said second set of registers; and code that compiles said source code into a plurality of target executable instructions wherein the registers within said second set of registers are only allocated to those target executable instructions in said second set of instructions, whereby frequently executed instructions are able to address a register in said second set of registers located on said target processor.
Claim 19
Dependent Claim 136 words
The computer program product of claim 13 wherein said code that provides said second set of instructions further comprises: code that executes instructions in at least one computer program on said target processor; code that records an execution frequency for each instruction in said first set of instructions; code that determines an execution frequency threshold based upon said execution frequencies recorded in said recording step; code that compares said execution frequencies for each instruction from said step of recording with said execution frequency threshold from said step of determining; and code that groups instructions from said first set of instructions with an execution frequency equal to or exceeding said execution frequency threshold into said subset set of frequently executed instructions, said subset of frequently executed instructions capable of addressing registers in said second set of registers.
Claim 20
Dependent Claim 144 words
The computer program product of claim 13 wherein said code that compiles further comprises: code that generates a plurality of intermediate instructions from said source code of said target computer program; code that assigns at least one virtual register to at least one intermediate instruction within said plurality of intermediate instructions, wherein a virtual register may be shared by a plurality of intermediate instructions; code that marks a virtual register as poisoned if said virtual register is assigned to at least one intermediate instruction which represents an instruction in said first set of instructions; code that allocates a register in said first set of registers to an instruction if said instruction uses a virtual register marked as poisoned; and code that allocates a register in said second set of registers to an instruction if said instruction uses a virtual register not marked as poisoned.

References Cited (Backward Citations)

EP0051131A2 Cited
US5428793A Cited
US5613121A Cited
US5560013A Cited
US5724565A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-01-04 2002-07-06 2003-01-05 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-01-04 2006-07-06 2007-01-05 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-01-04 2010-07-06 2011-01-05 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag