(57)【特許請求の範囲】
【請求項１】
それぞれが使用中であるかどうかについての状態指標を伝えるように構成された１つ以上の電力管理可能なグループと、電力管理ユニットとを備える装置であって、
前記電力管理ユニットは、
到着する命令を受け取り、
前記１つ以上の電力管理可能なグループから前記状態指標を受け取り、
それぞれが前記１つ以上の電力管理可能なグループの少なくとも１つのパワーグループに対応する複数のカウントを保持し、
受信クロック信号の各サイクルで前記複数のカウントのそれぞれのうち前記命令が検出されなかった現在使用中ではないパワーグループに対応する所定のカウントを更新し、
前記複数のカウントのうち前記命令が検出されたパワーグループに対応する特定のカウントを所定値にリセットし、
第１のパワーグループに対応するカウントが閾値に達していないことを検出することに応じて、前記第１のパワーグループが低電力状態に移行するのを阻止する指標を伝えるように構成され、
前記阻止する指標がなければ前記第１のパワーグループが低電力状態に自動的に移行し、
前記命令は、どのパワーグループが前記命令の実行のために必要とされるかを識別するパワーコードに関連しており、前記パワーコードはマッピング方法を用いて対応する命令に関連付けられる、装置。
【請求項２】
実行の命令がスケジューリングされたことの検出には、命令が到着したことおよび／または待機中であることの検出が含まれる請求項１に記載の装置。
【請求項３】
前記電力管理ユニットは、前記第１のパワーグループを給電停止状態に移行させる給電停止指標を伝えるように更に構成されている請求項１に記載の装置。
【請求項４】
前記給電停止指標は、前記第１のパワーグループへのクロック供給を無効にするように更に構成されている請求項３に記載の装置。
【請求項５】
前記第１のパワーグループは、給電を停止できる第１の回路部分と、給電を停止できない第２の回路部分と、を有する請求項３に記載の装置。
【請求項６】
前記第１のパワーグループの給電を停止できるとの指標を受け取ると、前記第１の部分が給電停止状態に移行し、前記第２の部分が給電停止状態ではない低下電力状態に移行しうる請求項５に記載の装置。
【請求項７】
前記命令には、前記命令の実行のために必要とされるパワーグループを特定するパワーコードフィールドが含まれる請求項１に記載の装置。
【請求項８】
前記第１のパワーグループは、前記電力管理ユニットに状態標識を伝えるように構成されており、前記状態標識は、アサートされると、前記第１のパワーグループが給電停止状態に移行するのを阻止する請求項３に記載の装置。
【請求項９】
前記第１のパワーグループは、前記指標がなければ、自動的に給電停止状態に移行するように構成されている請求項１に記載の装置。
【請求項１０】
電気装置における電力の管理方法であって、
到着する命令を受け取るステップと、
１つ以上の電力管理可能なグループから状態指標を受け取るステップと、
それぞれが前記１つ以上の電力管理可能なグループの少なくとも１つのパワーグループに対応する複数のカウントを保持するステップと、
受信クロック信号の各サイクルで前記複数のカウントのそれぞれのうち前記命令が検出されなかった現在使用中ではないパワーグループに対応する所定のカウントを更新するステップと、
前記複数のカウントのうち前記命令が検出されたパワーグループに対応する特定のカウントを所定値にリセットするステップと、
第１のパワーグループに対応するカウントが閾値に達していないことを検出することに応じて、前記第１のパワーグループが低電力状態に移行するのを阻止する指標を伝えるステップと、を含み、
前記阻止する指標がなければ前記第１のパワーグループが低電力状態に自動的に移行し、
前記命令は、どのパワーグループが前記命令の実行のために必要とされるかを識別するパワーコードに関連しており、前記パワーコードはマッピング方法を用いて対応する命令に関連付けられる、方法。
【請求項１１】
前記第１のパワーグループを給電停止状態に移行させる指標を伝えるステップを更に含む請求項１０に記載の方法。
【請求項１２】
前記第１のパワーグループは、給電を停止できる第１の回路部分と、給電を停止できない第２の回路部分と、を有し、前記方法は、前記第１のパワーグループの給電を停止できるとの指標を受け取ると、前記第１の部分を給電停止状態に移行させ、前記第２の部分を給電停止状態ではない電力低下状態に移行させるステップを更に含む請求項１１に記載の方法。
【請求項１３】
前記命令には、前記命令の実行のために必要とされるパワーグループを特定するパワーコードフィールドが含まれる請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサおよびコンピュータシステムの分野に関し、より詳細には、プロセッサおよびその他のデバイスにおける電力管理に関する。
【背景技術】
【０００２】
コンピューティングデバイスやその他のデバイスの処理性能が注目を集めているなか、消費電力の話題が一層重要となっている。概して、コンピューティングデバイスをより小型化し、可搬性を更に高めることが期待されている。デバイスが、ポータブルコンピュータ、携帯電話、携帯情報端末（ＰＤＡ）などのいずれであるかを問わず、バッテリなどの携帯用電源が広く使用されるようになっている。このような電源は、その性質上、制約されていることを考えると、利用可能な電力の効率が高いことが極めて重要である。この結果、このようなデバイスの電力管理技術の範囲が一層広がっている。更に、プロセッサやその他の演算素子のゲート寸法の微細化が一層進んでいることから、近いうちに、静的な消費電力が動的な消費電力と等しくなることが予想される。このため、静的な消費電力は、プロセッサおよびデバイスのアーキテクチャの設計上の極めて重要な検討事項となっている。
【発明の開示】
【０００３】
上記デバイスにおける電力管理の重要性に鑑みて、効果的な電力管理の方法およびメカニズムが求められている。
【０００４】
コンピューティングデバイスにおける電力の管理方法およびメカニズムが考察される。デバイスの関係する論理ブロックのみを作動させる方法およびメカニズムが考察される。
【０００５】
必要のないブロックは給電が停止され、不要なブロックへのクロック供給が停止されうる。上記方法およびメカニズムは、各種の論理ユニットの動作を許可するか、スイッチオフにするタイミングおよびその方法を動的に決定する。
【０００６】
１つ以上の電力管理可能なグループを有する装置が考察される。この装置に関連する電力管理ユニットは、実行をスケジューリングされた命令を検出し、命令の実行に必要とされうる特定のパワーグループを特定し、前記命令を検出すると、この特定のパワーグループが給電停止状態に移行するのを阻止する指標（indication）を伝えるように構成されている。電力管理ユニットが、所定期間、実行に特定のパワーグループを必要とする到着した命令または待機中の命令を検出しない場合には、電力管理ユニットは、対応するパワーグループを、給電停止状態に移行させるか、この移行を許可する指標を伝えうる。所定のパワーグループへの給電を無効にすることに加えて、クロック供給も同様に無効にされうる。
【０００７】
また、電力管理可能なグループが、給電を停止できる部分と、給電を停止できない部分に分けられうる装置も考察される。このような実施形態では、あるパワーグループが給電を停止できると判定されると、そのパワーグループの給電を停止できる部分のみが給電を停止される。残りの部分は引き続き給電されうる。別の実施形態では、パワーグループの給電を停止できない部分は、その部分が状態を保持可能な低下電力状態に移行しうる。
【０００８】
また、各電力管理可能なグループに対するカウントを保持するように構成された電力管理ユニットも考察される。カウントは、受信クロックの各サイクルでデクリメントされうる。カウントがゼロになると、対応するパワーグループを給電停止状態にできることを示す信号が伝えられうる。実行に特定のパワーグループを必要とする命令が検出された場合、そのパワーグループのカウントがゼロ以外の値にリセットされうる。一実施形態では、リセット信号が使用されず、カウントが自然に「減衰」しうる。このため、パワーグループが、給電停止状態または低下電力状態に自動的に減衰されうる。各種実施形態では、パワーグループは、第１のパワーグループが給電停止状態に移行するのを阻止する状態標識を伝えるように構成されうる。
【０００９】
一実施形態では、命令が、実行に必要とされうるパワーグループを示すパワーコードと関連付けられる。実行に必要とされうる１つ以上のパワーグループを特定するために、命令オペコードがエンコードされうる。別の実施形態では、命令が、マッピングメカニズムによってパワーコードにマッピングされうる。
【００１０】
以下の詳細な説明は添付の図面を参照している。図面の説明は「図面の簡単な説明」に記載されている。
【００１１】
本発明は、さまざまに変形されたり、代替形態を取り得るが、その特定の実施形態は、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面および詳細な説明は、開示の実施形態に本発明を限定することを意図するものではなく、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを意図したものであることが理解されるべきである。
【発明を実施するための最良の形態】
【００１２】
プロセッサの概略
図１を参照すると、プロセッサ１０の一実施形態のブロック図が示される。他の実施形態も可能であり、考察される。図１に示すように、プロセッサ１０は、プリフェッチ／プリデコードユニット１２、分岐予測ユニット１４、命令キャッシュ１６、命令整列ユニット１８、複数個のデコードユニット２０Ａ〜２０Ｃ、複数個のリザベーションステーション２２Ａ〜２２Ｃ、複数個の機能ユニット２４Ａ〜２４Ｃ、ロード／ストアユニット２６、データキャッシュ２８、レジスタファイル３０、リオーダーバッファ３２、ＭＲＯＭユニット３４およびバスインタフェースユニット３７を備える。本明細書において、後に文字が付された参照符号によって参照される複数の要素は、参照符号のみによって集合的に参照される。例えば、デコードユニット２０Ａ〜２０Ｃは、デコードユニット２０として集合的に参照される。
【００１３】
プリフェッチ／プリデコードユニット１２は、バスインタフェースユニット３７から命令を受け取るために同ユニットに結合され、更に命令キャッシュ１６および分岐予測ユニット１４にも結合されている。同様に、分岐予測ユニット１４は命令キャッシュ１６に結合されている。更に、分岐予測ユニット１４は、デコードユニット２０および機能ユニット２４に結合されている。命令キャッシュ１６は、更にＭＲＯＭユニット３４および命令整列ユニット１８に結合されている。更に、命令整列ユニット１８は、デコードユニット２０に結合されている。各デコードユニット２０Ａ〜２０Ｃは、ロード／ストアユニット２６と、それぞれ対応するリザベーションステーション２２Ａ〜２２Ｃとに結合されている。リザベーションステーション２２Ａ〜２２Ｃは、それぞれ対応する機能ユニット２４Ａ〜２４Ｃに更に結合されている。更に、デコードユニット２０とリザベーションステーション２２とは、レジスタファイル３０およびリオーダーバッファ３２に結合されている。機能ユニット２４は、ロード／ストアユニット２６、レジスタファイル３０およびリオーダーバッファ３２とも結合されている。データキャッシュ２８は、ロード／ストアユニット２６とバスインタフェースユニット３７とに結合されている。バスインタフェースユニット３７は、Ｌ２キャッシュへのＬ２インタフェースとバスとに更に結合されている。最後に、ＭＲＯＭユニット３４はデコードユニット２０に結合されている。
【００１４】
命令キャッシュ１６は、命令をストアするために設けられた高速キャッシュメモリである。命令キャッシュ１６から命令がフェッチされて、デコードユニット２０にディスパッチされる。一実施形態においては、命令キャッシュ１６は、６４バイト（１バイトは８つのバイナリビットを含む）のラインを有する２ウェイアソシエーティブ構造に、最大６４キロバイトの命令をストアできるように構成されている。別法として、他の任意の構成およびサイズを使用してもよい。例えば、命令キャッシュ１６は、フルアソシエーティブ構成、セットアソシエーティブ構成、ダイレクトマップド構成のいずれでも実装可能であるという点に留意されたい。
【００１５】
プリフェッチ／プリデコードユニット１２によって、命令が命令キャッシュ１６にストアされる。プリフェッチ方式では、命令は、その命令が要求される前に命令キャッシュ１６からプリフェッチされうる。種々のプリフェッチ方式が、プリフェッチ／プリデコードユニット１２によって採用されうる。プリフェッチ／プリデコードユニット１２が命令キャッシュ１６に命令を転送すると、プリフェッチ／プリデコードユニット１２は、この命令に対応するプリデコードデータを生成しうる。例えば、一実施形態では、プリフェッチ／プリデコードユニット１２は、命令の各バイトに対し、スタートビット、エンドビット、および機能ビット３つのプリデコードビットを生成する。プリデコードビットは、各命令の境界を示すタグを形成している。プリデコードタグは、所定の命令をデコードユニット２０によって直接デコードできるかどうか、あるいは、命令が、ＭＲＯＭユニット３４によって制御されるマイクロコードプロシージャを実行することによって実行されるかどうかなどの追加情報も伝えうる。更に、プリフェッチ／プリデコードユニット１２は、分岐命令を検出して、この分岐命令に対応する分岐予測情報を分岐予測ユニット１４に記憶するように構成されうる。別の実施形態では、適宜、任意の適切なプリデコード方式を使用しても、プリデコードを行わなくてもよい。
【００１６】
次に、可変バイト長の命令セットを使用するプロセッサ１０の一実施形態のプリデコードタグのエンコード方式（encoding）を下記に記載する。可変バイト長の命令セットとは、命令が占めるバイト数が命令によって変わりうる命令セットのことである。プロセッサ１０の一実施形態が使用する可変バイト長の命令セットの例に、ｘ８６命令セットがある。
【００１７】
本例に示すエンコード方式においては、あるバイトが命令の先頭バイトである場合、このバイトのスタートビットがセットされる。あるバイトが命令の最終バイトである場合、このバイトのエンドビットがセットされる。デコードユニット２０が直接デコード可能な命令は「ファストパス」命令と呼ばれる。一実施形態によると、それ以外のｘ８６命令はＭＲＯＭ命令と呼ばれる。ファストパス命令では、機能ビットが、命令に含まれる各プレフィックスバイトに対してセットされ、他のバイトに対してクリアされる。あるいは、ＭＲＯＭ命令では、機能ビットが、各プレフィックスバイトに対してクリアされ、他のバイトに対してセットされる。命令のタイプは、最終バイトに対応する機能ビットを調べることによって決定することができる。この機能ビットがクリアされている場合、命令はファストパス命令である。逆に、この機能ビットがセットされている場合、命令はＭＲＯＭ命令である。このようにして、命令内で命令のオペコードが特定され、これが、命令内でクリアされている最初の機能ビットに関連するバイトとして、デコードユニット２０によって直接デコードされうる。例えば、Ｍｏｄ  Ｒ／Ｍバイトおよび即値バイトの２つのプレフィックスバイトを含むファストパス命令は、下記のようなスタートビット、エンドビットおよび機能ビットを有しうる。
スタートビット  １００００
エンドビット    ００００１
機能ビット      １１０００
【００１８】
ＭＲＯＭ命令とは、複雑過ぎるためにデコードユニット２０がデコードすることができないと判断された命令のことである。ＭＲＯＭ命令は、ＭＲＯＭユニット３４を呼び出すことにより実行される。より詳細には、ＭＲＯＭユニット３４は、ＭＲＯＭ命令が出現すると、この命令をパース（parse）し、定義済みのファストパス命令のサブセットを発行して、所望の操作が実行されるようにする。ＭＲＯＭユニット３４は、ファストパス命令のサブセットをデコードユニット２０にディスパッチする。
【００１９】
プロセッサ１０は、条件付き分岐命令に後続する命令を投機的にフェッチするために分岐予測を使用する。分岐予測処理を実行するために分岐予測ユニット１４が設けられる。一実施形態においては、分岐予測ユニット１４は、命令キャッシュ１６のキャッシュラインの１６バイト部分につき、最大２個の分岐ターゲットアドレスと、分岐の成立／不成立の予測とをキャッシュ可能な分岐ターゲットバッファを使用する。例えば、分岐ターゲットバッファには、２０４８個のエントリが含まれていても、これ以外の適切な数のエントリが含まれていてもよい。プリフェッチ／プリデコードユニット１２は、特定のラインがプリデコードされたときに、最初の分岐ターゲットを決定する。その後、キャッシュライン内の命令の実行によって、このキャッシュラインに対応する分岐ターゲットが更新されうる。命令キャッシュ１６は、フェッチされようとしている命令アドレスを示す情報（indication）を提供し、これによって分岐予測ユニット１４は、選択すべき分岐ターゲットアドレスを決定して、分岐予測を作成しうる。デコードユニット２０と機能ユニット２４とは、分岐予測ユニット１４に更新情報を提供する。デコードユニット２０は、分岐予測ユニット１４によって予測されなかった分岐命令を検出する。機能ユニット２４は、分岐命令を実行して、予測した分岐方向が誤っているかどうかを判定する。この分岐方向を「辿る」可能性があり、この場合、後続の命令が、分岐命令のターゲットアドレスからフェッチされる。逆に、この分岐方向を「辿らない」可能性もあり、この場合、後続の命令が、分岐命令の後のメモリ場所からフェッチされる。予測誤りの分岐命令が検出されると、この誤って予測された分岐に後続する命令が、プロセッサ１０の種々のユニットから破棄される。別法による構成においては、分岐予測ユニット１４が、デコードユニット２０および機能ユニット２４の代わりにリオーダーバッファ３２と結合されており、分岐予測ミスの情報をリオーダーバッファ３２から受け取ってもよい。分岐予測ユニット１４によって、種々の適切な分岐予測アルゴリズムが使用されうる。
【００２０】
命令キャッシュ１６からフェッチされた命令は、命令整列ユニット１８に送られる。命令キャッシュ１６から命令がフェッチされる際に、これに対応するプリデコードデータがスキャンされ、フェッチされようとしている命令に関する情報が命令整列ユニット１８に（およびＭＲＯＭユニット３４に）提供される。命令整列ユニット１８はスキャンデータを利用して、各デコードユニット２０に送る命令を並び替える。一実施形態においては、命令整列ユニット１８は、８個の命令バイトの組３つに含まれる命令を並び替えてデコードユニット２０に送る。デコードユニット２０Ａは、（プログラムの順序において）デコードユニット２０Ｂ，２０Ｃが同時に受け取る命令に先行する命令を受け取る。同様に、デコードユニット２０Ｂは、プログラムの順序においてデコードユニット２０Ｃが同時に受け取る命令に先行する命令を受け取る。一部の実施形態（例えば、固定長命令セットを使用している実施形態）では、命令整列ユニット１８が省略されてもよい。デコードユニット２０は、命令整列ユニット１８から受け取った命令をデコードするように構成されている。レジスタオペランド情報が検出されて、レジスタファイル３０およびリオーダーバッファ３２に転送される。更に、命令が１つ以上のメモリ操作の実行を要求する場合、デコードユニット２０は、このメモリ操作をロード／ストアユニット２６にディスパッチする。各命令がデコードされて、機能ユニット２４用の制御値の組が生成される。この制御値は、オペランドアドレス情報、ならびに変位データまたは即値データ（命令に含まれていることがある）と共に、リザベーションステーション２２にディスパッチされる。特定の実施形態においては、各命令がデコードされて最大２つの操作が生成され、これらの操作は機能ユニット２４Ａ〜２４Ｃによって別個に実行されうる。
【００２１】
プロセッサ１０はアウトオブオーダー実行に対応しており、このため、レジスタの読み出し操作および書き込み操作のために、プログラムの元のシーケンスを追跡するためにリオーダーバッファ３２を使用して、レジスタリネーミングを実行し、推測による命令実行と分岐予測ミスから回復できるようにするとともに、正確な例外を可能にする。レジスタの更新を伴う命令がデコードされると、リオーダーバッファ３２内に一時的な記憶場所が確保され、これにより投機的なレジスタの状態がストアされる。分岐予測が正しくない場合、誤って予測された経路に沿って投機的に実行された命令による結果が、レジスタファイル３０に書き込まれる前に、これをバッファ内で無効化することができる。同様に、特定の命令が例外を発生させる場合、この特定の命令に後続する命令を破棄することができる。このように、例外は「厳密」である（すなわち、例外を発生させるこの特定の命令に後続する命令が、例外が発生する前に完了することはない）。特定の命令が、プログラムの順序においてこの命令に先行する命令より先に投機的に実行されるという点に留意されたい。先行する命令は、分岐命令のこともあれば、例外を発生させる命令のこともあり、この場合、投機的な実行の結果がリオーダーバッファ３２によって破棄されうる。
【００２２】
命令整列ユニット１８の出力に供給されるデコード済みの命令は、対応するリザベーションステーション２２に直接転送される。一実施形態においては、各リザベーションステーション２２は、対応する機能ユニットへの発行を待機している待機中の命令の命令情報（例えば、デコード済みの命令のほか、オペランド値、オペランドタグおよび／または即値データ）を、最大６つの命令分だけ保持することができる。図１に示す実施形態については、各リザベーションステーション２２は、専用の機能ユニット２４に対応しているという点に留意されたい。したがって、リザベーションステーション２２および機能ユニット２４によって、３つの専用の「発行位置（issue position）」が形成される。つまり、発行位置０がリザベーション２２Ａおよび機能ユニット２４Ａによって形成される。整列されてリザベーションステーション２２Ａにディスパッチされた命令は、機能ユニット２４Ａによって実行される。同様に、発行位置１がリザベーションステーション２２Ｂおよび機能ユニット２４Ｂによって形成され、発行位置２がリザベーションステーション２２Ｃおよび機能ユニット２４Ｃによって形成される。
【００２３】
特定の命令がデコードされたときに、要求されたオペランドがレジスタ位置である場合は、レジスタのアドレス情報が、リオーダーバッファ３２とレジスタファイル３０とに同時に転送される。レジスタファイル３０は、プロセッサ１０が実装している命令セットに含まれる、設計された（architected）レジスタのそれぞれに対する記憶場所を有する。レジスタファイル３０に、ＭＲＯＭユニット３４が使用する付加的な記憶場所が設けられてもよい。リオーダーバッファ３２は、これらのレジスタの内容を変更し、これによってアウトオブオーダー実行を可能にする結果用に、一時的な記憶場所を有する。リオーダーバッファ３２内の一時的な記憶場所が、デコード時に、実レジスタのうちの１つの内容を変更するように判定される各命令のために確保される。このため、特定のプログラムの実行中のさまざまな点において、リオーダーバッファ３２は、所定のレジスタの投機的に実行された内容を格納している場所を１つ以上有しうる。所定の命令のデコードの後に、リオーダーバッファ３２が、所定の命令において、オペランドとして使用されているレジスタに割り当てられた以前の場所を１つ以上有することが判定された場合、リオーダーバッファ３２は、１）最後に割り当てられた場所にある値か、または２）そのうち前の命令を実行する機能ユニットによって値が未だ生成されていない場合は最後に割り当てられた場所に対するタグ、のいずれかを対応するリザベーションステーションに転送する。リオーダーバッファ３２が、所定のレジスタ用に確保されている場所を有する場合、オペランド値（またはリオーダーバッファタグ）は、レジスタファイル３０ではなくリオーダーバッファ３２から提供される。要求されるレジスタのために確保された場所がリオーダーバッファ３２に存在しない場合、レジスタファイル３０から値が直接取得される。このオペランドがメモリ場所に対応している場合、ロード／ストアユニット２６を介して、このオペランドの値がリザベーションステーションに提供される。
【００２４】
特定の実施形態においては、リオーダーバッファ３２は、並列的にデコードされた複数の命令を１つの単位としてストアおよび操作するように構成される。ここでは、この構成を「ライン指向型（line-oriented）」と呼ぶ。複数の命令をまとめて操作することによって、リオーダーバッファ３２内に採用されているハードウェアを簡略化することができる。例えば、本実施形態に使用されているライン指向型のリオーダーバッファは、１つ以上の命令が命令整列ユニット２０によってディスパッチされたときは必ず、３つの命令に関する命令情報に十分足る記憶領域を割り当てる。これに対して、従来のリオーダーバッファでは、実際にディスパッチされる命令の数に応じて、割り当てられる記憶領域の大きさが変わる。可変の記憶領域を割り当てるために、比較的多くの論理ゲートが必要となることがある。並列的にデコードされた複数の命令のうちの各々が実行されると、これらの命令の結果が、レジスタファイル３０に同時にストアされる。この記憶領域は解放されて、並列的にデコードされる複数の命令の別の組に割り当てられる。更に、制御論理が、同時にデコードされたいくつかの命令に分散されるため、命令１つにつき使用される制御論理回路系の数が減る。特定の命令を識別するリオーダーバッファタグを、ラインタグとオフセットタグとの２つのフィールドに分けてもよい。ラインタグは、この特定の命令を含む、並列的にデコードされた複数の命令のセットを識別し、オフセットタグは、このセットの中のどの命令が特定の命令に対応しているかを識別する。命令の結果をレジスタファイル３０にストアして、対応する記憶領域を解放する操作は、この命令の「リタイヤ」と呼ばれているという点に留意されたい。更に、任意のリオーダーバッファ構成を、プロセッサ１０の種々の実施形態において使用することができるという点も注目される。
【００２５】
上で説明したように、リザベーションステーション２２は、対応する機能ユニット２４によって命令が実行されるまで、その命令をストアする。（ｉ）命令のオペランドが提供され、かつ（ｉｉ）同じリザベーションステーション２２Ａ〜２２Ｃ内にあり、プログラムの順序においてこの命令に先行する命令にオペランドが提供されていない場合、命令が実行のために選択される。命令が機能ユニット２４のうちの１つによって実行された場合、この命令の結果が、この結果を待機しているリザベーションステーション２２のいずれかに直接転送されると同時に、この結果がリオーダーバッファ３２を更新するために送られる（この方法は一般に「結果転送」と呼ばれる）という点に留意されたい。関連する結果が転送されるクロックサイクルの間に、命令が実行のために選択されて、機能ユニット２４Ａ〜２４Ｃに送られ得る。この場合、リザベーションステーション２２は、転送された結果を機能ユニット２４に送信する。命令が、複数の操作にデコードされて、機能ユニット２４によって実行される実施形態においては、これらの操作が互いに独立してスケジューリングされうる。
【００２６】
一実施形態においては、各機能ユニット２４は、加算および減算の整数演算操作のほか、シフト、回転、論理演算および分岐処理とも実行するように構成されている。特定の命令について、デコードユニット２０によってデコードされた制御値を受けて、操作が実行される。浮動小数点演算を処理するために、浮動小数点演算ユニット（図示せず）が使用されうるという点に留意されたい。この浮動小数点演算ユニットは、ＭＲＯＭユニット３４またはリオーダーバッファ３２から命令を受け取って、次にリオーダーバッファ３２と通信を行って命令を遂行するコプロセッサとしても動作しうる。更に、機能ユニット２４は、ロード／ストアユニット２６によって実行されるロードメモリ操作およびストアメモリ操作のために、アドレス生成を行うように構成されうる。特定の実施形態においては、各機能ユニット２４は、アドレスを生成するアドレス生成ユニットと、それ以外の機能を実行する実行ユニットとを備えうる。この２つのユニットは、クロックサイクルの間に別の命令または操作を独立して処理することができる。
【００２７】
また、各機能ユニット２４は、条件付き分岐命令の実行に関する情報を、分岐予測ユニット１４に提供する。分岐予測が正しくない場合、分岐予測ユニット１４は、命令処理パイプラインに既に入っている、予測ミスとなった分岐に後続する命令を破棄して、必要な命令を命令キャッシュ１６またはメインメモリからフェッチさせる。このような場合、投機的に実行され、ロード／ストアユニット２６とリオーダーバッファ３２とに一時的にストアされた命令を含め、元のプログラムシーケンスにおいて、予測ミスとなった分岐命令に後続する命令の結果が破棄されるという点に留意されたい。機能ユニット２４からリオーダーバッファ３２に分岐の実行結果が提供されてもよく、この結果が、分岐予測ミスを機能ユニット２４に通知しうるという点に更に留意されたい。
【００２８】
レジスタ値が更新されようとしている場合、機能ユニット２４によって生成された結果は、リオーダーバッファ３２に送られ、メモリ場所の内容が変更される場合はロード／ストアユニット２６に送られる。結果がレジスタにストアされる必要がある場合、リオーダーバッファ３２は、命令がデコードされたときにレジスタの値のために確保された場所に、結果をストアする。機能ユニット２４およびロード／ストアユニット２６から結果を転送するために、複数の結果バス３８が設けられる。結果バス３８は、生成された結果のほかに、実行されようとしている命令を識別するリオーダーバッファタグを送る。
【００２９】
ロード／ストアユニット２６は、機能ユニット２４とデータキャッシュ２８との間のインタフェースを提供する。一実施形態では、ロード／ストアユニット２６は、データキャッシュ２８にアクセスしていない待機中のロード要求またはストア要求用に、データおよびアドレス情報を記憶するための記憶場所を有する第１のロード／ストアバッファと、データキャッシュ２８に既にアクセスしているロード要求およびストア要求に対応するデータおよびアドレス情報用の記憶場所を有する第２のロード／ストアバッファとを備えて構成される。例えば、第１のバッファは１２個の場所を備え、第２のバッファは３２個の場所を備えうる。デコードユニット２０は、ロード／ストアユニット２６へのアクセスを調停（arbitrate）する。第１のバッファが満杯の場合は、デコードユニットは、待機中のロード要求またはストア要求に関する情報を格納するための空きが、ロード／ストアユニット２６に生じるまで待機する。また、ロード／ストアユニット２６は、データの一貫性が確実に維持されるように、待機中のストアメモリ操作に対するロードメモリ操作の依存関係を検査する。メモリ操作とは、プロセッサ１０とメインメモリサブシステムとの間で行われるデータ転送である（しかし、転送がデータキャッシュ２８内で行われてもよい）。メモリ操作は、メモリにストアされているオペランドを利用する命令の結果生じることもあれば、データ転送のみを生じさせるが他の操作を生じさせないロード／ストア命令の結果生じることもある。
【００３０】
データキャッシュ２８は、ロード／ストアユニット２６とメインメモリサブシステムとの間で転送されるデータを一時的にストアするために設けられる高速キャッシュメモリである。一実施形態においては、データキャッシュ２８は、２ウェイセットアソシエーティブ構造において、最大６４キロバイトのデータをストアできるだけの容量を有する。データキャッシュ２８は、セットアソシエーティブ構成、フルアソシエーティブ構成、ダイレクトマップド構成、または任意の構成かつ任意のサイズのその他の構成など、様々なメモリ構成に実装可能であるということが理解される。
【００３１】
バスインタフェースユニット３７は、バスを介して、プロセッサ１０とコンピュータシステム内の他の部品とを通信させるように構成されている。例えば、バスは、デジタル  イクイップメント  コーポレーション（Digital Equipment Corporation）によって開発されたＥＶ−６バスと互換性を有するバスでありうる。あるいは、パケットベースのリンク、一方向リンクまたは双方向リンクなど、任意の適した相互接続構造を使用することができる。また、オプションのＬ２キャッシュユニットを使用して、レベル２キャッシュとインタフェースを取ってもよい。
【００３２】
なお、図１の実施形態はスーパースカラー実装であるが、別の実施形態ではスカラー実装を使用してもよい。更に、機能ユニットの数は、実施形態ごとに変えてもよい。ファストパス命令およびマイクロコード（ＭＲＯＭなど）命令の実行に、どのような実行回路を使用してもよい。別の実施形態では、図１に示す個々のリザベーションステーションではなく、一元化されたリザベーションステーションを使用してもよい。更に、別の実施形態では、図１に示すリザベーションステーションとオーダーバッファではなく、中央スケジューラを使用してもよい。
【００３３】
次に図２を参照すると、上で説明したプロセッサなどのデバイスに使用することができる電力管理メカニズムの一実施形態が示される。以下では、説明上、マイクロ命令ベースの方法およびメカニズムを採り上げる。しかし、ここに記載する方法およびメカニズムは、マイクロ命令ベース以外のシステムにも同様に使用することができる。
【００３４】
本例では、マイクロコードユニット２００とマイクロ命令制御ユニット２０２が示されている。マイクロコードユニット２００とマイクロ命令制御ユニット２０２は、上記のＭＲＯＭユニット３４にほぼ相当しうる点に留意されたい。しかし、別の実施形態では、これらのユニット（２００，２０２）が、ＭＲＯＭユニット３４とは別の回路を備えていてもよい。マイクロコードユニット２００は、それぞれがマイクロ命令を記憶するように構成されうる複数のエントリを含むメモリ２１０を備える。メモリ２１０は、リードオンリーメモリ（ＲＯＭ）または他の任意の適切な記憶装置を有しうる。制御ユニット２０２は、リオーダーバッファ２２０と動的電力制御ユニット２４０を備えて示される。マイクロコードユニット２００と制御ユニット２０２に加えて、パワーグループ２６０Ａ〜２６０Ｎも示されている。一実施形態では、パワーグループは、一般に、論理ユニットまたは回路の電力制御可能なブロックの集合体に対応しうる。「電力制御可能」とは、通常はＶｄｄの供給および／またはクロック供給を動的にオン／オフできることを指す。例えば、パワーグループ２６０Ａは、アドレス生成ユニットおよび／またはロードストアユニットに対応し、パワーグループ２６０Ｂは、演算論理ユニットに対応し、パワーグループ２６０Ｃは、シフト装置に対応し、パワーグループ２６０Ｎは、浮動小数点ユニットの一部に対応するなどである。
【００３５】
一実施形態では、マイクロ命令は、実行に必要な１つ以上のパワーグループ２６０を示すように符号化されうる。特定のパワーグループを必要とするマイクロ命令がパイプライン内にあるか、ほかの理由により特定のパワーグループを使用する必要があると検出されると、制御ユニット２０２は、対応するパワーグループをそのままの状態、すなわち作動状態に保つ。このようなマイクロ命令が検出されなければ、所定のパワーグループが、低電力状態に移行することが許可されうる。ここで使用するように、特段の断りのない限り、「低電力状態」とは、一般に、オフ状態または非給電状態を含みうる。
【００３６】
一実施形態では、特定のパワーグループ２６０は、低電力状態に移行するのを阻止する指標がなければ、自動的に低電力状態に移行しうる。このような実施形態では、パワーグループが、時間の経過に伴い、電力消費の点で自動的に「減衰する」といえる。所定のパワーグループが必要であると判定されるか、あるいはその可能性がある場合、そのパワーグループを減衰の程度の低い状態に実質的に「リフレッシュ」する指標が、そのパワーグループに伝えられうる。例えば、パワーグループ２６０が、使用中でなく、かつ所定の期間にリフレッシュ信号が受信されなかった場合に、自動的に低電力状態に移行するように構成されうる。リフレッシュ信号が検出されると、この所定の期間が「再開」されうる。
【００３７】
図の実施形態では、メモリ２１０は、一般に、複数の行を有するテーブルを有し、その所定の行は、１つの（場合によっては複数の）マイクロ命令に対応するデータを記憶している。本明細書で使用されるように、「マイクロ命令」と「命令」との文言は、置き換え可能に使用することができる。一般的には、ある命令に対応するデータには、特定のオペレーション、レジスタ、メモリ位置などを識別する１つ以上のフィールドが含まれうる。更に、ある命令に対応するデータにはパワーコードフィールド２１２も含まれ、このフィールド２１２は、当該命令の実行に必要とされうる１つ以上のパワーグループを示すのに使用されうる。別の実施形態では、パワーコードフィールド２１２中のデータが、処理メカニズムにおける命令のデコード中などに生成されうる。メモリ２００および／または制御ユニット２０２がＭＲＯＭユニット３４に内蔵されている実施形態では、メモリ２００は、命令キャッシュ１６からの指標を受けて、メモリ２００から制御ユニット２０２に１つ以上の命令を伝えるように構成されうる。上で説明したように、プロセッサの特定の命令（ＭＲＯＭ命令など）は、複雑過ぎるためにデコードユニット２０がデコードすることができないと判断されることがある。このようにして、ＭＲＯＭユニット３４を呼び出し、ＭＲＯＭユニット３４が、所望のオペレーションを完了するために２つ以上の別の命令を発行することにより、ＭＲＯＭ命令が実行される。
【００３８】
一実施形態では、リオーダーバッファ２２０は、それぞれが、メモリ２００から受け取った命令に対してデータを記憶するように構成された複数のエントリを有する。本例では、命令および他のデータは、バス２３０を介してリオーダーバッファ２２０に伝えられ、対応するパワーコードは、バス２３２を介してリオーダーバッファ２２０と動的電力制御ユニット２４０に伝えられる。動的電力制御ユニット２４０は、１つ以上のパワーグループ２６０のそれぞれの指標を記憶するように構成されたユニット２８０を有する。ユニット２８０内の各指標は、対応するパワーグループが低電力状態に移行できるかどうかを示すように構成されている。例えば、ユニット２８０はエントリ０〜Ｎを有し、これらはそれぞれ１つのパワーグループ２６０に対応している。更に、各パワーグループ２６０は、当該パワーグループのパワー状態を示す、対応する指標ＤＰＣ［０］〜ＤＰＣ［Ｎ］を受信しうる。また、動的電力制御ユニット２４０には、ユニット２８０の内容を更新するために使用される回路（２９０，２９２，２７０）も含まれる。一実施形態では、回路２９０は、バス２３２を介して、「到着した」命令に対応する指標を受け取り、バス２５０は、「待機中の」命令に対応する指標を回路２９２に伝えるために使用されうる。更に、パワーグループ２６０は、バス２５２を介して動的電力制御ユニット２４０に状態を示す指標を伝えるように更に結合されている。本明細書で使用されるように、「命令の実行がスケジューリングされる」とは、この命令が到着したおよび／または待機中であると検出されている場合を指しうる。
【００３９】
一般的には、バス２３２または２５０の一方を介して受信される指標は、対応する命令の実行に必要とされうる１つ以上のパワーグループ２６０を特定しうる。特定のパワーグループ２６０Ａ〜２６０Ｎに対応する指標が受信されると、対応するパワーグループ２６０への給電（または給電の継続）、および／またはクロック供給の有無（あるいは、低電力状態への移行の禁止の可否）を示すように、ユニット２８０が更新されうる。例えば、一実施形態では、ユニット２８０はグローバルカウンタを有する。ユニット２８０の各エントリは、パワーグループ２６０の少なくとも１つに対応しており、カウントを有し、カウントの値は各クロックサイクルでデクリメントされる。あるパワーグループに対応する到着指標２３２および／または待機指標２５０が検出されると、制御ユニット２７０は、そのパワーグループのカウントを、ゼロ以外の値にリセットさせうる。更に、制御ユニット２７０は、あるパワーグループに対応する命令が待機中である（例えば、リオーダーバッファ２２０内にある）間は、カウントがデクリメントされるのを阻止しうる。カウントがゼロに達したパワーグループ２６０は、低電力状態に移行しうる（あるいは移行が許可される）。ユニット２８０内でゼロに達したカウントは、一般に、所定の期間に、到着した命令または待機中の命令に対応するパワーコードが検出されなかったことを示す。例えば、ユニット２８０の各カウントが２ビットを含み、到着した命令または待機中の命令のパワーコードが検出されて、この２つのビットの両方が二進値「１」にセットされる（すなわち、カウント値が３となる）とする。この場合、カウント値が３回デクリメントされるとカウントがゼロになり、これにより、対応するパワーグループが低電力状態に移行されるか、移行が許可されうる。当然、本方法とメカニズムが、デクリメントではなくインクリメントを行ない、カウントが所定の最大値以上であることが検出されると、低電力状態にされるか、移行が許可されてもよい。このような実施形態では、制御ユニット２７０によってカウントがゼロにリセットされうる。
【００４０】
図３は、パワーグループ３２０と、対応するパワー状態指標３１０の一実施形態を示す。パワーグループ３２０は、一般に、図２のパワーグループ２６０の１つに対応しており、パワー状態指標３１０は、一般に、図２の動的電力制御ユニット２４０から伝えられる指標に対応しうる。一実施形態では、パワーグループは、電力管理要件が異なる２つ以上のグループに論理的に分けられうる。本例では、パワーグループ３２０は、電力管理される第１のグループ３３０と、電力管理されない第２のグループ３３２とに分けられる。一実施形態では、第１のグループ３３０には、電力管理されうるレジスタ、組合せ論理および／または順序論理が含まれ、もう一方のグループ３３２には、電力管理されないレジスタおよび／または論理が含まれうる。給電が停止されない論理には、通常、ある種の状態を保持するために必要な論理が含まれうる。
【００４１】
図３の例に示すように、電圧供給３０２が設けられ、グランド供給３０６が設けられている。更に、クロック供給源（ｇｃｌｋ）３０４も設けられている。クロック供給源ｇｃｌｋ３０４は、例えば、同期グローバルクロックを有しうる。一実施形態では、電圧供給は、第１のゲート３１２を介して第１のグループに結合され、第２のグループ３３２にも結合されている。同様に、ｇｃｌｋ３０４は、ゲート３１４を介して第１のグループに結合され、第２のグループ３３２に結合されている。また、グランド供給３０６も、２つのグループ（３３０、３３２）の両方に結合されて示される。パワー状態指標（ＤＰＣ［ｉ］）３１０は、ゲート３１２，３１４の各々に結合されている。ゲート３１２，３１４は、電圧供給３０２および／またはｇｃｌｋ３０４を、第１のグループ３３０に供給するかどうかの制御に使用することができるトライステートゲートまたはその他の回路を備えうる。例えば、パワー状態指標３１０には、ゲート３１２，３１４の各々からの出力をイネーブルまたはディスエーブルにするために使用されるイネーブル信号が含まれうる。ゲート３１２の出力をイネーブルにすると、第１のグループ３３０に給電され、ゲート３１４の出力をイネーブルにすると、第１のグループ３３０にクロックが供給される。一実施形態では、パワー状態信号３１０には、図２について上で説明したように、対応するパワーグループのカウントのみが含まれてもよい。カウントのいずれかのビットがゼロ以外の場合、対応するゲート（３１２，３１４）がイネーブルにされる。ゼロの場合には、対応するゲート（３１２，３１４）からの出力がディスエーブルにされうる。当然、信号３１０によって回路３１２，３１４を制御できる方法をさまざまに変形することが可能であり、考察される。
【００４２】
上記に加えて、パワーグループ３２０も、状態標識３４０を伝えるように示されている。状態標識は、通常、図２の動的電力制御ユニット２４０に伝えられうる。状態標識３４０は、パワーグループ３２０を給電停止にできるタイミングを示すために使用されうる。例えば、パワーグループ３２０がオペレーションを実行している間は、表示信号３４０によって、電力および／またはクロック供給が必要であることが示されうる。
【００４３】
上で説明したように、パワーグループの一部は電力管理されうるが、他の部分は電力管理されない。図３の例では、パワーグループ３４０内の第２のグループ３３２は、常時、給電および／またはクロック供給されるように構成されていた。給電および／またはクロック供給が必要な理由は、グループ３３２は状態を保持する必要であるためである。別の実施形態では、給電および／またはクロック供給が停止されなかったパワーグループの一部が、そのパワー状態を低下させうる。このようにして、回路は、その状態を保持しつつ、電力の使用および／または漏洩を低減するように構成されうる。
【００４４】
図４は、図３の回路と同様の回路の実施形態を示す。図４中の同様の要素には、図３の同様の要素と同じ参照符号を付している。図４の実施形態では、供給電圧３０２、ｇｃｌｋ３０４、パワーグループ３２０のグループ３３２間に、追加の回路４００が結合されている。一般的には、回路４００は、グループ３３２の回路の状態を保持するのに必要最低限の電力レベルを維持しつつ、グループ３３２に２つ以上の電力レベルを提供するように構成されうる。一実施形態では、回路４００は、複数の供給電力を受け取るように結合されうる。例えば、回路４００は、高供給電圧（１Ｖなど）の供給電力Ｖｄｄ３０２と、低供給電圧（２５０ｍＶなど）の供給電力Ｖｄｄ２  ４１０の両方を受け取り、これを伝えるように結合されうる。このようにして、回路４００は、２つ以上の供給電力から供給電力を選択し、選択した供給電力をグループ３３２に伝えうる。別の実施形態として、単一の供給電力から複数の電力レベルを伝えるために使用可能な技術が知られている。このような実施形態では、回路４００は、単一の供給電力（例えばＶｄｄ３０２）のみを受け取り、グループ３３２に２つ以上の電力供給を伝えるように結合されうる。
【００４５】
図５を参照すると、電力管理メカニズムの一実施形態が示される。図の実施形態では、複数のパワーグループ５６０Ａ〜５６０Ｎが、供給電力（Ｖｄｄ）およびクロック信号（ｇｃｌｋ）を受け取るように結合されて示される。図示されている供給電力Ｖｄｄとクロック信号ｇｃｌｋは、共通の供給電力Ｖｄｄおよび／またはクロック信号ｇｃｌｋであっても、そうでなくてもよい。ブロック５００内に、動的電力制御ユニット（図２のユニット２４０など）に一般に対応しうる回路が示されている。しかし、別の実施形態では、図５に示す論理および回路の各種部分が、デバイスまたはシステム内のさまざまな位置に配置されてもよい。図の例では、パワーグループ５６０のそれぞれのパワー状態標識を記憶するように構成された記憶装置（レジスタなど）５２２が示されている。例えば、各エントリ５２０Ａ〜５２０Ｎは、パワーグループ５６０Ａ〜５６０Ｎにそれぞれ対応しうる。記憶装置５２２は、一般に図２の記憶装置２８０に対応しているが、これが必ずしも必須ではない。記憶装置５２２が複数のカウンタを有する実施形態では、上で説明したようにカウントをデクリメントするように構成された更新信号５２１が生成されうる。また、パワーグループ５６０Ａ〜５６０Ｎごとに、ゲート論理５３２Ａ〜５３２Ｎと指標５３０Ａ〜５３０Ｎが示されている。
【００４６】
図の実施形態では、ユニット５００は、少なくとも１つのパワーグループ５６０Ａに対応する到着指標５０２Ａと待機指標５０４Ａを受け取るように結合されている。到着指標５０２Ａは、図２のマイクロコードユニット２００などのデバイスによって伝えられ、待機指標５０４Ａは、図２のリオーダーバッファ２２０などのデバイスから伝えられうる。別の実施形態として、マイクロコードを採用していないデバイスでは、この指標（５０２Ａ，５０４Ａ）が任意の適切な命令スケジューリングメカニズムなどから受信されうる。同様に、ユニット５００は、一般に、パワーグループ５６０Ｂ〜５６０Ｎの到着指標および／または待機指標も受け取るように構成されうる。各ゲート回路５３２Ａ〜５３２Ｎは、図４に示したトライステートゲート（３１２，３１４）などのように、対応するパワーグループ５６０Ａ〜５６０Ｎへの給電および／またはクロック供給の有無を制御するように構成されている。このような実施形態では、各回路５３２は、ゲート機能を制御するイネーブル／ディスエーブル信号を受け取りうる。例えば、信号５２４Ａが、パワーグループ５６０Ａのイネーブル／ディスエーブル信号を表しうる。一実施形態では、信号５２４Ａは、図４の信号３１０に対応しうる。
【００４７】
一般的には、オペレーションにパワーグループ５６０Ａを必要とする命令が（例えば、デコード中など、パイプラインの初期に）検出されると、到着指標５０２Ａがアサートされうる。パワーグループ５６０Ａを必要とする命令が待機中の（例えば、図２のリオーダーバッファ２２０内にある）間、待機指標５０４Ａがアサートされうる。回路５０６は、信号５０２Ａ，５０４Ａを受けて、パワーグループ５６０Ａが低下電力状態に移行できるかどうかを示す指標５１０Ａを伝える。例えば、一実施形態では、回路５０６は、受け取った信号５０２Ａの値と５０４Ａの値に論理ＯＲ関数を実行しうる。信号５０２Ａまたは５０４Ａの一方がアサートされていれば、パワーグループ５６０Ａを低下電力状態に移行できないことを示す信号５１０Ａもアサートされる。各パワーグループ５２０Ｂ〜５２０Ｎのそれぞれについても、同様の指標５１０Ｂ〜５１０Ｎが生成されうる。
【００４８】
一実施形態では、信号５１０Ａが、対応するパワーグループ５６０Ａが低下電力状態に移行できるかどうかを直接示してもよい。このような実施形態では、信号５１０Ａがアサートされていない（すなわち、パワーグループ５６０Ａに対応する到着命令も待機中の命令も検出されていない）場合は、信号５２４Ａがディアサートされ、ゲート論理５３２ＡからのＶｄｄおよび／またはｇｃｌｋの出力が無効にされうる。このとき、エントリ５２０Ａは、対応するパワーグループ５６０Ａに対するイネーブル／ディスエーブル状態を実質的に記憶しうる。別の実施形態では、パワー状態が、上で説明したように時間の経過と共に減衰しうる。一実施形態では、各エントリ５２０Ａ〜５２０Ｎは、対応するパワーグループ５６０Ａ〜５６０Ｎのカウントを記憶しうる。各カウント５２０は、更新信号５２１または他の適切な信号を受けて、クロック信号（例えばｇｃｌｋまたは他の適切なクロック信号）の各サイクルにデクリメントされる。対応するカウントが所定の値（ゼロなど）に達した場合には、対応するパワーグループが低電力状態に移行しうる。例えば、エントリ５２０Ａ内のカウントがゼロに等しい場合、イネーブル／ディスエーブル信号５２４Ａにより、対応するパワーグループ５６０Ａが低電力状態に移行できることが示されうる。
【００４９】
一実施形態では、各パワーグループ５６０に対して、個々に状態指標が保持されうる。例えば、図５に示すように、各パワーグループについて、カウント５２０と（ブロック５２３内に示すように）状態指標５３０の両方が保持されうる。このような実施形態では、状態５３０は、対応するカウント５２０の値に応じてセットされる。このため、カウント５２０Ａがゼロ以外の場合、状態５３０Ａは、パワーグループ５６０Ａに給電すべきことを示しうる。一方、カウント５２０Ａがゼロに達した場合、パワーグループが低電力状態に移行できることを示すように状態５３０Ａがセットされうる。到着した命令または待機中の命令を示す指標を受け取ると、対応するパワーグループのカウントがリセットされうる。
【００５０】
また、図５には、各パワーグループ５６０Ａ〜５６０Ｎによって伝えられる状態標識５７０Ａ〜５７０Ｎも示されている。状態標識５７０は、対応するパワーグループ５６０が低下電力状態に移行できないこと、および／またはクロック供給を無効にできないことを示しうる。例えば、状態標識５７０Ａによって、パワーグループ５６０Ａが低下電力状態に移行できないことが示される場合、エントリ５２０Ａおよび／または５３０Ａがどのような値であっても、信号５２４Ａが低電力状態を示さないよう阻止されうる。別の実施形態では、指標５７０Ａが、ゲート論理５３２Ａに直接供給されるなどであってよい。このような変形例が数多く可能であり、考察される。
【００５１】
上で説明したように、命令には、実行に必要とされうる１つ以上のパワーグループを示す指標が含まれうる。このような指標は、命令のエンコードの一環として直接エンコードされ、パワーコード指標を、命令オペコードへのマッピングなどによって決定することができる。パワーコード指標を命令またはオペレーションに関連付けるためのさまざまな技術が可能であり、考察される。図６は、パワーコードと、さまざまな命令の対応付けの一実施形態を示す。第１のテーブル６００が示されており、このテーブルは、パワーグループ列６０２と、対応するパワーコードＩＤ６０４を有する。このとき、テーブル６００の各行は、電力管理可能な１つ以上の論理／回路のグループと、対応するパワーコードＩＤを有する。本例では、パワーコードＩＤは８ビットを有する。しかし、当業者は、別のエンコード方式が可能であることを理解するであろう。すべてのこのような変形例が考察される。第１のエントリは、アドレス生成ユニット（ＡＧＵ）およびロード／ストアユニットのパワーコードＩＤが「０００００００１」であることを示している。第２のエントリは、算術論理ユニット（ＡＬＵ）のパワーコードＩＤが「００００００１０」であることを示している。シフト装置、整数乗算器、浮動小数点（ＦＰ）スケジューラ、ＦＰ加算器、ＦＰ乗算器、およびＦＰ除算／平方根ユニットの同様のエントリも含まれる。所定のデバイス内の特定のパワーグループが、デバイスのタイプと性質、設計上の決定事項などによって決まる点に留意されたい。したがって、特定の汎用マイクロプロセッサおよび特定用途向けデバイスでは異なるパワーグループが存在してもよい。
【００５２】
図６の第２のテーブル６０１は、命令６１２の例と、パワーコード６１４および他のビット６１６を含む対応するエンコードの例とを示す。第１のエントリは、例えば、２つのオペランドを加算するように構成されうるａｄｄｏｐ命令を示している。本例では、ａｄｄｏｐは、レジスタとメモリオペランドを有する。この命令のパワーコードは、「００００００１１」である。テーブル６００に示す対応付けに基づき、パワーコード「０００００００１１」により、ＡＧＵ、Ｌｏａｄ／Ｓｔｏｒｅのパワーグループと、ＡＬＵパワーグループの両方が必要とされうることが示される。第２のエントリは、データをある位置から別の位置に移動するように構成されうるｍｏｖｅｏｐ命令を示している。本例では、ｍｏｖｅｏｐ命令は、２つのレジスタオペランドを有する。ｍｏｖｅｏｐ命令のパワーコードは、「００００００１０」であり、ＡＬＵパワーグループに対応している。最後に、ｆｐａｄｄｏｐ命令がテーブル６０１に示されている。この命令は、浮動小数点ユニットでの加算オペレーションに対応しうる。本例では、ｆｐａｄｄｏｐ命令は、浮動点レジスタオペランド（ｆｐｒｅｇｉｓｔｅｒ）とメモリオペランドを有する。ｆｐａｄｄｏｐ命令のパワーコードは、「００１１０００１」であり、シフト装置のパワーグループと整数乗算器のパワーグループに対応している。図の各命令に対応するその他のビット６１６は、命令用のその他の適切なエンコードビットを提供しうる。
【００５３】
待機中の命令に必要とされうるパワーグループの識別情報の例として、説明上、テーブル６０１が、図２のリオーダーバッファ２２０に記憶されているデータの一部を表していると仮定する。このため、テーブル６０１中の命令は、一般に待機中の命令を表している。図示されている３つの命令（通常、命令は３つを越える）に着目すると、待機中の命令のパワーコードに論理ＯＲ演算が実行されうる。したがって、以下のオペレーションが実行され、ブロック６０３に示す結果が得られる。
００００００１１
００００００１０
００１１０００１
００１１００１１
このため、待機中の命令に対してパワーコード「００１１００１１」が示される。このパワーコードは、ＡＧＵ、ロード／ストア、ＡＬＵ、シフト装置および整数乗算器の各パワーグループに対応している。したがって、これらのパワーグループのそれぞれは、必要とされうるため、パワーダウン／給電停止することはできない。
【００５４】
図７に、バスブリッジ７００を介して種々のシステム部品に結合されたプロセッサ１０を備えたコンピュータシステム７０２の一実施形態のブロック図が示される。他の実施形態も可能であり、考察される。図中のシステムにおいて、メインメモリ７０４は、メモリバス７０２を介してバスブリッジ７０６に結合され、グラフィックコントローラ７０８は、ＡＧＰバス７１０を介してバスブリッジ７０２に結合されている。最後に、複数のＰＣＩデバイス７１２Ａ〜７１２Ｂが、ＰＣＩバス７１４を介してバスブリッジ７０２に結合されている。更に、ＥＩＳＡ／ＩＳＡバス７２０を介して１つ以上のＥＩＳＡデバイスまたはＩＳＡデバイス７１８を電気的に接続できるように、セカンダリバスブリッジ７１６を設けてもよい。プロセッサ１０は、ＣＰＵバス７０２を介してバスブリッジ７２４に結合されているほか、任意選択で設けられるＬ２キャッシュ７２８にも結合されている。ＣＰＵバス７２４とＬ２キャッシュ７２８へのインタフェースは共に、外部インタフェース１８が結合できる外部のインタフェースを有しうる。
【００５５】
バスブリッジ７０２は、プロセッサ１０、メインメモリ７０４、グラフィックコントローラ７０８、およびＰＣＩバス７１４に取付けられたデバイス間にインタフェースを提供する。バスブリッジ７０２に接続されたデバイスのうちの１つから操作（operation）が受信されると、バスブリッジ７０２は、この操作のターゲット（例えば、特定のデバイスか、ターゲットがＰＣＩバス７１４に接続している場合はＰＣＩバス７１４）を識別する。バスブリッジ７０２は、このオペレーションをターゲットのデバイスに転送する。バスブリッジ７０２は通常、ソースのデバイスまたはバスによって用いられるプロトコルからターゲットのデバイスまたはバスによって用いられるプロトコルにオペレーションを変換する。
【００５６】
セカンダリバスブリッジ７１６は、ＰＣＩバス７１４に対するインタフェースをＩＳＡ／ＥＩＳＡバスに提供すると共に、必要に応じて追加のデバイスも有している。また、必要に応じて、セカンダリバスブリッジ７１６の外側に設けたか、ブリッジ７００に搭載した入出力コントローラ（図示せず）をコンピュータシステム７２２に設けて、キーボードおよびマウス７２２、ならびに各種シリアルポートおよびパラレルポートの操作をサポートしてもよい。更に、別の実施形態においては、プロセッサ１０とバスブリッジ７０２との間にあるＣＰＵバス７２４に、外部キャッシュユニット（図示せず）を結合してもよい。別法として、外部キャッシュをバスブリッジ７０２に結合してもよく、この外部キャッシュのためのキャッシュ制御論理回路をバスブリッジ７０２に搭載してもよい。更に、Ｌ２キャッシュ７２８が、プロセッサ１０のバックサイド構成（backside configuration）で記載されている。Ｌ２キャッシュ７２８は、プロセッサ１０から独立していても、プロセッサ１０にカートリッジ（例えば、スロット１またはスロットＡ）として搭載されていても、プロセッサ１０と共に半導体基板に搭載されていてもよいという点に留意されたい。Ｌ２キャッシュ７２８は、ＥＣＣデータによって保護されており、Ｌ２キャッシュ７２８中のＥＣＣ誤りが、マイクロコードルーチン（前述のとおり）を使用して、あるいはハードウェアで、適宜訂正されうる。
【００５７】
メインメモリ７０４は、アプリケーションプログラムのストア先であると共に、プロセッサ１０の主な実行元のメモリである。適切なメインメモリ７０４は、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）を有する。例えば、複数バンク構成のＳＤＲＡＭ（シンクロナスＤＲＡＭ）のまたはラムバスＤＲＡＭ（ＲＤＲＡＭ）が適切でありうる。
【００５８】
ＰＣＩデバイス７１２Ａ〜７１２Ｂは、さまざまな周辺機器を例示している。この周辺機器は、別のコンピュータシステムと通信するためのデバイス（ネットワークインタフェースカードやモデムなど）を有し、そのデバイスがその別のコンピュータシステムと結合されうる。更に、周辺機器は、例えば、ビデオアクセラレータ、オーディオカード、ハードディスクドライブまたはフレキシブルディスクドライブまたはドライブコントローラ、小型コンピュータシステムインタフェース（ＳＣＳＩ）アダプタ、および電話カードなどの他のデバイスも含みうる。同様に、ＩＳＡデバイス７１８の例には、モデム、サウンドカード等の様々なタイプの周辺機器のほか、種々のデータ取得カード（ＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカード等）などがある。グラフィックコントローラ７０８は、ディスプレイ７２６への文字および画像の表示を制御するために設けられる。
【００５９】
グラフィックコントローラ７０８は、メインメモリ７０４との間で効率的に移動可能な３次元データ構造を表示するために、当業界において一般に公知となっているグラフィックアクセラレータを具体化しうる。したがって、グラフィックコントローラ７０８は、バスブリッジ７０２内のターゲットインタフェースへのアクセスを要求すると共に受取り、これによりメインメモリ７０４へのアクセスを取得可能であるという点で、ＡＧＰバス７１０のマスタでありうる。専用のグラフィックバスによって、メインメモリ７０４から高速にデータを取得することが可能となる。グラフィックコントローラ７０８は、特定のオペレーションのために、ＡＧＰバス７１０上でＰＣＩプロトコルトランザクションを生成するように更に構成されうる。このため、バスブリッジ７０２のＡＧＰインタフェースは、ＡＧＰプロトコルのトランザクションと、ＰＣＩプロトコルのターゲットトランザクションおよびイニシエータトランザクションとの両方をサポートする機能を備えうる。ディスプレイ７２６は、画像または文字を表現可能な任意の電子ディスプレイである。適切なディスプレイ７２６には、陰極線管（「ＣＲＴ」）ディスプレイや液晶ディスプレイ（「ＬＣＤ」）などがある。
【００６０】
上記の説明においてＡＧＰバス、ＰＣＩバス、およびＩＳＡバスまたはＥＩＳＡバスを例として採り上げたが、必要に応じて任意のバスアーキテクチャを代用してもよいという点に留意されたい。更に、コンピュータシステム７００は、追加のプロセッサ（コンピュータシステム７００の追加部品として示されるプロセッサ１０ａなど）を備えたマルチプロセッシングコンピュータシステムであってもよいという点に留意されたい。プロセッサ１０ａはプロセッサ１０と類似のものであってもよい。より詳細には、プロセッサ１０ａは、プロセッサ１０と全く同一であってもよい。プロセッサ１０ａは、（図７に示すように）独立したバスを介してバスブリッジ７０２に結合されていても、プロセッサ１０との間でＣＰＵバス７２４を共用してもよい。更に、プロセッサ１０ａは、Ｌ２キャッシュ７２８と類似した追加のＬ２キャッシュ７２８ａと結合されてもよい。
【００６１】
各種実施形態では、計算機可読媒体に対し、上記の説明に従って実装される命令および／またはデータの受信、送信または記憶が更に行われてもよい。計算機可読媒体は、磁気媒体または光学媒体（例えばディスク、ＤＶＤまたはＣＤ−ＲＯＭ）、ＲＡＭ（例えばＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭなどの揮発性または不揮発性の媒体などの記憶媒体またはメモリ媒体を備えうる。更に、上記のさまざまな実施形態が、適宜、他の実施形態と独立して使用されても、１つ以上の他の実施形態と組み合わせて結合して使用されてもよい点を考察すべきである。更に、上記の実施形態の全ての操作を組み合わせた実施形態も考えられる。
【００６２】
上記の開示を完全に理解できれば、当業者にとって数多くの変形例および変更例が明らかとなるであろう。上の説明は、汎用プロセッサに関して方法およびメカニズムを説明したが、本方法およびメカニズムは、ルーター、スイッチ、グラフィク装置、ブリッジチップ、ポータブルデバイスなど、電力管理が望ましい任意のデバイスに適用可能である。添付の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
【産業上の利用可能性】
【００６３】
本発明はコンピュータシステムに利用可能である。
【図面の簡単な説明】
【００６４】
【図１】プロセッサの一実施形態のブロック図。
【図２】図１に示したプロセッサの一部の一実施形態のブロック図。
【図３】電力管理メカニズムの一部を示す図。
【図４】電力管理メカニズムの一部を示す図。
【図５】動的な電力制御メカニズムおよびパワーグループの一実施形態を示す図。
【図６】デバイス命令およびパワーコードのエンコードの一実施形態を示す図。
【図７】図１に示したプロセッサを備えたコンピュータシステムの第２実施形態のブロック図。
【図１】
0005513744.tif 000002
【図２】
0005513744.tif 000003
【図３】
0005513744.tif 000004
【図４】
0005513744.tif 000005
【図５】
0005513744.tif 000006
【図６】
0005513744.tif 000007
【図７】
0005513744.tif 000008