JP2016517092A - プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法 - Google Patents
プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法 Download PDFInfo
- Publication number
- JP2016517092A JP2016517092A JP2016503221A JP2016503221A JP2016517092A JP 2016517092 A JP2016517092 A JP 2016517092A JP 2016503221 A JP2016503221 A JP 2016503221A JP 2016503221 A JP2016503221 A JP 2016503221A JP 2016517092 A JP2016517092 A JP 2016517092A
- Authority
- JP
- Japan
- Prior art keywords
- branch instruction
- processor
- instruction
- counter
- constant
- 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 25
- 230000004044 response Effects 0.000 claims abstract description 44
- 230000001413 cellular effect Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
Images
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/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
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional 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/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
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)
Abstract
Description
102 パイプライン
104 データキャッシュ
106 命令キャッシュ
108 コントローラ
110 レジスタファイル
112 メモリ
113 ソフトウェアスタック
114 プログラムカウンタ
116 リンクレジスタ
118 スタックポインタ
120 リンクレジスタスタック
124 分岐カウンタ
404 基地局
406 通信デバイス
Claims (19)
- プロセッサにおいて、コール分岐命令およびリターン分岐命令を実行するための方法であって、
前記プロセッサがコール分岐命令以外のリンクレジスタ操作命令をデコードすることに応じて、状態機械を初期状態に設定するステップと、
コール分岐命令またはリターン分岐命令をデコードすることに応じて、前記プロセッサがコール分岐命令以外のリンクレジスタ操作命令をデコードして以来、前記プロセッサによってデコードされたコール分岐命令の、それに対して前記プロセッサが、前記デコードされたコール分岐命令とペアになったリターン分岐命令をデコードしていない、数を示す状態に、状態機械を変更するステップと
を含む、方法。 - 前記状態機械の状態が、前記プロセッサがコール分岐命令以外のリンクレジスタ操作命令をデコードして以来、少なくとも1つのコール分岐命令がデコードされ、それに対して前記少なくとも1つのデコードされたコール分岐命令とペアになった少なくとも1つのリターン分岐命令がデコードされていないことを示すならば、前記プロセッサがリターン分岐命令をフェッチし、デコードすることに応じて、リンクレジスタスタックからターゲットアドレスをポップし、前記ターゲットアドレスを次の命令をフェッチするアドレスとして使用するステップと、
前記ターゲットアドレスの正当性をチェックすることなく、前記リターン分岐命令の実行を完了するステップと
をさらに含む、請求項1に記載の方法。 - プロセッサにおいて、コール分岐命令およびリターン分岐命令を実行するための方法であって、
前記プロセッサがコール分岐命令以外のリンクレジスタ操作命令をデコードすることに応じて、カウンタを初期値に設定するステップと、
前記プロセッサがコール分岐命令をデコードすることに応じて、第1の定数だけ前記カウンタをインクリメントするステップと、
前記プロセッサがリターン分岐命令をデコードすることに応じて、第2の定数だけ前記カウンタをインクリメントするステップと
を含む、方法。 - 前記プロセッサが前記カウンタの値は前記初期値に等しくないと判定することに応じて、および前記プロセッサが前記リターン分岐命令をデコードすることに応じて、前記リターン分岐命令のためのターゲットアドレスをリンクレジスタスタックからポップするステップと、
前記ターゲットアドレスの正当性をチェックすることなく前記リターン分岐命令の実行を完了するステップと
をさらに含む、請求項3に記載の方法。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項4に記載の方法。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項3に記載の方法。 - リンクレジスタと、
分岐カウンタと、
前記リンクレジスタに書き込むコール分岐命令以外の命令をデコードすることに応じて、前記分岐カウンタを初期値に設定し、
コール分岐命令をデコードすることに応じて、第1の定数だけ前記分岐カウンタをインクリメントし、
リターン分岐命令をデコードすることに応じて、第2の定数だけ前記分岐カウンタをインクリメントする
プロセッサと
を備える装置。 - リンクレジスタスタックと、
前記カウンタの値は前記初期値に等しくないと判定することに応じて、および前記リターン分岐命令をデコードすることに応じて、前記リターン分岐命令のためのターゲットアドレスを前記リンクレジスタスタックからポップし、
前記ターゲットアドレスの正当性をチェックすることなく前記リターン分岐命令の実行を完了する
前記プロセッサと
をさらに備える、請求項7に記載の装置。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項8に記載の装置。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項7に記載の装置。 - 前記装置が、セルラー電話と、基地局とからなる集合から選択される、請求項7に記載の装置。
- 分岐カウンタと、
リンクレジスタスタックと、
カウンタを設定するための手段であって、プロセッサがコール分岐命令以外のリンクレジスタ操作命令をデコードすることに応じて前記分岐カウンタを初期値に設定する、カウンタを設定するための手段と、
カウンタをインクリメントするための手段であって、前記プロセッサがコール分岐命令をデコードすることに応じて第1の定数だけ前記分岐カウンタをインクリメントし、前記プロセッサがリターン分岐命令をデコードすることに応じて第2の定数だけ前記分岐カウンタをインクリメントする、カウンタをインクリメントするための手段と
を備えるプロセッサ。 - リンクレジスタスタックをポップするための手段であって、前記プロセッサが前記分岐カウンタの前記値は前記初期値に等しくないと判定することに応じて、および前記プロセッサが前記リターン分岐命令をデコードすることに応じて、前記リターン分岐命令のためのターゲットアドレスを前記リンクレジスタスタックからポップする、リンクレジスタスタックをポップするための手段と、
前記ターゲットアドレスの正当性をチェックすることなく前記リターン分岐命令の実行を完了する前記プロセッサと
をさらに備える、請求項12に記載のプロセッサ。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項13に記載のプロセッサ。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項12に記載のプロセッサ。 - プロセッサによって実行可能な記憶された命令を有する非一時的コンピュータ可読媒体であって、前記プロセッサが、前記命令を実行するとき方法を行い、前記方法が、
前記プロセッサがコール分岐命令以外のリンクレジスタ操作命令をデコードすることに応じて、カウンタを初期値に設定するステップと、
前記プロセッサがコール分岐命令をデコードすることに応じて、第1の定数だけ前記カウンタをインクリメントするステップと、
前記プロセッサがリターン分岐命令をデコードすることに応じて、第2の定数だけ前記カウンタをインクリメントするステップと
を含む、非一時的コンピュータ可読媒体。 - 前記方法が、
前記プロセッサが前記カウンタの値は前記初期値に等しくないと判定することに応じて、および前記プロセッサが前記リターン分岐命令をデコードすることに応じて、前記リターン分岐命令のためのターゲットアドレスをリンクレジスタスタックからポップするステップと、
前記ターゲットアドレスの正当性をチェックすることなく前記リターン分岐命令の実行を完了するステップと
をさらに含む、請求項16に記載の非一時的コンピュータ可読媒体。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項17に記載の非一時的コンピュータ可読媒体。 - 前記初期値がゼロであり、
前記第1の定数が1に等しく、
前記第2の定数がマイナス1に等しい、
請求項16に記載の非一時的コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/833,844 US9411590B2 (en) | 2013-03-15 | 2013-03-15 | Method to improve speed of executing return branch instructions in a processor |
US13/833,844 | 2013-03-15 | ||
PCT/US2014/029778 WO2014145101A1 (en) | 2013-03-15 | 2014-03-14 | Method to improve speed of executing return branch instructions in a processor |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2016517092A true JP2016517092A (ja) | 2016-06-09 |
JP2016517092A5 JP2016517092A5 (ja) | 2017-04-20 |
JP6257745B2 JP6257745B2 (ja) | 2018-01-10 |
Family
ID=50629003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016503221A Expired - Fee Related JP6257745B2 (ja) | 2013-03-15 | 2014-03-14 | プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9411590B2 (ja) |
EP (1) | EP2972789B8 (ja) |
JP (1) | JP6257745B2 (ja) |
KR (1) | KR20150130513A (ja) |
CN (1) | CN105144084B (ja) |
WO (1) | WO2014145101A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934831B2 (en) * | 2014-04-07 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for storing and writing multiple parameter codes for memory operating parameters |
US10120688B2 (en) * | 2016-11-15 | 2018-11-06 | Andes Technology Corporation | Data processing system and method for executing block call and block return instructions |
US20180203703A1 (en) * | 2017-01-13 | 2018-07-19 | Optimum Semiconductor Technologies, Inc. | Implementation of register renaming, call-return prediction and prefetch |
GB2571996B (en) * | 2018-03-16 | 2020-09-09 | Advanced Risc Mach Ltd | Branch target variant of branch-with-link instruction |
US10831884B1 (en) * | 2019-09-16 | 2020-11-10 | International Business Machines Corporation | Nested function pointer calls |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020129226A1 (en) * | 2001-03-08 | 2002-09-12 | International Business Machines Corporation | Circuits and methods for recovering link stack data upon branch instruction mis-speculation |
US6550003B1 (en) * | 1999-01-11 | 2003-04-15 | Telefonaktiebolaget Lm Ericsson | Not reported jump buffer |
JP2010541106A (ja) * | 2007-10-05 | 2010-12-24 | クゥアルコム・インコーポレイテッド | 誤りの投機的更新のリンクスタック修復 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4164037A (en) * | 1976-10-27 | 1979-08-07 | Texas Instruments Incorporated | Electronic calculator or microprocessor system having combined data and flag bit storage system |
US4112495A (en) * | 1977-02-09 | 1978-09-05 | Texas Instruments Incorporated | Electronic calculator or microprocessor having a selectively loadable instruction register |
US5193205A (en) * | 1988-03-01 | 1993-03-09 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address |
US5179673A (en) * | 1989-12-18 | 1993-01-12 | Digital Equipment Corporation | Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline |
US5623614A (en) | 1993-09-17 | 1997-04-22 | Advanced Micro Devices, Inc. | Branch prediction cache with multiple entries for returns having multiple callers |
US6157999A (en) * | 1997-06-03 | 2000-12-05 | Motorola Inc. | Data processing system having a synchronizing link stack and method thereof |
US6092188A (en) | 1997-12-23 | 2000-07-18 | Intel Corporation | Processor and instruction set with predict instructions |
US6170054B1 (en) | 1998-11-16 | 2001-01-02 | Intel Corporation | Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache |
US7024537B2 (en) * | 2003-01-21 | 2006-04-04 | Advanced Micro Devices, Inc. | Data speculation based on addressing patterns identifying dual-purpose register |
US20080040576A1 (en) | 2006-08-09 | 2008-02-14 | Brian Michael Stempel | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set |
US7478228B2 (en) * | 2006-08-31 | 2009-01-13 | Qualcomm Incorporated | Apparatus for generating return address predictions for implicit and explicit subroutine calls |
US7617387B2 (en) | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
GB2448149B (en) * | 2007-04-03 | 2011-05-18 | Advanced Risc Mach Ltd | Protected function calling |
US8438372B2 (en) * | 2007-10-05 | 2013-05-07 | Qualcomm Incorporated | Link stack repair of erroneous speculative update |
US8341383B2 (en) * | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
US10042776B2 (en) | 2012-11-20 | 2018-08-07 | Arm Limited | Prefetching based upon return addresses |
-
2013
- 2013-03-15 US US13/833,844 patent/US9411590B2/en active Active
-
2014
- 2014-03-14 CN CN201480013935.1A patent/CN105144084B/zh not_active Expired - Fee Related
- 2014-03-14 EP EP14720842.5A patent/EP2972789B8/en active Active
- 2014-03-14 JP JP2016503221A patent/JP6257745B2/ja not_active Expired - Fee Related
- 2014-03-14 WO PCT/US2014/029778 patent/WO2014145101A1/en active Application Filing
- 2014-03-14 KR KR1020157029133A patent/KR20150130513A/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6550003B1 (en) * | 1999-01-11 | 2003-04-15 | Telefonaktiebolaget Lm Ericsson | Not reported jump buffer |
US20020129226A1 (en) * | 2001-03-08 | 2002-09-12 | International Business Machines Corporation | Circuits and methods for recovering link stack data upon branch instruction mis-speculation |
JP2010541106A (ja) * | 2007-10-05 | 2010-12-24 | クゥアルコム・インコーポレイテッド | 誤りの投機的更新のリンクスタック修復 |
Also Published As
Publication number | Publication date |
---|---|
CN105144084A (zh) | 2015-12-09 |
EP2972789B1 (en) | 2019-11-20 |
US20140281394A1 (en) | 2014-09-18 |
KR20150130513A (ko) | 2015-11-23 |
US9411590B2 (en) | 2016-08-09 |
EP2972789A1 (en) | 2016-01-20 |
JP6257745B2 (ja) | 2018-01-10 |
CN105144084B (zh) | 2018-03-20 |
EP2972789B8 (en) | 2020-03-04 |
WO2014145101A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6257745B2 (ja) | プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法 | |
KR101827747B1 (ko) | 동일한 데이터 조건에 의존하는 인접 명령의 실행 제어 | |
US9195466B2 (en) | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
TW201224919A (en) | Execute at commit state update instructions, apparatus, methods, and systems | |
JP2004516546A (ja) | パイプライン方式のプロセッサにおける例外処理 | |
US8677102B2 (en) | Instruction fusion calculation device and method for instruction fusion calculation | |
JP5815596B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
US20200293317A1 (en) | Data processing device data processing method and recording medium | |
JP6352386B2 (ja) | 定数キャッシュを使用してより効率的にリテラル生成データを従属命令に転送するための方法および装置 | |
CN107589960B (zh) | 一种基于寄存器访问冲突检测的dsp指令模拟方法 | |
KR100986375B1 (ko) | 피연산자의 빠른 조건부 선택 | |
KR20180039077A (ko) | 전력 효율적 페치 적응 | |
WO2014025815A1 (en) | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
EP3198400B1 (en) | Dependency-prediction of instructions | |
US9146741B2 (en) | Eliminating redundant masking operations instruction processing circuits, and related processor systems, methods, and computer-readable media | |
CN112740175A (zh) | 基于加载路径历史的分支预测 | |
US20190361810A1 (en) | Prefetching data based on register-activity patterns | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
US20230393853A1 (en) | Selectively updating branch predictors for loops executed from loop buffers in a processor | |
JP2004516572A (ja) | スペキュレーティブ・レジスタの調整 | |
US20140281368A1 (en) | Cycle sliced vectors and slot execution on a shared datapath | |
CN117311816A (zh) | 处理指令的方法、处理器、电子装置及存储介质 | |
JP2012053690A (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170314 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170314 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20170316 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20170519 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170612 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170907 |
|
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: 20171106 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171205 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6257745 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 |