IP Library Granted Patent US 9,430,243
Granted Patent B2
US 9,430,243 · App. 13/460,268 · Granted Aug 30, 2016

Optimizing register initialization operations

Inventors: James B. Keller (Redwood City, CA); John H. Mylius (Gilroy, CA); Conrado Blasco-Allue (Sunnyvale, CA); Gerard R. Williams, III (Los Altos, CA)
Assignee: Apple Inc.
G06F9/384G06F9/3832G06F9/3857
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,430,243
App. No.
13/460,268
Granted
Aug 30, 2016
Kind
B2
Abstract

A system and method for efficiently reducing the latency of initializing registers. A register rename unit within a processor determines whether prior to an execution pipeline stage it is known a decoded given instruction writes a particular numerical value in a destination operand. An example is a move immediate instruction that writes a value of 0 in its destination operand. Other examples may also qualify. If the determination is made, a given physical register identifier is assigned to the destination operand, wherein the given physical register identifier is associated with the particular numerical value, but it is not associated with an actual physical register in a physical register file. The given instruction is marked to prevent it from proceeding to an execution pipeline stage. When the given physical register identifier is used to read the physical register file, no actual physical register is accessed.

Claims (44)

1. A processor comprising:

a decoder configured to decode fetched instructions;

read bypass logic;

a physical register file including a plurality of physical registers, each identified by an associated rename register identifier; and

a register rename unit configured to receive decoded instructions;

wherein in response to each detection of an instruction that is configured to write a given numerical value to a destination identified by a destination operand of the instruction, the register rename unit is configured to:

assign a given rename register identifier to the destination operand without considering numerical values stored in the physical register file as a result of previously executed instructions, wherein the given rename register identifier indicates the given numerical value; and

prevent the instruction from proceeding for further execution;

wherein in response to a read corresponding to the given rename register identifier, the processor is configured to:

convey the given rename register identifier to the read bypass logic of the physical register file;

if the first rename register identifier does not correspond to the given rename register identifier, perform an access of one of the plurality of physical registers; and

if the first rename register identifier corresponds to the given rename register identifier, prevent an access of the plurality of physical registers and convey the given numerical value from the read bypass logic.

2. The processor as recited in claim 1 , wherein the given rename register identifier indicates the given numerical value each time it is used by the processor.

3. The processor as recited in claim 1 , wherein in response to said detecting, an indication is stored which indicates instruction completion.

4. The processor as recited in claim 1 , wherein the processor comprises:

a memory array corresponding to the plurality of physical registers; and

wherein if the first rename register identifier corresponds to the given rename register identifier, the processor is configured to prevent circuitry of said memory array from being used for an access associated with the first rename register identifier.

5. The processor as recited in claim 1 , wherein the processor further comprises a free list comprising a plurality of rename register identifiers available for renaming operands in the decoded instructions, wherein in response to each assignment of the given rename register identifier to a destination operand, no rename register identifiers are removed from the free list.

6. The processor as recited in claim 1 , wherein the register rename unit is configured to assign the given rename register for use by multiple instructions concurrently.

7. The processor as recited in claim 1 , wherein detecting said instruction is configured to write the numerical value comprises detecting (i) an opcode for a move instruction and (ii) an immediate source operand of the move instruction with a same value as the numerical value.

8. The processor as recited in claim 5 , wherein in response to a commit of each instruction with a destination operand assigned to the given rename register identifier, no rename register identifiers are added to the free list.

9. A method comprising:

decoding fetched instructions; and

in response to each detection of an instruction that is configured to write a numerical value to a location identified by a destination operand:

assigning a given rename register identifier to the destination operand without considering numerical values stored in a physical register file as a result of previously executed instructions, wherein the given rename register identifier indicates the numerical value; and

preventing the instruction from proceeding for further execution, and

in response to a read corresponding to the given rename register identifier:

conveying the given rename register identifier to read bypass logic of the physical register file;

if the first rename register identifier does not correspond to the given rename register identifier, performing an access of one of the plurality of physical registers; and

if the first rename register identifier corresponds to the given rename register identifier, preventing an access of the plurality of physical registers and conveying the given numerical value from the read bypass logic.

10. The method as recited in claim 9 , wherein the given rename register identifier indicates the numerical value each time it is used.

11. The method as recited in claim 9 , wherein said detecting comprises detecting (i) an opcode for a move instruction and (ii) an immediate source operand of the move instruction has a same value as the numerical value.

12. The method as recited in claim 9 , wherein detecting said instruction is configured to write the numerical value in the destination operand comprises detecting (i) each of the source operand identifiers is a same value and (ii) an opcode corresponds to a predetermined operation.

13. An apparatus comprising:

control logic; and

a physical register file including a plurality of physical registers, each identified by an associated rename register identifier;

wherein in response to each detection of an instruction that is configured to write a numerical value in a destination operand, the control logic is configured to:

assign a given rename register identifier to the destination operand without considering numerical values stored in the physical register file as a result of previously executed instructions, wherein the given rename register identifier is mapped to the numerical value; and

prevent the instruction from proceeding for further execution, and

wherein in response to a read corresponding to the given rename register identifier, the apparatus is configured to:

convey the given rename register identifier to read bypass logic of the physical register file;

if the first rename register identifier does not correspond to the given rename register identifier, perform an access of one of the plurality of physical registers; and

if the first rename register identifier corresponds to the given rename register identifier, prevent an access of the plurality of physical registers and convey the given numerical value from the read bypass logic.

14. The apparatus as recited in claim 13 , wherein the given rename register identifier indicates the numerical value each time it is used.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE FOR ASSIGNOR CONRADO BLASCO-ALLUE PREVIOUSLY RECORDED ON REEL 028130 FRAME 0866. ASSIGNOR(S) HEREBY CONFIRMS THE EXECUTION DATE FOR ASSIGNOR CONRADO BLASCO-ALLUE IS APRIL 24, 2012. Recorded Nov 7, 2013
From: KELLER, JAMES B.; MYLIUS, JOHN H.; BLASCO-ALLUE, CONRADO; WILLIAMS, GERARD R., III
To: APPLE INC.
Reel/Frame 031598/0715 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2012
From: KELLER, JAMES B.; MYLIUS, JOHN H.; BLASCO-ALLUE, CONRADO; WILLIAMS, GERARD R., III
To: APPLE INC.
Reel/Frame 028130/0866 →
Continuity (1)
Related Publication 20130290680A1 · Oct 31, 2013