JP6257745B2 - プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法 - Google Patents
プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法 Download PDFInfo
- Publication number
- JP6257745B2 JP6257745B2 JP2016503221A JP2016503221A JP6257745B2 JP 6257745 B2 JP6257745 B2 JP 6257745B2 JP 2016503221 A JP2016503221 A JP 2016503221A JP 2016503221 A JP2016503221 A JP 2016503221A JP 6257745 B2 JP6257745 B2 JP 6257745B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch instruction
- counter
- link register
- processor
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 17
- 230000004044 response Effects 0.000 claims description 31
- 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/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/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
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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)
Description
102 パイプライン
104 データキャッシュ
106 命令キャッシュ
108 コントローラ
110 レジスタファイル
112 メモリ
113 ソフトウェアスタック
114 プログラムカウンタ
116 リンクレジスタ
118 スタックポインタ
120 リンクレジスタスタック
124 分岐カウンタ
404 基地局
406 通信デバイス
Claims (5)
- プロセッサにおいて、コール分岐命令およびリターン分岐命令を実行するための方法であって、
前記プロセッサが前記コール分岐命令と異なるリンクレジスタ操作命令をデコードすることに応じて、カウンタを初期値に設定するステップと、
前記プロセッサがコール分岐命令をデコードすることに応じて、第1の定数だけ前記カウンタをインクリメントするステップと、
前記プロセッサが前記コール分岐命令をデコードすることに応じて、前記コール分岐命令を含むプログラムに記載された命令の順序で次の命令のアドレスをリンクレジスタスタックにプッシュするステップと、
前記プロセッサがリターン分岐命令をデコードすることに応じて、前記カウンタが前記初期値に等しくない値を有する場合に、第2の定数だけ前記カウンタをインクリメントするステップと、
前記プロセッサが前記リターン分岐命令をデコードすることに応じて、前記カウンタが前記初期値に等しくない値を有する場合に、前記リターン分岐命令のためのターゲットアドレスを前記リンクレジスタスタックからポップするステップであって、前記カウンタの前記値が前記初期値に等しくないとき、前記リンクレジスタスタックからポップされた前記ターゲットアドレスは前記リターン分岐命令の正確なターゲットアドレスである、ステップと、
前記カウンタが前記初期値に等しくない値を有する場合に、前記リターン分岐命令の実行の完了後に、前記リターン分岐命令を前記命令キャッシュから取り除くステップと
を含む、方法。 - 前記初期値がゼロであり、前記第1の定数が1に等しく、前記第2の定数がマイナス1に等しい、請求項1に記載の方法。
- リンクレジスタと、
リンクレジスタスタックと、
分岐カウンタと、
プロセッサであって、
前記リンクレジスタに書き込むコール分岐命令と異なる命令をデコードすることに応じて、前記分岐カウンタを初期値に設定し、
コール分岐命令をデコードすることに応じて、第1の定数だけ前記分岐カウンタをインクリメントし、
前記プロセッサが前記コール分岐命令をデコードすることに応じて、前記コール分岐命令を含むプログラムに記載された命令の順序で次の命令のアドレスを前記リンクレジスタスタックにプッシュし、
リターン分岐命令をデコードすることに応じて、前記分岐カウンタが前記初期値に等しくない値を有する場合に、第2の定数だけ前記分岐カウンタをインクリメントし、
前記プロセッサが前記リターン分岐命令をデコードすることに応じて、前記分岐カウンタが前記初期値に等しくない値を有する場合に、前記リターン分岐命令のためのターゲットアドレスを前記リンクレジスタスタックからポップし、
前記カウンタが前記初期値に等しくない値を有する場合に、前記リターン分岐命令の実行の完了後に、前記リターン分岐命令を前記命令キャッシュから取り除く
ように構成されたプロセッサであって、前記分岐カウンタの前記値が前記初期値に等しくないとき、前記リンクレジスタスタックからポップされた前記ターゲットアドレスは前記リターン分岐命令の正確なターゲットアドレスである、プロセッサと、
を備える、装置。 - 前記初期値がゼロであり、前記第1の定数が1に等しく、前記第2の定数がマイナス1に等しい、請求項3に記載の装置。
- 前記装置が、セルラー電話と、基地局とからなる集合から選択される、請求項3に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/833,844 | 2013-03-15 | ||
US13/833,844 US9411590B2 (en) | 2013-03-15 | 2013-03-15 | Method to improve speed of executing return branch instructions in a processor |
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 JP2016517092A (ja) | 2016-06-09 |
JP2016517092A5 JP2016517092A5 (ja) | 2017-04-20 |
JP6257745B2 true 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 |
Family Cites Families (19)
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 |
SE513431C2 (sv) * | 1999-01-11 | 2000-09-11 | Ericsson Telefon Ab L M | Buffert för icke-rapporterade hopp |
US6848044B2 (en) * | 2001-03-08 | 2005-01-25 | International Business Machines Corporation | Circuits and methods for recovering link stack data upon branch instruction mis-speculation |
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 |
US7971044B2 (en) * | 2007-10-05 | 2011-06-28 | 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 EP EP14720842.5A patent/EP2972789B8/en active Active
- 2014-03-14 WO PCT/US2014/029778 patent/WO2014145101A1/en active Application Filing
- 2014-03-14 CN CN201480013935.1A patent/CN105144084B/zh not_active Expired - Fee Related
- 2014-03-14 JP JP2016503221A patent/JP6257745B2/ja not_active Expired - Fee Related
- 2014-03-14 KR KR1020157029133A patent/KR20150130513A/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US20140281394A1 (en) | 2014-09-18 |
CN105144084A (zh) | 2015-12-09 |
CN105144084B (zh) | 2018-03-20 |
EP2972789B8 (en) | 2020-03-04 |
EP2972789A1 (en) | 2016-01-20 |
US9411590B2 (en) | 2016-08-09 |
KR20150130513A (ko) | 2015-11-23 |
JP2016517092A (ja) | 2016-06-09 |
EP2972789B1 (en) | 2019-11-20 |
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 | |
US11036507B2 (en) | Processor testing using pairs of counter incrementing and branch instructions | |
US9740493B2 (en) | System and method of loop vectorization by compressing indexes and data elements from iterations based on a control mask | |
JP5815596B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
US11048511B2 (en) | Data processing device data processing method and recording medium | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
JP6352386B2 (ja) | 定数キャッシュを使用してより効率的にリテラル生成データを従属命令に転送するための方法および装置 | |
CN107589960B (zh) | 一种基于寄存器访问冲突检测的dsp指令模拟方法 | |
EP3198400B1 (en) | Dependency-prediction of instructions | |
CN104063329A (zh) | 64位立即数处理方法及装置 | |
US9588747B2 (en) | Method and apparatus for converting programs | |
US20210165654A1 (en) | Eliminating execution of instructions that produce a constant result | |
CN112740175A (zh) | 基于加载路径历史的分支预测 | |
US20190361810A1 (en) | Prefetching data based on register-activity patterns | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
US11392383B2 (en) | Apparatus and method for prefetching data items | |
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) | 处理指令的方法、处理器、电子装置及存储介质 |
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 |