IP Library › Granted Patent US 11,675,594
Granted Patent B2
US 11,675,594 · App. 16/236,049 · Granted Jun 13, 2023

Systems, methods, and apparatuses to control CPU speculation for the prevention of side-channel attacks

Inventors: Robert S. Chappell (Portland, OR); Jason W. Brandt (Austin, TX); Alan Cox (Abertawe, GB); Asit Mallick (Saratoga, CA); Joseph Nuzman (Haifa, IL); Arjan Van De Ven (Portland, OR)
Assignee: Intel Corporation
G06F9/3842G06F9/30058G06F9/30145G06F21/556G06F2221/033
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 11,675,594
App. No.
16/236,049
Granted
Jun 13, 2023
Kind
B2
Abstract

Embodiments of instructions are detailed herein including one or more of 1) a branch fence instruction, prefix, or variants (BFENCE); 2) a predictor fence instruction, prefix, or variants (PFENCE); 3) an exception fence instruction, prefix, or variants (EFENCE); 4) an address computation fence instruction, prefix, or variants (AFENCE); 5) a register fence instruction, prefix, or variants (RFENCE); and, additionally, modes that apply the above semantics to some or all ordinary instructions.

Claims (24)

1. A method comprising:

decoding an instance of a single instruction that includes an indication that a branching fence operation is to be erected such that instructions subsequent to the instance of the single instruction are not speculatively executed until branches that precede the instance of the single instruction have been resolved, wherein only branches need to be resolved and not non-branch instructions before any instructions subsequent to the instance of the single instruction are to be speculatively executed; and

executing the decoded instance of the single instruction to halt speculative execution of any instructions subsequent to the decoded instruction while all preceding branches are resolved.

2. The method of claim 1 , wherein the indication is an opcode of the instance of the single instruction.

3. The method of claim 1 , wherein the indication is included in a prefix of the instance of the single instruction.

4. The method of claim 1 , wherein, in response to the instance of the single instruction, scheduler circuitry is to not schedule speculative instructions until the branches that precede the instance of the single instruction have been resolved.

5. The method of claim 1 , further comprising setting a marker for each branch to resolve.

6. The method of claim 5 , wherein the markers are set in entries a branch prediction unit.

7. An apparatus comprising:

decoding circuitry to decode an instance of a single instruction that includes an indication that a branching fence operation is to be erected such that instructions subsequent to the instance of the single instruction are not speculatively executed until branches that precede the instance of the single instruction have been resolved, wherein only branches need to be resolved and not non-branch instructions before any instructions subsequent to the instance of the single instruction are speculatively executed; and

execution circuitry to execute the decoded instance of the single instruction to halt speculative execution of any instructions subsequent to the decoded instruction while all preceding branches are resolved.

8. The apparatus of claim 7 , wherein the indication is an opcode of the instance of the single instruction.

9. The apparatus of claim 7 , wherein the indication is included in a prefix of the instance of the single instruction.

10. The apparatus of claim 7 , wherein, in response to the instance of the single instruction, scheduler circuitry is to not schedule speculative instructions until the branches that precede the instance of the single instruction have been resolved.

11. The apparatus of claim 7 , further comprising setting a marker for each branch to resolve.

12. The apparatus of claim 11 , wherein the markers are set in entries a branch prediction unit.

13. A non-tangible machine-readable storage medium storing an instance of a single instruction that is to cause a processor to perform a method comprising:

decoding the instance of the single instruction that includes an indication that a branching fence operation is to be erected such that instructions subsequent to the instance of the single instruction are not speculatively executed until branches that precede the instance of the single instruction have been resolved, wherein only branches need to be resolved and not non-branch instructions before any instructions subsequent to the instance of the single instruction are speculatively executed; and

executing the decoded instance of the single instruction to halt speculative execution of any instructions subsequent to the decoded instruction while all preceding branches are resolved.

14. The non-transitory machine-readable storage medium of claim 13 , wherein the indication is an opcode of the instance of the single instruction.

15. The non-transitory machine-readable storage medium of claim 13 , wherein the indication is included in a prefix of the instance of the single instruction.

16. The non-transitory machine-readable storage medium of claim 13 , wherein, in response to the instance of the single instruction, scheduler circuitry is to not schedule speculative instructions until the branches that precede the instance of the single instruction have been resolved.

17. The non-transitory machine-readable storage medium of claim 13 , further comprising setting a marker for each branch to resolve.

18. The non-transitory machine-readable storage medium of claim 17 , wherein the markers are set in entries a branch prediction unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2019
From: CHAPPELL, ROBERT S.; BRANDT, JASON W.; COX, ALAN; MALLICK, ASIT; NUZMAN, JOSEPH; VAN DE VEN, ARJAN
To: INTEL CORPORATION
Reel/Frame 048595/0889 →
Continuity (2)
Provisional Application 62660175 · Apr 19, 2018
Related Publication 20190324756A1 · Oct 24, 2019