JP7510253B2 - 分岐予測器 - Google Patents
分岐予測器 Download PDFInfo
- Publication number
- JP7510253B2 JP7510253B2 JP2019211983A JP2019211983A JP7510253B2 JP 7510253 B2 JP7510253 B2 JP 7510253B2 JP 2019211983 A JP2019211983 A JP 2019211983A JP 2019211983 A JP2019211983 A JP 2019211983A JP 7510253 B2 JP7510253 B2 JP 7510253B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- branch prediction
- prediction state
- state information
- 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.)
- Active
Links
- 230000003068 static effect Effects 0.000 claims description 94
- 238000012545 processing Methods 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 15
- 238000009738 saturating Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 19
- 230000015654 memory Effects 0.000 description 19
- 230000006399 behavior Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 101100228884 Arabidopsis thaliana GHR1 gene Proteins 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Classifications
-
- 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/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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
- 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/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
・ 分岐の結果が条件ステータスレジスタに記憶される条件コードに依存するが、分岐自身は分岐する又は分岐しないかどうかの判断について、2つのオペランド同士の比較をトリガしない、分岐命令を含むことができる。いくつかの実例において、そのような条件付きの分岐命令は単一の「分岐タイプ」とみなされ得る。他の実例において、異なる試験条件を有する条件付き分岐命令は異なる分岐タイプとみなされ得る(試験条件は、分岐が分岐されるようにするための条件コードによって満足される条件である)。例えば、branch-if-equal(B.EQ)条件付き分岐命令は条件コードが「等しい」条件を示す場合に分岐することができ、一方でbranch-if-not-equal(B.NE)条件付き分岐命令は条件コードが「等しくない」条件を示す場合分岐が分岐できるようにトリガすることができる。したがって、いくつかの実例において、B.NE及びB.EQ分岐命令は異なる分岐タイプとして取り扱うことができる。より一般的に、異なる試験条件を指定する条件付き分岐命令はサブセットに分割することができ、試験条件の第1のサブセットを指定する条件付き分岐は、試験条件の第2のサブセットを指定する条件付き分岐への異なる「分岐タイプ」として取り扱われる。
・ 分岐を取るかどうかを判断するための比較も実施する、比較及び分岐命令
・ 比較がデフォルトでは指定されたオペランドと値0との比較である、比較及びbranch if zero(CBZ)命令
・ 条件付き分岐演算を実行することに加えて、分岐が分岐する場合、分岐の後次の順次の命令のアドレスが関数のリターンアドレスとして機能するためにリンクレジスタに書き込まれ、関数のリターンアドレスは分岐先の関数の処理が完了すると実行の対象となるものである、リンク命令を伴う分岐。
・ 条件付き分岐演算に加えて、命令セットの変更をやはりトリガし、それによって分岐が分岐する場合分岐に続いて実行される命令は、分岐に先立って使用されている命令セットとは異なる命令セットにしたがってデコードされる、分岐及び変更命令セット命令。
例えば、ビット1は分岐するという予測を表すことができ、ビット0は分岐しないという予測を表すことができ、又はその逆も可である。
予測(オフセット、オペコード、予測_テーブル[][])=予測_テーブル[オペコード][オフセット<0]
となる。
1.リセットにおいて、すべてのカウンタはゼロである。
2.分岐が分岐すると分かると、プロセッサハードウェアによって、そのオペコード及びオフセット符号についてのカウンタ(すなわち、予測_テーブル[オペコード][オフセット<0])をインクリメントする(飽和させる)。
3.分岐が分岐しないと解決されると、プロセッサハードウェアによって、そのオペコード及びオフセット符号についてのカウンタをデクリメントする(飽和させる)。
4.予測が行われる際、予測は必要とされるオペコード及びオフセットについてインデックス付けされたカウンタが、しきい値を上回っているかどうか、又はしきい値を下回っているかどうかに基づいている(例えば、しきい値がゼロである場合、予測はインデックス付けされたカウンタの最上位ビットに基づくことができる)。
Claims (18)
- 命令に応答してデータ処理を実施するための処理回路と、
所与の分岐命令について分岐する及び分岐しないのうちの1つとして、前記所与の分岐命令の少なくとも1つのプロパティに基づいてインデックス付けされる分岐予測状態情報に基づいて分岐結果を予測するための分岐予測器と
を備える装置であって、
動作の静的分岐予測モードにおいて、前記分岐予測器は、前記処理回路によって前記静的分岐予測モードにある間実行される分岐命令の実際の分岐結果とは独立してセットされる前記分岐予測状態情報の静的値に基づいて前記分岐結果を予測するように構成され、
前記分岐予測状態情報の前記静的値はプログラム可能であり、
動作のプロファイリングモードにおいて、前記分岐予測器は前記プロファイリングモードの間実行される分岐命令の実際の分岐結果に基づいて前記分岐予測状態情報を訓練するように構成される、
装置。 - 前記処理回路は、前記処理回路によって実行される分岐予測状態プログラミング命令に応答して、前記分岐予測状態情報の少なくともサブセットをプログラムするように構成される、請求項1に記載の装置。
- 前記分岐予測状態プログラミング命令は、
システムレジスタ更新命令と、
ターゲットアドレスとして前記分岐予測状態情報の前記少なくともサブセットを格納するレジスタにマッピングされるアドレスを指定するストア命令と
のうちの1つを含む、請求項2に記載の装置。 - 命令に応答してデータ処理を実施するための処理回路と、
所与の分岐命令について分岐する及び分岐しないのうちの1つとして、前記所与の分岐命令の少なくとも1つのプロパティに基づいてインデックス付けされる分岐予測状態情報に基づいて分岐結果を予測するための分岐予測器と
を備える装置であって、
動作の静的分岐予測モードにおいて、前記分岐予測器は、前記処理回路によって前記静的分岐予測モードにある間実行される分岐命令の実際の分岐結果とは独立してセットされる前記分岐予測状態情報の静的値に基づいて前記分岐結果を予測するように構成され、
前記分岐予測状態情報の前記静的値はプログラム可能であり、
前記処理回路は、前記処理回路によって実行される分岐予測状態プログラミング命令に応答して、前記分岐予測状態情報の少なくともサブセットをプログラムするように構成され、
前記処理回路は、複数の特権レベルのうちの1つにおいて命令を実行するように構成され、また前記処理回路は、前記分岐予測状態プログラミング命令がしきい値特権レベルよりも低いレベルの特権レベルで実行されると例外をトリガするように構成される、
装置。 - 前記分岐予測状態情報は前記所与の分岐命令の前記少なくとも1つのプロパティに基づいてインデックス付けされる飽和カウンタのセットを含む、請求項1に記載の装置。
- 前記処理回路は、前記処理回路によって実行される分岐予測状態抽出命令に応答して、前記プロファイリングモードの間訓練される前記分岐予測状態情報の少なくともサブセットの現在の値を抽出するように構成される、請求項1に記載の装置。
- 前記分岐予測状態抽出命令は、
システムレジスタ読み出し命令と、
ターゲットアドレスとして前記分岐予測状態情報の前記少なくともサブセットを格納するレジスタにマッピングされるアドレスを指定するロード命令と
のうちの1つを含む、請求項6に記載の装置。 - 前記処理回路は、複数の特権レベルのうちの1つにおいて命令を実行するように構成され、また前記処理回路は、前記分岐予測状態抽出命令がしきい値特権レベルよりも低いレベルの特権レベルで実行されると例外をトリガするように構成される、請求項6に記載の装置。
- 前記所与の分岐命令の前記少なくとも1つのプロパティは、前記所与の分岐命令が前方分岐か後方分岐かの指標を含む、請求項1に記載の装置。
- 前記所与の分岐命令の前記少なくとも1つのプロパティは、前記所与の分岐命令についての分岐オフセットのサイズを示す情報を含む、請求項1に記載の装置。
- 前記少なくとも1つのプロパティは、前記所与の分岐命令の命令アドレスとは独立している、請求項1に記載の装置。
- 所与の分岐命令について分岐する及び分岐しないのうちの1つとして、前記所与の分岐命令の少なくとも1つのプロパティに基づいてインデックス付けされる分岐予測状態情報に基づいて分岐結果を予測するステップ
を含む、データ処理装置のための分岐予測方法であって、
動作のプロファイリングモードにおいて、前記分岐予測状態情報は前記プロファイリングモードの間実行される分岐命令の実際の分岐結果に基づいて訓練され、
動作の静的分岐予測モードにおいて、前記分岐結果は、前記静的分岐予測モードにある間実行される分岐命令の実際の分岐結果とは独立してセットされる前記分岐予測状態情報の静的値に基づいて予測され、
前記分岐予測状態情報の前記静的値はプログラム可能である、
方法。 - 前記分岐予測器は、所与の分岐命令について分岐する及び分岐しないのうちの1つとして、前記所与の分岐命令の前記少なくとも1つのプロパティに基づいてインデックス付けされる分岐予測状態情報のオペコードインデックス付けテーブルに基づいて分岐結果を予測するように構成され、前記少なくとも1つのプロパティは前記所与の分岐命令のオペコードから導出した情報を含む、請求項1記載の装置。
- 前記少なくとも1つのプロパティは、前記所与の分岐命令の命令アドレスとは独立している、請求項13記載の装置。
- 前記少なくとも1つのプロパティは、前記所与の分岐命令が前方分岐か後方分岐かの指標も含む、請求項13に記載の装置。
- 前記分岐予測器は、分岐予測状態情報の複数のテーブルに基づいて前記分岐結果を予測するように構成され、前記複数のテーブルは前記オペコードインデックス付けテーブル、並びに前記所与の分岐命令の命令アドレス、及び以前に実行された分岐についての以前の分岐結果の履歴のうちの少なくとも1つから導出される情報に基づいてインデックス付けされる少なくとも1つのさらなるテーブルを含む、請求項13に記載の装置。
- 前記分岐予測器は動的分岐予測モードの間実行される分岐命令の実際の分岐結果に基づいて前記オペコードインデックス付けテーブルを訓練するように構成される、請求項13に記載の装置。
- 前記分岐予測器は静的分岐予測モードの間実行される分岐命令の実際の分岐結果とは独立してセットされる前記オペコードインデックス付けテーブルの静的値に基づいて前記分岐結果を予測するように構成される、請求項13に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/251,539 US10963260B2 (en) | 2019-01-18 | 2019-01-18 | Branch predictor |
US16/251,539 | 2019-01-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020119504A JP2020119504A (ja) | 2020-08-06 |
JP7510253B2 true JP7510253B2 (ja) | 2024-07-03 |
Family
ID=71608984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019211983A Active JP7510253B2 (ja) | 2019-01-18 | 2019-11-25 | 分岐予測器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10963260B2 (ja) |
JP (1) | JP7510253B2 (ja) |
KR (1) | KR20200090103A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755327B2 (en) * | 2020-03-02 | 2023-09-12 | Microsoft Technology Licensing, Llc | Delivering immediate values by using program counter (PC)-relative load instructions to fetch literal data in processor-based devices |
US20220206825A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Memory-independent and scalable state component initialization for a processor |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675769A (ja) * | 1992-05-26 | 1994-03-18 | Nec Corp | 分岐予測機構 |
JPH06124206A (ja) * | 1992-10-13 | 1994-05-06 | Oki Electric Ind Co Ltd | 分岐命令予測処理装置及びその処理方法 |
US7523298B2 (en) * | 2006-05-04 | 2009-04-21 | International Business Machines Corporation | Polymorphic branch predictor and method with selectable mode of prediction |
US11163577B2 (en) * | 2018-11-26 | 2021-11-02 | International Business Machines Corporation | Selectively supporting static branch prediction settings only in association with processor-designated types of instructions |
-
2019
- 2019-01-18 US US16/251,539 patent/US10963260B2/en active Active
- 2019-11-25 JP JP2019211983A patent/JP7510253B2/ja active Active
-
2020
- 2020-01-07 KR KR1020200001902A patent/KR20200090103A/ko unknown
Non-Patent Citations (2)
Title |
---|
SUGATeCH,分岐予測とパイプラインの関係はいかなるものか?,C MAGAZINE,日本,ソフトバンククリエイティブ株式会社,2006年01月01日,第18巻,第1号,pp.98-102 |
山名 早人,投機的実行の現状とUnlimited Speculative Execution Schemeの提案,情報処理学会研究報告,日本,社団法人情報処理学会,1994年07月23日,第94巻,第66号,pp.105-112 |
Also Published As
Publication number | Publication date |
---|---|
KR20200090103A (ko) | 2020-07-28 |
JP2020119504A (ja) | 2020-08-06 |
US10963260B2 (en) | 2021-03-30 |
US20200233672A1 (en) | 2020-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6660991B2 (ja) | マルチスレッドプロセッサでのタスクのスケジューリング | |
CN107102845B (zh) | 间接分支预测 | |
US9201654B2 (en) | Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JP2011100466A5 (ja) | ||
CN111381883B (zh) | 多线程处理器中的指令高速缓存 | |
JP2016536665A (ja) | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 | |
US11301253B2 (en) | Branch prediction structure indexed based on return address popped from a call-return stack | |
JP7510253B2 (ja) | 分岐予測器 | |
US10853075B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
US7130991B1 (en) | Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme | |
TWI836108B (zh) | 資料結構放棄 | |
US20220197662A1 (en) | Accessing A Branch Target Buffer Based On Branch Instruction Information | |
US10324727B2 (en) | Memory dependence prediction | |
US20220197657A1 (en) | Segmented branch target buffer based on branch instruction type | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process | |
IE940854A1 (en) | Data processor with branch prediction and method of¹operation | |
US11157284B1 (en) | Predicting an outcome of an instruction following a flush | |
US10990403B1 (en) | Predicting an outcome of an instruction following a flush | |
KR20220113410A (ko) | 페치 그룹들의 시퀀스들에 대한 분기 예측 유닛에의 액세스 제어 | |
US20180129500A1 (en) | Single-thread processing of multiple code regions | |
JP2006048258A (ja) | データプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221118 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230816 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230907 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231207 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240517 |
|
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: 20240528 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240621 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7510253 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |