IP Library Granted Patent US 12,591,434
Granted Patent B2
US 12,591,434 · App. 18/425,378 · Granted Mar 31, 2026

Shadow cache for securing conditional speculative instruction execution

Inventor: Steven Jeffrey Wallach (Dallas, TX)
G06F9/3844G06F12/0875G06F12/0891G06F2212/1032G06F2212/452
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,591,434
App. No.
18/425,378
Granted
Mar 31, 2026
Kind
B2
Abstract

A computing device, having: a processor; memory; a first cache coupled between the memory and the processor; and a second cache coupled between the memory and the processor. During speculative execution of one or more instructions, effects of the speculative execution are contained within the second cache.

Claims (37)

1 . A computing device, comprising:

a processor;

a first cache; and

a second cache;

wherein the processor is configured to:

determine presence of two branches of second instructions following a first branch instruction, the two branches including a first branch and a second branch;

execute the first branch using the first cache; and

execute the second branch using the second cache.

2 . The computing device of claim 1 , further comprising:

a memory;

wherein the first cache and the second cache are configured for the processor to access the memory.

3 . The computing device of claim 2 , wherein the first branch and the second branch are executed using the first cache and the second cache respectively during speculative execution.

4 . The computing device of claim 2 , wherein execution of the first branch instruction is configured to select one of the two branches for execution based on a condition; and the first branch and the second branch are executed using the first cache and the second cache respectively before a result of evaluation of the condition is available to the processor.

5 . The computing device of claim 2 , wherein the first branch instruction includes a call to a routine corresponding to the second branch.

6 . The computing device of claim 5 , wherein the processor is further configured to inspect a memory address associated with the second branch to determine whether to execute the second branch.

7 . The computing device of claim 5 , wherein the processor is further configured to determine whether to execute the second branch on speculation based on an object identifier embedded in a memory address associated with the second branch.

8 . A method, comprising:

coupling a cache system between a processor and a memory; and

coupling a shadow cache between the processor and the memory in parallel with the cache system, wherein a location in the memory is accessible to the processor via both the cache system and the shadow cache.

9 . The method of claim 8 , wherein the cache system includes a level two cache.

10 . The method of claim 9 , wherein the cache system further includes a level three cache connected to the level two cache in series between the processor and the memory.

11 . The method of claim 10 , wherein a level one cache is further connected in series to the level two cache.

12 . The method of claim 11 , further comprising:

accessing, by the processor, the memory via the cache system during normal execution of instructions; and

accessing, by the processor, the memory via the shadow cache during speculative execution of instructions.

13 . The method of claim 12 , further comprising:

initializing the shadow cache according to memory states cached in the cache system prior to the speculative execution.

14 . The method of claim 12 , further comprising:

mirroring, in the shadow cache, memory states cached in the cache system during the normal execution.

15 . A system, comprising:

a cache system configured between a processor and a memory; and

a shadow cache configured between the processor and the memory in parallel with the cache system, wherein a location in the memory is accessible to the processor via both the cache system and the shadow cache.

16 . The system of claim 15 , wherein the first cache system and the shadow cache have a same number of cache levels.

17 . The system of claim 15 , wherein the first cache system and the shadow cache have different numbers of cache levels.

18 . The system of claim 15 , wherein the shadow cache is configured to mirror the cache system during a first type of operations of the processor; and the shadow cache is configured to be used to access the memory during a second type of operations of the processor without using the cache system.

19 . The system of claim 18 , wherein the first type of operations is associated with normal execution of instructions in the processor; and the second type of operations is associated with speculative execution of instructions in the processor.

20 . The system of claim 18 , wherein during the second type of operations, the processor is blocked from changing memory states cached in the cache system and blocked from changing states in the memory.

Continuity (5)
Continuation 17888410 · Aug 15, 2022
Continuation 17189151 · Mar 1, 2021
Continuation 16028930 · Jul 6, 2018
Provisional Application 62665803 · May 2, 2018
Related Publication 20240168766A1 · May 23, 2024
References Cited (34)
US 5638537A · Yamada · 1997 [cited by examiner]
US 5671444A · Akkary et al. · 1997 [cited by applicant]
US 5838943A · Ramagopal et al. · 1998 [cited by applicant]
US 5974542A · Tran · 1999 [cited by examiner]
US 6065111A · Higuchi · 2000 [cited by examiner]
US 6321328B1 · Karp et al. · 2001 [cited by applicant]
US 7277989B2 · Chaudhry et al. · 2007 [cited by applicant]
US 7490229B2 · Tremblay et al. · 2009 [cited by applicant]
US 7496732B2 · Kottapalli et al. · 2009 [cited by applicant]
US 7970998B2 · Yamamoto · 2011 [cited by examiner]
US 8024522B1 · Favor et al. · 2011 [cited by applicant]
US 8370609B1 · Favor et al. · 2013 [cited by applicant]
US 8943273B1 · Jamil et al. · 2015 [cited by applicant]
US 9507647B2 · Blumrich et al. · 2016 [cited by applicant]
US 10282296B2 · Brandt · 2019 [cited by examiner]
US 10949210B2 · Wallach · 2021 [cited by applicant]
US 11294809B2 · Brandt · 2022 [cited by examiner]
US 11422820B2 · Wallach · 2022 [cited by applicant]
US 11934836B2 · Wallach · 2024 [cited by applicant]
US 20040006672A1 · Civlin · 2004 [cited by applicant]
US 20050154805A1 · Steely et al. · 2005 [cited by applicant]
US 20060161740A1 · Kottapalli et al. · 2006 [cited by applicant]
US 20080209190A1 · Bhargava · 2008 [cited by examiner]
US 20100122036A1 · Radovic · 2010 [cited by examiner]
US 20140115257A1 · Dundas · 2014 [cited by examiner]
US 20150242307A1 · Busaba et al. · 2015 [cited by applicant]
US 20160246723A1 · Doshi et al. · 2016 [cited by applicant]
US 20170262287A1 · Abdallah · 2017 [cited by applicant]
US 20190066353A1 · Anderson · 2019 [cited by examiner]
US 20190339975A1 · Wallach · 2019 [cited by applicant]
US 20190339978A1 · Wallach · 2019 [cited by applicant]
US 20210056043A1 · Grisenthwaite · 2021 [cited by applicant]
US 20210208892A1 · Wallach · 2021 [cited by applicant]
US 20220391212A1 · Wallach · 2022 [cited by applicant]