JP2016526745A - マイクロプロセッサにおける選択的リネーミングのための方法および装置 - Google Patents

マイクロプロセッサにおける選択的リネーミングのための方法および装置 Download PDF

Info

Publication number
JP2016526745A
JP2016526745A JP2016525797A JP2016525797A JP2016526745A JP 2016526745 A JP2016526745 A JP 2016526745A JP 2016525797 A JP2016525797 A JP 2016525797A JP 2016525797 A JP2016525797 A JP 2016525797A JP 2016526745 A JP2016526745 A JP 2016526745A
Authority
JP
Japan
Prior art keywords
instruction
register
physical register
processor
architectural
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.)
Ceased
Application number
JP2016525797A
Other languages
English (en)
Inventor
アニル・クリシュナ
サンディープ・スレシュ・ナヴァダ
ニケット・クマール・チョウダリー
マイケル・スコット・マッキルヴェイン
トーマス・アンドリュー・サルトリウス
ロドニー・ウェイン・スミス
ケネス・アラン・ドックサー
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016526745A publication Critical patent/JP2016526745A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Devices For Executing Special Programs (AREA)

Abstract

アウトオブオーダープロセッサが使用中の物理レジスタを再利用することを許可するための方法および装置が本明細書に開示される。この方法および装置は、命令結果が物理レジスタに書き込まれることを許可されるか、許可されないかを示すために、リネームマップテーブル(RMT)および物理レジスタファイル(PRF)中のトークンおよび/または他の識別子などの識別子を使用する。

Description

米国特許法第119条に基づく優先権の主張
本特許出願は、2013年7月12日に出願され、本譲受人に譲渡され、本明細書に参照により明白に組み込まれた「Method and Apparatus for Selective Renaming in a Microprocessor」という名称の仮出願第61/845,476号に基づく優先権を主張する。
本開示の態様は、概してプロセッサに関し、より詳細には、マイクロプロセッサにおける選択的リネーミングに関する。
レジスタリネーミングは、プロセッサにおいて命令のストリームを処理するときの一般的なプロセスである。たとえば命令は、命令セットアーキテクチャに従って、アーキテクチャ上のレジスタ(architected register)を生成する。アーキテクチャ上のレジスタは、物理レジスタにリネームされ、物理レジスタが命令の結果を格納する。
リネームマップテーブル(RMT)が、アーキテクチャ上のレジスタを物理レジスタにマップする。プログラムが実行されるにつれて、アーキテクチャ上のレジスタが継続的に物理レジスタにマップされ、結果を格納するために利用できる物理レジスタの数はすぐに欠乏する可能性がある。ゆえに、プロセッサの設計は、命令によるアーキテクチャ上のレジスタの新しい生成すべてが、結果を入れる物理レジスタを有することを確実にするために、多くの物理レジスタを提供しなければならない。
これ自体が、問題となる可能性がある。標準的な解決策は、高度にポート化された大規模な物理レジスタファイル(PRF)を有することであるからである。高度にポート化されたPRFを有することは、プロセッサのサイクル時間、プロセッサの電力消費、ならびにプロセッサのクロック速度、すなわち、プロセッサがいかに速くまたは遅く動作するかに、影響を与える可能性がある。
したがって、PRFができるだけ小さくなり得るように、レジスタリネーミングのための改善された装置および方法が望まれる。
本発明の例示的実施形態は、機械によってアクセスされるとき、マイクロプロセッサ(および/またはプロセッサ)において選択的リネーミングのための方法を機械に行わせるデータを含んだ、システム、方法、および非一時的コンピュータ可読記憶媒体を対象とする。たとえば、1つまたは複数の実施では、プロセッサを動作させる方法が、第1のプロデューサ命令(producer instruction)を取得することによって動作する。第1のプロデューサ命令は、第1のプロデューサ命令結果を含む。第1のプロデューサ命令はまた、第1の識別子を含む。第1の識別子は、命令シーケンス識別子を含むことができる。第1の識別子は、トークンカウントを含むことができる。
方法はまた、第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成することによって動作する。第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成することは、第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成に対応する、リネームマップテーブル(RMT:Rename Map Table)中のエントリを識別することを含む。
方法は、さらにアーキテクチャ上のレジスタに物理レジスタを割り当てることによって動作する。アーキテクチャ上のレジスタに物理レジスタを割り当てることは、第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成と関連するリネームマップテーブル(RMT)中の物理レジスタエントリを識別することを含む。
方法は、さらに第2のプロデューサ命令を取得することによって動作する。第2のプロデューサ命令は、第2のプロデューサ命令結果と、第2の識別子とを含む。第2の識別子は、命令シーケンス識別子を含むことができる。第2の識別子は、トークンカウントを含むことができる。
方法は、さらにアーキテクチャ上のレジスタの第2の生成を生成することと、アーキテクチャ上のレジスタの第2の生成に物理レジスタを割り当てることとによって動作する。
方法は、さらに第2の識別子が第1の識別子に対応する場合、第2のプロデューサ命令結果が第1の物理レジスタに書き込まれることを許可することによって動作する。方法はまた、第2の識別子が第1の識別子に対応しない場合、第2のプロデューサ命令結果が第1の物理レジスタに書き込まれることを許可しないことによって動作する。
1つまたは複数の実施では、この方法は、アーキテクチャ上のレジスタの第2の生成に新しい物理レジスタを割り当てることによって、および新しい物理レジスタが物理レジスタと同じである場合、物理レジスタを解放すること(freeing)によって、さらに動作する。
プロセッサは、アウトオブオーダープロセッサであり得る。第1のプロデューサ命令は、潜在的パイプラインフラッシュ命令(potential pipeline flush instruction)であり得る。いくつかの実施では、アーキテクチャ上のレジスタは、命令セットアーキテクチャによって定義される。
1つまたは複数の実施では、方法は、第1のプロデューサ命令は潜在的パイプラインフラッシュ命令であると判断すること、ならびに、第1のプロデューサ命令は潜在的パイプラインフラッシュ命令であるという判断に応じて第1および第2の識別子をリセットすることによって動作する。
1つまたは複数の実施は、パイプラインで命令を処理して、少なくとも1つのアーキテクチャ上のレジスタおよび少なくとも1つの命令結果を生成するように構成されたプロセッサを含む。プロセッサは、リネームマップテーブル(RMT)を含むことができる。RMTは、少なくとも1つのアーキテクチャ上のレジスタをそれぞれ少なくとも1つの物理レジスタにマップする少なくとも1つのエントリを含むことができる。RMT中の少なくとも1つのエントリは、RMT識別子を含む。
プロセッサはまた、物理レジスタファイル(PRF)を含むことができる。PRFは、少なくとも1つの物理レジスタを表す少なくとも1つのエントリを含むことができる。PRF中の少なくとも1つのエントリは、PRF識別子を含むことができる。
プロセッサは、PRF識別子がRMT識別子に対応する場合、命令結果が物理レジスタに書き込まれることを許可するように構成された実行モジュールを含むことができる。実行モジュールはまた、PRF識別子がRMT識別子に対応しない場合、命令結果が物理レジスタに書き込まれることを許可しないようにすることができる。
代替的実施では、プロセッサを動作させる方法が、プロセッサパイプラインから第1のプロデューサ命令を取得することによって動作する。第1のプロデューサ命令は、第1のプロデューサ命令結果を含むことができる。プロセッサパイプラインは、データ転送ネットワークを含むことができる。プロセッサを動作させる方法は、さらに第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成すること、および第2のプロデューサ命令を取得することによって動作することができる。第2のプロデューサ命令は、第2のプロデューサ命令結果を含むことができる。プロセッサを動作させる方法は、さらにアーキテクチャ上のレジスタの第2の生成を生成することと、物理レジスタをアーキテクチャ上のレジスタの第2の生成に割り当てることと、第2のプロデューサ命令結果が物理レジスタに書き込まれることを許可することと、第1のプロデューサ命令結果がデータ転送ネットワークから読み出されることを許可することとによって動作することができる。
本願の発明の概要の記載は、特許請求の範囲の範囲または意味を解釈するまたは限定するために使用されないという理解の下に提示される。本願の発明の概要の記載は、特許請求の範囲に記載する主題の主要な特徴または本質的特徴を断定することを目的とせず、特許請求の範囲に記載する主題の範囲を決定する際の助けとして使用されることもまた目的としない。
添付の図面は、本明細書に記載する技術の実施の説明に役立つように提示され、単に実施の例示のために提供され、実施を限定するものではない。
1つまたは複数の実施による例示的なプロセッサのブロック図である。 1つまたは複数の実施による、図1に示す例示的なプロセッサのより詳細な図である。 ある実施による、命令リネーム段階のプロセッサにおける選択的リネーミングのための方法の例示的な流れ図である。 ある実施による、命令完了段階のプロセッサにおける選択的リネーミングのための方法の例示的な流れ図である。 ある実施による、命令コミット/リタイア段階のプロセッサにおける選択的リネーミングのための方法の例示的な流れ図である。 代替的な実施による、データ転送ネットワークを使用したプロセッサにおける選択的リネーミングのための方法の例示的な流れ図である。
発明を実施するための形態は、添付の図面を参照する。図では、参照番号の(1つまたは複数の)最も左の桁は、その参照番号が最初に表示された図を識別する。同様の特徴および構成要素には図面を通して同じ参照符号が使用される。
一般的に、本明細書に記載される主題の1つの実施は、プロセッサのサイクル時間、プロセッサの電力消費、ならびにプロセッサのクロック速度、すなわちプロセッサがいかに速くまたは遅く動作するかを改善するためのアウトオブオーダープロセッサ(および/またはマイクロプロセッサ)における選択的レジスタリネーミングを対象とする。レジスタリネーミングでは、アーキテクチャ上のレジスタが命令によって初めて生成されるとき、アーキテクチャ上のレジスタは、特定のプロセッサのための命令セットアーキテクチャ(ISA)に基づいて、異なる名前、すなわち物理レジスタ名にリネームされる。アーキテクチャ上のレジスタが命令によって2度目に生成されるとき、アーキテクチャ上のレジスタの第2の生成は、一般的に、以前に割り当てられた物理レジスタとは異なる新しい物理レジスタを割り当てられる。このようにプロセッサは、現在、新しい物理レジスタのための命令結果の生産および消費とともに、並行して、またはアウトオブオーダーで、前の物理レジスタのための命令結果の生産および消費を実行することができる。このプロセスは、プロセッサの動作をスピードアップする傾向がある。
命令の結果に対するプロデューサ/コンシューマペアが、書込み/読出しのためにリネームされた物理レジスタを見ることがわかるように、リネームマップテーブル(RMT)が、アーキテクチャ上のレジスタの名前を、割り当てられた物理レジスタにマップする。アーキテクチャ上のレジスタの第2の生成が新しい物理レジスタに割り当てられるとき、第2のプロデューサ/コンシューマペアが、書込み/読出しのためにリネームされた物理レジスタを見ることがわかるように、RMTはそれに応じて更新される。
このリネーミングプロセスとともに存在する1つの問題は、同じアーキテクチャ上のレジスタのすべての生成が異なる物理レジスタを割り当てられることである。すなわち、各プロデューサ/コンシューマペアが、異なる物理レジスタを割り当てられる。結果として、プロセッサは物理レジスタをすぐに使い果たすか、あるいは物理レジスタファイル(PRF)は非常に大きくなる。
本明細書に記載する1つまたは複数の実施によれば、レジスタリネーミング中に物理レジスタが再利用されるので、PRFのサイズは削減され得る。1つまたは複数の実施では、潜在的パイプラインフラッシュ(PPF)命令、潜在的リカバリポイントなどを利用して、物理レジスタ再利用が遂行される。PPF命令は、プロセッサが、次の命令は何になるかを命令フェッチ時間に推測する命令である。
条件分岐命令が、PPF命令の一例である。条件分岐命令ではプロセッサは、命令が実際に実行されるまで、分岐が行われることになるかどうかがわからない。命令が完了するには多くのサイクルを要するので、プロセッサが実際の実行まで待つことが最適ではないことから、たとえば、分岐予測器が使用されて、最終的にどの分岐が行われるかを推測または推量し、分岐予測器によって提供されるターゲットアドレスから命令をフェッチすることによってプロセスをスピードアップする。
分岐予測が正しくなかったこと、および分岐予測に応じてフェッチされた命令は実行されるべきではなかったことが判明する場合、プロセッサはその状態を、推測が間違っていたポイントまで回復しようと試みる。すなわち、プロセッサは、PPF命令を超えて何も起こらなかったかのように振る舞おうと試みることになり、プロセッサは、正確にPPF命令時にあったその状態を再構成しようとすることになる。
PPF命令の別の例は、トランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)でミスを出して、ページフォールト(page fault)を引き起こすメモリ動作(すなわち、ロードまたはストア)であり、次いで正しいトランスレーションをTLBにロードすることができるオペレーティングシステムコードに切り換えるための制御を必要とする。
本明細書に記載する1つまたは複数の実施では、パイプラインに2つのPPF命令があり、これらの間には非PPF命令がある。この場合、プロセッサ状態がいつも2つのPPF命令間にあるようにしなければならない理由はない。プロセッサ状態は、第1のPPF命令まで回復する必要がある場合、第1のPPF命令となり、または第2のPPF命令まで回復する必要がある場合、第2のPPF命令となる。プロセッサ状態は、アーキテクチャ上のレジスタが初めて物理レジスタにリネームされた場合など、2つのPPF間にあるいかなるポイントにも回復する必要がない。
さらに、割り当てられた第1の物理レジスタに書き込まれた結果がすでに消費された場合、アーキテクチャ上のレジスタの次の生成は、通常これは、前の物理レジスタとは異なる新しいレジスタを割り当てられるが、新しい物理レジスタを割り当てられる必要はない。本明細書に記載する実施によれば、アーキテクチャ上のレジスタの次の生成は、前の物理レジスタを再利用することができる。すなわち、プロセッサは、アーキテクチャ上のレジスタの前の生成とアーキテクチャ上のレジスタの次の生成との間にPPF命令がないことを知ると、発生する次のプロデューサ/コンシューマペアに前の物理レジスタを割り当てることができる。
2つのPPF命令間に発生する命令によって生成されるアーキテクチャ上のレジスタの他の生成が、同様に同じ物理レジスタを割り当てられ得ることに留意されたい。したがって、複数の命令からのアーキテクチャ上のレジスタの複数の生成がある場合、複数のアーキテクチャ上のレジスタに対して複数の物理レジスタを割り当てる代わりに、各アーキテクチャ上のレジスタが、同じ物理レジスタを割り当てられ得る。これが、本明細書に記載する実施がPRFのサイズを縮小できるようにする機構である。本明細書に記載する実施はまた、プロセッサ電力を節約する、プロセッサクロック周波数を上げる、その他を行う。
この概念を説明するために、1つのシナリオでは、第1のプロデューサ命令が、RMTで調べることによって、第1の物理レジスタがアーキテクチャ上のレジスタの第1の生成に割り当てられたことをわかっていると仮定する。第1のプロデューサ命令は、したがって第1の割り当てられた物理レジスタにその結果を書き込むことになることをわかっている。同様に、第1のコンシューマ命令が、RMTで調べることによって、第1の割り当てられた物理レジスタから第1のプロデューサ命令の結果を読み出すことになることをわかっている。第1のコンシューマが読み出すことになる結果が、第1の割り当てられた物理レジスタにすでに書き込まれている場合、第1のコンシューマは、第1のプロデューサによって第1の割り当てられた物理レジスタに書き込まれた結果を単に読み出す。第1の割り当てられた物理レジスタに書き込まれた第1のプロデューサの結果の第1のコンシューマは、そのタスクを遂行し、したがって第1のプロデューサによって第1の割り当てられた物理レジスタに書き込まれた結果は、もはや必要とされない。
第1のアーキテクチャ上のレジスタの第2の生成が発生するとき、第1のアーキテクチャ上のレジスタの第2の生成は、第1のプロデューサの結果に対して他のコンシューマがないことを保証される。さらに、第1の割り当てられた物理レジスタ内の結果は、すでに消費されたので、第1のアーキテクチャ上のレジスタの以後のすべての生成は、それらの結果を読み出すために、第2の割り当てられた物理レジスタを調べることになる。この場合もやはり、第1のプロデューサによって第1の割り当てられた物理レジスタに書き込まれた結果は、もはや必要とされない。
代替的シナリオでは、結果の第1のプロデューサが、RMTで調べることによって、第1の物理レジスタが第1のアーキテクチャ上のレジスタに割り当てられたことをわかっている。結果の第1のプロデューサは、したがって第1の割り当てられた物理レジスタに結果を書き込むことになることをわかっている。同様に、結果の第1のコンシューマが、RMTで調べることによって、第1の割り当てられた物理レジスタから結果を読み出すことになることをわかっている。しかしながら、結果の第1のプロデューサがまだ完了していないので、第1のコンシューマが読み出すことになる結果が、第1の割り当てられた物理レジスタにまだ書き込まれていない場合、結果の第1のコンシューマは、第1の割り当てられた物理レジスタで第1のプロデューサからの結果が利用可能になるのを待ち得る。しかしながらこのようなことにおいて待つことは、特にプロセッサの処理速度を低下させる。
本明細書に記載する1つまたは複数の実施では、結果の第1のコンシューマに、結果の第1のプロデューサがその結果を第1の割り当てられた物理レジスタに書き込むのを待たせる代わりに、結果の第1のコンシューマは、プロセッサ内の転送ネットワークから直接結果を取得する。すなわち、結果の第1のコンシューマは、第1の割り当てられた物理レジスタから結果を読み出す必要がない。代わりに、結果の第1のコンシューマは、結果が第1の割り当てられた物理レジスタに書き込まれる前に、プロセッサの転送ネットワークの転送パスの1つから結果を取得する。
したがって、第1のアーキテクチャ上のレジスタの第2の生成が発生するときまでに、第1のコンシューマが、第1の割り当てられた物理レジスタに格納されている結果をすでに読み出している(第1のシナリオ)か、第1のコンシューマが転送ネットワークから結果をすでに取得している(第2のシナリオ)ので、第1のアーキテクチャ上のレジスタの第2の生成が発生するとき、第1の割り当てられた物理レジスタが第1のアーキテクチャ上のレジスタの第1の生成に対して格納した結果は、第1のコンシューマによって必要とされない。ゆえに、第1の割り当てられた物理レジスタは、第1のアーキテクチャ上のレジスタの第2の生成によって再利用されるように、現在空いている。このように、第1のアーキテクチャ上のレジスタの第2の生成は、第1のアーキテクチャ上のレジスタの第1の生成が割り当てられたものと同じ物理レジスタ名を割り当てられる。すなわち、第1の割り当てられた物理レジスタの名前は、第1のアーキテクチャ上のレジスタの第2の生成に再利用される。
例示的なリネームマップテーブル(RMT)および物理レジスタファイルPRF
図1は、本明細書に記載する1つまたは複数の実施による例示的プロセッサ100のブロック図を示す。図示したプロセッサ100は、命令パイプラインでの命令の実行中に選択的レジスタリネーミングを使用するアウトオブオーダープロセッサである。図示したプロセッサ100などの従来のプロセッサは、データキャッシュからのデータおよび命令キャッシュからの命令を受け取るパイプラインを含むことが知られている。コントローラが、一般的に、パイプライン内の様々な段階および実行ユニット(フェッチ段階、デコード段階など)を制御して、命令をデコードし、実行する。これらが完了すると実行された命令からの結果が、レジスタファイルに、データキャッシュに、および他のバッファもしくはメモリユニットに、格納され得る。
図示したプロセッサ100は、レジスタ名をアーキテクチャ上のレジスタ名から物理レジスタ名に変更する、選択的レジスタリネーミング機構を含む。これは、リードアフターライト(RAW:read-after-write)データハザードおよびライトアフターライト(WAW:write-after-write)データハザードなど、プロセッサ性能を低下させるデータハザードを除去するために行われ得る。
図示したレジスタリネーミング機構は、リネームマップテーブル(RMT)102を含む。1つまたは複数の実施では、RMT102は、プロセッサにおいてアーキテクチャ上のレジスタを物理レジスタにマップする任意の好適な機構である。RMT102は、トークン、トークンカウント、シーケンス識別子などの識別子を動的に更新することを含み、アーキテクチャ上のレジスタの新しいマッピングを物理レジスタに反映するように動的に更新されることが可能である。
たとえば、命令が結果を物理レジスタに書き込むことであるとき、命令結果に対する割り振られたまたは割り当てられた物理レジスタ位置は、RMT102に記録される。命令が、物理レジスタから結果を読み出することであるとき、命令結果が記録されることになる、割り振られたまたは割り当てられた物理レジスタ位置を判断するために、RMT102は照会される。アーキテクチャ上のレジスタは、プロセッサ100内の実際の物理的位置ではないことに留意されたい。代わりにアーキテクチャ上のレジスタは、特定のプロセッサのためのISAによりプロセッサの命令によって生成されたレジスタの名前である。
図示したレジスタリネーミング機構は、物理レジスタファイル(PRF)104を含む。1つまたは複数の実施では、PRFは、プロセッサ100ハードウェアに実装される物理レジスタを含んだファイルである。物理レジスタは、すでにコミットした命令の結果、ならびにまだコミットしていないその後の命令の結果を保持する。一般的に、アーキテクチャ上のレジスタよりもさらに多くの物理レジスタがある。
図示したRMT102は、アーキテクチャ上のレジスタ列106と、物理レジスタ名(PRN)とを含んでいる。アーキテクチャ上のレジスタ列106は、物理的エンティティではない。代わりにアーキテクチャ上のレジスタ列は、単に、PRN列108内の対応するエンティティにアクセスするために使用されるインデックスを示している。PRN列108は、アーキテクチャ上のレジスタの名前によってインデックスされる(indexed)。
PRN列108は、物理レジスタP1〜P5を含んでいるが、一般的にはアーキテクチャ上のレジスタよりもさらに多くの物理レジスタがある。アーキテクチャ上のレジスタR1〜R5は、この例では物理レジスタP1〜P5にリネームされる。1つまたは複数の実施では、トークンおよび/または命令シーケンスID(たとえば、リオーダバッファID、マトリクスID、その他)などの識別子を使用して、アーキテクチャ上のレジスタが、すでに使用中の物理レジスタを再利用することができる。
たとえば、図示したRMT102は、トークン列110を含んでいる。図示した実施形態では、トークン列110のトークンは、3ビット長であるが、実施によりトークンは、1ビット、2ビット、10ビットなどの任意のビット数であり得る。
図示したPRF104は、物理レジスタ列112を含んでいる。物理レジスタ列112は、物理レジスタP1〜P5を含んでいるが、一般的にはさらに多くの物理レジスタがある。
図示したPRF104は、物理レジスタの名前によってインデックスされる物理レジスタステータス列114を含んでいる。物理レジスタステータス列114は、特定の物理レジスタが空いて(free)いるか、使用中(in use)であるかを示す。たとえば、図示した例では、物理レジスタステータス列114は、物理レジスタP2は<in use>であり、他のすべてのレジスタは<free>であることを示している。<in use>表示は、物理レジスタがアーキテクチャ上のレジスタに割り当てられていること、および生成命令は、その結果をその割り当てられた物理レジスタに書き込むことであることを示す。実施により、<in use>である物理レジスタは、アーキテクチャ上のレジスタの別の生成によって再利用され得る。<free>表示は、物理レジスタがアーキテクチャ上のレジスタに割り当てられていないこと、および生成命令はその物理レジスタを割り当てられ得ることを示す。実施により、<in use>である物理レジスタは、アーキテクチャ上のレジスタの別の生成によって再利用され得る。
図示したPRF104は、トークン列116を含んでいる。トークン列116のトークンは、3ビット長であるが、実施形態によりトークンは、1ビット、2ビット、10ビットなどの任意のビット数であり得る。またトークン列116の物理レジスタP2のトークンは、その最下位ビットを「1」に設定している。
図1に示す例では、矢印120が、アーキテクチャ上のレジスタR5が物理レジスタP2にリネーム(またはマップ)されたことを示し、矢印122が、物理レジスタP2のトークンはその最下位ビットを「1」に設定していることを示す。
図示したプロセッサ100は、データ転送機構124を含んでいる。図示したデータ転送機構124は、データ依存命令が連続サイクルで実行されることを許可する。たとえば、データ転送機構124は、データがPRFを介さずにプロセッサ100内の機能ユニット間で直接送信されることを可能にする。
例示的な選択的レジスタリネーミング装置
上記の説明から、実施により、第1のアーキテクチャ上のレジスタの第2の生成は、第1のアーキテクチャ上のレジスタの第1の生成が割り当てられたものと同じ物理レジスタを割り当てられることを思い起こす。しかしながら一般的に、アーキテクチャ上のレジスタの第1の生成の第1のプロデューサは、第1の割り当てられた物理レジスタが、アーキテクチャ上のレジスタの第2の生成にも割り当てられたことを知らない。本明細書に記載する1つまたは複数の実施によれば、図示したプロセッサ100は、プロデューサ命令がどのような状況でその結果を特定の物理レジスタに書き込むことを許可されるか、およびコンシューマ命令がどのような状況で特定の物理レジスタから結果を読み出すことを許可されるかを判断する。
図2は、プロセッサが、プロデューサ命令がどのような状況で特定の物理レジスタに書き込むことを許可されるか、およびコンシューマ命令がどのような状況で特定の物理レジスタから結果を読み出すことを許可されるかを判断する、本明細書に記載する1つまたは複数の実施によるプロセッサ100のブロック図を示している。
図示したプロセッサ100は、RMT102のいくつかのバージョン、すなわち102A、102B、102C、および102Dを含んでいる。図示したプロセッサ100はまた、PRF104のいくつかのバージョン、すなわち104A、104B、104C、および104Dを含んでいる。PRFは、プロデューサ命令がその実行を完了すると、結果が書き込まれる物理レジスタファイルである。
RMTの各バージョン102A、102B、102C、および102Dは、それぞれのアーキテクチャ上のレジスタ列106A、106B、106C、および106Dを含んでいる。
RMTの各バージョン102A、102B、102C、および102Dは、それぞれのPRN列108A、108B、108C、および108Dを含んでいる。PRN列108A、108B、108C、および108Dは、アーキテクチャ上のレジスタの名前(R4、R5、およびR6)によってインデックスされる。アーキテクチャ上のレジスタ列は、物理的エンティティではなく、むしろ、PRN列108A、108B、108C、および108Dの対応するエントリにアクセスするために使用されるインデックスを示している。図示した実施では、3つのアーキテクチャ上のレジスタが示され、3つの物理レジスタが示される。しかしながら一般的に、アーキテクチャ上のレジスタよりもさらに多くの物理レジスタがある。
RMTの各バージョン102A、102B、102C、および102Dは、それぞれのトークン列110A、110B、110C、および110Dを付加される。トークン列110A、110B、110C、および110Dは、プロデューサが物理レジスタに結果を書き込むことを許可されるかどうかを判断するために使用されるビットを含む。
図示した実施では、トークン列110A、110B、110C、および110Dのトークンは、1ビット長であるが、本明細書に記載する他の実施によりトークンは、3ビット、2ビット、10ビットなどの任意のビット数であり得る。たとえば、トークンあたりのビット数は、分岐命令など、2つのPPF命令、2つの潜在的リカバリポイントなどの間に発生することが予想される、アーキテクチャ上のレジスタの生産数によって決まることがある。いくつかの例では、2つのPPF間の所与のアーキテクチャ上のレジスタの、平均で、4以下のリネームが予想される場合、トークンあたり2ビットで十分である。本明細書に記載する1つまたは複数の実施では、すべてのトークンカウントが「0」から始まる。
RMTの各バージョン102A、102B、102C、および102Dは、それぞれの物理レジスタ列112A、112B、112C、および112Dを含んでいる。図示した物理レジスタ列112A、112B、112C、および112Dは、3つの物理レジスタP1〜P3を含んでいる。しかしながら、一般的にはさらに多くの物理レジスタがある。
RMTの各バージョン102A、102B、102C、および102Dは、それぞれの物理レジスタステータス列114A、114B、114C、および114Dを含んでいる。物理レジスタステータス列114A、114B、114C、および114Dは、物理レジスタ(P1、P2、およびP3)の名前によってインデックスされる。物理レジスタステータス列114A、114B、114C、および114Dは、特定の物理レジスタが空いているか、使用中であるかを示す。
RMTの各バージョン102A、102B、102C、および102Dは、それぞれのトークン列116A、116B、116C、および116Dを含んでいる。トークン列116A、116B、116C、および116Dは、プロデューサが物理レジスタに結果を書き込むことを許可されるかどうかを判断するために使用されるビットを含む。
図2に示すプロセッサ100は、プログラム順に命令210のストリームをフェッチし、任意の順序で命令を実行する。図示した実施では、プロセッサ100は、命令210A、210B、210C、210D、210E、および210Fを処理している。図示した例では、命令のストリーム210において物理レジスタP2に向かっている矢印で示すように、命令210Bおよび210Dは、プロデューサ命令である。命令210Cおよび210Eは、物理レジスタP2から外に向かっている矢印で示すように、コンシューマ命令である。
図2に示す例では、命令210Bおよび命令210Cは、物理レジスタP2によって結び付けられるプロデューサ/コンシューマ命令ペアを構成する。プロセッサ100は、ゆえに、プロデューサ命令210Bがその結果を物理レジスタP2に書き込むことを完了したことを確認するまで待った後に、コンシューマ命令210Cが物理レジスタP2内の結果を消費する。同様に、命令210Dおよび210Eは、その結果が物理レジスタP2によって結び付けられる別のプロデューサ/コンシューマ命令ペアを構成する。プロデューサ/コンシューマペア210B/210Cと同様に、プロセッサ100は、プロデューサ命令210Dがその結果を物理レジスタP2に書き込むことを完了したことを確認するために待った後に、コンシューマ命令210Eが物理レジスタP2内の結果を消費する。
また図2に示す例では、命令210Aおよび210Fは、プロセッサ100が推測しているPPF命令、潜在的リカバリポイントなどである。命令210Aおよび命令210FはPPF命令であるが、命令210Aと命令210Fとの間にPPF命令はない。したがって、プロセッサ100状態が、PPF命令210AとPPF命令210Fとの間にあるようにする理由はない。最悪のシナリオでは、プロセッサ100状態は、状態がPPF命令210Aに回復する必要がある場合、PPF命令210Aとなり、または状態がPPF命令210Fに回復する必要がある場合、PPF命令210Fとなることになるが、プロセッサ100は、命令210B、210C、210D、または210Eに回復することはない。
図示した実施では、ポイント202において、アーキテクチャ上のレジスタR5(列106A)は、物理レジスタP1(列108A)を割り当てられており、その関連するトークンカウントは「0」(列110A)である。また、ポイント202において、物理レジスタP2(列112A)は、<free>(列114A)であると示され、その関連するトークンカウントは「0」(列116A)である。
RMT102トークンカウントは、PPF命令に遭遇すると、「0」にリセットされる(ポイント202)。ゆえに、PPF命令である命令210Aが、リネームされているとき、RMT102A中のすべてのトークンカウントは「0」にリセットされる。PRF104A内のトークンカウントは、変更されない。図2では、PRF104A内のトークンカウントはすべて「0」であるように示されているが、これは説明のためである。<free>であると示されている物理レジスタP2だけが、そのトークンを「0」に設定する必要がある。
アーキテクチャ上のレジスタR5を生成する第1のプロデューサ命令にポイント204で遭遇するとき、RMT102A中のアーキテクチャ上のレジスタR5と関連するトークンがチェックされる。RMT102A内のトークンは「0」であるので、アーキテクチャ上のレジスタR5を生成する第1の命令は、図2に示す例では物理レジスタP2である、空き物理レジスタを割り当てられる。物理レジスタP2はまた、アーキテクチャ上のレジスタR5の新しい名前としてRMT102Bに入力される。RMT102A中のアーキテクチャ上のレジスタR5と関連するトークンは、「1」にインクリメントされ、アーキテクチャ上のレジスタR5を生成する第1の命令は、トークン=1をプロセッサ100パイプラインに伝える。PRF104A内の物理レジスタP2と関連するトークンも同様にインクリメントされ、物理レジスタP2のPRF104B内のトークンカウント=1にする。これを考慮して、3つのシナリオを考える。
第1のシナリオでは、第1のコンシューマ命令が到着する前に、アーキテクチャ上のレジスタR5を生成する第1のプロデューサ命令が完了する。このシナリオでは、第1のプロデューサのトークンが「1」であって、これが、やはり「1」である物理レジスタP2と関連するトークンに対応および/または一致するので、第1のプロデューサ命令は、物理レジスタP2に書き込むことを許可される。
第2のシナリオでは、第1のプロデューサ命令が完了する前に、第1のコンシューマ命令が到着する。このシナリオでは、コンシューマ命令は、プロセッサ100パイプラインで結果を直接追跡し、データバイパスを介して結果を取得することができる。プロデューサ命令は、やはり生産物を物理レジスタP2に書き込むことができることがあるが、物理レジスタP2に書き込まれた結果は使用されない。
第3のシナリオでは、第2のプロデューサ命令が、ポイント206においてアーキテクチャ上のレジスタR5の第2の生成を生成する。第1のプロデューサ命令が完了する前に、第2のプロデューサ命令の結果が到着する。このシナリオでは、アーキテクチャ上のレジスタR5と関連するトークンカウントが「0」よりも大きい場合、新しい物理レジスタは割り当てられず、アーキテクチャ上のレジスタR5のRMT102中のマップエントリは、物理レジスタP2のままである。しかしながら、RMT102中のアーキテクチャ上のレジスタR5と関連するトークンカウントは、(たとえば、「2」に)インクリメントされる。物理レジスタP2と関連するトークンカウントもまた、(たとえば、「2」に)インクリメントされる。第2のプロデューサ命令は、「2」というトークンカウントをプロセッサ100パイプラインに沿って伝える。第1のプロデューサ命令が以後の任意のポイント(第2のプロデューサ命令の前あるいは後)で完了する場合、第1のプロデューサ命令は、物理レジスタP2に書き込むことを許可されない。そのトークンが「1」であり、これは「2」である物理レジスタP2と関連するトークンにもはや対応しないおよび/または一致しないからである。
ポイント208でPPF命令210Fに遭遇するとき、RMT102Cトークンカウントは、RMT102Dに示されるように、「0」にリセットされるが、PRF104Cトークンカウントは、PRF104Dに示されるように、変更されないままである。
第1のプロデューサ命令がコミットするとき、アーキテクチャ上のレジスタR5の前のマッピングがチェックされる。前のマッピングは物理レジスタP1であり、物理レジスタP2である現在のマッピングとは異なるので、アーキテクチャ上のレジスタR5の前のマッピングは、再利用のために解放される。すなわち、物理レジスタP2は、使用されるように解放される。さらに、物理レジスタP2の前のマッピングと関連するトークンカウントは、列116Aに示されるように、「0」にリセットされる。
第2のプロデューサ命令がコミットするとき、アーキテクチャ上のレジスタR5の前のマッピングがチェックされる。アーキテクチャ上のレジスタR5の前のマッピング(すなわち、物理レジスタP2)は、現在のマッピング(すなわち、物理レジスタP2)と同じであるので、アーキテクチャ上のレジスタR5の前のマッピング、すなわち物理レジスタP2は解放されない。
命令リネーム段階における例示的なトークンベースの選択的レジスタリネーミング方法
図3は、ある実施による、命令リネーム時間のプロセッサにおける選択的リネーミングのための方法300の例示的な流れ図を示す。
ブロック302において方法300は、命令を取得する。取得された命令は、アーキテクチャ上のレジスタを生成する。1つまたは複数の実施では、命令はプロデューサ命令である。1つの例では、プロセッサ100内のフェッチユニット(図示せず)が、命令パイプラインから命令をフェッチし、デコードする。図2に戻ると、プロセッサ100は、パイプラインから命令210Aを取得する。
ブロック304において方法300は、取得された命令がPPF命令であるかどうかを判断する。ブロック304において、取得された命令はPPF命令であると判断される場合、方法300の制御はブロック306に進む。一方、ブロック304において、取得された命令はPPF命令ではないと判断される場合、方法300の制御はブロック308に進む。
ブロック306において方法300は、RMT102A中のすべてのトークンカウントを「0」にリセットする。RMT102A中のトークンカウントのすべてを「0」にリセットすることが、方法300に、この生成およびすべての新しい生産物に対して新しいリネームを選択させる。図2に示す例に沿って、命令210AはPPF命令であり、ポイント202において列110A内のトークンカウントは「0」にリセットされる。
ブロック308において方法300は、取得された命令のアーキテクチャ上のレジスタに対応するRMT102A中のエントリを識別する。図2に示す例に沿って、方法300は、命令210Aに対応するように、RMT102Aの列106Aのアーキテクチャ上のレジスタR5エントリを識別する。
ブロック310において方法300は、命令のアーキテクチャ上のレジスタに対してRMT102Aで、物理レジスタと、マッピング時のトークンカウントとを識別する。図2に示す例に沿って、方法300は、RMT102A中のアーキテクチャ上のレジスタR5に対応する、RMT102Aの列108Aの物理レジスタP1と、RMT102Aの列110Aのトークンカウント「0」とを識別する。
ブロック312において方法300は、命令のアーキテクチャ上のレジスタに対してトークンカウント=「0」であるかどうかを判断する。命令のアーキテクチャ上のレジスタに対してトークンカウント=「0」である場合、方法300の制御はブロック314に進む。
図2に示す例に沿って、方法300は、RMT102Aの列110Aのトークン=「0」であると判断し、方法300の制御はブロック314に進む。
ブロック314において方法300は、PRF104列112Aからの新しい、現在未使用の物理レジスタを命令に割り当て、新しい、現在未使用の物理レジスタをリネームし、物理レジスタをRMT102A中の位置のリネームされた物理レジスタに変更する。1つまたは複数の実施では、方法300は、一般的にフリーリストを調べることによって、新しい名前、すなわち空き物理レジスタを選択する。たとえば、方法300は、リネームされた物理レジスタで、アーキテクチャ上のレジスタに対するRMT102Aエントリを更新する。
図2に示す例に沿って、方法300は、物理レジスタP2を選択し、未使用(<free>)(列114A)である物理レジスタP2を命令210Aに割り当て、新しい、未使用の物理レジスタP2をリネームし、物理レジスタP1(RMT102A内の列108A)をP2(RMT102B内の列108B)に変更する。
Iブロック316において、方法300は、アーキテクチャ上のレジスタに対するRMT102A位置のトークンカウントを「1」に設定し、リネームされた物理レジスタに対するPRF104A位置のトークンカウントを「1」に設定する。たとえば、方法300は、アーキテクチャ上のレジスタに対するRMT102A内のトークンカウントを「1」だけインクリメントする。
図2に示す例に沿って、方法300は、アーキテクチャ上のレジスタR5および物理レジスタP2に対するRMT102Aの列110Aのトークンカウントを「1」に設定し、列116Aの物理レジスタP2に対するトークンカウントを「1」に設定する。この結果、ポイント204において、アーキテクチャ上のレジスタR5および物理レジスタP2に対するRMT102Bの列110B内のトークンカウントが「1」となり、PRF104Bの列116B内の物理レジスタP2に対するトークンカウントが「1」となる。
ブロック318において方法300は、取得された命令が、物理レジスタ、新しく割り当てられた物理レジスタ、およびそのトークンカウント=「1」であることを記憶していることを確実にする。
図2に示す例に沿って、方法300は、命令210Aが、物理レジスタP2、および列110B内のトークンカウントが「1」という結果を有することを記憶していることを確実にする。1つまたは複数の実施では、アーキテクチャ上のレジスタR5の以後のプロデューサ(たとえば、命令210C)は、R5に対するRMT102B内のトークンが「1」であることがわかり、新しい物理レジスタを取得しようと試みることはない。代わりに、以後のプロデューサは、その送り先(destination)として同じ物理レジスタ(すなわち、P2)を使用する。
しかしながら、以後のプロデューサは、RMT102BおよびPRF104Bの列116Bの対応する物理レジスタP2で、列110B内のトークンカウントを「1」だけインクリメントする。図2に示す例に沿って、方法300が命令210Cを取得するとき、列110Bのトークンは「1」だけインクリメントされて、「2」となる(列110Cおよび列116C)。
一方、方法300がブロック312において、命令のアーキテクチャ上のレジスタに対してトークンカウント≠「0」であると判断する場合、方法300の制御はブロック320に進む。
図2に示す例に沿って、ポイント204では、物理レジスタP2(列112B)は、<in use>(列114B)であると示され、その関連するトークンカウントは「1」(列116B)である。したがって、ポイント204では、取得される命令が命令210Bであるとき、トークンカウントは「0」ではない。トークンカウントは「1」である。
ブロック320において、方法300は、アーキテクチャ上のレジスタに対して命令にPRFから新しい物理レジスタを割り当てない。リネームされた物理レジスタは、リネームされていなかったときと同じままである。
図2に示す例に沿って、アーキテクチャ上のレジスタR5に対するRMT102Bの列110Bのトークンカウントは「1」であり、列116Bの物理レジスタP2に対するトークンカウントは「1」である。したがって、方法300は、命令に対してアーキテクチャ上のレジスタR5に新しい物理レジスタを割り当てない。列108BのレジスタP2は、P2のままである。
ブロック322において方法300は、アーキテクチャ上のレジスタに対してRMT位置のトークンカウントを「T+1」にインクリメントする。方法300はまた、新しい、使用中の物理レジスタに対してPRF位置のトークンカウントを「T+1」にインクリメントする。
図2に示す例に沿って、アーキテクチャ上のレジスタR5に対するRMT102B位置のトークンカウントは、「T+1」にインクリメントされる。P2に対するPRF104C位置のトークンカウントもまた、インクリメントされて「T+1」となる。この結果、ポイント206において、アーキテクチャ上のレジスタR5および物理レジスタP2に対するRMT102Cの列110Cのトークンカウントは「2」となり、PRF104Cの列116Cの物理レジスタP2に対するトークンカウントは「2」となる。
ブロック324において方法300は、命令が前の物理レジスタはまた新しい物理レジスタであること、および命令に対するトークンは「T+1」であることを記憶していることを確実にする。図2に示す例に沿って、命令210Dは、物理レジスタP2が依然として名前P2を有すること、および列110C内のトークンが「2」という結果を有することを記憶している。
このポイントで、取得された命令は、図2に示すリネーミングアーキテクチャによる再利用のために解放されて、パイプラインに入り、実行される。
その一方で、アーキテクチャ上のレジスタR5の第2の生成があるとき、説明のために、アーキテクチャ上のレジスタR5は現在リネームされた物理レジスタP2であり、物理レジスタP2に対するトークンはゼロではない(たとえば、P2のトークン=「1」)と仮定する。物理レジスタP2はすでにR5の第1の生成に使用されているが、物理レジスタP2はR5の第2の生成に再利用される。R5の第2の生成に新しい物理レジスタを割り当てる代わりに、リネーミングアーキテクチャは、物理レジスタP2を再利用し、そのトークンカウントを「1」から「2」にインクリメントする。リネーミングアーキテクチャはまた、PRF104のトークンカウントを「1」から「2」にインクリメントする。
物理レジスタP2に対するトークンカウントを「2」とし、PRFに対するトークンカウントを「2」として、第1のプロデューサはこのポイントで終わるとさらに仮定する。第1のプロデューサがその生産物を物理レジスタP2に書き込もうと試みるとき、第1のプロデューサは、物理レジスタP2内のトークンカウントが「2」であり、第1のプロデューサのトークンカウントが「1」であることがわかる。これらの環境下では、トークンカウントが一致しないので、第1のプロデューサは、その結果を物理レジスタP2に書き込むことを許可されない。
命令完了段階における例示的なトークンベースの選択的レジスタリネーミング方法
図4は、ある実施による、命令完了時間におけるプロセッサ内の選択的リネーミングのための方法400の例示的な流れ図を示している。本明細書で使用する命令完了時間とは、命令がフェッチされ、実行されたが、その結果は、割り当てられた物理レジスタにまだ書き込まれていないときである。
ブロック402において方法400は、命令を取得する。図2に示す例に沿って、方法400は、アーキテクチャ上のレジスタR5の第2の生成を生み出す命令を取得する。アーキテクチャ上のレジスタR5の第2の生成を生み出す命令は、そのトークンカウントが「1」であることを記憶している。
ブロック404において方法400は、取得された命令によって記憶されているトークンカウントが、割り当てられた物理レジスタと現在関連しているPRF中のトークンに対応および/または一致するかどうかを判断する。ブロック404において方法400が、取得された命令によって記憶されているトークンカウントは、割り当てられた物理レジスタと現在関連しているPRF中のトークンに対応および/または一致すると判断する場合、方法400の制御はブロック406に進む。図2に示す例に沿って、方法400は、「1」という命令のトークンカウントが、PRF列116Bにある、すなわち割り当てられた物理レジスタP2と現在関連している、「1」というトークンカウントに対応および/または一致するかどうかを判断する。
ブロック406において、「1」という命令のトークンカウントが、割り当てられた物理レジスタP2と現在関連しているPRF列116Bにある、「1」というトークンカウントに対応および/または一致するので、方法400は、アーキテクチャ上のレジスタR5の第2の生成を生み出して、その結果をPRF104内の割り当てられた物理レジスタP2に書き込むという命令を認可するおよび/または許可する。
一方、ブロック404において、方法400が、取得された命令によって記憶されているトークンカウントは、割り当てられた物理レジスタと現在関連しているPRF104内のトークンに対応および/または一致しないと判断する場合、方法400の制御はブロック408に進む。
図2に示す例に沿って、方法400は、「1」という命令のトークンカウントが、物理レジスタP2と現在関連しているPRF列116Cにある、「2」というトークンカウントに対応するおよび/または一致するかどうかを判断する。したがって、ブロック408において、アーキテクチャ上のレジスタR5の第2の生成を生み出す命令は、トークンカウントが一致しないので、その結果を物理レジスタP2に書き込むことを許可されない。
命令コミット/リタイア段階における例示的なトークンベースの選択的レジスタリネーミング方法
図5は、ある実施による、命令コミット/リタイア時間におけるプロセッサ内の選択的リネーミングのための方法500の例示的な流れ図を示している。本明細書で使用される、命令コミット/リタイア時間とは、命令がフェッチされ、実行され、その結果が割り当てられた物理レジスタに書き込まれ、アーキテクチャ上のレジスタに以前に割り当てられていた物理レジスタが解放されるときである。
ブロック502において、方法500は命令を取得する。1つまたは複数の実施では、取得された命令は、アーキテクチャ上のレジスタR5の別の生成を生み出し、これが物理レジスタに割り当てられる。
ブロック504において、方法500は、割り当てられた物理レジスタの名前が、新しく割り当てられた物理レジスタとは異なるかどうかを判断する。たとえば、割り当てられた物理レジスタの名前がP2であり、新しく割り当てられた物理レジスタの名前が、P2とは異なるP3である場合、ブロック506において方法500は、物理レジスタP2に割り当てられているPRF104内のエントリを解放し、物理レジスタP2に対するPRF104内のトークンカウントを「0」にリセットする。1つまたは複数の実施では、PRF104内のエントリは、知られている技法を使用して解放される。物理レジスタP2が解放されるとき、物理レジスタに対するトークンカウントは、「0」にリセットされる(列110D)。
一方、方法500が、割り当てられた物理レジスタの名前は、新しく割り当てられた物理レジスタと異ならないと判断する場合、ブロック508において物理レジスタは解放されない。
例示的な命令シーケンスIDベースの選択的レジスタリネーミング方法
いくつかの代替的実施では、アーキテクチャ上のレジスタの特定の生成を特定の物理レジスタに一意に結び付けるためにトークンを使用する代わりに、命令シーケンスID(たとえば、リオーダバッファID、マトリクスID、その他)などの任意の他の一意の識別子を使用することも可能である。この実施では、RMT102は、関連するアーキテクチャ上のレジスタが最後のPPF命令以降にリネームされたかどうかを示す、エントリあたり単一のビットを保持する。PPF命令が、これらのビットを「0」にリセットし、「0」は、新しいリネームが生産に割り当てられることになることを示す。アーキテクチャ上のレジスタに新しいリネームが割り当てられると、対応するビットは「1」に設定される。ビットは、次のPPF命令まで「1」のままであり、この「1」は、このアーキテクチャ上のレジスタに新しいリネームが割り当てられる必要がないことを示す。
この代替的実施では、PRF104は、トークンの代わりに、物理レジスタあたり1つの命令シーケンス識別子(ID)を保有する。すべてのプロデューサ命令が、そのシーケンスIDを、割り当てられた物理レジスタに(それが新しく割り当てられた物理レジスタであってもなくても)送信する。プロデューサ命令は、その命令シーケンスIDを(従来通り)そのペイロードに保持する。完了すると、プロデューサ命令は、その命令シーケンスIDが物理レジスタのそれに対応するおよび/または一致する場合、その割り当てられた物理レジスタに結果を書き込む。命令コミット時に、前のリネームが、現在のリネームと異なる場合、再利用のために解放される。物理レジスタが再利用のために解放されるたびに、物理レジスタと関連する命令シーケンスIDは、なんらかの識別可能に無効なまたは初期の状態(「0」などの)にリセットされる。
データ転送ネットワークを使用した例示的な選択的レジスタリネーミング方法
現代のプロセッサハードウェアでは、一般的に、プロセッサパイプラインのフロントエンドにパイプライン段階があり、ハードウェアは、同時に(すなわち、同じクロックサイクルで)プログラム順の連続した命令の群への可視性(visibility)を有する。これが行われるとき、トークンおよび/または命令シーケンスIDなどのRMTトークンまたはPRF識別子を使用することなく、本明細書で説明するように選択的レジスタリネーミングを利用することができる。
たとえば、プログラム順の連続した命令の群中の2つの命令が、同じアーキテクチャ上のレジスタを生成し、これらの2つの命令間にPPF命令がない場合、2つのプログラム順の連続した命令のうちの古い方は、その生産結果を保有するために物理レジスタ名を割り当てられる必要がない。代わりに、2つのプログラム順の連続した命令の古い方のすべてのコンシューマは、データ転送ネットワークを介して生産結果を取得する。
同じクロックサイクルに観察される第2の生産結果があるので、古い方のプロデューサ結果のすべてのコンシューマは、同じクロックサイクルで識別され得ることに留意されたい。すなわち、第1の生産結果のいかなるコンシューマも、第1の生産結果と第2の生産結果との間になければならない。ゆえに、古い方のプロデューサならびにその結果のコンシューマは、物理レジスタ名を使い切る必要がない。この実施は、パイプライン段階で同時に見ることができる命令すべてにわたって使用するための、十分な選択的リネーミング(トークンおよびトークン管理など)のために使用されるさらなるハードウェアとの折り合いをつける。
図6は、代替的な実施による、データ転送ネットワーク(バイパスネットワーク)を使用したプロセッサにおける選択的リネーミングのための方法の例示的流れ図を示している。
ブロック602において、方法600は、プロセッサパイプラインから第1の命令を取得する。1つまたは複数の実施では、命令はプロデューサ命令である。図2に示す選択的リネーミング構造に沿って、プロセッサ100は、命令パイプライン210から命令210Aを取得する。
ブロック604において、方法600は、第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成する。第1のアーキテクチャ上のレジスタは、特定のプロセッサのためのISAにより生成され得る。図2に戻ると、命令210Aは、アーキテクチャ上のレジスタR5を生成する。
ブロック606において、方法600は、プロセッサパイプラインから第2のプロデューサ命令を取得する。図2に戻ると、プロセッサ100は、パイプラインから命令210Bを取得する。
ブロック608において、方法600は、特定のプロセッサのためのISAによりアーキテクチャ上のレジスタの第2の生成を生成する。図2に戻ると、プロセッサ100は、アーキテクチャ上のレジスタR5を生成する。
ブロック610において、方法600は、アーキテクチャ上のレジスタの第2の生成に物理レジスタを割り当てる。図2に戻ると、プロセッサ100は、命令210Bに物理レジスタP2を割り当てる。
ブロック612において、方法600は、第2のプロデューサ命令結果が、割り当てられた物理レジスタに書き込まれることを許可する。図2に戻ると、プロセッサ100は、命令210Bがその結果を物理レジスタP2に書き込むことを許可する。
ブロック614において、方法600は、第1のプロデューサ命令結果が、データ転送ネットワークから読み出されることを許可する。図1および図2に戻ると、プロセッサ100は、命令210B結果が、データ転送機構124を使用して転送ネットワークから読み出されることを許可する。
様々な方法のステップおよび決定が、この開示では連続的に説明されていることがあるが、これらのステップおよび決定のいくつかは、別個の要素によって連携してまたは並行して、非同期的にまたは同期的に、パイプライン方式で、またはその他の方法で、行われ得る。この説明がステップおよび決定を列挙するのと同じ順序でそれらが行われることは、そのように明示されている、さもなければ文脈から明らかである、または本質的に要求される場合を除いて、特に必要ではない。しかしながら、選択された変形では、ステップおよび決定は、上述の順序で行われることに留意されたい。さらに、本発明に従ってすべての実施形態/変形では、すべての図示したステップおよび決定が必要とされるとは限らず、本発明に従っていくつかの実施形態/変形では、特に図示していないいくつかのステップおよび決定が、望ましいまたは必要であることがある。
情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることを、当業者は理解するであろう。たとえば、上記の説明全体を通して参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光粒子、またはその組合せによって表され得る。
本明細書に開示する実施形態と関連して説明される様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者はさらに理解するであろう。ハードウェアとソフトウェアのこのような互換性をわかりやすく示すために、様々な例示的構成要素、ブロック、モジュール、回路、およびステップを、概してその機能に関して上述した。このような機能がハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せとして実装されるかは、特定の応用およびシステム全体に課される設計の制約によって決まる。当業者は、各特定の応用に対して様々な方法で記載した機能を実装することができるが、このような実装の決定は、本発明の範囲からの逸脱をもたらすと解釈されるべきではない。
本明細書に開示する実施形態と関連して説明する様々な例示的論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途用集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、個別のゲートもしくはトランジスタロジック、個別のハードウェア部品、または本明細書に記載した機能を行うように設計されたこれらの任意の組合せを用いて、実装または実行され得る。汎用プロセッサは、マイクロプロセッサとすることができるが、代替的にプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサは、たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連結した1つまたは複数のマイクロプロセッサ、または任意の他のこのような構成など、コンピューティングデバイスの組合せとしても実装され得る。
本明細書に開示した実施形態と関連して記載した方法またはアルゴリズムのステップは、直接ハードウェアで、プロセッサで実行されるソフトウェアモジュールで、またはこの2つの組合せで、具体化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られているその他の形態の記憶媒体に、常駐することができる。例示的記憶媒体がプロセッサに結合され、プロセッサが記憶媒体から情報を読み取ること、および記憶媒体に情報を書き込むことができるようにする。代替として、記憶媒体はプロセッサと一体化され得る。プロセッサおよび記憶媒体はASIC内に存在し得る。ASICは、アクセス端末に存在し得る。代替として、プロセッサおよび記憶媒体は、アクセス端末に個別の構成要素として存在し得る。
開示した実施形態の前述の説明は、当業者が本発明を作成するまたは利用することができるように提供される。これらの実施形態に対する様々な変更形態が、当業者には容易に理解されることになり、本明細書に定義される一般的原理は、本発明の趣旨または範囲を逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書に示される実施形態に限定されることを意図しておらず、本明細書に開示する原理および新規の特徴と一致する最も広い範囲を与えられるものとする。
100 プロセッサ
102 リネームマップテーブル
104 物理レジスタファイル
106 アーキテクチャ上のレジスタ
108 物理レジスタファイル
110 トークン
112 物理レジスタ
114 物理レジスタステータス
116 トークン
124 データ転送機構
210 命令

Claims (30)

  1. プロセッサを操作する方法であって、
    第1のプロデューサ命令を取得するステップであって、前記第1のプロデューサ命令が第1のプロデューサ命令結果を含み、前記第1のプロデューサ命令が第1の識別子を含む、ステップと、
    前記第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成するステップと、
    前記アーキテクチャ上のレジスタに物理レジスタを割り当てるステップと、
    第2のプロデューサ命令を取得するステップであって、前記第2のプロデューサ命令が第2のプロデューサ命令結果を含み、前記第2のプロデューサ命令が第2の識別子を含む、ステップと、
    前記アーキテクチャ上のレジスタの第2の生成を生成するステップと、
    前記アーキテクチャ上のレジスタの前記第2の生成に前記物理レジスタを割り当てるステップと、
    前記第2のプロデューサ命令結果が前記第1の物理レジスタに書き込まれることを許可するステップと、
    前記第2のプロデューサ命令結果が前記第1の物理レジスタに書き込まれることを許可しないステップと
    を含む、方法。
  2. 前記アーキテクチャ上のレジスタの前記第2の生成に新しい物理レジスタを割り当てるステップと、
    前記新しい物理レジスタが前記物理レジスタと同じではない場合、前記物理レジスタを解放するステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成を生成するステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成に対応するリネームマップテーブル(RMT)中のエントリを識別するステップを含む、請求項1に記載の方法。
  4. 前記アーキテクチャ上のレジスタに前記物理レジスタを割り当てるステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成と関連する前記リネームマップテーブル(RMT)中の物理レジスタエントリを識別するステップを含む、請求項3に記載の方法。
  5. 命令が潜在的パイプラインフラッシュ命令であると判断するステップと、
    前記第1のプロデューサ命令が潜在的パイプラインフラッシュ命令であるという前記判断に応じて、前記命令中の識別子をリセットするステップと
    をさらに含む、請求項1に記載の方法。
  6. 前記第1の識別子が、命令シーケンス識別子を含む、請求項1に記載の方法。
  7. 前記第2の識別子が、命令シーケンス識別子を含む、請求項1に記載の方法。
  8. 前記第1の識別子が、トークンカウントを含む、請求項1に記載の方法。
  9. 前記第2の識別子が、トークンカウントを含む、請求項1に記載の方法。
  10. 前記プロセッサが、アウトオブオーダープロセッサである、請求項1に記載の方法。
  11. 前記第1の命令が、潜在的パイプラインフラッシュ命令である、請求項5に記載の方法。
  12. 前記アーキテクチャ上のレジスタの前記第1および第2の生成が、命令セットアーキテクチャによって定義される、請求項1に記載の方法。
  13. プロセッサを操作する方法であって、
    プロセッサパイプラインから第1のプロデューサ命令を取得するステップであって、前記第1のプロデューサ命令が第1のプロデューサ命令結果を含み、前記プロセッサパイプラインがデータ転送ネットワークを含む、ステップと、
    前記第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成するステップと、
    第2のプロデューサ命令結果を含む第2のプロデューサ命令を取得するステップと、
    前記アーキテクチャ上のレジスタの第2の生成を生成するステップと、
    前記アーキテクチャ上のレジスタの前記第2の生成に物理レジスタを割り当てるステップと、
    前記第2のプロデューサ命令結果が前記物理レジスタに書き込まれることを許可するステップと、
    前記第1のプロデューサ命令結果が前記データ転送ネットワークから読み出されることを許可するステップと
    を含む、方法。
  14. 前記プロセッサが、アウトオブオーダープロセッサである、請求項13に記載の方法。
  15. 前記アーキテクチャ上のレジスタの前記第1および第2の生成が、命令セットアーキテクチャによって定義される、請求項13に記載の方法。
  16. パイプラインで命令を処理して、少なくとも1つのアーキテクチャ上のレジスタ、および少なくとも1つの識別子と関連する少なくとも1つの命令結果を生成するように構成されたプロセッサであって、
    少なくとも1つのアーキテクチャ上のレジスタを少なくとも1つの物理レジスタにそれぞれマップする少なくとも1つのエントリを含んだリネームマップテーブル(RMT)であって、前記RMT中の少なくとも1つのエントリがRMT識別子と関連している、RMTと、
    前記少なくとも1つの物理レジスタをそれぞれ表す少なくとも1つのエントリを含んだ物理レジスタファイル(PRF)であって、前記PRF中の前記少なくとも1つのエントリがPRF識別子を含んだ、PRFと、
    前記PRF識別子が前記命令結果識別子に対応する場合、前記命令結果が前記物理レジスタに書き込まれることを許可し、
    前記PRF識別子が前記RMT識別子に対応しない場合、前記命令結果が前記物理レジスタに書き込まれることを許可しない
    ように構成された実行モジュールと
    を含む、プロセッサ。
  17. 前記命令結果識別子および前記PRF識別子が、トークンカウントを含む、請求項16に記載のプロセッサ。
  18. 前記命令結果識別子および前記PRF識別子が、命令シーケンス識別子を含む、請求項16に記載のプロセッサ。
  19. 前記プロセッサが、アウトオブオーダープロセッサである、請求項16に記載のプロセッサ。
  20. 前記PRFが、前記少なくとも1つの物理レジスタが空いているか、使用中であるかの表示を含む、請求項16に記載のプロセッサ。
  21. 機械によってアクセスされるとき、前記機械に、
    プロセッサパイプラインから第1のプロデューサ命令を取得するステップであって、前記第1のプロデューサ命令が第1のプロデューサ命令結果を含み、前記プロセッサパイプラインがデータ転送ネットワークを含む、ステップと、
    前記第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成するステップと、
    第2のプロデューサ命令結果を含む第2のプロデューサ命令を取得するステップと、
    前記アーキテクチャ上のレジスタの第2の生成を生成するステップと、
    前記アーキテクチャ上のレジスタの前記第2の生成に物理レジスタを割り当てるステップと、
    前記第2のプロデューサ命令結果が前記物理レジスタに書き込まれることを許可するステップと、
    前記第1のプロデューサ命令結果が前記データ転送ネットワークから読み出されることを許可するステップと
    を含む操作を行わせるデータを含んだ、非一時的コンピュータ可読記憶媒体。
  22. 前記機械によってアクセスされるとき、前記機械に、
    前記アーキテクチャ上のレジスタの前記第2の生成に新しい物理レジスタを割り当てるステップと、
    前記新しい物理レジスタが前記物理レジスタと同じではない場合、前記物理レジスタを解放するステップと
    を含む操作を行わせるデータをさらに含んだ、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  23. 第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成を生成するステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成に対応するリネームマップテーブル(RMT)中のエントリを識別するステップを含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  24. 前記アーキテクチャ上のレジスタに前記物理レジスタを割り当てるステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成と関連する前記リネームマップテーブル(RMT)中の物理レジスタエントリを識別するステップを含む、請求項23に記載の非一時的コンピュータ可読記憶媒体。
  25. 前記機械によってアクセスされるとき、前記機械に、前記第1のプロデューサ命令が潜在的パイプラインフラッシュ命令であると判断する操作を行わせるデータをさらに含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  26. 前記第1の識別子が、命令シーケンス識別子を含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  27. 前記第2の識別子が、命令シーケンス識別子を含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  28. 前記第1の識別子が、トークンカウントを含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  29. 前記第2の識別子が、トークンカウントを含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
  30. 前記プロセッサが、アウトオブオーダープロセッサである、請求項21に記載の非一時的コンピュータ可読記憶媒体。
JP2016525797A 2013-07-12 2014-07-11 マイクロプロセッサにおける選択的リネーミングのための方法および装置 Ceased JP2016526745A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361845476P 2013-07-12 2013-07-12
US61/845,476 2013-07-12
US14/091,340 2013-11-27
US14/091,340 US9471325B2 (en) 2013-07-12 2013-11-27 Method and apparatus for selective renaming in a microprocessor
PCT/US2014/046297 WO2015006659A1 (en) 2013-07-12 2014-07-11 Method and apparatus for selective renaming in a microprocessor

Publications (1)

Publication Number Publication Date
JP2016526745A true JP2016526745A (ja) 2016-09-05

Family

ID=52278112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525797A Ceased JP2016526745A (ja) 2013-07-12 2014-07-11 マイクロプロセッサにおける選択的リネーミングのための方法および装置

Country Status (6)

Country Link
US (1) US9471325B2 (ja)
EP (1) EP3019953A1 (ja)
JP (1) JP2016526745A (ja)
KR (1) KR20160031503A (ja)
CN (1) CN105359089B (ja)
WO (1) WO2015006659A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160232006A1 (en) * 2015-02-09 2016-08-11 Qualcomm Incorporated Fan out of result of explicit data graph execution instruction
US11429393B2 (en) * 2015-11-11 2022-08-30 Arm Limited Apparatus and method for supporting out-of-order program execution of instructions
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10877768B1 (en) * 2019-09-06 2020-12-29 Microsoft Technology Licensing, Llc Minimizing traversal of a processor reorder buffer (ROB) for register rename map table (RMT) state recovery for interrupted instruction recovery in a processor
US11061677B1 (en) 2020-05-29 2021-07-13 Microsoft Technology Licensing, Llc Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor
CN114356420B (zh) * 2021-12-28 2023-02-17 海光信息技术股份有限公司 指令流水线的处理方法及装置、电子装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61253544A (ja) * 1985-05-07 1986-11-11 Hitachi Ltd 情報処理装置
JP2004038750A (ja) * 2002-07-05 2004-02-05 Fujitsu Ltd プロセッサ及び命令制御方法
US20080177983A1 (en) * 2007-01-24 2008-07-24 Arm Limited Selective suppression of register renaming

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
WO1995032466A1 (en) * 1994-05-19 1995-11-30 Vlsi Technology, Inc. Flexible register mapping scheme
US5740414A (en) * 1995-02-14 1998-04-14 Hal Computer Systems, Inc. Method and apparatus for coordinating the use of physical registers in a microprocessor
US6356918B1 (en) * 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US5764970A (en) * 1995-11-20 1998-06-09 International Business Machines Corporation Method and apparatus for supporting speculative branch and link/branch on count instructions
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US6061777A (en) * 1997-10-28 2000-05-09 International Business Machines Corporation Apparatus and method for reducing the number of rename registers required in the operation of a processor
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
CN1264087C (zh) * 1999-09-08 2006-07-12 关一 寄存器再命名方法
US7360063B2 (en) * 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
US7506139B2 (en) 2006-07-12 2009-03-17 International Business Machines Corporation Method and apparatus for register renaming using multiple physical register files and avoiding associative search
US7624253B2 (en) 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
CN100524208C (zh) * 2006-10-26 2009-08-05 中国科学院计算技术研究所 对状态寄存器进行重命名的方法和使用该方法的处理器
US20080148022A1 (en) * 2006-12-13 2008-06-19 Arm Limited Marking registers as available for register renaming
CN101794214B (zh) 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
US8335912B2 (en) 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values
US8707015B2 (en) 2010-07-01 2014-04-22 Advanced Micro Devices, Inc. Reclaiming physical registers renamed as microcode architectural registers to be available for renaming as instruction set architectural registers based on an active status indicator
US8661230B2 (en) 2011-04-15 2014-02-25 International Business Machines Corporation Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61253544A (ja) * 1985-05-07 1986-11-11 Hitachi Ltd 情報処理装置
JP2004038750A (ja) * 2002-07-05 2004-02-05 Fujitsu Ltd プロセッサ及び命令制御方法
US20080177983A1 (en) * 2007-01-24 2008-07-24 Arm Limited Selective suppression of register renaming

Also Published As

Publication number Publication date
US20150019843A1 (en) 2015-01-15
CN105359089B (zh) 2017-12-26
CN105359089A (zh) 2016-02-24
KR20160031503A (ko) 2016-03-22
WO2015006659A1 (en) 2015-01-15
EP3019953A1 (en) 2016-05-18
US9471325B2 (en) 2016-10-18

Similar Documents

Publication Publication Date Title
JP2016526745A (ja) マイクロプロセッサにおける選択的リネーミングのための方法および装置
JP5653762B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
US9256433B2 (en) Systems and methods for move elimination with bypass multiple instantiation table
US10678695B2 (en) Migration of data to register file cache
CN108196884B (zh) 利用生成重命名的计算机信息处理器
KR20100032441A (ko) 조건부 명령을 비조건부 명령 및 선택 명령으로 확장하기 위한 방법 및 시스템
KR20100003309A (ko) 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치
US10073699B2 (en) Processing instructions in parallel with waw hazards and via a distributed history buffer in a microprocessor having a multi-execution slice architecture
US11188332B2 (en) System and handling of register data in processors
US10282205B2 (en) Method and apparatus for execution of threads on processing slices using a history buffer for restoring architected register data via issued instructions
KR20190033084A (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
US10776123B2 (en) Faster sparse flush recovery by creating groups that are marked based on an instruction type
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
US10545763B2 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
US10007524B2 (en) Managing history information for branch prediction
US10628157B2 (en) Early predicate look-up
EP3260978A1 (en) System and method of merging partial write result during retire phase
US11249757B1 (en) Handling and fusing load instructions in a processor
KR20220065048A (ko) 대기열 압축 해제
US10248425B2 (en) Processor with slave free list that handles overflow of recycled physical registers and method of recycling physical registers in a processor using a slave free list
US7783692B1 (en) Fast flag generation
TW201905681A (zh) 合併解決重命名尺寸問題的部分寫入結果的系統和方法
JP2015201026A (ja) 演算処理装置および演算処理装置の制御方法
JP2010205088A (ja) ベクトル処理装置、及びベクトル処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180906

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190208

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20190701