(57)【要約】【課題】エネルギー効率と処理能力が異なる少なくとも２つの処理装置を備えることにより、コンピュータ・システムのエネルギー消費を低減させる。【解決手段】スケジューラＳＣＨは、入出力空間Ｉ／Ｏがかける割込みをインターセプトし、その割込みをタスクに分解し、そのタスク用のエネルギー属性と性能属性を取得し、そのタスクが時間の観点で実行されている間に消費するエネルギー量が最も少なくなるように、そのタスクをスケジューリングして処理装置Ｐ1またはＰ2上で実行させる。【選択図】図１
2004530181.tif 000002
【特許請求の範囲】
【請求項１】
異なるエネルギー効率を有し、少なくともタスクの処理要件および対応する処理能力に基づいて当該タスクを実行するように適合した少なくとも２つの処理装置と、
エネルギー消費量が最小になるように、前記少なくとも２つの処理装置の一方が実行する所定のタスクをスケジューリングし、前記少なくとも２つの処理装置の前記一方が前記所定のタスクの処理要件および対応する処理能力に基づいて前記所定のタスクを実行することができないと判断された場合、前記少なくとも２つの処理装置の他方が実行するように前記所定のタスクを再スケジューリングするように適合したスケジューラと
を備えた
コンピュータ・システム。
【請求項２】
前記スケジューラは前記少なくとも２つの処理装置の一方が実行する所定のタスクを、前記少なくとも２つの処理装置にエネルギー効率が悪くなる部分順に前記所定のタスクの実行を受容するか拒絶するかどちらであるか問い合わせることを、前記所定のタスクのうちの１つを前記少なくとも２つの処理装置のうちの一方が受容して実行し、前記所定のタスクを前記少なくとも２つの処理装置の他方が拒絶するまで続けることによりスケジューリングするように適合している、
請求項１に記載のコンピュータ・システム。
【請求項３】
前記スケジューラはさらに少なくとも１つの所定の条件に基づいて前記部分順から前記少なくとも２つの処理装置のうちの任意のものを排除するように適合している、
請求項２に記載のコンピュータ・システム。
【請求項４】
さらに、
前記少なくとも２つの処理装置のうちの少なくとも１つ用に処理能力情報を格納し、前記処理能力情報が変化したときに当該処理能力情報を動的に更新するように適合した処理装置属性テーブル
を備えた、
請求項１〜３のうちの１項に記載のコンピュータ・システム。
【請求項５】
前記スケジューラは、所定のタスクに対して、前記処理装置属性テーブルから、エネルギー効率が悪くなる部分順および完全順のうちの一方で、前記少なくとも２つの処理装置のうちの一方が前記所定のタスク用のタスク処理要件に対して十分な処理能力を有していることが判明するまで少なくともいくつかの処理能力を検索したのち、前記所定のタスクを前記少なくとも２つの処理装置のうちの前記一方が実行するようにスケジューリングするように適合している、
請求項４に記載のコンピュータ・システム。
【請求項６】
前記スケジューラはさらに前記少なくとも２つの処理装置および周辺装置が出す割込みをインターセプトするように適合している、
請求項１〜５のうちの１項に記載のコンピュータ・システム。
【請求項７】
さらに、
スケジューリング済みのタスクのうちの少なくともいくつかの処理要件のうちのいくつかを格納するように適合したタスク属性記憶装置
を備えた
請求項１〜６のうちの１項に記載のコンピュータ・システム。
【請求項８】
前記処理要件に前記所定のタスクを完了すべき終了時刻が含まれている、
請求項１〜７のうちの１項に記載のコンピュータ・システム。
【請求項９】
前記判断は前記スケジューラが行う、
請求項１〜８のうちの１項に記載のコンピュータ・システム。
【請求項１０】
前記判断は前記少なくとも２つの処理装置の前記一方が行う、
請求項１〜８のうちの１項に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・システムに関し、特にエネルギー消費の少ないコンピュータ・システムに関する。
【背景技術】
【０００２】
近年、パーベイシブ・デバイス（pervasive device: ＰｖＤ）すなわちコンピュータ組み込み装置がますます普及してきている。パーベイシブ・デバイスでは、ある種のタスクが必要とする計算上の複雑さに加え、無線機能が増大しつつある。パーベイシブ・デバイスは通常、電池で駆動するので、パーベイシブ・デバイスが成功を収める上での障害は、エネルギー消費にある。一般に、パーベイシブ・デバイス中の電池の寿命は、当該パーベイシブ・デバイスの使用方法に応じて、１時間から１年間である。パーベイシブ・デバイスを会話を認識するためにおよび／または高速無線接続をサポートするために使うと、エネルギー消費が顕著に増大するのが必然である。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす）。この理由は、このようなタスクが必要とするＭＩＰＳ（million instructions per second)をサポートするには、少なく見積もっても高性能の処理装置が必要になるからである。あいにく、性能が向上するのにつれて、エネルギー効率は低下する。ここで使用しているように、「エネルギー効率」は、タスク当りのジュール（joules-per-task:ＪＰＴ）（およびその等価量）を示している。
【０００３】
現在のパーベイシブ・デバイスが実行できる高性能で複雑なすべてのタスクと関係なく、典型的なパーベイシブ・デバイスの寿命の大部分は、時間レジスタの更新、無線基地局の変更に伴う周期的な場所情報の変更、周囲の温度のサンプリング、ＧＰＳ場所スタンプの記録、住所録エントリの取り込み、画面バッファの更新、キーパッド（小型で数の少ないキーボード）入力の検出といった単純で低性能なタスクを実行するのに使われている。このような単純なタスクを高性能なプロセッサで実行するのは、ＪＰＴの観点から極めて非効率である。
【０００４】
以上の点から、エネルギーを意識した仕方で処理装置を動作させる試みが数多くなされてきた。例えば、プロセッサ・メーカーの中には、エネルギー効率の良い処理装置を作製しているものがある（例えば、ハーフヒル「トランスメタがｘ８６の低電力障壁を打破する」『マイクロプロセッサ・レポート』２０００年２月号第１頁（T. R. Halfhill, "Transmeta Breaks X86 Low-Power Barrier", Microprocessor Report, p.1, Feb. 2000)、リーブサン「Xscale (StrongARM-2)の登場」『マイクロプロセッサ・レポート』２０００年２月号第１頁（S. Liebson, "Xscale (StrongARM-2) Muscles In", Microprocessor Report, p.1, Feb. 2000) 参照) 。この場合、サイクル当りのエネルギー消費量は、供給電圧と周波数を連携させて変化させる（電圧スケーリングとも呼ばれる）ことにより、調整することができる（例えば、ブローダーセン外著『低電力ディジタルＣＭＯＳの設計』（Brodersen et al., "Low Power Digital CMOS Design", Kluwer Academic Publishers, 1995)参照）。しかし、作製しうるこれらの処理装置の動作速度の下限、あるいは、駆動しうる供給電圧の下限には、制限がある。したがって、主として単純で低性能のタスクを実行するのに使う場合、これらの処理装置は、このような単純なタスクを実行するように特化して設計された処理装置よりも、はるかに大きなエネルギーを消費することになるだろう。
【０００５】
さらに、携帯電話メーカーや携帯無線機メーカーの中には、出現頻度が高く定型的な機能を実行する際に、エネルギー効率の良いＡＳＩＣ（application specific integrated circuit)を使ってエネルギー効率の悪い主プロセッサを取り除くことを提案しているものもある（例えば、米国特許第５４８７１８１号、米国特許第５０５８２０３号参照）。しかし、エネルギー消費を削減するためのこの方式は、ユーザに高度の柔軟性を提供しようとしている、より汎用的でより適合性のあるコンピューティング・プラットフォームには適していない。高度に柔軟なコンピューティング・システムでは、ユーザは、動作中に機能を変更することができると共に、新たな機能を導入することもできる（例えばデスクトップ・ユーザ・パラダイム〔枠組み〕の場合）。提案された従来のソリューションは、柔軟なシステムではない。それどころか、それらは、機能が特定しかつ限られているシステムである。
【０００６】
したがって、ユーザが要求するシステム機能と無関係に、エネルギー消費の少ない汎用的かつ適合性のあるコンピューティング・プラットフォームが依然として求められている。それは、新たなアプリケーション・コードをダウンロードし、評価した後、最もエネルギー効率の良い仕方で実行することができるものである。
【特許文献１】
米国特許第５４８７１８１号
【特許文献２】
米国特許第５０５８２０３号
【非特許文献１】
ハーフヒル「トランスメタがｘ８６の低電力障壁を打破する」『マイクロプロセッサ・レポート』２０００年２月号第１頁（T. R. Halfhill, "Transmeta Breaks X86 Low-Power Barrier", Microprocessor Report, p.1, Feb. 2000)
【非特許文献２】
リーブサン「Xscale (StrongARM-2)の登場」『マイクロプロセッサ・レポート』２０００年２月号第１頁（S. Liebson, "Xscale (StrongARM-2) Muscles In", Microprocessor Report, p.1, Feb. 2000)
【非特許文献３】
ブローダーセン外著『低電力ディジタルＣＭＯＳの設計』（Brodersen et al., "Low Power Digital CMOS Design", Kluwer Academic Publishers, 1995)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、汎用性があり適合性の高いコンピューティング・システムにおけるエネルギー消費を低減させる技術を提供する。本発明から利益を受ける、目標とするコンピューティング・システムには、例えば、ＰＤＡ（personal digital assistant: 携帯情報端末）、ハンドヘルド・コンピュータ、ポケット・コンピュータ、携帯電話、ラップトップ・コンピュータ、ウエラブル・コンピュータなどがある。さらに、本発明は、ユーザの要求に高度に柔軟に対応できるように設計されたコンピューティング・システム（例えば、ユーザが新たなアプリケーションをロードし、専用のアプリケーションを生成し、および／または、自身の要求に合わせてカスタマイズすることができるシステム）に特に適用可能である。
【０００８】
本発明の第１の側面によると、１つのコンピュータ・システムが提示される。このコンピュータ・システムは、エネルギー効率が異なると共に、少なくともタスクの処理要件と対応する処理能力に基づいて当該タスクを実行するように適合している少なくとも２つの処理装置を備えている。スケジューラは、エネルギー消費量が最小になるように前記少なくとも２つの処理装置の一方が実行する所定のタスクをスケジューリングし、前記少なくとも２つの処理装置の前記一方が前記所定のタスクの処理要件および対応する処理能力に基づいて前記所定のタスクを実行することができないと判断された場合、前記少なくとも２つの処理装置の他方によって実行するように前記所定のタスクを再スケジューリングするように適合している。
【０００９】
処理要件にはタスクを完了すべき終了時刻が含まれているのが望ましい。スケジューラは少なくとも２つの処理装置以外のハードウェア構成要素内に埋め込まれた機能であるのがより望ましい。好適な実例では、スケジューラは少なくとも２つの処理装置のうちの一方に含まれている。スケジューラはさらに少なくとも２つの処理装置および周辺装置が出す割込みをインターセプトするように適合しているのが適切である。
【課題を解決するための手段】
【００１０】
本発明の好適な実例によると、少なくとも２つの処理装置はメモリ空間を共有している。少なくとも２つの処理装置は入出力空間も共有しているのが適切である。少なくとも２つの処理装置が入出力空間を共有し、スケジューラと少なくとも２つの処理装置がメモリ空間を共有しているのがより適切である。
【００１１】
好適な実例では、コンピュータ・システムはさらにスケジューリング済みのタスクのうちの少なくともいくつかの処理要件のちうの少なくともいくつかを格納するように適合したタスク属性記憶装置を備えている。好適な実例では、判断はスケジューラまたは少なくとも２つの処理装置の一方が行う。少なくとも２つの処理装置の一方はさらにタスクの実行を受容するか拒絶するかするように適合しているのが適切である。処理要件には所定のタスクを実行するのに要する処理能力が含まれているのがより適切である。
【００１２】
本発明の第２の側面によると、コンピュータ・システムが提供される。このコンピュータ・システムは、複数の処理装置を備えている。これら複数の処理装置の各々は、タスクを実行するように適合している。前記複数の処理装置の少なくとも２つは、エネルギー効率が異なる。スケジューラは、前記少なくとも２つの処理装置の一方が実行する所定のタスクを、前記少なくとも２つの処理装置にエネルギー効率が悪くなる部分順に前記所定のタスクの実行を受容するか拒絶するかどちらであるか問い合わせることを、前記所定のタスクのうちの１つを前記少なくとも２つの処理装置のうちの一方が受容して実行し、前記所定のタスクを前記少なくとも２つの処理装置のすべてが拒絶するまで続けることによりスケジューリングするように適合している。
【００１３】
前記スケジューラは、少なくとも１つの所定の条件に基づいて前記部分順から前記複数の処理装置のうちの任意のものを排除するように適合しているのが望ましい。
【００１４】
本発明の第３の側面によると、コンピュータ・システムが提供される。このコンピュータ・システムは、エネルギー効率が異なるとともに、スケジューリング済みのタスクおよび対応する処理能力の処理要件に基づいてスケジューリング済みのタスクを受容するか拒絶するかするように適合している少なくとも２つの処理装置を備えている。また、これら少なくとも２つの処理装置は、少なくとも受容したスケジューリング済みのタスクは実行するように適合してもいる。スケジューラは、前記少なくとも２つの処理装置の一方が実行する所定のタスクを、エネルギー消費量が最も少なくなるようにスケジューリングするように適合している。また、スケジューラは、前記少なくとも２つの処理装置の前記一方が前記所定のタスクを拒絶したとき、前記所定のタスクを前記少なくとも２つの処理装置の他方が実行するように再スケジューリングするように適合している。
【００１５】
本発明の第４の側面によると、コンピュータ・システムが提供される。このコンピュータ・システムは、複数の処理装置を備えている。これら複数の処理装置の各々は、タスクを実行するように適合している。前記複数の処理装置のうちの少なくとも２つはエネルギー効率が異なる。処理装置属性テーブルは、前記複数の処理装置のうちの少なくともいくつか用に処理能力情報を格納し、この処理能力情報が変化したときに当該処理能力情報を動的に更新するように適合している。スケジューラは、所定のタスクに対して、前記処理装置属性テーブルから、エネルギー効率が悪くなる部分順および完全順のうちの一方で、前記少なくとも２つの処理装置のうちの一方が前記所定のタスク用のタスク処理要件に対して十分な処理能力を有していることが判明するまで少なくともいくつかの処理能力を検索するように適合している。また、前記スケジューラは、前記所定のタスクを前記複数の処理装置のうちの前記一方が実行するようにスケジューリングするようにも適合している。
【００１６】
前記コンピュータ・システムはさらに、割込みに付随する少なくとも１つの機能を実行するように適合した少なくとも１つの機能ブロックを備えているのがより好適である。
【００１７】
前記コンピュータ・システムはさらに、タスクが利用する少なくとも１つの機能を実行するように適合した少なくとも１つの機能ブロックを備えているのが望ましい。
【発明を実施するための最良の形態】
【００１８】
本発明は、エネルギー消費が少ないコンピュータ・システムに関する。本発明は、ハードウェア、ソフトウェア、ファームウェア、専用処理装置、または、これらの組み合わせの形態で実現することができる、という点を理解すべきである。本発明は、ハードウェアとソフトウェア双方の組み合わせとして実現するのが望ましい。このソフトウェアは、プログラム格納装置に有形的に（tangibly）組み込んだアプリケーション・プログラムとして実現することができる。このアプリケーション・プログラムは、任意の好適なアーキテクチャを備えたマシンにアップロードして実行することができる。このマシンは、ＣＰＵ（central processing unit)、ＲＡＭ（random access memory）、Ｉ／Ｏ（入出力）インタフェースなどのハードウェアを備えたコンピュータ・プラットフォーム上に実現されているのが望ましい。このコンピュータ・プラットフォームは、オペレーティング・システムおよび／またはマイクロ命令コードをも備えることができる。ここで説明する様々なプロセスと機能は、オペレーティング・システムを介して実行されるマイクロ命令コードの一部またはアプリケーション・プログラムの一部（あるいは両者の組み合わせ）として実現することができる。さらに、このコンピュータ・プラットフォームには、補助データ記憶装置や印刷装置など様々な他の周辺装置を接続することができる。
【００１９】
さらに、添付図面に示したシステム構成要素と方法ステップの中にはソフトウェアで実現できるものがあるので、システム構成要素（あるいはプロセス・ステップ）の間の実際の繋（つな）がりは、本発明をプログラムする仕方に応じて異なりうる、という点を理解すべきである。
【００２０】
まず、本発明の一般的な説明を提示して、読者に本発明の概念を紹介する。次いで、本発明の様々な側面の詳細な説明を、図１〜図５について提示する。
【００２１】
次に、本発明の明確な理解を容易にするために、ここで使用している用語を定義する。「処理装置」とは、マイクロプロセッサ、マイクロコントローラ、ディジタル信号プロセッサなど、命令を実行できる装置のことである。これらの構成要素の任意の組み合わせも使用しうる。また、「機能ブロック」とは、少なくとも１つの特定の機能を実行することができるが、命令を実行することはできないディジタル信号回路または混合信号回路のことである。さらに、機能ブロックの機能は、変更することができない。ＡＳＩＣ（application specific integrated circuit)、ＦＦＴ（fast fourier transform）、組み合わせ回路は、本発明の観点からは機能ブロックと考えられる。処理装置は機能ブロックにはなりえず、機能ブロックは処理装置にはなりえない、という点を認識すべきである。さらに、「タスク」は、他のタスクと同時並行してあるいは単独で、独立に実行されるコード部のことである。この定義を使うと、例えば、アプリケーション、スレッド、割込みサービス・ルーチン、オペレーティング・システムのカーネルは、タスクと見なすことができる。
【００２２】
図１は、本発明の一実施形態による、エネルギー消費の少ないコンピュータ・システム１００を示すブロック図である。コンピュータ・システム１００は、２個の処理装置Ｐ1、Ｐ2（以下、一般的に「処理装置Ｐj」とも呼ぶ）、および、スケジューリング装置（スケジューラ）ＳＣＨを備えている。Ｐ1とＰ2は、タスクを実行する。Ｐ1は、最もエネルギー効率の良い処理装置であるが、コンピューティング性能は低い。Ｐ2は、最もエネルギー効率の悪い処理装置であるが、コンピューティング性能は高い。Ｉ／Ｏ空間と２個の処理装置がかける割込みは、すべて、ＳＣＨにもたらされる。ＭＥＭはメモリ空間であり、Ｉ／ＯはＩ／Ｏ空間である。ＢＵＳP1、ＢＵＳP2、ＢＵＳMEM、ＢＵＳI/Oは、それぞれ、スケジューラからＰ1へのバス、スケジューラからＰ2へのバス、メモリ・バス、Ｉ／Ｏバスである。ＢＣMEM、ＢＣI/Oは、それぞれ、メモリ・バス・コントローラ、Ｉ／Ｏバス・コントローラである。好適な実施形態では、処理装置Ｐ1とＰ2は、同時並行して実行している。そして、各処理装置は、その上で実行されるマルチタスク・オペレーティング・システムを搭載している。
【００２３】
図１の実施形態では、スケジューリング装置ＳＣＨを独立した機能ブロックとして実現しているけれども、ＳＣＨの機能は、他の処理装置（例えばＰ1および／またはＰ2）の一部として、ソフトウェア・プログラムとして、あるいは、これらの組み合わせとして実現できる、ということを認識すべきである。例えば、ハードウェア構成要素（例えば、任意の機能ブロックまたは処理装置）内の機能（ソフトウェア、一連の論理部品など）としてＳＣＨを実現することができる。
【００２４】
次に、本発明の実施形態によるコンピュータ・システム１００の動作を簡単に説明する。ＳＣＨは、すべての割込み信号をインターセプトし、インターセプトした割込みをタスクＩＤ番号（ＴＩＤ）に分解した後、当該タスクの実行を処理装置Ｐ1、Ｐ2と交渉する。その結果、時間の観点から当該タスクを実行して完了するのに消費するエネルギーが最も少ない処理装置を選択する。ＳＣＨとＰjがこのような交渉を行なうためには、当該タスクに関するある特性を直ぐに知る必要がある。これらの特性およびタスク関連の他の情報は、タスク属性リストで与えられる。図２は、本発明の実施形態によるタスク属性リストを示す図である。割込み時にいくつかのタスク属性を取得するのは、ＳＣＨの責任である。下で図２に関し、実例的なタスク属性を示すと共に、それを詳細に説明する。
【００２５】
ＴＩＤは、手元にあるタスクのタスクＩＤ番号である。ＮＰは、当該タスクを実行できる処理装置の数である。ＰTID,1は、当該タスクを実行できる最もエネルギー効率の良い処理装置のＩＤである。ＣＰＳTID,1は、当該タスクを実行するのに時間の観点から必要とされる処理装置サイクルの最悪の場合の数値である。ＡＤＤＲTID,1は、当該タスクの場所のアドレスである。ＰTID,iは、当該タスクを実行できるｉ番目にエネルギー効率の良い処理装置である（ただし、１＜＝ｉ＜＝ＮＰ）。ＣＰＳTID,iは、当該タスクを実行するのに時間の観点から必要とされる処理装置サイクルの最悪の場合の数値である。ＡＤＤＲTID,iは、当該タスクの場所のアドレスである。ＰTID,NPは、当該タスクを実行できるＮＰ個の処理装置のうち、最もエネルギー効率の悪い処理装置である。ＣＰＳTID,NPは、当該タスクを実行するのに時間の観点から必要とされる処理装置サイクルの最悪の場合の数値である。ＡＤＤＲTID,NPは、当該タスクの場所のアドレスである。ここで、処理装置のアーキテクチャが同じでない場合、ＡＤＤＲは、各処理装置ごとに異なる可能性がある、という点に留意されたい。例えば、２個の処理装置が異なる命令セットを備えている、および／または、一方の処理装置のアーキテクチャが３２ビットであり、他方の処理装置のアーキテクチャが８ビットである、ということは、よくあることである。
【００２６】
ここで、ＣＰＳは、最も悪い場合の値を表わしている、という点を強調しておく必要がある。例えば、ユーザがＤａｔｅＢｏｏｋ（予定帳）というアプリケーションを立ち上げるものとする。ＤａｔｅＢｏｏｋには、多数のＤａｔｅＢｏｏｋエントリがリストされている。対応するタスクは、少しの間ビジーになった後、アイドル・モードに入る。この時、ＤａｔｅＢｏｏｋのエントリのリストが画面上で見られる。次いで、ユーザは、より詳細な情報が必要なエントリを選択する。すると、タスクは、データベースから情報を取得し、その情報を画面上に表示した後、アイドル・モードに戻る。したがって、ＣＰＳは、このようなタスクに関連して次のように説明することができる。すなわち、ＣＰＳは、ユーザの入力要求に反応し、データベースから情報を取得し、最後にその情報を画面上に表示するタスクに対する処理装置の必要な速度能力を表わしている。しかし、大部分の時間、タスクは、アイドル・モードにある。
【００２７】
スケジューラＳＣＨは、タスク属性リストにリストされている順番に処理装置Ｐ1、Ｐ2と交渉する。したがって、図２の実例的なタスク属性リストの場合、ＳＣＨは、最もエネルギー効率の良い処理装置ＰTID,1と交渉する。次いで、ＰTID,1は、必要なＣＰＳ（サイクル毎秒）の制約下で当該タスクを処理できるか否かを素早く判断する。ＰTID,1は、当該タスクを受容するか拒絶するかする。ＰTID,1が当該タスクを拒絶する場合（あるいは、暫〔しばら〕くしてから、所定の時間内に当該タスクを完了できない、と判断した場合）、ＰTID,1は、ＳＣＨに割込みをかける。すると、ＳＣＨは、タスク属性リスト中の次の処理装置と交渉する。ＳＣＨは、この交渉を、リストされている処理装置の中の１つが当該タスクを受容するまで、あるいは、リストされている処理装置との交渉がすべて試み終わるまで続ける。
【００２８】
ここで、タスク属性リストは、受容／拒絶の判断を、実行すべき所定のタスクの処理要件と、当該所定のタスクを実行すべきプロセッサの処理能力とに基づいて行なうことを可能にすることを意図している、ということを認識しておく必要がある。処理要件には、例えば、タスクを実行するのに必要な最小処理能力、その時までにタスクの実行を完了させなければならない締め切り時間、データ・パスの特定のビット幅などがある。処理能力には、現在使用可能な処理機能、データ・パスの現在のビット幅などがある。
【００２９】
ここで、さらに、所定のプロセッサが所定のタスクを実行できるか否かの実際の判断は、当該タスクを受容するか否かを問い合わされているプロセッサ、または、スケジューラＳＣＨによって行なうことができる、という点を認識しておく必要がある。このような判断はタスクの処理要件とプロセッサの処理能力に基づいてなされるのが望ましい。この場合、処理要件は、タスク属性リストに記載されている。そして、処理能力には、プロセッサだけがアクセスすることができるか、あるいは、共有プロセッサ属性リストからスケジューラもアクセスすることができる。図３は、スケジューラＳＣＨがアクセスするのに好適なプロセッサ属性リストを示す図である。図３において、Ｎは処理装置の数であり、ＣＰＳjはプロセッサｊの現在使用可能な最大処理能力である（ただし、１＜＝ｊ＜＝Ｎ）。プロセッサ属性リストは、プロセッサが新たなタスクを受容した時、あるいは、タスクを終了した時に、各プロセッサが動的に更新する必要がある。これにより、プロセッサ属性リストの値は、各プロセッサのほぼ同時の処理能力を表わすことができる。無論、処理要件および／または処理能力の中には、タスク属性リストやプロセッサ属性リストではなく、記憶構造の中に将来の参照用に格納しておくことができるものもある。
【００３０】
理解を容易にするために、割込みについて、次に示す仮定／条件を導入する。すなわち、スケジューラＳＣＨは、１度に１つの割込みを扱う。Ｉ／Ｏ割込みは、別のＩ／Ｏ割込みの処理を横取りすることはできないし、プロセッサ割込みの処理を横取りすることもできない。Ｉ／Ｏ割込みは、受け取られた順番にキュー（待ち行列）に入れられる。プロセッサ割込みの優先順位は、Ｉ／Ｏ割込みよりも高い。
【００３１】
図４は、本発明の実施形態による、スケジューラＳＣＨによるタスク・スケジューリングのフローチャートを示す図である。割込みを受け取ると、当該割込みのカテゴリーを判定する（ステップ３１０）。当該割込みがＩ／Ｏ割込みである場合、当着順にキューに入れる（ステップ３１５）。
【００３２】
次いで、ＳＣＨの状態がアイドルであるか否かを判断する（ステップ３１６）。ＳＣＨがアイドル状態でない（すなわちＳＣＨの状態がビジーである）場合、ＳＣＨは待ち状態に入る（ステップ３１７）。待ちモードでは、ＳＣＨは、別のＩ／Ｏ割込みを処理することができない。ただし、ＳＣＨは、ステップ３１５に関し上述したように、Ｉ／Ｏ割込みをキューに入れることはできる。しかし、ＳＣＨがアイドル状態にある場合、ＳＣＨは、キューから次の割込み（通常の設定では受け取ったばかりのＩ／Ｏ割込み）を取り込む（ステップ３１８）。次いで、ビジー状態に入る（ステップ３１９）。
【００３３】
割込みは、ＳＣＨが割込みベクトル・テーブルを検索することにより、タスク属性リストのアドレスに分解される（ステップ３２０）。次いで、当該タスクのタスク属性を取得する（ステップ３２５）。次いで、ＳＣＨは、タスク属性リストにリストされている第１の処理装置に、現在のＩ／Ｏ割込みに付随するタスクを（タスクＩＤ〔ＴＩＤ〕を使って）受容するか拒絶するかを確認する要求を発する（ステップ３３０）。ステップ３１９からステップ３３０までの間、ＳＣＨはビジー状態にある。ステップ３３０を実行した後、ＳＣＨは待ち状態に入る（ステップ３１７）。基本的に、ＳＣＨが待ち状態にある間、ＳＣＨは、現在の処理装置が現在のＩ／Ｏ割込みに付随するタスクを（タスクＩＤ〔ＴＩＤ〕を使って）受容するか拒絶するか返答するのを待ち続ける。
【００３４】
現在の処理装置は、上述したようにＩ／Ｏ割込みよりも優先順位が高いプロセッサ割込みを生成することにより、ＳＣＨに返答する。したがって、ＳＣＨは、受け取った割込みのカテゴリーがプロセッサ割込みであると判定すると、それを即座に処理する。ＳＣＨは、処理装置ＰTID,iに割込み関数ＩＦ＿Ａｃｃｅｐｔについて問い合わせる（ステップ３４０、accept＝受容）。図４の実施形態によれば、処理装置がタスクを受容した場合、割込み関数ＩＦ＿Ａｃｃｅｐｔは「真」のブール値を返す。そして、処理装置がタスクを拒絶した場合、割込み関数ＩＦ＿Ａｃｃｅｐｔは「偽」のブール値を返す。上記問い合わせに次いで、割込み関数ＩＦ＿Ａｃｃｅｐｔが返したブール値が「真」であるか「偽」であるかを判断する。
【００３５】
ＩＦ＿Ａｃｃｅｐｔが「真」である場合、ＳＣＨはアイドル状態に戻る（ステップ３５２）。次いで、ＳＣＨは、キューにＩ／Ｏ割込みがないかどうか検査する（ステップ３６０）。キューに割込みがない場合、ＳＣＨは、作動可能状態に入り、新たなＩ／Ｏ割込みを待つ（ステップ３６１）。キューに割込みがある場合、プロセスはステップ３１８に戻り、キューから次のＩ／Ｏ割込みを取り出す。
【００３６】
ＩＦ＿Ａｃｃｅｐｔが「偽」である場合、ｉの値を１だけインクリメント（ステップ３５５）した後、プロセスはステップ３３０に戻る（この結果、ＳＣＨは、タスク属性リストにリストされている次の処理装置に、現在のＩ／Ｏ割込みに付随するタスクを〔タスクＩＤ（ＴＩＤ）を使って〕受容するか拒絶するかを確認する要求を発する）。
【００３７】
図５は、本発明の実施形態に従い、Ｐj（すなわち処理装置Ｐ1またはＰ2）によるタスク処理のフローチャートを示す図である。理解を容易にするために、次に示すように、いくつかの仮定をなす。処理装置には、２つの仕方によって、すなわちスケジューラＳＣＨによって、および、プロセッサのローカルＯＳタイマーによって割込みをかけることができる。ＳＣＨがかける割込みは、常に即座に処理する。タイマー割込みも、処理装置ＰjがＳＣＨがかけた割込みを処理しているときを除き、常に即座に処理する。ＳＣＨ割込みの処理時間は、ＯＳマスタ・タイマー割込みの間隔Ｔよりもずっと短い。ＯＳのコードは、ローカル側に格納されている。すなわち、ＯＳは、共有メモリ空間ＭＥＭには配置されていない。
【００３８】
図４の参照に戻ると、ＳＣＨは１度に１つのＩ／Ｏ割込み源しか処理せず、そのＩ／Ｏ割込みによって、ＳＣＨは順番に少なくとも１つの処理装置と交渉する、ということが分かる。したがって、ＳＣＨは、１度に１つの処理装置と交渉する。それゆえ、任意の時刻に処理装置の一方が処理している、ＳＣＨがかける割込みは、最大限１つである。処理装置がＳＣＨがかけた現在の割込みの処理を完了するまで、ＳＣＨは新たな割込みをかけることができないので、ＳＣＨがかける割込みを処理装置でキューに入れることは決してできない。
【００３９】
次に、Ｐjにおけるタスクの承認を簡単に説明する。詳細な説明は、図５に関して行なう。処理装置Ｐjが割込みを受け取ると、処理装置Ｐjは、まず、当該割込みの出所（すなわち、ＳＣＨがかけたものか、あるいは、処理装置ＰjのローカルＯＳタイマーによるものか）を判断する。当該割込みがＳＣＨ割込みである場合、処理装置Ｐjは、現在の状態をローカル・メモリに保存した後、当該割込みを処理する。したがって、ＳＣＨがかける割込みは、現在実行中の別のタスクをすべて横取りすることができる。ＳＣＨ割込みタスクから戻ると、処理装置Ｐjは、横取りされたタスクの実行を再開する。処理装置ＰjがＳＣＨ割込みを処理している間、割込みは無効である。ＳＣＨ割込みを処理している間にタイマー割込みが発生した場合、当該タイマー割込みは、ＳＣＨ割込みが完了するまで処理されない。
【００４０】
図５に戻る。処理装置Ｐjは、割込みを受け取ると、まず当該割込みの出所を判定する（ステップ４１０）。ＳＣＨ割込みを受け取ると、処理装置Ｐjは、割込みを無効にした後、現在のプログラムのコンテキストを保存する（ステップ４１５）。次いで、処理装置Ｐjは、ＴＩＤ承認に必要な適切なＴＩＤ属性を取得する（ステップ４２０）。適切なＴＩＤ属性には、Ｐjに付随するＣＰＳ処理要件がある。タスク属性テーブルのアドレスは、共有バッファを通じてＳＣＨが処理装置Ｐjに渡すことができる（例えば図４のステップ３２５）。次いで、ＴＩＤ承認の検査を実行する（ステップ４２５）。ＴＩＤ承認検査は、例えば、下で詳述する式（１）を使って実行することができる。次いで、ＴＩＤ承認検査の結果が当該ＴＩＤの拒絶か受容のどちらであるのかを判断する（ステップ４３０）。結果が受容の場合、当該ＴＩＤを登録し、タスク・ポインタＡＤＤＲをタイマー・チェーンに挿入し、当該ＴＩＤ用にタイム・スライスを割り当てる（ステップ４３５）。そして、プロセスはステップ４４０に進む。結果が受容でない場合、プロセスは直接にステップ４４０に進む。
【００４１】
ステップ４４０では、ＴＩＤ承認検査の結果（すなわち処理装置Ｐjの判断）を、ＳＣＨに割込みをかけ、ＳＣＨがアクセスすることのできる共有バッファにブール値として置くことによりＳＣＨに通知する。次いで、処理装置Ｐjは、再び割込みを有効にした後、タスクのコンテキストを復元する（ステップ３３５）。
【００４２】
ステップ４３５におけるタイム・スライスの割り当てに関し、このタイム・スライスは、（ステップ４２０で取得した）当該タスクの必要なコンピューティング能力（ＣＰＳ）と、処理装置Ｐjの現在の負荷とに基づいて算出する。上記タイム・スライスを算出する一方法を、説明目的に限り、下で詳述する式（２）に示す。
【００４３】
ステップ４１０で受け取った割込みがタイマー割込みであると判定された場合、現在のタスクのコンテキストを保存し（ステップ４５０）、タイマー・チェーンにある次のタスクをロードし（ステップ４７５）、当該次のタスク用に割り当てられたタイム・スライスに従って割込みをかけるようにローカル・タイマーをプログラムする（ステップ４８０）。したがって、登録したタスクは、順番に実行する。タイマー・チェーンにある最後のタスクの実行が完了すると、実行用に周期的にタスクをロードする際に依拠する次の主タイマー間隔Ｔで割込みをかけるようにタイマーをプログラムする。ここで、必要な場合（例えばユーザがアプリケーションを使っていない場合）には、登録したタスクをすべて休止モードに入れた後、一時的にタイマー・チェーンから取り出すようにすることにより、プロセッサを可能な限りスリープ・モードに入れることができるらから、エネルギーを節約することができる、という点に留意されたい。
【００４４】
ステップ４２５のＴＩＤ承認検査に関し、Ｋ個のタスクを実行している処理装置Ｐjを考える。次いで、新たなタスクＴＩＤK+1を考える。ＴＩＤK+1は、Ｐjを考察するためにＳＣＨが配給したものである。新たなタスク属性リストから、ＴＩＤK+1は少なくともＣＰＳTIDK+1というコンピューティング能力を必要とする、ということが分かる。したがって、Ｐjで新たなタスクＴＩＤK+1を承認するためには、下に示す式（１）を満足する必要がある。ただし、ＣＰＳCLKは処理装置のクロック周波数、ＣＰＳOSはオペレーティング・システム用に割り当てられたＣＰＳ、ＣＰＳSCHはＳＣＨと対話するために割り当てられたＣＰＳ（すなわち承認ルーチンはこの割り当ての一部を消費する）、そして、ＣＰＳTIDkはＰjが現在実行しているｋ番目のタスク用に割り当てられたＣＰＳである。ここで、式（１）中のパラメータはＰjに特有のものであるので、本来は「Ｐj」なる添え字を必要とするが、すべてのパラメータがＰjに特有であるので、取り除いてある。
【００４５】
【数１】
2004530181.tif 000003
【００４６】
ここで、あるタスクに必要なＣＰＳの決定は、多くの場合、プログラマーの実験に基づいてなされる、という点に留意する必要がある。あるタスクに必要なＣＰＳを決定する１つの方法は、目標とする処理装置上に当該タスクを立ち上げることである。この場合、調整することのできるＣＰＳを有する、いわゆるスロットル（Throttle）タスク実行がある。これは、まず、当該タスクにとっての最大のＣＰＳを利用可能にする。
すなわち、
【００４７】
【数２】
2004530181.tif 000004
【００４８】
次いで、プログラマーがスロットルＣＰＳを徐々に増やしていくと、問題のタスクの利用可能なＣＰＳは少なくなってゆく。このように、プログラマーは、新たなタスクが満足する仕方でもはや動作できなくなる時を判断することができる。
【００４９】
タスクのタイム・スライスに関し、Ｋ個のタスクを実行している処理装置Ｐjを再び考える。次に、新たなタスクＴＩＤK+1を考える。ＴＩＤK+1は、Ｐjを考察するためにＳＣＨが配給したものである。さらに、各タスクＴＩＤKは、主タイマー間隔Ｔで実行するものと仮定する。主タイマー間隔Ｔは、ＯＳが管理しており、ローカル・タイマーを適切にプログラミングすることにより容易にされている。次に、Ｐjが当該タスクを承認したものとすると、新たなタスクＴＩＤK+1には、次に示す式（２）より、タイム・スライスΔＴK+1が割り当てられる。
【００５０】
【数３】
2004530181.tif 000005
【００５１】
ここで、本発明は、あるタスクを実行するようにスケジューリングされた処理装置が、最もエネルギー消費の少ない処理装置ではなくて、第２番目、第３番目・・・にエネルギー消費の少ない処理装置であるように実現することができる、ということを認識すべきである。すなわち、究極の目標は最もエネルギー効率の良い処理装置を実際に選択することであるけれども、当業者が容易に確かめうるように、様々な理由から、最も良いエネルギー効率に「近い」エネルギー効率を有する処理装置を選択することもできる。例えば、最もエネルギー効率の良い処理装置が、別のタスクを処理していてビジーである場合、あるいは、スケジューリング上の理由からビジーである場合、第２番目、第３番目、あるいは、第Ｎ番目にエネルギー効率の良い処理装置を使用することは良いことである。したがって、エネルギー効率が悪くなる順番の部分順に基づいて実行用の所定のタスクを受容するか拒絶するかを処理装置に問い合わせることができる。「順番の部分順」と述べたのは、処理装置の中には、エネルギー効率の順番を無視して選択されるものがあったり、全く考慮の外に置かれているものがあったり、あるいは、両者を組み合わせたものがあったりするからである。ここに提示した本発明の教示に鑑みると、低エネルギー消費に関するタスク・スケジューリングのここに示した変形例、変更例、拡張例、および、他の変形例、変更例、拡張例は、本発明の本旨と範囲の内で、当業者が容易に想到しうるものである。
【００５２】
さらに、ここで述べた処理装置には、例えば、マイクロプロセッサ、マイクロコントローラ、ディジタル信号プロセッサ（ＤＳＰ）、あるいは、命令を実行できる任意の他の装置を用いることができる、という点を認識すべきである。さらに、上記した各装置の任意の組み合わせを用いることもできる。
【００５３】
さらに、処理装置は、スケジューラがスケジューリングしたタスクを実行すると共に、スケジューラがスケジューリングしなかったタスクも実行することができる、という点を認識すべきである。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施形態によるエネルギー消費の小さいコンピュータ・システム１００を示すブロック図である。
【図２】本発明の実施形態によるタスク属性リストを示す図である。
【図３】本発明の実施形態によるプロセッサ属性リストを示す図である。
【図４】本発明の実施形態による、スケジューリング装置ＳＣＨによるタスク・スケジューリングのフローチャートを示す図である。
【図５】本発明の実施形態による、Ｐj（すなわち処理装置Ｐ1またはＰ2）によるタスク処理のフローチャートを示す図である。
【符号の説明】
【００５５】
１００…コンピュータ・システム
Ｐ1…処理装置
Ｐ2…処理装置
ＳＣＨ…スケジューリング装置（スケジューラ）
ＭＥＭ…メモリ空間
Ｉ／Ｏ…Ｉ／Ｏ空間
ＢＵＳP1…スケジューラからＰ1へのバス
ＢＵＳP2…スケジューラからＰ2へのバス
ＢＵＳMEM…メモリ・バス
ＢＵＳI/O…Ｉ／Ｏバス
ＢＣMEM…メモリ・バス・コントローラ
ＢＣI/O…Ｉ／Ｏバス・コントローラ
【図１】
2004530181.tif 000006
【図２】
2004530181.tif 000007
【図３】
2004530181.tif 000008
【図４】
2004530181.tif 000009
【図５】
2004530181.tif 000010
【国際公開パンフレット】
2004530181.tif 000011
2004530181.tif 000012
2004530181.tif 000013
2004530181.tif 000014
2004530181.tif 000015
2004530181.tif 000016
2004530181.tif 000017
2004530181.tif 000018
2004530181.tif 000019
2004530181.tif 000020
2004530181.tif 000021
2004530181.tif 000022
2004530181.tif 000023
2004530181.tif 000024
2004530181.tif 000025
2004530181.tif 000026
2004530181.tif 000027
2004530181.tif 000028
2004530181.tif 000029
2004530181.tif 000030
2004530181.tif 000031
2004530181.tif 000032
【国際公開パンフレット（コレクトバージョン）】
2004530181.tif 000033
2004530181.tif 000034
【国際公開パンフレット（コレクトバージョン）】
2004530181.tif 000035
2004530181.tif 000036
【国際公開パンフレット（コレクトバージョン）】
2004530181.tif 000037
2004530181.tif 000038
2004530181.tif 000039
2004530181.tif 000040
2004530181.tif 000041
2004530181.tif 000042
2004530181.tif 000043
2004530181.tif 000044
2004530181.tif 000045
2004530181.tif 000046
2004530181.tif 000047
2004530181.tif 000048
2004530181.tif 000049
2004530181.tif 000050
2004530181.tif 000051
2004530181.tif 000052
2004530181.tif 000053
2004530181.tif 000054
2004530181.tif 000055
2004530181.tif 000056
2004530181.tif 000057
2004530181.tif 000058
【国際調査報告】
2004530181.tif 000059
2004530181.tif 000060