IP Library › Granted Patent US 9,311,084
Granted Patent B2
US 9,311,084 · App. 13/955,847 · Granted Apr 12, 2016

RDA checkpoint optimization

Inventors: Shyam Sundar (Sunnyvale, CA); Conrado Blasco-Allue (Sunnyvale, CA)
Assignee: Apple Inc.
G06F9/30032G06F9/384G06F9/3838G06F9/3863
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,311,084
App. No.
13/955,847
Granted
Apr 12, 2016
Kind
B2
Abstract

A system and method for efficiently performing microarchitectural checkpointing. A register rename unit within a processor determines whether a physical register number qualifies to have duplicate mappings. Information for maintenance of the duplicate mappings is stored in a register duplicate array (RDA). To reduce the penalty for misspeculation or exception recovery, control logic in the processor supports multiple checkpoints. The RDA is one of multiple data structures to have checkpoint copies of state. The RDA utilizes a content addressable memory (CAM) to store physical register numbers. The duplicate counts for both the current state and the checkpoint copies for a given physical register number are updated when instructions utilizing the given physical register number are retired. To reduce on-die real estate and power consumption, a single CAM entry is stores the physical register number and the other fields are stored in separate storage elements.

Claims (50)

1. A processor comprising:

a decoder configured to decode fetched instructions;

a register rename unit; and

wherein the register rename unit is configured to:

receive decoded instructions;

determine to duplicate renaming assignments for a rename register identifier (ID) corresponding to a decoded move instruction;

allocate a plurality of entries corresponding to the given rename register ID;

maintain a duplicate count in at least a first entry of the plurality of entries for the given rename register ID;

wherein the given rename register ID is not stored in the plurality of entries; and

wherein when a first checkpoint event has occurred:

allocate a given entry of the plurality of entries different from the first entry; and

update the given entry with information stored in the first entry.

2. The processor as recited in claim 1 , wherein a plurality of rename register IDs are stored in a content addressable memory (CAM) and the corresponding plurality of entries are stored in a data structure different from the CAM.

3. The processor as recited in claim 1 , wherein each of the plurality of entries is configured to store at least a valid field and a respective duplicate count for the given rename register ID.

4. The processor as recited in claim 3 , wherein the register rename unit is further configured to decrement a respective duplicate count in each of the plurality of entries each time an instruction using the given rename register ID commits.

5. The processor as recited in claim 3 , wherein the register rename unit is further configured to increment a respective duplicate count in only said first entry each time any given architectural register currently not mapped to the given rename register ID is mapped to the given rename register ID.

6. The processor as recited in claim 3 , wherein the register rename unit is further configured to deallocate the given entry of the plurality of entries different from the first entry when a given instruction retires, wherein the given instruction is younger than a second checkpoint event subsequent to the first checkpoint event corresponding to the given entry.

7. The processor as recited in claim 3 , wherein when both source and destination operands of a decoded move instruction corresponding to the given rename register ID are registers, the register rename unit is further configured to:

assign the given rename register ID associated with a source operand of the move instruction to a destination operand of the move instruction; and

indicate the move instruction has been completed to prevent the move instruction from proceeding in the pipeline.

8. The processor as recited in claim 7 , wherein the register rename unit is further configured to:

detect the move instruction is ready to commit; and

prevent the given rename register ID from returning to a free list when the respective duplicate count in the first entry is greater than one.

9. The processor as recited in claim 7 , wherein when the respective duplicate count in the first entry is one, the register rename unit is further configured to deallocate the given rename register ID from the CAM.

10. A method comprising:

decoding fetched instructions;

determining to duplicate renaming assignments for a rename register identifier (ID) corresponding to a decoded move instruction;

allocating a plurality of entries corresponding to the given rename register ID; and

maintaining a duplicate count in at least a first entry of the plurality of entries for the given rename register ID;

wherein the given rename register ID is not stored in the plurality of entries; and

when a first checkpoint event has occurred:

allocating a given entry of the plurality of entries different from the first entry; and

updating the given entry with information stored in the first entry.

11. The method as recited in claim 10 , further comprising storing a plurality of rename register IDs in a content addressable memory (CAM) and the corresponding plurality of entries in a data structure different from the CAM.

12. The method as recited in claim 10 , further comprising:

decrementing a respective duplicate count in each of the plurality of entries each time an instruction using the given rename register ID commits; and

incrementing a respective duplicate count in only said first entry each time any given architectural register currently not mapped to the given rename register ID is mapped to the given rename register ID.

13. A register rename unit comprising:

a first interface configured to receive decoded instructions;

a second interface to a dispatch unit configured to dispatch instructions to a scheduler; and

control logic; and

wherein the control logic is configured to:

determine to duplicate renaming assignments for a rename register identifier (ID) corresponding to a decoded move instruction;

allocate a plurality of entries corresponding to the given rename register ID; and

maintain a duplicate count in at least a first entry of the plurality of entries for the given rename register ID;

wherein the given rename register ID is not stored in the plurality of entries; and

when a first checkpoint event has occurred:

allocate a given entry of the plurality of entries different from the first entry; and

update the given entry with information stored in the first entry.

14. The register rename unit as recited in claim 13 , wherein a plurality of rename register IDs are stored in a content addressable memory (CAM) and the corresponding plurality of entries are stored in a data structure different from the CAM.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2013
From: SUNDAR, SHYAM; BLASCO-ALLUE, CONRADO
To: APPLE INC.
Reel/Frame 030922/0764 →
Continuity (1)
Related Publication 20150039860A1 · Feb 5, 2015