IP Library Granted Patent US 9,170,818
Granted Patent B2
US 9,170,818 · App. 13/094,110 · Granted Oct 27, 2015

Register renaming scheme with checkpoint repair in a processing device

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,170,818
App. No.
13/094,110
Granted
Oct 27, 2015
Kind
B2
Abstract

A data processing device maintains register map information that maps accesses to architectural registers, as identified by instructions being executed, to physical registers of the data processing device. In response to determining that an instruction, such as a speculatively-executing conditional branch, indicates a checkpoint, the data processing device stores the register map information for subsequent retrieval depending on the resolution of the instruction. In addition, in response to the checkpoint indication the data processing device generates new register map information such that accesses to the architectural registers are mapped to different physical registers. The data processing device maintains a list, referred to as a free register list, of physical registers available to be mapped to an architectural registers.

Claims (87)

1. A processing device comprising:

a plurality of physical registers;

a register map comprising a first map entry that is associated with a first architectural register, the first map entry being adapted to store a first identifier of a first physical register of the plurality of physical registers such that a program instruction that accesses the first architectural register results in an access of the first physical register;

a first free register list comprising a first free register entry adapted to store a second identifier for a second physical register of the plurality of physical registers, wherein the second physical register is not mapped to the first architectural register, and wherein the first free register entry includes a valid entry indicator;

a first checkpoint map comprising a first checkpoint entry that is associated with the first map entry, wherein the first checkpoint entry is adapted to store the first identifier in response to a first program instruction;

a scoreboard comprising a first scoreboard entry that is associated with the first physical register, wherein the first scoreboard entry includes a read counter that indicates a number of outstanding reads to the first physical register, a checkpoint indicator that indicates when the first identifier is stored in the first checkpoint entry, and a free tag indicator to store a location identifier for locating an identifier of a physical register in the first free register list;

checkpoint logic adapted to:

determine that the first program instruction results in a first change in execution path of program instructions within the processing device; and

in response to determining that the first program instruction specifies the first change in execution path, to:

store the first identifier in the first checkpoint entry;

set the checkpoint indicator;

store the first identifier at a first location in the first register list in response to storing the first identifier in the checkpoint map;

clear the valid entry indicator at the first location in response to storing the first identifier in the first free register list;

store a first location identifier associated with the first location in the free tag indicator; and

when the read counter indicates that the number of outstanding reads to the first physical register is equal to zero:

determine if the checkpoint indicator is set;

access the free tag indicator to determine the first location; and

set the valid entry indicator at the first location; and

a renaming logic adapted to:

determine that a second program instruction that specifies a read operation to the first architectural register is programmed to be executed before a third program instruction that specifies a write operation to the first architectural register, and that the second program instruction is pending execution by an out-of-order execution engine of the processing device after the third program instruction is executed by the execution engine; and

in response to determining that the second program instruction will be executed after the third program instruction store the second identifier in the first map entry such that a program instruction that accesses the first architectural register is mapped to the second physical register.

2. The processing device of claim 1 , further comprising:

a second checkpoint map comprising a second checkpoint entry that is associated with the first map entry, wherein the second checkpoint entry stores the first identifier in response to a second program instruction;

wherein the checkpoint logic is further adapted to:

determine that the second program instruction specifies a second change in execution path of instructions within the processing device; and

store the first identifier in the second checkpoint entry in response to determining that a second program instruction specifies the second change in execution path.

3. The processing device of claim 1 , wherein:

the first free register list is a stack, and the second identifier is initially stored on a top of the stack;

the second and third program instructions are programmed to be executed after the first program instruction;

the checkpoint logic is further adapted to:

store the first identifier in the first free register list below a first bottom of stack pointer for the first free register list;

move a bottom-of-first-checkpoint for the first free register list to below the location of the first identifier; and

enter a location identifier for the location of the first identifier in the first free register into the free tag indicator.

4. The processing device of claim 3 , wherein the checkpoint logic is further adapted to:

determine that a plurality of instructions that are associated with the first change in execution path have been executed; and

move the first bottom of stack pointer to below the location of the first identifier in response to determining that the plurality of instructions have been executed.

5. The processing device of claim 1 , further comprising:

a second free register list adapted to store a third identifier for a third physical register of the plurality of physical registers, wherein the third physical register is not mapped to the first architectural register;

wherein the processing device is adapted to process a first thread and a second thread;

the first free register list and the second free register list are stacks; and

the checkpoint logic is further adapted to:

store a fourth identifier associated with the first thread in the first free register list below a first bottom of stack pointer; and

store a fifth identifier associated with the second thread in the second free register list below a second bottom of stack for the second free register list.

6. The processing device of claim 1 , further comprising:

a second architectural register associated with the instruction set architecture;

wherein:

the register map further comprises a second map entry that is associated with the second architectural register, the second map entry being adapted to store a third identifier of a third physical register of the plurality of physical registers such that a program instruction call to the second architectural register is mapped to the third physical register;

the first checkpoint map further comprises a second checkpoint entry that is associated with the second map entry, the second checkpoint entry being adapted to store the third identifier;

the scoreboard further comprises a second scoreboard entry that is associated with the third physical register.

7. A processing device comprising:

a first physical register identified by a first physical register identifier;

a register map including a first register storage location that is associated with a first architectural register, the first register storage location being adapted to store the first physical register identifier such that a program instruction that accesses the first architectural register results in an access of the first physical register;

a first checkpoint map comprising a first checkpoint storage location that is associated with the first register storage location, the first checkpoint storage location being adapted to store the first physical register identifier in response to a first program instruction;

a first free register list including a first free register storage location having a first free register identifier field and a first valid entry field;

a scoreboard including a first scoreboard storage location associated with the first physical register, the first scoreboard storage location having a first read counter field that indicates a number of outstanding reads to the first physical register, a first checkpoint field that indicates when the first physical register identifier is stored in the first checkpoint storage location, and a free tag field that indicates a location in the first free register list; and

checkpoint logic adapted to:

store the first physical register identifier in the first checkpoint storage location in response to determining that the first program instruction specifies a change in an execution path of instructions; and

in response to storing the first physical register identifier in the first free register identifier field:

set the checkpoint field;

store the first physical register identifier in the first free register identifier field;

clear the first valid entry field;

store a first free register storage location indicator associated with the first free register storage location in the free tag field; and

when the first read counter indicates that the number of outstanding reads to the first physical register is equal to zero, to:

determine if the checkpoint field is set;

access the free tag field to determine the first free register storage location indicator; and

set the first valid entry field.

8. The processing device of claim 7 , wherein the checkpoint logic is further adapted to:

increment the first read counter field in response to receiving, by the processing device, a second program instruction, wherein the second program instruction includes a read addressed to the first physical register.

9. The processing device of claim 8 , wherein the checkpoint logic is further adapted to:

decrement the first read counter field in response to executing, by the processing device, the second program instruction.

10. The processing device of claim 7 , wherein the first free register storage location indicator comprises a depth within the first free list that the first physical register identifier is located.

11. A processing device comprising:

a physical register to store information to be accessed by the processing device, wherein the physical register is identified by a physical register identifier;

a scoreboard comprising a scoreboard entry associated with the physical register, the scoreboard entry having a read counter field adapted to store a read count that indicates a number of outstanding read accesses to the physical register, a checkpoint indicator that indicates when the physical register identifier is stored in a checkpoint, and a free tag indicator;

a free register list comprising a free register entry having a free register location field and a valid entry indicator, wherein the free tag indicator stores a location identifier for locating a physical register identifier in the free register list; and

a checkpoint map comprising a checkpoint entry;

checkpoint logic adapted:

to store the physical register identifier in the checkpoint entry in response to determining that an instruction received by the processing device specifies a change in an execution path of instructions; and

in response to storing the physical register identifier in the checkpoint entry:

to set the checkpoint indicator;

to clear the valid entry indicator;

to store the physical register identifier in the free register location field;

to enter a location identifier for the free register entry into the free tag indicator; and

when the read count indicates that the number of outstanding accesses to the physical register is equal to zero:

to determine if the checkpoint indicator is set;

to access the free tag indicator to determine location identifier; and

set the valid entry indicator at the free register entry.

Assignments (31)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0285 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0387 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0334 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0477 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0075 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027621/0928 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2011
From: TRAN, THANG M.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 026182/0739 →