(57)【特許請求の範囲】
【請求項１】
装置であって、
実行後に命令をリタイヤさせるためのリタイヤメント・ユニットを備え、前記リタイヤメント・ユニットは、
前記命令の割り当てで第１の情報を受け取るための第１のアレイであって、前記第１のアレイは、リタイヤメント・ウィンドウで読み出す対象の第１の部分及びオンデマンドで読み出す対象の第２の部分にパーティション化された第１のアレイと、
前記命令の実行後に第２の情報を受け取るための第２のアレイであって、前記第２のアレイは、リタイヤメント・ウィンドウそれぞれで読み出す対象の第１の部分及びオンデマンドで読み出す対象の第２の部分にパーティション化された第２のアレイと、
前記実行された命令に関連付けられた情報が前記第１のアレイの前記第２の部分、又は前記第２のアレイの前記第２の部分に記憶された場合、実行命令に関連付けられたイベントを処理するためのデマンド・ロジックと
を備える装置。
【請求項２】
請求項１記載の装置であって、前記デマンド・ロジックは、前記実行された命令が障害を有しない旨を算出が示した場合に、実行された命令の保証信号を生成し、前記障害が示された場合に無効化信号を生成する装置。
【請求項３】
請求項２記載の装置であって、前記第１のアレイ及び前記第２のアレイの出力に、前記第１のアレイの前記第１の部分、及び前記第２のアレイの前記第１の部分における情報に基づいて第１の実行された命令の早期保証信号を出力するよう結合された早期ロジックを更に備える装置。
【請求項４】
請求項３記載の装置であって、前記早期ロジックは、大局イベント情報を受け取り、それに応じて前記デマンド・ロジックを起動させるよう更に結合される装置。
【請求項５】
請求項３記載の装置であって、前記早期保証信号、前記保証信号、又は前記無効化信号を直列化するための前記早期ロジック及び前記デマンド・ロジックに結合された出力ロジックを更に備える装置。
【請求項６】
請求項４記載の装置であって、前記早期ロジックは、前記第１のアレイの前記第１の部分に存在している前記リタイヤメント・ウィンドウに対応する表示子の状態に基づいて前記第１のアレイの前記第２の部分を起動させる装置。
【請求項７】
請求項１記載の装置であって、前記第１のアレイは割り当てアレイを備え、前記第２のアレイはライトバック・アレイを備える装置。
【請求項８】
請求項７記載の装置であって、前記第１のアレイの前記第２の部分、及び前記第２のアレイの前記第２の部分は、前記デマンド・ロジックがアクティブでない限り、電源遮断する装置。
【請求項９】
方法であって、
命令割り当てで命令に関連付けられた静的情報を受信し、割り当てバッファの第１の部分に前記静的情報の少なくとも第１の部分を記憶し、リタイヤメントで行う対象のイベントを前記静的情報が示す場合、前記割り当てバッファの第２の部分に電力を供給して前記静的情報の第２の部分を記憶する工程であって、前記割り当てバッファの前記第２の部分は、前記静的情報の前記第２の部分を記憶するためにオンデマンドでイネーブルされる工程と、
前記命令に関連付けられた前記静的情報が前記割り当てバッファの前記第２の部分にない場合、前記命令のリタイヤメントで早期保証信号を出力する工程と、
さもなければ、前記静的情報の前記第２の部分にアクセスするよう前記割り当てバッファの前記第２の部分に電力を供給する工程と
を含む方法。
【請求項１０】
請求項９記載の方法であって、前記早期保証信号が出力されない場合、電力を供給されたイベント・ロジックにおける前記イベント処理を行う工程を更に含む方法。
【請求項１１】
請求項１０記載の方法であって、前記イベント処理の結果に基づいて前記イベント・ロジックにおいて無効化信号又は遅い保証信号を生成する工程を更に含む方法。
【請求項１２】
請求項１１記載の方法であって、リタイヤメント・ユニットからの出力のために、第１の命令に関連付けられた早期保証信号、及び第２の命令に関連付けられた遅い保証信号又は無効化信号を直列化する工程を更に含み、前記第２の命令は、前記第１の命令よりも、プログラム順序において早い方法。
【請求項１３】
請求項９記載の方法であって、命令ライトバックで前記命令に関連付けられた動的情報を受信する工程と、ライトバック・バッファの第１の部分における前記動的情報の少なくとも第１の部分を記憶する工程と、前記動的情報が、リタイヤメントで行う対象のイベントを示す場合、前記ライトバック・バッファの第２の部分における前記動的情報の第２の部分を記憶する工程とを含む方法。
【請求項１４】
請求項１３記載の方法であって、イベント処理をリタイヤメントで行うか否かを、少なくとも部分的に、前記静的情報の前記第１の部分及び前記動的情報の前記第１の部分に基づいて判定する工程と、リタイヤメントで前記イベント処理を行う工程とを含み、前記リタイヤメントは、前記イベント処理を行わない場合と、前記イベント処理を行う場合とは異なるレートで行われる方法。
【請求項１５】
システムであって、
順序はずれ（ＯＯＯ）で命令を実行するためのプロセッサであって、前記プロセッサは、複数の実行ユニットと、前記複数の実行ユニットに結合されたリタイヤメント・ユニットとを含むプロセッサを備え、前記リタイヤメント・ユニットは、
前記命令の割り当てで第１の情報を受信するための割り当てバッファであって、前記割り当てバッファは、各リタイヤメント・ウィンドウで読み出される対象の第１の部分及びオンデマンドで読み出される対象の第２の部分にパーティション化された割り当てバッファと、
前記命令の実行後に第２の情報を受信するためのライトバック・バッファであって、前記ライトバック・バッファは、リタイヤメント・ウィンドウそれぞれで読み出される対象の第１の部分と、オンデマンドで読み出される対象の第２の部分とにパーティション化されるライトバック・バッファと、
前記ライトバック・バッファの前記第２の部分及び前記割り当てバッファの前記第２の部分に、第１の実行された命令に関連付けられた第２の情報がない場合、前記割り当てバッファ及び前記ライトバック・バッファの出力に、前記第１の実行された命令の早期保証信号を出力する第１のロジックと、
前記ライトバック・バッファ又は前記割り当てバッファの前記第２の部分に、第２の実行された命令に関連付けられた第２の情報がある場合、前記割り当てバッファ及び前記ライトバック・バッファの出力に結合され、前記第２の実行された命令の遅い保証信号又は無効化信号を出力するよう結合された第２のロジックと、前記プロセッサに結合されたダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）と
を備えるシステム。
【請求項１６】
請求項１５記載のシステムであって、前記第１のロジックは、大局イベント信号を受信し、前記大局イベント信号に応じて第３の実行命令のリタイヤメント中に前記第２のロジックを起動させるシステム。
【請求項１７】
請求項１５記載のシステムであって、前記第１のロジック及び前記第２のロジックに結合され、前記第１のロジック及び前記第２のロジックの出力を結合するための第３のロジックを更に備えるシステム。
【請求項１８】
請求項１７記載のシステムであって、前記第３のロジックは、前記遅い保証信号、又は、前記早期保証信号よりも先の前記無効化信号を前記リタイヤメント・ユニットからの出力のために直列化し、前記第２の実行された命令は、前記第１の実行された命令よりもプログラム順序で早いシステム。
【請求項１９】
請求項１５記載のシステムであって、前記割り当てバッファ及び前記ライトバック・バッファの前記第１の部分は各リタイヤメント・ウィンドウ中に電力を供給され、前記割り当てバッファの前記第２の部分は前記リタイヤメント・ウィンドウに関連付けられた情報が、前記割り当てバッファの前記第２の部分に記憶されている場合にのみ、前記リタイヤメント・ウィンドウ中に電力を供給されるシステム。
【請求項２０】
請求項１５記載のシステムであって、前記第１のロジックは前記早期保証信号を出力し、前記第２のロジックはリタイヤメント・ウィンドウ中に電力を供給されず、スティッキ・ビットが、前記リタイヤメント・ウィンドウに先行してセットされ、前記リタイヤメント・ユニットによってセットされなくてよいシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
現代のマイクロプロセッサは、命令を受信し、命令を実行し、命令の結果を提供する種々の段階で形成される。現代のアーキテクチャの多くは、命令を順序外れで実行することが可能であり、結果が、その後、順番にプロセッサのアーキテクチャ状態にコミットされる順序外れ（ＯＯＯ）実現形態に基づく。
【背景技術】
【０００２】
前述の順序外れ動作を実現するために、プロセッサ・パイプラインを種々の段階にセグメント化することが可能である。前述の段階における命令の処理が終了すると、実行の結果が有効である（すなわち、不確かでなく、又は誤ったデータに基づくものでなく、障害又は例外が生じていない）ということを確認するよう動作し得る。多くのプロセッサ・アーキテクチャでは、各リタイヤメント・サイクルでは、リタイヤメント・ロジック全体が、関連付けられたデータ全てが、関連付けられたアレイ全てから読み出され、完全なリタイヤメント・ロジックが命令毎に呼び出されるようにアクティブである。この活動は全て、保証信号を生成し、イベント算出及び優先順位付けを含むリタイヤメント関連動作を行うことを意図している。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、大半のサイクルでは、イベントは生じず、したがって、イベントを算出する必要は存在しない。そういうものとして、適切な動作に必要でないかなりの電力消費が存在している。
【課題を解決するための手段】
【０００４】
種々の実施例では、プロセッサのリタイヤメント・ロジックは、動作のかなりの部分の間、最小量の前述のリソースのみに電力を供給することが可能であるように種々のリヤイヤメント・リソースの区分を提供することにより、高い電力感応度で動作するよう制御することができる。この点で、種々のアレイ、バッファ等、及びロジックを、前述の動作に対応するよう区分することが可能である。本明細書及び特許請求の範囲記載の実施例は、再配列バッファ（ＲＯＢ）の意味合いにおけるものであるが、本発明の範囲はこの点に限定されず、実施例は、特定のプロセッサにおいて存在し得る種々のリタイヤメント・ロジックに使用することが可能である。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施例によるプロセッサのブロック図である。
【図２】本発明の一実施例によるリヤイヤメント・ロジックのブロック図である。
【図３】本発明の一実施例による方法のフロー図である。
【図４】本発明の一実施例によるシステムのブロック図である。
【発明を実施するための形態】
【０００６】
電力の利点を達成するために、各リタイヤメント・ウィンドウにおいて生じる通常のリタイヤメント活動に関連付けられた前述のロジック及びアレイの区分は、最小電力が消費されるように比較的小さいことがあり得る。対照的に、種々のイベントに関連付けられた更なる算出をリタイヤメント命令において実現する必要がある比較的希なケースでは、より大きなアレイ及びロジックに電力を供給にすることが可能である。このようにして、所望の動作は必要に応じて行うことが可能である一方、リタイヤメント動作の大半の場合、最小リタイヤメント・ロジックのみに電力を供給すればよい。本明細書及び特許請求の範囲において一般に命令リタイヤメントにして説明しているが、種々の実施例では、命令は、マクロ命令などの単一のユーザレベル命令を複数のμｏｐｓに分割することが可能な、いわゆるマイクロ動作（μｏｐｓ）を表し得る。
【０００７】
ＲＯＢは、例外処理、命令ポインタ（例えば、ＥＩＰ／ＵＩＰ）算出、性能モニタ（ＰＭＯＮ）算出、及びレジスタ更新などのリタイヤメント関連制御を行う。障害の検出以外に、ＲＯＢは、障害が検出されず、リタイヤメントにおいて行われる場合に、実行される他の通常のリタイヤメント関連タスクを有する。前述のタスクは、新たにリヤイヤされた値の、再命名されていないレジスタへの書き込み、（データ・ブレークポイント・ビット、コマンド及びステータス・レジスタ例外、精度例外等のような）新たな値の更新、及びステータス・ビットの算出、並びに、性能モニタの更新などの有効なリタイヤメントに続いて行われる動作を含む。本発明の実施例による電力アウェア・リタイヤメント手法は、（ＲＯＢに対する）外部及び内部の表示から導き出された静的及び動的な情報に少なくとも部分的に基づいて、必要な場合にのみ、ＲＯＢの別々の、電力を求めるブロックを選択的に制御することが可能である。
【０００８】
すなわち、最小量の電力を引き出す通常のリタイヤメントの主流のタスクは、アレイ及びロジックのパーティションによって処理し、イベント処理（例えば、障害、トラップ、例外、割り込み）のような、希なケースを、必要な際にのみ、前述のアレイ及びロジックのより完全なパーティションによる処理にまかせることが可能である。このようにして、完全な性能環境において動作する必要があるＰＭＯＮのような特殊モードは、必要な際に、正常に動作し、アクティブでない場合に電力を節減することが可能である。実施例はよって、命令リタイヤメントを実現するための算出の量を削減することにより、周波数中断可能でないリタイヤメントにおいて、より大きなリタイヤメントを可能にし得る。
【実施例】
【０００９】
次に図１を参照すれば、本発明の一実施例によるプロセッサのブロック図を示す。図１に示すように、プロセッサ１００は、多段のパイプラインされた順序外れのプロセッサであり得る。プロセッサ１００は、以下に説明するように、電力アウェア・リタイヤメント動作に関して種々の構成を示すよう、図１の相対的に単純化された図で示す。
【００１０】
図１に示すように、プロセッサ１００は、実行する対象のマクロ命令をフェッチし、プロセッサにおけるその後の使用に備えるために使用することができるフロント・エンド・ユニット１１０を含む。例えば、フロント・エンド・ユニット１１０は、命令プリフェッチャ、命令デコーダ、トレース・キャッシュ、並びに、マイクロコード記憶装置及びμｏｐ記憶装置を含み得る。命令プリフェチャは、メモリからマクロ命令をフェッチし、それを命令デコーダに供給して、プリミティブ（すなわち、プロセッサによる実行のためのμｏｐｓ）にデコードすることができる。トレース・キャッシュは、デコードされたμｏｐｓを取り出し、マクロ・コード記憶装置に記憶するために、プログラムによって配列されたシーケンスに組み立てることができる。しかし、複雑なマクロ命令の場合、マイクロコード記憶装置は、動作の実行に必要なμｏｐｓを供給することができる。当然、更なる構成部分及び要素をフロント・エンド・ユニット１１０において実現することができる。
【００１１】
フロント・エンド・ユニット１１０と実行ユニット１２０との間に結合されているのは、マイクロ命令を受信し、実行に備えるために使用することができるＯＯＯエンジン１１５である。特に、ＯＯＯエンジン１１５は、レジスタ・ファイル１３０及び拡張レジスタ・ファイル１３５などの種々のレジスタ・ファイル内の記憶場所に論理レジスタの再命名を提供するとともに、マイクロ命令フローを再配列し、実行に必要な種々のリソースを割り当てるために種々のバッファを含み得る。レジスタ・ファイル１３０は、整数及び浮動小数点演算のために別個のレジスタ・ファイルを含み得る。拡張レジスタ・ファイル１３５は、ベクタサイズ・ユニット（例えば、レジスタ毎の２５６ビット又は５１２ビット）のための記憶装置を提供することができる。
【００１２】
種々のリソースは、他の専用ハードウェアの中でも、種々の、整数、浮動小数点、及び単一命令複数データ（ＳＩＭＤ）論理ユニットを含む実行ユニット１２０に存在し得る。結果は、電力アウェアなやり方で動作し得るリタイヤメント・ロジック（すなわち、再配列バッファ（ＲＯＢ）１４０）に供給することができる。特に、ＲＯＢ１４０は、実行される命令に関連付けられた情報を受信するための種々のアレイ及びロジックを含む。この情報は次いで、命令を有効にリタイヤし、結果データをプロセッサのアーキテクチャ状態にコミットすることが可能であるか否か、又は命令の適切なリタイヤメントを妨げる１つ又は複数の例外が生じたか否かを判定するために、ＲＯＢ１４０によって検査される。当然、ＲＯＢ１４０は、本明細書及び特許請求の範囲記載の種々のイベント及び算出などの、リタイヤメントに関連付けられた他の動作を処理することができる。
【００１３】
図１に示すように、ＲＯＢ１４０は、１つ又は複数のイネーブルされたアレイ１４２及び１つ又は複数のオンデマンド・アレイ１４４を含む種々のアレイを含み得る。イネーブルされたアレイは、常に、起動することができ、命令に関連付けられた最小量の情報を含み得る。以下に更に説明するように、１つの特定の実現形態では、割当アレイ及びライトバック（ＷＢ）アレイの別個のパーティションは、イネーブルされたアレイ１４４に対応し得る。同様に、オンデマンド・アレイ１４４は、μｏｐｓに関連付けられた更なる情報を含み、特定の情報に関連付けられたイベントを処理するために、必要な場合にのみ、起動することができる前述のアレイのパーティションであり得る。図１に更に示すように、ＲＯＢ１４０は更に、イネーブルされたロジック１４６を含む。前述のイネーブルされたロジックは常にアクティブであり得、通常の命令リタイヤメント演算を処理するために使用することができる。対照的に、オンデマンド・ロジック１４８は、障害、割り込み、分岐予測ミス、性能監視及び更新等などの、通常のリタイヤメントを超えるイベントを処理するよう、必要に応じて、イネーブルされるに過ぎないことがあり得る。図１に示すように、ＲＯＢ１４０は、一実施例では、低レベル・キャッシュ（例えば、Ｌ１キャッシュ）であり得るキャッシュ１５０に結合されるが、本発明の範囲はこの点に限定されない。更に、実行ユニット１２０はキャッシュ１５０に直接結合され得る。キャッシュ１５０から、高位キャッシュ、システム・メモリ等とのデータ通信が行われ得る。図１の実施例ではこの高位レベルで示しているが、本発明の範囲はこの点に限定されるものでない。
【００１４】
概括的な動作では、ＲＯＢは、リタイヤメント・ウィンドウのμｏｐｓがＲＯＢアレイの特定の部分の読み取りを必要とするか、又は、（特定のリソースが電力を求め、通常のリタイヤメントを超える演算を行う）特定のロジックをイネーブルすることを必要にするかを判定する。この判定は、割り当て中に真っ先に静的に検出するか、又はＷＢで動的に検出することが可能である。例えば、（割り当てにおける）静的イベント又は（ライトバック（ＷＢ）における）動的イベントが検出されなかった場合、イベント・ロジックを起動させる必要性は存在しない。更に、ＰＭＯＮ算出がアクティブでない場合、この状態は、割り当てで静的に検出することが可能であり、ＰＭＯＮ算出に関連付けられたデータは、リタイヤメントで読み取られず、ＰＭＯＮ値を算出するロジックはイネーブルしなくてよい。
【００１５】
特定の動作が識別され、特にイネーブルされない限り、ＲＯＢは通常、正常なリタイヤメントの主流の活動に注力する。前述の電力アウェア手法は、通常、その必要性が明確にされるまで、イベントがない、正常なμｏｐのリタイヤメントに必要なロジックのみ、及び、他のロジック全ての電源遮断をイネーブルする。
【００１６】
電力アウェアＲＯＢをイネーブルするために、実施例は、アレイなどの種々のリソースを２つの部分（すなわち、全てのリタイヤメントについて読み出される一方のもの、及びオンデマンドのみで読み出される他方のもの（例えば、ＰＭＯＮ動作、割り込み、障害等））に分けることができる。次いで、各アレイのどの部分が性能タイプ（例えば、イベントのみ、ＰＭＯＮのみ等）毎に読み取られるかを識別するためのロジックは、適切なリソースに電力を供給するために使用することができる。更に、その種の動作に関連付けられたタイプがリタイヤすると各部分が特にイネーブルされるように、リタイヤメント・ロジックをパーティション化することが可能である。
【００１７】
通常のケースでは、不確かなイベントが検出されない場合、障害又は例外なしでμｏｐｓを有効にリタイヤさせることが可能である旨を示すための、リタイヤメント・ウィンドウの保証信号は、μｏｐｓが、リタイヤメントに有効であり、フォールト・ロジックによる算出が存在しない場合に直ちにアクティブになり得る。したがって、例えば、１つ又は複数のサイクルにより、更に速く、リリースすることが可能であり、よって、早期保証信号として表し得る。しかし、不確かなイベントが検出された場合、早期保証は、前述の時点で生成されず、その代わりに、μｏｐｓを有効にリタイヤすることが可能でない旨を示すための（遅い）保証信号、又は無効な信号が、オンデマンド・イネーブルされたロジックによって生成される。
【００１８】
次に図２を参照すれば、本発明の一実施例によるリタイヤメント・ロジックのブロック図を示す。図２に示すように、ＲＯＢに対応し得るリタイヤメント・ユニット２００は、複数の部分（すなわち、各リタイヤメント・ウィンドウ中に動作を行うよう常にイネーブルされ得る第１のパーティション、及び関連付けられた種々のイベントを有するリタイヤメントを処理するために必要に応じて断続的にイネーブルされるに過ぎないことがあり得る第２のパーティション）にパーティション化される種々のリソースを有し得る。図２に示すように、リタイヤメント・ユニット２００は割り当てアレイ２１０を含む。割り当てアレイ２１０は、その割り当てでμｏｐに関連付けられた入力情報を受け取り得る。本発明の範囲はこの点で限定されないが、前述の情報は、μｏｐに関連付けられた例外のタイプや、演算のタイプ（分岐、ロード、記憶、浮動小数点（ＦＰ）、又は整数演算）などの、μｏｐに関連付けられた静的情報に対応し得る。図２に示すように、割り当てアレイ２１０は、常にアクティブであるように構成することができる第１のパーティション２１２、及び、必要に応じて（すなわち、オンデマンドで）イネーブルされるに過ぎない第２のパーティション２１４にパーティション化することができる。図示するように、第１のパーティション２１２の相対的なサイズは、第２のパーティション２１４のものよりもずっと少ないことがあり得る。よって、常に電力が供給された部分は、相対的に小さくし、電力消費を削減することが可能である。
【００１９】
この目的で、μｏｐ毎の最小量の情報のみを第１のパーティション２１２に記憶することができる。例えば、μｏｐ毎の単一のビットは、μｏｐの更なる情報が第２のパーティション２１４に存在しているか否かを示すために記憶することができる。よって、μｏｐが、何れのタイプのイベント処理もなしで通常、リタイヤすることが可能なμｏｐであるようにみえる場合、第１のパーティション２１２における関連付けられたビットは第１の状態（例えば、ロジック０）のものであり得る一方、第２の状態（例えば、ロジック１）のものである場合、これは、μｏｐに関連付けられた更なる情報が第２のパーティション２１４に存在している旨を示す。
【００２０】
同様に、ライトバック（ＷＢ）アレイ２２０は、μｏｐｓに関連付けられたライトバックで情報を受け取るよう結合され得る。よって、実行ユニットにおける特定のμｏｐが実行されると、ステータス・フラグや他のそうした情報（障害や他の例外情報を含む）及び、算出された値を含む種々の結果情報をＷＢアレイ２２０に供給することができる。図２に示すように、ＷＢアレイ２２０は、２つの部分に（すなわち、第１のパーティション２２２及び第２のパーティション２２４）に更に、パーティション化される、前述のパーティションは、割り当てアレイ２１０に関して上述したものと同様に情報を記憶することができる。
【００２１】
なお図２を参照すれば、早期ロジック２３０を、アレイ２１０及び２２０の両方に、イネーブル信号をそこから受信するよう結合され得る。更に図２に示すように、早期ロジック２３０は、プロセッサの他の部分から大局イベント情報を受信するよう結合することができる。本発明の範囲はこの点に限定されないが、前述の大局イベントは、割り込み、スヌープ、又は他のイベントに対応し得る。早期ロジック２３０は、この情報を受信し、早期保証信号を生成することが可能であるか否かを判定するよう構成することができる。すなわち、リタイヤメント・ウィンドウに関連付けられた大局イベントが受信されず、リタイヤメント・ウィンドウのμｏｐｓに関連付けられた情報が第２のパーティションに存在していない旨を、アレイ２１０及び２２０のイネーブルされた第１のパーティションからの値が示す場合、これは、処理する対象のイベントがなく、正常なリタイヤメントを行うことが可能であるということを意味する。よって、早期ロジック２３０は、早期保証信号を生成し、これは、以下に更に説明するように、出力ロジック２５０に供給される。このようにして、早期ロジック２３０は実質的に、ＯＲロジックとしてふるまう。
【００２２】
その代わりに、早期ロジック２３０に対する前述の種々の入力の何れかは、早期保証信号を生成することが可能でない旨を示す場合、アレイ２１０及び２２０の第２のパーティションは、前述のアレイからのリタイヤメント・ウィンドウに対応する情報をイベント・ロジック２４０に送出することが可能であるように起動させることができる。これは一般に、リタイヤメント関連動作を行うためのロジックを表す。
【００２３】
よって、イベント・ロジック２４０は、リタイヤメント・ウィンドウに関連付けられたイベント処理を行うことが可能であるように早期保証信号を生成することが可能でない場合にイネーブルすることができる。更に、第２のパーティションに存在している情報に基づいて、非イベント・リタイヤメント・ロジック２４５は、割り当て又はリタイヤメントで受信されたＰＭＯＮ表示、又は予測を誤った分岐による命令ポインタ更新などのリタイヤメント関連動作を行うよう起動することができる。図２の実施例における例証を簡単にするために示していないが、種々の実現形態では、イベント・ロジック２４０はそれ自体を、特定のタイプのリタイヤメント又はイベント処理を処理するための前述のロジックの最小部分のみを起動させることが可能であるように種々の部分にパーティション化することができる。よって、イベント処理を、イベント・ロジック２４０の特定の部分が処理する必要性を情報が示す場合、ロジック２４０のその部分のみに電力を供給することができる。
【００２４】
イベント・ロジック２４０は、出力ロジック２５０に供給される出力を生成することができる。この出力は、リタイヤメント・ウィンドウが有効な場合であるということを算出が示す場合に保証信号に対応し得る。この保証信号は、早期ロジック２３０において生成することが可能な早期保証信号の１つ又は複数のサイクル後に生成される遅い保証信号とみなし得る。イベント・ロジック２４０において行われた算出に基づいて、例えば、障害、割り込み、予測ミス等により、リタイヤメント・ウィンドウを有効にリタイヤさせることが可能でないということが判定された場合、代わりに、無効な信号を出力ロジック２５０に送出することができ、リタイヤメントは、プログラムの順序で動作するが、元のレートとは異なるレートで動作することができる別のロジック（すなわち、通常のリタイヤメント・レートが使用される場合のクロック毎の４μｏｐｓのリタイヤメントに対するクロック毎の単一のμｏｐのリタイヤメント）によって処理することができる。有限状態マシン（ＦＳＭ）であり得る出力ロジック２５０はよって、早期ロジック２３０及びイベント・ロジック２４０から種々の信号を受信することができる。出力ロジック２５０は、プログラムの順序で出力ロジック２５０から出力されるように前述の種々の信号を直列化するよう、ふるまい得る。すなわち、順序はずれの命令の実行でなく、出力ロジック２５０は、より早期のリタイヤメント・ウィンドウのイベント・ロジック２４０からの保証又は無効信号よりも１つ又は複数のサイクル早く受信することができる早期保証信号が、前述の信号の前に出力されないということを確実にし得る。すなわち、信号が早期ロジック２３０から発信されたか、又はイベント・ロジック２４０から発信されたかに係わらず、出力ロジック２５０は、順番にリタイヤメント・ウィンドウ毎に信号を出力する。
【００２５】
種々の実施例では、出力ロジック２５０は、保証信号が生成された場合に、プロセッサのアーキテクチャ状態への、実行結果の有効なコミットメントをイネーブルし、代わりに、無効な信号が生成された場合、種々のプロセッサ・リソースを場合によっては消去することを含む、他の例外処理のために適切な障害を生じさせるよう、制御ロジック等などのプロセッサの種々の他のリソースに結合することができる。
【００２６】
よって、図２に示すように、種々のアレイは、常に読み出される第１のパーティション、及び選択的に読み出される第２のパーティションにパーティション化される。同様に、リタイヤメント・ユニット２００のロジックは、常にアクティブであり、リタイヤメント・ウィンドウに関連付けられたイベントが生じたか否かを判定し、肯定の場合、イネーブすべき、更なるリタイヤメント・ロジックが何であるかを判定するために使用されるロジックに分けることもできる。図２の実施例ではこの特定の実現形態によって示しているが、本発明の範囲はこの点に限定されるものでない。よって、動作の概要では、割り当てで、読み出す対象のパーティションがどれであるか（特に、第１のパーティション２１２）を規定する静的情報を算出し、割り当てアレイ２１０に記憶することが可能である。同様の動作をＷＢ情報に対して行い、ＭＢアレイ２２０に記憶することが可能である（特に、第１のパーティション２２２）。次いで、リタイヤメントで、情報が読み出され、どのアレイを読み出し、どのロジックをイネーブルするかの決定が、早期ロジック２３０によって行われる。更に、割り込み又はスヌープなどの外部イベントも、別のアレイ又はロジックをイネーブルする必要があるかを判定するために、早期ロジック２３０によって検査することも可能である。行う必要のあるタスクが明確にされ、読み出されなかったアレイのうちの１つからの更なる情報を必要とする場合、割り当て又はＷＢアレイの特定の部分が読み出され、このタスクをおこなうための更なるロジックがイネーブルされる。
【００２７】
次に図３を参照すれば、本発明の一実施例による方法のフロー図を示す。図３に示すように、方法３００は、電力アウェアのやり方で命令をリタイヤさせるために使用することができる。方法３００は、命令割り当てで静的情報を受け取り、割り当てバッファの選択された部分において前述の情報を記憶することで始まり得る（ブロック３１０）。例えば、前述の通り、この静的情報は、障害又は例外の可能性が低い旨を示す場合、命令に関連付けられた更なる情報が、割り当てバッファの第２の部分に存在しない旨を示すよう割り当てバッファのより小さい第１の部分において設定することができる。代わりに、更なる処理が、リタイヤメントで（例えば、障害、性能監視、又は他の理由によって）必要である可能性が高い場合、更なる情報が第２のパーティションに存在している旨を示すよう表示子を示し得る。同様な動作が、命令ライトバックで受け取られ、同様に構成されたライトバック・バッファに記憶される動的情報に関して行われ得る（ブロック３２０）。
【００２８】
なお図３を参照すれば、菱形３３０で、特定のリタイヤメント・ウィンドウに関連付けられたバッファの第１の部分における情報が、更なるリタイヤメント又はイベント処理が必要である旨を示すか否かが（リタイヤメントで）判定され得る。すなわち、第１の部分における対応する表示子の状態に基づいて、前述のリタイヤメント処理（例えば、ＩＰ更新若しくは性能監視）又はイベント処理（例えば、種々の算出、障害又は割り込み処理等）が必要であり得るか否かが判定され得る。否定の場合、制御は菱形３４０に移り、菱形３４０では、リタイヤメント・ウィンドウに関連付けられた大局信号が受信されるか否かを判定することができる。前述の通り、前述の大局信号は、割り込み、スヌープ、又は他の大局イベントに対応し得る。前述の信号が受信されなかった場合、例えば、早期ロジックは早期保証信号を出力し得る（ブロック３５０）。
【００２９】
なお図３を参照すれば、代わりに、更なるリタイヤメント又はイベント処理が必要であるか、又は大局信号が受信されているということが判定された場合、制御は、菱形３３０又は３４０からブロック３６０に移り、ブロック３６０では、割り当てバッファ及びライトバック・バッファの更なる部分を起動させることができる。制御は次いでブロック３７０に移り、前述の処理は、イベント・ロジックの１つ又は複数の起動された部分において行うことができる。前述の通り、供給される更なる情報に基づいて、遅い保証信号を生成することが可能であるか否かを判定するよう種々の算出又は他の処理を行うために、種々のリタイヤメント又はイベント・ロジックをイネーブルすることができる。よって、イベント・ロジックの出力は、遅い保証信号又は無効信号であり得る（ブロック３８０）。
【００３０】
図３に更に示すように、ブロック３５０及び３８０から、制御はブロック３９０に移り、ブロック３９０では、リタイヤメント・ユニットからの出力のために種々の信号が直列化され得る。すなわち、リタイヤメント・ウィンドウの直列化を維持するために、後のリタイヤメント・ウィンドウのために生成された早期保証信号は、早期リタイヤメント・ウィンドウに関連付けられた遅い保証又は無効化信号の先に進むことが阻止される。図３の実施例ではこの特定の実現形態で示しているが、本発明の範囲はこの点に限定されるものでない。
【００３１】
例えば、リタイヤメントで特別な処理が必要であると判定された場合、リタイヤさせたμｏｐｓを通常とは異なるやり方で処理することが可能である。８μｏｐｓは通常、イベントが存在していない場合にリタイヤされるものとする。イベントがリタイヤメント・ウィンドウにおいて検出されると、各μｏｐは代わりに、イベント・ロジックの単一の組のみが単一のμｏｐに必要であるように別個にリタイヤさせることが可能である。これは、更なる電力の削減をもたらし得、リタイヤメントが更に速い場合、性能の低減をもたらし得る。しかし、特定のロジックを起動させることに決めた後のリタイヤメント動作は、元のレートとは異なるレートで行われ得る。
【００３２】
もう必要でないイベントの一例は、セットされるスティッキ・ビットであり得る。そういうものとして、再びセットする必要はなく、よって、この重複設定を行うためのイベント・ロジックはイネーブルしなくてよい。前述の別のケースは、それに関連付けられた動作が行われないように十分早く、障害のない動作を識別するために早期信号を加えるというものである。例えば、浮動小数点（ＦＰ）演算は、例外処理ロジックがイネーブルされないほど十分早く、安全であると宣言することが可能である。ＰＭＯＮ処理及びコプロセッサ状態の記憶のためのなどの場合に、ＲＯＢは、保持するデータ・アレイを読み出し、動作に関連付けられたタスクを行うが、障害が検出されなかった場合、障害を求めて検査を行う訳でなく、関連付けられたロジックを起動しない。
【００３３】
実施例は、別々の多くのシステム・タイプで実現することができる。次に図４を参照すれば、本発明の一実施例によるプロセッサのブロック図を示す。図４に示すように、マルチプロセッサ・システム５００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続５５０を介して結合された第１のプロセッサ５７０及び第２のプロセッサ５８０を含む。図４に示すように、プロセッサ５７０及び５８０はそれぞれ、第１のプロセッサ・コア及び第２のプロセッサ・コア（すなわち、プロセッサ・コア５７４ａ及び５７４ｂ、並びに、プロセッサ・コア５８４ａ及び５８４ｂ）を含むマルチコア・プロセッサであり得る。各プロセッサ・コアは、本発明の実施例により、電力アウェア・リタイヤメントをイネーブルするために、図１及び図２に示すようなロジックを含み得る。
【００３４】
なお図４を参照すれば、第１のプロセッサ５７０は、メモリ・コントローラ・ハブ（ＭＣＨ）５７２、並びに、ポイントツーポイント（Ｐ−Ｐ）インタフェース５７６及び５７８を更に含む。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２、並びにＰ−Ｐインタフェース５８６及び５８８を含む。図４に示すように、ＭＣＨ５７２及び５８２は、局所にそれぞれのプロセッサに接続された主メモリ（例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ））の一部分であり得るそれぞれのメモリ、すなわち、メモリ５３２及びメモリ５３４に、プロセッサを結合させる。第１のプロセッサ５７０及び第２のプロセッサ５８０は、Ｐ−Ｐ相互接続５５２及び５５４それぞれを介してチップセット５９０に結合することができる。図４に示すように、チップセット５９０は、Ｐ−Ｐインタフェース５９４及び５９８を含む。
【００３５】
更に、チップセット５９０は、高性能グラフィクス・エンジン５３８とチップセット５９０を結合させるためのインタフェース５９２を含む。同様に、チップセット５９０は、インタフェース５９６を介して第１のバス５１６に結合し得る。図４に示すように、種々のＩ／Ｏ装置５１４は、第１のバス５１６を第２のバス５２０に結合するバス・ブリッジ５１８に沿って第１のバス５１６に結合することができる。  
種々の装置（例えば、キーボード／マウス５２２、通信装置５２６、及びデータ記憶装置５２８（コード５３０を一実施例では含み得るディスク・ドライブや他の大容量記憶装置など）を第２のバス５２０に結合することができる。更に、オーディオＩ／Ｏ５２４を第２のバス５２０に結合することができる。
【００３６】
実施例は、コードで実現することができ、命令を行うためにシステムをプログラムするために使用することが可能な命令を記憶させた記憶媒体上に記憶することができる。記憶媒体は、限定列挙でないが、フロッピー（登録商標）・ディスク。光ディスク、コンパクト・ディスク、リードオンリ・メモリ（ＣＤ−ＲＯＭ）、書換可能コンパクト・ディスク（ＣＤ−ＲＷ）及び光磁気ディスクなどの何れかのタイプのディスク、リードオンリ・メモリ（ＲＯＭ）、ダイナミック・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・セクセス・メモリ（ＳＲＡＭ）などのランダム・アクセス・メモリ（ＲＡＭ）、消去可能プログラマブル・リードオンリ・メモリ（ＥＰＲＯＭ）、フラッシュ・メモリ、電気的消去可能プログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ）などの半導体デバイス、磁気若しくは光カード、又は電子的命令の記憶に適した何れかの他のタイプの媒体を含み得る。
【００３７】
本発明は、限定数の実施例について説明しているが、当業者は、数多くの修正及び変形をそれらから認識するであろう。特許請求の範囲記載の請求項が、本発明の真の趣旨及び範囲の範囲内に収まる前述の修正及び変形全てを包含することが意図されている。  
【図１】
0005474926.tif 000002
【図２】
0005474926.tif 000003
【図３】
0005474926.tif 000004
【図４】
0005474926.tif 000005