JP2015535634A5 - - Google Patents

Download PDF

Info

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
Application number
JP2015544210A
Other languages
English (en)
Other versions
JP2015535634A (ja
JP6271572B2 (ja
Filing date
Publication date
Priority claimed from US13/792,335 external-priority patent/US9317293B2/en
Application filed filed Critical
Publication of JP2015535634A publication Critical patent/JP2015535634A/ja
Publication of JP2015535634A5 publication Critical patent/JP2015535634A5/ja
Application granted granted Critical
Publication of JP6271572B2 publication Critical patent/JP6271572B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Claims (15)

  1. 行パイプライン内のサブルーチンリターン命令のための分岐ターゲット命令キャッシュ(BTIC)エントリを確立する方法であって、前記BTICエントリは、次の命令フェッチアドレスフィールドおよび分岐ターゲット命令フィールドを含み、前記方法は、
    実行パイプラインにおいてサブルーチン呼出し命令を検出するステップと、
    前記サブルーチン呼出し命令を検出したことに応じて、サブルーチンリターン命令のための前記BTICエントリを確立するステップであって、
    前記サブルーチン呼出し命令の次に続くフェッチされた少なくとも1つの順次命令を前記サブルーチンリターン命令のための前記BTICエントリの前記分岐ターゲット命令フィールド内の分岐ターゲット命令として書くことと、
    前記実行パイプライン内の前記分岐ターゲット命令に続く次の命令のアドレスに対応する次の命令フェッチアドレスを計算することと、
    前記次の命令フェッチアドレスを前記サブルーチンリターン命令のための前記BTICエントリ内の前記次の命令フェッチアドレスフィールドに書き込むこととによって、
    確立するステップとを含む、方法。
  2. 前記サブルーチンリターン命令は、前記サブルーチン呼出し命令によって呼び出されたサブルーチンからのリターンを指示する、請求項1に記載の方法。
  3. 前記少なくとも1つの順次命令は非分岐命令であり、
    前記次の命令フェッチアドレスを計算するステップは、前記少なくとも1つの順次命令の最後の命令に続く前記次の命令の前記アドレスを計算するステップを含む、または、
    前記少なくとも1つの順次命令の最後の命令は分岐命令であり、
    前記次の命令フェッチアドレスを計算するステップは、前記分岐命令のターゲット命令のアドレスを計算するステップを含む、請求項1に記載の方法。
  4. 前記少なくとも1つの順次命令の最後の命令に先行する前記少なくとも1つの順次命令のうちの1つまたは複数の命令は分岐命令であり、
    前記分岐命令のターゲット命令は非分岐命令であり、
    前記次の命令フェッチアドレスを計算するステップは、前記分岐命令の前記ターゲット命令に続く前記次の命令の前記アドレスを計算するステップを含む、請求項1に記載の方法。
  5. 前記BTICエントリを確立するステップは、前記BTICエントリが有効であることを指示するために、前記BTICエントリに対応する有効性指示子を設定するステップをさらに含む、請求項1に記載の方法。
  6. 前記サブルーチン呼出し命令を検出するステップは、前記実行パイプライン内の復号化ステージにおいて前記サブルーチン呼出し命令を検出するステップを含む、請求項1に記載の方法。
  7. 前記実行パイプライン内で前記サブルーチンリターン命令を検出するステップと、
    前記サブルーチンリターン命令を検出するのに応じて、
    前記サブルーチンリターン命令のためのBTICヒットを検出するステップと、
    前記実行パイプラインのフェッチステージに前記サブルーチンリターン命令のための前記BTICエントリ内の前記次の命令フェッチアドレスフィールドから前記次の命令フェッチアドレスを与えるステップと、
    前記フェッチステージに続く前記実行パイプラインの後続のステージに前記サブルーチンリターン命令のための前記BTICエントリから前記少なくとも1つの順次命令を与えるステップとをさらに含む、請求項1に記載の方法。
  8. 前記サブルーチンリターン命令のための前記BTICヒットを検出するステップは、前記サブルーチンリターン命令のための前記BTICエントリに対応する有効性指示子に基づいて、前記サブルーチンリターン命令のための前記BTICエントリが有効であることを判断するステップを含む、請求項7に記載の方法。
  9. 前記サブルーチンリターン命令を検出するステップは、前記実行パイプライン内の復号化ステージにおいて前記サブルーチンリターン命令を検出するステップを含む、請求項8に記載の方法。
  10. 前記次の命令フェッチアドレスは、前記少なくとも1つの順次命令の最後の命令の直後の前記次の命令の前記アドレスを含む、請求項1に記載の方法。
  11. 前記サブルーチンリターン命令のための前記BTICエントリは、前記サブルーチン呼出し命令のリターンアドレスを記憶するリンクスタックエントリに対応する、請求項1に記載の方法。
  12. 前記サブルーチン呼出し命令は、前記サブルーチン呼出し命令のリターンアドレスをリンクレジスタ(LR)に入れ、プログラムカウンタをサブルーチンの命令アドレスに設定するように動作する分岐およびリンク(BL)命令を含む、請求項1に記載の方法。
  13. 前記サブルーチンリターン命令は、プログラムカウンタを前記サブルーチン呼出し命令のリターンアドレスに設定するためのリンクへの分岐(BLR)命令を含む、請求項1に記載の方法。
  14. 実行パイプラインにおいてサブルーチン呼出し命令を検出するための手段と、
    ブルーチンリターン命令のための分岐ターゲット命令キャッシュ(BTIC)エントリを確立するための手段であって、前記BTICエントリは、次の命令フェッチアドレスフィールドおよび分岐ターゲット命令フィールドを含み、前記BTICエントリは、前記サブルーチン呼出し命令を検出したことに応じて確立される、手段とを備え、前記確立するための手段は、
    前記サブルーチン呼出し命令の次に続くフェッチされた少なくとも1つの順次命令を前記サブルーチンリターン命令のための前記BTICエントリの前記分岐ターゲット命令フィールド内の分岐ターゲット命令として書くための手段と、
    前記実行パイプライン内の前記分岐ターゲット命令に続く次の命令のアドレスに対応する次の命令フェッチアドレスを計算するための手段と、
    前記次の命令フェッチアドレスを前記サブルーチンリターン命令のための前記BTICエントリ内の前記次の命令フェッチアドレスフィールドに書き込むための手段とを備える、パイプラインバブル低減回路。
  15. プロセッサに、請求項1から13のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令をその上に記憶している、コンピュータ可読記憶媒体。
JP2015544210A 2012-11-28 2013-11-27 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体 Expired - Fee Related JP6271572B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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)