IP Library Granted Patent US 9,135,014
Granted Patent B2
US 9,135,014 · App. 13/397,452 · Granted Sep 15, 2015

Data processing system with latency tolerance execution

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,135,014
App. No.
13/397,452
Granted
Sep 15, 2015
Kind
B2
Abstract

A data processing system comprises a processor unit that includes an instruction decode/issue unit including a re-order buffer having entries that include an execution queue tag that indicates an execution queue location of an instruction to which a re-order buffer entry is assigned, a result valid indicator to indicate that a corresponding instruction has executed with a status bit valid result, and a forward indicator to indicate that the status bit can be forwarded to an execution queue of an instruction pointed to that is waiting to receive the status bit.

Claims (128)

1. A data processing system comprising:

an instruction decode/issue unit including a re-order buffer having entries;

a plurality of execution queues configured to store instructions received from the instruction decode/issue unit and waiting to be executed; and

a plurality of execution units coupled to the plurality of execution queues, wherein each execution unit is configured to receive instructions from the plurality of execution queues, wherein each entry in the re-order buffer is configured to store:

an execution queue tag that indicates an execution queue location of an instruction to which a re-order buffer entry is assigned;

a result valid indicator to indicate that a corresponding instruction has executed with a status bit valid result;

a forward indicator to indicate that a status bit can be forwarded to an execution queue of an instruction that is waiting to receive the status bit;

the status bit;

a link indicator to indicate a second instruction will use the status bit,

wherein the re-order buffer is configured to:

receive a re-order buffer tag from an executed instruction;

set the result valid indicator of the re-order buffer entry corresponding to the re-order buffer tag;

if the forward indicator is set in the re-order buffer entry corresponding to the re-order buffer tag,

send the execution queue tag to the plurality of execution queues to clear a status pending indicator in the corresponding execution queue location for a pending instruction, and

forward the status bit from the executed instruction to the pending instruction with the corresponding execution queue tag,

when the link indicator is set,

send the execution queue tag to the plurality of execution queues from a next entry in the re-order buffer to clear the status pending indicator in a corresponding execution queue location for the second pending instruction,

forward the status bit from the executed instruction to a second pending instruction with a corresponding second execution queue tag,

write the status bit into the next entry in the re-order buffer, and

set the result valid indicator of the next entry in the re-order buffer.

2. The system of claim 1 wherein:

the instruction decode/issue unit is configured to receive an instruction,

decode the instruction to determine if the instruction will update the status bit, and

dispatch the instruction to an execution queue, and

the re-order buffer is configured to, if the instruction will update the status bit, assign one of the entries in the re-order buffer to the instruction and increment a write pointer for the re-order buffer entries.

3. The system of claim 1 wherein:

the instruction decode/issue unit is configured receive an instruction, and

decode the instruction to determine if the instruction will use the status bit, and

the re-order buffer is configured to, if the instruction will use the status bit and if the result valid indicator is set for a last entry in the re-order buffer, read the status bit from the last entry.

4. The system of claim 3

wherein, when the instruction uses the status bit,

when the result valid indicator is not set in the last entry in the re-order buffer,

when the forward indicator is not set in the last entry in the re-order buffer,

the re-order buffer is configured to assign the last entry in the re-order buffer to the instruction and set the forward indicator of the last entry in the re-order buffer, and

the plurality of execution queues are configured to set a status pending indicator for the instruction in the execution queue;

when the forward indicator is set in the last entry in the re-order buffer, the re-order buffer is configured to:

set the link indicator in the last entry in the re-order buffer,

assign the entry pointed to by a write pointer of the re-order buffer to the instruction,

set the forward indicator of the entry pointed to by the write pointer, and

increment the write pointer;

wherein the instruction decode/issue unit is configured to dispatch the instruction to an execution queue; and

wherein the re-order buffer is configured to write the execution queue location of the instruction in the execution queue tag of the re-order buffer entry assigned to the instruction.

5. The system of claim 1 wherein

an execution unit of the plurality of execution units which executed the executed instruction is configured to send the status bit from the executed instruction to the re-order buffer and to pending instructions in the execution queue in a later processing cycle.

6. A method comprising:

receiving an instruction;

decoding the instruction to determine if the instruction will update a status bit in a computer processing system;

when the instruction will update the status bit,

assigning an entry in a re-order buffer in the processing system to the instruction, and

incrementing a write pointer for entries in the re-order buffer;

dispatching the instruction to an execution queue in the processing system

receiving a re-order buffer tag from an executed instruction;

setting a result valid indicator of one of the entries corresponding to the re-order buffer tag;

writing the status bit into in the re-order buffer entry corresponding to the re-order buffer tag;

when a forward indicator is set in the one of the entries,

sending an execution queue tag to clear a status pending indicator in a corresponding execution queue location for a pending instruction, and

forwarding the status bit from the executed instruction to the pending instruction with the corresponding execution queue tag;

when a link indicator is set in the one of the entries,

sending the execution queue tag from a next entry in the re-order buffer to clear a status pending indicator in a corresponding execution queue location for a second pending instruction,

forwarding the status bit from the executed instruction to the second pending instruction,

writing the status bit into the next entry in the re-order buffer, and setting the result valid indicator of the next entry in the re-order buffer.

7. The method of claim 6 further comprising:

decoding the instruction to determine if the instruction will use the status bit;

when the instruction will use the status bit,

when a result valid indicator is set for a last entry in the re-order buffer, reading the status bit from the last entry.

8. The method of claim 6 further comprising:

when the instruction will use the status bit,

when a result valid indicator is not set for a last entry in the re-order buffer,

when a forward indicator is not set in the last entry,

assigning the last entry to the instruction, setting a status pending indicator for the instruction in the execution queue, and setting the forward indicator of the last entry in the re-order buffer;

when the forward indicator is set in the last entry in the re-order buffer,

setting a link indicator in the last entry,

assigning one of the entries pointed to by the write pointer to the instruction,

setting the forward indicator of the entry pointed to by the write pointer, and

incrementing the write pointer;

dispatching the instruction to the execution queue; and

writing an execution queue location of the instruction in an execution queue tag of the entry assigned to the instruction.

9. The method of claim 6 further comprising:

sending the status bit from the executed instruction to the re-order buffer and the

pending instructions in the execution queue in a later cycle.

an instruction decode/issue unit including a re-order buffer having entries that include

an execution queue tag that indicates an execution queue location of an instruction to which a re-order buffer entry is assigned;

a result valid indicator to indicate that a corresponding instruction has executed with a status bit valid result; and

a forward indicator to indicate that a status bit can be forwarded to an execution queue of an instruction that is waiting to receive the status bit.

10. A data processing system comprising:

an instruction decode/issue unit including a re-order buffer having a plurality of re-order buffer entries, wherein the re-order buffer entries are configured to store information to coordinate out-of-order execution of instructions;

a plurality of execution queues configured to store instructions received from the instruction decode/issue unit and waiting to be executed; and

a plurality of execution units coupled to the plurality of execution queues, wherein each execution unit is configured to receive instructions from the plurality of execution queues,

wherein the re-order buffer is configured to:

receive a re-order buffer tag from an executed instruction;

set a result valid indicator of a re-order buffer entry corresponding to the re-order buffer tag;

update a status bit in the re-order buffer entry corresponding to the re-order buffer tag for the executed instruction;

if a forward indicator is set in the re-order buffer entry,

send an execution queue tag to the plurality of execution queues to clear a status pending indicator in a corresponding execution queue location for a pending instruction, and

forward the status bit from the executed instruction to the pending instruction with the corresponding execution queue tag;

when a link indicator is set is set in the re-order buffer entry,

send the execution queue tag from a next entry in the re-order buffer to the plurality of execution queues to clear a pending indicator in the corresponding execution queue location for a second pending instruction, and

forward the status bit from the executed instruction to the execution queue tag for the second pending instruction.

11. The system of claim 10 wherein

an execution unit of the plurality of execution units which executed the executed instruction is configured to send the status bit from the executed instruction to the re-order buffer and pending instructions in an execution queue in a later processing cycle.

12. The system of claim 10

wherein the execution queue tag indicates an execution queue number of an instruction to which a particular re-order buffer entry is assigned.

13. The system of claim 10 wherein the re-order buffer is configured to:

when the link indicator is set,

write the status bit into the next entry in the re-order buffer, and

set the result valid indicator in the next entry in the re-order buffer.

14. The system of claim 10

wherein the result valid indicator indicates that a corresponding instruction has executed with a status bit valid result.

15. The system of claim 10

wherein the forward indicator indicates that the status bit can be forwarded to an execution queue of an instruction that is waiting to receive the status bit.

16. The system of claim 10

wherein the link indicator indicates another instruction will use the status bit.

17. The system of claim 10

wherein the instruction decode/issue unit is configured to receive an instruction,

decode the instruction to determine if the instruction will update the status bit for the instruction,

dispatch the instruction to the execution queue, and

wherein the re-order buffer is configured to:

assign one of the entries in the re-order buffer to the instruction,

increment a write pointer for the re-order buffer entries,

when the instruction uses the status bit for the instruction,

when the forward indicator is not set in the last entry in the re-order buffer,

assign the last entry in the re-order buffer to the instruction, set the status pending indicator for the instruction in the execution queue, and set the forward indicator of the last entry in the re-order buffer,

when the forward indicator is set in the last entry in the re-order buffer,

set the link indicator in the last entry in the re-order buffer,

assign a write tag of the entry pointed to by the write pointer of the re-order buffer to the instruction,

set the forward indicator of the entry pointed to by the write pointer, and

increment the write pointer; and

wherein the re-order buffer is further configured to write the execution queue location of the instruction in the execution queue tag in the re-order buffer entry assigned to the instruction.

Assignments (22)
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 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
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 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 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
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/0455 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0521 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0476 →
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 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Apr 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 030256/0670 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Apr 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030256/0655 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Apr 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030256/0582 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2012
From: TRAN, THANG M.; NGUYEN, TRINH HUY
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 027711/0382 →