"コンピューティングシステムにおける性能を改善する方法であって、処理アプリケーションのために必要な電力レベルを決定することと、前記電力レベルに基づきシェーダコンプレックスにおける1つ以上の単一命令多重データユニットSIMDを動的に有効化及び無効化することと、を備える方法。前記SIMDがいつ有効化及び無効化されることになるのかを示す複数のレジスタをリアルタイムで構成することを更に備える請求項1の方法。前記処理アプリケーションに必要なSIMDの数を決定することを更に備える請求項1の方法。前記構成されたレジスタを精査することと、前記レジスタの構成に基づき作業スレッドを割り当てることと、を更に備える請求項2の方法。前記構成することに先立ち1つ以上の係属中作業要求をサービスすることを更に備える請求項2の方法。前記動的に有効化及び無効化することは、前記SIMDをそれらのアクティブ実行期間に有効化及び無効化することを備え且つ前記SIMDに関連するシェーダエンジンにおけるアクティビティとは無関係である請求項1の方法。無効化されるべき1つ以上のSIMDへの作業スレッドを無効化することと、前記無効化されるべきSIMDにおける全ての係属中作業スレッドがいつクリアされるのかを決定することと、を更に備える請求項2の方法。前記有効化及び無効化することは、処理作業負荷、アプリケーション要求及び動作条件の1つ以上に依存する請求項1の方法。前記SIMDに動的中間粒度クロックゲーティングを供給することを更に備える請求項1の方法。前記SIMDにおける使用されていない論理へのクロックツリーを無効化することを更に備える請求項9の方法。前記SIMDにクロッキングをオンデマンドで供給することを更に備える請求項1の方法。コンピューティングシステムにおける性能を改善するシステムであって、処理アプリケーションのための電力レベルを決定するように構成される第1のモジュールと、前記電力レベルに基づきシェーダコンプレックスにおける1つ以上の単一命令多重データユニットSIMDを動的に有効化及び無効化するように構成される第2のモジュールと、を備えるシステム。前記第2のモジュールは、前記SIMDがいつ有効化及び無効化されることになるのかを示す複数のレジスタをリアルタイムで構成する請求項12のシステム。前記第2のモジュールは、前記構成されたレジスタを精査することと、前記レジスタの構成に基づき作業スレッドを割り当てることと、のために更に構成される請求項13のシステム。前記第2のモジュールは、前記構成することに先立ち1つ以上の係属中作業要求をサービスする請求項13のシステム。前記第2のモジュールは、前記SIMDをそれらのアクティブ実行期間に有効化及び無効化するように更に構成され且つ前記SIMDに関連するシェーダエンジンにおけるアクティビティとは無関係である請求項12のシステム。処理アプリケーションのために必要な電力レベルを決定することと、前記電力レベルに基づきシェーダコンプレックスにおける1つ以上の単一命令多重データユニットSIMDを動的に有効化及び無効化することと、がプロセッサによって実行されるように構成される命令を記憶するコンピュータ可読媒体。前記SIMDがいつ有効化及び無効化されることになるのかを示す複数のレジスタをリアルタイムで構成することが前記プロセッサによって実行されるように構成される命令を更に備える請求項17のコンピュータ可読媒体。前記処理アプリケーションに必要なSIMDの数を決定することが前記プロセッサによって実行されるように構成される命令を更に備える請求項17のコンピュータ可読媒体。前記構成されたレジスタを精査することと、前記レジスタの構成に基づき作業スレッドを割り当てることと、が前記プロセッサによって実行されるように構成される命令を更に備える請求項18のコンピュータ可読媒体。複数の命令データモジュールを含むプロセッサにおける作業配分を管理する方法であって、前記プロセッサにより受け取られる作業ユニットを解析することと、前記複数のモジュール内のアクティブなモジュールの利用レベルをスレッショルド値と比較することと、前記解析すること及び前記比較することに基き前記命令データモジュールの選択されたモジュールにわたって前記作業ユニットを分配することと、を備える方法。前記比較することは、前記アクティブなモジュールの各々が前記スレッショルド値の1つ以上よりも低い利用レベルを有しているかどうかを決定することを含む請求項21の方法。前記1つ以上のスレッショルド値よりも低い利用レベルの前記アクティブなモジュールを無効化することを更に備える請求項22の方法。前記分配することは、前記スレッショルド値の1つ以上よりも低い利用レベルを有しているアクティブなモジュールに前記作業ユニットの部分を割り当てることを含む請求項21の方法。前記分配することは非アクティブなモジュールを有効化することを更に含む請求項21の方法。前記アクティブなモジュールの利用レベルが前記スレッショルド値の1つ以上よりも高いときに前記作業ユニットの部分を前記有効化されたモジュールに割り当てることを更に備える請求項25の方法。前記分配することは前記有効化されたモジュールの1つ以上の完全利用を達成する請求項26の方法。前記比較することは前記命令データモジュール内で実行中の命令をカウントすることを含み、前記命令は前記作業ユニットを表す請求項21の方法。前記カウントすることは予め定められた期間にわたって生じる請求項28の方法。前記命令は演算論理ユニットALU命令及びフェッチ命令を含む群からの少なくとも1つを含む請求項29の方法。前記利用レベルは現在の利用及び予測された利用を含む群からの少なくとも1つを含む請求項21の方法。シェーダエンジン性能はSIMDの数の対応する増大に伴って高まるはずであるというのが一般的な想定である。しかし、この意見は大きな作業負荷条件の間等の限定された状況においてのみ真実である。しばしば起こり得るもっと小さな作業負荷シナリオに対しては、SIMDの数が増大したからといってシェーダエンジンの性能は必ずしも高くならないことがある。そのような状況において、もし全てのSIMDが有効化されると、十分に活用されていないSIMD即ちより軽い作業負荷又は無作業負荷を伴うSIMDまでもが有効化されアクティブのままになるので、電力が無駄になる。従来のグラフィクスシステムは、特定の動作に対して用いられるシェーダエンジン内の全てのSIMDにわたる作業負荷を単純に分割する。しかし、この手法は電力効率が極めて悪い。効率の悪さは、システム性能を落とすことなしに動作を行うために、より少ないSIMDが用いられ得るかどうかの判断がないことにより生じている。このように、従来のシステムは、シェーダエンジン内の全てのSIMDを、それらが動作を行う必要があるかどうかにかかわらずアクティブに保つ。上述したように、SIMDが有効化されると、それらは電力を消費する。アイドル状態にあってさえも、SIMDは、最小ではあるが測定可能な量の電力を消費する。従って、使用されていない又は十分に活用されていないにもかかわらず、全ての利用可能なSIMDを有効化された状態に保つことは、電力を無駄にする。また、作業負荷を可能な限り少ない数のSIMDへ詰め込むことができれば、これも有益であろう。この手法は、全ての利用可能なSIMDに作業負荷を提示する不要なオーバヘッドを低減する。更に、従来の手法においては、シェーダコンプレックス内のSIMDユニットのクロッキングは、同時に有効化され又は無効化される。多くのアプリケーションにおいて、全てのSIMDが作業を割り当てられるわけではない。しかし、従来の手法は、そのようなSIMDにクロック信号を能動的に供給し続ける。この手法はグラフィクスプロセッサの電力消費を増大し得るので、効率的でない。そこで、SIMDの動的な制御を可能にし、且つSIMDが処理タスクを行っていなくてよいときにグラフィクスプロセッサの電力消費を低減するシステム及び方法が必要である。本発明の実施形態は、多重SIMDを備えるシェーダコンプレックスにおける個々のSIMDを動的にアクティブにすること及び非アクティブにすることによって、グラフィクス処理ユニットにおける電力節約を可能にする。個々のSIMDのオンザフライの動的な無効化及び有効化は、所与の処理アプリケーションに対して必要な性能及び電力レベルを達成する上での柔軟性を提供する。このようにして、グラフィクス処理ユニットの最適な使用が達成される。より具体的には、本発明の実施形態はワット当たり負荷バランシング技術LBPWを提供する。1つの実装においては、このLBPW技術は、各SIMD内で実行される演算論理ユニットALU命令及びフェッチ命令の数をモニタリングする。加えて、新たに割り当てられたスレッド負荷即ちウエーブフロントがキューされ且つモニタリングされる。このモニタリングは、SIMDの現在の及び未来の利用を評価するために用いられる。このスキーム下では、シェーダエンジン内の所与の作業負荷を処理することが実際に必要な又は予測されるSIMDのみがアクティブのままになる。必要とされないSIMDは非アクティブにされる。必要とされないSIMDを非アクティブにすることによって、電力消費が低減される。追加的な利益として、本発明の実施形態は、システム性能を顕著に損なうことなしにワット当たり性能を改善する。本発明の更に別の実施形態においては、グラフィクスチップ内におけるdi/dtが減少させられることで、信頼性が高まり、またより低い電圧での周波数が向上する。そのような減少は材料の請求に影響し、より安価な部品の使用が可能になる。本発明の実施形態はまた、シェーダコンプレックスにおけるSIMDの動的粒度例えば中粒度クロックゲーティングを達成する。クロックオンデマンドメカニズムを提供することにより不使用論理へのクロックツリーをシャットダウンすることによって、スイッチング電力が低減される。このようにしてクロックゲーティングが強化され、SIMDがアイドルである又は割り当て負荷がない期間に対するスイッチング電力が節約される。本発明の実施形態は、任意のコンピューティングシステム例えば従来のコンピュータデスクトップ、ノートブック等システム、コンピューティングデバイス、エンタテーメントシステム、メディアシステム、ゲームシステム、通信デバイス、パーソナルデジタルアシスタント、又は1つ以上のプロセッサを用いている任意のシステムにおいて使用可能である。1つの種類のプロセッサに対して開発されたコードは、たいした追加的な努力を必要とせずに別の種類のプロセッサ上で展開され得るので、本発明の実施形態は、例えば多重コアCPU、GPU及び/又はGPCPUを有する処理システムのために用いられる。例えばGPUカーネルとしても知られるGPU上での実行のために開発されたコードは、本発明の実施形態を用いてCPU上で実行されるように展開され得る。上述したように、本発明の実施形態は、シェーダコンプレックスにおける個々のSIMDを動的にアクティブにすること及び非アクティブにすることによって、電力節約を可能にする。実施形態は、グラフィクス処理ユニットの性能要求の低減又は熱設計電力TDPを低下させることのいずれかのために、SIMDを動的に無効化する。また実施形態は、グラフィクス処理ユニットのグラフィクスパイプをフラッシュする必要性なしに、無効化されたSIMDを高性能アプリケーションに対して有効化する。このことは、SPをフラッシュすることなしにSIMDの数を動的に切り換えることによって達成される。動的な制御又は切り換えは、一連のレジスタを適切にプログラムすることによって、部分的には達成される。ある実施形態においては、シェーダパイプ補間器SPIは、どのSIMDがアクティブであるのかを表すように動的に構成されるレジスタに基き新たな作業又はスレッドを割り当てる。ある実施形態においては、そのような動的な構成は、無効化されるべきSIMDによってインフライト要求又は係属中要求がサービスされた後に、効力を生じることになる。一旦無効化されると、SPIからの新たな要求は無効化されたSIMDへは渡らず、またハーベスト可能論理のクロック例えばsp4-vspクロック及びテクスチャクロックがシャットオフされてグラフィクス処理ユニットのTDPを低減する。無効化されたSIMDが有効化されると、SPIは有効化されたSIMDに作業を割り当てることを再び開始し、グラフィクス処理ユニットの更に高い性能を提供する。ある実施形態においては、SIMDをアクティブにすること及び非アクティブにすること並びにアクティブ/非アクティブにされるべきSIMDの数は、動作条件例えば温度、電流、CAC、アプリケーション例えばエネルギーを節約するための可変の利用、作業負荷又は他の要求例えば性能要求、電力要求等の種々の要因に依存する。SIMDの動的制御図1Aは本発明の実施形態が実装される例示的なシェーダコンプレックス100を示している。上述したように、シェーダコンプレックスはシェーダパイプラインSPを含むことができる。より高い性能を達成するために、多重SPが共に積層型SPとして動作するように構成され得る。これらのSPは、クワッドパイプQPのアレイ186及び複数のSIMDとして構築され得る。各SIMDの全てのシェーダユニットは、プリミティブ、頂点又は画素の値の異なるセットに対して同一のALU命令を条件付きで実行することができる。ある実施形態においては、シェーダコンプレックス100は、複数のSIMDと2つのシェーダエンジン、即ちシェーダエンジン120及びシェーダエンジン122とを含む。シェーダコンプレックス100はまた、テクスチャキャッシュ130又はレベル2テクスチャキャッシュ、複数のシェーダパイプ補間器SPI及び頂点キャッシュを含む。シェーダコンプレックス100には更に、複数の冗長シェーダスイッチRSS、シェーダシーケンサSQ、レベル1テクスチャキャッシュTCP及びテクスチャデータ論理TDが含まれる。明確化のために少数のSIMDが図示されているが、本発明は図示される実施形態に限定されないこと及びシェーダコンプレックス100は拡大縮小可能であり任意の数のSIMDを含み得ることが理解されるべきである。上述したように、本発明の実施形態は、SPをフラッシュすることなしにSIMDの数を動的に切り換える。そのような動的な制御又は切り換えは、一連のレジスタを適切にプログラムすることによって、部分的には達成される。ある実施形態においては、SPIは、どのSIMDがアクティブであるのかを表すように動的に構成されるレジスタに基き新たな作業又は作業スレッドを割り当てる。以下の欄では、SIMD及びQPマスクを制御する例示的なレジスタを論じる。図1BはCC_GC_SHADER_PIPE_CONFIGという名称のレジスタを示している。ある実施形態においては、このレジスタはリセット/構成ユニットRCUによりフューズマスク設定に基きプログラムされる。例としては、このレジスタはハーベスト目的でプログラムされ得る。同様に、図1Cに示されるRCU_CG_GC_SHADER_PIPE及びRCU_CC_GC_SHADER_PIPE1レジスタは、CC_GC_SHADER-PIPE_CONFIGレジスタのシャドーされたバージョンである。これらのレジスタは、フューズマスク又はSMCマイクロコードに基きプログラムされる。図1Dに示されるレジスタGC_USER_SHADER_PIPE_CONFIGは、動作中のSIMD及び/又はQPの数を制限するためにユーザによってプログラム可能である。このレジスタは、グラフィクスレジスタバスマネージャGRBMから受け取ったインデックス毎にシェーダエンジンによってマッピングされ且つシャドーされるメモリであってよい。CC_GC_SHADER_PIPE_CONFIG図1Bのレジスタ設定は、実際上は静的であり、またチップに対して1回プログラムされる。対照的に、レジスタGC_USER_SHADER_PIPE_CONFIGのレジスタ設定は、常に動的にプログラムされ得る即ちオンザフライ。本発明の実施形態は、GC_USER_SHADER_PIPE_CONFIGレジスタをSIMDの動的制御のために構成する。ある実施形態においては、CC_GC_SHADER_PIPE_CONFIGレジスタ及びGC_USER_SHADER_PIPE_CONFIGレジスタの論理和の結果の値は、新たなスレッド作業が割り当てられるべき有効化されたSIMDをSPIが決定するオンザフライでために用いられる。ある実施形態においては、グラフィクスパイプ内の全ての他の設計ブロックは、それら自身を非アクティブなSIMD/QPのために静的に無効化するために、CC_GC_SHADER_PIPE_CONFIGレジスタを利用する。ある実施形態においては、そのような設計ブロックは、当該動作がシェーダパイプラインの不所望なフリージングを生じさせる場合に、GC_USER_SHADER_PIPE_CONFIGレジスタを精査する必要はない。図2に示される例示的なタイミング図を参照すると、SIMDの制御は、シェーダエンジンにおけるアクティビティとは無関係に達成され得る。たとえ特定のSIMDが命令を実行するのにビジーであるとしても、実施形態は、そのSIMDのアクティブな実行期間の間そのSIMDを無効化することができる。例えば図2を参照すると、SIMD0はそのアクティブな実行期間の間、無効化され得る。ある実施形態においては、本発明を限定する意図はないが、無効化された又は非アクティブにされたSIMDが再度有効化されるまで、SPIはその無効化されたSIMDには作業を割り当てない。無効化されたSIMDは必然的に、それにおける現在の作業又は作業シーケンサパイプにおける係属中作業の完了に際して作業スレッドを流出させる。一旦空になると、動的粒度クロックゲーティング後で更に説明するは、無効化されたSIMD内の論理へのクロック信号を無効化することができる。無効化されたSIMDの再有効化に際しては、SPIは、有効化されたSIMDへ新たなスレッド作業要求を提出することを再び開始する。SIMD制御設定は、GRBMレジスタ書き込みを介してプログラムされ、またドライバ又はSMCマイクロコードにより動的に設定され得る。システム設計の観点からは、SIMDはいつでも有効化又は無効化され得る即ちオンザフライ。電力節約の観点からは、有効化されたSIMDからSIMD無効化状態への切り換えの時間は、SIMDパイプ内に係属中の作業負荷に依存し得る。無効化されたSIMDを有効化するのに必要な時間又はその逆は、SPIがスレッドをそのSIMDに割り当てる準備が整ったときにGRBMレジスタに書き込むのと同じくらい速い。例としては、両方の場合に対して、必要な時間は数マイクロ秒であり得る。動作の例示的なシナリオ以下は、本発明の実施形態及びSIMDの動的な制御が用いられる例示的な動作シナリオである。A.条件ベースの制御SIMDの動的な制御は条件依存であり得る。そのような例示的な条件は、限定はされないが以下を含む。1温度トリップ:外部ソースがより高いプロセッサ温度を示しており、また電力消費を低減する又は適用可能な場合に上げる必要がある場合。2電流トリップ:外部ソースがより大きなプロセッサ電流を示しており、また電力消費を低減する又は適用可能な場合に上げる必要がある場合。3CAC管理:オンチップCACマネージャが処理アクティビティの増大に気付き、より多くのSIMDを有効化することによって性能を高める決定をする場合、又はオンチップCACマネージャがアクティビティの低下に気付き、性能の低下を伴うことなしに幾つかのSIMDを無効化することによって電力を低減する決定をする場合。B.アプリケーションベースの制御SIMDの動的な制御はアプリケーション依存でもあり得る。そのような例示的なアプリケーションは、可変の利用がエネルギーを節約することを可能にするアプリケーションを含む。例えば、アプリケーションのユーザモードで検出されるプロセッサ集約的なアプリケーション例えば3Dグラフィクス処理からそれほど集約的でないアプリケーション例えばDVD再生への変化が、実施形態に従ってSIMDの動的な制御のために用いられ得る。例えばユーザインタフェースUI入力メカニズム又はアプリケーションプログラミングインタフェースAPIを介してのユーザ入力又はアプリケーション入力もまた、SIMDの動的な制御を提供するために用いられてよい。これらの入力メカニズムは、処理アプリケーションに対して要求される電力レベルを設定するために用いられ得る。そのような入力メカニズムは、ソフトウエア例えばアプリケーション又はオペレーティングシステム、ファームウエア、ハードウエア又はこれらの種々の組み合わせを通して有効化され得る。C.作業負荷ベースの制御SIMDの動的な制御は作業負荷依存であり得る。例として、SIMDの動的な制御は、以下に記載される限定されない例示的なGPU条件の1つ以上に基きトリガーされ得る。1静的スクリーン条件無負荷TDPの5未満2アイドル条件極めて軽い負荷TDPの10未満3中負荷条件TDPの50未満4重負荷条件TDPの90未満aALU拘束bテクスチャフェッチ拘束cメモリスループット拘束5極めて重い負荷TDPの90超D.要求ベースの制御SIMDの動的な制御は、要求依存であり得るし、また性能要求及び電力要求に基き得る。ドライバはGPUのTDPをモニタリングし、そして最大TDP負荷に近づくと、SIMDを無効化してTDPを低減する。SIMDのそのような無効化は、GPUの周波数及び電圧の調整を伴い又は伴わずに達成され得る。上述の例示的な制御条件は、ドライバ及び/又はSMU管理のSMCマイクロコードを用いて検出及び実装可能である。実施形態はまた、有効化されたSIMDの数を自己制御することに専用の制御をも可能にする。SIMDを有効化及び無効化するための例示的なレジスタ設定上述の条件モード又は他のシナリオのいずれにおいても、ドライバは、レジスタGC_USER_SHADER_PIPE_CONFIGのビットフィールド例えばビットフィールド[31:16]に書き込んでSIMDを無効化及び有効化することができる。図3Aに示されるように、0を書き込むことはSIMDを有効化し、1を書き込むことはSIMDを無効化する。グラフィクス処理ユニットは、2つのシェーダエンジン例えばSE0及びSE1を含むことができる。このシナリオにおいては、実施形態は、これらのシェーダエンジンに対して異なるSIMDを有効化及び無効化することができる。このことは、図3Bに示されるようなGRBMインデックスレジスタを用いてシェーダエンジンを別個にプログラムすることによって達成可能である。図3Bを参照する。1SE0即ちシェーダエンジン0のGC_USER_SHADER_PIPE_CONFIGに書き込むためには、以下の例示的な命令が使用可能である。mmGRBM_GFX_INDEX=0x40000000//SE0を指向mmGC_USER_SHADER_PIPE_CONFIG=0xFF000000//無効化//SIMD8及びSIMD9mmGRBM_GFX_INDEX=0xC0000000//GRBMインデックスを回復//レジスタを既定値に2SE1即ちシェーダエンジン1のGC_USER_SHADER_PIPE_CONFIGに書き込むためには、以下の例示的な命令が使用可能である。mmGRBM_GFX_INDEX=0x40010000//SE1を指向mmGC_USER_SHADER_PIPE_CONFIG=0xFC030000//SIMD1無効化且つ//SIMD0mmGRBM_GFX_INDEX=0xC0000000//GRBMインデックスレジスタを既定値に回復3SE0及びSE1即ちシェーダエンジン1の両方のGC_USER_SHADER_PIPE_CONFIGに書き込むためには、以下の例示的な命令が使用可能である。mmGC_USER_SHADER_PIPE_CONFIG=0xFC0C0000//SE0及びSE1の両方のSIMD3SIMD2を無効化シェーダエンジン例えばSE0,SE1等毎に有効化されたSIMDは、作業が適用されている最中の各サブセット内の各シェーダエンジンに対して少なくとも1つのSIMDが有効化されたままである限りは、オンザフライで変化させることができる。つまり、例えば、SIMDが異なる種類の作業に対して区分化されており、即ちテセレーションシェーダのためにサイド毎に2つのSIMDがあり、且つ残りのSIMDが頂点作業及び画素作業で共有されている場合、テセレーションシェーダのための2つのSIMDは有効化されたままであってよく、また画素及び頂点のための残りのSIMDの1つは有効化されてよい。図3Cはある実施形態に従う例示的な全体動作を示すフローチャートである。ステップ302では、所与の処理動作に対して要求される性能レベルが決定される。例としては、そのような性能レベルは、アプリケーション、条件、作業負荷又は要求に依存し得る。ステップ304では、シェーダエンジンにおける異なるSIMDを有効化及び無効化するために、1つ以上のレジスタが構成される。例としては、そのような構成は、図3Bに示されるようなGRBMインデックスレジスタを用いてシェーダエンジンを別個にプログラムすることによって達成可能である。ステップ306では、ステップ304で構成されたレジスタに基づき1つ以上のレジスタが有効化又は無効化される。以下の欄は、性能と電力節約の間でのトレードオフ決定をなす上で実施形態を支援し得る例示的なプロットを示している。電力節約対性能影響SIMDが有効化されると、電力を消費する。処理アクティビティの増大に伴い、SIMDはより大きな電力を消費することになる。逆に処理アクティビティの低下に伴い、SIMDはより小さな電力を消費することになる。アイドル状態においては、SIMDは、最小ではあるがSIMDのサイズ例えば面積、セル数等に基く測定可能な量の電力を消費するはずである。図4Aのプロットは、有効化されたSIMDの数の増加に伴うコア電力の線形増加を示している。プロットは、アプリケーションがSIMD拘束であるシナリオを示している。つまり、アプリケーションは、全ての利用可能なSIMD資源を費やす電力集約的アプリケーションである。グラフィクス処理ユニットの性能はSIMDの数の増大に伴って高まるはずであるというのが一般的な想定である。しかし、この意見は、集約的処理タスクに対して一般的に真実であり得る。多くのシナリオにおいては、従来の手法は、軽処理負荷であっても全てのSIMDを有効化された状態に保つので、負荷条件に応じて電力を消費するであろう。以下の欄では、異なる種類のアプリケーションに対する例示的なワット毎SIMD性能プロットを論じる。1理想的な負荷を伴うアプリケーション図4Bは理想的な負荷を伴うアプリケーションに対するワット毎性能プロットを示す。図4Bに示されるように、SIMDの数が増えるのに従って、グラフィクス処理ユニットのワット毎性能は、一定のSIMD毎電力消費で線形的に高まる。2バランスされた負荷を伴うアプリケーション図4Cはバランスされた負荷を伴うアプリケーションに対するワット毎性能プロットを示す。図4Cに示されるように、SIMDの数が増えてもワット毎性能は維持される。3現実的な負荷を伴うアプリケーション多くの場合、現実的なシナリオにおいては、処理負荷は、ワット毎性能特性が理想的な負荷に対する特性とバランスされた負荷に対する特性との間にあるようなものである。図4Dに示されるように、SIMDの増加に伴い、ワット毎性能は最初は高まるが、その後飽和して一定レベルを保つか、場合によっては低下することもある。ワット毎性能が低下すると、相対的に低い性能利得でより大きな電力が消費される。このことは、それぞれ図4E及び図4Fに示される軽負荷及び中/重負荷プロットから判る。図5Aはバランシングを伴わない従来のSIMD負荷挙動を示すグラフ的な図500である。本発明の実施形態はまた、個々のSIMD内での利用を最大化する。利用を最大化することによって、それぞれのSIMDのオーバヘッドサイクルが低減され、追加的な電力節約が結果としてもたらされる。従来のSQブロックが対応するSIMDへと命令を発行すると、そのSIMDに対応するビジー信号が送信されて、これは典型的には13クロックサイクル502の間続く。それら13サイクルに4サイクルの作業サイクル504が続き、次いで25サイクルのアイドル又はウォーターフォールサイクル506が続く。図5Aは、アレイ図1Aのアレイ186と同様内の全てのSIMDがアクティブにされているが、各SIMDは完全には利用されていない例を示している。この例においては、各SIMDは、図5Aに示されるように単にアイドリングし又は部分的にウォーターフォーリングするだけで、38オーバヘッドサイクル1325を浪費することになる。しかし、より多くの命令が各SIMDへ発行されるのに従って、オーバヘッドサイクルの割合は小さくされ、パイプライン内のより少ないバブル及びこれに伴いよりよい利用をもたらす。図5Bは本発明の原理に従い強化された利用を示している。図5Bは本発明の実施形態に従うSIMD負荷挙動のグラフ的な図508である。図5Bはアレイ186内の2つのSIMDのみが有効化されている例を示している。しかし、図5Bにおいては、これら2つのSIMDは、上述の図5Aにおいて全ての利用可能なSIMDが行っていたのと同じ量の作業を行っている。図5Bにおいては、各SIMDの利用を最大化する負荷スキームの下で、アイドルサイクル510は13サイクルを含む。アイドルサイクル510の後に、100サイクルの作業を含む作業サイクル512が続く。作業サイクル512に続き、25サイクルの間続くアイドルサイクル514がある。図5Bにおいても38オーバヘッドが浪費されるが、それらは当該アレイの利用可能なSIMDの各々においてではなく、2つのSIMDにおいて浪費されるのみである。また、命令の発行はウォーターフォールサイクルを連続的に利用して、先行する命令の実行をコンパクトにする。これら2つの要因は組み合わされて、アクティブなSIMDに対する効果的な利用サイクルを大きく改善する。従って、図5Bの利用配置は、同じ量の作業を行い、同じレベルの性能をもたらすが、極めて小さい電力を消費する。図5Bの例示的な実施形態に示されるように、各有効化されたSIMDの利用を最大化することにより、電力が節約される。全体性能を低下させることなしに電力節約が可能である場合には、チップ効率即ち性能/ワットが増大する。図6は本発明の実施形態に従いSIMD利用を評価するために用いられる単純化されたプログラム可能参照テーブル600を示す図である。本発明の実施形態においては、SIMD利用レベルは、予め定められた期間にわたって各SIMDに対してSQにより発行された命令をカウントすることによって測定される。命令をカウントする典型的な手法を用いて、特定のSIMDの利用に対する定量的測度を推測することができる。このプロセスはアレイ186内のSIMDの各々に対して行われ、そして結果は予め定められた期間にわたって平均化される。有効化されたSIMDについて予め定められた期間にわたって平均化することにより、有効化されたSIMDの各々の総利用の公正な近似が与えられる。平均化された利用数は次いで、参照テーブル600における値と比較される。参照テーブル値に応じて、追加的なSIMDを有効化するか、又は現在アクティブなSIMDを最適な利用レベルへと無効化するかの決定がなされる。本発明の実施形態は、SIMDの現在の状態におけるSIMDの利用に関連しており、またSIMDの未来の状態に関する予測を含む。各SIMDは、2つの部分、即ちaテクスチャフェッチ関連命令及びbALU関連命令に分類される多重種の命令を実行する。従って、本発明の技術を用いて、ハードウエア及びファームウエア制御器の専用の組み合わせが、各SIMD内でのALU命令及びフェッチ命令の実行をモニタリング及び測定する。現在の利用に対しては、ALU命令及びフェッチ命令に関連する情報は、クロック毎ベースで各SIMDにおいて動的に捕獲及び計算される。即ち、予め定められた期間にわたって、各SIMDにおいて実行されるALU命令及びフェッチ命令の数がカウントされる。この数は現在の利用/SIMDを表す。ALU命令及びフェッチ命令が各SIMDにおいてカウントされている間、ウエーブフロントのような他のアクティビティ及びパイプライン内で生じているスレッド割り当ては、未来のサイクルにおけるSIMD内での実行のためにキューされる。これらウエーブフロントキュー及びスレッドキューは、これらモジュールの両方とも作業負荷をバッファリングする役割を果たすので、例えばそれぞれSPIモジュール102及び/又はSQ内に存在し得る。上述したように、SPIモジュール102は、シェーダ種類に基くウエーブフロントを生成する。所与のシェーダ種類に対してSPIモジュール102は、例えば、特定のSIMDのために特定の種類のウエーブフロントが実行されるべきであることを示すことになる。多重スレッドはSQ内の各ウエーブフロントから生成される。上述の情報はテーブル600内のエントリと比較される。テーブル600は、まさにデルタテーブルの可能な実装の例である。このテーブル600は、例えば、利用下方限界602、利用上方限界604及びSIMD増分デルタ606を含む。SIMD増分606は、例えば正又は負であり得る即ち減少までを示す。テーブル600に示されるような予め定められた表集計値を用いることによって、使用可能な範囲でSIMD利用が評価及び比較される。この比較は次いで、もっと多くのSIMDを有効化する又はアクティブなSIMDの幾つかを無効にする必要性があるかどうかを決定するために用いられる。予測及び評価は、作業を行うのに幾つのSIMDが必要であるのかを決定するときに、未来のSIMD動作に関してもなされ得る。上述の実施形態はALU命令及びフェッチ命令に焦点を当てているが、本発明はそれらに限定されない。SIMD利用を決定するために他の種類の命令を用いることもでき、それらは例えばベクターALU、スカラーALU、テクスチャフェッチ、LDS及び他の命令である。テーブル600において、ランタイムのある点で評価期間にわたって有効化される20個のSIMD例としてがあったとすると、利用数は30になる。この数は範囲608内にある図1はSE毎に13個のSIMDを有しており、また2つのSEがあるので、図示されるシステムには全部で26個のSIMDがある。従って、制御器によってなされる動作は、SIMD増分列に従って、有効化されたSIMDの40を無効化することになるはずである。結果として、8つのSIMD20個のアクティブなSIMD×40減少がシャットオフされることになり、コアは、実質的な性能影響なしに前述したようにより高い利用を達成するために、更なるウエーブフロントを残りの12個のSIMDへと押し込むことを余儀なくされる。制御器は、システム利用をモニタリングし続け、そして有効化されている資源を、入ってくる作業負荷に合うように正常に適合させる。上述の例では、制御器は、各有効化されたSIMDが80~90利用される範囲4へとシステムを収束させることになる。更に、評価期間長及びデルタテーブル値を調整することによって、制御器動作の粒度を変化させて現実世界での応用に適合させることができる。図7は本発明の実施形態に従いSIMD負荷バランシングを実装する方法700の例示的なフローチャートである。図7においてはステップ702で初期化が始まる。ステップ702では、チップはリセットを経てALU及びフェッチの命令カウント値に従って初期化される。これは例えばRLCのスクラッチメモリレジスタ内で生じ得る。テーブル600は、0~100の利用範囲をより小さな区間へと分割し、また特定の利用区間に対してアクティブ又は非アクティブにされるべきSIMDの数を特定する。ステップ704では、割り込みが発生するのを待機する。内側ループ即ち早いループ706では、係属中のウエーブフロント及びスレッドのカウントがサンプリングされる。このことは、係属中ウエーブフロントカウントを表すSPIモジュール102内のFIFOを介して行われ、また係属中スレッドカウントを表すSQのFIFOは、SIMD未来予測データを抽出するためにサンプリングされ得る。このデータは、SIMD利用が増大又は低下する傾向を表すのかを決定するために解析され得る。予め定められた数のサンプル、例えば10サンプルが取られてパラメータ化され得る。サンプル数が予め定められた最大数に達すると、プロセスは主ループ607へと移行する。例示的な主ループ607の付加的な詳細は図9に示されており、後で論じられる。図7を再び参照すると、内側ループ706及び主ループ607が終了した後、方法700は経路708に沿って割り込みステップ704へ戻る。内側ループ706の一部として、図8のサンプリングステップ800が実行される。図8はFIFOサンプリングを行うための例示的な方法800のフローチャートである。FIFOサンプリング方法800は、例えば、FIFOにおけるエントリの数をサンプリングし、そして上述した傾向データマイニングを行うことによって未来の傾向を決定する。この傾向データは、SIMD利用を評価するための二次的要因として用いられる。方法800においては、ステップ802でSQが読まれ、アレイ186内の各SIMDに対する係属中スレッドが示される。このデータは、先の読み808よりも大きいステップ804か、又は小さいステップ806か、を決定するために比較され、傾向が決定される。傾向が上昇である場合例えばSPIM100からのデータとの比較によりには、上昇フラグがセットされてよい。小さい場合には、別のフラグ下降がセットされ得る。このデータは最後の読み810として記憶される。上述したように、トレンドは、所与の作業負荷に対して必要な最適数SIMDを決定するために用いられる1つの要因である。例えば、現在の利用はゼロであるが、予測された未来の利用が30である場合、SIMDの90は無効にされてよい。一方、現在の利用はゼロであるが、未来の傾向が80の更なる作業を示している場合、性能に妥協することなく現在のSIMDの90を無効化することはできないので、現在の利用が極めて低いとしても、SIMDは減少させられない。図9は図7に示される主ループステップ607の更に詳細なフローチャートである。方法900は、他のステップからデータを収集し、このデータを用いてSIMD利用決定プロセスと共に本質的な決定を実行する。中でもステップ902においては、有効化されているSIMDの数の評価がなされる。この数は固定ではなく、例えば、ハーベスト又は縮小された構成の欠陥許容値若しくは検討された意図に依存し得る。より具体的には、ステップ902では、シェーダエンジン114及び116の各々に対して、システムは、最適化プロセスに含まれるのに適するSIMDのベースラインを確立する。もしシェーダ種類が全てのSIMDではなくSIMDのサブセットに限定されている場合には、そのサブセットはベースラインSIMDマスクから除去され、最適化プロセス内にあるとは見なされない。ステップ904では、以下の例示的な動作が行われる。0≦Δ≦63非アクティブ化simds={64-Δ/64}×active_simdsΔ=64何もせずsimds=065≦Δ≦127アクティブ化simds={Δ-64/64}×active_simdsステップ904では、ベースラインデルタ最大値が、有効化又は無効化することをアルゴリズムに伝える。次いで、ALUカウントに対応するデルタ値が参照される。デルタ値は、負荷をバランスさせるためにアクティブ/非アクティブにされる必要のある現在アクティブなSIMDの数に対するSIMDの割合を表す。デルタは0~127の値を有する。控えめにみて、より多くのSIMDをアクティブにし又は最小としてはより少ないSIMDを非アクティブにすることを促進する、より大きなデルタ値が選択され得る。デルタが中立スレッショルドを越えており、より多くのSIMDがアクティブにされるべきである場合、SIMDの数が計算され、そして利用可能なシェーダエンジンの間でバランスさせられる。デルタが中立スレッショルドを下回っており、より多くのSIMDが非アクティブにされるべきである場合、作業負荷傾向と係属中作業負荷キューの状態とをチェックすることによって、未来の負荷が十分なSIMDを確実に有するように、更なる二次的な決定がなされる。ウエーブフロントカウント及びクローズスレッドカウントが例えば減少傾向又は安定傾向を示しており且つスレッショルドを下回るものとして報告されている場合には、非アクティブ化が生じ得る。いずれかが増加傾向を示しており、又はスレッショルドを越えていると報告している場合には、非アクティブ化はなされず、また次の反復がクリーンアップするために残されない。ステップ904におけるデルタが予め定められたスレッショルドを越えている場合には、ステップ906が実施される。ステップ906では、アクティブにされるべきSIMDの数が決定され適用される。ステップ904におけるデルタが予め定められたスレッショルドより小さい場合には、技術はステップ907へ進む。ステップ907では、前述した要因に基きSIMDの数を減少させる決定がなされ、そして必要であればステップ908で処置が取られる。ステップ908はステップ906と同様であるので、追加的な詳細は論じない。上述したLBPW技術は、di/dtの悪影響の低減をも支援することができる。その結果、電圧レギュレータに対する雑音マージンを改善することができ、低コストのレギュレータの使用が可能になる。電流が高速に変化すると、これを補償するために周波数が低下させられる必要がある。周波数低下は性能の低下を結果としてもたらすことになる。di/dtが減少させられると、周波数を増大することができ、結果として性能の向上がもたらされる。di/dtの減少はまた、VDDC動作の低減を可能にし、その結果、動的な電力消費を低減することができる。本発明の実施形態の追加的な利益は、所与の熱設計電力TDPプランに対するワット毎最大性能の促進である。シェーダ計算処理能力は、TDP固定により調節することができる。これを達成するための1つの例示的な手法は、バウンディングボックスを含む。当業者によって理解されるように、バウンディングボックスは、ビニングプロセスの間にチップの動作条件を定義するときに用いられる技術である。例えばチップは異なる動作構成を有し得るので、異なる市場SKUがもたらされ得る。各SKUはTDPのためのバウンディングボックスを有する。市場SKUにおける異なるばらつきの全ては、異なるTDP値SKUに対するバウンディングボックスを有する。本発明のLBPW技術は、所与のバウンディングボックスに対して最良のワット毎性能を達成することを支援する。動作の各モードのための節約図4A~図4Fにおけるプロットから判るように、実施形態に従う電力節約は、アプリケーション毎に変化し得る。多くのアプリケーションにおいては、例えば、実施形態は性能に妥協することなく電力を節約する。そのようなアプリケーションは、SIMD処理負荷が軽いものであり得るDVD再生アプリケーションを含む。単に例示的であり限定的でない例としては、eclk=875MHz及びmclk=90MHzを伴うAMDのR770プロセッサ上では、SIMD毎電力消費は、重負荷で約4.5ワットである。より軽負荷では、実施形態に従い、クロックゲーティング及び動的なSIMD制御に起因して、電力消費は低減され得る。例えば、電力をあるレベルに固定することが必要である場合、重負荷でSIMDの数を減少させることにより顕著な節約が可能になる。ある実施形態においては、アプリケーションは、グラフィクス処理ユニットにおいて有効化又は無効化されるSIMDの数を決定することもできる。動的粒度クロックゲーティング上述したように、従来の手法においては、シェーダコンプレックスにおける全てのSIMDユニットのクロッキングは、同時に有効化されるか又は無効化されるかのいずれかである。多くのアプリケーションにおいて、全てのSIMDが作業を割り当てられるわけではない。しかし、従来の手法は、そのようなSIMDに対してクロック信号を能動的に供給し続ける。この手法はグラフィクス処理ユニットの電力消費を増大させ、非効率である。従来の手法はシェーダコンプレックスブロックのための静的なクロックゲーティングを含むことがあり、この場合、SPIによって要求が開始されると、シェーダコンプレックスブロックのクロックは、di/dt即ち電流の変化の速度回避カウント遅延を伴って、1つずつオンにされる。一旦開始されると、クロックは、シェーダコンプレックス内の多くのブロックに対する作業がない場合でも、シェーダコンプレックス全体のためにクロッキングし続ける。つまり、任意の所与の時間では、少しのSIMDのみがアクティブである。作業が一旦シェーダコンプレックスによって完了されると、クロックはdi/dt回避カウント遅延を用いて自動的にシャットオフされる。このように従来の手法においては、クロックゲーティングは本来的に静的であり、そしてシェーダコンプレックスを単一システムとして取り扱う。従来の手法とは対照的に、本発明の実施形態は、シェーダコンプレックスにおける個々のSIMDの動的粒度例えば中間粒度クロックゲーティングを達成する。使用していない論理へのクロックツリーをシャットダウンすること、及びクロックオンデマンドメカニズム例えば真クロックオンデマンドメカニズムを提供することによって、スイッチング電力が低減される。このようにしてクロックゲーティングが強化されて、SIMDがアイドルである又は作業を割り当てられていない期間に対してスイッチング電力を節約することができる。本発明の実施形態はまた、シェーダコンプレックスにおける各SIMDへのクロックの動的な制御を含む。各SIMDは、それ自身のクロックを管理するシェーダコンプレックスサブシステムとして取り扱われる。SIMDにおける各ブロック/タイルのための動的な制御もまた提供される。クロッキングは、実際の作業がSIMDに到着する前に始まることができ、またSIMDによって全ての作業が完了するまで有効化されたままでいることができる。本発明の実施形態の種々の側面がソフトウエア、ファームウエア、ハードウエア又は例えばベリログ若しくはハードウエア記述言語命令等のソフトウエアによって表されるハードウエア、又はそれらの組み合わせにおいて実装され得る。図1Aは例示的なコンピュータシステムを示す図であり、このシステムにおいては、本発明又はその部分がコンピュータ可読コードとして実装され得る。尚、本発明の種々の実施形態のシミュレーション、合成及び/又は製造は、部分的には、一般的なプログラミング言語C又はC等、例えばベリログHDL、VHDL、アルテラHDLAHDL等のハードウエア記述言語HDL、若しくは他の利用可能なプログラミングを含むコンピュータ可読コード、及び/又は回路等キャプチュアツール例えば回路キャプチュアツールの使用を通して達成され得る。このコンピュータ可読コードは、半導体、磁気ディスク、光学ディスクCDROM、DVD-ROM等を含むあらゆる既知のコンピュータ使用可能媒体内に配置され得るし、またコンピュータ使用可能例えば可読な伝送媒体例えば搬送波又はデジタル、光学的若しくはアナログベースの媒体等のあらゆる他の媒体において具現化されるコンピュータデータ信号として処理され得る。従って、コードは、インターネットを含む通信ネットワークを介して伝送され得る。上述したシステム及び技術により達成される機能及び/又は提供される構造は、プログラムコードにおいて具現化されるコアGPUコア等内に表現することができ、また集積回路の生産の一部としてハードウエアに変換され得ることが理解される。結論概要及び要約の欄ではなく、詳細な説明の欄が特許請求の範囲を解釈するために用いられることが意図されていると理解されるべきである。概要及び要約の欄は、発明者によって検討された本発明の1つ以上のしかし全部ではない例示的な実施形態を説明することができ、従って本発明及び添付の特許請求の範囲を限定することが意図されているわけではけっしてない。特定の機能の実装及びそれらの関係性を示す機能構築ブロックを補助として、本発明が上述のように説明されてきた。これらの機能構築ブロックの境界は、説明の便宜上ここでは適宜画定されてきた。特定の機能及びそれらの関係性が適切に実行される限りにおいて、代替的な境界が画定され得る。特定の実施形態の上述した説明は、本発明の一般的性質を十分に明らかにするであろうから、他者は、当業者における知識を適用することによって、過度の実験を必要とせず、本発明の一般的概念から逸脱することなく、そのような特定の実施形態を容易に修正し且つ/又は種々の応用に適応させることができる。従って、そのような適応及び修正は、ここに提示されている教示及び指針に基いて、開示されている実施形態と均等なものの意味及び範囲の範疇にあることが意図されている。ここでの用語等は、説明を目的としたものであって限定を目的としていないことが理解されるべきであり、本出願書類の用語等は教示及び指針の下で当業者によって解釈されるべきである。本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではなく、以下の特許請求の範囲及びそれらと均等なものに従ってのみ画定されるべきである。"