(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、
スリープタスクの発生率と各スリープタスクの時間長を許容遅延時間に基づいて決定する計数測定計算（ＣＭＣ）ユニットと、
前記時間長を有するスリープタスクを前記発生率で発生させ、前記発生させたスリープタスクをオリジナルタスクのトラフィックに挿入するスリープタスク発生器と、
前記トラフィック内のオリジナルタスクおよびスリープタスクを前記複数のプロセッサに割り当てるスケジューラと、を備え、
各スリープタスクは、該スリープタスクが割当てられた前記複数のプロセッサの１つをスイッチオフする、マルチプロセッサシステム。
【請求項２】
前記ＣＭＣユニットは、オリジナルタスクおよびスリープタスクの到着時間間隔と実行時間が所定の待ち行列モデルの分布に従うように、前記発生率と前記時間長を決定する、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記ＣＭＣユニットは、オリジナルタスクの平均応答時間に応じて前記許容遅延時間を決定する、請求項１または２に記載のマルチプロセッサシステム。
【請求項４】
前記スケジューラは、前記複数のプロセッサにおけるオン状態とオフ状態の間の遷移を減少させるようにする、請求項１ないし３のいずれか１項に記載のマルチプロセッサシステム。
【請求項５】
前記スリープタスクは、当該タスクが割り当てられた前記複数のプロセッサの１つをスイッチオフするだけの仮想タスクであり、
前記スリープタスクは、前記オリジナルタスクと同一の統計量を有する、請求項１ないし４のいずれか１項に記載のマルチプロセッサ。
【請求項６】
各々のローカルキューが前記オリジナルタスクおよび前記スリープタスクの少なくとも一部を保持する複数のローカルキューをさらに備える、請求項１ないし５のいずれか１項に記載のマルチプロセッサ。
【請求項７】
前記複数のプロセッサの中に空き状態のプロセッサがある場合、前記スケジューラは前記空き状態のプロセッサに新タスクを送出し、
前記複数のプロセッサの中に空き状態のプロセッサがない場合、前記スケジューラは、前記複数のローカルキューのうちの最終のタスクが新タスクと同一のタイプであるキューに該新タスクを送出する、請求項６に記載のマルチプロセッサシステム。
【請求項８】
前記オリジナルタスクおよび前記スリープタスクを保持するグローバルキューをさらに備える、請求項１ないし５のいずれか１項に記載のマルチプロセッサシステム。
【請求項９】
タスクが前記複数のプロセッサの１つで終了した場合、前記スケジューラは前記グローバルキュー内の同一のタイプの最早のタスクを該プロセッサに送出する、請求項８に記載のマルチプロセッサシステム。
【請求項１０】
前記ＣＭＣユニットは、終了したオリジナルタスクの実行時間を測定し、前記オリジナルタスクの数を計数し、ある期間内における前記オリジナルタスクの到着率と分布を計算する、請求項１ないし９のいずれか１項に記載のマルチプロセッサシステム。
【請求項１１】
前記ＣＭＣユニットは、前記オリジナルタスクおよび前記スリープタスクの到着時間間隔が所定の分布に従うように、前記発生率を決定する、請求項１ないし１０のいずれか１項に記載のマルチプロセッサシステム。
【請求項１２】
前記ＣＭＣユニットは、前記オリジナルタスクの到着率の測定結果に応じて、前記スリープタスクの発生率を決定する、請求項１ないし１１のいずれか１項に記載のマルチプロセッサシステム。
【請求項１３】
前記ＣＭＣユニットは、直近に終了したタスクの測定結果に応じて、前記スリープタスクの時間長を決定する、請求項１ないし１２のいずれか１項に記載のマルチプロセッサシステム。
【請求項１４】
スリープタスクの発生率と各スリープタスクの時間長を許容遅延時間に基づいて決定する工程と、
前記時間長を有する前記スリープタスクを前記発生率で発生させる工程と、
オリジナルタスクのトラフィックに前記発生させたスリープタスクを挿入する工程と、
前記トラフィック内の前記オリジナルタスクおよび前記スリープタスクを複数のプロセッサに割り当てる工程と、を含み、
各スリープタスクは、該スリープタスクが割り当てられた前記複数のプロセッサの１つをスイッチオフする、マルチプロセッサシステムにおける省エネルギー化方法。
【請求項１５】
前記オリジナルタスクおよび前記スリープタスクの到着時間間隔と実行時間が待ち行列モデルの所定の分布に従うように、前記発生率と前記時間長が決定される、請求項１４に記載のマルチプロセッサシステムにおける省エネルギー化方法。
【請求項１６】
前記オリジナルタスクの平均応答時間に応じて前記許容遅延時間を決定する工程をさらに含む、請求項１４または１５に記載のマルチプロセッサシステムにおける省エネルギー化方法。
【請求項１７】
前記複数のプロセッサにおけるオン状態とオフ状態の間の遷移を減少させるようにする工程をさらに含む、請求項１４ないし１６のいずれか１項に記載のマルチプロセッサシステムにおける省エネルギー化方法。
【請求項１８】
前記スリープタスクは、当該タスクが割り当てられた前記複数のプロセッサの１つをスイッチオフするだけの仮想タスクであり、
前記スリープタスクは、前記オリジナルタスクと同一の統計量を有する、請求項１４ないし１７のいずれか１項に記載のマルチプロセッサシステムにおける省エネルギー化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム、および、マルチプロセッサシステムにおける省エネルギー化方法に関し、特に、複数のローカルキューを有するマルチプロセッサシステム（分散キューアーキテクチャ）、または、グローバルキューを有するマルチプロセッサシステム（グローバルキューアーキテクチャ）に関する。
【背景技術】
【０００２】
近年、電力消費およびエネルギー消費は深刻な問題となっている。特に、バッテリを備えた電子装置、低価格のデータセンター、および、低炭素環境では、重大な問題となる。省電力の主要な手法の１つであるダイナミック電力管理（ないし動的電力管理）（ＤＰＭ：Dynamic Power Management）は、電子部品を選択的に低電力状態にすることにより、システムレベルで電力消費を削減することを目指している（非特許文献１）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】L. Benini and G.  De Micheli, "Dynamic Power Management: Design Techniques and CAD Tools," Kluwer, 1997
【非特許文献２】A. Karlin, M. Manesse, L. McGeoch, and S. Owicki, "Competitive Randomized Algorithms for Nonuniform Problems," Algorithmca, pp.542-571, 1994
【非特許文献３】D. Ramanathan, R. Gupta, "System Level Online Power Management Algorithms," Design, Automation and Test in Europe, pp.606-611, 2000
【非特許文献４】C-H. Hwang and A. Wu, "A Predicativee System Shutdown Method for Energy Saving of Event-Driven Computation," International Conference on Computer Aided Design, pp.28-32, 1997
【非特許文献５】M. Srivastava, A. Chandrakasan, R. Brodersen, "Predicative System Shutdown and Other Architectural Techniques for Energy Efficient Programmable Computation," IEEE Transactions on VLSI Systems, vol.4, no.1, pp.42-55, March 1996
【非特許文献６】L. Benini, G. Paleologo, A. Bogliolo, and G. De Micheli, "Policy Optimization for Dynamic Power Management," IEEE Transactions on Computer-Aided Design, vol.18, no.6, pp.813-833, June 1999
【非特許文献７】Q. Qiu and M. Pedram, "Dynamic Power Management Based on Continuous-Time Markov Decision Processes," Design Automation Conference, pp.555-561, 1999
【非特許文献８】T. Simunic, "Dynamic Management of Power Consumption," Power Aware Computing edited by R. Graybill and R. Melhem, 2002
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の非特許文献の全開示内容は引用により本書に繰り込み記載されているものとする。以下の分析は、本発明の観点から与えられる。
【０００５】
低電力状態ではエネルギー消費は最小となるものの、状態間の遷移において余分な時間とエネルギーが必要とされる。したがって、ＤＰＭ（ダイナミック電力管理）を使いこなすためには、システムレベルでの複雑な電力管理ポリシが必要となる。さもないと、性能および効率がいずれも低下してしまう。
【０００６】
最も一般的なシステムレベルの電力管理ポリシは、多くのオペレーティングシステムに実装されているタイムアウトポリシ（timeout policy）（非特許文献２、３）である。このポリシの欠点は、タイムアウトイベントを待っている間に電力とエネルギーが浪費されることである。
【０００７】
対話型端末用に開発された予測ポリシ（非特許文献４および５）は、アイドル期間が十分長く継続すると予測器が推定すると、部品がアイドル状態になるとすぐに低電力状態へ遷移するように強制する。ただし、不正確な推定を行った場合には、性能とエネルギーの両方について明らかに不利益が生じる。
【０００８】
確率モデルに基づくポリシは、最適な結果を保証することを可能にする。確率モデルは、システムの振る舞いを表す分布を使用する（非特許文献６〜８）。換言すれば、その精度と最適性は、システムの振る舞いがその分布に適合するか否かに強く依存する。例えば、到着時間間隔および実行時間は、すべてのマルコフモデルで仮定する指数分布に従わないおそれがある。さらに、ほとんどの確率モデルに基づくポリシは、定常的である（すなわち、任意の時点で同一のポリシが適用される）。
【０００９】
したがって、関連技術において、電力消費を抑制し、タスクの平均応答時間を制御することが可能なマルチプロセッサシステム、およびマルチプロセッサシステムにおけるエネルギー消費の節減方法を提供することが望まれる。
【課題を解決するための手段】
【００１０】
本発明の第１の視点によれば、以下に示すマルチプロセッサシステムが提供される。すなわち、マルチプロセッサシステムは、複数のプロセッサと、スリープタスクの発生率と各スリープタスクの時間長を許容遅延時間に基づいて決定する計数測定計算（ＣＭＣ）ユニットと、前記時間長を有するスリープタスクを前記発生率で発生させ、前記発生させたスリープタスクをオリジナルタスクのトラフィックに挿入するスリープタスク発生器と、前記トラフィック内のオリジナルタスクおよびスリープタスクを前記複数のプロセッサに割り当てるスケジューラと、を備え、各スリープタスクは該スリープタスクが割当てられた前記複数のプロセッサの１つをスイッチオフする。
【００１１】
本発明の第２の視点によれば、以下の工程を含むマルチプロセッサシステムにおける省エネルギー化方法が提供される。すなわち、省エネルギー化方法は、スリープタスクの発生率と各スリープタスクの時間長を許容遅延時間に基づいて決定する工程と、前記時間長を有する前記スリープタスクを前記発生率で発生させる工程と、オリジナルタスクのトラフィックに前記発生させたスリープタスクを挿入する工程と、前記トラフィック内の前記オリジナルタスクおよび前記スリープタスクを複数のプロセッサに割り当てる工程と、を含み、各スリープタスクは該スリープタスクが割り当てられた前記複数のプロセッサの１つをスイッチオフする。
【００１２】
さらに、他の視点によれば、前記した視点による方法を実装するためのプログラム、または、前記した視点によるマルチプロセッサシステムを駆動／実行するためのプログラムが提供される。また、プログラムは、プログラム製品となるコンピュータ読み取り可能な記憶媒体（computer-readable non-transient medium）に記録するようにしてもよい。
【発明の効果】
【００１３】
本発明のマルチプロセッサシステム、および、マルチプロセッサにおける省エネルギー化方法によれば、マルチプロセッサシステムにおける電力消費が抑制され、かつ、タスクの平均応答時間を制御することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】一実施形態による分散キューアーキテクチャのマルチプロセッサシステムを示すブロック図である。
【図２】一実施形態によるグローバルキューアーキテクチャのマルチプロセッサシステムを示すブロック図である。
【図３】一実施形態における分散キューアーキテクチャ用スケジューラの動作を示すフロー図である。
【図４】一実施形態におけるグローバルキューアーキテクチャ用スケジューラの動作を示すフロー図である。
【図５】一実施形態におけるＣＭＣユニットおよびスリープタスク発生器の動作を示すフロー図である。
【発明を実施するための形態】
【００１５】
本明細書において、以下の用語が用いられる。
１．状態「Ｏｎ」：プロセッサがフルスピードで動作するアクティブ状態
２．状態「Ｏｆｆ」：プロセッサが完全スリープまたは低スピードで動作する低電力状態
３．遷移：「Ｏｎ」から「Ｏｆｆ」、または「Ｏｆｆ」から「Ｏｎ」の状態遷移
４．遷移時間：状態遷移に必要とされる時間
５．遷移エネルギー：状態遷移に必要とされるエネルギー
６．タスク：計算の集まり
なお、本発明では、中量または多量のタスクトラフィックを対象とする。なぜなら、少量のトラフィックは問題なく扱うことができるからである。
【００１６】
マルチプロセッサシステムにおいて、タスクはセントラルスケジューラに到着し、その後、セントラルスケジューラから出発する。基本的に、このようなシステムは待ち行列モデルで近似的に表すことができ、平衡状態における性能が関心事となる。
【００１７】
本発明によるマルチプロセッサシステムにおいて、マルチプロセッサシステム内のいくつかのプロセッサを賢くスイッチオフすることでエネルギー消費を削減できるような電力管理が行われる。本発明は、電力消費を節減するために、タスクの平均応答時間を制御しつつ、いくつかのプロセッサを適宜スイッチオフする、すなわち、いくつかのプロセッサを状態「オフ」にすることを目指すものである。ここで、状態遷移の頻度は低く維持される。なぜなら、状態遷移では余分な時間とエネルギーが必要とされるからである。
【００１８】
本発明によるマルチプロセッサシステムにおいて、スリープタスク、すなわち、単にプロセッサをスイッチオフするだけの仮想タスクが生成され、オリジナルタスクのトラフィックに挿入される。マルチプロセッサシステムにおいて、以下の２つのステップが実行される。第１に、ある期間内のスリープタスクの量が待ち行列モデルにより決定される。第２に、挿入されたスリープタスクは、オリジナルタスクの応答時間を大幅に増加させることなく、かつ、頻繁に状態遷移が生ずることを避けるように、プロセッサに適宜割り当てられる。
【００１９】
ここで、本発明の概要を説明する。ここで、付される参照符号は単に説明の理解を助けるためのものである。なお、本発明は、図面に記載された形態に限定されるものではない。図１および図２を参照すると、本発明によるマルチプロセッサシステムは、複数のプロセッサ（１０１、２０１）と、スリープタスクの発生率および各スリープタスクの時間長を許容遅延時間に基づいて決定する計数測定計算（ＣＭＣ：Counting, Measuring and Calculating）ユニット（１０３、２０３）と、上記時間長を有するスリープタスクを上記発生率で発生させ、発生させたスリープタスクをオリジナルタスクのトラフィックに挿入するスリープタスク発生器（１０５、２０５）と、上記トラフィック内のオリジナルタスクおよびスリープタスクの双方を複数のプロセッサに割り当てるスケジューラ（１０４、２０２）とを備え、各巣レープタスクは該スリープタスクが割当てられた複数のプロセッサの１つをスイッチオフする。
【００２０】
本発明のマルチプロセッサによれば、マルチプロセッサシステムにおける電力消費が抑制され、かつ、タスクの平均応答時間を制御することが可能になる。
【００２１】
本開示において、以下に示すものを含む種々の形態が可能である。ただし、それに限定されるものではない。
【００２２】
（形態１）
本発明の第１の視点によるマルチプロセッサシステムが提供される。
【００２３】
（形態２）
前記マルチプロセッサシステムにおいて、前記ＣＭＣユニットは、オリジナルタスクおよびスリープタスクの到着時間間隔と実行時間が所定の待ち行列モデルの分布に従うように、前記発生率と前記時間長を決定するようにしてもよい。
【００２４】
（形態３）
前記マルチプロセッサシステムにおいて、前記ＣＭＣユニットは、オリジナルタスクの平均応答時間に応じて許容遅延時間を決定するようにしてもよい。
【００２５】
（形態４）
前記マルチプロセッサシステムにおいて、前記スケジューラは、前記複数のプロセッサにおけるオン状態とオフ状態の間の遷移を減少させるようにしてもよい。
【００２６】
（形態５）
前記マルチプロセッサシステムにおいて、前記スリープタスクは、タスクが割り当てられた前記複数のプロセッサの１つをスイッチオフするだけの仮想タスクであってもよく、前記スリープタスクは、前記オリジナルタスクと同一の統計量を有するようにしてもよい。
【００２７】
（形態６）
前記マルチプロセッサシステムは、各々のローカルキューが前記オリジナルタスクおよび前記スリープタスクの少なくとも一部を保持する複数のローカルキューをさらに備えるようにしてもよい。
【００２８】
（形態７）
前記マルチプロセッサシステムにおいて、前記複数のプロセッサの中に空き状態のプロセッサがある場合、前記スケジューラは前記空き状態のプロセッサに新タスクを送り、前記複数のプロセッサの中に空き状態のプロセッサがない場合、前記スケジューラは、前記複数のローカルキューのうちの最終のタスクが新タスクと同一のタイプであるキューに該新タスクを送出するようにしてもよい。
【００２９】
（形態８）
前記マルチプロセッサシステムは、前記オリジナルタスクおよび前記スリープタスクを保持するグローバルキューを代わりに備えるようにしてもよい。
【００３０】
（形態９）
前記マルチプロセッサシステムにおいて、タスクが前記複数のプロセッサの１つで終了した場合、前記スケジューラは前記グローバルキュー内の同一のタイプの最早のタスクを該プロセッサに送出するようにしてもよい。
【００３１】
（形態１０）
前記マルチプロセッサシステムにおいて、前記ＣＭＣユニットは、終了したオリジナルタスクの実行時間を測定し、前記オリジナルタスクの数を計数し、ある期間内における前記オリジナルタスクの到着率と分布を計算するようにしてもよい。
【００３２】
（形態１１）
前記マルチプロセッサシステムにおいて、前記ＣＭＣユニットは、前記オリジナルタスクおよび前記スリープタスクの到着時間間隔が所定の分布に従うように、前記発生率を決定するようにしてもよい。
【００３３】
（形態１２）
前記マルチプロセッサシステムにおいて、前記ＣＭＣユニットは、前記オリジナルタスクの到着率の測定結果に応じて、前記スリープタスクの発生率を決定するようにしてもよい。
【００３４】
（形態１３）
前記マルチプロセッサシステムにおいて、前記ＣＭＣユニットは、直近に終了したタスクの測定結果に応じて、前記スリープタスクの時間長を決定するようにしてもよい。
【００３５】
（形態１４）
本発明の第２の視点によれば、マルチプロセッサシステムにおける省エネルギー化方法が提供される。
【００３６】
（形態１５）
前記マルチプロセッサシステムにおける省エネルギー化方法において、前記オリジナルタスクおよび前記スリープタスクの到着時間間隔と実行時間が待ち行列モデルの所定の分布に従うように、前記発生率および前記時間長が決定されるようにしてもよい。
【００３７】
（形態１６）
前記マルチプロセッサシステムにおける省エネルギー化方法は、前記オリジナルタスクの平均応答時間に応じて前記許容遅延時間を決定する工程をさらに含むようにしてもよい。
【００３８】
（形態１７）
前記マルチプロセッサシステムにおける省エネルギー化方法は、前記複数のプロセッサにおけるオン状態とオフ状態の間の遷移を減少させるようにする工程をさらに含むようにしてもよい。
【００３９】
（形態１８）
前記マルチプロセッサシステムにおける省エネルギー化方法において、前記スリープタスクは、前記タスクが割り当てられた前記複数のプロセッサの１つをスイッチオフするだけの仮想タスクであってもよく、前記スリープタスクは前記オリジナルタスクと同一の統計量を有するようにしてもよい。
【００４０】
（形態１９）
前記した形態による方法を実装するためのプログラム、あるいは、前記した形態によるマルチプロセッサシステムを駆動／実行するためのプログラムが提供される。該プログラムは、プログラム製品となるコンピュータ読み取り可能な（non-transientな）記憶媒体に記録するようにしてもよい。該プログラムは、上記方法の工程を少なくとも部分的に実行したり、上記システムの要素を動作させたりするのに使用される。
【００４１】
＜実施形態１＞
一実施形態によるマルチプロセッサシステムについて、図面を参照して説明する。
【００４２】
図１は、分散キューアーキテクチャのマルチプロセッサシステムを示すブロック図である。図１を参照すると、マルチプロセッサシステムは、複数のプロセッサ１０１と、複数のローカルキュー１０２と、計数測定計算（ＣＭＣ：Counting, Measuring and Calculating）ユニット１０３と、スリープタスク発生器１０５と、スケジューラ１０４を備えている。ＣＭＣユニット１０３は、スリープタスクの発生率と各スリープタスクの時間長を決定する。スリープタスク１０５は、上記時間長を有するスリープタスクを上記発生率で発生し、発生したスリープタスクをオリジナルタスクのトラフィックに挿入する。スケジューラ１０４は、トラフィック内のオリジナルタスクおよびスリープタスクをローカルキュー１０２に割り当てる。
【００４３】
図２は、グローバルキューアーキテクチャのマルチプロセッサを示すブロック図である。図２を参照すると、マルチプロセッサは、複数のプロセッサ２０１と、グローバルキュー２０４と、計数測定計算（ＣＭＣ）ユニット２０３と、スリープタスク発生器２０５と、スケジューラ２０２を備えている。ＣＭＣユニット２０３は、スリープタスクの発生率と各スリープタスクの時間長を決定する。スリープタスク発生器２０５は、上記時間長を有するスリープタスクを上記発生率で発生し、発生したスリープタスクをオリジナルタスクのトラフィックに挿入する。スケジューラ２０２は、グローバルキュー２０４内のオリジナルタスクおよびスリープタスクをプロセッサ２０１に割り当てる。
【００４４】
従来システムのソフトウェアのアーキテクチャを少しだけ変更する必要がある。本実施形態において、２つの設計、すなわち、分散キューアーキテクチャ（図１）とグローバルキューアーキテクチャ（図２）が提供される。少なくとも２つの要素が従来技術のアーキテクチャに追加される。１つはスリープタスク発生器（図１の１０５、図２の２０５）であり、もう１つは測定および計算の要素、すなわち、計数測定計算（ＣＭＣ）ユニット（図１の１０３、図２の２０３）である。さらに、スケジューラ（図１の１０４、図２の２０２）は、オリジナルタスクとスリープタスクを適切に処理するように拡張する必要がある。図１および図２は、２種類のアーキテクチャを示している。図１および図２において、実線はタスクパスを表し、破線は情報収集パスを表している。
【００４５】
図１および図２に示すマルチプロセッサシステムは、以下に説明するように動作する。
【００４６】
ステップ１．ＣＭＣユニット１０３および２０３は、待ち行列モデルによりタスクの平均応答時間を計算する。アプリケーションと上記システムに対して、待ち行列モデルを構築することができる。Ｗｅｂシステムやネットワークスイッチのような長期間動作するアプリケーションでは平衡状態が存在し、かかる計算が可能となる。
【００４７】
ステップ２．ＣＭＣユニット１０３および２０３は、オリジナルタスクの平均応答時間に対して許容遅延時間を設定する。次に、ステップ１のモデルによりタスクの新しい到着率が得られる。
【００４８】
ステップ３．ＣＭＣユニット１０３および２０３は、ある期間内にシステムに到着するタスク数を計数し、当該期間内に終了したタスクの実行時間を測定する。この期間を時間ウインドウと呼ぶ。分散キューアーキテクチャにおいて、ＣＭＣユニット１０３はプロセッサ１０１とローカルキュー１０２を監視する。グローバルキューアーキテクチャにおいて、ＣＭＣユニット２０３は、プロセッサ２０１とグローバルキュー２０４を監視する。
【００４９】
ステップ４．ステップ２による新しい到着率、および、ステップ３によるデータに基づいて、ＣＭＣユニット１０３および２０３は、スリープタスクの発生率を計算し、発生するスリープタスクの時間長を決定する（図５のステップＳ５０２〜Ｓ５０５）。計算例は、Ｍ／Ｍ／１のクラスタに基づいている。なぜなら、本発明では、中量または多量の負荷のみを検討対象とするからである。多量の負荷の場合には、各々がＭ／Ｍ／１であるｍ個のプロセッサのクラスタは、Ｍ／Ｍ／ｍの１つのシステムにほぼ等価になる。オリジナルタスクの到着率がＬ１であることが既知であると仮定すると、タスクの平均応答時間は、１／（ｕ−（Ｌ１／ｍ））となる。ここで、ｕはプロセッサのサービス割合である。因子ｄの遅延時間が許容され、新しい到着率がＬの場合、次式が成り立つ。ｄ／（ｕ−（Ｌ１／ｍ））＝１／（ｕ−（Ｌ／ｍ））。したがって、Ｌを計算することができる。スリープタスクの到着率をＬ２と表す。このとき、Ｌ２＝Ｌ−Ｌ１となる。オリジナルタスクの実行時間は、指数分布に従わないかもしれない。そこで、スリープタスクの長さは、このギャップを埋めるように生成される。すなわち、オリジナルタスクとスリープタスクの両方の実行時間が、最終的に指数分布に従うように強制される。さらに、タスクの到着間隔も、スリープタスクの挿入時点を調整することにより、ある指数分布に従うように強制される。
【００５０】
ステップ５．スリープタスク発生器１０５および２０５は、発生したスリープタスクをオリジナルタスクのトラフィックに挿入する（図５のステップＳ５０６）。次に、タスクのトラフィックは、それ以前に確立したモデルに適合するように調整される。
【００５１】
ステップ６．スケジューラ１０４および２０２は、オリジナルタスクおよびスリープタスクをあるスケジューリングアルゴリズムにより割り当てる。本実施形態において、分散キューアーキテクチャおよびグローバルアーキテクチャに対し、図３および図４の２つのスケジューリングアルゴリズムがそれぞれ提供される。２つのスケジューリングアルゴリズムは、いずれも、不必要な状態遷移を避けることをその狙いとする。
【００５２】
上記スケジューリングアルゴリズムの変形例が存在する。変形例では、プロセッサ状態を変更することが可能な最終時点のパラメータが定義される。言い換えると、このパラメータはプロセッサが同一の状態に留まっている最長時間を定義する。
【００５３】
以下に、本実施形態をより詳細に説明する。
【００５４】
１．待ち行列モデルは、平均応答時間がモデル化されるものであればよい。しかしながら、計算の複雑さの点で、Ｍ／Ｍ／１のクラスタが選択される。なぜなら、第１に、Ｍ／Ｍ／１キューのクラスタは、Ｍ／Ｍ／ｍ待ち行列システムと等価であり、第２に、スリープタスクの挿入により、タスクの到着間隔と実行時間がある指数分布に従うように強制することができるからである。Ｍ／Ｍ／１キューのクラスタに基づく計算は、他のものよりもずっと簡単である。
【００５５】
２．元のシステムとアプリケーションの平均応答時間は、既知であると仮定する。元の平均応答時間が未知の場合には、モデルに適合し、平均応答時間を計算するために、一連の測定が行われるべきである。
【００５６】
３．図１の分散キューアーキテクチャにおいて、ＣＭＣユニット１０３は、システムにおけるタスクの数とタスクの実行時間を計数するために、プロセッサ１０１およびローカルキュー１０２の監視を続ける。図２のグローバルキューアーキテクチャにおいて、ＣＭＣユニット２０３は、プロセッサ２０１とグローバルキュー２０４の監視を続ける。期間とウインドウが設定される。ウインドウ内のタスクの数とタスクの実行時間は、タスクの到着率および平均実行時間を計算するために用いられ、タスクの到着率と平均実行時間は、スリープタスクの発生率とスリープタスクの時間長を決定するために用いられる。時間が経過するに従って、現在時刻に追随するようにウインドウも移動する。
【００５７】
４．スケジューラ１０４および２０２はオリジナルタスクに対するのと同様の方法で、挿入されたタスクを扱う。各プロセッサにおいて、直前に終了したタスクがスリープタスクである場合、プロセッサは、オリジナルタスクが到着するまで「ｏｆｆ」状態のままである。逆の場合も、同様である。
【００５８】
５．スリープタスク発生器１０５および２０５は、次のスリープタスクの発生時刻と時間長を、ＣＭＣユニット１０３および２０３の結果により計算する。
【００５９】
６．分散キューアーキテクチャおよびグローバルキューアーキテクチャのスケジューリングアルゴリズムが、それぞれ、図３および図４に例示されている。
（１）２つのアルゴリズムは、いずれもイベント起動型である。イベントトリガが、アルゴリズム、すなわち、ステップＳ３０１およびＳ４０１において生成される。
（２）アルゴリズムの次の動作を決めるために、ステップＳ３０２およびＳ４０２において２種類のイベントが認識される。
（３）分散型キューアーキテクチャでは、ステップＳ３０３およびＳ３０４のように、プロセッサが空き状態であるか否かがタスク割り当てを決定するための鍵となる。
（４）このアルゴリズムは、ステップＳ３０６、Ｓ３１０、Ｓ４０８、Ｓ４０９のように、つねに空き状態のプロセッサに最早のタスクを送出しようとする。
（５）このアルゴリズムは、ステップＳ３０８、Ｓ３１１、Ｓ４０７のように、不必要な状態遷移を避けるために、つねに、直前に終了したタスクと同一のタイプのタスクを送出しようとする。
（６）分散キューアーキテクチャ用のアルゴリズムは、ステップＳ３０８およびＳ３０９のように、所定の負荷バランスを維持しようとする。
【００６０】
図３を参照すると、分散キューアーキテクチャにおいて、スケジューラ１０４はタスクイベント待ちとなる（ステップＳ３０１）。新タスクが到着した場合（ステップＳ３０２のＡ）、スケジューラ１０４はプロセッサＰが空き状態であるか否かを判定する（ステップＳ３０３）。プロセッサＰが空き状態の場合（ステップＳ３０３のＹ）、スケジューラ１０４はその新タスクをプロセッサＰに送出する（ステップＳ３０６）。プロセッサＰが空き状態でない場合（ステップＳ３０３のＮ）、スケジューラ１０４は、あるキューＱの最終タスクが新タスクと同タイプであるか否かを判定する（ステップＳ３０５）。キューＱの最終タスクが新タスクと同一のタイプである場合（ステップＳ３０５のＹ）、スケジューラ１０４はその新タスクをそのキューＱに送出する（ステップＳ３０８）。キューＱの最終タスクがその新タスクと同一のタイプでない場合（ステップＳ３０５のＮ）、スケジューラ１０４はその新タスクを最短のキューに送出する（ステップＳ３０９）。
【００６１】
タスクがプロセッサＰから出発する場合（ステップＳ３０２のＤ）、スケジューラ１０４は、プロセッサＰが空き状態であるか否かを判定する（ステップＳ３０４）。プロセッサＰが空き状態の場合（ステップＳ３０４のＹ）、スケジューラ１０４は、他のキューの中にその出発するタスクと同一のタイプのタスクＴがあるか否かを判定する。タスクＴがある場合（ステップＳ３０７のＹ）、スケジューラ１０４はタスクＴをプロセッサＰに移動する（ステップＳ３１１）。タスクＴがない場合（ステップＳ３０７のＮ）、スケジューラは他のキューからの最早のタスクをプロセッサＰに移動する（ステップＳ３１０）。
【００６２】
図４を参照すると、グローバルキューアーキテクチャにおいて、スケジューラ２０２はタスクイベント待ちとなる（ステップＳ４０１）。タスクＴが出発すると（ステップＳ４０２のＤ）、すなわち、プロセッサＰがタスクＴを終了すると（ステップＳ４０３）、スケジューラ２０２はグローバルキュー２０４内にタスクＴと同一のタイプのタスクＴ’があるか否かを判定する（ステップＳ４０５）。タスクＴ’がある場合（ステップＳ４０５のＹ）、スケジューラ２０２はタスクＴ’をプロセッサＰに送出する（ステップＳ４０７）。タスクＴ’がない場合（ステップＳ４０５のＮ）、スケジューラ２０２はグローバルキュー２０４内の最早のタスクをプロセッサＰに送出する（ステップＳ４０８）。
【００６３】
新タスクＴが到着すると（ステップＳ４０２のＡ、Ｓ４０４）、スケジューラ２０２はプロセッサＰが空き状態か否かを判定する（ステップＳ４０６）。プロセッサＰが空き状態の場合（ステップＳ４０６のＹ）、スケジューラ２０２はタスクＴをプロセッサＰに送出する（ステップＳ４０９）。プロセッサＰが空き状態でない場合（ステップＳ４０６のＮ）、スケジューラ２０２はタスクＴをグローバルキュー２０４の末尾に追加する（ステップＳ４１０）。
【００６４】
７．スリープタスクを発生して挿入するメカニズムを図５に示す。ＣＭＣユニット１０３および２０３は、ステップＳ５０１〜Ｓ５０４を実行し、その間、スリープタスク発生器１０５および２０５はステップＳ５０５を実行する。
【００６５】
本願発明の従来技術に対する差異の１つは、プロセッサをスイッチオフする時間の総計を予め決めておき、その後、タイムスロット、スリープタスクがオリジナルタスクと一緒にスケジューリングされることである。従来技術では、プロセッサを何時スイッチオフするか、および、どれだけ期間スイッチオフするかは、現在の時点において決定される。
【００６６】
実施形態による効果は以下のように要約されるが、それに限定されるものではない。
【００６７】
１．本実施形態によるマルチプロセッサシステムは、従来技術よりも高い信頼性が得られる。なぜなら、どのようなモデルを考えた場合であっても、スリープタスクを発生することで、全タスクの到着率および実行時間は選択された待ち行列モデルに適合するように強制されるからである。したがって、モデルに基づく計算がより高精度になる。換言すれば、全タスクの平均応答時間を正確に把握することが可能となる。
【００６８】
２．本実施形態によるマルチプロセッサシステムは、他の従来システムよりも簡単になる。計算は選択された待ち行列モデルに基づいて行われ、より複雑な計算を採用する必要はない。スリープタスクの発生やスリープタスクのスケジューリング等の新たに生ずる動作は、容易に実装することができる。
【００６９】
３．タスクのスケジューリングは、複数のスリープタスクを結合することで、これらのスリープタスクがまとまって動作し、不要な状態遷移が回避されるようにする。
【００７０】
なお、本発明の全開示（請求の範囲）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００７１】
１０１            プロセッサ
１０２            ローカルキュー
１０３            計数測定計算（ＣＭＣ）ユニット
１０４            スケジューラ
１０５            スリープタスク発生器
２０１            プロセッサ
２０２            スケジューラ
２０３            計数測定計算（ＣＭＣ）ユニット
２０４            グローバルキュー
２０５            スリープタスク発生器
【図１】
0005742971.tif 000002
【図２】
0005742971.tif 000003
【図３】
0005742971.tif 000004
【図４】
0005742971.tif 000005
【図５】
0005742971.tif 000006