JP6271572B2 - 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体 - Google Patents
実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体 Download PDFInfo
- Publication number
- JP6271572B2 JP6271572B2 JP2015544210A JP2015544210A JP6271572B2 JP 6271572 B2 JP6271572 B2 JP 6271572B2 JP 2015544210 A JP2015544210 A JP 2015544210A JP 2015544210 A JP2015544210 A JP 2015544210A JP 6271572 B2 JP6271572 B2 JP 6271572B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- subroutine
- btic
- branch
- entry
- 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
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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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
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
本出願は、参照によってその全体が本明細書に組み込まれている、2012年11月28日に出願された「ESTABLISHING A BRANCH TARGET INSTRUCTION CACHE (BTIC) ENTRY FOR SUBROUTINE RETURNS TO REDUCE EXECUTION PIPELINE STALLS, AND RELATED SYSTEMS, METHODS, AND COMPUTER-READABLE MEDIA」と題する米国仮特許出願第61/730,717号の優先権を主張する。
12 パイプラインバブル低減回路
14 入力/出力(I/O)回路
16 命令キャッシュ
18 データキャッシュ
20 実行パイプライン
22 フロントエンド回路
24 実行ユニット
26 完了ユニット
28 リンクスタック
30 レジスタ
32 汎用レジスタ
34 プログラムカウンタ
36 リンクレジスタ
38 順次フェッチ/復号化パイプラインステージ
40 順次フェッチ/復号化パイプラインステージ
42 順次フェッチ/復号化パイプラインステージ
44 発行/ディスパッチステージ
46 分岐予測回路
48 分岐制御論理(BCL)回路
50 分岐ターゲット命令キャッシュ(BTIC)
52 分岐ターゲットアドレスキャッシュ(BTAC)
54 分岐履歴テーブル(BHT)
56 サブルーチン呼出し検出回路
58 BTICエントリ確立回路
60 サブルーチンリターン検出回路
62 BTIC使用回路
64 命令シーケンス
66 命令
68 命令
70 命令
72 命令
74 命令
76 命令
78 命令
79 命令
80 プログラムフロー
82 次のフェッチ指示子
84 BTICエントリ
86 矢印
88 実行パイプライン
90 矢印
92 BTICエントリ
94 矢印
96 矢印
98 矢印
99 矢印
102 ブロック
104 ブロック
106 ブロック
108 ブロック
110 ブロック
112 ブロック
113 ブロック
114 ブロック
116 ブロック
117 ブロック
118 ブロック
119 ブロック
120 ブロック
122 ブロック
124 ブロック
126 ブロック
130 ブロック
134 ブロック
136 ブロック
138 プロセッサベースシステム
140 CPU
142 キャッシュメモリ
144 システムバス
146 メモリコントローラ
148 メモリシステム
150 入力デバイス
152 出力デバイス
154 ネットワークインターフェースデバイス
156 ディスプレイコントローラ
158 ネットワーク
160 メモリユニット
162 ディスプレイ
164 ビデオプロセッサ
Claims (15)
- 実行パイプライン内のサブルーチンリターン命令のための分岐ターゲット命令キャッシュ(BTIC)エントリを確立する方法であって、前記BTICエントリは、次の命令フェッチアドレスフィールドおよび分岐ターゲット命令フィールドを含み、前記方法は、
実行パイプラインにおいてサブルーチン呼出し命令を検出するステップと、
前記サブルーチン呼出し命令を検出したことに応じて、サブルーチンリターン命令のための前記BTICエントリを確立するステップであって、
前記サブルーチン呼出し命令の次に続くフェッチされた少なくとも1つの順次命令を前記サブルーチンリターン命令のための前記BTICエントリの前記分岐ターゲット命令フィールド内の分岐ターゲット命令として書くことと、
前記実行パイプライン内の前記分岐ターゲット命令に続く次の命令のアドレスに対応する次の命令フェッチアドレスを計算することと、
前記次の命令フェッチアドレスを前記サブルーチンリターン命令のための前記BTICエントリ内の前記次の命令フェッチアドレスフィールドに書き込むこととによって、
確立するステップとを含む、方法。 - 前記サブルーチンリターン命令は、前記サブルーチン呼出し命令によって呼び出されたサブルーチンからのリターンを指示する、請求項1に記載の方法。
- 前記少なくとも1つの順次命令は非分岐命令であり、
前記次の命令フェッチアドレスを計算するステップは、前記少なくとも1つの順次命令の最後の命令に続く前記次の命令の前記アドレスを計算するステップを含む、または、
前記少なくとも1つの順次命令の最後の命令は分岐命令であり、
前記次の命令フェッチアドレスを計算するステップは、前記分岐命令のターゲット命令のアドレスを計算するステップを含む、請求項1に記載の方法。 - 前記少なくとも1つの順次命令の最後の命令に先行する前記少なくとも1つの順次命令のうちの1つまたは複数の命令は分岐命令であり、
前記分岐命令のターゲット命令は非分岐命令であり、
前記次の命令フェッチアドレスを計算するステップは、前記分岐命令の前記ターゲット命令に続く前記次の命令の前記アドレスを計算するステップを含む、請求項1に記載の方法。 - 前記BTICエントリを確立するステップは、前記BTICエントリが有効であることを指示するために、前記BTICエントリに対応する有効性指示子を設定するステップをさらに含む、請求項1に記載の方法。
- 前記サブルーチン呼出し命令を検出するステップは、前記実行パイプライン内の復号化ステージにおいて前記サブルーチン呼出し命令を検出するステップを含む、請求項1に記載の方法。
- 前記実行パイプライン内で前記サブルーチンリターン命令を検出するステップと、
前記サブルーチンリターン命令を検出するのに応じて、
前記サブルーチンリターン命令のためのBTICヒットを検出するステップと、
前記実行パイプラインのフェッチステージに前記サブルーチンリターン命令のための前記BTICエントリ内の前記次の命令フェッチアドレスフィールドから前記次の命令フェッチアドレスを与えるステップと、
前記フェッチステージに続く前記実行パイプラインの後続のステージに前記サブルーチンリターン命令のための前記BTICエントリから前記少なくとも1つの順次命令を与えるステップとをさらに含む、請求項1に記載の方法。 - 前記サブルーチンリターン命令のための前記BTICヒットを検出するステップは、前記サブルーチンリターン命令のための前記BTICエントリに対応する有効性指示子に基づいて、前記サブルーチンリターン命令のための前記BTICエントリが有効であることを判断するステップを含む、請求項7に記載の方法。
- 前記サブルーチンリターン命令を検出するステップは、前記実行パイプライン内の復号化ステージにおいて前記サブルーチンリターン命令を検出するステップを含む、請求項8に記載の方法。
- 前記次の命令フェッチアドレスは、前記少なくとも1つの順次命令の最後の命令の直後の前記次の命令の前記アドレスを含む、請求項1に記載の方法。
- 前記サブルーチンリターン命令のための前記BTICエントリは、前記サブルーチン呼出し命令のリターンアドレスを記憶するリンクスタックエントリに対応する、請求項1に記載の方法。
- 前記サブルーチン呼出し命令は、前記サブルーチン呼出し命令のリターンアドレスをリンクレジスタ(LR)に入れ、プログラムカウンタをサブルーチンの命令アドレスに設定するように動作する分岐およびリンク(BL)命令を含む、請求項1に記載の方法。
- 前記サブルーチンリターン命令は、プログラムカウンタを前記サブルーチン呼出し命令のリターンアドレスに設定するためのリンクへの分岐(BLR)命令を含む、請求項1に記載の方法。
- 実行パイプラインにおいてサブルーチン呼出し命令を検出するための手段と、
サブルーチンリターン命令のための分岐ターゲット命令キャッシュ(BTIC)エントリを確立するための手段であって、前記BTICエントリは、次の命令フェッチアドレスフィールドおよび分岐ターゲット命令フィールドを含み、前記BTICエントリは、前記サブルーチン呼出し命令を検出したことに応じて確立される、手段とを備え、前記確立するための手段は、
前記サブルーチン呼出し命令の次に続くフェッチされた少なくとも1つの順次命令を前記サブルーチンリターン命令のための前記BTICエントリの前記分岐ターゲット命令フィールド内の分岐ターゲット命令として書くための手段と、
前記実行パイプライン内の前記分岐ターゲット命令に続く次の命令のアドレスに対応する次の命令フェッチアドレスを計算するための手段と、
前記次の命令フェッチアドレスを前記サブルーチンリターン命令のための前記BTICエントリ内の前記次の命令フェッチアドレスフィールドに書き込むための手段とを備える、パイプラインバブル低減回路。 - プロセッサに、請求項1から13のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令をその上に記憶している、コンピュータ可読記憶媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261730717P | 2012-11-28 | 2012-11-28 | |
US61/730,717 | 2012-11-28 | ||
US13/792,335 US9317293B2 (en) | 2012-11-28 | 2013-03-11 | Establishing a branch target instruction cache (BTIC) entry for subroutine returns to reduce execution pipeline bubbles, and related systems, methods, and computer-readable media |
US13/792,335 | 2013-03-11 | ||
PCT/US2013/072372 WO2014085683A1 (en) | 2012-11-28 | 2013-11-27 | Establishing a branch target instruction cache (btic) entry for subroutine returns to reduce execution pipeline bubbles, and related systems, methods, and computer-readable media |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015535634A JP2015535634A (ja) | 2015-12-14 |
JP2015535634A5 JP2015535634A5 (ja) | 2016-12-28 |
JP6271572B2 true JP6271572B2 (ja) | 2018-01-31 |
Family
ID=50774370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015544210A Expired - Fee Related JP6271572B2 (ja) | 2012-11-28 | 2013-11-27 | 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9317293B2 (ja) |
EP (1) | EP2926240A1 (ja) |
JP (1) | JP6271572B2 (ja) |
CN (1) | CN104854556B (ja) |
WO (1) | WO2014085683A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170083333A1 (en) * | 2015-09-21 | 2017-03-23 | Qualcomm Incorporated | Branch target instruction cache (btic) to store a conditional branch instruction |
GB2542831B (en) * | 2015-09-30 | 2018-05-30 | Imagination Tech Ltd | Fetch unit for predicting target for subroutine return instructions |
US11099849B2 (en) * | 2016-09-01 | 2021-08-24 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
US11481221B2 (en) * | 2018-05-02 | 2022-10-25 | Micron Technology, Inc. | Separate branch target buffers for different levels of calls |
US11880231B2 (en) * | 2020-12-14 | 2024-01-23 | Microsoft Technology Licensing, Llc | Accurate timestamp or derived counter value generation on a complex CPU |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5230068A (en) | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
US5623614A (en) | 1993-09-17 | 1997-04-22 | Advanced Micro Devices, Inc. | Branch prediction cache with multiple entries for returns having multiple callers |
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5561782A (en) | 1994-06-30 | 1996-10-01 | Intel Corporation | Pipelined cache system having low effective latency for nonsequential accesses |
US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
US6279106B1 (en) | 1998-09-21 | 2001-08-21 | Advanced Micro Devices, Inc. | Method for reducing branch target storage by calculating direct branch targets on the fly |
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 |
US6289444B1 (en) * | 1999-06-02 | 2001-09-11 | International Business Machines Corporation | Method and apparatus for subroutine call-return prediction |
US6823444B1 (en) | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
TWI249131B (en) * | 2003-01-14 | 2006-02-11 | Ip First Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
JP4247132B2 (ja) | 2004-01-29 | 2009-04-02 | 株式会社ルネサステクノロジ | 情報処理装置 |
US20090037696A1 (en) | 2005-04-08 | 2009-02-05 | Matsushita Electric Industrial Co., Ltd. | Processor |
US7447883B2 (en) | 2006-08-10 | 2008-11-04 | Arm Limited | Allocation of branch target cache resources in dependence upon program instructions within an instruction queue |
JP2008299795A (ja) | 2007-06-04 | 2008-12-11 | Nec Electronics Corp | 分岐予測制御装置及びその方法 |
US7882338B2 (en) | 2008-02-20 | 2011-02-01 | International Business Machines Corporation | Method, system and computer program product for an implicit predicted return from a predicted subroutine |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
-
2013
- 2013-03-11 US US13/792,335 patent/US9317293B2/en not_active Expired - Fee Related
- 2013-11-27 JP JP2015544210A patent/JP6271572B2/ja not_active Expired - Fee Related
- 2013-11-27 EP EP13803413.7A patent/EP2926240A1/en not_active Ceased
- 2013-11-27 CN CN201380061574.3A patent/CN104854556B/zh active Active
- 2013-11-27 WO PCT/US2013/072372 patent/WO2014085683A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP2926240A1 (en) | 2015-10-07 |
CN104854556B (zh) | 2017-11-10 |
US20140149726A1 (en) | 2014-05-29 |
JP2015535634A (ja) | 2015-12-14 |
CN104854556A (zh) | 2015-08-19 |
US9317293B2 (en) | 2016-04-19 |
WO2014085683A1 (en) | 2014-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255074B2 (en) | Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt | |
CN108780398B (zh) | 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测 | |
US10108417B2 (en) | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor | |
US9195466B2 (en) | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
EP2972787B1 (en) | Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
JP6271572B2 (ja) | 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体 | |
US9830152B2 (en) | Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor | |
TW202307652A (zh) | 用於最佳化迴圈緩衝效能之採用處理器中的迴圈特性預測的迴圈緩衝 | |
US20160139933A1 (en) | Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media | |
US20140047221A1 (en) | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
US20160019060A1 (en) | ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA | |
JP2017537408A (ja) | アウトオブオーダー(ooo)プロセッサにおける早期命令実行を提供すること、ならびに関連する装置、方法、およびコンピュータ可読媒体 | |
US9858077B2 (en) | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media | |
JP2017527916A (ja) | リテラルロード予測テーブルを使用してリテラルロード値を予測すること、ならびに関係する回路、方法、およびコンピュータ可読媒体 | |
US9582285B2 (en) | Speculative history forwarding in overriding branch predictors, and related circuits, methods, and computer-readable media | |
JP2018523241A (ja) | パント回避テーブル(pat)を使用したコンピュータプロセッサ内のメモリ命令パントの予測 | |
US20160092219A1 (en) | Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media | |
US20160291981A1 (en) | Removing invalid literal load values, and related circuits, methods, and computer-readable media | |
US20190294443A1 (en) | Providing early pipeline optimization of conditional instructions in processor-based systems | |
US20160092232A1 (en) | Propagating constant values using a computed constants table, and related apparatuses and methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A529 | Written submission of copy of amendment under section 34 (pct) |
Free format text: JAPANESE INTERMEDIATE CODE: A529 Effective date: 20150605 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161107 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161107 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171128 |
|
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: 20171204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171227 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6271572 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |