US 11,989,286 B2
Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety
John G. Favor, San Francisco, CA (US); and Srivatsan Srinivasan, Cedar Park, TX (US)
Assigned to Ventana Micro Systems Inc., Cupertino, CA (US)
Filed by Ventana Micro Systems Inc., Cupertino, CA (US)
Filed on Jan. 13, 2022, as Appl. No. 17/575,220.
Application 17/575,220 is a continuation in part of application No. 17/472,376, filed on Sep. 10, 2021.
Application 17/472,376 is a continuation in part of application No. 17/351,927, filed on Jun. 18, 2021, granted, now 11,416,406.
Application 17/351,927 is a continuation in part of application No. 17/315,262, filed on May 7, 2021, granted, now 11,416,400.
Claims priority of provisional application 63/289,392, filed on Dec. 14, 2021.
Prior Publication US 2022/0358210 A1, Nov. 10, 2022
Int. Cl. G06F 21/50 (2013.01); G06F 21/53 (2013.01); G06F 21/54 (2013.01); G06F 21/55 (2013.01)
CPC G06F 21/54 (2013.01) [G06F 21/53 (2013.01); G06F 21/554 (2013.01); G06F 21/556 (2013.01)] 22 Claims
OG exemplary drawing
 
1. A method of mitigating side channel attacks (SCAB) that exploit speculative store-to-load forwarding in a processor, the method comprising:
executing one or more store instructions, each of which has a store data address;
beginning execution of a load instruction, which has a load data address, before the one or more store instructions commit;
checking whether a record of the load instruction exists that predicts whether store data is available from an uncommitted store instruction for forwarding to the load instruction;
performing a partial or full comparison between the load instruction's virtual or physical data address and the virtual or physical data addresses of the one or more store instructions;
when (a) said record exists, (b) the comparison finds a data address match between the load instruction and one of the one or more store instructions, and (c) said one store instruction is a most recent store instruction, older than the load instruction, that has a matching data address, forwarding the store data of said one store instruction to the load instruction;
when no said record exists, refraining from forwarding and sourcing the load data from a cache, even when the comparison finds said data address match.