IP Library › Granted Patent US 9,128,701
Granted Patent B2
US 9,128,701 · App. 13/416,879 · Granted Sep 8, 2015

Generating constant for microinstructions from modified immediate field during instruction translation

Inventors: G. Glenn Henry (Austin, TX); Terry Parks (Austin, TX); Rodney E. Hooker (Austin, TX)
Assignee: VIA TECHNOLOGIES, INC.
G06F9/30167G06F9/3017G06F9/30072G06F9/30094G06F9/30112G06F9/30174G06F9/30189G06F9/30196G06F9/3806
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,128,701
App. No.
13/416,879
Granted
Sep 8, 2015
Kind
B2
Abstract

An ISA-defined instruction includes an immediate field having a first and second portions specifying first and second values, which instructs the microprocessor to perform an operation using a constant value as one of its source operands. The constant value is the first value rotated/shifted by a number of bits based on the second value. An instruction translator translates the instruction into one or more microinstructions. An execution pipeline executes the microinstructions generated by the instruction translator. The instruction translator, rather than the execution pipeline, generates the constant value for the execution pipeline as a source operand of at least one of the microinstructions for execution by the execution pipeline. Alternatively, if the immediate field value is not within a predetermined subset of values known by the instruction translator, the instruction translator generates, rather than the constant, a second microinstruction for execution by the execution pipeline to generate the constant.

Claims (60)

1. A microprocessor having an instruction set architecture that defines an instruction comprising an immediate field, wherein the immediate field has a first portion specifying a first value and a second portion specifying a second value, wherein the instruction instructs the microprocessor to perform an operation which uses a constant value as one of its source operands, wherein the constant value is the first value rotated/shifted by a number of bits based on the second value, the microprocessor comprising:

an instruction translator, that translates the instruction into at least an immediate ALU microinstruction, wherein the immediate ALU microinstruction is encoded in a distinct manner from the manner in which instructions defined by the instruction set architecture are encoded; and

an execution pipeline, that executes microinstructions generated by the instruction translator to generate a result defined by the instruction set architecture;

wherein the instruction translator, rather than the execution pipeline, generates the constant value from the first and second values for provision to the execution pipeline as a source operand to the immediate ALU microinstruction for execution by the execution pipeline.

2. The microprocessor of claim 1 , wherein the instruction translator translates the instruction into different microinstructions depending upon whether a value of the immediate field is in a predetermined subset of values.

3. The microprocessor of claim 1 , wherein the execution pipeline comprises:

a plurality of execution units, that execute the microinstructions to generate results; and

an issue unit, that issues to at least one of the execution units the constant value generated by the instruction translator as the source operand of the immediate ALU microinstruction for execution by the at least one of the execution units.

4. The microprocessor of claim 1 , wherein the execution pipeline comprises:

a plurality of execution units, that execute the microinstructions to generate results;

wherein the microprocessor further comprises:

a first one or more buses, that forward execution results of the microinstructions from the execution units back to the execution units as source operands of other microinstructions; and

a second bus, that provides the constant value generated by the instruction translator to the execution pipeline, wherein the second bus is distinct from the first one or more buses.

5. The microprocessor of claim 4 , further comprising:

registers, that receive the execution results of the microinstructions from the execution units, wherein the constant value generated by the instruction translator is not written to the registers by the microprocessor.

6. The microprocessor of claim 1 , wherein the constant value is the first value rotated/shifted by a number of bits that is twice the second value.

7. The microprocessor of claim 1 , wherein the microprocessor's instruction set architecture defines a plurality of instructions each comprising an immediate field, including data processing instructions of the Advanced RISC Machines (ARM) instruction set architecture (ISA) that specify a modified immediate constant.

8. The microprocessor of claim 7 , wherein the data processing instructions of the ARM ISA that specify a modified immediate constant include conditional ALU instructions that specify a modified immediate constant.

9. A method performed by a microprocessor having an instruction set architecture that defines an instruction comprising an immediate field, wherein the immediate field has a first portion specifying a first value and a second portion specifying a second value, wherein the instruction instructs the microprocessor to perform an operation which uses a constant value as one of its source operands, wherein the constant value is the first value rotated/shifted by a number of bits based on the second value, the method comprising:

translating the instruction into at least an immediate ALU microinstruction, wherein the immediate ALU microinstruction is encoded in a distinct manner from the manner in which instructions defined by the instruction set architecture are encoded, wherein said translating is performed by an instruction translator of the microprocessor; and

executing microinstructions generated by the instruction translator to generate a result defined by the instruction set architecture, wherein said executing is performed by an execution pipeline of the microprocessor;

generating, by the instruction translator rather than the execution pipeline, the constant value from the first and second values for provision to the execution pipeline as a source operand to the immediate ALU microinstruction for execution by the execution pipeline.

10. The method of claim 9 , wherein said translating comprises translating the instruction into different microinstructions depending upon whether a value of the immediate field is in a predetermined subset of values.

11. The method of claim 9 , wherein the constant value is the first value rotated/shifted by a number of bits that is twice the second value.

12. The method of claim 9 , wherein the microprocessor's instruction set architecture defines a plurality of instructions each comprising an immediate field, including data processing instructions of the Advanced RISC Machines (ARM) instruction set architecture (ISA) that specify a modified immediate constant.

13. The method of claim 12 , wherein the data processing instructions of the ARM ISA that specify a modified immediate constant include conditional ALU instructions that specify a modified immediate constant.

14. A microprocessor having an instruction set architecture that defines an instruction comprising an immediate field, wherein the immediate field has a first portion specifying a first value and a second portion specifying a second value, wherein the instruction instructs the microprocessor to perform an operation which uses a constant value as one of its source operands, wherein the constant value is the first value rotated/shifted by a number of bits based on the second value, the microprocessor comprising:

an instruction translator, that translates instructions into microinstructions; and

an execution pipeline, that executes the microinstructions generated by the instruction translator to generate a result defined by the instruction set architecture;

wherein, when a value of the immediate field is in a predetermined subset of values:

the instruction translator translates the instruction into at least an immediate ALU microinstruction;

the instruction translator, rather than the execution pipeline, generates the constant value from the first and second values; and

the execution pipeline executes the immediate ALU microinstruction using the constant value generated by the instruction translator as one of its source operands; and

wherein, when the value of the immediate field is not in the predetermined subset of values:

the instruction translator translates the instruction into at least first and second microinstructions;

the execution pipeline, rather than the instruction translator, generates the constant value by execution of the first microinstruction; and

the execution pipeline executes the second microinstruction by performance of the operation using the constant value generated by the execution of the first microinstruction as one of its source operands.

15. The microprocessor of claim 14 , wherein the execution pipeline comprises:

a register allocation table, that generates a dependency of the second microinstruction upon the constant value generated by the execution of the first microinstruction.

16. The microprocessor of claim 14 , wherein the microinstructions are defined by a microarchitecture of the microprocessor and are encoded in a distinct manner from the manner in which instructions defined by the instruction set architecture are encoded.

17. The microprocessor of claim 14 , wherein the first microinstruction is a shift/rotate microinstruction.

18. A method performed by a microprocessor having an instruction set architecture that defines an instruction comprising an immediate field, wherein the immediate field has a first portion specifying a first value and a second portion specifying a second value, wherein the instruction instructs the microprocessor to perform an operation which uses a constant value as one of its source operands, wherein the constant value is the first value rotated/shifted by a number of bits based on the second value, the microprocessor also having an instruction translator and an execution pipeline, the method comprising:

determining whether a value of the immediate field is in a predetermined subset of values, by the instruction translator;

when the value of the immediate field is in the predetermined subset of values:

translating the instruction into at least an immediate ALU microinstruction, by the instruction translator;

generating, by the instruction translator rather than the execution pipeline, the constant value from the first and second values; and

executing the immediate ALU microinstruction using the constant value generated by the instruction translator as one of its source operands, by the execution pipeline; and

wherein, when the value of the immediate field is not in the predetermined subset of values:

translating the instruction into at least first and second microinstructions, by the instruction translator;

generating, by the execution pipeline rather than the instruction translator, the constant value by execution of the first microinstruction; and

executing the second microinstruction by performance of the operation using the constant value generated by the execution of the first microinstruction as one of its source operands, by the execution pipeline.

19. The method of claim 18 , further comprising:

generating a dependency of the second microinstruction upon the constant value generated by the execution of the first microinstruction, wherein said generating a dependency is performed by a register allocation table of the microprocessor.

20. The method of claim 18 , wherein all said microinstructions are defined by a microarchitecture of the microprocessor and are encoded in a distinct manner from the manner in which instructions defined by the instruction set architecture are encoded.

21. A computer program product encoded in at least one computer readable storage medium for use with a computing device, the computer program product comprising:

computer readable program code embodied in said medium, for specifying a microprocessor having an instruction set architecture that defines an instruction comprising an immediate field, wherein the immediate field has a first portion specifying a first value and a second portion specifying a second value, wherein the instruction instructs the microprocessor to perform an operation which uses a constant value as one of its source operands, wherein the constant value is the first value rotated/shifted by a number of bits based on the second value, the computer readable program code comprising:

first program code for specifying an instruction translator, that translates the instruction into at least an immediate ALU microinstruction, wherein the immediate ALU microinstruction is encoded in a distinct manner from the manner in which instructions defined by the instruction set architecture are encoded; and

second program code for specifying an execution pipeline, that executes microinstructions generated by the instruction translator to generate a result defined by the instruction set architecture;

wherein the instruction translator, rather than the execution pipeline, generates the constant value from the first and second values for provision to the execution pipeline as a source operand to the immediate ALU microinstruction for execution by the execution pipeline.

22. The computer program product of claim 21 , wherein the at least one computer readable storage medium is selected from the set of a disk, tape, or other magnetic, optical, or electronic storage medium and a network, wire line, wireless or other communications medium.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2012
From: HENRY, G. GLENN; PARKS, TERRY; HOOKER, RODNEY E.
To: VIA TECHNOLOGIES, INC.
Reel/Frame 028099/0220 →
Continuity (48)
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13413258 · Mar 6, 2012
Continuation In Part 13412888 · Mar 6, 2012
Continuation In Part 13412904 · Mar 6, 2012
Continuation In Part 13412914 · Mar 6, 2012
Continuation In Part 13413346 · Mar 6, 2012
Continuation In Part 13413300 · Mar 6, 2012
Continuation In Part 13413314 · Mar 6, 2012
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13244310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Feb 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Continuation In Part 13224310 · Sep 1, 2011
Continuation In Part 13333520 · Dec 21, 2011
Continuation In Part 13333572 · Dec 21, 2011
Continuation In Part 13333631 · Dec 21, 2011
Provisional Application 61473062 · Apr 7, 2011
Provisional Application 61473067 · Apr 7, 2011
Provisional Application 61473069 · Apr 7, 2011
Provisional Application 61537473 · Sep 21, 2011
Provisional Application 61541307 · Sep 30, 2011
Provisional Application 61547449 · Oct 14, 2011
Provisional Application 61555023 · Nov 3, 2011
Provisional Application 61604561 · Feb 29, 2012
Related Publication 20120260068A1 · Oct 11, 2012