(57)【要約】      （修正有）【課題】消費電力削減などのための、命令実行に必要な資源（スタック）の割当を、実行を遅延させずに行う。【解決手段】デコードされた命令の要求に基づきプロセッサー内の多くの資源（スタック）を動的に有効又は無効にする。１つの実施例は、スタックが必要であるか否かを検出するロジックを有し、検出に応じて当該スタックを有効にし、及びもはや必要でない場合に当該スタックを無効にする。【選択図】図２
2008181481.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
スタックが割り当てられた命令により用いられるか否かに基づき前記スタックを有効又は無効にするスタック制御装置、を有する装置。
【請求項２】
前記命令は単一命令多重データ（ＳＩＭＤ）命令であり、及び前記スタックは前記ＳＩＭＤ命令に関連付けられた演算を実行するＳＩＭＤスタックである、請求項１記載の装置。
【請求項３】
前記命令は浮動小数点（ＦＰ）命令であり、及び前記スタックは前記ＦＰ命令に関連付けられた演算を実行するＦＰスタックである、請求項１記載の装置。
【請求項４】
割り当てられた命令に対応する情報を格納し及び前記割り当てられた命令が退役しているか否かを示すリオーダー・バッファー（ＲＯＢ）、を更に有する請求項３記載の装置。
【請求項５】
前記命令に先行する前記ＲＯＢに格納された全ての命令が退役している場合、前記スタック制御装置は前記スタックを無効にする、請求項１記載の装置。
【請求項６】
前記スタック制御装置は、命令が割り当てられているか否かを示す第１のビット、及び命令が退役しているか否かを示す第２のビットを用いる、請求項５記載の装置。
【請求項７】
前記第１のビットは前記ＲＯＢ内の最小時間に割り当てられた命令をインデックス付けする先頭ポインタに対応し、及び前記第２のビットは退役している前記ＲＯＢ内の最長時間に割り当てられた命令をインデックス付けする末端ポインタに対応する、請求項６記載の装置。
【請求項８】
命令を割り当てる割り当てユニット、命令をスケジュールするスケジューラー、及び命令を退役する退役ユニット、を更に有する請求項７記載の装置。
【請求項９】
システムであって、
第１の命令及び第２の命令を格納するメモリー、
レジスタが前記第１及び第２の命令の何れかに割り当てられているか否かを検出し、及びそれに応じて対応する第１又は第２の実行スタックを有効にするか否かを決定するプロセッサー、を有し、前記プロセッサーは前記第１又は第２の命令が退役するのに応じて前記第１又は第２の実行スタックを無効にするか否かを更に決定する、システム。
【請求項１０】
前記プロセッサーは、前記レジスタを前記第１又は第２の命令に割り当てる割り当てユニットを有する、請求項９記載のシステム。
【請求項１１】
前記プロセッサーはスタック制御装置を更に有し、前記スタック制御装置は、前記レジスタが前記第１又は第２の命令の何れかに割り当てられているか否かの表示を前記割り当てユニットから受信し、それに応じて前記第１又は第２の実行スタックが既に有効になっていない場合に、前記第１又は第２の実行スタックを有効にする、請求項１０記載のシステム。
【請求項１２】
前記プロセッサーは、前記第１又は第２の命令を退役する退役ユニットを更に有する、請求項１１記載のシステム。
【請求項１３】
前記割り当てユニットは、前記第１又は第２の命令が退役しているか否かの表示を前記退役ユニットから受信する、請求項１２記載のシステム。
【請求項１４】
前記プロセッサーはリオーダー・バッファーを更に有し、前記リオーダー・バッファーのエントリは、前記割り当てユニットが前記第１及び第２の命令のレジスタを割り当てた順序に対応する、請求項１３記載のシステム。
【請求項１５】
前記第１又は第２の命令が退役されるべきＲＯＢ内のエントリの世代の最後の命令である場合、前記スタック制御装置は前記第１又は第２のスタックを無効にする、請求項１４記載のシステム。
【請求項１６】
前記第１及び第２の命令はそれぞれ単一命令多重データ（ＳＩＭＤ）命令及び浮動小数点（ＦＰ）命令に対応し、前記第１及び第２の実行スタックはそれぞれＳＩＭＤスタック及びＦＰスタックに対応する、請求項１５記載のシステム。
【請求項１７】
方法であって、
第１の命令に少なくとも１つのレジスタを割り当てる段階、
少なくとも１つのレジスタが割り当てられていると示す第１のビットを設定する段階、
リオーダー・バッファー（ＲＯＢ）内に前記少なくとも１つのレジスタの割り当ての表示を格納する段階、
前記第１の命令を退役する段階、及び
前記第１の命令が退役されるべきＲＯＢエントリの第１の世代の最後の命令であるか否かを示す第２のビットを設定する段階、を有する方法。
【請求項１８】
割り当てられている少なくとも１つのレジスタより先に前記第１の命令に対応するスタックが無効にされた場合、前記第１のビットが設定されるのに応じて、前記スタックを有効にする段階、を更に有する請求項１７記載の方法。
【請求項１９】
前記第１のビットが設定されないことに応じて、前記スタックを無効にする段階、を更に有する請求項１７記載の方法。
【請求項２０】
前記ＲＯＢは、割り当てられている少なくとも１つのレジスタに対応するＲＯＢエントリを指す先頭ポインタによりインデックス付けされ、及び前記ＲＯＢは、退役されている命令に対応するＲＯＢエントリを指す末端ポインタによりインデックス付けされる、請求項１７記載の方法。
【請求項２１】
ＲＯＢエントリの前記世代は、前記第２のビットの前の状態と比較した前記第２のビットの現行の状態により示される、請求項２０記載の方法。
【請求項２２】
前記第２のビットの現行の状態及び前記末端ポインタにより示される前のＲＯＢ世代が同一の場合、前記スタックは無効にされる、請求項２１記載の方法。
【請求項２３】
前記第１の命令は単一命令多重データ（ＳＩＭＤ）命令であり、及び前記スタックはＳＩＭＤスタックである、請求項２２記載の方法。
【請求項２４】
前記第１の命令は浮動小数点（ＦＰ）命令であり、及び前記スタックはＦＰスタックである、請求項２２記載の方法。
【請求項２５】
前記第１の命令は整数命令であり、及び前記スタックは整数スタックである、請求項２２記載の方法。
【請求項２６】
プロセッサーであって、
複数のマイクロ演算（ｕｏｐ）に対応する複数のレジスタを割り当てる割り当てユニット、
実行されるべき前記複数のｕｏｐをスケジュールするスケジューラー、
前記複数のｕｏｐに対応する演算を実行する複数のスタック、
前記複数のｕｏｐを退役する退役ユニット、及び
前記複数のレジスタの少なくとも１つが前記複数のｕｏｐの少なくとも１つに割り当てられるのに応じて、前記複数のスタックの少なくとも１つを有効にするスタック制御装置、を有するプロセッサー。
【請求項２７】
前記スタック制御装置は、前記退役ユニットが前記複数のｕｏｐの少なくとも１つを退役するのに応じて、前記複数のスタックの少なくとも１つを無効にする、請求項２６記載のプロセッサー。
【請求項２８】
前記割り当てユニットが前記複数のｕｏｐの少なくとも１つに対応するスタックを割り当てているか否かを示すｖａｌｉｄビットを格納するｖａｌｉｄビット記憶領域、を更に有する請求項２７記載のプロセッサー。
【請求項２９】
少なくとも１つのｕｏｐが前記ＲＯＢ内のエントリの第１の世代に対応するか否かを示すｗｒａｐビットを格納するｗｒａｐビット記憶領域、を更に有する請求項２７記載のプロセッサー。
【請求項３０】
前記スタック制御装置は、前記ｗｒａｐビットの第１の状態が前記ｗｒａｐビットの前の状態と等しいか否かを決定するロジックを有し、及び前記ｖａｌｉｄビットが設定された場合、前記スタック制御装置は前記少なくとも１つのｕｏｐに対応するスタックを無効にする、請求項２９記載のプロセッサー。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータの使用及びコンピューター・ネットワークの分野に関し、より詳細には必要に応じた処理資源の割り当ての分野に関する。
【背景技術】
【０００２】
マイクロプロセッサーは、種々のタスクを実行する多くの回路、ロジック及び関数ユニットを有する。より多くの機能がマイクロプロセッサーに組み込まれるにつれ、電力消費は増大し得る。従って、プロセッサー内の種々の回路又はロジックを使用されない時など時々選択的に無効にすることは有利である。残念ながら、プロセッサー内の種々の回路又はロジックを有効にする又は無効にすることは、時間を要し、プロセッサーの性能に影響し得る。従って、いくつかのプロセッサーでは、回路又はロジックを無効にするか否かの選択は、当該回路又はロジックがプロセッサーの性能に影響を与えずに如何に迅速に再び有効にされ得るかに依存し得る。
【０００３】
例えば、特定機能ユニット（例えば浮動小数点機能ユニット）のような特定の回路は、ある時間期間の間に使用されないが、有効にされたままであり、それにより不要な電力を引き出し得る。図１は、例えば、従来のプロセッサー内のロジックのセットを図示し、図示されない種々の他のロジックにより用いられるいくつかの外部スタックを有する。特に、図１は、整数（ＩＮＴ）スタック、単一命令多重データ（ＳＩＭＤ）スタック、及び浮動小数点（ＦＰ）スタックを図示する。これら各スタックは、それぞれ整数、ＳＩＭＤ、及び浮動小数点演算を実行するために用いられて良い。スタックは、対応する機能ユニットのデータを保持するレジスタ・ファイルを有しても有さなくても良い。例えば、レジスタは、割り当てユニットにより命令（又は、マイクロ演算若しくは「ｕｏｐ」のようなサブ命令）に割り当てられ、そしてスケジューラーにより実行のためにスケジュールされて良い。スケジューラーは、オペランド・データを読み出し、演算の種類に依存してスタックの１つで実行して良い。命令又はｕｏｐは、実行された後、退役され及び退役ユニットによりプロセッサー状態コンテキストに委託されて良い。
【０００４】
上述の処理を通じ、１又は複数のＩＮＴ、ＳＩＭＤ及びＦＰスタックは、有効にされ、それにより全てのスタックが特定の命令又はｕｏｐの実行を完了するために実際に使用されていなくても電力を引き出し得る。従って、命令又はｕｏｐが実行している間、命令又はｕｏｐの実行を完了するために使用されないが有効にされているスタックにより不要な電力が消費され得る。しかしながら、後続の命令又はｕｏｐが無効にされたスタックの使用を必要とする場合には、如何なるスタックを無効にすることも性能低下をもたらし得る。何故なら無効にされたスタックは、後続の命令又はｕｏｐにより使用されるために後続の命令又はｕｏｐの実行を遅延することなく十分速く再び有効にされ得ないからである。
【０００５】
本発明は、例を用いて図示されるが、添付の図面に限定されない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本開示は、必要に応じた処理資源の割り当てを提供する。
【課題を解決するための手段】
【０００７】
本発明の実施例はプロセッサー及びコンピューター・システムに関する。より詳細には、本発明の少なくとも１つの実施例は、種々の処理資源を当該資源の必要に基づき効率的に割り当て及び割り当て解除する技術に関する。
【０００８】
本発明のいくつかの実施例は、プロセッサー内の１又は複数の資源が命令若しくはｕｏｐ（以後、一般的に「命令」として参照する）のような演算を完了するために又は「オン・デマンド」で必要か否かに基づき、プロセッサー性能を有意に低下することなく、当該資源を有効又は無効にする。本発明の少なくとも１つの実施例は、命令の実行が１又は複数の実行構造を使用しない場合に、当該命令により使用される（１又は複数の実行ロジック又は資源を含む）実行スタックのような１又は複数の実行構造体を無効にし、及び後続の命令の実行がスタックを使用する場合に、当該後続の命令が有意な時間の間、実行されるのを遅延させられることなく、１又は複数のスタックを再び有効にする。
【０００９】
特に、ある実施例は、処理されている命令がＳＩＭＤ及び／又はＦＰ演算に対応するか否かに依存してＳＩＭＤ及び／又はＦＰスタックを有効又は無効にする。更に、ある実施例は、プロセッサー・パイプラインのある時点で命令がＳＩＭＤ及び／又はＦＰ演算に対応するか否かの検出を実行する。従って命令は検出され、そして命令の実行が有意に遅延されることなく対応するスタックは有効にされる。
【発明を実施するための最良の形態】
【００１０】
図２は、本発明のある実施例によるロジックのセットを示す。図２では、レジスタは命令による使用のために割り当てユニット２０１により割り当てられる。そして命令はスケジューリング・ユニット２０５により実行のためにスケジュールされる。更に、図２のロジックは、命令と関連付けられたオペコードに従い命令を実行するための３個の実行構造体（例えば、スタック）を示す。ある実施例では、実行構造体は整数スタック２１０、ＳＩＭＤスタック２１１、及びＦＰスタック２１２に対応する。他の実施例では、より少数若しくは多数の、又は異なる種類のスタックが存在して良い。有利なことに、本発明のある実施例では、図２の実行構造体の全てが所与の命令を実行するために必要でなく、及び従って無効にされて良い。図２のロジックはまた、１又は複数の命令の実行により生成された情報をプロセッサー状態へ委託するための及び／又はデータをコンピューター・システム内の他の装置に利用可能にするための退役ユニット２２５を示す。
【００１１】
命令の実行が図２に示された１又は複数のスタックを使用しないか否かを検出するため、スタック制御装置２２０は、命令の種類を検出し、そして無効状態にあって良い１又は複数のスタックを有効にして良い。同様に、スタック制御装置２２０は命令が退役された時を検出して良い。従って１又は複数のスタックは、１又は複数のスタックを使用した命令を実行した後に無効にされて良い。有意な遅延を有さず時間内に命令を実行させるよう、無効状態にある１又は複数のスタックを信号２２３及び２２４を介し有効にするため、スタック制御装置２２０は割り当てユニット２０１から、無効スタックが割り当てられている命令により使用されるか否かをスタック制御装置に知らせる信号２２１を受信する。同様に、ある実施例では、スタック制御装置は退役ユニットから信号２０２を受信し、有効状態に対応する命令が退役された時を決定する。従ってスタック制御装置２２０は信号２２３及び２２４を介し適切なスタックを無効にして良い。スタック制御装置２２０は、命令のレジスタの割り当て中に生成された情報から命令が特定のスタックを使用するか否かを検出するので、対応するスタックは、有意な遅延を有さず命令の処理を続けるのに十分間に合うよう有効にされて良い。
【００１２】
ある実施例では、信号２２１は割り当てられている命令の種類を示す信号である。例えば、ある実施例では、信号２２１は割り当てられている命令がＳＩＭＤ演算又はＦＰ演算又は両方に対応するか否かを示して良い。ある実施例では、命令がＳＩＭＤ又はＦＰ演算又は両方に対応するか否かは、命令内の種々のフィールドから決定されて良い。いくつかの実施例では、他の情報はスタック制御装置へ通信されて良く、割り当てられている命令が整数演算又は他の種類の演算に対応するか否かを有する。当該情報から、検出器はＩＮＴスタックのような対応する処理資源を有効にするか否かを決定して良い。
【００１３】
ある実施例では、処理されるべき命令の種類に基づき有効又は無効にされる各スタック又は他の資源は、２ビットに対応する。当該２ビットの状態はスタック制御装置２２０により制御される。例えば、図２に示される実施例では、スタック制御装置はＳＩＭＤスタック用の２ビット（例えば、ＳＩＭＤ．ｖａｌｉｄビット及びＳＩＭＤ．ｗｒａｐビット）、及びＦＰスタック用の２ビット（例えば、ＦＰ．ｖａｌｉｄビット及びＦＰ．ｗｒａｐビット）を保持又は操作して良い。
【００１４】
ある実施例では、第１の状態（例えば、論理「１」）であるＳＩＭＤ．ｖａｌｉｄビットは、割り当てられている命令がＳＩＭＤ演算に対応すると示して良い。この場合、スタック制御装置はＳＩＭＤスタックを有効にして良い。同様に、第１の状態（例えば、論理「１」）であるＦＰ．ｖａｌｉｄビットは、割り当てられている命令がＦＰ演算に対応すると示して良い。この場合、スタック制御装置はＦＰスタックを有効にして良い。ある実施例では、第１の状態（例えば、論理「１」）であるＳＩＭＤ．ｖａｌｉｄビット及びＦＰ．ｖａｌｉｄビットは、割り当てられている命令がＳＩＭＤ  ＦＰ演算に対応すると示して良い。この場合、スタック制御装置はＳＩＭＤスタック及びＦＰスタックを有効にして良い。
【００１５】
反対に、反対の論理状態（例えば、「０」）であるＳＩＭＤ．ｖａｌｉｄビット及び／又はＦＰ．ｖａｌｉｄビットは、スタック制御装置に、対応するスタックを有効にさせなくて良い。ある実施例では、ＳＩＭＤ又はＦＰスタックの対応するビットが、割り当てられている命令は当該スタックの１つ又は両方を使用する演算に対応しないと示す場合、当該スタックは命令の割り当て前と同一状態（有効又は無効）のままで良い。他の実施例では、スタックが有効状態にある場合、スタック制御装置は、ＳＩＭＤ．ｖａｌｉｄ及びＦＰ．ｖａｌｉｄビットの状態に依存して割り当てられている命令により使用されないスタックを無効にして良い。
【００１６】
ＳＩＭＤ．ｖａｌｉｄ及びＦＰ．ｖａｌｉｄビットに加え、スタック制御装置２２０は、２以上のビットを保持し、ＳＩＭＤ又はＦＰ命令がリオーダー・バッファー（ＲＯＢ）２２６に格納されて良い２つの世代の１つを示して良い。ある実施例では、ＲＯＢは、命令が割り当てられた順序で書き込まれる順次書き込み構造体であって良い。命令がＲＯＢから退役されると、対応するエントリはそれらエントリが割り当てられた順序で割り当て解除されて良い。
【００１７】
ある実施例では、書き込まれるべきＲＯＢエントリは、各ＲＯＢ書き込み動作の後にインクリメントされ書き込まれるべき次のエントリを指す書き込みポインタ又は「先頭ポインタ」により追跡され得る。同様に、退役されるべきＲＯＢエントリは、各退役の後にインクリメントされ退役されるべき次のＲＯＢエントリを指す退役ポインタ又は「末端ポインタ」により追跡され得る。
【００１８】
用語「世代」は、末端ポインタによるＲＯＢの完全なトラバースを参照して良く、その間に全てのＲＯＢエントリが退役され及び末端ポインタがＲＯＢの始めに戻る。従って、末端ポインタがＲＯＢの始めに戻る又は巻戻る時、ＲＯＢ世代は次の世代に切り替わったと言える。同様に、世代は先頭ポインタの観点から定義され得る。つまり全てのＲＯＢエントリが書き込まれ及び先頭ポインタがＲＯＢの始めに戻る時、世代は終了する。ＲＯＢエントリは書き込まれる前に退役されないので、先頭ポインタは末端ポインタの前に残っている。従ってある実施例では、末端ポインタの前に、先頭ポインタは新たなＲＯＢ世代に入る。
【００１９】
例えば、ある実施例では、ＲＯＢは、図２の割り当てユニット２０１により割り当てられたＳＩＭＤ及び／又はＦＰ命令のそれぞれに対応するエントリを有して良い。更に、各ＲＯＢエントリ内のフィールド（例えば、ビット記憶領域）は、対応するＳＩＭＤ又はＦＰ命令が退役ユニット２２５により退役された時に設定されて良い。ある実施例では、ＲＯＢは、最小時間に割り当てられたＳＩＭＤ又はＦＰ命令を示す先頭ポインタ及び退役されている最長時間に割り当てられたＳＩＭＤ又はＦＰ命令を示す末端ポインタを有するポインタによりインデックス付けされて良い。
【００２０】
ある実施例では、ＲＯＢは２つの世代間で切り替わって良い。従って、末端又は先頭ポインタにより示されたＲＯＢの現行世代は、末端又は先頭ポインタ自体に関連付けられたビットで追跡され得る。例えば、対応するポインタ（末端又は先頭）がそれぞれＲＯＢ世代０からＲＯＢ世代１へ遷移し、そしてＲＯＢ世代０へ戻った場合、世代ビットは「０」から「１」状態へ切り替わりそして０状態へ戻って良い。
【００２１】
ある実施例では、スタック制御装置２２０は、ＳＩＭＤ．ｗｒａｐ及びＦＰ．ｗｒａｐのような少なくとも２つのビットを保持して良い。ＳＩＭＤ．ｗｒａｐ及びＦＰ．ｗｒａｐは、最後のＳＩＭＤ又はＦＰ命令がプロセッサーから退役され、従ってＳＩＭＤ又はＦＰスタックを使用する如何なる命令もプロセッサー内に残っていない時を検出するために使用されて良い。ある実施例では、この情報は、ＳＩＭＤ又はＦＰスタックの電源を切るために、つまりＳＩＭＤ．ｖａｌｉｄ又はＦＰ．ｖａｌｉｄを０に設定するために使用され得る。
【００２２】
例えば、ＳＩＭＤ命令が割り当てられ及び割り当て装置２０１が信号２２１をスタック制御装置２２０へ送出する場合、ＳＩＭＤ．ｗｒａｐビットは先頭ポインタのｗｒａｐビットの現行値に設定され、最後のＳＩＭＤ命令により書き込まれたＲＯＢエントリの世代を示す。末端ポインタが新たな世代に巻戻る場合、末端ポインタの前の世代は、信号２０２を介しスタック制御装置２２０へ送出される。前のＲＯＢ世代は、ＳＩＭＤ．ｗｒａｐと比較される。一致した場合、これは、最後のＳＩＭＤ  ｕｏｐを有するＲＯＢ世代が退役され及び従ってもはやＳＩＭＤ  ｕｏｐがプロセッサー内に存在しないことを示す。従って、ＳＩＭＤスタックは、例えばＳＩＭＤ．ｖａｌｉｄを０に設定することにより電源を切られ得る。
【００２３】
同様な動作は、ある実施例ではＦＰ．ｗｒａｐビットに関しＦＰスタックにも適用されて良い。更にいくつかの実施例では、上述の動作は、メモリー・スタック又は各命令の間に常に使用されなくて良い他の資源を含むプロセッサー内の他の資源にも適用されて良い。
【００２４】
図３は、本発明のある実施例に従い使用されて良いＲＯＢ並びに対応する先頭及び末端ポインタを示す。ＲＯＢ３０１は、ある実施例では１２８エントリ循環キューとして示され、当該キューのエントリはエントリ０からエントリ１２７まで満たされる。同様に、先頭ポインタ３０５及び末端ポインタ３１０は、エントリ０からエントリ１２７をトラバースし、ＲＯＢ内の最後のエントリに達した後にエントリ０に巻戻る。他の実施例では、ＲＯＢは「最上部」から「最下部」へではなく「最下部」から「最上部」へ満たされて良く、及びそれに従い先頭及び末端ポインタはＲＯＢをトラバースして良い。
【００２５】
ある実施例では、先頭及び末端ポインタは、対応するスタックが有効又は無効にされるべきか否かを決定するため、ＳＩＭＤ．ｖａｌｉｄ、ＦＰ．ｖａｌｉｄ、ＳＩＭＤ．ｗｒａｐ、及びＦＰ．ｗｒａｐビットと一緒に用いられる。例えば、ＳＩＭＤ命令が割り当てられ、及び対応するエントリ３１５がＲＯＢに格納された場合、先頭ポインタ３０５は、適切なバッファ・エントリをポインタの適切なフィールドに格納することにより当該エントリを指して良い。同様に、末端ポインタは、退役された最も古いエントリ３２０が見付かるまで最上部から最下部へＲＯＢをトラバースして良い。先頭及び末端ポインタにより指された各エントリの世代を追跡するために、ＳＩＭＤ．ｗｒａｐビットのようなビットは、他の情報とともに図２のスタック制御装置２２０により使用されて良い。
【００２６】
例えば、ＳＩＭＤ命令が退役され、及びＲＯＢの末端ポインタが巻戻った場合、割り当てられるべき最後のＳＩＭＤ命令のｗｒａｐビットは、退役により生じた最小時間ＳＩＭＤ．ｗｒａｐ状態と比較される。それらが同一の場合、割り当てられた最後のＳＩＭＤ命令が、完全に退役されているＲＯＢトラバースの前の「世代」に相当した（つまり、ｗｒａｐビット状態が変化しているので、前のｗｒａｐビット状態は前のトラバース世代の命令に属する）ことを示して良い。現行のＳＩＭＤ．ｗｒａｐビッ状態と等しいト前のＳＩＭＤ．ｗｒａｐビット状態は、ＲＯＢ内の最後のＳＩＭＤ命令が退役されていること、及び如何なるＳＩＭＤ命令も割り当てられていない又は実行されていないことを示す。従って、ＳＩＭＤ．ｖａｌｉｄビットは、スタック制御装置によりクリアされて良く、及びＳＩＭＤスタックは無効にされる。ＦＰスタックを制御するために対応するＦＰ．ｖａｌｉｄ及びＦＰ．ｗｒａｐビットを使用するＦＰ命令も同様の技術に従う。他のスタック又はＩＮＴスタック制御のようなプロセッサー資源は、上述の技術を用いて制御されて良い。
【００２７】
図４は、本発明の少なくとも１つの実施例のいくつかの態様を実行するために使用されて良い動作を説明するフロー図である。フロー図はＳＩＭＤスタックを制御する動作を示すが、図４に関して記載される動作は、ＦＰスタック、ＩＮＴスタック、又は他のプロセッサー資源を制御するために用いられても良い。動作４０１で、ＳＩＭＤ命令が割り当てられる。そして動作４０５で、対応するＳＩＭＤ．ｖａｌｉｄビットが（既に設定されていないならば）設定され、及び対応するＳＩＭＤ．ｗｒａｐビットは、ＲＯＢ先頭ポインタにより示される世代に基づき状態を変化する。ある実施例では、（既に設定されていない場合）ＳＩＭＤ．ｖａｌｉｄを設定すると、有意な遅延を生じることなくＳＩＭＤ命令がＳＩＭＤスタックへのアクセスに間に合うよう、ＳＩＭＤスタックが有効にされる。動作４１０でＲＯＢ末端ポインタが巻戻ると、動作４１５でＲＯＢ末端ポインタがＲＯＢの始めに巻戻った場合、動作４２０でＲＯＢ末端ポインタにより示される世代は状態を変化する。動作４２５で、ＲＯＢ末端ポインタにより示される前の世代は、ＳＩＭＤ．ｗｒａｐ状態と比較される。等しい場合、動作４３０でＳＩＭＤ．ｖａｌｉｄビットはクリアされ、ＳＩＭＤスタックは無効にされる。ある実施例では、ＲＯＢ末端ポインタの世代は、末端ポインタに関連付けられたビット又はビットのグループにより示されて良い。それらが等しくない場合、動作４３５で、現行のＳＩＭＤ．ｖａｌｉｄ状態は維持される。
【００２８】
少なくとも１つの実施例では、ＳＩＭＤ．ｗｒａｐビットは、（例えば、「ＳＩＭＤ．ｒｏｂｉｄ」ビットを介し）スタック制御装置に記録されるべき最後のＳＩＭＤ命令又はｕｏｐのＲＯＢエントリの表示を格納することにより置き換えられて良い。ある実施例では、ＳＩＭＤ命令又はｕｏｐがＲＯＢに割り当てられる時は常に、例えばＳＩＭＤ．ｒｏｂｉｄは先頭ポインタと同様に当該命令へのポインタへ更新される。命令又はｕｏｐが退役する場合、退役ＲＯＢ識別子は（末端ポインタと同様に）、格納されたＳＩＭＤ．ｒｏｂｉｄと比較されて良い。そしてそれらが等しい場合、対応するスタックの電源を切るためにＳＩＭＤ．ｖａｌｉｄビットはクリアされ得る。
【００２９】
図５は、本発明のある実施例が使用されて良いフロント・サイド・バス（ＦＳＢ）・コンピューター・システムを示す。プロセッサー５０５は、レベル１（Ｌ１）キャッシュ・メモリー５１０及びメイン・メモリー５１５からデータにアクセスする。本発明の他の実施例では、キャッシュ・メモリーはレベル２（Ｌ２）キャッシュ・メモリー又はコンピューター・システム・メモリー階層内の他のメモリーであって良い。更に、いくつかの実施例では、図５のコンピューター・システムはＬ１キャッシュ及びＬ２キャッシュの両方を有して良い。
【００３０】
図５のプロセッサー内には、機械状態のための記憶領域５０６が図示される。ある実施例では、記憶領域はレジスタのセットであって良い。他の実施例では、記憶領域は他のメモリー構造であって良い。プロセッサーは如何なる数のプロセッサー・コアであっても良い。本発明の他の実施例は、しかしながら、別個のバス・エージェントのようなシステム内の他の装置、又はシステム全体に分散されたハードウェア、ソフトウェア、又はそれらの組み合わせに実施されて良い。
【００３１】
メイン・メモリーは、ダイナミック・ランダム・アクセス・メモリー（ＤＲＡＭ）、ハード・ディスク・ドライブ（ＨＤＤ）５２０のような種々のメモリー資源、又はネットワーク・インターフェース５３０を介しコンピューター・システムから遠隔に設置された、種々の記憶装置及び技術を含むメモリー資源に実施されて良い。キャッシュ・メモリーは、プロセッサー内又はプロセッサーのローカル・バス５０７のようなプロセッサー近傍の何れかに設置されて良い。
【００３２】
更に、キャッシュ・メモリーは、６トランジスター（６Ｔ）セルのような比較的高速のメモリー・セル、又は同等の若しくはより速いアクセス速度の他のメモリー・セルを有して良い。図５のコンピューター・システムは、マイクロプロセッサーのようなバス・エージェントのポイント・ツー・ポイント（ＰｔＰ）ネットワークであって良い。バス・エージェントは、各エージェント専用のバス信号を介しＰｔＰネットワークで通信する。図６は、ポイント・ツー・ポイント（ＰｔＰ）構成に配置されたコンピューター・システムを示す。特に、図６は、プロセッサー、メモリー、及び入力／出力装置が多数のポイント・ツー・ポイント・インターフェースにより相互接続されるシステムを示す。
【００３３】
図６のシステムはまた、複数のプロセッサーを有する。明確にするため、複数のプロセッサーの内、２個のプロセッサー６７０、６８０のみが示される。プロセッサー６７０、６８０はそれぞれ、メモリー６２、６４と接続するため、ローカル・メモリー制御ハブ（ＭＣＨ）６７２、６８２を有する。プロセッサー６７０、６８０は、ポイント・ツー・ポイント（ＰｔＰ）インターフェース６５０を介し、ＰｔＰインターフェース回路６７８、６８８を用いデータを交換して良い。プロセッサー６７０、６８０はそれぞれ、個々のＰｔＰインターフェース６５２、６５４を介し、ポイント・ツー・ポイント・インターフェース回路６７６、６９４、６８６、６９８を用いチップ・セット６９０とデータを交換して良い。チップ・セット６９０はまた、高性能グラフィック・インターフェース６３９を介し、高性能グラフィック回路６３８とデータを交換して良い。本発明の実施例は、如何なる数のプロセッサー・コアを有する如何なるプロセッサー内にも、又は図６の各ＰｔＰバス・エージェント内にも設置されて良い。
【００３４】
本発明の他の実施例は、しかしながら、他の回路、ロジック単位、又は図６のシステム内の装置に存在して良い。更に、本発明の他の実施例は、複数の回路、ロジック単位、又は図６に示された装置内に分配されて良い。
【００３５】
本願明細書で参照されたプロセッサー、又は本発明の実施例により設計された如何なる他の構成要素は、製造から製作のシミュレーションまで種々の段階で設計されて良い。設計を表すデータは、多くの方法で設計を表して良い。第一に、シミュレーションで有用なように、ハードウェアはハードウェア記述言語又は別の機能記述言語を用い表されて良い。更に又は代案として、ロジック及び／又はトランジスター・ゲートを有する回路レベルモデルは、設計工程のいくつかの段階で生成されて良い。更に、多くの設計は、いくつかの段階で、種々の装置の物理的配置を表すデータでモデル化され得るレベルに達する。従来の半導体製造技術が用いられる場合には、装置配置モデルを表すデータは、修正機回路を製造するために用いられるマスクの異なるマスク・レイヤーにおける種々の特徴の存在又は不在を特定するデータであって良い。
【００３６】
如何なる設計の表現でも、データは如何なる機械可読媒体の形式で格納されて良い。変調された又は情報を送信するために生成された光又は電波、メモリー、又はディスクのような磁気若しくは光記憶媒体は、機械可読媒体であって良い。これらの如何なる媒体も、設計又は誤り回復ルーチン内の命令のような本発明の実施例で用いられる他の情報を「伝達する」又は「示す」。情報を示す又は伝達する電気搬送波が送信される場合、電気信号の複製、バッファリング、又は再送信の範囲で、新たな複製が作成される。従って、通信プロバイダー又はネットワーク・プロバイダーの動作は、本発明の技術を実施する項目、例えば搬送波の複製を作成することであって良い。
【００３７】
従って、読み出し又は格納のようなメモリー・アクセスの舵取りをする技術が公開される。特定の実施例が記載され、添付の図面に示されたが、理解されるべき点は、当該実施例が単に説明のためであり広範な本発明を制限しないこと、及び本開示の獲得により種々の他の変更が当業者に明らかであるので、示され記載された特定の構成及び配置に本発明が限定されないことである。このような技術の分野では、成長が早く更なる進歩は容易に予測できない。開示された実施例は、技術の進歩の助けを得て、本開示の原則又は特許請求の範囲から逸脱することなく直ちに構成及び細部を変更可能である。
【００３８】
本発明の１又は複数の実施例の種々の態様は、本発明の１又は複数の実施例が用いられて良いプロセッサー又はコンピューター・システムの公表において記載、議論又はこれを参照して良い。このような公表は、ニュース、雑誌、広告、又は他の紙面若しくは有形的表現媒体を含んで良いがこれらに限定されない。特に、本発明の１又は複数の実施例の種々の態様は、ウェブサイト又はポップアップを生成するプログラムを収容するサーバーが米国又はその領土に設置されているか否かに関わらず、ウェブサイト、「ポップアップ」広告、又は他のウェブに基づく媒体を介しインターネットで公表されて良い。
【図面の簡単な説明】
【００３９】
【図１】従来の、プロセッサー内の種々の演算を実行するために用いられるロジックのセットを示す。
【図２】本発明による、プロセッサー内の種々の演算を実行するロジックのセットを示す。
【図３】本発明の１又は複数の実施例とともに使用されて良いリオーダー・バッファ（ＲＯＢ）を示す。
【図４】本発明のある実施例の少なくともいくつかの態様を実行するために使用されて良い動作を説明するフロー図である。
【図５】本発明の少なくとも１つの実施例が使用されて良い共有バス・コンピューター・システムを示す。
【図６】本発明の少なくとも１つの実施例が使用されて良いポイント・ツー・ポイント・バス・コンピューター・システムを示す。
【符号の説明】
【００４０】
２０１  割り当てユニット
２０５  スケジューラー
２１０  整数スタック
２１１  ＳＩＭＤスタック
２１２  ＦＰスタック
２２０  スタック制御装置
２２１、２０２、２２３、２２４  信号
２２５  退役ユニット
２２６、３０１  リオーダー・バッファー（ＲＯＢ）
３０５  先頭ポインタ
３１０  末端ポインタ
３１５、３２０  エントリ
５０５  プロセッサー
５０６  記憶領域
５１０  キャッシュ・メモリー
５１５  メイン・メモリー
５２０  ＨＤＤ
５３０  インターフェース
６２、６４  メモリー
６１４  Ｉ／Ｏ装置
６１８  バス・ブリッジ
６２２  キーボード／マウス
６２４  音声Ｉ／Ｏ
６２６  通信装置
６２８  データ記憶装置
６３０  コード
６３８  高性能グラフィック回路
６３９  高性能グラフィック・インターフェース
６５０、６５２、６５４  ポイント・ツー・ポイント（ＰｔＰ）インターフェース
６７０、６８０  プロセッサー
６７６、６７８、６８６、６８８、６９４、６９８  ＰｔＰインターフェース回路
６７２、６８２  ローカル・メモリー制御ハブ
６７４、６８４  プロセッサー・コア
６９０  チップ・セット
【図１】
2008181481.tif 000003
【図２】
2008181481.tif 000004
【図３】
2008181481.tif 000005
【図４】
2008181481.tif 000006
【図５】
2008181481.tif 000007
【図６】
2008181481.tif 000008
【外国語明細書】
2008181481.tif 000009
2008181481.tif 000010
2008181481.tif 000011
2008181481.tif 000012
2008181481.tif 000013
2008181481.tif 000014
2008181481.tif 000015
2008181481.tif 000016
2008181481.tif 000017
2008181481.tif 000018
2008181481.tif 000019
2008181481.tif 000020
2008181481.tif 000021
2008181481.tif 000022
2008181481.tif 000023
2008181481.tif 000024
2008181481.tif 000025
2008181481.tif 000026
2008181481.tif 000027
2008181481.tif 000028
2008181481.tif 000029
2008181481.tif 000030