(57)【要約】回路配置、プログラムコードを実行する方法、および、プログラムコードを生成する方法は、プロセッサ（１４）によるプログラムの実行中に複数のハードウェアリソース（５０−６０）の電力消費を動的に制御する能力を備えた電力制御命令（９０）を利用する。さらに、このような電力制御命令（９０）を処理するよう構成されたプロセッサ（１４）は、複数のハードウェアリソース（５０−６０）の電力モードを先に処理された電力制御命令（９０）において指定された電力モードに維持する能力を備えているので、後に処理された命令（９０）は、複数のハードウェアリソース（５０−６０）の電力モードが、先に処理された電力制御命令（９０）により指定された電力モードに設定される間に処理される。
2006509291.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）各ハードウェアリソースが少なくとも第１の電力消費状態と第２の電力消費状態との間で設定可能である電力モードを有する複数のハードウェアリソースと、
（ｂ）前記複数のハードウェアリソースに結合され、電力制御情報が内部に配置されたオペランドを有する少なくとも１個の電力制御命令を含むプログラムコードを処理するように構成されたプロセッサと、
を具備し、
前記プロセッサが前記電力制御命令に配置された前記電力制御情報に基づいて前記複数のハードウェアリソースのうちの少なくとも２台のハードウェアリソースの電力モードを選択的に設定することにより前記電力制御命令を処理するように構成され、
前記プロセッサが前記少なくとも２台のハードウェアリソースの前記電力モードを前記電力制御命令中に指定された電力モードに維持し、同時に前記プログラムコード内の少なくとも１個の後続の命令を処理するようにさらに構成される、
回路配置。
【請求項２】
前記電力制御命令が前記電力制御命令を一意に識別するオペコードをさらに含む、請求項１に記載の回路配置。
【請求項３】
（ａ）前記複数のハードウェアリソースの電力モード状態情報を記憶するサポートレジスタと、
（ｂ）前記サポートレジスタに結合され、前記サポートレジスタに記憶された前記電力モード状態情報に応じて前記複数のハードウェアリソースの前記電力モードを制御するように構成されたイネーブルロジックと、
をさらに具備し、
前記プロセッサが前記電力制御命令からの前記電力制御情報を前記サポートレジスタに格納することにより前記少なくとも２台のハードウェアリソースの前記電力モードを選択的に設定するように構成される、
請求項１に記載の回路配置。
【請求項４】
前記サポートレジスタが電力モードレジスタを具備する、請求項３に記載の回路配置。
【請求項５】
前記サポートレジスタが電力消費制御とは無関係である付加的な状態情報を含む、請求項３に記載の回路配置。
【請求項６】
前記複数のハードウェアリソースの部分集合がレジスタファイルを定義する複数のレジスタバンクを具備し、
前記イネーブルロジックが複数のイネーブル回路を含み、各イネーブル回路が前記複数のレジスタバンクからの一つのレジスタバンクと関連付けられ、イネーブル信号に応じてその関連付けられたレジスタバンクを選択的に使用不能にするように構成され、
前記イネーブルロジックが前記サポートレジスタに記憶された前記電力モード状態情報から各レジスタバンクに対する前記イネーブル信号を生成するようにさらに構成される、
請求項３に記載の回路配置。
【請求項７】
各レジスタバンクが少なくとも１個のクロック入力、アドレス入力およびデータ入力を含み、
各レジスタバンクに対する前記イネーブル回路がその関連付けられたレジスタバンクに供給された前記イネーブル信号に応じてその関連付けられたレジスタバンクのための前記クロック信号、アドレス入力およびデータ入力のゲートを選択的にオフするように構成される、
請求項６に記載の回路配置。
【請求項８】
各ハードウェアリソースがレジスタファイル、レジスタバンク、レジスタ、キャッシュ、バスインタフェースユニット、バス、機能ユニット、機能ブロックおよび命令デコーダよりなる群から選択される、請求項１に記載の回路配置。
【請求項９】
前記プロセッサが明示的並列命令を処理するように構成され、
前記電力制御命令が明示的並列命令における複数の演算の中の演算を含む、
請求項１に記載の回路配置。
【請求項１０】
前記プロセッサがＶＬＩＷプロセッサおよびＥＰＩＣプロセッサよりなる群から選択される、請求項９に記載の回路配置。
【請求項１１】
前記プロセッサがスーパースカラプロセッサを具備する、請求項１に記載の回路配置。
【請求項１２】
前記プロセッサがランタイムスペキュレーションを制限するため前記電力制御命令に副作用を割り当てるように構成される、請求項１に記載の回路配置。
【請求項１３】
前記オペランド内の電力制御情報が前記少なくとも２台のハードウェアリソースのための電力モード状態情報が記憶されるレジスタを指定し、
前記プロセッサが前記オペランド内の前記電力制御情報によって識別された前記レジスタから前記電力モード状態情報を取り出すことにより前記少なくとも２台のハードウェアリソースの前記電力モードを選択的に設定するように構成される、
請求項１に記載の回路配置。
【請求項１４】
前記複数のハードウェアリソースが前記プロセッサに配置される、請求項１に記載の回路配置。
【請求項１５】
少なくとも１台のハードウェアリソースが前記プロセッサの外部で前記プロセッサと同じ集積回路上に配置される、請求項１に記載の回路配置。
【請求項１６】
少なくとも１台のハードウェアリソースが前記プロセッサとは別個の集積回路上に配置される、請求項１に記載の回路配置。
【請求項１７】
請求項１に記載の回路配置を具備する、集積回路。
【請求項１８】
請求項１に記載の回路配置を記述するハードウェア記述プログラムと、
前記ハードウェア記述プログラムを搬送する信号搬送媒体と、
を具備し、
前記信号搬送媒体が伝送媒体と記録可能媒体のうちの少なくとも一方を含む、
プログラムプロダクト。
【請求項１９】
複数のハードウェアリソースを含み、各ハードウェアリソースが少なくとも第１の電力消費状態と第２の電力消費状態との間で設定可能である電力モードを有するタイプのプロセッサ上でプログラムコードを実行する方法であって、
（ａ）電力制御命令のオペランドに配置された電力制御情報に基づいて前記複数のハードウェアリソースのうちの少なくとも２台のハードウェアリソースの電力モードを選択的に設定することにより前記プログラムコードからのその電力制御命令を処理することと、
（ｂ）前記少なくとも２台のハードウェアリソースの前記電力モードが前記電力制御命令の前記電力制御情報によって指定された電力モードに設定される間に、前記プログラムコード中の少なくとも１個の後続の命令を処理することと、
を含む方法。
【請求項２０】
前記電力制御命令が前記電力制御命令を一意に識別するオペコードをさらに含む、請求項１９に記載の方法。
【請求項２１】
前記プロセッサが前記複数のハードウェアリソースの前記電力モードを設定するため前記プロセッサ内のイネーブルロジックによって利用されるサポートレジスタを含み、
少なくとも２台のハードウェアリソースの前記電力モードを選択的に設定することは前記電力制御情報を前記サポートレジスタに格納することを含む、
請求項１９に記載の方法。
【請求項２２】
第１の後続の命令を処理した後、第１のハードウェアリソースの前記電力モードが変更されるように、そのオペランドに配置された第２の電力制御情報を前記サポートレジスタに格納することにより、前記プログラムコードからの第２の電力制御命令を処理することと、
前記第２の電力制御命令を処理した後に第２の後続の命令を処理することと、
をさらに含み、
前記第１のハードウェアリソースの前記電力モードが前記第２の電力制御命令内で指定された電力モードに設定される間に前記第２の後続の命令が処理される、
請求項２１に記載の方法。
【請求項２３】
前記複数のハードウェアリソースの部分集合が、レジスタファイルを定義する複数のレジスタバンクを具備し、
前記イネーブルロジックが複数のイネーブル回路を含み、各イネーブル回路が前記複数のレジスタバンクからの一つのレジスタバンクと関連付けられ、イネーブル信号に応じてその関連付けられたレジスタバンクを選択的に使用不能にするように構成され、
前記サポートレジスタに記憶された前記電力モード状態情報から各レジスタバンクに対する前記イネーブル信号を生成することをさらに含む、
請求項２１に記載の方法。
【請求項２４】
各レジスタバンクが少なくとも１個のクロック入力、アドレス入力およびデータ入力を含み、
各レジスタバンクに対する前記イネーブル回路が供給された前記イネーブル信号に応じてその関連付けられたレジスタバンクのための前記クロック入力、アドレス入力およびデータ入力のゲートを選択的にオフするように構成される、
請求項２３に記載の方法。
【請求項２５】
各ハードウェアリソースがレジスタファイル、レジスタバンク、レジスタ、キャッシュ、バスインタフェースユニット、バス、機能ユニット、機能ブロックおよび命令デコーダよりなる群から選択される、請求項１９に記載の方法。
【請求項２６】
前記プロセッサが明示的並列命令を処理するように構成され、
前記電力制御命令が明示的並列命令における複数の演算の中の演算を含む、
請求項１９に記載の方法。
【請求項２７】
複数のハードウェアリソースを含み、各ハードウェアリソースが少なくとも第１の電力消費状態と第２の電力消費状態との間で設定可能である電力モードを有するタイプのプロセッサにより実行するプログラムコードを生成する方法であって、
（ａ）前記プログラムからのプログラムコードの少なくともある区間の実行中に前記プロセッサによる前記複数のハードウェアリソースの利用度を決定するためプログラムの少なくとも一部を解析することと、
（ｂ）前記複数のハードウェアリソースの決定された利用度に基づいて、前記複数のハードウェアリソースの中の少なくとも２台のハードウェアの電力モードを指定するオペランドに配置された電力制御情報を含む電力制御命令を前記プログラムに挿入することと、
を含み、
前記電力制御命令が前記プログラムコード内の少なくとも１個の電力制御命令以外の命令よりも前に実行されるように構成され、
前記電力制御命令以外の命令が処理され、同時に前記少なくとも２台のハードウェアリソースの前記電力モードが前記電力制御命令で指定された電力モードに維持されるように、前記プログラムコードが前記プロセッサに前記少なくとも２台のハードウェアリソースに対する前記電力モードを前記電力制御命令で指定された電力モードに動的に設定させるように構成される、
方法。
【請求項２８】
前記プログラムを解析することおよび前記電力制御命令を挿入することが前記プログラムのコンパイレーションと最適化との少なくとも一方の間に実行される、請求項２７に記載の方法。
【請求項２９】
前記プログラムを解析することおよび前記電力制御命令を挿入することが前記プロセッサによる前記プログラムの実行と同時に実行される、請求項２７に記載の方法。
【請求項３０】
前記電力制御命令を前記プログラムに挿入するよりも前に、前記プログラム内のリソース利用をハードウェアリソースの制限された部分集合に集約することをさらに含む、請求項２７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、たとえば、低電力アプリケーションおよびその他の電力感度の高いアプリケーションで使用するための集積回路における電力消費の制御に関する。
【背景技術】
【０００２】
電力消費は、多数の集積回路（ＩＣ）または「チップ」の主要な設計制約である場合が多い。たとえば、集積回路は、携帯電話機およびその他のワイヤレス通信装置と、携帯型コンピュータと、ハンドヘルド型家電製品およびゲームコンソールなどの多種多様の携帯型アプリケーションおよびその他のバッテリー給電方式アプリケーションで次第に使用されている。さらに、バッテリー寿命が問題とならない非携帯型アプリケーションでさえ、集積回路は過剰な熱に晒される可能性があり、高価および／または大型の冷却コンポーネントが必要になるか、または、ＩＣ信頼性が低下する。ＩＣによって消費される電力量は電子装置のバッテリー寿命と熱発生に重大な役割を果たす。
【０００３】
さらに、ＩＣはより複雑化し、より速いクロック速度とより多数のトランジスタを組み込み始めているので、これらのＩＣによって消費される電力量はそれに応じて増加する。したがって、ＩＣ電力消費を削減させるためにかなりの開発努力が向けられている。
【０００４】
たとえば、一部の努力は、たとえば、トランジスタのレイアウトを変更すること、および／または、電源電圧を低下させることによって、ＩＣ内の個々のトランジスタの電力消費の削減に向けられている。ある程度まで、トランジスタ設計への変更、および、電源電圧レベルの低下は、より複雑かつより高性能のＩＣの使用から生じる電力消費の増加の一部を相殺している。それにもかかわらず、さらなる削減が多くの電力感度が高いアプリケーションのために要求されている。
【０００５】
たとえば、モバイルアプリケーションで使用するためのマイクロプロセッサのような一部のＩＣは、電源電圧および／またはクロック周波数を低下させ、その結果として、全体的な電力消費を削減するため、電圧および／または周波数スケーリングを利用する。しかし、このような削減は典型的にＩＣワイドで適用され、対応した処理性能の低下を伴う。
【０００６】
別の設計は、特定のコマンド若しくは命令に応答して、または、外部割り込みのようなイベントに応答してＩＣを低電力状態に置くスリープモードを組み込む。たとえば、一部のマイクロプロセッサは、マイクロプロセッサ全体を低電力スリープモードに置くＷＡＩＴまたはＨＡＬＴ命令をサポートする。しかし、このようなモードにおいて、マイクロプロセッサ内のすべての有効な処理アクティビティは典型的に、マイクロプロセッサが割り込みまたはその他のトリガーイベントによって停止状態が再解除されるまで停止される。
【０００７】
さらに別の設計において、ＩＣは、全体的な電力消費を削減するために使用されないとき、選択的に使用不能状態にすることができる種々の回路を有してもよい。典型的に、このような回路は、特にある種の形式のプロセッサまたは処理コアを組み込むＩＣのための、コンピュータプログラムの実行に関連して現れる特定の命令の実行に応答して選択的に使用可能状態または使用不能状態にさせられる。
【０００８】
たとえば、一部の低電力マイクロプロセッサ設計は、個別の機能ユニットが特定の「パワーダウン」命令をそれらの機能ユニットへルーティングすることにより選択的に使用不能状態にされることを可能にする。パワーダウン命令は、コンピュータプログラムのコンパイル中にコンパイラによって挿入されるので、これらの命令はマイクロプロセッサによるコンピュータプログラムの実行中に個別の機能ユニットによって処理される。しかし、このようなアプローチの一つの欠点は、個別の命令を特定の機能ユニットへ送信することがこのような機能ユニットの処理リソースを独占し、それにより、このような機能ユニット、および、その他の生産的な計算演算を扱うプロセッサパイプラインの残りの部分の利用可能性を低下させることである。
【０００９】
上記のパワーダウン命令には、マイクロプロセッサによって処理される各命令に関連付けられ、マイクロプロセッサ内の各機能ユニットの使用可能状態を動的に制御する制御ビットの使用が関連付けられる。しかし、このタイプの設計では、各命令の一定の命令デコーディングが必要であり、個別の機能ユニットを選択的に使用不能状態にすることによって達成された電力消費の削減の一部を相殺する可能性がある。その上、特定の制御ビットの組に応答して特定の機能ユニットを使用可能または使用不能にするために要する時間はマイクロプロセッサの実現可能な動作周波数を制限し、これにより、マイクロプロセッサの全体的な性能を制限し得る。さらに、制御ビットの各命令への付加は、コードのサイズを増大し、かくして、必要記憶容量を増加し、または、サポートされ得る異なる命令の個数を減少させる。
【００１０】
上記の命令ベースの制御スキームの別の欠点は、これらのスキームがしばしばマイクロプロセッサ内の機能ユニットの制御に制限されることである。機能ユニット、たとえば、実行ユニット、算術論理ユニット、浮動小数点ユニット、固定小数点ユニットなどは、マイクロプロセッサ内の全体的な電力消費の重大な一因であるが、ほとんどの設計は、同様に電力消費の一因であるが、上記の制御スキームによって取り扱われないかなりの量の付加的な回路、たとえば、キャッシュ、レジスタファイルなどを組み込む。
【００１１】
さらに別の設計は、マイクロプロセッサの様々な電力操作をサポートする複数の命令セットを組み込んでもよい。典型的に、このような設計において、ある命令セットはマイクロプロセッサを完全に利用してもよいが、別の命令セットはマイクロプロセッサの一部分だけを利用してもよく、これにより、電力消費を削減する。しかし、このアプローチの一つの欠点は、限られた数のプロセッサの利用モード、すなわち、完全と制限付きだけがサポートされる。さらに、コードの複雑さ、すなわち、プロセッサ内のデコーディングロジックの複雑さが増大し、このこと自体が電力消費を増加させ得る。
【００１２】
関連した開発分野では、複数のバージョンのプログラムが様々な電力消費可能性をサポートするため利用され得る。しかし、複数のバージョンのプログラムを記憶するためには、現在の電力必要量に応じて実行のためのあるコードバージョンを選択するランタイムスケジューラの使用が必要であり、また、複数のコードバージョンの記憶は、より多くのプログラムメモリおよびスケジューラの実行を必要とし、電力消費をさらに増加させ得る。
【００１３】
ＩＣ内の個別の回路を選択的に使用可能にさせる点に関して、これらの回路を使用不能にさせ、これにより、それらの電力消費を最小限に抑える様々な方式が使用され得る。たとえば、クロックゲーティングは、しばしば、回路へクロッキングできない状態にするため使用され、回路内の最大の電力消費量を占めるトランジスタにおける状態のスイッチングであることが多いので、回路内のトランジスタのスイッチングを効果的に制限する。
【００１４】
マイクロプロセッサ内の機能ユニットに対し、回路を使用不能にする別の方式は回路への電源供給を停止することである。さらに別の方式は、回路への入力信号を停止することである。
【００１５】
また、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）装置で利用されるメモリアレイのようなその他の回路の場合、クロック信号およびセンスアンプは、アレイ内のメモリセルのバンクを使用不能にするため選択的にゲートがオフ状態になり得、これにより、全体的なアレイにおける電力消費を削減する。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
マイクロプロセッサなどのようなＩＣにおける電力消費の制御に関連して達成された進歩にもかかわらず、この分野におけるさらなる改良が継続して必要である。
【００１７】
たとえば、ＩＣにおいて選択的に使用不能にされた回路のプログラム制御の領域では、従来の回路制御スキームによってサポートされるよりも高いグラニュラリティおよびフレキシビリティと、少ないオーバーヘッドとを有する回路を選択的に使用不能にする方式が依然として必要である。
【課題を解決するための手段】
【００１８】
本発明は、プロセッサによるプログラムの実行中に複数のハードウェアリソースの電力消費を動的に制御する能力を備えた電力制御命令を利用する回路配置、プログラムコードを実行する方法、および、プログラムコードを生成する方法を提供することによって、従来技術に関連した上記の問題点およびその他の問題点を解決する。さらに、このような電力制御命令を処理するよう構成されたプロセッサは、複数のハードウェアリソースの電力モードを先に処理された電力制御命令において指定された電力モードに維持する能力を備えているので、後に処理された命令は、複数のハードウェアリソースの電力モードが先に処理された電力制御命令により指定された電力モードに設定される間に処理される。
【００１９】
本発明の特色である上記の効果および特徴とその他の効果および特徴は、明細書に添付され、そのさらなる部分を形成する特許請求の範囲に記載されている。しかし、本発明と、本発明の使用によって達成される効果および目的とがより良く理解されるように、本発明の具体的な実施形態が記述されている図面と以下の詳細な説明を参照すべきである。
【発明を実施するための最良の形態】
【００２０】
本発明による動的電力消費制御は、従来の電力消費制御技術よりもかなりの効果を奏する二つの概念の一方または両方を組み込む。第１の概念は、プロセッサまたは処理コアによって利用されるレジスタファイルに対する電力消費制御の実施だけに適用される。本発明によれば、レジスタファイルは複数のレジスタバンクに区分され、各レジスタバンクがクロック入力ライン、データ入力ラインおよびアドレス入力ラインを含む。イネーブルロジックはこのようなレジスタファイルに結合され、レジスタファイル内の使用されていないレジスタバンクに対するクロック入力ライン、データ入力ラインおよびアドレス入力ラインを選択的にゲートオフの状態にするか、または、使用不能状態にする。
【００２１】
第２の概念は、より一般的に、ソフトウェア命令を処理するプロセッサまたはその他のプログラマブル回路を含む集積回路内の電力消費を制御するソフトウェアベースの方式に適用される。特に、プロセッサによって実行されるプログラムコードに組み込まれた電力制御命令は、二つ以上の電力モードに選択的に設定可能である複数のハードウェアリソースの電力モードを制御するため使用され、ハードウェアリソースの各モードはそのハードウェアリソースのための特定の電力消費状態を有する。
【００２２】
各電力制御命令は、複数のハードウェアリソースの電力モードを設定する能力を備えたその命令のオペランドに並べられた電力制御情報を含む。さらに、電力モードが特定の電力制御命令によって一旦設定されると、設定された電力モードは、たとえば、電力モードが別の電力制御命令、または、特殊なイベント（たとえば、外部割り込み）によってリセットされるまで、プロセッサによる後の命令の処理中に利用される。
【００２３】
上記の概念のそれぞれは、レジスタファイルのソフトウェアベースの電力消費制御を利用するプロセッサ集積回路の典型的な実施形態の説明と共に詳細に記載される。しかし、この具体的な実施形態を説明する前に、典型的なハードウェアおよびソフトウェア環境がより詳細に後述される。
【００２４】
類似した番号は複数の図面を通じて類似した部品を示す図面を参照すると、図１は、本発明による動的電力消費制御を実施するメディアプロセッサ１２を含むデータ処理システム１０の典型的なハードウェアおよびソフトウェア環境を例示する。メディアプロセッサ１２は、たとえば、フィリップスセミコンダクターズから入手可能であるＰＮＸ１３００シリーズのＴｒｉ−Ｍｅｄｉａ互換メディアプロセッサ、或いは、Ｅｑｕａｔｏｒ  ＭＡＰ１０００、ＴＩ  ＴＭＳ３２０Ｃ６ｘｘｘ、ＢＯＰＳ  ＭａｎＡｒｒａｙなどのような別のメディアプロセッサアーキテクチャとして実現される。メディアプロセッサ１２は、内部バス１６を介して、同じ集積回路装置内に組み込まれた複数の付加回路コンポーネントに結合された中央処理装置（ＣＰＵ）または処理コア１４を含むシステムオンチップ（ＳＯＣ）集積回路装置である。
【００２５】
ＣＰＵ１４は、たとえば、３２ビットアドレス空間と、１２８台の３２ビット汎用レジスタにより構成されたレジスタファイルとを組み込むようなＶＬＩＷプロセッサコアとして実現される。プロセッサコアは、５台の発行スロットを介してアクセス可能な２７台の機能ユニットと、１６ＫＢのデータキャッシュおよび３２ＫＢの命令キャッシュとを含み、データキャッシュはデュアルポート化され、両方のキャッシュは６４バイトのブロックサイズをもつ８ウェイセットアソシアティブキャッシュである。
【００２６】
プロセッサ１２の作業メモリは、主メモリ入出力インタフェースブロック２０を介してアクセスされる外部メモリ１８（たとえば、ＳＤＲＡＭメモリ）によって与えられ、一方、周辺バス２２（たとえば、ＰＣＩバス）を介した外部周辺コンポーネントへの接続は外部バスインタフェースブロック２４によって容易に行われる。
【００２７】
様々なマルチメディア処理機能をサポートするため、メディアプロセッサ１２は、ビデオ入力ブロック２６および出力ブロック２８と、オーディオ入力ブロック３０および出力ブロック３２と、ＳＰＤＩＦ出力ブロック３４と、Ｉ２Ｃインタフェースブロック３６と、同期シリアルインタフェースブロック３８と、イメージコプロセッサブロック４０と、ＤＶＤデスクランブラ（ＤＶＤＤ）ブロック４２と、可変長復号化（ＶＬＤ）コプロセッサブロック４４と、タイマーブロック４６とを含む種々の特殊メディア処理回路を具備する。
【００２８】
次に図２を参照すると、ＣＰＵ１４が詳細に示され、内部バス１６を命令キャッシュ５２およびデータキャッシュ５４に結合するバスインタフェースユニット（ＢＩＵ）５０を含むことが分かる。命令キャッシュ５２からの命令は１台以上の命令デコーダ５６に供給され、命令デコーダは１台以上の機能ユニット５８、たとえば、種々の算術論理ユニット、浮動小数点ユニット、サブワード並列マルチメディア演算ユニット、ロード／ストアユニット、ＳＩＭＤマルチメディア演算ユニット、ベクトルマルチメディア演算ユニット、乗算器、分岐ユニットなどに命令を出力する。上述のように、ＣＰＵ１４はＶＬＩＷ命令をサポートしてもよく、これにより、ＶＬＩＷ命令にエンコードされた複数の演算を複数の機能ユニットへ同時に経路制御するためＶＬＩＷ命令を処理するときに、複数の命令スロット（たとえば、５個）が使用されてもよい。
【００２９】
ＣＰＵ１４は典型的にロード／ストアアーキテクチャとして実施され、これにより、機能ユニット５８は、この場合に１２８台の３２ビット汎用レジスタを含むレジスタファイル６０にアクセスする。付加サポートレジスタは、たとえば、浮動小数点演算、バイト順（ビッグ／リトルエンディアン）、割り込みイネーブル、例外などに関して、ＣＰＵのための様々なコンフィギュレーションセッティングを設定するため使用されるプログラム制御および状態ワード（ＰＣＳＷ）レジスタ６１である。本発明による動的電力消費制御を行うため、ＣＰＵ１４はまた電力制御回路６２を含み、その内部には、本明細書で電力モードレジスタと称されるサポートレジスタ６４が示され、サポートレジスタの内部には、メディアプロセッサ内の電力消費を最小限に抑えるため選択的に使用不能にすることができるメディアプロセッサ１２内の種々のハードウェアリソースのための電力モード状態情報が記憶される。一部の実施では、望ましくは、電力モード状態情報をＰＣＳＷまたはＣＰＵ内の別のサポートレジスタに記憶することをサポートし、これにより、電力モード状態情報が電力消費制御とは関係しない他の状態情報と組み合わされる。
【００３０】
電力制御回路６２は、ＣＰＵ１４および／またはメディアプロセッサ１２内の様々なハードウェアリソース内に組み込まれたロジックを使用可能にするため１個以上のイネーブル信号のアサートによって、ＣＰＵ１４を通じて、選択的にメディアプロセッサ１２内の他の場所で電力消費を制御する。この状況において、ハードウェアリソースは、実際には、集積回路内の電力消費を削減する目的のため使用不能状態にすることが実際的および／または好適である集積回路内の任意の電子回路を表してもよい。ＣＰＵ１４において、たとえば、ＢＩＵ５０、キャッシュ５２、５４、命令デコーダ５６、機能ユニット５８およびレジスタファイル６０は、それぞれのブロックに（参照名「Ｅ」によって示される）イネーブルロジックが存在するため、選択的に使用不能状態にすることができるハードウェアリソースとしてすべて示されている。
【００３１】
例示された実施形態において、電力制御回路６２は、電力モードレジスタ６４に記憶された電力モード状態情報に応じてイネーブル信号６６を選択的にアサートする。この状態情報は、ＣＰＵ１４によって実行されたプログラム内に組み込まれた電力制御命令に応じてレジスタ６４に設定される。これらの電力制御命令は、他の通常のレジスタが従来技術において一般的に使用される命令を記憶するのとほとんど同様に、典型的に命令デコーダ５６によって復号化され、電力モードレジスタ６４を更新するため使用される。
【００３２】
イネーブル信号６６は、ブロック若しくはハードウェアリソース全体を完全に使用可能／使用不能にするため使用され、または、このようなブロック／リソースの一部分だけを使用可能／使用不能にするため、および／または、このようなブロック／リソースの全部若しくは一部分だけに対する複数の利用可能な電力消費状態から選択するため使用されることが分かる。たとえば、ハードウェアリソースは、三つ以上の電力モード、たとえば、スリープモード若しくは完全にオフモード、二つ以上の低電力若しくは省エネルギーモード、および、全電力モードをサポートする。図２では、各イネーブル信号６６に対して１本のラインが示されているが、複数の信号パスが種々のグラニュラリティの程度で各ハードウェアリソースの一部分を選択的に使用可能状態にするため利用されることが分かる。また、ハードウェアリソースは、技術的に知られている任意の既知の省エネルギー若しくは電力消費削減技術を実際利用するが、ここで説明されるように電力制御回路の制御の下でこのような技術を選択的に使用可能にできる場合に限られることが分かる。
【００３３】
以下で説明する実施形態において、たとえば、レジスタファイルのようなハードウェアリソースは、レジスタファイルを、プロセッサにより実行されるプログラム内の電力制御命令に応じて選択的に使用不能にすることが個別に可能である複数のレジスタバンクに編成することによって電力消費を削減するように制御される。この点に関して、各レジスタバンクはそれ自体が別個のハードウェアリソースを表すと考えられ得る。
【００３４】
例示された実施形態では、各レジスタバンクは、使用不能状態にされた各レジスタバンクへのクロック信号だけではなく、アドレス入力信号およびデータ入力信号のゲートをオフにするイネーブルロジックを利用する。以下でより明らかになるように、汎用レジスタと共に利用されるＣＭＯＳラッチまたはフリップフロップはしばしばより高い配線容量が課されるので、クロック、アドレスおよびデータ入力信号のゲートオフは総合的に最適なエネルギー節約を実現することがよくある。しかし、レジスタファイルを使用不能状態にさせるその他の方式が本発明による一部の実施形態で利用されてもよい。
【００３５】
さらに、電力制御回路６２はＣＰＵ１４のみの内部に配置されたハードウェアリソースを制御するように図示されているが、電力制御回路は、たとえば、同じ集積回路上の他の場所に配置されたリソース（たとえば、図１に例示された機能ブロックの全部または一部）と、他の集積回路に配置されたハードウェアリソースとを含む、本発明によるその他のハードウェアリソースを制御するために利用されてもよいことが分かる。本発明による電力制御回路は、実際には、たとえば、レジスタファイル、メモリ、キャッシュ、発行スロット、バス、機能ユニット、機能ブロック、ＩＯパッド若しくはピン、バッファ、命令並べ替えロジック、内蔵フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）、コプロセッサ、または、事実上、使用不能にさせること、および／または、電力消費のレベルが削減された状態に設定することが可能である任意のタイプの電子回路を含む多種多様のハードウェアリソースと共に、電力消費を制御するため使用される。その上、上記の回路は、たとえば、このような回路の個別の部分（たとえば、レジスタファイル内の個別のバンクまたはレジスタ、キャッシュの個別の組、バスにおける個別のラインまたはラインのグループなど）が選択的に使用不能にされ得るように、別々に制御可能である複数のハードウェアリソースを組み込むことが想定される。
【００３６】
さらに、電力制御回路６２は、ＣＰＵ１４に配置されているかのように示されているが、電力制御回路はＣＰＵまたはその他の処理コアから機能的に分離されてもよいことが分かる。一般に、電力消費制御機能が集積回路に割り当てられる特定の方式は、様々な実施形態で変化するので、本発明は、本明細書に記載された特定の実施に制限されない。
【００３７】
別の事項として、メディアプロセッサ内での電力制御回路６２の実施は一例として本明細書に記載されている。電力消費制御と、特に、後述の電力制御命令の使用は、本発明による多種多様なその他の集積回路で利用されてもよい。電力制御命令は、たとえば、ＶＬＩＷ、ＥＰＩＣ、ＲＩＳＣ、ＣＩＳＣ、ＤＳＰ、スーパースカラなどを含む種々のプロセッサアーキテクチャと共に利用されてもよい。さらに、本発明は、ＳＯＣアーキテクチャ内、または、処理コアが他の支持回路と一体化されたその他のアーキテクチャ内での使用に限定されない。
【００３８】
多数の事例で、多くの場合に十分に利用されない並列ハードウェアリソースはプログラム利用要求に従って選択的に使用不能にされるので、電力消費削減に関する重大な利点は、並列ハードウェアリソースがプログラム実行中のすべての時点で十分に利用されないかもしれないＶＬＩＷ、ＥＰＩＣ、スーパースカラ、または、その他のワイドイシューアーキテクチャとの関連において実現されるであろう。しかし、本発明は、ワイドイシューアーキテクチャなどに関連した適用に限定されるものではない。
【００３９】
一般に、本明細書で説明される任意のハードウェアベースの機能は、典型的に、１台以上の集積回路に組み込まれ、付加的な支持電子コンポーネントを選択的に含む回路配置で実施されることが分かる。その上、技術的に周知の如く、集積回路は、典型的に、本明細書中でハードウェア記述プログラムと呼ばれ、装置上の回路配置のレイアウトを記述する一つ以上のコンピュータデータファイルを使用して設計され、製作される。プログラムは、典型的に、設計ツールによって生成され、その後、半導体ウェハに適用される回路配置を定義するレイアウトマスクを作成するため製造中に使用される。典型的に、プログラムは、ＶＨＤＬ、ｖｅｒｉｌｏｇ、ＥＤＩＦなどのハードウェア記述言語（ＨＤＬ）を使用して所定のフォーマットで与えられる。本発明は、完全に機能する集積回路に実施された回路配置、および、この回路配置を利用するデータ処理システムとの関連でここまで説明され、以下でも説明されるが、当業者は、本発明による回路配置が様々な形式のプログラム製品として配布可能でもあること、並びに、本発明が実際に配布を行うために使用される特定の信号搬送媒体のタイプとは無関係に同様に適用されることを認めるであろう。信号搬送媒体の例には、たとえば、揮発性および不揮発性メモリ装置と、フレキシブルディスクおよびその他のリムーバブルディスクと、ハードディスクドライブと、磁気テープと、光学ディスク（たとえば、ＣＤ−ＲＯＭ、ＤＶＤなど）と、特に、デジタルおよびアナログ通信リンクのような伝送タイプ媒体とが含まれるが、これらに限定されない。本発明による一部の実施形態では、その他の集積回路テクノロジー、たとえば、ＦＰＧＡなどもまた本明細書で説明される一部のハードウェアベースの機能を実施するため使用されてもよい。
【００４０】
上記のように、電力制御回路６２は、ＣＰＵ１４によって実行されるプログラム内に組み込まれた電力制御命令を用いて制御されてもよい。これらの電力制御命令はプログラマによって生成されてもよく、或いは代替的に、コンパイラ、リンカ、オプティマイザなどによって自動的にプログラムに追加されてもよい。さらに、このようなプログラム制御命令の自動付加は、典型的に、ランタイムよりも前に行われるが、一部の実施形態では、たとえば、ジャスト・イン・タイム式コンパイレーション／オプティマイゼーション、または、ランタイムインタープリテーション／命令デコーディングとの関連において、プログラム制御命令のランタイム追加が利用されてもよい。
【００４１】
プログラム制御命令の自動付加は、実施される特定の方式（すなわち、ランタイム前またはランタイム中のコンパイラまたはオプティマイザなど）とは無関係に、典型的に以下で詳述される一つ以上のルーチンを使用して実施される。オペレーティングシステム若しくは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、命令のモジュール若しくはシーケンス、または、それらのサブセットで実施されるこれらのルーチンは、本明細書では「コンピュータプログラムコード」または単に「プログラムコード」と呼ばれる。プログラムコードは、典型的に、様々な時点に、コンピュータまたはデータ処理システムの種々のメモリおよび記憶装置に存在し、コンピュータ内の１台以上のプロセッサにより読み取られ、実行されるときに、本発明の種々の態様を具現化するステップまたは要素を実現するために必要であるステップをコンピュータに実行させる１個以上の命令を含む。その上、本発明のソフトウェアに関連した態様はコンピュータおよびデータ処理システムに関連してここまで説明され、以下で説明されるが、当業者は、本発明の種々の実施形態が様々な形式のプログラム製品として配布可能でもあること、並びに、本発明が実際に配布を行うために使用される特定の信号搬送媒体のタイプとは無関係に同様に適用されることを認めるであろう。
【００４２】
さらに、以下で説明される様々なプログラムコードは、本発明の具体的な実施形態においてそのプログラムコードが実施されるアプリケーションに基づいて識別されてもよい。しかし、後述の特定のプログラム名は単に便宜的に使用されることが認められるべきであり、本発明は、このような名前によって識別および／または表される特定のアプリケーションだけの使用に限定されるべきではない。その上、典型的に、コンピュータプログラムがルーチン、プロシージャ、方法、モジュール、オブジェクトなどに編成される方式は無数であり、プログラム機能が典型的なコンピュータ内に存在する種々のソフトウェアレイヤ（たとえば、オペレーティングシステム、ライブラリ、ＡＰＩ、アプリケーション、アプレットなど）の間で割り当てられる方式は多様であるならば、本発明は、本明細書で説明されるプログラム機能の特定の編成および割り当てに限定されないことが分かる。
【００４３】
当業者は図１および２に示された典型的な環境が本発明を限定しないことを認めるであろう。実際には、当業者は、他の代替的なハードウェアおよび／またはソフトウェアが本発明の範囲を逸脱することなく使用されてもよいことを認めるであろう。
【００４４】
上記のように、本発明による動的電力消費制御は、従来の電力消費制御技術よりもかなりの効果を奏する二つの概念の一方または両方を組み込んでもよい。第１の概念は、プロセッサまたは処理コアによって利用されるレジスタファイルに対する電力消費制御の実施だけに適用される。第２の概念は、より一般的に、集積回路内の電力消費を制御するソフトウェアベースの方式に適用される。これらの概念のそれぞれのより良い理解を容易にするため、両方の概念を組み込む典型的な実施形態が図３−６に関連して後述される。しかし、以下で説明する二つの概念は、他の実施形態では別々に、かつ、独立に利用しても構わないので、本発明は以下で説明する特定の実施に限定されないことが分かる。
【００４５】
図３−６は、特に、Ｔｒｉ−Ｍｅｄｉａ互換メディアプロセッサで利用されるレジスタファイルにおける電力消費のソフトウェアベースの制御を説明する。たとえば、多数のプログラマブルアーキテクチャ（たとえば、ＶＬＩＷ、ＥＰＩＣおよびスーパースカラ）において、レジスタファイルは全体的な電力消費に大きく寄与することが分かっている。一部のアプリケーションでは、レジスタファイルは、処理コアによって消費される電力の２０％まで消費する。特にメディアプロセッサでは、レジスタファイルはかなり大型である場合が多く、かつ、多数のポートおよびレジスタを含むことが多い。一部のＴｒｉ−Ｍｅｄｉａ互換プロセッサは、たとえば、１２８個のレジスタおよび２０個の別々のポートを備えたレジスタファイルを利用する。レジスタファイル設計はワイヤリングが支配的であるため、相対的な電力消費はテクノロジーのスケーリングに伴って増加する。したがって、レジスタファイルにおける消費電力削減はしばしばメディアプロセッサにおけるエネルギー消費の実質的な節約をもたらす。
【００４６】
プログラマブルアーキテクチャにおけるレジスタファイルのサイズはしばしば、典型的にレジスタファイルに記憶される最大個数のアクティブ変数を要求するアプリケーションによって決定されることが分かっている。しかし、より少ない個数のアクティブ変数を用いるその他のアプリケーションを実行する間に、レジスタファイル内の多数のレジスタは使用されないままである。また、特定のアプリケーションの範囲内では、レジスタファイルの利用度はアプリケーションの様々なポイントで実質的に変化し得る。一例として、Ｔｒｉ−Ｍｅｄｉａ互換メディアプロセッサは、ＡＣ３復号化中にかなり高いピークレジスタ利用度を有し、一方、典型的なアプリケーションにおける他の演算の実行中には、平均レジスタ利用度はかなり低い場合が多い、ということが分かっている。したがって、実行中のアプリケーションの現在の要求に依存して、レジスタファイルの未使用部分を使用不能状態にさせ、その全体的な電力消費を削減することが非常に望ましいかもしれない。
【００４７】
特に図３に示されるように、レジスタファイルの一部分を選択的に使用不能にする一つの方式は、レジスタファイル（ここでは、図２のレジスタファイル６０）をアドレス空間に沿って複数のバンク７０に区分し、次に、これらのバンクを条件付きで、たとえば、電力制御回路６２（図２）を介してバンクに供給されるイネーブル信号６６に応じて、使用可能または使用不能にする。
【００４８】
各バンク７０は、レジスタファイルによって表されたレジスタ空間がレジスタの組に区分されるような複数のレジスタを含む。たとえば、１２８個のレジスタを含むレジスタファイルの場合、レジスタ空間を１バンクにつき１６個のレジスタからなる８個のバンクに区分することが望ましい。レジスタを区分する他の方式を使用しても構わないが、一例として、最上位のアドレス入力をバンク選択信号として利用し、選択されたバンクから特定のレジスタを選択するため最下位のアドレス入力を利用することが望ましい。たとえば、レジスタファイルが１６個のレジスタからなる８個のバンクに区分されるならば、７個のアドレス入力が使用されてもよく、３個の上位入力はバンク選択信号として使用され、４個の下位入力はレジスタ選択信号として使用される。
【００４９】
技術的によく知られているように、レジスタファイル６０は、出力選択ロジック７２と、クロック入力７４、アドレスイン入力７６およびデータイン入力７８のような様々の入力とを含む。さらに、レジスタファイル６０はデータアウト出力８０を介してデータを出力する。レジスタファイルによってサポートされる入力／出力ポートの個数、並びに、レジスタの個数および各レジスタの幅に応じて、様々な個数のアドレスイン信号、データイン信号およびデータアウト信号がレジスタファイルに供給されてもよいことが分かる。その上、入力選択ロジック（図示せず）はまた多重機能ユニットによる多数のレジスタの並列アクセスをサポートするため利用されてもよい。
【００５０】
レジスタのバンクを選択的に使用不能にさせるため、クロック入力、アドレスイン入力およびデータイン入力は各バンクに配置されたイネーブル回路８２を介して各バンクに供給される。さらに、電力制御回路からのイネーブル信号６６は、関連したレジスタバンク７０のクロック入力、アドレスイン入力およびデータイン入力を選択的にゲートオフ、または、ガードするため、各イネーブル回路８２に付加的に供給される。
【００５１】
各バンク内のイネーブル回路８２は本発明による多数の方式で実施されてもよい。たとえば、イネーブル回路を実施する一つの方式はゲートトランジスタの系列を使用し、このようなトランジスタがレジスタバンクへのクロック入力、アドレスイン入力およびデータイン入力のそれぞれに１個ずつ結合され、そのレジスタバンク専用のイネーブル信号６６によってゲート制御される。
【００５２】
各バンクへのクロック入力だけではなく、アドレス入力およびデータ入力をゲートオフすることにより、かなり大規模な省エネルギーが典型的にＣＭＯＳラッチまたはフリップフロップ（同期型）レジスタ実施に関連した比較的高い配線容量に起因して典型的に達成され、なぜならば、ゲート制御が典型的にレジスタファイルバンク内で利用されるかなり長い配線上でスイッチングの働きを阻止するからである。しかし、一部の実施では、付加的なゲート制御ロジックが付加的な遅延を導入してもよく、これにより、少しだけ性能を抑制してもよいことが分かる。さらに、本発明は、様々なレジスタ実施を使用して実施されたレジスタファイルに関連して利用されてもよいことが分かる。
【００５３】
レジスタファイル６０のソフトウェアベースの電力消費制御を実施するため、電力制御命令がＣＰＵ１４の命令セットアーキテクチャでサポートされる。電力制御命令の一つの典型的なフォーマットは図４に９０として示されている。図から分かるように、電力制御命令９０は、電力制御命令として命令を識別するオペコード９２と、レジスタファイル６０内の様々なレジスタのバンクの電力モードを設定するため使用される電力制御情報を指定するオペランド９４とを含んでもよい。オペランド９４は、たとえば、レジスタファイルのレジスタの各バンクに割り当てられたイネーブル／ディスイネーブルビット９６を含むビットマスクを有する中間オペランドとして実施されてもよい。かくして、たとえば、レジスタファイル内の８個のバンクに対し、８ビット即値オペランドが命令９０でサポートされてもよい。
【００５４】
より一般的なレベルでは、オペランド９４のサイズは式：
【数１】
2006509291.tif 000003
によって指定されてもよく、式中、ｊは制御対象のハードウェアリソース（ここでは、レジスタバンク）の個数であり、Ｍｏｄｅｓ（ｉ）はハードウェアリソースｉの電力モードの個数である。
【００５５】
他の命令フォーマットが別の方法で使用されてもよい。たとえば、図４に示されるように、電力モード状態情報が記憶されているレジスタを識別するオプションのソースレジスタオペランド９７をサポートすることが望ましいかもしれない。したがって、電力モード状態情報をそのまま電力制御命令に記憶し、即値演算を実行するのではなく、電力モード状態情報が別個のレジスタに保持されることができ、希望の電力モード状態情報を取り出すためレジスタ演算が使用される。その他のアドレッシングモードが別の方法ではサポートされてもよい。
【００５６】
さらに図４に示されるように、電力制御命令によって指定された電力モード状態情報が適用される前に満たされるべき条件を指定するため使用されてもよいガードオペランド９８をサポートすることも望ましいかもしれない。実際には、既知の条件が本発明によれば使用されてもよい。
【００５７】
図２を再度参照すると、例示された実施形態では、電力制御命令は電力制御命令に指定された電力制御情報を用いて電力モードレジスタ６４を更新するようにＣＰＵ１４によって処理される。したがって、電力モードレジスタ６４は電力制御命令の即値オペランドへの同一のマッピングを有することが望ましいかもしれず、これにより、電力制御命令は電力モードレジスタへの即値書き込みとして簡単に処理される。
【００５８】
さらに、上記のように、一部の事例では、電力モード状態情報を記憶するためＰＣＳＷレジスタのような既存のレジスタを利用することが望ましいかもしれない。このような事例では、電力制御命令は別個のオペコードを必要としない。その代わりに、適切なレジスタへ書き込むために使用される既存のオペコードが使用されてもよく、オペランドは電力制御モード状態情報を記憶することに関連して利用されたビットを更新する。
【００５９】
電力制御命令は、本発明によれば多数の方式で実行可能なプログラムコードに組み込まれてもよい。たとえば、電力制御命令は開発中にプログラマによってソースコードに付加される。別の方式では、コンパイラ、オプティマイザ、リンカなどが、予測されるリソース利用度に基づいて電力制御命令を挿入する適切な場所を決定するため開発中のプログラムのシミュレーションまたは静的解析を実行してもよい。
【００６０】
さらに、プログラムのプロファイル化、静的解析またはシミュレーションは、プログラムのある区間中に、利用されるべきハードウェアリソース、および、使用不能にされるべきリソースを決定するため使用されてもよい。たとえば、１０個のレジスタだけがプログラムのある区間で必要であるが、どの１０個のレジスタが使用されるかはプログラムの意味に関して重要ではないことが決定されたならば、コンパイラは限定された個数のレジスタバンクからのレジスタだけを使用し、次に、未使用レジスタバンクを使用不能にさせるため適切な電力制御命令をプログラムコードに挿入することが望ましいかもしれない。さらに、それらの１０個のレジスタが最初に複数のレジスタバンクに分散しているならば、個数が減少したレジスタバンク内にレジスタを集中させるためにレジスタを再割り当てすることが望ましいかもしれない。
【００６１】
図５は、たとえば、最適電力消費のためのコンピュータプログラムのある区間を最適化するためにコンピュータプログラムのコンパイレーションまたはオプティマイゼーション（最適化）の間に実行され得る電力消費最適化ルーチン１００を説明する。プログラムの指定された区間ごとに、ルーチン１００は、最初に、ブロック１０２において、プログラムコードのその区間によるハードウェアリソースの使用状況を決定するためその区間を解析する。次に、ブロック１０４は、リソース使用状況を、制限されたハードウェアリソースの組に集中させるために（たとえば、レジスタを、制限された個数のレジスタバンクに限定するために）リソースの再割り当てを試行するように随意的に実行される。次に、ブロック１０６は、未使用リソースを使用不能にさせるため、適切な電力制御命令を生成し、プログラムコードに挿入する。このセクションの処理はその後完了する。
【００６２】
ルーチン１００、または、機能的にこのルーチンに類似したルーチンは、また、たとえば、インタープリテーションまたはジャスト・イン・タイムコンパイレーションとの関連でランタイム中に利用されてもよい。さらに、ルーチン１００は、たとえば、スーパースカラプロセッサアーキテクチャにおいて、ランタイム中の並列演算および／または順序が整っていない演算（out-of-order operation）のためスケジューリングされた命令の生成と共に使用されてもよいことが分かる。このような実施では、コンパイラおよびランタイムハードウェアは、望ましくは、たとえば、副作用を電力制御命令に与えることによりそのランタイムスペキュレーション（ｒｕｎ−ｔｉｍｅ  ｓｐｅｃｕｌａｔｉｏｎ）を制限し、他の予想された命令への影響を最小限に抑えるため、電力制御命令の並べ替えを制限すべきである。さらに別の実施形態では、ＣＰＵ／プロセッサが十分に算法を搭載していないならば、オペレーティングシステムが電力制御命令をスケジューリング／発行可能である。
【００６３】
別の方式では、ルーチン１００は、ＶＬＩＷまたはＥＰＩＣコードのような明示的並列命令セットアーキテクチャと共に使用されてもよく、並列命令の検出はコンパイレーション中に行われる。このような実施では、電力制御命令の挿入は、多数の演算を含む大型ＶＬＩＷまたはＥＰＩＣ命令に電力制御演算を挿入することを含むものと考えられ得る。
【００６４】
コンパイレーション中またはランタイム中に電力制御命令が内部に組み込まれたプログラムコードは、望ましくは、ハードウェアリソース利用の変更が望ましいときに限りプログラムコード内に散在させられたプログラム制御命令を含む。さらに、多くの場合に望ましいことは、単一の電力制御命令が多数のハードウェアリソースの使用可能状態／使用不能状態を制御できることである。したがって、本発明によれば最小限の付加的な処理オーバーヘッドが典型的に電力制御命令に関連付けられ、これにより、付加的な命令をプログラムコードに挿入することにより生じる性能上の悪影響を最小限に抑える。
【００６５】
図６は、たとえば、Ｔｒｉ−Ｍｅｄｉａ互換メディアプロセッサと共に利用されるような上記の方式でコンパイルされたプログラムの典型的な部分の実行を図的に説明する。本例では、１１０、１１２、１１４、１１６および１１８によって示された５台の発行スロットが存在し、サイクルに対してそれぞれの発行スロットに例示されているように、命令は各サイクル（サイクル０−４）の間に各発行スロットで実行されると仮定する。また、レジスタファイルは、８ブロックに区分された１２８台のレジスタ（ｒ０−ｒ１２７のように示される）を含み、選択されたバンクが使用可能状態にされ、そのバンクに関連付けられたオペランドビットマスク位置に２進数の「１」が現れるとき、電力制御命令は即値オペランドを利用することが仮定される。本例では、電力制御命令ｐｗｒ＿ｃｏｎｔｒｏｌのレイテンシーは１サイクルであるが、しかし、電力制御命令は一部の実施では１サイクルよりも長いレイテンシーを有することが認められる。
【００６６】
また、サイクル０の間に、ＣＰＵによって（本例では発行スロット１１２において）処理される命令の一つが、０ｘ１ｂ（２進数の０００１１０１１）を即値オペランドとしてもつ電力制御命令であり、レジスタファイルのバンク１、２、４および５（すなわち、レジスタｒ０−ｒ３１およびｒ４８−ｒ７９）だけを使用可能状態にする場合を考える。この命令の実行の結果として、電力モードレジスタ６４（図２）は値０ｘ１ｂ（２進数の０００１１０１１）を記憶するため更新される。その結果として、次のサイクルの間に、レジスタバンク３、６、７および８が使用不能状態にされる。しかし、サイクル０における電力制御命令の実行中に、（すべてのバンクが予め使用可能状態にされていると仮定するならば）すべてのレジスタバンクが他の命令によるアクセスのため利用可能であることに注意する必要がある。
【００６７】
サイクル１および２の間に、さらなる電力制御命令は出現しない。その結果として、レジスタバンク３、６、７および８は使用不能状態のまま保持され、すべての命令はバンク１、２、４および５からのレジスタ（ｒ０−ｒ３１およびｒ４８−ｒ７９）へのアクセスに制限される。
【００６８】
サイクル３の間に、電力モードレジスタ６４に記憶された電力モード状態情報は、レジスタバンク３、６、７および８を使用不能状態に保ち続ける。しかし、このサイクル中に実行された一つの命令（発行スロット１１８へ発行された命令）は０ｘｆｆ（２進数の１１１１１１１１）を即値オペランドとしてもつ電力制御命令であり、レジスタファイルの８個のバンクのすべてを、サイクル４で実行される命令のため使用可能状態にする。
【００６９】
上記の動的電力消費制御技術は従来の設計よりも多数の効果を奏する。重要なフレキシビリティが最小限の処理オーバーヘッドで多種多様なハードウェアリソースを制御する点に関して得られ、これに対して、従来の設計は、命令が特定の機能ユニットへ経路制御されること、または、イネーブル／ディスイネーブルコマンドがあらゆる命令に付加され、常に復号化されることを必要とする。
【００７０】
さらに、上記の技術は、多数の有用な方法で性能と電力消費を適切にバランスさせるために種々の電力消費に関連した問題を解決するフレキシビリティを提供する。たとえば、上記の技術を使用するならば、プロセッサ性能は、たとえば、レジスタまたは機能ユニットを追加することにより向上させられることができるが、余分なリソースが利用されないコードに関して電力消費を増加させない。さらに、性能が決定的ではないようなアプリケーションの場合、電力制御命令は、たとえば、限定されたリソースだけに演算をスケジューリングし、それ以外のリソースを使用不能にすることにより、電力消費を低下させるため性能を犠牲にするために役立つことができる。
【００７１】
ソフトウェアベースの電力消費制御に関して、本発明による他の実施形態では、別の命令フォーマット、別のコンパイレーション、最適化および／またはスケジューリングルーチン、並びに、別のプロセッサアーキテクチャが利用され得ることが分かる。さらに、本明細書で記述されたバンク型のレジスタファイル設計に関して説明されたリソースを使用不能にする回路以外の回路が本発明によるソフトウェアベースの電力消費制御と共に使用されてもよい。
【００７２】
さらに、本明細書で記述されたバンク型のレジスタファイル設計に関して、本明細書で記述されたソフトウェアベースの制御メカニズム以外の制御メカニズムが本発明により利用されてもよいことが認められる。たとえば、ハードウェアベースの制御メカニズムが読み出し／書き込みアドレスの動的復号化に基づいてある種のハードウェアリソースを動的に使用可能にするため使用されてもよい。一例として、図７は、図３のレジスタファイル６０と同じように、複数のレジスタバンク１２２を含み、各レジスタバンクがレジスタファイルに供給されたクロック入力１２６、データイン入力１２８およびアドレスイン入力１３０のゲートを選択的にオフにする際に使用するゲート制御ロジック１２４を有する別のレジスタファイル設計１２０を例示する。しかし、ソフトウェアベースの制御回路からイネーブル信号が供給されるのではなく、レジスタファイル１２０は、種々の未使用レジスタバンクを選択的に使用不能にさせる個別のバンクイネーブル信号１３６を動的に生成するアドレスデコーダ１３４を含むハードウェアベースのイネーブルロジック回路１３２を有する。
【００７３】
アドレスデコーダ１３４は、たとえば、レジスタバンク内のレジスタが現在アクセスされていないサイクル中に、そのレジスタバンクを選択的に使用不能にしてもよい。特に、複数の入力ポートをサポートするレジスタファイルに対して、どのレジスタが所定のサイクル中にアクセスされるかが容易に決定されるので、特定のプロセッサ設計によって利用されるコンパイラおよび／または命令セットアーキテクチャに変更を加えることなく、レジスタファイル内の電力消費を選択的に削減する能力が得られる。
【００７４】
種々のさらなる変更は以上の開示の利益を受ける当業者に明らかであろう。したがって、本発明は特許請求の範囲に記載された事項にある。
【図面の簡単な説明】
【００７５】
【図１】本発明による動的電力消費制御回路を組み込むメディアプロセッサのブロック図である。
【図２】図１に示され、本発明による動的電力消費制御回路を含む中央処理装置のブロック図である。
【図３】図２に示され、レジスタのバンクを選択的に使用不能にするイネーブルロジックを組み込むレジスタファイルのブロック図である。
【図４】図１のメディアプロセッサにおける電力消費を制御するため適した電力制御命令の例示的な命令フォーマットのブロック図である。
【図５】本発明による電力消費最適化ルーチンのプログラムフローを説明するフローチャートである。
【図６】図１のメディアプロセッサによる典型的なプログラムの処理を説明するブロック図である。
【図７】図２に示されたレジスタファイルにおける電力消費を制御する別の方式のブロック図である。
【図１】
2006509291.tif 000004
【図２】
2006509291.tif 000005
【図３】
2006509291.tif 000006
【図４】
2006509291.tif 000007
【図５】
2006509291.tif 000008
【図６】
2006509291.tif 000009
【図７】
2006509291.tif 000010
【国際調査報告】
2006509291.tif 000011
2006509291.tif 000012
2006509291.tif 000013