JP2013533549A - 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 - Google Patents
事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 Download PDFInfo
- Publication number
- JP2013533549A JP2013533549A JP2013516855A JP2013516855A JP2013533549A JP 2013533549 A JP2013533549 A JP 2013533549A JP 2013516855 A JP2013516855 A JP 2013516855A JP 2013516855 A JP2013516855 A JP 2013516855A JP 2013533549 A JP2013533549 A JP 2013533549A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- target address
- branch
- indirect branch
- 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 title claims abstract description 98
- 238000005516 engineering process Methods 0.000 title description 4
- 230000008859 change Effects 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 4
- 238000011010 flushing procedure Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 50
- 238000010586 diagram Methods 0.000 description 12
- 238000012937 correction Methods 0.000 description 10
- 101100015675 Mus musculus Gpr15 gene Proteins 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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/30003—Arrangements for executing specific machine instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Description
202 プロセッサパイプライン
204 汎用レジスタファイル
206 制御回路
208 L1命令キャッシュ
210 L1データキャッシュ
212 メモリ階層
214 命令フェッチステージ
215 プログラムカウンタ
216 デコードおよび事前通知(ADVN)ステージ
218 ディスパッチステージ
219 分岐ターゲットアドレスレジスタ
220 リードレジスタステージ
222 実行ステージ
224 ライトバックステージ
226 フォワーディングネットワーク
300 32ビットのADVN命令
307 分岐ターゲットアドレスレジスタフィールド
350 16ビットのADVN命令
357 分岐ターゲットアドレスレジスタフィールド
500 第1の間接分岐ターゲットアドレス(BTA)事前通知(ADVN)回路
504 ADVN実行回路
508 分岐ターゲットアドレスレジスタ(BTAR)回路
512 BXデコード回路
516 選択回路
520 ネクストプログラムカウンタ回路
800 ターゲットトラッキング(TTT)テーブル
802 ターゲットトラッキング(TTT)エントリ
804 エントリ有効ビット
805 タグフィールド
806 レジスタアドレス
807 データ有効ビット
808 アップ/ダウンカウンタ値
809 Rmデータフィールド
900 第2の間接分岐ターゲットアドレス(BTA)事前通知(ADVN)回路
902 デコード回路
904 検出回路
906 事前通知(ADVN)回路
908 訂正回路
910 決定回路
912 トラック1回路
914 最新BTA回路
920 トラック2回路
922 訂正パイプ回路
950 第3の間接分岐ターゲットアドレス(BTA)事前通知(ADVN)回路
952 ネクストプログラムカウンタ回路
954 デコード回路
956 実行回路
958 トラッキングテーブル(TTT)回路
Claims (23)
- 命令セットアーキテクチャで定義され、第1の命令によって特定されたレジスタから、プログラム指定されたターゲットアドレスを取り出すステップと、
間接分岐命令であると動的に決定される第2の命令が見つかった後に、前記プログラム指定されたターゲットアドレスにスペキュレイティブ実行のフローを変更するステップと
を含む、プログラムのシーケンシャルフローを変更するための方法。 - 前記間接分岐命令が、前記第1の命令の後の、次に見つかった間接分岐命令である、請求項1に記載の方法。
- 前記間接分岐命令が、前記第1の命令によって特定されたレジスタと一致するターゲットレジスタを指定する、次に見つかった間接分岐命令である、請求項1に記載の方法。
- 前記第1の命令を、コードシーケンスにおいて、前記間接分岐よりも少なくともN個のプログラム命令だけ前に挿入するステップであって、前記N個のプログラム命令が、前記間接分岐を受信するパイプラインステージと、前記第1の命令によって特定された前記レジスタを認識するパイプラインステージとの間のパイプラインステージの数に対応している、ステップをさらに含む、請求項1に記載の方法。
- 前記間接分岐を受信するパイプラインステージがフェッチステージであり、前記第1の命令によって特定されたレジスタを認識するパイプラインステージが実行ステージである、請求項4に記載の方法。
- 複数の事前通知(ADVN)命令を、対応する複数の間接分岐命令を見つける前に受信するステップであって、前記第1の命令がADVN命令である、ステップと、
複数のADVN命令と、見つけられた対応する複数の間接分岐命令との間の対応関係をファーストインファーストアウトスタックを用いてトラッキングするステップと
をさらに含む、請求項1に記載の方法。 - 分岐ターゲットアドレスレジスタに記憶された値が有効命令アドレスであることを決定するステップと、
フェッチする次の命令アドレスを特定するために間接分岐をデコードする際に、前記分岐ターゲットアドレスレジスタからの値を選択するステップと
をさらに含む、請求項1に記載の方法。 - 分岐ターゲットアドレスを定める間接分岐を実行するステップと、
前記定められた分岐ターゲットアドレスを、前記プログラム指定されたターゲットアドレスと比較するステップと、
前記定められた分岐ターゲットアドレスが、前記プログラム指定されたターゲットアドレスと同じでない場合に、プロセッサパイプラインをフラッシュするステップと
をさらに含む、請求項1に記載の方法。 - 前記第1の命令が見つかった後に分岐予測回路を無効にするステップをさらに含む、請求項1に記載の方法。
- コード部分の実行中に見つかった分岐をトラッキングするために利用される、ハードウェアリソースを有する分岐履歴予測回路を有するプロセッサパイプラインにおいて、前記命令をノーオペレーションとして処理するステップと、
前記分岐履歴予測回路にとって利用可能なハードウェアリソースを超えるコード部分に対する前記命令をイネーブルにするステップと
をさらに含む、請求項1に記載の方法。 - 命令のシーケンスにおけるターゲットアドレス変更命令によって作られた最新のターゲットアドレスを特定するために、前記命令のシーケンスを分析するステップと、
前記最新のターゲットアドレスを利用する間接分岐命令がスペキュレイティブに実行される前に、前記最新のターゲットアドレスに基づいて次のプログラムアドレスを準備するステップと
を含む、間接分岐アドレスの事前通知を行なうための方法。 - コード部分を通る第1のパスに基づいて間接分岐命令のターゲットアドレスレジスタを自動的に特定するステップであって、前記特定されたターゲットアドレスレジスタが、命令によって作られた最新のターゲットアドレスを自動的に特定するために用いられる、ステップをさらに含む、請求項11に記載の方法。
- 間接分岐命令がデコードされる際に次のプログラムアドレスが準備される、請求項11に記載の方法。
- 前記命令のシーケンスにおいて、間接分岐命令よりも少なくともN個のプログラム命令だけ前である、前記命令のシーケンスにおける位置に前記ターゲットアドレス変更命令を移動するステップであって、Nが、前記間接分岐を受信するパイプラインステージと、前記ターゲットアドレス変更命令によって特定された前記レジスタを認識するパイプラインステージとの間のパイプラインステージの数と一致する、ステップをさらに含む、請求項11に記載の方法。
- 前記間接分岐を受信するパイプラインステージがフェッチステージであり、前記ターゲットアドレス変更命令によって特定されたレジスタを認識するパイプラインステージが実行ステージである、請求項14に記載の方法。
- 間接分岐命令によって指定されたターゲットアドレスレジスタエントリに最新のターゲットアドレスを生成した命令の命令アドレスを第1のテーブルにロードするステップをさらに含む、請求項11に記載の方法。
- 命令アドレスにおける有効ビットの連想メモリで、アサートされた有効ビットをチェックするステップと、
アサートされた有効ビットに応じて、前記第1のテーブルによって特定された命令を実行することによって得られる値を分岐ターゲットアドレスレジスタにロードするステップと
をさらに含む、請求項16に記載の方法。 - 前記分岐ターゲットアドレスレジスタに記憶された値を用いて分岐ターゲットアドレスを提供するステップをさらに含む、請求項17に記載の方法。
- プログラムによって指定された命令メモリアドレスを、間接分岐命令の事前通知(ADVN)間接アドレスとして保持するためのレジスタと、
前記レジスタを対象とする命令を監視するネクストプログラムアドレス選択器回路であって、間接分岐命令をスペキュレイティブに実行する際に次のプログラムアドレスとして用いるために、間接分岐命令を見つける前に、前記レジスタからADVN間接アドレスとして最新のターゲットアドレスを前記監視された命令に基づいて選択するネクストプログラムアドレス選択器回路と
を備える、間接分岐ターゲットアドレスの事前通知を行なうための装置。 - 前記レジスタに記憶される分岐ターゲットアドレスを特定するために、プログラム命令をデコードするためのデコーダをさらに備える、請求項19に記載の装置。
- 前記間接分岐命令を受信するステージと、前記最新のターゲットアドレスを認識するステージとの間のN個のステージを有するプロセッサパイプラインであって、前記ネクストプログラムアドレス選択器回路が、前記間接分岐よりも少なくとも前記N個のステージだけ前の前記ADVN間接アドレスを選択する、プロセッサパイプラインをさらに備える、請求項19に記載の装置。
- 間接分岐命令を受信するパイプラインステージがフェッチステージであり、最新のターゲットアドレスを認識するパイプラインステージが実行ステージである、請求項21に記載の装置。
- 前記ADVN間接アドレスが、間接分岐命令の分岐ターゲットアドレスに影響を及ぼす現在の実行サイクルに先立つ、プログラムにおける命令の実行ステータスを記憶するトラッキングテーブルに基づいている、請求項19に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/824,599 | 2010-06-28 | ||
US12/824,599 US20110320787A1 (en) | 2010-06-28 | 2010-06-28 | Indirect Branch Hint |
PCT/US2011/042087 WO2012006046A1 (en) | 2010-06-28 | 2011-06-28 | Methods and apparatus for changing a sequential flow of a program using advance notice techniques |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014098609A Division JP2014194799A (ja) | 2010-06-28 | 2014-05-12 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
JP2014141182A Division JP5917616B2 (ja) | 2010-06-28 | 2014-07-09 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013533549A true JP2013533549A (ja) | 2013-08-22 |
JP5579930B2 JP5579930B2 (ja) | 2014-08-27 |
Family
ID=44352092
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013516855A Expired - Fee Related JP5579930B2 (ja) | 2010-06-28 | 2011-06-28 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
JP2014098609A Pending JP2014194799A (ja) | 2010-06-28 | 2014-05-12 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
JP2014141182A Expired - Fee Related JP5917616B2 (ja) | 2010-06-28 | 2014-07-09 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
JP2016076575A Pending JP2016146207A (ja) | 2010-06-28 | 2016-04-06 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014098609A Pending JP2014194799A (ja) | 2010-06-28 | 2014-05-12 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
JP2014141182A Expired - Fee Related JP5917616B2 (ja) | 2010-06-28 | 2014-07-09 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
JP2016076575A Pending JP2016146207A (ja) | 2010-06-28 | 2016-04-06 | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20110320787A1 (ja) |
EP (1) | EP2585908A1 (ja) |
JP (4) | JP5579930B2 (ja) |
KR (1) | KR101459536B1 (ja) |
CN (1) | CN102934075B (ja) |
WO (1) | WO2012006046A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110998522A (zh) * | 2017-08-18 | 2020-04-10 | 国际商业机器公司 | 子例程分支序列中的派生值创建和派生值预测的动态融合 |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
WO2013015835A1 (en) | 2011-07-22 | 2013-01-31 | Seven Networks, Inc. | Mobile application traffic optimization |
WO2013147879A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Dynamic branch hints using branches-to-nowhere conditional branch |
US20130346727A1 (en) * | 2012-06-25 | 2013-12-26 | Qualcomm Incorporated | Methods and Apparatus to Extend Software Branch Target Hints |
CN103513957B (zh) * | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
US9652245B2 (en) | 2012-07-16 | 2017-05-16 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Branch prediction for indirect jumps by hashing current and previous branch instruction addresses |
GB201300608D0 (en) * | 2013-01-14 | 2013-02-27 | Imagination Tech Ltd | Indirect branch prediction |
CN103984637A (zh) * | 2013-02-07 | 2014-08-13 | 上海芯豪微电子有限公司 | 一种指令处理系统及方法 |
GB2506462B (en) | 2013-03-13 | 2014-08-13 | Imagination Tech Ltd | Indirect branch prediction |
CN103218205B (zh) * | 2013-03-26 | 2015-09-09 | 中国科学院声学研究所 | 一种循环缓冲装置以及循环缓冲方法 |
CN105792751B (zh) | 2013-11-27 | 2019-07-05 | 雅培糖尿病护理公司 | 用于修正基于永久rom的编程的系统和方法 |
US9286073B2 (en) * | 2014-01-07 | 2016-03-15 | Samsung Electronics Co., Ltd. | Read-after-write hazard predictor employing confidence and sampling |
CA2967396A1 (en) | 2014-11-19 | 2016-05-26 | Abbott Diabetes Care Inc. | Systems, devices, and methods for revising or supplementing rom-based rf commands |
US9830162B2 (en) * | 2014-12-15 | 2017-11-28 | Intel Corporation | Technologies for indirect branch target security |
US9348595B1 (en) | 2014-12-22 | 2016-05-24 | Centipede Semi Ltd. | Run-time code parallelization with continuous monitoring of repetitive instruction sequences |
US9569613B2 (en) * | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
US9135015B1 (en) | 2014-12-25 | 2015-09-15 | Centipede Semi Ltd. | Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction |
US9208066B1 (en) * | 2015-03-04 | 2015-12-08 | Centipede Semi Ltd. | Run-time code parallelization with approximate monitoring of instruction sequences |
US10296350B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences |
US10296346B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences based on pre-monitoring |
US9715390B2 (en) | 2015-04-19 | 2017-07-25 | Centipede Semi Ltd. | Run-time parallelization of code execution based on an approximate register-access specification |
KR20170139659A (ko) | 2015-04-24 | 2017-12-19 | 옵티멈 세미컨덕터 테크놀로지스 인코포레이티드 | 메모리를 어드레싱하기 위한 별개의 레지스터들을 가진 컴퓨터 프로세서 |
US9916164B2 (en) * | 2015-06-11 | 2018-03-13 | Intel Corporation | Methods and apparatus to optimize instructions for execution by a processor |
GB2548604B (en) * | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
GB2551548B (en) * | 2016-06-22 | 2019-05-08 | Advanced Risc Mach Ltd | Register restoring branch instruction |
US20180081690A1 (en) * | 2016-09-21 | 2018-03-22 | Qualcomm Incorporated | Performing distributed branch prediction using fused processor cores in processor-based systems |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10884745B2 (en) * | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US10908911B2 (en) * | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US11150904B2 (en) * | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US10884747B2 (en) * | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
GB2573119A (en) * | 2018-04-24 | 2019-10-30 | Advanced Risc Mach Ltd | Maintaining state of speculation |
JP7158208B2 (ja) | 2018-08-22 | 2022-10-21 | エルジー ディスプレイ カンパニー リミテッド | 電気流体ディスプレイ装置及び複合ディスプレイ装置 |
US10846097B2 (en) * | 2018-12-20 | 2020-11-24 | Samsung Electronics Co., Ltd. | Mispredict recovery apparatus and method for branch and fetch pipelines |
CN110347432B (zh) * | 2019-06-17 | 2021-09-14 | 海光信息技术股份有限公司 | 处理器、分支预测器及其数据处理方法、分支预测方法 |
CN110764823B (zh) * | 2019-09-02 | 2021-11-16 | 芯创智(北京)微电子有限公司 | 一种指令流水线的回路控制系统及方法 |
CN112540794A (zh) * | 2019-09-20 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 处理器核、处理器、装置和指令处理方法 |
CN111008625B (zh) * | 2019-12-06 | 2023-07-18 | 建信金融科技有限责任公司 | 一种地址校正方法、装置、设备及存储介质 |
US11294684B2 (en) | 2020-01-31 | 2022-04-05 | Apple Inc. | Indirect branch predictor for dynamic indirect branches |
US11379240B2 (en) | 2020-01-31 | 2022-07-05 | Apple Inc. | Indirect branch predictor based on register operands |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000008551A1 (en) * | 1998-08-06 | 2000-02-17 | Intel Corporation | Software directed target address cache and target address register |
WO2000022516A1 (en) * | 1998-10-12 | 2000-04-20 | Idea Corporation | Method for processing branch operations |
US20080307210A1 (en) * | 2007-06-07 | 2008-12-11 | Levitan David S | System and Method for Optimizing Branch Logic for Handling Hard to Predict Indirect Branches |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04225429A (ja) * | 1990-12-26 | 1992-08-14 | Nec Corp | データ処理装置 |
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US7752423B2 (en) * | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
CN1265286C (zh) * | 2001-06-29 | 2006-07-19 | 皇家菲利浦电子有限公司 | 预测间接分支目标地址的方法、装置和编译器 |
US7065640B2 (en) * | 2001-10-11 | 2006-06-20 | International Business Machines Corporation | System for implementing a diagnostic or correction boot image over a network connection |
US7624254B2 (en) * | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
US8555040B2 (en) * | 2010-05-24 | 2013-10-08 | Apple Inc. | Indirect branch target predictor that prevents speculation if mispredict is expected |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
-
2010
- 2010-06-28 US US12/824,599 patent/US20110320787A1/en not_active Abandoned
-
2011
- 2011-06-28 CN CN201180028116.0A patent/CN102934075B/zh not_active Expired - Fee Related
- 2011-06-28 KR KR1020137002326A patent/KR101459536B1/ko not_active IP Right Cessation
- 2011-06-28 EP EP11730820.5A patent/EP2585908A1/en not_active Withdrawn
- 2011-06-28 JP JP2013516855A patent/JP5579930B2/ja not_active Expired - Fee Related
- 2011-06-28 WO PCT/US2011/042087 patent/WO2012006046A1/en active Application Filing
-
2014
- 2014-05-12 JP JP2014098609A patent/JP2014194799A/ja active Pending
- 2014-07-09 JP JP2014141182A patent/JP5917616B2/ja not_active Expired - Fee Related
-
2016
- 2016-04-06 JP JP2016076575A patent/JP2016146207A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000008551A1 (en) * | 1998-08-06 | 2000-02-17 | Intel Corporation | Software directed target address cache and target address register |
WO2000022516A1 (en) * | 1998-10-12 | 2000-04-20 | Idea Corporation | Method for processing branch operations |
US20080307210A1 (en) * | 2007-06-07 | 2008-12-11 | Levitan David S | System and Method for Optimizing Branch Logic for Handling Hard to Predict Indirect Branches |
Non-Patent Citations (2)
Title |
---|
CSNG200600734052; 豊島 隆志: '「レジスタ間接分岐ターゲット・フォワーディング」' 先進的計算基盤システムシンポジウム SACSIS2006 論文集 第2006巻 第5号, 20060522, 325頁〜332頁, 社団法人情報処理学会 * |
JPN6014004521; 豊島 隆志: '「レジスタ間接分岐ターゲット・フォワーディング」' 先進的計算基盤システムシンポジウム SACSIS2006 論文集 第2006巻 第5号, 20060522, 325頁〜332頁, 社団法人情報処理学会 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110998522A (zh) * | 2017-08-18 | 2020-04-10 | 国际商业机器公司 | 子例程分支序列中的派生值创建和派生值预测的动态融合 |
JP2020531974A (ja) * | 2017-08-18 | 2020-11-05 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | サブルーチン分岐シーケンスにおける導出された値の作成および導出された値の予測の動的融合 |
JP7082187B2 (ja) | 2017-08-18 | 2022-06-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | サブルーチン分岐シーケンスにおける導出された値の作成および導出された値の予測の動的融合 |
CN110998522B (zh) * | 2017-08-18 | 2023-09-19 | 国际商业机器公司 | 子例程分支序列中的派生值创建和派生值预测的动态融合 |
Also Published As
Publication number | Publication date |
---|---|
CN102934075B (zh) | 2015-12-02 |
CN102934075A (zh) | 2013-02-13 |
KR20130033476A (ko) | 2013-04-03 |
JP2016146207A (ja) | 2016-08-12 |
JP5579930B2 (ja) | 2014-08-27 |
JP2014222529A (ja) | 2014-11-27 |
JP2014194799A (ja) | 2014-10-09 |
JP5917616B2 (ja) | 2016-05-18 |
WO2012006046A1 (en) | 2012-01-12 |
US20110320787A1 (en) | 2011-12-29 |
KR101459536B1 (ko) | 2014-11-07 |
EP2585908A1 (en) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5579930B2 (ja) | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
US7278012B2 (en) | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions | |
JP5335946B2 (ja) | 電力的に効率的な命令プリフェッチ機構 | |
US7685410B2 (en) | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects | |
JP5198879B2 (ja) | ループ末尾に置かれた分岐により分岐履歴レジスタの更新を抑制すること | |
US6263427B1 (en) | Branch prediction mechanism | |
EP2024820B1 (en) | Sliding-window, block-based branch target address cache | |
JP2001147807A (ja) | 改良された分岐制御命令を利用するためのマイクロプロセッサ、分岐目標命令メモリ、命令ロード制御回路、パイプラインへの命令供給維持方法、分岐制御メモリ、およびプロセッサ | |
JP5745638B2 (ja) | 分岐命令の中に符号化されたバイモーダル分岐予測子 | |
KR101048258B1 (ko) | 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 | |
EP2461246B1 (en) | Early conditional selection of an operand | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
JP2001142707A (ja) | プロセッサおよびそれを用いて実行されるプログラム分岐に対する例外チェックの実行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140512 |
|
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: 20140609 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140709 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5579930 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |