JP2015133126A5 - - Google Patents

Download PDF

Info

Publication number
JP2015133126A5
JP2015133126A5 JP2015027891A JP2015027891A JP2015133126A5 JP 2015133126 A5 JP2015133126 A5 JP 2015133126A5 JP 2015027891 A JP2015027891 A JP 2015027891A JP 2015027891 A JP2015027891 A JP 2015027891A JP 2015133126 A5 JP2015133126 A5 JP 2015133126A5
Authority
JP
Japan
Prior art keywords
instruction
register
identifying
return
search
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.)
Pending
Application number
JP2015027891A
Other languages
English (en)
Other versions
JP2015133126A (ja
Filing date
Publication date
Priority claimed from US11/934,264 external-priority patent/US8341383B2/en
Application filed filed Critical
Publication of JP2015133126A publication Critical patent/JP2015133126A/ja
Publication of JP2015133126A5 publication Critical patent/JP2015133126A5/ja
Pending legal-status Critical Current

Links

Description

特定の実施形態が、ここにおいて示され、そして説明されているが、当業者は、同じ目的を達成するように予測される任意の構成が、示される特定の実施形態の代わりにされることができることと、本発明が、他の環境において他のアプリケーションを有することとを理解する。本願は、本発明の任意の適応または変形をカバーするように意図される。添付の特許請求の範囲は、ここにおいて説明される特定の実施形態だけに本発明の範囲を限定するようには決して意図されない。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
パイプラインプロセッサの中のプロシージャから戻るときにリンクスタックからリターンアドレスを取り出すための方法であって、
ソフトウェアスタックからリターンアドレスを取り出すように動作可能な検索命令を識別することと、
前記リターンアドレスへと分岐するように動作可能なブランチ命令を識別することと、
識別される前記命令と前記ブランチ命令との両方に応じて、前記リンクスタックから前記リターンアドレスを取り出すことと、
前記リターンアドレスを使用して後続の命令をフェッチすることと、
を備える方法。
[C2]
前記検索命令は、POP命令である、C1に記載の方法。
[C3]
前記検索命令は、ロード命令である、C1に記載の方法。
[C4]
前記ブランチ命令は、BX命令である、C1に記載の方法。
[C5]
前記ブランチ命令は、MOV命令である、C1に記載の方法。
[C6]
前記の前記検索命令を識別することは、前記リターンアドレスを含むレジスタを識別することをさらに備える、C1に記載の方法。
[C7]
前記検索命令を識別することは、レジスタリストを保持することをさらに備え、前記レジスタリストは、複数のレジスタを有し、前記複数のレジスタの中の少なくとも1つのレジスタは、前記リターンアドレスを含む、C1に記載の方法。
[C8]
前記レジスタリストを保持することは、前記複数のレジスタのうちのどれかが、後続の命令によって上書きされる場合に、前記レジスタリストからレジスタを取り除くことを備える、C7に記載の方法。
[C9]
前記ブランチ命令を識別することは、検出ロジック回路によって実行される、C1に記載の方法。
[C10]
前記検出ロジック回路は、プリデコードロジック回路と共に含まれる、C9に記載の方法。
[C11]
前記検出ロジック回路は、デコードロジック回路と共に含まれる、C9に記載の方法。
[C12]
前記ブランチ命令を識別することは、命令キャッシュの中の前記ブランチ命令にフラグ付けすることをさらに備える、C1に記載の方法。
[C13]
命令キャッシュに結合されたラインバッファと;
前記命令キャッシュに結合され、予測リターンアドレスを記憶するリンクスタックを有するフェッチロジック回路と、なお命令は、前記ラインバッファから前記命令キャッシュへとロードされ、前記フェッチロジック回路は、前記命令キャッシュから命令を取り出す;
前記ラインバッファと通信するプリデコードロジック回路と、なお前記プリデコードロジック回路は、プロシージャリターンシーケンスを識別するための検出ロジック回路をさらに備え、前記プロシージャリターンシーケンスは、ソフトウェアスタックからリターンアドレスを取り出すように動作可能な検索命令と前記取り出されたリターンアドレスに分岐するブランチ命令とを備え、前記パイプラインプロセッサは、前記プロシージャリターンシーケンスの前記識別に応じて前記リンクスタックから前記予測されたリターンアドレスを取り出す;
を備えるパイプラインプロセッサ。
[C14]
前記検出ロジック回路は、前記ブランチ命令が、前記ラインバッファから前記命令キャッシュへとロードされるときに、前記プロシージャリターンシーケンスの前記ブランチ命令にフラグ付けする、C13に記載のパイプラインプロセッサ。
[C15]
前記フェッチロジック回路は、前記フラグ付けされた情報から前記プロシージャリターンシーケンスを識別する、C14に記載のパイプラインプロセッサ。
[C16]
前記フェッチロジック回路内のリターンセレクタロジック回路は、前記フラグ付けされた情報から前記リターンシーケンスを識別する、C15に記載のパイプラインプロセッサ。
[C17]
前記検索命令は、POP命令である、C13に記載のパイプラインプロセッサ。
[C18]
前記検索命令は、ロード命令である、C13に記載のパイプラインプロセッサ。
[C19]
前記ブランチ命令は、BX命令である、C13に記載のパイプラインプロセッサ。
[C20]
予測されたリターンアドレスを記憶するリンクスタックを有し、命令キャッシュから命令をフェッチするフェッチロジック回路と、
前記フェッチロジック回路に結合されたデコードロジック回路と、
を備え、前記フェッチされた命令は、前記デコードロジック回路によって復号され、前記デコードロジック回路は、検出ロジック回路をさらに備え、前記検出ロジック回路は、ソフトウェアスタックからアドレスを取り出すように動作可能な検索命令と、前記取り出されたアドレスに分岐するように動作可能なブランチ命令とを備えるプロシージャリターンシーケンスを識別し、パイプラインプロセッサは、前記プロシージャリターンシーケンスの前記識別に応じて前記リンクスタックから前記予測されたリターンアドレスを取り出す、パイプラインプロセッサ。
[C21]
前記フェッチロジック回路は、前記取り出されたアドレスを使用して命令をフェッチする、C20に記載のパイプラインプロセッサ。
[C22]
前記検索命令は、POP命令である、C20に記載のパイプラインプロセッサ。
[C23]
前記検索命令は、ロード命令である、C20に記載のパイプラインプロセッサ。
[C24]
前記ブランチ命令は、前記検索命令によって識別されるアドレスへと分岐する、C20に記載のパイプラインプロセッサ。
[C25]
前記ブランチ命令は、MOV命令である、C20に記載のパイプラインプロセッサ。

Claims (32)

  1. パイプラインプロセッサの中のプロシージャから戻るときにリンクスタックからリターンアドレスを取り出す方法であって、
    ソフトウェアスタックからリターンアドレスを取り出すように動作可能な検索命令を識別することと、ここで、前記検索命令は、前記リターンアドレスを示す少なくとも1つのレジスタを識別するレジスタリストを含む、
    前記レジスタリストを保存することと、
    前記リターンアドレスへと分岐するように動作可能なブランチ命令を識別することと、
    前記検索命令と前記ブランチ命令の組み合わせを含むプロシージャリターンシーケンスを識別することと、ここで、前記プロシージャリターンシーケンスは、前記保存されたレジスタリストを前記ブランチ命令のターゲットレジスタと比較することによって識別される、
    前記プロシージャリターンシーケンスを識別することに応じて、リンクスタックから前記リターンアドレスを取り出すことと、
    前記リターンアドレスを使用して命令をフェッチすることと
    を備える、方法。
  2. 前記検索命令は、POP命令である、請求項1に記載の方法。
  3. 前記検索命令は、ロード命令である、請求項1に記載の方法。
  4. 前記ブランチ命令は、BX命令である、請求項1に記載の方法。
  5. 前記ブランチ命令は、MOV命令である、請求項1に記載の方法。
  6. 前記検索命令を識別することは、前記リターンアドレスを含むレジスタを識別することをさらに備える、請求項1に記載の方法。
  7. 前記レジスタリストを保持することをさらに備え、前記レジスタリストを保持することは、特定のレジスタが上書きされるときに、前記レジスタリストから前記特定のレジスタを取り除くことを備える、請求項1に記載の方法。
  8. 前記ブランチ命令を識別することは、検出ロジック回路によって実行される、請求項1に記載の方法。
  9. 前記検出ロジック回路は、プリデコードロジック回路の一部である、請求項8に記載の方法。
  10. 前記検出ロジック回路は、デコードロジック回路の一部である、請求項8に記載の方法。
  11. 前記ブランチ命令を識別することは、前記保存されたレジスタリストのレジスタとマッチする前記ブランチ命令の前記ターゲットレジスタに応答して、命令キャッシュの中の前記ブランチ命令にフラグ付けすることをさらに備え、前記検索命令の前記レジスタリストを前記フラグ付けされたブランチ命令のターゲットレジスタと比較することなく、前記フラグ付けされたブランチ命令に基づいて第2のプロシージャリターンを識別することを備える、請求項1に記載の方法。
  12. 複数の予測されたリターンアドレスを記憶するリンクスタックを有するフェッチロジック回路と、ここで、前記フェッチロジック回路は、命令キャッシュから命令をフェッチするように構成される、
    前記フェッチロジック回路に結合されたデコードロジック回路と
    を備え、前記フェッチされた命令は、前記デコードロジック回路によって復号可能であり、
    前記デコードロジック回路は、さらに、検出ロジック回路を備え、前記検出ロジック回路は、
    検索命令とブランチ命令の組み合わせを含むプロシージャリターンシーケンスを識別することと、ここで、前記検索命令は、ソフトウェアスタックからアドレスを取り出すように動作可能であり、前記検索命令は、少なくとも1つの予測されたリターンアドレスを示す少なくとも1つのレジスタを識別するレジスタリストを含み、前記ブランチ命令は、前記取り出されたアドレスに分岐するように動作可能である、
    前記レジスタリストを保存することと、ここで、前記プロシージャリターンシーケンスは、前記保存されたレジスタリストを前記ブランチ命令のターゲットレジスタと比較することによって識別される、
    前記プロシージャリターンシーケンスを識別することに応じて前記リンクスタックから前記複数の予測されたリターンアドレスのうちの前記少なくとも1つの予測されたリターンアドレスを取り出すことと
    を行うように動作可能である、パイプラインプロセッサ。
  13. 前記フェッチロジック回路は、前記複数の予測されたリターンアドレスのうちの前記取り出された少なくとも1つの予測されたリターンアドレスを使用して命令をフェッチする、請求項12に記載のパイプラインプロセッサ。
  14. 前記検索命令は、POP命令である、請求項12に記載のパイプラインプロセッサ。
  15. 前記検索命令は、ロード命令である、請求項12に記載のパイプラインプロセッサ。
  16. 前記ブランチ命令は、前記検索命令によって識別されるアドレスへと分岐する、請求項12に記載のパイプラインプロセッサ。
  17. 前記ブランチ命令は、MOV命令である、請求項12に記載のパイプラインプロセッサ。
  18. パイプラインプロセッサの中のリンクスタックからリターンアドレスを取り出す方法であって、
    ソフトウェアスタックからアドレスを取り出すように動作可能な検索命令を識別することと、ここで、前記検索命令は、レジスタリストを有する、
    前記検索命令の前記レジスタリストを保存することと、
    ブランチ命令を識別することと、
    前記保存されたレジスタリストを前記ブランチ命令のターゲットレジスタと比較することと、
    前記ターゲットレジスタが前記保存されたレジスタリストの中のレジスタとマッチすると決定することと、
    前記ターゲットレジスタが前記保存されたレジスタリストの中の前記レジスタとマッチすると決定することに応じて、前記検索命令と前記ブランチ命令の組み合わせを含むプロシージャリターンシーケンスを識別することと、
    前記プロシージャリターンシーケンスを識別することに応じて、リンクスタックからリターンアドレスを取り出すことと、
    前記リターンアドレスを使用して命令をフェッチすることと
    を備える、方法。
  19. 前記検索命令が、前記レジスタリストを保存するのに先立って前記レジスタリストの中にプログラムカウンタを有さないと決定することをさらに備える、請求項18に記載の方法。
  20. 前記リターンアドレスは、前記検索命令および前記ブランチ命令を実行するのに先立って前記リンクスタックから取り出される、請求項18に記載の方法。
  21. 前記命令は、前記検索命令および前記ブランチ命令を実行するのに先立ってフェッチされる、請求項18に記載の方法。
  22. 前記ブランチ命令は、暗黙ブランチ命令である、請求項18に記載の方法。
  23. 前記リターンアドレスは、前記検索命令および前記ブランチ命令を実行するのに先立って前記リンクスタックから取り出される、請求項1に記載の方法。
  24. 前記検出ロジック回路は、前記プロシージャリターンシーケンスの実行に先立って前記リンクスタックから前記少なくとも1つの予測されたリターンアドレスを取り出すようにさらに動作可能である、請求項12に記載のパイプラインプロセッサ。
  25. 実行可能な命令を備える非一時的なコンピュータ読取可能媒体であって、前記命令は、プロセッサに、
    ソフトウェアスタックからリターンアドレスを取り出すように動作可能な検索命令を識別することと、ここで、前記検索命令は、前記リターンアドレスを示す少なくとも1つのレジスタを識別するレジスタリストを含む、
    前記レジスタリストを保存することと、
    前記リターンアドレスへと分岐するように動作可能なブランチ命令を識別することと、
    前記検索命令と前記ブランチ命令の組み合わせを含むプロシージャリターンシーケンスを識別することと、ここで、前記プロシージャリターンシーケンスは、前記保存されたレジスタリストを前記ブランチ命令のターゲットレジスタと比較することによって識別される、
    前記プロシージャリターンシーケンスを識別することに応じて、リンクスタックから前記リターンアドレスを取り出すことと、
    前記リターンアドレスを使用して命令をフェッチすることと
    を行わせるように前記プロセッサによって実行可能である、非一時的なコンピュータ読取可能媒体。
  26. 前記検索命令は、POP命令である、請求項25に記載の非一時的なコンピュータ読取可能媒体。
  27. 前記検索命令は、ロード命令である、請求項25に記載の非一時的なコンピュータ読取可能媒体。
  28. 命令キャッシュから命令をフェッチするための命令と、ここで、前記命令をフェッチするための手段は、複数の予測されたリターンアドレスを記憶するリンクスタックを有する、
    フェッチされた命令を復号するための手段と
    を備え、前記復号するための手段は、前記フェッチするための手段に結合され、
    前記復号するための手段は、
    検索命令とブランチ命令の組み合わせを含むプロシージャリターンシーケンスを識別するための手段と、ここで、前記検索命令は、ソフトウェアスタックからアドレスを取り出すように動作可能であり、前記検索命令は、少なくとも1つの予測されたリターンアドレスを示す少なくとも1つのレジスタを識別するレジスタリストを含み、前記ブランチ命令は、前記取り出されたアドレスに分岐するように動作可能である、
    前記レジスタリストを保存するための手段と、ここで、前記プロシージャリターンシーケンスは、前記保存されたレジスタリストを前記ブランチ命令のターゲットレジスタと比較することによって識別される、
    前記プロシージャリターンシーケンスを識別することに応じて、前記リンクスタックから前記複数の予測されたリターンアドレスのうちの前記少なくとも1つの予測されたリターンアドレスを取り出すための手段と
    を備える、装置。
  29. 前記命令をフェッチするための手段は、前記複数の予測されたリターンアドレスのうちの前記取り出された少なくとも1つの予測されたリターンアドレスを使用して命令をフェッチする、請求項28に記載の装置。
  30. 命令を備える非一時的なコンピュータ読取可能媒体であって、前記命令は、プロセッサに、
    ソフトウェアスタックからアドレスを取り出すように動作可能な検索命令を識別することと、ここで、前記検索命令は、レジスタリストを有する、
    前記検索命令の前記レジスタリストを保存することと、
    ブランチ命令を識別することと、
    前記保存されたレジスタリストを前記ブランチ命令のターゲットレジスタと比較すること、
    前記ターゲットレジスタが前記保存されたレジスタリストの中のレジスタとマッチすると決定することと、
    前記ターゲットレジスタが前記保存されたレジスタリストの中の前記レジスタとマッチすると決定することに応じて、前記検索命令と前記ブランチ命令の組み合わせを含むプロシージャリターンシーケンスを識別することと、
    前記プロシージャリターンシーケンスを識別することに応じて、リンクスタックからリターンアドレスを取り出すことと、
    前記リターンアドレスを使用して命令をフェッチすることと
    を行わせるように前記プロセッサによって実行可能である、非一時的なコンピュータ読取可能媒体。
  31. 前記リターンアドレスは、前記検索命令および前記ブランチ命令を実行するのに先立って前記リンクスタックから取り出される、請求項30に記載の非一時的なコンピュータ読取可能媒体。
  32. 前記命令は、前記検索命令および前記ブランチ命令を実行するのに先立ってフェッチされる、請求項30に記載の非一時的なコンピュータ読取可能媒体。
JP2015027891A 2007-11-02 2015-02-16 プロシージャリターンシーケンスを加速するための方法およびシステム Pending JP2015133126A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/934,264 2007-11-02
US11/934,264 US8341383B2 (en) 2007-11-02 2007-11-02 Method and a system for accelerating procedure return sequences

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013095916A Division JP5815596B2 (ja) 2007-11-02 2013-04-30 プロシージャリターンシーケンスを加速するための方法およびシステム

Publications (2)

Publication Number Publication Date
JP2015133126A JP2015133126A (ja) 2015-07-23
JP2015133126A5 true JP2015133126A5 (ja) 2015-11-26

Family

ID=40085506

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2010533174A Expired - Fee Related JP5301554B2 (ja) 2007-11-02 2008-10-31 プロシージャリターンシーケンスを加速するための方法およびシステム
JP2013095916A Expired - Fee Related JP5815596B2 (ja) 2007-11-02 2013-04-30 プロシージャリターンシーケンスを加速するための方法およびシステム
JP2015027891A Pending JP2015133126A (ja) 2007-11-02 2015-02-16 プロシージャリターンシーケンスを加速するための方法およびシステム

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2010533174A Expired - Fee Related JP5301554B2 (ja) 2007-11-02 2008-10-31 プロシージャリターンシーケンスを加速するための方法およびシステム
JP2013095916A Expired - Fee Related JP5815596B2 (ja) 2007-11-02 2013-04-30 プロシージャリターンシーケンスを加速するための方法およびシステム

Country Status (6)

Country Link
US (1) US8341383B2 (ja)
EP (1) EP2220556B1 (ja)
JP (3) JP5301554B2 (ja)
KR (1) KR101254067B1 (ja)
CN (1) CN101884025B (ja)
WO (1) WO2009059100A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US8341383B2 (en) * 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences
US9411590B2 (en) * 2013-03-15 2016-08-09 Qualcomm Incorporated Method to improve speed of executing return branch instructions in a processor
US9703948B2 (en) 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems
GB2542831B (en) * 2015-09-30 2018-05-30 Imagination Tech Ltd Fetch unit for predicting target for subroutine return instructions
GB2551548B (en) 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction
US11055098B2 (en) * 2018-07-24 2021-07-06 Advanced Micro Devices, Inc. Branch target buffer with early return prediction
WO2021141760A1 (en) * 2020-01-06 2021-07-15 Quadric. Io, Inc Systems and methods for optimizing nested loop instructions in pipeline processing stages
US11586440B2 (en) * 2021-06-01 2023-02-21 International Business Machines Corporation Link stack based instruction prefetch augmentation

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE174700T1 (de) * 1989-09-13 1999-01-15 Digital Equipment Corp Prozedurzustandsdeskriptorsystem für digitale datenprozessoren
JPH06131250A (ja) * 1992-10-20 1994-05-13 Toshiba Corp データ処理装置
JPH07239782A (ja) * 1994-02-28 1995-09-12 Toshiba Corp 演算処理装置
JPH07281892A (ja) * 1994-04-06 1995-10-27 Hitachi Ltd 情報処理装置
JP2735523B2 (ja) * 1995-11-29 1998-04-02 日本電気アイシーマイコンシステム株式会社 プロシージャ・ステップ処理方法
US5812813A (en) * 1996-07-29 1998-09-22 Integrated Device Technology, Inc. Apparatus and method for of register changes during execution of a micro instruction tracking sequence
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US6094716A (en) 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6363473B1 (en) * 1999-04-01 2002-03-26 Compaq Information Technologies Group, L.P. Simulated memory stack in a stackless environment
JP3723019B2 (ja) 1999-09-29 2005-12-07 富士通株式会社 サブルーチンリターン相当の命令の分岐予測を行う装置および方法
GB2358261B (en) * 2000-01-17 2004-06-09 Advanced Risc Mach Ltd Data processing with native and interpreted program instruction words
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
US6898699B2 (en) 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
US7996659B2 (en) * 2005-06-06 2011-08-09 Atmel Corporation Microprocessor instruction that allows system routine calls and returns from all contexts
US7478228B2 (en) * 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls
US8341383B2 (en) * 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences

Similar Documents

Publication Publication Date Title
JP2015133126A5 (ja)
US10083041B2 (en) Instruction sequence buffer to enhance branch prediction efficiency
US9733944B2 (en) Instruction sequence buffer to store branches having reliably predictable instruction sequences
US7882338B2 (en) Method, system and computer program product for an implicit predicted return from a predicted subroutine
JP6796717B2 (ja) 分岐ターゲットバッファの圧縮
JP5815596B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
US20130339693A1 (en) Second-level branch target buffer bulk transfer filtering
JP2015122094A5 (ja)
US10585669B2 (en) Reducing stalling in a simultaneous multithreading processor by inserting thread switches for instructions likely to stall
JP2018537800A5 (ja)
US20230273797A1 (en) Processor with adaptive pipeline length
JP2016505972A5 (ja)
US9152566B2 (en) Prefetch address translation using prefetch buffer based on availability of address translation logic
US10996952B2 (en) Macro-op fusion
US20140250289A1 (en) Branch Target Buffer With Efficient Return Prediction Capability
JP2021532471A (ja) 早期リターン予測を有する分岐ターゲットバッファ
US11620229B2 (en) Data cache with prediction hints for cache hits
CN110178115B (zh) 处理自修改代码的方法和装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
KR20200139759A (ko) 데이터 항목들을 프리페치하는 장치 및 방법
US20170255471A1 (en) Processor with content addressable memory (cam) and monitor component
JPWO2012132214A1 (ja) プロセッサ及びその命令処理方法
TWI610226B (zh) 使用精簡指令集核心