US 11,989,285 B2
Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking
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 Sep. 10, 2021, as Appl. No. 17/472,376.
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.
Application 17/472,376 is a continuation in part of application No. 17/315,262, filed on May 7, 2021, granted, now 11,416,400.
Prior Publication US 2022/0358209 A1, Nov. 10, 2022
Int. Cl. G06F 21/54 (2013.01); G06F 21/51 (2013.01); G06F 21/55 (2013.01)
CPC G06F 21/54 (2013.01) [G06F 21/51 (2013.01); G06F 21/554 (2013.01); G06F 2221/033 (2013.01)] 27 Claims
OG exemplary drawing
 
1. A method of mitigating side channel attacks (SCAs) that exploit speculative store-to-load forwarding in a high-performance processor, the method comprising:
conditionally performing speculative store-to-load forwarding (STLF) of data between a load instruction and an uncommitted older store instruction in an execution pipeline;
wherein a first condition of said conditionally performing speculative STLF is a verification that a complete physical data address of the load instruction matches a complete physical data address of the store instruction;
wherein the processor is high-performance in that it is a superscalar, out-of-order, and speculative executing processor; and
wherein said verification mitigates SCAs that exploit speculative store-to-load forwarding by:
speculatively executing a first load instruction that does not have permission to access a secret value at the load instruction's data address;
generating a second address that is a function of the secret value, wherein the function maps the second address to one of 2″ lines of a cache, where n is an integer;
speculatively executing a second load instruction that loads an arbitrary value located at the second address; and
probing the cache to determine where in the cache the arbitrary value was stored, thereby revealing the secret value.