IP Library Granted Patent US 10,296,312
Granted Patent B2
US 10,296,312 · App. 15/597,926 · Granted May 21, 2019

Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique

Inventors: Aviral Shrivastava (Phoenix, AZ); Moslem Didehban (Tempe, AZ)
Assignee: Arizona Board of Regents on Behalf of Arizona State University
G06F8/433G06F9/3005G06F9/3017G06F9/30021G06F9/30043G06F9/30076G06F9/30116G06F9/30145G06F9/3861G06F9/3869G06F11/3624
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 10,296,312
App. No.
15/597,926
Granted
May 21, 2019
Kind
B2
Abstract

Methods, apparatuses, systems, and implementations of a zero silent data corruption (ZDC) compiler technique are disclosed. The ZDC technique may use an effective instruction duplication approach to protect programs from soft errors. The ZDC may also provide an effective control flow checking mechanism to detect most control flow errors. The ZDC technique may provide a failure percentage close to zero while incurring a lower performance overhead than prior art systems. The ZDC may also be effectively applied in a multi-thread environment.

Claims (62)

1. A computing system configured to detect and reduce silent data corruptions, the computing system comprising:

at least one memory device;

at least one processor; and

at least one physical computer readable medium coupled to the at least one memory device, the at least one physical computer readable medium comprising computer executable instructions that when executed by the at least one processor are configured to:

perform a store instruction checking operation, wherein the store instruction checking operation comprises instructions to reload a value of a store instruction into a value register as a checking load instruction, and compare the checking load instruction with the store instruction;

perform a load instruction duplication operation, wherein the load instruction duplication operation comprises instructions to duplicate a load instruction from a load store queue;

perform a compare instruction and branch instruction duplication operation, wherein the compare instruction and branch instruction duplication operation comprise instructions to duplicate a compare instruction, save the compare instruction as a value in a compare destination register and a value in a compare check register, duplicate a branch instruction, and conditionally invert the value of the compare destination register based on a direction of the branch instruction and the duplicate of the branch instruction;

perform a branch direction checking operation, wherein the branch direction checking operation comprises instructions to check a basic destination block by comparing one or more static signatures;

perform a register file checking operation, wherein the register file checking operation comprises instructions to compare a value in a shadow register with a master register after a store instruction; and

in response to determining an inconsistency during execution of the instructions, transfer execution to a separate diagnostic block to correct any error or inconsistency.

2. The computing system of claim 1 , where the executable instructions are further configured to:

compare a load destination register value with a shadow load destination register value;

determine whether the load destination register value matches the shadow load destination register value; and

execute a load diagnostic process when the load destination register value does not match the shadow load destination register value.

3. The computing system of claim 2 , where the load diagnostic process comprises instructions to:

check a base address register and a shadow base address register for errors; and

avoid a propagation of a detected error to a storage device.

4. The computing system of claim 3 , where the load diagnostic process comprises instructions to:

re-execute redundant load instructions when an error is not detected.

5. The computing system of claim 1 , where the executable instructions are further configured to:

execute a swap instruction to remove data present in a memory storage location into a register and write a register value into the memory storage location;

compare a store destination register value with a shadow store destination register value;

determine whether the store destination register value matches the shadow store destination register value; and

execute a store diagnostic process when the store destination register value does not match the shadow store destination register value.

6. The computing system of claim 5 , where the store diagnostic process comprises instructions to:

check a base address register and a shadow base address register for errors; and

avoid a propagation of a detected error to a storage device.

7. The computing system of claim 6 , where the store diagnostic process comprises instructions to:

re-execute the swap instruction when an error is not detected.

8. A method of detecting and reducing silent data corruptions, the method comprising:

performing a store instruction checking operation, wherein the store instruction checking operation comprises instructions to reload a value of a store instruction into a value register as a checking load instruction, and compare the checking load instruction with the store instruction;

performing a load instruction duplication operation, wherein the load instruction duplication operation comprises instructions to duplicate a load instruction from a load store queue;

performing a compare instruction and branch instruction duplication operation, wherein the compare instruction and branch instruction duplication operation comprises instructions to duplicate a compare instruction, save the compare instruction as a value in a compare destination register and a value in a compare check register, duplicate a branch instruction, and conditionally invert the value of the compare destination register based on a direction of the branch instruction and the duplicate of the branch instruction;

performing a branch direction checking operation, wherein the branch direction checking operation comprises instructions to check a basic destination block by comparing one or more static signatures;

performing a register file checking operation, wherein the register file checking operation comprises instructions to compare a value in a shadow register with a master register after a store instruction; and

in response to determining an inconsistency during execution of the instructions, transfer execution to a separate diagnostic block to correct any error or inconsistency.

9. The method of claim 8 , further comprising:

comparing a load destination register value with a shadow load destination register value;

determining whether the load destination register value matches the shadow load destination register value; and

executing a load diagnostic process when the load destination register value does not match the shadow load destination register value.

10. The method of claim 9 , where the load diagnostic process comprises:

checking a base address register and a shadow base address register for errors; and

avoiding a propagation of a detected error to a storage device.

11. The method of claim 10 , where the load diagnostic process comprises:

re-executing redundant load instructions when an error is not detected.

12. The method of claim 8 , further comprising:

executing a swap instruction to remove data present in a memory storage location into a register and write a register value into the memory storage location;

comparing a store destination register value with a shadow store destination register value;

determining whether the store destination register value matches the shadow store destination register value; and

executing a store diagnostic process when the store destination register value does not match the shadow store destination register value.

13. The method of claim 12 , where the store diagnostic process comprises:

checking a base address register and a shadow base address register for errors; and

avoiding a propagation of a detected error to a storage device.

14. The method of claim 13 , where the store diagnostic process comprises:

re-executing the swap instruction when an error is not detected.

15. An apparatus for detecting and reducing silent data corruptions, the apparatus comprising: at least one processor configured to:

perform a store instruction checking operation, wherein the store instruction checking operation comprises instructions to reload a value of a store instruction into a value register as a checking load instruction, and compare the checking load instruction with the store instruction;

perform a load instruction duplication operation, wherein the load instruction duplication operation comprises instructions to duplicate a load instruction from a load store queue;

perform a compare instruction and branch instruction duplication operation, wherein the compare instruction and branch instruction duplication operation comprises instructions to duplicate a compare instruction, save the compare instruction as a value in a compare destination register and a value in a compare check register, duplicate a branch instruction, and conditionally invert the value of the compare destination register based on a direction of the branch instruction and the duplicate of the branch instruction;

perform a branch direction checking operation, wherein the branch direction checking operation comprises instructions to check a basic destination block by comparing one or more static signatures;

perform a register file checking operation, wherein the register file checking operation comprises instructions to compare a value in a shadow register with a master register after a store instruction; and

in response to determining an inconsistency during execution of the instructions, transfer execution to a separate diagnostic block to correct any error or inconsistency.

Assignments (2)
CONFIRMATORY LICENSE Recorded Jun 22, 2017
From: ARIZONA STATE UNIVERSITY, TEMPE
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 042941/0856 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2017
From: SHRIVASTAVA, AVIRAL; DIDEHBAN, MOSLEM
To: ARIZONA BOARD OF REGENTS ON BEHALF OF ARIZONA STATE UNIVERSITY
Reel/Frame 042594/0027 →
Continuity (2)
Provisional Application 62339389 · May 20, 2016
Related Publication 20170337047A1 · Nov 23, 2017
Cited By (2)
US 12,602,297 US 12,602,298