IP Library Granted Patent US 12,547,411
Granted Patent B2
US 12,547,411 · App. 18/353,558 · Granted Feb 10, 2026

Securing conditional speculative instruction execution

Inventor: Steven Jeffrey Wallach (Dallas, TX)
G06F9/3844G06F9/30058G06F9/323
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,547,411
App. No.
18/353,558
Granted
Feb 10, 2026
Kind
B2
Abstract

A method performed in a processor, includes: receiving, in the processor, a branch instruction in the processing; determining, by the processor, an address of an instruction after the branch instruction as a candidate for speculative execution, the address including an object identification and an offset; and determining, by the processor, whether or not to perform speculative execution of the instruction after the branch instruction based on the object identification of the address.

Claims (32)

1 . A device, comprising:

a memory; and

a processor coupled to the memory and configured to determine, based on an identity of an object associated with a subsequent instruction to be executed following a branch instruction, whether to speculatively execute the subsequent instruction.

2 . The device of claim 1 , wherein the processor is configured to determine, in response to the subsequent instruction configured to be executed following the branch instruction, whether to execute the subsequent instruction.

3 . The device of claim 1 , wherein the processor is configured to determine whether to execute the subsequent instruction during speculative instruction execution.

4 . The device of claim 3 , wherein the processor is a microprocessor.

5 . The device of claim 4 , wherein the microprocessor includes:

a register configured to store a memory address configured to identify the object.

6 . The device of claim 5 , wherein the microprocessor further includes:

an execution unit configured to execute the branch instruction using the memory address in the register.

7 . The device of claim 6 , wherein the memory address is further configured to identify an offset of the subsequent instruction in the object.

8 . The device of claim 4 , wherein the memory is configured to store the object containing the subsequent instruction.

9 . The device of claim 1 , wherein the processor is configured to whether to execute the subsequent instruction based on whether the object is different from an object associated with the branch instruction.

10 . The device of claim 1 , wherein the processor is configured to whether to execute the subsequent instruction based on whether the object is a kernel of an operating system.

11 . The device of claim 1 , wherein the processor is configured to prevent execution of the subsequent instruction in response to a determination that the object is a kernel of an operating system.

12 . A method, comprising:

storing, in a memory, an object having a subsequent instruction to be executed following a branch instruction; and

determining, by a processor coupled to the memory and based on an identity of the object, whether to speculatively execute the subsequent instruction.

13 . The method of claim 12 , wherein the determining is in response to the subsequent instruction configured to be executed following the branch instruction.

14 . The method of claim 12 , wherein the determining is during speculative instruction execution.

15 . The method of claim 14 , further comprising:

storing, in a register of the processor, a memory address configured to identify the object; and

executing the branch instruction using the memory address stored in the register.

16 . The method of claim 15 , wherein the memory address is further configured to identify an offset of the subsequent instruction in the object.

17 . The method of claim 13 , wherein the determining is based on whether the object is different from an object associated with the branch instruction.

18 . The method of claim 12 , further comprising:

preventing execution of the subsequent instruction in response to a determination that the object is a kernel of an operating system.

19 . A microprocessor, comprising:

a register configured to store a memory address configured to identify an object;

an execution unit configured to execute a first instruction using the memory address in the register;

wherein the microprocessor is configured to determine, based on an identity of the object, whether to execute a second instruction in the object, during speculative instruction execution.

20 . The microprocessor of claim 19 , wherein the memory address is configured to identify an offset of the second instruction in the object; and the microprocessor is further configured to determine whether to execute the second instruction during speculative instruction execution.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2025
From: MICRON TECHNOLOGY, INC.
To: LODESTAR LICENSING GROUP LLC
Reel/Frame 072345/0134 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2025
From: WALLACH, STEVEN JEFFREY
To: MICRON TECHNOLOGY, INC.
Reel/Frame 072345/0316 →
Continuity (5)
Continuation 17707278 · Mar 29, 2022
Continuation 16942591 · Jul 29, 2020
Continuation 16028750 · Jul 6, 2018
Provisional Application 62665743 · May 2, 2018
Related Publication 20240020128A1 · Jan 18, 2024
References Cited (63)
US 4445177A · Bratt et al. · 1984 [cited by applicant]
US 4454579A · Pilat et al. · 1984 [cited by applicant]
US 4514800A · Gruner et al. · 1985 [cited by applicant]
US 4525780A · Bratt et al. · 1985 [cited by applicant]
US 4660142A · Clancy et al. · 1987 [cited by applicant]
US 4821184A · Clancy et al. · 1989 [cited by applicant]
US 5226161A · Khoyi et al. · 1993 [cited by applicant]
US 7366882B2 · Sahraoui et al. · 2008 [cited by applicant]
US 8032898B2 · Hunt · 2011 [cited by examiner]
US 8862861B2 · Olson et al. · 2014 [cited by applicant]
US 9798873B2 · Glew et al. · 2017 [cited by applicant]
US 9886532B1 · Scallon · 2018 [cited by applicant]
US 11275587B2 · Wallach · 2022 [cited by applicant]
US 20020031135A1 · Inoue · 2002 [cited by applicant]
US 20020174327A1 · Kruckemyer et al. · 2002 [cited by applicant]
US 20020174328A1 · Kruckemyer · 2002 [cited by applicant]
US 20030033344A1 · Abbott et al. · 2003 [cited by applicant]
US 20040103213A1 · Park · 2004 [cited by applicant]
US 20060095895A1 · K. · 2006 [cited by applicant]
US 20060224816A1 · Yamada et al. · 2006 [cited by applicant]
US 20070043531A1 · Kosche et al. · 2007 [cited by applicant]
US 20080229069A1 · Sartorius et al. · 2008 [cited by applicant]
US 20080250216A1 · Kershaw et al. · 2008 [cited by applicant]
US 20090222816A1 · Mansell et al. · 2009 [cited by applicant]
US 20090327613A1 · Nutter et al. · 2009 [cited by applicant]
US 20100118734A1 · Weilnau, Jr. et al. · 2010 [cited by applicant]
US 20110145924A1 · Kolsek · 2011 [cited by examiner]
US 20110161618A1 · Bellows et al. · 2011 [cited by applicant]
US 20110320759A1 · Craddock et al. · 2011 [cited by applicant]
US 20120079254A1 · Williams et al. · 2012 [cited by applicant]
US 20130326193A1 · Mccarthy et al. · 2013 [cited by applicant]
US 20130339691A1 · Bonanno et al. · 2013 [cited by applicant]
US 20140025770A1 · Warfield et al. · 2014 [cited by applicant]
US 20140181480A1 · Diestelhorst et al. · 2014 [cited by applicant]
US 20150169384A1 · Srinivas · 2015 [cited by examiner]
US 20150242212A1 · Sudhakar et al. · 2015 [cited by applicant]
US 20150277867A1 · Hasabnis et al. · 2015 [cited by applicant]
US 20150370561A1 · Stark · 2015 [cited by applicant]
US 20160210069A1 · Lutas · 2016 [cited by examiner]
US 20160364172A1 · Frank et al. · 2016 [cited by applicant]
US 20160371496A1 · Sell · 2016 [cited by applicant]
US 20170091444A1 · Woodward et al. · 2017 [cited by applicant]
US 20170199815A1 · Frank et al. · 2017 [cited by applicant]
US 20180113811A1 · Xing · 2018 [cited by applicant]
US 20180191671A1 · Choi et al. · 2018 [cited by applicant]
US 20180365438A1 · Bhattacharyya et al. · 2018 [cited by applicant]
US 20190339974A1 · Wallach · 2019 [cited by applicant]
US 20190339977A1 · Wallach · 2019 [cited by applicant]
US 20200356374A1 · Wallach · 2020 [cited by applicant]
US 20220197648A1 · Wallach · 2022 [cited by applicant]
US 20220222078A1 · Wallach · 2022 [cited by applicant]
“Branch Predictor”, https://en.wikipedia.org/wiki/Branch_predictor, printed on Apr. 30, 2018, 12 pages. [cited by applicant]
Chen, et al. “Control Flow Obfuscation with Information Flow Tracking,” ACM, 2009. [cited by applicant]
Jann Horn, “Project Zero: Reading privileged memory with a side-channel”, Jan. 3, 2018. [cited by applicant]
Mark D. Hill, “On the Meltdown & Spectre Design Flaws”, Feb. 2018. [cited by applicant]
Memory address register, Wikipedia, printed on Jun. 26, 2018. [cited by applicant]
Memory address, Wikipedia, printed on Jun. 26, 2018. [cited by applicant]
Program counter, Wikipedia, printed on Jun. 26, 2018. [cited by applicant]
Speculative execution, Wikipedia, printed on Jun. 27, 2018. [cited by applicant]
Steve Wallach, “128-Bit Addressing in RISC-V and Security”, 5th RISC-V Workshop Proceedings, Nov. 2016. [cited by applicant]
The RISC-V Instruction Set Manual, vol. II: Privileged Architecture, May 7, 2017. [cited by applicant]
The RISC-V Instruction Set Manual, vol. I: User-Level ISA, May 7, 2017. [cited by applicant]
Wolczko, et al. “The influence of the Object-Oriented Language Model on a Supporting Architecture,” Kluwer Academic Publishers, 1994. [cited by applicant]