(57)【要約】  アウトオブオーダープロセッサが使用中の物理レジスタを再利用することを許可するための方法および装置が本明細書に開示される。この方法および装置は、命令結果が物理レジスタに書き込まれることを許可されるか、許可されないかを示すために、リネームマップテーブル(RMT)および物理レジスタファイル(PRF)中のトークンおよび/または他の識別子などの識別子を使用する。
2016526745.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを操作する方法であって、
第1のプロデューサ命令を取得するステップであって、前記第1のプロデューサ命令が第1のプロデューサ命令結果を含み、前記第1のプロデューサ命令が第1の識別子を含む、ステップと、
前記第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成するステップと、
前記アーキテクチャ上のレジスタに物理レジスタを割り当てるステップと、
第2のプロデューサ命令を取得するステップであって、前記第2のプロデューサ命令が第2のプロデューサ命令結果を含み、前記第2のプロデューサ命令が第2の識別子を含む、ステップと、
前記アーキテクチャ上のレジスタの第2の生成を生成するステップと、
前記アーキテクチャ上のレジスタの前記第2の生成に前記物理レジスタを割り当てるステップと、
前記第2のプロデューサ命令結果が前記第1の物理レジスタに書き込まれることを許可するステップと、
前記第2のプロデューサ命令結果が前記第1の物理レジスタに書き込まれることを許可しないステップと
を含む、方法。
【請求項２】
前記アーキテクチャ上のレジスタの前記第2の生成に新しい物理レジスタを割り当てるステップと、
前記新しい物理レジスタが前記物理レジスタと同じではない場合、前記物理レジスタを解放するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成を生成するステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成に対応するリネームマップテーブル(RMT)中のエントリを識別するステップを含む、請求項1に記載の方法。
【請求項４】
前記アーキテクチャ上のレジスタに前記物理レジスタを割り当てるステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成と関連する前記リネームマップテーブル(RMT)中の物理レジスタエントリを識別するステップを含む、請求項3に記載の方法。
【請求項５】
命令が潜在的パイプラインフラッシュ命令であると判断するステップと、
前記第1のプロデューサ命令が潜在的パイプラインフラッシュ命令であるという前記判断に応じて、前記命令中の識別子をリセットするステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
前記第1の識別子が、命令シーケンス識別子を含む、請求項1に記載の方法。
【請求項７】
前記第2の識別子が、命令シーケンス識別子を含む、請求項1に記載の方法。
【請求項８】
前記第1の識別子が、トークンカウントを含む、請求項1に記載の方法。
【請求項９】
前記第2の識別子が、トークンカウントを含む、請求項1に記載の方法。
【請求項１０】
前記プロセッサが、アウトオブオーダープロセッサである、請求項1に記載の方法。
【請求項１１】
前記第1の命令が、潜在的パイプラインフラッシュ命令である、請求項5に記載の方法。
【請求項１２】
前記アーキテクチャ上のレジスタの前記第1および第2の生成が、命令セットアーキテクチャによって定義される、請求項1に記載の方法。
【請求項１３】
プロセッサを操作する方法であって、
プロセッサパイプラインから第1のプロデューサ命令を取得するステップであって、前記第1のプロデューサ命令が第1のプロデューサ命令結果を含み、前記プロセッサパイプラインがデータ転送ネットワークを含む、ステップと、
前記第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成するステップと、
第2のプロデューサ命令結果を含む第2のプロデューサ命令を取得するステップと、
前記アーキテクチャ上のレジスタの第2の生成を生成するステップと、
前記アーキテクチャ上のレジスタの前記第2の生成に物理レジスタを割り当てるステップと、
前記第2のプロデューサ命令結果が前記物理レジスタに書き込まれることを許可するステップと、
前記第1のプロデューサ命令結果が前記データ転送ネットワークから読み出されることを許可するステップと
を含む、方法。
【請求項１４】
前記プロセッサが、アウトオブオーダープロセッサである、請求項13に記載の方法。
【請求項１５】
前記アーキテクチャ上のレジスタの前記第1および第2の生成が、命令セットアーキテクチャによって定義される、請求項13に記載の方法。
【請求項１６】
パイプラインで命令を処理して、少なくとも1つのアーキテクチャ上のレジスタ、および少なくとも1つの識別子と関連する少なくとも1つの命令結果を生成するように構成されたプロセッサであって、
少なくとも1つのアーキテクチャ上のレジスタを少なくとも1つの物理レジスタにそれぞれマップする少なくとも1つのエントリを含んだリネームマップテーブル(RMT)であって、前記RMT中の少なくとも1つのエントリがRMT識別子と関連している、RMTと、
前記少なくとも1つの物理レジスタをそれぞれ表す少なくとも1つのエントリを含んだ物理レジスタファイル(PRF)であって、前記PRF中の前記少なくとも1つのエントリがPRF識別子を含んだ、PRFと、
前記PRF識別子が前記命令結果識別子に対応する場合、前記命令結果が前記物理レジスタに書き込まれることを許可し、
前記PRF識別子が前記RMT識別子に対応しない場合、前記命令結果が前記物理レジスタに書き込まれることを許可しない
ように構成された実行モジュールと
を含む、プロセッサ。
【請求項１７】
前記命令結果識別子および前記PRF識別子が、トークンカウントを含む、請求項16に記載のプロセッサ。
【請求項１８】
前記命令結果識別子および前記PRF識別子が、命令シーケンス識別子を含む、請求項16に記載のプロセッサ。
【請求項１９】
前記プロセッサが、アウトオブオーダープロセッサである、請求項16に記載のプロセッサ。
【請求項２０】
前記PRFが、前記少なくとも1つの物理レジスタが空いているか、使用中であるかの表示を含む、請求項16に記載のプロセッサ。
【請求項２１】
機械によってアクセスされるとき、前記機械に、
プロセッサパイプラインから第1のプロデューサ命令を取得するステップであって、前記第1のプロデューサ命令が第1のプロデューサ命令結果を含み、前記プロセッサパイプラインがデータ転送ネットワークを含む、ステップと、
前記第1のプロデューサ命令に対してアーキテクチャ上のレジスタの第1の生成を生成するステップと、
第2のプロデューサ命令結果を含む第2のプロデューサ命令を取得するステップと、
前記アーキテクチャ上のレジスタの第2の生成を生成するステップと、
前記アーキテクチャ上のレジスタの前記第2の生成に物理レジスタを割り当てるステップと、
前記第2のプロデューサ命令結果が前記物理レジスタに書き込まれることを許可するステップと、
前記第1のプロデューサ命令結果が前記データ転送ネットワークから読み出されることを許可するステップと
を含む操作を行わせるデータを含んだ、非一時的コンピュータ可読記憶媒体。
【請求項２２】
前記機械によってアクセスされるとき、前記機械に、
前記アーキテクチャ上のレジスタの前記第2の生成に新しい物理レジスタを割り当てるステップと、
前記新しい物理レジスタが前記物理レジスタと同じではない場合、前記物理レジスタを解放するステップと
を含む操作を行わせるデータをさらに含んだ、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成を生成するステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成に対応するリネームマップテーブル(RMT)中のエントリを識別するステップを含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記アーキテクチャ上のレジスタに前記物理レジスタを割り当てるステップが、前記第1のプロデューサ命令に対して前記アーキテクチャ上のレジスタの前記第1の生成と関連する前記リネームマップテーブル(RMT)中の物理レジスタエントリを識別するステップを含む、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
前記機械によってアクセスされるとき、前記機械に、前記第1のプロデューサ命令が潜在的パイプラインフラッシュ命令であると判断する操作を行わせるデータをさらに含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記第1の識別子が、命令シーケンス識別子を含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記第2の識別子が、命令シーケンス識別子を含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
前記第1の識別子が、トークンカウントを含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２９】
前記第2の識別子が、トークンカウントを含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項３０】
前記プロセッサが、アウトオブオーダープロセッサである、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第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  命令
【図１】
2016526745.tif 000003
【図２】
2016526745.tif 000004
【図３】
2016526745.tif 000005
【図４】
2016526745.tif 000006
【図５】
2016526745.tif 000007
【図６】
2016526745.tif 000008
【手続補正書】
【提出日】平成27年8月21日(2015.8.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ(100)を操作する方法であって、前記プロセッサが、アーキテクチャ上のレジスタ(106)への物理レジスタ(108;112)の割当てを示すエントリを格納するためのリネームマップテーブル(RMT)(102)を含み、各物理レジスタが、関連する物理レジスタトークン(116)を有し、RMTエントリ中の各アーキテクチャ上のレジスタが、関連するアーキテクチャ上のレジスタトークン(110)を有し、前記方法が、
プロセッサパイプラインから潜在的パイプラインフラッシュ命令を取得することに応じて、前記RMT中のすべてのアーキテクチャ上のレジスタトークンをリセット値に設定するステップ(304;306)と、
プロデューサ命令を取得することに応じて(106;302)、前記プロデューサ命令が、実行されるとき前記プロデューサ命令の結果のターゲットとしてアーキテクチャ上のレジスタを識別する場合、
前記アーキテクチャ上のレジスタと関連する前記アーキテクチャ上のレジスタトークンが、前記リセット値に等しい値を有するならば(310)、前記アーキテクチャ上のレジスタに空いていると示されている物理レジスタを前記RTMで割り当て(314;320)、前記アーキテクチャ上のレジスタと関連する前記アーキテクチャ上のレジスタトークンの前記値を、前記リセット値とは異なる値に変更するステップ(322)と、
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を変更するステップ(322)と、
前記物理レジスタと関連する前記物理レジスタトークンが、前記プロデューサ命令を示す値を有する場合、前記プロデューサ命令の結果が、前記RMTで前記アーキテクチャ上のレジスタに割り当てられた前記物理レジスタに書き込まれることを許可するステップ(404;406)と
を含む、方法。
【請求項２】
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を前記変更するステップが、
前記物理レジスタトークンの前記値をインクリメントするステップ(322)と、
前記プロデューサ命令とともに前記物理レジスタトークンの前記値を含むステップ(324)と
を含む、請求項1に記載の方法。
【請求項３】
前記物理レジスタと関連する前記物理レジスタトークンが、前記プロデューサ命令を示す値を有する場合、前記プロデューサ命令の結果が、前記RMTで前記アーキテクチャ上のレジスタに割り当てられた前記物理レジスタに書き込まれることを前記許可するステップが、
前記物理レジスタと関連する前記物理レジスタトークンの前記値を、前記プロデューサ命令とともに含まれる前記値と一致させるステップ(404;406)
を含む、請求項2に記載の方法。
【請求項４】
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を前記変更するステップが、
前記物理レジスタトークンの前記値を、前記プロデューサ命令を一意に識別する命令識別子に設定するステップ
を含む、請求項1に記載の方法。
【請求項５】
前記リセット値がゼロである、請求項1に記載の方法。
【請求項６】
前記潜在的パイプラインフラッシュ命令が、前記プロデューサ命令である、請求項1に記載の方法。
【請求項７】
プロセッサ(100)であって、
物理レジスタを含んだ物理レジスタファイル(108;112)と、
アーキテクチャ上のレジスタへの前記物理レジスタの割当てを示すエントリを格納するためのリネームマップテーブル(RMT)(102)であって、各物理レジスタが関連する物理レジスタトークン(116)を有し、RMTエントリ中の各アーキテクチャ上のレジスタが関連するアーキテクチャ上のレジスタトークン(110)を有する、RMTと、
潜在的パイプラインフラッシュ命令を取得することに応じて、前記RMT中のすべてのアーキテクチャ上のレジスタトークンをリセット値に設定し(304;306)、
プロデューサ命令を取得することに応じて(106;302)、前記プロデューサ命令が、実行されるとき前記プロデューサ命令の結果のターゲットとしてアーキテクチャ上のレジスタを識別する場合、
前記アーキテクチャ上のレジスタと関連する前記アーキテクチャ上のレジスタトークンが、前記リセット値に等しい値を有するならば(310)、前記アーキテクチャ上のレジスタに空いていると示されている物理レジスタを前記RTMで割り当て(314;320)、前記アーキテクチャ上のレジスタと関連する前記アーキテクチャ上のレジスタトークンの前記値を、前記リセット値とは異なる値に変更し(322)、
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を変更し(322)、
前記物理レジスタと関連する前記物理レジスタトークンが、前記プロデューサ命令を示す値を有する場合、前記プロデューサ命令の結果が、前記RMTで前記アーキテクチャ上のレジスタに割り当てられた前記物理レジスタに書き込まれることを許可する(404;406)
ためのパイプラインと
を含む、プロセッサ。
【請求項８】
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を変更するステップが、
前記物理レジスタトークンの前記値をインクリメントするステップ(322)と、
前記プロデューサ命令とともに前記物理レジスタトークンの前記値を含むステップ(324)と
を含む、請求項7に記載のプロセッサ。
【請求項９】
前記物理レジスタと関連する前記物理レジスタトークンが、前記プロデューサ命令を示す値を有する場合、前記プロデューサ命令の結果が、前記RMTで前記アーキテクチャ上のレジスタに割り当てられた前記物理レジスタに書き込まれることを許可するステップが、
前記物理レジスタと関連する前記物理レジスタトークンの前記値を、前記プロデューサ命令とともに含まれる前記値と一致させるステップ(404;406)
を含む、請求項8に記載のプロセッサ。
【請求項１０】
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を変更するステップが、
前記物理レジスタトークンの前記値を、前記プロデューサ命令を一意に識別する命令識別子に設定するステップ
を含む、請求項7に記載のプロセッサ。
【請求項１１】
前記潜在的パイプラインフラッシュ命令が、前記プロデューサ命令である、請求項7に記載のプロセッサ。
【請求項１２】
プロセッサ(100)であって、
物理レジスタを含んだ物理レジスタファイル(108;112)と、
アーキテクチャ上のレジスタへの前記物理レジスタの割当てを示すエントリを格納するためのリネームマップテーブル(RMT)(102)であって、各物理レジスタが、関連する物理レジスタトークン(116)を有し、RMTエントリ中の各アーキテクチャ上のレジスタが、関連するアーキテクチャ上のレジスタトークン(110)を有する、RMTと、
プロセッサパイプラインから潜在的パイプラインフラッシュ命令を取得することに応じて、前記RMT中のすべてのアーキテクチャ上のレジスタトークンをリセット値に設定するための手段(304;306)と、
前記RMTで割り当て、前記アーキテクチャ上のレジスタトークンおよび前記物理レジスタトークンの前記値を変更するための手段(310;314;320;322)であって、プロデューサ命令を取得することに応じて、前記プロデューサ命令が、実行されるとき、前記プロデューサ命令の結果のターゲットとしてアーキテクチャ上のレジスタを識別する場合、
前記アーキテクチャ上のレジスタと関連する前記アーキテクチャ上のレジスタトークンが、前記リセット値に等しい値を有するならば、前記アーキテクチャ上のレジスタに空いていると示されている物理レジスタを前記RTMで割り当て、前記アーキテクチャ上のレジスタと関連する前記アーキテクチャ上のレジスタトークンの前記値を、前記リセット値とは異なる値に変更し、
前記プロデューサ命令を示すために前記物理レジスタと関連する前記物理レジスタトークンの前記値を変更する、手段と、
前記物理レジスタと関連する前記物理レジスタトークンが、前記プロデューサ命令を示す値を有する場合、前記プロデューサ命令の結果が、前記RMTで前記アーキテクチャ上のレジスタに割り当てられた前記物理レジスタに書き込まれることを許可するための手段(404;406)と
を含む、プロセッサ。
【請求項１３】
前記アーキテクチャ上のレジスタトークンおよび前記物理レジスタトークンの前記値を前記RMTで割り当て、変更するための前記手段が、
前記物理レジスタトークンの前記値をインクリメントするステップ(322)と、
前記プロデューサ命令とともに前記物理レジスタトークンの前記値を含むステップ(324)と
を含む、請求項12に記載のプロセッサ。
【請求項１４】
前記物理レジスタと関連する前記物理レジスタトークンが、前記プロデューサ命令を示す値を有する場合、前記プロデューサ命令の結果が、前記RMTで前記アーキテクチャ上のレジスタに割り当てられた前記物理レジスタに書き込まれることを許可するための手段が、
前記物理レジスタと関連する前記物理レジスタトークンの前記値を、前記プロデューサ命令とともに含まれる前記値と一致させるステップ(404;406)
を含む、請求項13に記載のプロセッサ。
【請求項１５】
前記アーキテクチャ上のレジスタトークンおよび前記物理レジスタトークンの前記値を前記RMTで割り当て、変更するための前記手段が、
前記物理レジスタトークンの前記値を、前記プロデューサ命令を一意に識別する命令識別子に設定するステップ
を含む、請求項12に記載のプロセッサ。
【国際調査報告】
2016526745.tif 000009
2016526745.tif 000010