IP Library Granted Patent US 12,619,713
Granted Patent B1
US 12,619,713 · App. 18/193,481 · Granted May 5, 2026

Compiler support for increasing resilience to bit-flips

Inventors: Nathan Yong Seng Chong (Ponte Vedra, FL); Dominic Phillip Mulligan (Cambridge, GB); Karimallah Ahmed Mohammed Raslan (Leander, TX); Hanno Becker (Comberton, GB)
Assignee: Amazon Technologies, Inc.
G06F21/54G06F8/41G06F21/51G06F21/554G06F2221/033
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 12,619,713
App. No.
18/193,481
Granted
May 5, 2026
Kind
B1
Abstract

A determination is made that a program defines a plurality of variants for populating a data structure. Respective values for the variants are selected such that the number of bit-flips required to transform one variant to another exceeds a threshold. In response to a detection, during execution of the program, that a value stored in the data structure does not match any of the selected values, a remedial action associated with detection of a bit-flip is initiated.

Claims (49)

1 . A system, comprising:

one or more computing devices;

wherein the one or more computing devices include instructions that upon execution on or across the one or more computing devices:

determine, by a compiler, that a program whose resiliency against bit-flips is to be enhanced comprises a data structure within which a value of a variant selected from a plurality of variants of an enumeration data type is going to be stored during execution of the program;

select, by the compiler, respective values for individual variants of the plurality of variants, including a first value for a first variant and a second value for a second variant, such that a Hamming distance between the first value and the second value exceeds a threshold;

cause, by the compiler, a compiled version of the program to be stored, wherein the compiled version comprises the respective values selected by the compiler for the individual variants of the plurality of variants; and

in response to a detection, during an execution of the compiled version of the program, that a particular value stored in the data structure does not match any of the respective values selected by the compiler, initiate a remedial action associated with an occurrence of a bit-flip.

2 . The system as recited in claim 1 , wherein the one or more computing devices include further instructions that upon execution on or across the one or more computing devices:

utilize, by the compiler, a directive included in source code of the program to determine that values for the plurality of variants are to be selected by the compiler to enhance resilience of the program to bit-flips.

3 . The system as recited in claim 1 , wherein the one or more computing devices include further instructions that upon execution on or across the one or more computing devices:

insert, by the compiler into the compiled version of the program, executable code to detect whether a value stored in the data structure matches any of the respective values selected by the compiler.

4 . The system as recited in claim 1 , wherein the one or more computing devices include further instructions that upon execution on or across the one or more computing devices:

obtain, by the compiler, an indication of an algorithm to be used to select the respective values.

5 . The system as recited in claim 1 , wherein the one or more computing devices include further instructions that upon execution on or across the one or more computing devices:

obtain, by the compiler, an indication of the remedial action; and

insert, by the compiler in the compiled version of the program, executable code to initiate the remedial action.

6 . A computer-implemented method, comprising:

determining, by a compiler, that a particular program defines a first plurality of variants from which individual variants are used to populate a data structure;

selecting, by the compiler, respective values for the individual variants of the first plurality of variants, including a first value for a first variant and a second value for a second variant, such that a number of bit-flips required to transform the first value to the second value exceeds a threshold; and

in response to detecting, during an execution of a compiled version of the particular program generated by the compiler, that a particular value stored in the data structure does not match any of the respective values selected by the compiler for the first plurality of variants, initiating a remedial action associated with detection of a bit-flip.

7 . The computer-implemented method as recited in claim 6 , further comprising:

obtaining, by the compiler via a configuration setting, an indication that resilience of one or more programs including the particular program to bit-flips is to be enhanced, wherein said selecting is responsive to obtaining the indication.

8 . The computer-implemented method as recited in claim 6 , further comprising:

obtaining, by the compiler, a hint within source code of the particular program indicating that values for the first plurality of variants are to be selected by the compiler to enhance resilience of the particular program to bit-flips.

9 . The computer-implemented method as recited in claim 6 , further comprising:

inserting, by the compiler into the compiled version of the particular program, executable code to detect whether a value stored in the data structure matches any of the respective values selected by the compiler for the first plurality of variants.

10 . The computer-implemented method as recited in claim 6 , further comprising:

obtaining, by the compiler via a configuration setting, an indication of an algorithm to be used to select the respective values.

11 . The computer-implemented method as recited in claim 6 , further comprising:

accessing, by the compiler, a pre-computed set of values, prepared prior to analysis of the particular program by the compiler, to be assigned to variants in one or more programs including the particular program, wherein individual ones of the respective values are selected from the pre-computed set.

12 . The computer-implemented method as recited in claim 6 , further comprising:

obtaining, by the compiler, an indication of the remedial action; and

inserting, by the compiler in the compiled version of the particular program, executable code to initiate the remedial action.

13 . The computer-implemented method as recited in claim 6 , wherein the remedial action comprises one or more of: (a) causing a warning or error message indicating a potential occurrence of a bit-flip to be delivered to one or more destinations, (b) pausing execution of the particular program, or (c) causing termination of execution of the particular program.

14 . The computer-implemented method as recited in claim 6 , further comprising:

providing, via one or more programmatic interfaces, an indication that a value of a particular variant of a second plurality of variants defined in the particular program cannot be set by the compiler without overriding a programmer-selected value for the particular variant.

15 . The computer-implemented method as recited in claim 6 , wherein the data structure comprises one or more of: (a) an operating system process state data structure, (b) a page table used for translation of virtual address to physical addresses or (c) a data structure of an application run in user mode.

16 . One or more non-transitory computer-accessible storage media storing program instructions that when executed on or across one or more processors:

determine, by a complier, that a particular program defines a first plurality of variants from which individual variants are used to populate a data structure;

select, by the compiler, respective values for the individual variants of the first plurality of variants, including a first value for a first variant and a second value for a second variant, such that a number of bit-flips required to transform the first value to the second value exceeds a threshold; and

in response to detecting, during an execution of a version of the particular program, that a particular value stored in the data structure does not match any of the respective values selected for the first plurality of variants, initiate a remedial action associated with detection of a bit-flip.

17 . The one or more non-transitory computer-accessible storage media as recited in claim 16 , storing further program instructions that when executed on or across the one or more processors:

obtain, via a configuration setting, an indication that resilience of one or more programs including the particular program to bit-flips is to be enhanced.

18 . The one or more non-transitory computer-accessible storage media as recited in claim 16 , storing further program instructions that when executed on or across the one or more processors:

obtain a hint within source code of the particular program indicating that values for the first plurality of variants are to be selected to enhance resilience of the particular program to bit-flips.

19 . The one or more non-transitory computer-accessible storage media as recited in claim 16 , storing further program instructions that when executed on or across the one or more processors:

insert, into the version of the particular program, executable code to detect whether a value stored in the data structure matches any of the respective values selected for the first plurality of variants.

20 . The one or more non-transitory computer-accessible storage media as recited in claim 16 , storing further program instructions that when executed on or across the one or more processors:

obtain, via a configuration setting, an indication of an algorithm to be used to select the respective values.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2024
From: CHONG, NATHAN YONG SENG; MULLIGAN, DOMINIC PHILLIP; RASLAN, KARIMALLAH AHMED MOHAMMED; BECKER, HANNO
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 068021/0352 →
References Cited (25)
US 9030903B2 · Bains · 2015 [cited by applicant]
US 10108365B1 · Bittlestone · 2018 [cited by applicant]
US 10528736B1 · Sobel · 2020 [cited by applicant]
US 10950288B2 · Nale · 2021 [cited by applicant]
US 11049544B2 · Devaux · 2021 [cited by applicant]
US 12189644B1 · Das · 2025 [cited by applicant]
US 20120210095A1 · Nellans · 2012 [cited by applicant]
US 20170317889A1 · Moon · 2017 [cited by applicant]
US 20190056899A1 · Fukuoka · 2019 [cited by applicant]
US 20200012600A1 · Konoth · 2020 [cited by applicant]
US 20200192742A1 · Boettcher · 2020 [cited by examiner]
US 20200327390A1 · Lee · 2020 [cited by applicant]
US 20210064461A1 · Veches · 2021 [cited by applicant]
US 20210264980A1 · Sagron · 2021 [cited by examiner]
US 20210264999A1 · Bains · 2021 [cited by applicant]
US 20210406384A1 · Jin · 2021 [cited by applicant]
US 20220020447A1 · Park · 2022 [cited by examiner]
US 20220129200A1 · Van Der · 2022 [cited by applicant]
US 20220284096A1 · Gadhe · 2022 [cited by applicant]
US 20230278210A1 · Yanagita · 2023 [cited by applicant]
US 20240202139A1 · Botman · 2024 [cited by applicant]
EP 3591565 · 2020 [cited by applicant]
WO 2019070195 · 2019 [cited by applicant]
Yoongu Kim, et al., “Flipping Bits in MemoryWithout Accessing Them: An Experimental Study of DRAM Disturbance Errors,” IEEE, 2014, pp. 1-12. [cited by applicant]
U.S. Appl. No. 18/193,490, filed Mar. 30, 2023, Nathan Yong Seng Chong, et al. [cited by applicant]