IP Library Granted Patent US 12688082
Granted Patent B2
US 12688082 · App. 18/940,296 · Granted Jul 21, 2026

Detecting injection of faults in program counters altering execution of basic blocks of instructions

Inventor: Silviu Chiricescu (Cambridge, MA)
Assignee: The Charles Stark Draper Laboratory, Inc.
G06F11/0787G06F11/0721G06F11/079
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 12688082
App. No.
18/940,296
Granted
Jul 21, 2026
Kind
B2
Abstract

Presented herein are systems and methods of detecting faults in executing blocks of instructions. A processor coupled with memory can identify, from execution of a plurality of instructions of a block, an instruction associated with a program counter during execution of the block. Each instruction of the plurality of instructions can be assigned to one of a first plurality of tags. The first plurality of tags can be ordered in a pre-determined sequence for the block. The processor can compare a first tag of the first plurality of tags in the pre-determined sequence for the block with a second tag of a second plurality of tags assigned to the instruction associated with the program counter. The processor can detect, responsive to the first tag not matching the second tag, a fault with the program counter in the execution of the block.

Claims (41)

1 . A method of detecting faults in executing blocks of instructions, comprising:

receiving, by at least one processor, from execution of a block of a plurality of instructions, an instruction associated with a program counter, each instruction of the plurality of instructions assigned to one of a first plurality of tags, the first plurality of tags ordered in a pre-determined sequence for the block;

comparing, by the at least one processor, a first tag of the first plurality of tags in the pre-determined sequence for the block with a second tag of a second plurality of tags assigned to the instruction associated with the program counter;

detecting, by the at least one processor, responsive to the first tag not matching the second tag, a fault with the program counter in the execution of the block; and

storing, by the at least one processor, an indication identifying the fault in the execution of the block.

2 . The method of claim 1 , further comprising:

comparing, by the at least one processor, the first tag of the first plurality of tags in the pre-determined sequence for the block with the second tag of the second plurality of tags assigned to the instruction associated with the program counter;

detecting, by the at least one processor, responsive to the first tag matching the second tag, no fault in the execution of the block; and

storing, by the at least one processor, an indication identifying no fault in the execution of the block.

3 . The method of claim 1 , wherein a number of tags to which to assign to the plurality of instructions of the block is determined, as a function of at least one of: (i) a number of the plurality of instructions, (ii) a number of bits to encode the plurality of instructions, or (iii) a number of altered bits in the program counter to be detected.

4 . The method of claim 1 , further comprising the pre-determined sequence defining an order of the first plurality of tags is generated for the plurality of instructions in the block.

5 . The method of claim 1 , further comprising assigning, by the at least one processor, a subset of instructions identified as critical from the plurality of instructions to a corresponding subset of tags of the first plurality of tags in the pre-determined sequence, each tag of the subset of tags different from one another.

6 . The method of claim 1 , further comprising assigning, by the at least one processor, at least one instruction identified as non-critical from the plurality of instructions to a neutral tag of the first plurality of tags.

7 . The method of claim 1 , wherein at least one of the second plurality of tags is updated on the program counter in accordance with a policy, responsive to detecting no fault in the execution of the block.

8 . The method of claim 1 , wherein a processor in which the program counter resides is configured with the pre-determined sequence for the first plurality of tags for detecting faults in the execution of the block.

9 . The method of claim 1 , further comprising performing, by the at least one processor, responsive to detecting the fault with the program counter, a countermeasure including at least one of: (i) an interruption of the execution, (ii) a halting of the execution, (iii) a processor reset, or (iv) a provision of an alert.

10 . The method of claim 1 , further comprising providing, by the at least one processor, an output based at least on the indication identifying the fault.

11 . A system for detecting faults in executing blocks of instructions, comprising:

at least one processor coupled with memory, configured to:

identify, from execution of a block of a plurality of instructions, an instruction associated with a program counter, each instruction of the plurality of instructions assigned to one of a first plurality of tags, the first plurality of tags ordered in a pre-determined sequence for the block;

compare a first tag of the first plurality of tags in the pre-determined sequence for the block with a second tag of a second plurality of tags assigned to the instruction associated with the program counter;

detect, responsive to the first tag not matching the second tag, a fault with the program counter in the execution of the block; and

store an indication identifying the fault in the execution of the block.

12 . The system of claim 11 , wherein the at least one processor is configured to:

compare the first tag of the first plurality of tags in the pre-determined sequence for the block with the second tag of the second plurality of tags assigned to the instruction associated with the program counter;

detect, responsive to the first tag matching the second tag, no fault in the execution of the block; and

store an indication identifying no fault in the execution of the block.

13 . The system of claim 11 , wherein a number of tags to assign to the plurality of instructions of the block is determined, as a function of at least one of: (i) a number of the plurality of instructions or (ii) a number of bits to encode the plurality of instructions.

14 . The system of claim 11 , wherein the at least one processor is configured to assign a subset of instructions identified as critical from the plurality of instructions, to a corresponding subset of tags of the first plurality of tags in the pre-determined sequence, each tag of the subset of tags different from one another.

15 . The system of claim 11 , wherein at least one of the second plurality of tags are updated on the program counter in accordance with a policy, responsive to detecting no fault in the execution of the block.

16 . The system of claim 11 , wherein a processor in which the program counter resides is configured with the pre-determined sequence for the first plurality of tags for detecting faults in the execution of the block.

17 . The system of claim 11 , wherein the at least one processor are configured to perform, responsive to detecting the fault with the program counter, a countermeasure including at least one of: (i) an interruption of the execution, (ii) a halting of the execution, (iii) a processor reset, or (iv) a provision of an alert.

18 . A non-transitory computer readable medium storing program instructions for causing at least one processor to:

receive, from execution of a block of a plurality of instructions, an instruction associated with a program counter, each instruction of the plurality of instructions assigned to one of a first plurality of tags, the first plurality of tags ordered in a pre-determined sequence for the block;

compare a first tag of the first plurality of tags in the pre-determined sequence for the block with a second tag of a second plurality of tags assigned to the instruction associated with the program counter;

detect, responsive to the first tag not matching the second tag, a fault with the program counter in the execution of the block; and

store an indication identifying the fault in the execution of the block.

19 . The non-transitory computer readable medium of claim 18 , wherein the instructions cause the at least one processor to:

detect, responsive to the first tag of the first plurality of tags in the pre-determined sequence for the block matching the second tag of the second plurality of tags assigned to a second instruction associated with the program counter, no fault in the execution of the block; and

store a second indication identifying no fault in the execution of the block.

20 . The non-transitory computer readable medium of claim 18 , wherein a number of tags to assign to the plurality of instructions of the block is determined, as a function of at least one of: (i) a number of the plurality of instructions or (ii) a number of bits to encode the plurality of instructions.