(57)【要約】【課題】  プロセッサによって消費されるエネルギを低減する。【解決手段】  主処理ユニットに関連付けられたサブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを監視し、サブ処理ユニットの少なくともひとつがいかなるタスクも実行しないようスケジュールされるように、それらの関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てし、いかなるタスクも実行しないようスケジュールされたサブ処理ユニットを低電力消費状態にするように命令する方法および装置を提供する。【選択図】  図４
2005267635.tif 000002
【特許請求の範囲】
【請求項１】
主処理ユニットに関連するサブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを監視し、
少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てし、
いかなるタスクも実行しないようにスケジュールされたサブ処理ユニットを低電力消費状態にするよう命令することを特徴とする方法。
【請求項２】
各サブ処理ユニットが、(i)電源割り込み回路と、(ii)クロック割り込み回路の少なくともひとつを備え、
前記電源割り込み回路と前記クロック割り込み回路のいずれかひとつを使用して、電力オフ命令に応答して、前記サブ処理ユニットを低電力消費状態にすることを特徴とする請求項１に記載の方法。
【請求項３】
前記サブ処理ユニットは、それぞれ電源と前記電源割り込み回路とを備え、
前記電源割り込み回路を使用して電力オフ命令に応答して前記電源を遮断し、所定のサブ処理ユニットを低電力消費状態にすることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記主処理ユニットは、前記サブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを含むタスク負荷テーブルを備え、
前記主処理ユニットを使用して、タスクおよび負荷における任意の変化に応答して前記タスク負荷テーブルを更新することを特徴とする請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記主処理ユニットは、前記タスク負荷テーブルに動作可能に接続されたタスク割り当てユニットを備え、
前記主処理ユニットを使用して、前記サブ処理ユニットの少なくともひとつがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てすることを特徴とする請求項４に記載の方法。
【請求項６】
所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの全てを別のサブ処理ユニットに再割り当てすることを特徴とする請求項１から５のいずれか１項に記載の方法。
【請求項７】
所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの一部をひとつまたは複数の他のサブ処理ユニットに再割り当てすることを特徴とする請求項１から５のいずれか１項に記載の方法。
【請求項８】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつを使用して、少なくともひとつのサブ処理ユニットの動的電力損失を低減するように、可変クロック周波数制御を実行することを特徴とする請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつを使用して、少なくともひとつのサブ処理ユニットの静的電力損失および動的電力損失を低減するように、可変電力制御を実行することを特徴とする請求項１から８のいずれか１項に記載の方法。
【請求項１０】
それぞれがプロセッサタスクを実行可能である複数のサブ処理ユニットと、
(i)それぞれのサブ処理ユニットによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを監視し、
(ii)少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てし、
(iii)いかなるタスクも実行しないようにスケジュールされたサブ処理ユニットに低電力消費状態に入るように指示する電力オフ命令を発行するよう動作可能な主処理ユニットと、
を含むことを特徴とする装置。
【請求項１１】
前記サブ処理ユニットが、(i)電源割り込み回路と、(ii)クロック割り込み回路の少なくともひとつを備え、それぞれのサブ処理ユニットが、電力オフ命令に応答して、所定のサブ処理ユニットを低電力消費状態にするように動作可能であることを特徴とする請求項１０に記載の装置。
【請求項１２】
各サブ処理ユニットが電源と電源割り込み回路を備え、前記電源割り込み回路は、電源オフ命令に応答して前記電源を遮断し、前記所定のサブ処理ユニットを低電力消費状態にするよう動作可能であることを特徴とする請求項１０または１１に記載の装置。
【請求項１３】
前記主処理ユニットは、前記サブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを含むタスク負荷テーブルをさらに備え、
前記主処理ユニットは、タスクおよび負荷における任意の変化に応答して前記タスク負荷テーブルを更新するよう動作可能であることを特徴とする請求項１０から１２のいずれか１項に記載の装置。
【請求項１４】
前記主処理ユニットは、前記タスク負荷テーブルに動作可能に接続されたタスク割り当てユニットを備え、
前記サブ処理ユニットの少なくともひとつがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てするように動作可能であることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記タスク割り当てユニットは、所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの全てを別のサブ処理ユニットに再割り当てするよう動作可能であることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記主処理ユニットは、前記タスク割り当てユニットに動作可能に接続された電源コントローラを備え、所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、前記タスク割り当てユニットからの指示に応答して、前記所定のサブ処理ユニットに対して電力オフ命令を発行するよう動作可能であることを特徴とする請求項１４または１５に記載の装置。
【請求項１７】
前記タスク割り当てユニットは、所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの一部をひとつまたは複数の他のサブ処理ユニットに再割り当てするよう動作可能であることを特徴とする請求項１４に記載の装置。
【請求項１８】
前記主処理ユニットは、前記タスク割り当てユニットに動作可能に接続された電源コントローラを備え、所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、前記タスク割り当てユニットからの指示に応答して、前記所定のサブ処理ユニットに対して電力オフ命令を発行するよう動作可能であることを特徴とする請求項１５に記載の装置。
【請求項１９】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつが、少なくともひとつのサブ処理ユニットの動的電力損失を低減するために、可変クロック周波数制御を実行するよう動作可能であることを特徴とする請求項１０から１８のいずれか１項に記載の装置。
【請求項２０】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつが、少なくともひとつのサブ処理ユニットの静的電力損失および動的電力損失を低減するために、可変電力制御を実行するよう動作可能であることを特徴とする請求項１０から１９のいずれか１項に記載の装置。
【請求項２１】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつが、シリコン・オン・インシュレータ製造プロセスを用いて形成されることを特徴とする請求項１０から２０のいずれか１項に記載の装置。
【請求項２２】
前記サブ処理ユニットが、実質的に同種のコンピュータアーキテクチャまたは異種のコンピュータアーキテクチャを採用していることを特徴とする請求項１０に記載の装置。
【請求項２３】
主処理ユニットに関連するサブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを監視するステップと、
少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てするステップと、
いかなるタスクも実行しないようにスケジュールされたサブ処理ユニットに低電力消費状態に入るように命令するステップと、
を実行するソフトウェアプログラムの制御下で動作するプロセッサ。
【請求項２４】
各サブ処理ユニットが、(i)電源割り込み回路と、(ii)クロック割り込み回路の少なくともひとつを備え、
前記電源割り込み回路と前記クロック割り込み回路のいずれかひとつが、電力オフ命令に応答して、前記サブ処理ユニットを低電力消費状態にすることを特徴とする請求項２３に記載のプロセッサ。
【請求項２５】
前記サブ処理ユニットは、それぞれ電源と電源割り込み回路とを備え、
前記電源割り込み回路は、前記電源オフ命令に応答して、前記電源を遮断し所定のサブ処理ユニットを低電力消費状態にすることを特徴とする請求項２３または２４に記載のプロセッサ。
【請求項２６】
前記主処理ユニットは、前記サブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを含むタスク負荷テーブルを備え、
タスクおよび負荷における任意の変化に応答して前記タスク負荷テーブルを更新するステップをさらに含むことを特徴とする請求項２３から２５のいずれか１項に記載のプロセッサ。
【請求項２７】
前記主処理ユニットは、前記タスク負荷テーブルに動作可能に接続されたタスク割り当てユニットを備え、
前記サブ処理ユニットの少なくともひとつがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てするステップをさらに含むことを特徴とする請求項２６に記載のプロセッサ。
【請求項２８】
所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの全てを別のサブ処理ユニットに再割り当てするステップをさらに含むことを特徴とする請求項２７に記載のプロセッサ。
【請求項２９】
所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの一部をひとつまたは複数の他のサブ処理ユニットに再割り当てするステップをさらに含むことを特徴とする請求項２７に記載のプロセッサ。
【請求項３０】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつを使用して、少なくともひとつのサブ処理ユニットの動的電力損失を低減するように、可変クロック周波数制御を実行することを特徴とする請求項２３に記載のプロセッサ。
【請求項３１】
前記主処理ユニットとひとつまたは複数のサブ処理ユニットのうち少なくともひとつを使用して、少なくともひとつのサブ処理ユニットの静的電力損失および動的電力損失を低減するように、可変電力制御を実行することを特徴とする請求項２３に記載のプロセッサ。
【請求項３２】
それぞれがプロセッサタスクを実行可能である複数のサブ処理ユニットと、
隣接するサブ処理ユニット間で直接に、または離間したサブ処理ユニット間でひとつまたは複数の中間的なサブ処理ユニットを通過することによって、任意の二つのサブ処理ユニット間での転送が可能となるように、前記サブ処理ユニットを円形に相互接続するバスと、を備え、
前記サブ処理ユニットが、
(i)それぞれのサブ処理ユニットによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを監視し、
(ii)関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てするように動作可能であることを特徴とする装置。
【請求項３３】
前記サブ処理ユニットがグループに編成されており、所定の一グループ内でのサブ処理ユニットのタスクの再割り当てが、該所定のグループ内でのタスクを維持することを特徴とする請求項３２に記載の装置。
【請求項３４】
少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、タスクの再割り当てが実行されることを特徴とする請求項３２に記載の装置。
【請求項３５】
いかなるタスクも実行しないようにスケジュールされた前記サブ処理ユニットが低電力消費状態に入ることを特徴とする請求項３４に記載の装置。
【請求項３６】
前記サブ処理ユニットは、それぞれのサブ処理ユニットによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを含むタスク負荷テーブルにアクセスするよう動作可能であり、
前記サブ処理ユニットは、タスクおよび負荷における任意の変化に応答して前記タスク負荷テーブルを更新するよう動作可能であることを特徴とする請求項３２に記載の装置。
【請求項３７】
前記サブ処理ユニットが、所定のサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの全てを別のサブ処理ユニットに再割り当てすることを特徴とする請求項３６に記載の装置。
【請求項３８】
それぞれがプロセッサタスクを実行可能である複数のサブ処理ユニットと、
(i)それぞれのサブ処理ユニットによって実行されるように割り当てられたプロセッサタスクとそれらに関連するプロセッサ負荷とを監視し、
(ii)少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てし、
(iii)いかなるタスクも実行しないようにスケジュールされたサブ処理ユニットに低電力消費状態に入るように指示する電力オフ命令を発行するよう動作可能な主処理ユニットと、
を含むことを特徴とするシステム。
【請求項３９】
前記主処理ユニットが、ひとつまたは複数のサブ処理ユニットからリモートに位置していることを特徴とする請求項３８に記載のシステム。
【請求項４０】
前記主処理ユニットが、ひとつまたは複数のサブ処理ユニットに対してローカルに位置していることを特徴とする請求項３８に記載のシステム。
【請求項４１】
ひとつまたは複数のサブ処理ユニットが互いにリモートに位置していることを特徴とする請求項３８に記載のシステム。
【請求項４２】
ひとつまたは複数のサブ処理ユニットが互いにローカルに位置していることを特徴とする請求項３８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムの電力消費を低減するための方法および装置に関し、より詳細には、マルチプロセッサにより損失される全電力を低減するために、システム内の複数のプロセッサにタスクを割り当てる方法および装置に関する。
【背景技術】
【０００２】
リアルタイムでマルチメディアのアプリケーションは、ますます重要になっている。これらのアプリケーションは、一秒当たり何千メガビットのデータといった極めて速い処理速度を必要とする。単一の処理ユニットでも高速の処理速度を実現できるが、一般にマルチプロセッサアーキテクチャの処理速度と一致することはできない。実際、マルチプロセッサシステムにおいては、複数のサブプロセッサが並行に（または、少なくとも協調して）動作して所望の処理結果を得ることができる。
【０００３】
マルチプロセッシング技術を使用することができるコンピュータおよびコンピューティングデバイスのタイプは、広範囲に及ぶ。コンピューティングデバイスには、パーソナルコンピュータ（ＰＣ）やサーバの他、携帯電話、モバイルコンピュータ、個人携帯情報機器（ＰＤＡ）、セットトップボックス、デジタルテレビのほか多数が含まれる。
【０００４】
マルチプロセッサシステムの設計の関心は、特にハンドヘルド型装置などの小さなパッケージ内で複数のプロセッサが使用されるとき、それらのプロセッサから発生する熱を管理する方法にある。機械的な熱管理技術を利用することもできるが、材料費や人件費が最終製品に上乗せされるため、完全に満足であるというわけにはいかない。また、機械的な熱管理技術でも、充分な冷却を得られない可能性がある。
【０００５】
マルチプロセッサシステムにおける他の関心は、特に複数のプロセッサがラップトップ・コンピュータやハンドヘルド型装置などの携帯機器で使用されるとき、利用可能な電池電力を効率的に利用することにある。実際、所与のシステムで使用されるプロセッサ数が多くなるほど、電源から消費される電力は増加する。一般に、所与のプロセッサによって消費される電力量は、プロセッサにより実行中の命令数とプロセッサが作動するクロック周波数との関数である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、プロセッサから発生する熱およびそれによって消費されるエネルギを低減する効率的なマルチプロセッシングを達成するための新規な方法と装置が当技術分野において必要とされている。
【課題を解決するための手段】
【０００７】
新規なコンピュータアーキテクチャが、上述の問題の少なくとも一部を解決するために開発された。
【０００８】
この新規なコンピュータアーキテクチャによると、マルチプロセッサシステムの全てのプロセッサは共通のコンピューティングモジュール（または、セル）から構成される。この共通のコンピューティングモジュールは一貫した構造を有し、好ましくは同一の命令セットアーキテクチャを使用する。マルチプロセッサシステムは、ひとつまたは複数のクライアント、サーバ、ＰＣ、モバイルコンピュータ、ゲーム機、ＰＤＡ、セットトップボックス、器具、デジタルテレビおよびコンピュータプロセッサを使用する他の装置で形成することができる。
【０００９】
複数のコンピュータシステムは、必要に応じてネットワークの要素（メンバ）であってもよい。一貫したモジュール構造により、マルチプロセッサシステムによるアプリケーションおよびデータの効果的かつ高速の処理が可能になり、ネットワークが使用される場合、ネットワークを介したアプリケーションおよびデータの高速な伝送が実現される。この構造は、様々なサイズおよび処理能力を有するネットワークの要素の構築と、これら要素による処理のためのアプリケーションの準備とを簡単にする。
【００１０】
基本的な処理モジュールは、プロセッサ要素（ＰＥ）である。プロセッサ要素は、処理ユニット（ＰＵ）、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）、および複数（例えば、４つ）のサブ処理ユニットを備えることが好ましく、サブ処理ユニットは、共通の内部アドレスおよびデータバスを介して接続されている。処理ユニットおよびサブ処理ユニットは、共有のダイナミックランダムアクセスメモリ（ＤＲＡＭ）と対話する。このＤＲＡＭは、クロスバーアーキテクチャを有していてもよい。処理ユニットは、サブ処理ユニットによるデータおよびアプリケーションの処理をスケジュールし調整する（orchestrate）。サブ処理ユニットは、この処理を並行にかつ独立して実行する。ＤＭＡＣは、処理ユニットおよびサブ処理ユニットによる、共有ＤＲＡＭに格納されたデータとアプリケーションに対するアクセスを制御する。
【００１１】
このモジュール構造によると、特定のコンピュータシステムによって使用されるプロセッサ要素の数は、そのシステムによって必要とされる処理能力に基づいている。例えば、サーバは４つのプロセッサ要素を使用してもよく、ワークステーションは二つのプロセッサ要素を使用し、ＰＤＡはひとつのプロセッサ要素を使用してもよい。特定のソフトウェアセルを処理するよう割り当てられたプロセッサ要素のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さと大きさによって決まる。
【００１２】
複数のプロセッサ要素は共有ＤＲＡＭと関連付けられていてもよく、また、ＤＲＡＭは複数のセクションに分離されていてもよい。これらのセクションは、それぞれ複数のメモリバンクに分離される。ＤＲＡＭの各セクションはバンクコントローラによって制御されてもよく、プロセッサ要素のＤＭＡＣはそれぞれ各自のバンクコントローラにアクセスしてもよい。この構成において、各プロセッサ要素のＤＭＡＣは、共有ＤＲＡＭの任意の部分にアクセスすることができる。
【００１３】
この新規なコンピュータアーキテクチャは、ネットワークを介してデータとアプリケーションを送信し、ネットワークの要素間でのデータとアプリケーションを処理する新規なプログラミングモデルを採用する。このプログラミングモデルは、ネットワークの任意の要素による処理のために、ネットワークを介して送信されるソフトウェアセルを使用する。各ソフトウェアセルは同一の構造を有し、アプリケーションとデータの両方を含んでもよい。このモジュール式コンピュータアーキテクチャによって提供される高速処理および高速伝送速度の結果、セルは急速に処理されることができる。アプリケーションのコードは、同一の共通命令セットおよびＩＳＡ（命令セットアーキテクチャ）に基づいている。各ソフトウェアセルは、グローバルＩＤと、セルの処理に必要とされる計算リソースの量を記述する情報とを含むことが好ましい。全ての計算リソースが同一の基本構造を有し同一のＩＳＡを使用するので、この処理を実行している特定のリソースはネットワーク上のどこに位置してもよいし、動的に割り当てられてもよい。
【００１４】
本発明のひとつまたは複数の態様によると、主処理ユニットに関連付けられたサブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクと、それらに関連するプロセッサ負荷を監視し、少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てし、いかなるタスクも実行しないようにスケジュールされたサブ処理ユニットに対して、低電力消費状態に入るよう命令することを含む方法が提供される。
【００１５】
サブ処理ユニットはそれぞれ、(i)電源割り込み回路と、(ii)クロック割り込み回路のうち少なくともひとつを備え、前記電源割り込み回路と前記クロック割り込み回路の少なくともひとつを使用して、電源オフ命令に応答して、前記サブ処理ユニットを低電力消費状態にすることをさらに含んでもよい。好ましくは、前記サブ処理ユニットはそれぞれ電源と電源割り込み回路を備え、本方法は、電源オフ命令に応答して、電源割り込み回路を使用して電源をシャットダウンし、所定のサブ処理ユニットを低電力消費状態にすることを含む。
【００１６】
主処理ユニットは、サブ処理ユニットによってそれぞれ実行されるように割り当てられたプロセッサタスクと、それに関連するプロセッサ負荷とを含むタスク負荷テーブルを備えることが好ましく、本方法は、主処理ユニットを使用して、タスクおよび負荷の任意の変化に応答してタスク負荷テーブルを更新することをさらに含むことが好ましい。主処理ユニットは、前記タスク負荷テーブルに動作可能に結合されたタスク割り当てユニットを備えることが好ましく、本方法は、主処理ユニットを使用して、少なくともひとつのサブ処理ユニットがいなかるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいてタスクの少なくとも一部を再割り当てすることをさらに含むことが好ましい。
【００１７】
本方法は、前記サブ処理ユニットのうち所定のひとつがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットの全タスクを別のサブ処理ユニットに再割り当てすることを含んでもよい。代替的に、またはこれに加えて、本方法は、前記サブ処理ユニットのうち所定のひとつがいかなるタスクも実行しないようスケジュールされるように、関連するプロセッサ負荷に基づいて、前記所定のサブ処理ユニットのタスクの一部を別のひとつまたは複数のサブ処理ユニットに再割り当てすることを含んでもよい。
【００１８】
本発明のひとつまたは複数のさらなる態様によると、それぞれがプロセッサタスクを実行するよう動作可能である複数のサブ処理ユニットと、(i)サブ処理ユニットによってそれぞれ実行されるように割り当てられたプロセッサタスクと、それに関連するプロセッサ負荷とを監視し、(ii)前記サブ処理ユニットのうちの少なくともひとつがいかなるタスクも実行しないようスケジュールされるように、それらの関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てし、(iii)いかなるタスクも実行しないようスケジュールされたサブ処理ユニットが低電力消費状態に入るべきことを指示する電源オフ命令を発行するように動作可能な主処理ユニットと、を含む装置が提供される。
【００１９】
本発明のひとつまたは複数のさらなる態様によると、主処理ユニットに関連付けられているサブ処理ユニットのそれぞれによって実行されるように割り当てられたプロセッサタスクと、それに関連するプロセッサ負荷とを監視するステップと、少なくともひとつのサブ処理ユニットがいかなるタスクも実行しないようスケジュールされるように、それらの関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てするステップと、いかなるタスクも実行しないようにスケジュールされたサブ処理ユニットに対して、低電力消費状態に入るように命令するステップと、を実行するソフトウェアプログラムの制御下で動作可能な主プロセッサが提供される。
【００２０】
本発明の他の態様、特徴および利点は、添付の図面とともに本明細書においてなされる説明から当業者にとって明らかである。
【発明を実施するための最良の形態】
【００２１】
本発明の様々な態様を文脈に載せるために、図１に示す静的電力曲線、動的電力曲線および全電力曲線のグラフを参照する。これらの電力曲線は、この種のプロセッサの処理負荷の関数として、処理ユニットによって消費される電力特性の例である。
【００２２】
静的電力Ｐｓは、リーク電流Ｉｌに、処理ユニットの動作電圧Ｖｄｄを乗じた値に等しく、Ｐｓ＝Ｉｌ×Ｖｄｄと表すことができる。リーク電流Ｉｌと動作電圧Ｖｄｄが一定であるとき、図１に示すように、静的電力Ｐｓはプロセッサの処理負荷の関数として一定である。プロセッサによって損失される動的電力Ｐｄは、Ｐｄ＝Ｓｆ×Ｃ×Ｆ×Ｖｄｄ２と表すことができる。ここで、Ｓｆはプロセッサの処理負荷であり、Ｃはプロセッサの等価静電容量であり、Ｆはクロック周波数であり、Ｖｄｄは動作電圧である。Ｓｆは、特定のタスクまたはタスクのグループを実行するためにオン／オフされる処理ユニットのトランジスタ数を表す。等価静電容量Ｃは、タスクまたは複数のタスクと関連するトランジスタの総静電容量を表す。Ｐｄについての式を分析すると、図１に示すように、動的電力Ｐｄが処理負荷Ｓｆの一次関数として上昇することが分かる。
【００２３】
任意の所定時点において、プロセッサによって消費される全電力Ｐｔは、静的電力と動的電力の合計に等しい（つまり、Ｐｔ＝Ｐｓ＋Ｐｄ）。周知の電圧／周波数制御（voltage/frequency control：ＶＦＣ）技術を使用すると、全電力Ｐｔを低減することができる。図２から分かるように、ＶＦＣ技術を使用すると、動作電圧Ｖｄｄとクロック周波数Ｆのうち少なくともひとつは、プロセッサから要求される性能の関数として変化する。例えば、任意の所定時点で、プロセッサから比較的低レベルの性能のみが要求される場合、動作電圧Ｖｄｄおよびクロック周波数Ｆの一方または両方を低減することができる。ＰｓおよびＰｄについての式によると、動作電圧Ｖｄｄを低減すると、静的電力Ｐｓと動的電力Ｐｄが減少する。クロック周波数Ｆのみを低減すると、動的電力Ｐｄのみが減少する。
【００２４】
図２に示すように、ＶＦＣ技術を用いたときの静的電力（Ｐｓ（ＶＦＤ）と表記する）は、ＶＦＣ技術が使用されないときの静的電力Ｐｓよりも一般的に低い。詳細には、静的電力Ｐｓ（ＶＦＤ）は、処理負荷Ｓｆの関数として、かなり低いレベルから高レベルまで線形に増加する。同様に、ＶＦＣ技術を用いたときの動的電力（Ｐｄ（ＶＦＣ）と表記する）は、ＶＦＣ技術を用いないときの動的電力Ｐｄよりも一般的に低い。詳細には、動的電力Ｐｄ（ＶＦＣ）は、比較的低いレベルから始まり、処理負荷Ｓｆの関数として二次関数的な特徴を呈する。これは、動的電力Ｐｄ（ＶＦＣ）が、動作電圧Ｖｄｄの二乗の関数であるためである。
【００２５】
図２の曲線から分かるように、ＶＦＣ技術を用いたときの総電力は、ＶＦＣが使用されないときの総電力よりかなり低くすることができる。残念なことに、ＶＦＣの使用の有無にかかわらず、プロセッサの電力損失の管理の問題は存続する。実際のところ、ムーアの法則によると、プロセッサの規模は１８ヵ月ごと２倍に増加する。プロセッサの規模が増加するにつれて、静的電力Ｐｓも増加する。近い将来、静的電力Ｐｓは、動的電力Ｐｄよりも重要にさえなりうる。したがって、静的電力Ｐｓをさらに制御するための技術が考慮されている。
【００２６】
静的電力Ｐｓを低減するひとつの手法は、トランジスタ閾値電圧（Ｖｔｈ）技術を使用する。静的電力Ｐｓが、Ｐｓ＝Ｉｌ×Ｖｄｄで表されることを思い出されたい。ここで、Ｉｌはリーク電流であり、Ｖｄｄはプロセッサの動作電圧である。リーク電流Ｉｌは、プロセッサ規模の関数であって絶えず増加しており、かつ、１／ｅＶｔｈにも比例する。ここで、Ｖｔｈは、プロセッサの実装に利用されるトランジスタの閾値電圧である。したがって、リーク電流Ｉｌを減らすためには、プロセッサの実装に利用されるトランジスタの閾値電圧Ｖｔｈを増加することが望ましく、これによって静的電力Ｐｓを低減することができる。
【００２７】
残念なことに、この手法に対する重要な問題が二つある。ひとつは、クロック周波数に悪影響を与えることであり、もうひとつは、特定のプロセッサの製造シナリオにおいて容易には採用されないことである。前者に関して、クロック周波数Ｆは、（Ｖｄｄ−Ｖｔｈ)２の関数である。したがって、閾値電圧Ｖｔｈを増加させると、プロセッサの理論上のクロック周波数Ｆが減少しなければならない。ＶＦＣ技術を使用するためにクロック周波数Ｆを減少させることを望んだとしても、利用可能な最大クロック周波数Ｆを制限したくはない。
【００２８】
後者に関して、閾値電圧の制御はバルクＣＭＯＳプロセスに対して適用できるが、シリコン・オン・インシュレータ（ＳＯＩ）プロセスなどの他のプロセスで採用することは非常に困難である。実際、回路の電界効果トランジスタ（ＦＥＴ）のボディ（バルク）端子とソース端子の間の電圧関係を変化させることによって、バルクＣＭＯＳ回路において、実用的な電圧閾値Ｖｔｈの制御を達成することができる。バルクＣＭＯＳプロセスは、プロセッサのＦＥＴトランジスタの製造時にボディ端子の使用を要求するので、バルクＣＭＯＳプロセスを利用して製造されるプロセッサでは比較的容易に達成される。したがって、各トランジスタのボディ端子とソース端子の間の電圧関係を容易に制御することができる。対照的に、ＳＯＩプロセスは、バルク／ボディ端子の使用を要求しない。したがって、ＳＯＩの文脈においては、閾値電圧Ｖｔｈの制御技術を使用するにためは、ボディ／バルク端子を使用するプロセスの変更が必要となるが、これは、回路のＦＥＴトランジスタ間の間隔と実装の複雑さに悪影響を与える。
【００２９】
しかしながら、本発明にしたがったマルチプロセッシングシステムを利用すれば、有利な電力管理技術を実現できることが発見された。この点に関して、図３は、本発明のひとつまたは複数の態様にしたがったマルチプロセッサシステム１００を示す。マルチプロセッサシステム１００は、バス１０８を介してＤＲＡＭ等の共有メモリ１０６に接続される複数のプロセッサ１０２を含む。プロセッサ１０２は、任意の数を使用可能である。共有ＤＲＡＭ１０６が必ずしも必要とされないことに注意する。このことを示すために、図３では共有ＤＲＡＭ１０６を点線で示してある。実際、ひとつまたは複数の処理ユニット１０２は各自のメモリ（図示せず）を使用してもよく、共有ＤＲＡＭ１０６がある必要はない。
【００３０】
プロセッサ１０２のうちのひとつ（例えば、処理ユニット１０２Ａ）は、好ましくは主処理ユニットである。他の処理ユニット１０２（例えば、処理ユニット１０２Ｂ、１０２Ｃ、１０２Ｄ）は、好ましくはサブ処理ユニット（ＳＰＵ）である。処理ユニット１０２は、周知のコンピュータアーキテクチャのいずれかを使用して実装することができる。処理ユニット１０２の全てが同一のアーキテクチャを使用して実装される必要はない。実際、それらは異種の構成でも同種の構成であってもよい。動作中に、主処理ユニット１０２Ａは、サブ処理ユニット１０２Ｂ〜１０２Ｄがデータおよびアプリケーションの処理を並行にかつ独立して実行するように、サブ処理ユニット１０２Ｂ〜１０２Ｄによるデータおよびアプリケーションの処理をスケジューリングし調整する（orchestrate）ことが好ましい。
【００３１】
主処理ユニット１０２Ａは、サブ処理ユニット１０２Ｂ〜１０２Ｄに対してローカル（近接箇所）に配置されていてもよく、例えば、同一チップ、同一パッケージ、同一回路基盤または同一製品内にあってもよいことに注意する。代替的に、主処理ユニット１０２Ａはサブ処理ユニット１０２Ｂ〜１０２Ｄからリモート（遠隔箇所）に位置していてもよく、例えば、バス、インターネットなどの通信ネットワークなどを介して接続可能な異なる製品内に位置していてもよい。同様に、サブ処理ユニット１０２Ｂ〜１０２Ｄは、互いにローカルにまたはリモートに位置していてもよい。
【００３２】
図４は、基本処理モジュール、すなわちプロセッサ要素２０１を利用する好適なマルチプロセッサシステムのブロック図である。図示するように、プロセッサ要素２０１は、Ｉ／Ｏインタフェース２０２と、処理ユニット（ＰＵ）２０３と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）２０５と、複数のサブ処理ユニット（ＳＰＵ）、すなわち、ＳＰＵ２０７、ＳＰＵ２０９、ＳＰＵ２１１およびＳＰＵ２１３とを含む。ローカル（または、内部）ＰＥバス２２３は、ＰＵ２０３と、ＳＰＵと、ＤＭＡＣ２０５と、メモリインタフェース２１５との間でデータおよびアプリケーションを送信する。ローカルＰＥバス２２３は、例えば、従来のアーキテクチャを有していてもよいし、パケットスイッチネットワークとして実装されてもよい。パケットスイッチネットワークとしての実装は、より多くのハードウェアを必要とするが、利用可能な帯域幅が増加する。
【００３３】
プロセッサ要素２０１は、デジタルロジックを実装する様々な方法を使用して構成されることができる。しかしながら、プロセッサ要素２０１は、シリコン基板上の相補型金属酸化膜半導体（ＣＭＯＳ）を使用する単一の集積回路として構成されることが好ましい。基板の代替的材料はガリウム・ヒ素、ガリウム・アルミニウム・ヒ素および多様なドーパントを使用するいわゆるＩＩＩ−Ｂ合成物を含む。プロセッサ要素２０１は、超電導材料、例えば高速単一磁束量子（ＲＳＦＱ）論理回路を使用して実装することもできる。
【００３４】
プロセッサ要素２０１は、高帯域メモリ接続２２７を通して、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）２２５と密接に関連付けられる。ＤＲＡＭ２２５は、プロセッサ要素２０１のメイン（または、共有）メモリとして機能する。ＤＲＡＭ２２５は好ましくはダイナミックランダムアクセスメモリであるが、ＤＲＡＭ２２５は、例えばスタティックＲＡＭ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリまたはホログラフィックメモリなどの他の手段を用いて実装されてもよい。ＤＭＡＣ２０５およびメモリインタフェース２１５は、ＤＲＡＭ２２５と、プロセッサ要素２０１のＳＰＵとＰＵ２０３の間のデータ転送を容易にする。サブ処理ユニットおよびＰＵ２０３に対して、ＤＭＡＣ２０５および／またはメモリインタフェース２１５が一体にまたは別々に配置されていてもよい点に注意する。実際、図示した別々の構成の代わりに、ＤＭＡＣ２０５の機能および／またはメモリインタフェース２１５の機能は、ＳＰＵとＰＵ２０３のうちのひとつまたは複数（好ましくは全て）と一体であってもよい。
【００３５】
例えば、ＰＵ２０３は、データおよびアプリケーションの独立処理が可能な標準のプロセッサであってもよい。動作中に、ＰＵ２０３は、ＳＰＵによるデータおよびアプリケーションの処理をスケジュールし調整する。ＳＰＵは、単一命令複数データ（ＳＩＭＤ）プロセッサであることが好ましい。ＰＵ２０３の制御のもと、ＳＰＵはこれらのデータおよびアプリケーションの処理を並行にかつ独立して実行する。ＤＭＡＣ２０５は、ＰＵ２０３およびＳＰＵによる、共有ＤＲＡＭ２２５に格納されたデータおよびアプリケーションへのアクセスを制御する。ＰＵ２０３が、主処理ユニットの役割を引き受けているサブ処理ユニットのひとつまたは複数によって実装されてもよいことに注意する。
【００３６】
プロセッサ要素２０１などのプロセッサ要素の数は、統合またはパッケージングされて、強化された処理能力を提供してもよい。
【００３７】
図５は、サブ処理ユニット４００の構造および機能を示す。サブ処理ユニット４００は、ローカルメモリ４０６、レジスタ４１０、ひとつまたは複数の浮動小数点ユニット４１２およびひとつまたは複数の整数ユニット４１４を備える。しかしながら、必要な処理能力に応じて、より多数またはより少数の浮動小数点ユニット４１２および整数ユニット４１４を使用してもよい。好ましい実施形態では、ローカルメモリ４０６は１２８キロバイトの記憶領域を有し、レジスタ４１０の容量は１２８×１２８ビットである。浮動小数点ユニット４１２は、毎秒３２０億回の浮動小数点演算速度（３２ＧＦＬＯＰＳ）で動作することが好ましく、整数ユニット４１４は、毎秒３２０億回の演算速度（３２ＧＯＰＳ）で動作することが好ましい。
【００３８】
好ましい実施形態では、ローカルメモリ４０６は２５６キロバイトの記憶領域を有し、レジスタ４１０の容量は１２８×１２８ビットである。プロセッサタスクが共有ＤＲＡＭ２２５を使用しては実行されないことに注意する。むしろ、タスクは所定のサブ処理ユニットのローカルメモリ４０６にコピーされ、ローカルに実行される。
【００３９】
ローカルメモリ４０６は、キャッシュメモリであってもキャッシュメモリでなくてもよい。ＳＰＵのためのキャッシュ整合性サポートは、不要であることが好ましい。代わりに、ローカルメモリ４０６はスタティックランダムアクセスメモリ（ＳＲＡＭ）として構築されることが好ましい。ＰＵ２０３は、ＰＵ２０３により起動されるダイレクトメモリアクセスのために、キャッシュ整合性サポートを必要としてもよい。しかしながら、キャッシュ整合性サポートは、サブ処理ユニット４００により開始されるダイレクトメモリアクセス、または外部装置との間のアクセスについては不要である。
【００４０】
サブ処理ユニット４００は、サブ処理ユニット４００との間でアプリケーションおよびデータの送受信をする内部バス４０４をさらに備える。サブ処理ユニット４００は、サブ処理ユニット４００との間でアプリケーションおよびデータの送受信をするためのバスインタフェース（Ｉ／Ｆ）４０２をさらに備える。好ましい実施形態では、バスＩ／Ｆ４０２は、サブ処理ユニット４００内に一体的に配置されるＤＭＡＣ（図示せず）に接続される。ＤＭＡＣは、図５に示すように、外部に配置されてもよい点に注意する。一対のバスは、一体的に配置されたＤＭＡＣをバスＩ／Ｆ４０２とローカルメモリ４０６の間に相互接続する。バスは、好ましくは２５６ビット幅である。好ましい実施形態では、内部バス４０４は１０２４ビット幅である。
【００４１】
サブ処理ユニット４００は、内部バス４０８、４２０、４１８をさらに備える。好ましい実施形態では、内部バス４０８は２５６ビットの幅を有し、ローカルメモリ４０６とレジスタ４１０の間の通信を提供する。バス４２０および４１８は、それぞれ、レジスタ４１０と浮動小数点ユニット４１２間の通信、およびレジスタ４１０と整数ユニット４１４の間の通信を提供する。好ましい実施形態では、レジスタ４１０から浮動小数点ユニットまたは整数ユニットへのバス４１８および４２０のバス幅は３８４ビットであり、浮動小数点ユニット４１２または整数ユニット４１４からレジスタ４１０へのバス４１８および４２０のバス幅は、１２８ビットである。浮動小数点ユニット４１２または整数ユニット４１４からレジスタ４１０へのバス幅より、レジスタ４１０から両ユニットへのバス幅が大きいため、処理の間、レジスタ４１０からより大きいデータフローを収容できる。各計算のために、最大で３ワードが必要である。しかしながら、各計算の結果は、通常１ワードのみである。
【００４２】
サブ処理ユニット４００（および／または図３のサブ処理ユニット１０２のいずれか）は、電源割り込み回路３００およびクロック割り込み回路３０２のうちの少なくともひとつを備える。電源割り込み回路３００を使用するとき、サブ処理ユニット４００の電源は、外部電源３０４であっても内部電源３０６であってもよい。電源が内部に配置されることが最も好ましい。電源割り込み回路３００は、ライン３０８上の命令信号に応答して、サブ処理ユニット４００を低電力消費状態にするように動作可能であることが好ましい。特に、命令されたとき、電源割り込み回路３００は、内部電源３０６からサブ処理ユニット４００の回路への電力の配給を遮断（シャットダウン）するかまたは中断し、これによって、サブ処理ユニット４００を遮断してわずかな電力を消費するか、または電力を消費しないようにすることが好ましい。代替的に、外部電源３０４を使用するとき、電源割り込み回路３００は、ライン３０８上の命令に応答して、外部電源からサブ処理ユニット４００への電力の供給を中断することが好ましい。
【００４３】
同様に、クロック割り込み回路３０２を使用するとき、システムクロックが内部または外部のいずれで発生されても、サブ処理ユニット４００へのシステムクロックを中断することによって、サブ処理ユニット４００を低電力消費状態にするよう動作可能であることが好ましい。サブ処理ユニット４００を低電力消費状態にすることに関する詳細については後述する。
【００４４】
図６は、本発明のひとつまたは複数の態様にしたがったＰＵ２０３の特定部分のブロック図である。特に、ＰＵ２０３は、タスク負荷テーブル５０２と、タスク割り当てユニット５０４と、ＰＳＵ（またはクロック）コントローラ５０６とを備える。図７を参照して、タスク負荷テーブル５０２は、プロセッサ要素２０１のＳＰＵそれぞれによって実行されるよう割り当てられたプロセッサタスクと関連するプロセッサ負荷とを含むことが好ましい。当業者にとって明らかであるように、タスク負荷テーブル５０２は、ハードウェア、ファームウェア、またはソフトウェアで実現することができ、タスク負荷テーブル５０２は、ＰＵ５００上で実行中の適切なソフトウェアを利用して実装されることが好ましい。再び図６を参照して、タスク割り当てユニット５０４は、タスク負荷テーブル５０２に動作可能に接続される。タスク割り当てユニット５０４は、ＳＰＵのうちの少なくともひとつがいかなるタスクも実行しないようスケジュールされるように、それらの関連するプロセッサ負荷に基づいて少なくとも一部のタスクを再割り当てするように動作可能である。
【００４５】
例えば、図７は、ＳＰＵ１がタスクＡとタスクＢを実行するようスケジュールされていることを示す。ここで、タスクＡは０．１の関連プロセッサ負荷を有し、タスクＢは０．３の関連プロセッサ負荷を有する。したがって、ＳＰＵ１のアイドル（idle）は、０．６である。ＳＰＵ２は、それぞれの関連プロセッサ負荷が０．０５、０．０１、０．１および０．３である、タスクＣ、タスクＤ、タスクＥおよびタスクＦを実行するようスケジュールされている。したがって、ＳＰＵ２のアイドルは０．５４である。ＳＰＵ３は、それぞれの関連プロセッサ負荷が０．７および０．３である、タスクＧおよびタスクＨを実行するようスケジュールされている。ＳＰＵ３のアイドルはない。最後に、ＳＰＵ４は、それぞれの関連プロセッサ負荷が０．１５、０．０５および０．７である、タスクＩ、タスクＪおよびタスクＫを実行するようにスケジュールされている。したがって、ＳＰＵ４のアイドルは０．１である。
【００４６】
タスク割り当てユニット５０４は、タスク負荷テーブル５０２内の情報を利用して、少なくともひとつのＳＰＵからひとつまたは複数の他のＳＰＵにタスクを再割り当てするよう動作可能であることが好ましい。図８は、タスク割り当てユニット５０４によって、ＳＰＵ１からのタスクがＳＰＵ２に再割り当てされる方法の一例を示す。より詳細には、タスク割り当てユニット５０４は、タスクＡおよびタスクＢの実行に必要な総負荷（つまり、０．４）が、ＳＰＵ２に関連するアイドル量より少ないことを判定するように動作可能であってもよい。このように、タスク割り当てユニット５０４は、タスクＡおよびＢの両方を、ＳＰＵ１からＳＰＵ２に再割り当て可能であることを判定してもよい。
【００４７】
図９を参照して、タスク割り当てユニット５０４は、代替的に、ＳＰＵ１からのタスクを、例えばＳＰＵ２およびＳＰＵ４である他の二つ以上のＳＰＵに割り当ててもよい。また、前記判定は、移動中の各タスクに関連する負荷および他の参加しているＳＰＵのアイドル容量とに基づいてなされることが好ましい。後述の実施例とともに、図１０は、タスク割り当てユニット５０４がＳＰＵ１からのタスクを再割り当てした後のタスク負荷テーブル５０２の状態を示す。詳細には、ＳＰＵ１は１．０のアイドル特性を持つ。ＳＰＵ２は、０．２４のアイドル特性を持つ。ＳＰＵ３は、０．０のアイドル特性を持つ。ＳＰＵ４は、０．０のアイドル特性を持つ。
【００４８】
タスク割り当てユニット５０４からの指示に応答して、ＰＳＵコントローラ５０６は、ＳＰＵ１が低電力消費状態に入るべきことを示す命令をライン３０８を介して発行する。図５を参照して述べたように、この命令により、電源割り込み回路３００およびクロック割り込み回路３０２のうち少なくともひとつが、ＳＰＵ１を低電力消費状態にするように作用する。関連するプロセッサ負荷が残りのＳＰＵのアイドル容量を超過する追加の処理タスクを実行する必要がある場合、ＰＳＵコントローラ５０６は、ＳＰＵ１に対して低電力消費状態から離脱するよう指示を与えるように動作可能であることが好ましい。これによって、そのようなタスクをさらに処理する能力が得られる。
【００４９】
図１１を参照して、ＳＰＵの全てによって消費される全電力Ｐｔは、実行されるべきタスクの適当な配分を通して有利に最小化することができる。実際、図７の割り当てにより、処理要素の全電力Ｐｔは、ＳＰＵ１、ＳＰＵ２、ＳＰＵ３およびＳＰＵ４によって損失される電力の合計である。他方、図１０の割り当てにより、プロセッサ要素によって損失される全電力は、ＳＰＵ２、ＳＰＵ３およびＳＰＵ４によって損失される電力の合計である。図７の割り当てと比較して、図１０の割り当てではＳＰＵ２とＳＰＵ４の処理負荷が増加するものの、全電力消費は低くなる。これは、ＳＰＵ１による静的電力Ｐｓを完全に避けられるためである。再び図１１に戻り、図７の割り当てにより、ＳＰＵは０．４の処理負荷を有し、これは０．１２５単位の電力損失となる。ＳＰＵ２、ＳＰＵ３およびＳＰＵ４の総処理負荷は、０．２３６であり、０．３７５の関連する電力損失をともなう。したがって、図７のタスク割り当ての全電力Ｐｔは、０．５単位である。他方、図１０のタスク割り当ては、ＳＰＵ１について処理負荷ゼロであり、ＳＰＵ２、ＳＰＵ３およびＳＰＵ４についての全処理負荷は２．７６である。これによって、全電力Ｐｔは０．３８４となり、２３．２％改善する。
【００５０】
図１２は、本発明のひとつまたは複数のさらなる態様を示すブロック図である。本発明のこの実施形態では、マルチプロセッサシステム５５０は、内部バス５５２を経由して順番に相互接続される複数のサブ処理ユニットＳＰＵ０〜ＳＰＵ７を備える。ＳＰＵのひとつから別のＳＰＵへのプロセッサタスクの転送は、隣接するＳＰＵ間に転送がない限り、ひとつまたは複数の直結されたＳＰＵを通って順次運ばれてもよい。例えば、ＳＰＵ０からＳＰＵ１へのプロセッサタスクの移動は、内部バス５５２を介して、ＳＰＵ０からＳＰＵ１に単純に転送されてもよい。他方、ＳＰＵ０からＳＰＵ３へのプロセッサタスクの移動は、ＳＰＵ１とＳＰＵ２を通過してもよいし、またはＳＰＵ７、ＳＰＵ６、ＳＰＵ５およびＳＰＵ４を通過してもよい。この円形の構造は、ＳＰＵが線形に（円形でなく）順に相互接続されているバンパツーバンパ（bumper-to-bumper）構成よりも好ましい。実際、線形の構成では、バスの末端に配置されているＳＰＵ間でプロセッサタスクを転送する際に、過度のレイテンシが存在しうる。しかしながら、図１２の円形構成では、プロセッサタスクはバス２５２を通って二方向のいずれにも転送できるので、レイテンシが削減される。
【００５１】
マルチプロセッサシステム５５０は、ＳＰＵ間でのタスクの割り当ておよび／または移動を管理するための主処理ユニットまたはＰＵを備えないことに注意されたい。その代わりに、図６から１０を参照して上述したのと実質的に同様であってよいタスクテーブルは、ＳＰＵ間で共有されてもよいし、および／またはＳＰＵ間で分散されてもよい。いずれにせよ、ＳＰＵは、タスク負荷テーブル５０２を利用してＳＰＵ間でプロセッサタスクを移動して、本明細書の他の実施形態で詳細に説明した電力管理の利点を実現する。
【００５２】
図１２の円形態様によってでさえ、構成の末端、例えばＳＰＵ０とＳＰＵ４の間で、プロセッサタスクを転送することに関連して、レイテンシや他の処理上の問題が出現しうることに注意する。したがって、ＳＰＵを二つ以上のグループに分離することが望ましい。例えば、図１３（Ａ）に示すように、ＳＰＵ０、ＳＰＵ１、ＳＰＵ２をグループＡに組織し、ＳＰＵ３、ＳＰＵ４、ＳＰＵ５をグループＢに組織することができる。この構成では、プロセッサタスクは所定のグループ内のＳＰＵ間で転送されるだけであり、これによって、効率的なマルチタスクのためのレイテンシ問題および／または他の障害が少なくなる。さらに、タスクテーブルの任意の共有および／または分配を所定のグループのＳＰＵに限定することができ、これによって、タスク処理およびタスク移動の効率性が向上する。図１３（Ｂ）および図１３（Ｃ）は、ＳＰＵの代替的なグループ化および許容可能なタスク転送を示す。当業者であれば、本発明の精神と範囲から逸脱することなく、システム内のＳＰＵの数を含む多くの他の修正が可能であることを認めるであろう。
【００５３】
本明細書において特定の実施形態を参照して本発明を記載したが、これらの実施形態が単に本発明の原理および応用を例示するものにすぎないことは理解されよう。したがって、例示した実施形態に多数の修正を施すことができることが理解され、また、その他の構成を、添付の特許請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく考案することができる。
【図面の簡単な説明】
【００５４】
【図１】マルチプロセッサシステムの処理負荷に対する静的電力、動的電力および全電力の曲線を示す図である。
【図２】可変電圧／クロック周波数制御技術を使用するマルチプロセッサシステムの処理負荷に対する静的電力、動的電力および全電力の曲線を示す図である。
【図３】本発明のひとつまたは複数の態様にしたがったマルチプロセッサシステムのブロック図である。
【図４】本発明にしたがったプロセッサ要素の典型的な構造を示す図である。
【図５】本発明にしたがった典型的なサブ処理ユニットの構造を示す図である。
【図６】本発明のひとつまたは複数の態様にしたがった主処理ユニットの図である。
【図７】本発明のひとつまたは複数の態様にしたがった図５のメインプロセッサのタスク負荷テーブルである。
【図８】本発明のひとつまたは複数の態様にしたがって他のサブ処理ユニットへタスクを再割り当てする図７のタスク負荷テーブルを示す図である。
【図９】本発明のひとつまたは複数の態様にしたがって他の二つのサブ処理ユニットへタスクを再割り当てする図７のタスク負荷テーブルを示す図である。
【図１０】少なくともひとつのサブ処理ユニットがスケジュールされたタスクを有しないように、本発明のひとつまたは複数の態様にしたがってタスクを再割り当てする図７のタスク負荷テーブルを示す図である。
【図１１】本発明のひとつまたは複数の態様にしたがって図６の主処理ユニットを使用するマルチプロセッサシステムの処理負荷に対する静的電力、動的電力および全電力の曲線を示す図である。
【図１２】本発明のひとつまたは複数の態様にしたがったタスク移動の方向を示すブロック図である。
【図１３】（Ａ）、（Ｂ）、（Ｃ）は、本発明の様々な態様にしたがったタスク移動の方向を示す図である。
【符号の説明】
【００５５】
１０２  処理ユニット、  ２０１  プロセッサ要素、  ２０３  処理ユニット（ＰＵ）、  ２０７、２０９、２１１、２１３  サブ処理ユニット（ＳＰＵ）、  ３００  電源割り込み回路、  ３０２  クロック割り込み回路、  ３０４  外部電源、  ３０６  内部電源、  ５０２  タスク負荷テーブル、  ５０４  タスク割り当てユニット、  ５０６  ＰＳＵコントローラ。
【図１】
2005267635.tif 000003
【図２】
2005267635.tif 000004
【図３】
2005267635.tif 000005
【図４】
2005267635.tif 000006
【図５】
2005267635.tif 000007
【図６】
2005267635.tif 000008
【図７】
2005267635.tif 000009
【図８】
2005267635.tif 000010
【図９】
2005267635.tif 000011
【図１０】
2005267635.tif 000012
【図１１】
2005267635.tif 000013
【図１２】
2005267635.tif 000014
【図１３】
2005267635.tif 000015