JP2021504800A - 分岐予測回路への入力のエンコード - Google Patents
分岐予測回路への入力のエンコード Download PDFInfo
- Publication number
- JP2021504800A JP2021504800A JP2020528089A JP2020528089A JP2021504800A JP 2021504800 A JP2021504800 A JP 2021504800A JP 2020528089 A JP2020528089 A JP 2020528089A JP 2020528089 A JP2020528089 A JP 2020528089A JP 2021504800 A JP2021504800 A JP 2021504800A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- target
- key
- address
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 80
- 238000012545 processing Methods 0.000 claims description 72
- 230000002441 reversible effect Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 10
- 230000003068 static effect Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000009466 transformation Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 49
- 230000006870 function Effects 0.000 description 18
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Advance Control (AREA)
Abstract
Description
例外レベル(異なる動作モード、例えば、ユーザ・モード、カーネル・モード、ハイパーバイザ・モードを区別する)
特権レベル(異なる実行パーミッションを区別する)
ASID(アドレス空間ID(address space ID)―異なるアプリケーション・レベルの実行コンテキストを区別する)
VMID(仮想マシンID(virtual machine ID)―異なるオペレーティング・システム若しくは仮想マシン・レベルの実行コンテキスト、又は異なるオペレーティング・システム若しくは仮想マシンの制御下で実行する同一のASIDを有するアプリケーションを区別する)
NS(non−secure/secure)(装置の現在のセキュリティ状態を示す非セキュア/セキュア状態)
物理プロセッサ・コア数(ハードウェア内に設けられる異なるプロセッサ・コアで実行するプロセスを区別する)
論理コア数(ハードウェア内に設けられる共有プロセッサ・コアの異なる論理パーティションで実行される実行環境を区別する)
1つ又は複数のソフトウェア書き込み可能レジスタ(キーのさらなる変形を提供するためのキーを導出するために使用されるさらなる入力をソフトウェアが与えることができるように、例えば、これはそのプロセス下で実行しているプロセスのASID又はVMIDなどのコンテキスト識別子を知っているプロセスが、そのプロセスによって使用されるキーの値を予測することをより困難にする)。
・例外レベル79
・実行特権レベル80
・アドレス空間ID(ASID)81
・仮想マシンID(VMID)82
・セキュリティ状態(NS)83
・物理コア数84
・論理コア数85
・真の乱数、又は疑似乱数であり得る、乱数値86。(疑似)乱数は、それぞれの論理プロセッサに関して異なる論理プロセッサごとの(疑似)乱数89、それぞれの物理プロセッサ・コアに関して異なる物理プロセッサごとの(疑似)乱数90、及びデータ処理システム内のすべての論理又は物理プロセッサ・コア間で共有されるが、あるシステム上でのキー・ブレイクが別のシステムで再利用され得る機会を低減するためにシステムごとに異なっている、システム(疑似)乱数91、のうちの少なくとも1つから導出することができる。(或いは、これらのうちの任意の1つ又は複数)。乱数のこれらの要素89、90、91のそれぞれは、データ処理装置2がスタート・アップする都度、更新され得る。
・1つ又は複数のソフトウェア書き込み可能レジスタ値87、エンコード演算についてさらなる乱雑さを与えるためにソフトウェアの制御下でレジスタ14に書き込むことができる。
・コンテナID86(最も制限されるアクセス権を有する最低の特権レベルにある実行環境の異なる部分を区別する識別子)。
・条件1:プロセスAが、別のプロセスBによってBTB142に与えられたターゲット・アドレスを使用することができる。
・条件2:プロセスBが、プロセスAによってアクセスされるBTBエントリのターゲットを制御することができる。
図11の上の実例では、異なるコンテキスト間のBTBにおいてタグ情報として使用される領域識別子の再利用により、プロセス3はプロセス1によって与えられるターゲット・アドレスを使用することができる(条件1)。やはり、プロセス1は、プロセス3によってアクセスされるBTBエントリのターゲットを制御することができるが、その理由はプロセス3の分岐とタグ・ビット[20:16]を共有する所望のターゲット・アドレスで分岐を実行することができるからであり、それによって、所望のターゲット・アドレスは、プロセス3によってヒットされるBTB142のエントリに割り当てられることになる。より一般的には、これらの条件は、タグ情報158の値が複数の実行コンテキスト間で再利用することができる分岐ターゲット予測構造で生じる可能性がある。領域テーブルは、これが生じ得る理由の1つであるが、他の理由は単純にタグ情報が現在の実行コンテキスト(現在の実行環境)の識別子に依存しないことである。
(1)一連の命令に関連して少なくとも1つの分岐予測状態エントリを記憶するように構成される分岐予測回路と、新しい分岐予測状態エントリを生成するために少なくとも1つの入力を受信するための入力回路であって、少なくとも1つの入力は複数ビットを含む、入力回路と、一連の命令が実行されている現在の実行パーミッションを示す値に基づいて、複数ビットの少なくとも一部をエンコードするように構成されるコーディング回路とを備える、データ処理装置。
(2)コーディング回路は、キーを使用することによりビットの少なくとも一部をエンコードするよう構成され、キーは一連の命令が実行されている現在の実行パーミッションに基づいている、条項(1)に記載のデータ処理装置。
(3)コーディング回路は、キーを使用して複数ビットの少なくとも一部を再配列することにより、複数ビットの少なくとも一部をエンコードするよう構成される、条項(2)に記載のデータ処理装置。
(4)コーディング回路は、キーを使用して複数ビットの少なくとも一部をトグルすることにより、複数ビットの少なくとも一部をエンコードするよう構成される、条項(2)に記載のデータ処理装置。
(5)コーディング回路は、キーを使用してハッシュ関数を実施することにより、複数ビットの少なくとも一部をエンコードするよう構成される、条項(2)に記載のデータ処理装置。
(6)ハッシュ関数は、可逆的である、条項(5)に記載のデータ処理装置。
(7)コーディング回路は、キーでXOR演算を実施することにより、複数ビットの少なくとも一部をエンコードするよう構成される、条項(2)に記載のデータ処理装置。
(8)ハッシュ関数は、一方向のハッシュ関数である、条項(5)に記載のデータ処理装置。
(9)少なくとも1つの入力は分岐命令の命令アドレスの指標を含み、分岐予測回路は分岐命令の命令アドレスの指標を含むクエリ値を受信してクエリ値を使用して検索を実施するよう構成され、コーディング回路は検索に先立ってキーを使用してクエリ値のビットの少なくとも一部をエンコードするよう構成される、条項(2)から(8)までのいずれか一項に記載のデータ処理装置。
(10)コーディング回路は、現在の実行環境に関連付けられるキーの値を再計算し、キーの再計算された値を使用してクエリ値の複数ビットの少なくとも一部にエンコード演算を実施するよう構成される、条項(9)に記載のデータ処理装置。
(11)少なくとも1つの入力は分岐命令のデスティネーション・アドレスの指標を含み、分岐予測回路は分岐命令の命令アドレスの指標を含むクエリ値を受信してクエリ値を使用して検索を実施するよう構成され、装置はクエリ値を受信することに応じて出力される分岐予測回路の出力に対してデコードを実施するためのデコード回路を備える、条項(2)から(10)までのいずれか一項に記載のデータ処理装置。
(12)デコードは、キーの値を再計算し、次いでデコード関数を実施することを含む、条項(11)に記載のデータ処理装置。
(13)キーは、一連の命令が実行されている例外レベル、特権レベル、ASID、VMID、NS、物理プロセッサ・コア数、及び論理コア数を示す値のあらゆる組み合わせ、並びに1つ又は複数のソフトウェア書き込み可能レジスタ、にさらに基づいている、条項(1)から(12)までのいずれかに記載のデータ処理装置。
(14)キーは、以前に生成された乱数にさらに基づいている、条項(1)から(13)までのいずれかに記載のデータ処理装置。
(15)以前に生成された乱数は、論理プロセッサごとの要素、物理プロセッサごとの要素、及びシステム全体の要素の少なくとも1つを含む、条項(14)に記載のデータ処理装置。
(16)以前に生成された乱数の少なくとも一部は、スタートアップ時に生成される、条項(15)に記載のデータ処理装置。
(17)以前に生成された乱数の少なくとも一部は、疑似乱数である、条項(14)から(16)までのいずれか一項に記載のデータ処理装置。
(18)キーは、現在の実行環境又は現在の実行パーミッションに関連付けられる少なくとも1つの値を含む、少なくとも1つのキー入力パラメータに適用される一方向変形に基づいている、条項(1)から(17)までのいずれか一項に記載のデータ処理装置。
(19)一連の命令は、最低の実行パーミッションで実行するよう構成された複数の実行環境のうちの1つで実行することができ、コーディング回路は、一連の命令が実行されている複数の実行環境のうちの1つの識別子にさらに基づいて、複数ビットの少なくとも一部をエンコードするよう構成される、条項(1)から(17)までのいずれかに記載のデータ処理装置。
(20)一連の命令が投機的な状態で実行されている間、命令フェッチ・フォールト及び命令デコード・フォールトのあらゆる組み合わせのレートを検出し、レートが所定のしきい値を上回って増加することに応答して割り込みを発生させるか、又はエラー応答を作成するするよう構成された、監視回路を備える、条項(1)から(19)までのいずれかに記載のデータ処理装置。
(21)所定のしきい値は、直前のレートよりも少なくとも20%上回る、条項(20)に記載のデータ処理装置。
(22)一連の命令に関連して少なくとも1つの分岐予測状態エントリを記憶する手段と、新しい分岐予測状態エントリを生成するために少なくとも1つの入力を受信する手段であって、少なくとも1つの入力は複数ビットを含む、受信する手段と、一連の命令が実行されている現在の実行パーミッションを示す値に基づいて、前記少なくとも1つの入力の複数ビットの少なくとも一部をエンコードする手段とを備える、データ処理装置。
(23)一連の命令に関連して少なくとも1つの分岐予測状態エントリを記憶することと、新しい分岐予測状態エントリを生成するために少なくとも1つの入力を受信することであって、少なくとも1つの入力は複数ビットを含む、受信することと、一連の命令が実行されている現在の実行パーミッションを示す値に基づいて、複数ビットの少なくとも一部をエンコードすることとを含む、方法。
(24)複数の実行コンテキストのうちの1つでデータ処理を実施するための処理回路と、複数の分岐ターゲット・エントリを含み、それぞれの分岐ターゲット・エントリは少なくとも1つの分岐ターゲット・アドレスを示す分岐情報を指定する、分岐ターゲット予測構造と、現在の実行コンテキストに関連付けられる暗号化キーを使用して分岐ターゲット予測構造に書き込まれる分岐情報を暗号化するための暗号化回路と、現在の実行コンテキストに関連付けられる暗号化キーを使用して分岐ターゲット予測構造から読み出された分岐情報を復号化するための復号化回路とを備える、装置。
(25)それぞれの分岐ターゲット・エントリは、タグ情報を指定し、装置は、現在の実行コンテキストに関連付けられる命令フェッチ・アドレスについて分岐ターゲット予測ルックアップを実施するための分岐ターゲット予測回路を備え、分岐ターゲット予測ルックアップは、分岐ターゲット予測構造の分岐ターゲット・エントリのサブセットのいずれかが、命令フェッチ・アドレスについて決定されたターゲット・タグに対応するタグ情報を指定するかどうかを判断することを含む、条項(24)に記載の装置。
(26)ターゲット・タグの値は、複数の実行コンテキストのうち2つ以上で再利用可能である、条項(25)に記載の装置。
(27)分岐ターゲット・エントリのサブセットのいずれもターゲット・タグに対応するタグ情報を指定しない場合、また命令フェッチ・アドレスが分岐命令を含む少なくとも1つの命令のブロックを指定する場合、暗号化回路は、現在の実行コンテキストに関連付けられる暗号化キーを使用して分岐命令についての実際の分岐情報を暗号化するよう構成され、分岐ターゲット予測回路は、暗号化された分岐情報を指定し、ターゲット・タグに対応するタグ情報を指定する分岐ターゲット予測構造の分岐ターゲット・エントリを割り当てるよう構成される、条項(25)又は(26)に記載の装置。
(28)分岐ターゲット・エントリのサブセットのうちの1つがターゲット・タグに対応するタグ情報を指定する場合、復号化回路は、エントリのサブセットのうちの前記1つに記憶される分岐情報を現在の実行コンテキストに関連付けられる暗号化キーを使用して復号化するよう構成され、分岐ターゲット予測回路は、復号化された分岐情報を命令フェッチ・アドレスについての予測された分岐情報として出力するよう構成される、条項(25)から(27)までのいずれかに記載の装置。
(29)暗号化キーは、現在の実行コンテキストに固定された静的なキーを含む、条項(24)から(28)までのいずれかに記載の装置。
(30)現在の実行コンテキストについての静的なキーは、複数の実行コンテキストの少なくとも2つと、現在の実行コンテキストに特有の少なくとも1つのコンテキスト識別子とで共有される共通キーに依存している、条項(29)に記載の装置。
(31)暗号化キーは、現在の実行コンテキストに可変の動的なキー含む、条項(24)から(30)までのいずれかに記載の装置。
(32)現在の実行コンテキストについての更新された暗号化キーを生成するためのキー生成回路を備える、条項(31)に記載の装置。
(33)分岐ターゲット・エントリのサブセットのいずれもターゲット・タグに対応するタグ情報を指定しない場合、また命令フェッチ・アドレスが分岐命令を含む少なくとも1つの命令のブロックを指定する場合、暗号化回路は、現在の実行コンテキストに関連付けられる暗号化キーを使用してターゲット・タグを暗号化するよう構成され、分岐ターゲット予測回路は、暗号化されたターゲット・タグを割り当てられた分岐ターゲット・エントリについてのタグ情報として指定するよう構成され、分岐ターゲット予測ルックアップにおいて、復号化回路は分岐ターゲット・エントリのサブセットのそれぞれのタグ情報を復号化するよう構成され、分岐ターゲット予測回路は、復号化されたタグ情報をターゲット・タグと比較するよう構成される、条項(25)に記載の装置。
(34)分岐情報は、分岐ターゲット・アドレス以外の少なくとも1つの分岐情報をさらに示す、条項(24)から(33)までのいずれかに記載の装置。
(35)分岐ターゲット予測回路は、現在の実行コンテキストに関連付けられる少なくとも1つのコンテキスト識別子に依存するターゲット・タグを決定するよう構成される、条項(25)に記載の装置。
(36)それぞれの領域エントリが、分岐コンテキスト情報よりも少ないビットを含む領域識別子へ分岐コンテキスト情報をマッピングする、複数の領域エントリを含む領域テーブルを備え、分岐コンテキスト情報は対応する実行コンテキストに関連付けられる少なくとも1つのコンテキスト識別子を含む、条項(25)に記載の装置。
(37)命令フェッチ・アドレスについてのターゲット・タグは、領域テーブルによって命令フェッチ・アドレスに関連付けられる分岐コンテキスト情報にマッピングされたターゲット領域識別子を含む、条項(36)に記載の装置。
(38)それぞれの領域エントリは対応する実行コンテキストに関連付けられる暗号化キーを指定する、条項(36)又は(37)に記載の装置。
(39)領域テーブルの所与の領域エントリによって与えられたマッピングが更新される場合、分岐ターゲット予測回路は、マッピング更新後に所与の領域エントリに関連付けられる実行コンテキストに関連付けられる暗号化キーの更新をトリガするよう構成される、条項(36)から(38)までのいずれかに記載の装置。
(40)所与の領域エントリの分岐コンテキスト情報は、以前の分岐ターゲット予測ルックアップによって所与の領域エントリが領域テーブルに割り当てられた命令フェッチ・アドレスの部分をさらに含む、条項(36)から(39)までのいずれかに記載の装置。
(41)分岐ターゲット予測回路は、ターゲット・タグが命令フェッチ・アドレス、及び命令フェッチ・アドレスの命令に先行する以前の分岐命令の分岐結果の履歴に依存するかどうか判断するように構成される、条項(25)に記載の装置。
(42)複数の実行コンテキストのうちの1つでデータ処理を実施するための手段と、それぞれの分岐ターゲット・エントリは少なくとも1つの分岐ターゲット・アドレスを示す分岐情報を指定する、分岐ターゲット予測構造の分岐ターゲット・エントリを記憶するための手段と、現在の実行コンテキストに関連付けられる暗号化キーを使用して記憶するための手段に書き込まれる分岐情報を暗号化するための手段と、現在の実行コンテキストに関連付けられる暗号化キーを使用して記憶するための手段から読み出された分岐情報を復号化するための手段とを備える、装置。
(43)複数の実行コンテキストのうちの1つでデータ処理を実施することと、それぞれの分岐ターゲット・エントリは少なくとも1つの分岐ターゲット・アドレスを示す分岐情報を指定する、分岐ターゲット予測構造の分岐ターゲット・エントリを記憶することと、現在の実行コンテキストに関連付けられる暗号化キーを使用して分岐ターゲット予測構造に書き込まれる分岐情報を暗号化することと、現在の実行コンテキストに関連付けられる暗号化キーを使用して分岐ターゲット予測構造から読み出された分岐情報を復号化することとを含む、方法。
Claims (29)
- 一連の命令に関連して少なくとも1つの分岐予測状態エントリを記憶するように構成される分岐予測回路と、
新しい分岐予測状態エントリを生成するために少なくとも1つの入力を受信するための入力回路であって、前記少なくとも1つの入力は複数のビットを含む、入力回路と、
前記一連の命令が実行されている現在の実行環境に関連付けられる値に基づいて、前記複数のビットの少なくとも一部をエンコードするためのエンコード演算を実施するように構成されるコーディング回路と
を備えるデータ処理装置。 - 前記エンコード演算は、前記一連の命令が実行されている現在の実行パーミッションを示す値に基づいて、前記複数のビットの前記少なくとも一部をエンコードすることを含む、請求項1に記載のデータ処理装置。
- 前記エンコード演算は、キーを使用することにより前記複数のビットの前記少なくとも一部をエンコードすることを含み、前記キーは、前記一連の命令が実行されている前記現在の実行環境に基づいている、請求項1又は2に記載のデータ処理装置。
- 前記エンコード演算は、前記キーを使用して、前記複数のビットの前記少なくとも一部を再配列すること、又はトグルすることを含む、請求項3に記載のデータ処理装置。
- 前記少なくとも1つの入力は、分岐命令の命令アドレスの指標を含み、
前記分岐予測回路は、命令の命令アドレスの指標を含むクエリ値を受信して前記クエリ値を使用して検索を実施するよう構成され、
前記コーディング回路は、前記検索に先立って前記キーを使用して前記クエリ値の複数のビットの少なくとも一部に対して前記エンコード演算を実施するよう構成される、請求項3又は4に記載のデータ処理装置。 - 前記コーディング回路は、前記現在の実行環境に関連付けられる前記キーの値を再計算し、前記キーの前記再計算された値を使用して前記クエリ値の前記複数のビットの前記少なくとも一部に対して前記エンコード演算を実施するよう構成される、請求項5に記載のデータ処理装置。
- 前記少なくとも1つの入力は、分岐命令のデスティネーション・アドレスの指標を含み、
前記分岐予測回路は、命令の命令アドレスの指標を含むクエリ値を受信して前記クエリ値を使用して検索を実施するよう構成され、
前記装置は、前記クエリ値を受信することに応じて出力される前記分岐予測回路の出力に対して逆エンコード演算を実施するための逆エンコード回路を備える、請求項3又は4に記載のデータ処理装置。 - 前記逆エンコード回路は、前記現在の実行環境に関連付けられる前記キーの値を再計算し、前記キーの前記再計算された値を使用して前記逆エンコード演算を実施するよう構成される、請求項7に記載のデータ処理装置。
- 前記キーは、
前記一連の命令が実行されている例外レベル、特権レベル、ASID、VMID、NS、物理プロセッサ・コア数、及び論理コア数、1つ又は複数のソフトウェア書き込み可能レジスタ、並びに以前に生成された乱数
のうちの少なくとも1つを示す1つ又は複数のキー入力値の任意の組み合わせにさらに基づいている、請求項3から8までのいずれか一項に記載のデータ処理装置。 - 前記以前に生成された乱数は、
論理プロセッサごとの要素、
物理プロセッサごとの要素、及び
システム全体の要素
の少なくとも1つを含む、請求項9に記載のデータ処理装置。 - 前記キーは、前記1つ又は複数のキー入力値に適用される一方向変形に基づいている、請求項9又は10に記載のデータ処理装置。
- 前記一連の命令は、最低の実行パーミッションで実行するよう構成された複数の実行環境のうちの1つで実行されることができ、前記コーディング回路は、前記一連の命令が実行されている前記複数の実行環境のうちの前記1つの識別子にさらに基づいて、前記エンコード演算を実施するよう構成される、請求項1から11までのいずれか一項に記載のデータ処理装置。
- 前記一連の命令が投機的な状態で実行されている間、命令フェッチ・フォールト及び命令デコード・フォールトの任意の組み合わせのレートを検出し、前記レートが所定の条件を満たすことに応答して例外を発生させ、又はエラー応答を作成するよう構成された監視回路を備える、請求項1から12までのいずれか一項に記載のデータ処理装置。
- 前記分岐予測回路は、複数の分岐ターゲット・エントリを含む分岐ターゲット予測構造を備え、それぞれの分岐ターゲット・エントリは、少なくとも分岐ターゲット・アドレスを指定し、
前記コーディング回路は、前記現在の実行環境に関連付けられる暗号化キーを使用して、前記分岐ターゲット予測構造に書き込まれる新しい分岐ターゲット・エントリの少なくとも一部を暗号化するための暗号化回路を備える、請求項1から13までのいずれか一項に記載のデータ処理装置。 - それぞれの分岐ターゲット・エントリは、タグ情報及び少なくとも前記分岐ターゲット・アドレスを指定する分岐データを指定し、
前記装置は、前記現在の実行環境に関連付けられる命令フェッチ・アドレスについて分岐ターゲット予測ルックアップを実施するための分岐ターゲット予測回路を備え、前記分岐ターゲット予測ルックアップは、前記分岐ターゲット予測構造の分岐ターゲット・エントリのサブセットのいずれかが、前記命令フェッチ・アドレスについて決定されたターゲット・タグに対応するタグ情報を指定するか否かを判断することを含む、請求項14に記載のデータ処理装置。 - 前記ターゲット・タグの値は、2つ以上の実行環境で再利用可能である、請求項15に記載のデータ処理装置。
- 前記暗号化回路は、前記暗号化キーを使用して前記新しい分岐ターゲット・エントリの前記タグ情報の少なくとも一部を暗号化するよう構成される、請求項15又は16に記載のデータ処理装置。
- 前記暗号化回路は、前記暗号化キーを使用して前記新しい分岐ターゲット・エントリの前記分岐データの少なくとも一部を暗号化するよう構成され、
前記装置は、前記分岐ターゲット予測ルックアップで前記ターゲット・タグに対応するタグ情報を指定するように特定された分岐ターゲット・エントリの前記サブセットのうちの1つの前記分岐データの前記少なくとも一部を復号化する復号化回路を備える、請求項17に記載のデータ処理装置。 - 前記暗号化キーは、前記現在の実行環境に固定された静的なキーを含む、請求項14から18までのいずれか一項に記載のデータ処理装置。
- 前記現在の実行環境についての前記静的なキーは、前記複数の実行環境の少なくとも2つと、前記現在の実行環境に特有の少なくとも1つの識別子とで共有される共通キーに依存している、請求項19に記載のデータ処理装置。
- 前記暗号化キーは、前記現在の実行環境に可変の動的なキーを含む、請求項14から18までのいずれか一項に記載の装置。
- 前記現在の実行環境についての更新された暗号化キーを生成するためのキー生成回路を備える、請求項21に記載の装置。
- 複数の領域エントリを含む領域テーブルを備え、各領域エントリは、分岐コンテキスト情報を、前記分岐コンテキスト情報よりも少ないビットを含む領域識別子へマッピングし、前記分岐コンテキスト情報は、対応する実行環境に関連付けられる少なくとも1つの識別子を含む、請求項15から18までのいずれか一項に記載の装置。
- 前記命令フェッチ・アドレスについての前記ターゲット・タグは、前記領域テーブルによって前記命令フェッチ・アドレスに関連付けられる前記分岐コンテキスト情報にマッピングされたターゲット領域識別子を含む、請求項23に記載の装置。
- 各領域エントリは、前記対応する実行環境に関連付けられる前記暗号化キーを指定する、請求項23又は24に記載の装置。
- 前記領域テーブルの所与の領域エントリによって与えられた前記マッピングが更新される場合、前記分岐ターゲット予測回路は、前記マッピング更新後に前記所与の領域エントリに関連付けられる前記実行環境に関連付けられる前記暗号化キーの更新をトリガするよう構成される、請求項23から25までのいずれか一項に記載の装置。
- 前記分岐ターゲット予測回路は、前記命令フェッチ・アドレス、及び前記命令フェッチ・アドレスの命令に先行する以前の分岐命令の分岐結果の履歴に依存して、前記ターゲット・タグを判断するように構成される、請求項14から26までのいずれか一項に記載の装置。
- 一連の命令に関連して少なくとも1つの分岐予測状態エントリを記憶する手段と、
新しい分岐予測状態エントリを生成するために少なくとも1つの入力を受信する手段であって、前記少なくとも1つの入力は複数のビットを含む、手段と、
前記一連の命令が実行されている現在の実行環境に関連付けられる値に基づいて、前記少なくとも1つの入力の前記複数のビットの少なくとも一部をエンコードする手段と
を備えるデータ処理装置。 - 一連の命令に関連して少なくとも1つの分岐予測状態エントリを記憶するステップと、
新しい分岐予測状態エントリを生成するために少なくとも1つの入力を受信するステップであって、前記少なくとも1つの入力は複数のビットを含む、ステップと、
前記一連の命令が実行されている現在の実行環境に関連付けられる値に基づいて、前記複数のビットの少なくとも一部をエンコードするステップと
を含む方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/825,524 | 2017-11-29 | ||
US15/825,524 US10819736B2 (en) | 2017-11-29 | 2017-11-29 | Encoding of input to branch prediction circuitry |
PCT/GB2018/053033 WO2019106333A1 (en) | 2017-11-29 | 2018-10-19 | Encoding of input to branch prediction circuitry |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021504800A true JP2021504800A (ja) | 2021-02-15 |
JP7307727B2 JP7307727B2 (ja) | 2023-07-12 |
Family
ID=64049461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020528089A Active JP7307727B2 (ja) | 2017-11-29 | 2018-10-19 | 分岐予測回路への入力のエンコード |
Country Status (6)
Country | Link |
---|---|
US (1) | US10819736B2 (ja) |
EP (1) | EP3718003B1 (ja) |
JP (1) | JP7307727B2 (ja) |
KR (1) | KR102713620B1 (ja) |
CN (1) | CN111417928B (ja) |
WO (1) | WO2019106333A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024176669A1 (ja) * | 2023-02-22 | 2024-08-29 | 富士通株式会社 | マイクロプロセッサ及びマイクロプロセッサの処理方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690967B1 (en) * | 2015-10-29 | 2017-06-27 | Digimarc Corporation | Detecting conflicts between multiple different encoded signals within imagery |
US11347507B2 (en) * | 2018-03-15 | 2022-05-31 | SiFive, Inc. | Secure control flow prediction |
US11797665B1 (en) * | 2018-06-28 | 2023-10-24 | Advanced Micro Devices, Inc. | Protection against branch target buffer poisoning by a management layer |
US11630920B2 (en) * | 2018-06-29 | 2023-04-18 | Intel Corporation | Memory tagging for side-channel defense, memory safety, and sandboxing |
US10929535B2 (en) * | 2018-06-29 | 2021-02-23 | Intel Corporation | Controlled introduction of uncertainty in system operating parameters |
US10740104B2 (en) * | 2018-08-16 | 2020-08-11 | International Business Machines Corporation | Tagging target branch predictors with context with index modification and late stop fetch on tag mismatch |
GB2578432B (en) * | 2018-10-25 | 2021-04-28 | Advanced Risc Mach Ltd | Technique for maintaining prediction data used to predict whether a branch represented by a branch instruction will be taken |
US11099851B2 (en) * | 2018-10-26 | 2021-08-24 | International Business Machines Corporation | Branch prediction for indirect branch instructions |
US11449343B2 (en) * | 2018-12-14 | 2022-09-20 | Apple Inc. | Indirect branch predictor storing encrypted branch information fields and security tag for security protection |
US11321095B2 (en) | 2018-12-14 | 2022-05-03 | Apple Inc. | Indirect branch predictor security protection |
US20200210626A1 (en) * | 2018-12-28 | 2020-07-02 | Samsung Electronics Co., Ltd. | Secure branch predictor with context-specific learned instruction target address encryption |
CN110347432B (zh) * | 2019-06-17 | 2021-09-14 | 海光信息技术股份有限公司 | 处理器、分支预测器及其数据处理方法、分支预测方法 |
GB2613978A (en) * | 2020-09-24 | 2023-06-21 | Advanced Risc Mach Ltd | Branch prediction using hypervectors |
FR3118234B1 (fr) * | 2020-12-18 | 2024-01-19 | St Microelectronics Alps Sas | Procédé de détection d’ingénierie inversée sur une unité de traitement utilisant un pointeur d’instruction et circuit intégré correspondant |
US20220197661A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | Context-based memory indirect branch target prediction |
US11397685B1 (en) * | 2021-02-24 | 2022-07-26 | Arm Limited | Storing prediction entries and stream entries where each stream entry includes a stream identifier and a plurality of sequential way predictions |
US12086600B2 (en) * | 2022-12-05 | 2024-09-10 | Microsoft Technology Licensing, Llc | Branch target buffer with shared target bits |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052499A1 (en) * | 2006-07-11 | 2008-02-28 | Cetin Kaya Koc, Ph.D. | Systems and methods for providing security for computer systems |
US20090089564A1 (en) * | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
US20110296202A1 (en) * | 2010-05-25 | 2011-12-01 | Via Technologies, Inc. | Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions |
US20160092702A1 (en) * | 2014-09-26 | 2016-03-31 | David M. Durham | Cryptographic ponter address encoding |
US20160170769A1 (en) * | 2014-12-15 | 2016-06-16 | Michael LeMay | Technologies for indirect branch target security |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0682395B2 (ja) | 1988-01-30 | 1994-10-19 | 株式会社東芝 | ビットマスク生成回路 |
DE19526960A1 (de) | 1994-09-27 | 1996-03-28 | Hewlett Packard Co | Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung |
US5577231A (en) | 1994-12-06 | 1996-11-19 | International Business Machines Corporation | Storage access authorization controls in a computer system using dynamic translation of large addresses |
DE19602872A1 (de) | 1995-01-27 | 1996-08-08 | Gmd Gmbh | Verfahren zum Betreiben einer Adreßumsetzvorrichtung |
US5752275A (en) | 1995-03-31 | 1998-05-12 | Intel Corporation | Translation look-aside buffer including a single page size translation unit |
KR100395763B1 (ko) * | 2000-02-01 | 2003-08-25 | 삼성전자주식회사 | 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기 |
US6633963B1 (en) | 2000-03-31 | 2003-10-14 | Intel Corporation | Controlling access to multiple memory zones in an isolated execution environment |
WO2003003195A1 (en) | 2001-06-29 | 2003-01-09 | Koninklijke Philips Electronics N.V. | Method, apparatus and compiler for predicting indirect branch target addresses |
US7221764B2 (en) * | 2002-02-14 | 2007-05-22 | Agere Systems Inc. | Security key distribution using key rollover strategies for wireless networks |
US20040117318A1 (en) * | 2002-12-16 | 2004-06-17 | Grawrock David W. | Portable token controlling trusted environment launch |
US8200684B2 (en) | 2003-12-08 | 2012-06-12 | Ebay Inc. | Method and system for dynamic templatized query language in software |
US20050160229A1 (en) | 2004-01-16 | 2005-07-21 | International Business Machines Corporation | Method and apparatus for preloading translation buffers |
US7389402B2 (en) | 2005-06-07 | 2008-06-17 | Advanced Micro Devices, Inc. | Microprocessor including a configurable translation lookaside buffer |
US9384003B2 (en) * | 2007-10-23 | 2016-07-05 | Texas Instruments Incorporated | Determining whether a branch instruction is predicted based on a capture range of a second instruction |
US7925871B2 (en) * | 2008-02-19 | 2011-04-12 | Arm Limited | Identification and correction of cyclically recurring errors in one or more branch predictors |
US7937573B2 (en) * | 2008-02-29 | 2011-05-03 | Freescale Semiconductor, Inc. | Metric for selective branch target buffer (BTB) allocation |
US8225139B2 (en) | 2009-06-29 | 2012-07-17 | Oracle America, Inc. | Facilitating transactional execution through feedback about misspeculation |
US20110093658A1 (en) * | 2009-10-19 | 2011-04-21 | Zuraski Jr Gerald D | Classifying and segregating branch targets |
US8635428B2 (en) | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US8296538B2 (en) | 2010-02-17 | 2012-10-23 | Arm Limited | Storing secure mode page table data in secure and non-secure regions of memory |
EP2662767A1 (en) * | 2011-01-07 | 2013-11-13 | Fujitsu Limited | Computation processing device and branch prediction method |
CN104794123B (zh) | 2014-01-20 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
US10380183B2 (en) | 2014-04-03 | 2019-08-13 | International Business Machines Corporation | Building and querying hash tables on processors |
US9690714B1 (en) | 2014-04-07 | 2017-06-27 | Google Inc. | Multiple page-size translation lookaside buffer |
US9690587B2 (en) * | 2014-04-08 | 2017-06-27 | International Business Machines Corporation | Variable updates of branch prediction states |
US9983878B2 (en) | 2014-05-15 | 2018-05-29 | International Business Machines Corporation | Branch prediction using multiple versions of history data |
US10185731B2 (en) | 2016-03-31 | 2019-01-22 | Arm Limited | Indexing entries of a storage structure shared between multiple threads |
US10977386B2 (en) * | 2017-08-24 | 2021-04-13 | Voice.Vote SPC | Method and apparatus for disconnection of user actions and user identity |
-
2017
- 2017-11-29 US US15/825,524 patent/US10819736B2/en active Active
-
2018
- 2018-10-19 WO PCT/GB2018/053033 patent/WO2019106333A1/en unknown
- 2018-10-19 CN CN201880075891.3A patent/CN111417928B/zh active Active
- 2018-10-19 JP JP2020528089A patent/JP7307727B2/ja active Active
- 2018-10-19 EP EP18795774.1A patent/EP3718003B1/en active Active
- 2018-10-19 KR KR1020207017587A patent/KR102713620B1/ko active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052499A1 (en) * | 2006-07-11 | 2008-02-28 | Cetin Kaya Koc, Ph.D. | Systems and methods for providing security for computer systems |
US20090089564A1 (en) * | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
US20110296202A1 (en) * | 2010-05-25 | 2011-12-01 | Via Technologies, Inc. | Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions |
US20110296206A1 (en) * | 2010-05-25 | 2011-12-01 | Via Technologies, Inc. | Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions |
US20160092702A1 (en) * | 2014-09-26 | 2016-03-31 | David M. Durham | Cryptographic ponter address encoding |
US20180101484A1 (en) * | 2014-09-26 | 2018-04-12 | Intel Corporation | Cryptographic pointer address encoding |
US20160170769A1 (en) * | 2014-12-15 | 2016-06-16 | Michael LeMay | Technologies for indirect branch target security |
US20180088957A1 (en) * | 2014-12-15 | 2018-03-29 | Intel Corporation | Technologies for indirect branch target security |
Non-Patent Citations (1)
Title |
---|
D EVTYUSHKIN, D PONOMAREV, N ABU-GHAZALEH: "Jump over ASLR: Attacking branch predictors to bypass ASLR", 2016 49TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE (MICRO), JPN6022047911, 15 October 2016 (2016-10-15), US, ISSN: 0004918551 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024176669A1 (ja) * | 2023-02-22 | 2024-08-29 | 富士通株式会社 | マイクロプロセッサ及びマイクロプロセッサの処理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019106333A1 (en) | 2019-06-06 |
KR20200090837A (ko) | 2020-07-29 |
EP3718003A1 (en) | 2020-10-07 |
KR102713620B1 (ko) | 2024-10-08 |
US20190166158A1 (en) | 2019-05-30 |
US10819736B2 (en) | 2020-10-27 |
EP3718003B1 (en) | 2022-04-13 |
JP7307727B2 (ja) | 2023-07-12 |
CN111417928B (zh) | 2024-09-24 |
CN111417928A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7307727B2 (ja) | 分岐予測回路への入力のエンコード | |
US11126714B2 (en) | Encoding of input to storage circuitry | |
US10725992B2 (en) | Indexing entries of a storage structure shared between multiple threads | |
US10540181B2 (en) | Managing branch prediction information for different contexts | |
CN111886580B (zh) | 用于控制分支预测的装置和方法 | |
US20220382885A1 (en) | Cryptographic computing using encrypted base addresses and used in multi-tenant environments | |
US11797673B2 (en) | Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception | |
US11868469B2 (en) | Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception | |
JP2022514803A (ja) | コンピュータシステムの投機的サイドチャネル分析に対する防御 | |
US11734426B2 (en) | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location | |
US11853424B2 (en) | Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location | |
US11733972B2 (en) | Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address | |
US11314641B2 (en) | Apparatus and method for executing instruction using range information associated with a pointer | |
US11907369B2 (en) | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception | |
US10599437B2 (en) | Managing obscured branch prediction information | |
JP7443641B2 (ja) | 命令の機密としての動的な指定 | |
TW201802693A (zh) | 用於偶然記憶體存取程式指令的許可控制 | |
US11995446B2 (en) | Branch predictor storing encrypted information | |
US11604873B1 (en) | Noisy instructions for side-channel attack mitigation | |
Jaamoum | Strategies for securing cache memories against software side-channel attacks | |
CN116340963A (zh) | 用于密态计算的瞬时侧信道感知架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211012 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221025 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230210 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230630 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7307727 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |