JP2015535634A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2015535634A5 JP2015535634A5 JP2015544210A JP2015544210A JP2015535634A5 JP 2015535634 A5 JP2015535634 A5 JP 2015535634A5 JP 2015544210 A JP2015544210 A JP 2015544210A JP 2015544210 A JP2015544210 A JP 2015544210A JP 2015535634 A5 JP2015535634 A5 JP 2015535634A5
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- subroutine
- address
- btic
- return
- 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
- 230000000875 corresponding Effects 0.000 claims 4
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 | 2013-03-11 | ||
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 |
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 true JP2015535634A5 (ja) | 2016-12-28 |
JP6271572B2 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 | 株式会社ルネサステクノロジ | 情報処理装置 |
JP4354990B2 (ja) | 2005-04-08 | 2009-10-28 | パナソニック株式会社 | プロセッサ |
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 WO PCT/US2013/072372 patent/WO2014085683A1/en active Application Filing
- 2013-11-27 CN CN201380061574.3A patent/CN104854556B/zh active Active
- 2013-11-27 EP EP13803413.7A patent/EP2926240A1/en not_active Ceased
- 2013-11-27 JP JP2015544210A patent/JP6271572B2/ja not_active Expired - Fee Related
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015535634A5 (ja) | ||
JP2015043216A5 (ja) | ||
HRP20190671T1 (hr) | Spremanje/vraćanje odabranih registara kod transakcijske obrade | |
GB201314780D0 (en) | Last branch record indicators for transactional memory | |
JP2013546088A5 (ja) | ||
JP2010541067A5 (ja) | ||
MY174573A (en) | Controlling an order for processing data elements during vector processing | |
HRP20170426T1 (hr) | Naredba za netransakcijsko spremanje | |
JP2017041250A5 (ja) | ||
JP2015049906A5 (ja) | ||
JP2016190089A5 (ja) | ||
RU2012148401A (ru) | Средство процессорной поддержки | |
JP2015122094A5 (ja) | ||
JP2011028540A5 (ja) | 情報処理システム | |
JP2014211881A5 (ja) | ||
BR112015030001A2 (pt) | instruções de acesso à memória de múltiplos registradores, processadores, métodos e sistemas | |
EP2660715A3 (en) | Optimizing register initialization operations | |
RU2016126976A (ru) | Общая последовательность загрузки для управляющей сервисной программы, способной к инициализации во множественных архитектурах | |
JP2010045425A5 (ja) | ||
SI2769382T1 (en) | Command to calculate the distance to the specified memory limit | |
RU2007123362A (ru) | Обработка ошибок предварительного декодирования через коррекцию ветвлений | |
JP2016505972A5 (ja) | ||
JP2013536487A5 (ja) | ||
JP2009501369A5 (ja) | ||
JP2015523668A5 (ja) |