IP Library Granted Patent US 9,361,104
Granted Patent B2
US 9,361,104 · App. 12/856,430 · Granted Jun 7, 2016

Systems and methods for determining instruction execution error by comparing an operand of a reference instruction to a result of a subsequent cross-check instruction

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,361,104
App. No.
12/856,430
Granted
Jun 7, 2016
Kind
B2
Abstract

In a data processing system having execution circuitry, a method includes providing a cross-check instruction and a reference instruction to the execution circuitry, where the reference instruction has an operand. The method also includes executing the reference instruction to obtain a first result. Residual information is derived from execution of the reference instruction, and the method also includes executing the cross-check instruction using the residual information to obtain a second result. The second result obtained from execution of the cross-check instruction is compared to the operand of the reference instruction to determine whether an error occurred during execution of the reference instruction or the cross-check instruction.

Claims (34)

1. In a data processing system having execution circuitry that includes a plurality of execution stages arranged in a pipeline, a method comprising:

providing a reference instruction to a first execution stage of the execution circuitry, the reference instruction having an operand;

providing a cross-check instruction to the first execution stage of the execution circuitry while advancing the reference instruction to a second execution stage of the execution circuitry, wherein the cross-check instruction is different from the reference instruction, and wherein the second execution stage is subsequent to the first execution stage;

executing the reference instruction to obtain a first result, wherein, during the step of executing the reference instruction, residual information is derived from execution of the reference instruction, wherein the residual information is distinct from the first result;

providing the residual information from the second execution stage to the first execution stage along a feed-forward path between the second execution stage and the first execution stage;

after providing the residual information from the second execution stage to the first execution stage along the feed-forward path, executing the cross-check instruction using the residual information to obtain a second result; and

comparing, by a comparator coupled to the execution circuitry, the second result obtained from execution of the cross-check instruction to the operand of the reference instruction to determine whether an error occurred during execution of the reference instruction or the cross-check instruction.

2. The method of claim 1 , wherein the step of executing the cross-check instruction is performed such that the residual information is used as an operand of the cross-check instruction.

3. The method of claim 1 , further comprising:

selectively storing the first result to a register file of the data processing system based on whether or not the error occurred.

4. The method of claim 3 , wherein the second result obtained from execution of the cross-check instruction is not stored to the register file.

5. The method of claim 1 , further comprising:

storing the second result obtained from execution of the cross-check instruction prior to the step of comparing the second result of the cross-check instruction to the operand.

6. The method of claim 1 , wherein the first result is obtained in the second execution stage, and the residual information is derived in the second execution stage.

7. The method of claim 6 , wherein the second execution stage is immediately subsequent to the first execution stage.

8. The method of claim 6 , further comprising:

storing the residual information prior to the step of providing the residual information to the first execution stage.

9. The method of claim 1 , wherein the residual information comprises a bit selected from a group consisting of a masked out bit, a shifted out bit, a toggled bit, and a truncated bit.

10. The method of claim 1 , wherein the step of executing the reference instruction comprises performing a first function selected from a group consisting of an arithmetic function and a logic function, and the step of executing the cross-check instruction performs a second function selected from a group consisting of an arithmetic function and a logic function, wherein the second function is different from the first function.

11. The method of claim 10 , wherein the first function is one of a left shift or a right shift and the second function is another one of a left shift or a right shift.

12. The method of claim 1 , further comprising:

while executing the reference instruction in the second execution stage, setting a cross-check indicator that indicates that the reference instruction is to be cross-checked for temporal redundancy.

13. The method of claim 1 , further comprising:

during the step of providing the residual information from the second execution stage to the first execution stage, temporarily storing the residual information in a storage element located along the feed-forward path between the second execution stage and the first execution stage.

14. A data processing system comprising:

execution circuitry that includes a plurality of execution stages arranged in a pipeline, wherein a first stage of the execution circuitry receives a reference instruction, and subsequently the first stage of the execution circuitry receives a cross-check instruction while the reference instruction is advanced to a second execution stage of the execution circuitry, wherein the cross-check instruction is different from the reference instruction, wherein the second execution stage is subsequent to the first execution stage, wherein the execution circuitry executes the reference instruction to obtain a first result and residual information, wherein the residual information is derived from execution of the reference instruction, wherein the residual information is distinct from the first result, and wherein the execution circuitry provides the residual information from the second execution stage to the first execution stage along a feed-forward path of the execution circuitry between the second execution stage and the first execution stage, and after providing the residual information from the second execution stage to the first execution stage along the feed-forward path, the execution circuitry executes the cross-check instruction using the residual information to obtain a second result;

comparison circuitry, coupled to the execution circuitry, which compares the second result obtained from execution of the cross-check instruction to an operand of the reference instruction, and generates an error indicator which indicates whether an error occurred during execution of the reference instruction or the cross-check instruction; and

a register file, coupled to the execution circuitry and the comparison circuitry, which selectively stores the first result in a register of the register file based on the error indicator.

15. The data processing system of claim 14 , wherein the execution circuitry receives the cross-check instruction after receiving the reference instruction and the execution circuitry uses the residual information as an operand of the cross-check instruction to execute the cross-check instruction.

16. The data processing system of claim 14 , wherein the execution circuitry does not provide the second result for storage into the register file.

17. The data processing system of claim 16 , wherein the execution circuitry further comprises a cross-check indicator which indicates whether a currently executing instruction is a cross-check instruction or not, and wherein the data processing system further comprises storage circuitry, separate from the register file, which stores the residual information.

18. The data processing system of claim 14 , wherein the residual information comprises a bit selected from a group consisting of a masked out bit, a shifted out bit, a toggled bit, and a truncated bit.

19. The data processing system of claim 14 , further comprising:

a storage element located along the feed-forward path between the second execution stage and the first execution stage, wherein the storage element is used to temporarily store the residual information while providing the residual information from the second execution stage to the first execution stage.

Assignments (16)
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 →
MERGER Recorded Jan 3, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041144/0363 →
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/0334 →
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/0285 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →