(57)【要約】  動的スリープコントローラ（２２０）が、トークンの時間期間にタスクを実行するときプロセッサ（ＣＰＵ２０２）が当該トークンの時間期間の間に低電力モードに置かれた後にウェイクアップ遅延を招き得る最大回数（トークンカウント）を決定することによって、コンピュータシステム内のプロセッサによる電力消費を低減する。タスクに割り当てられたトークンカウントの現在値がゼロより大きい場合に限り、プロセッサは、アイドルインジケータに応答してタスクを実行する一方で、パワー及びクロックコントローラ（２３０）に送られたスリープ要求信号（２２２）により低電力モードに置かれ得る。低電力モードから復帰されることに応答してプロセッサがウェイクアップ遅延を招く度、トークンカウントの現在値がデクリメントされる。現在のトークンカウントは、各トークン期間の最後に、割り当てられたトークンカウントに一致させるようにリセットされる。また、ウェイクアップが予測され得、プロセッサが、割り込みコントローラ（２１０）に送られるプリエンプティブウェイクアップ信号（２２４）によりプリエンプティブに復帰され得る。割り込みコントローラは、ウェイクアップ要求（２１４）をパワー及びクロックコントローラに送る。【選択図】図２
2015513336.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおけるプロセッサによる電力消費を動的に減少するための方法であって、
トークンの時間期間にタスクを実行するとき、前記プロセッサが当該トークンの時間期間中に低電力モードに置かれた後にスタートアップ遅延を招き得る最大回数を決定すること、
前記プロセッサが前記タスクのためにスタートアップ遅延を招き得る前記決定された最大回数に従って前記タスクのためのトークンカウントを割り当てること、
アイドルポイントに達するまで、前記タスクを実行すること、
前記タスクに割り当てられた前記トークンカウントの現在値がゼロよりも大きい場合にのみ、アイドルインジケータに応答して前記タスクを実行する一方で、前記プロセッサを低電力モードに置くこと、
前記プロセッサを低電力モードから復帰させることによって前記タスクの実行を再開すること、
前記低電力モードから復帰されることに応答して前記プロセッサがスタートアップ遅延を招く度、前記タスクのトークンカウントの現在値をデクリメントすること、及び
各トークン期間の最後に前記割り当てられたトークンカウントに一致させるため前記現在のトークンカウントをリセットすること、
を含む、方法。
【請求項２】
請求項１に記載の方法であって、さらに、
前記プロセッサが復帰されそうな時間を予想すること、及びスタートアップ遅延が招かれないように当該予想された時間より前に動的スリープコントローラにより前記プロセッサをプリエンプティブに復帰させること、及び
前記プロセッサが復帰される際にスタートアップ遅延が招かれないとき、前記トークンカウントの現在値を維持すること、
を含む、方法。
【請求項３】
請求項２に記載の方法であって、さらに、
前記プロセッサが低電力モードにあるとき前記プロセッサを低電力モードから復帰させるため、ウェイクアップ割り込み信号をアサートすること、及び
複数のタイムスロットについてトークン期間中のウェイクアップ割り込み発生のヒストグラムを作成すること、
を含み、
閾値を上回るヒストグラム値を有するタイムスロットが、前記プロセッサが復帰される可能性のある前記予想された時間として選択される、
方法。
【請求項４】
請求項３に記載の方法であって、前記ヒストグラムが、前記動的スリープコントローラにより生成されたプリエンプティブウェイクアップ要求を除外する、方法。
【請求項５】
請求項３に記載の方法であって、さらに、
時間期間中の前記プロセッサの総アイドル時間に対する前記低電力モードにおける総スリープ時間のスリープ比を決定すること、及び
前記スリープ比がスリープ比閾値より低いとき前記ヒストグラムをリセットすること、
を含む、方法。
【請求項６】
請求項３に記載の方法であって、さらに、
時間期間中に前記プロセッサをプリエンプティブに復帰するより前に、ウェイクアップ割り込みが何回受け取られたかについてのウェイクアップ比を決定すること、及び
前記ウェイクアップ比がウェイクアップ比閾値より高いとき前記ヒストグラムをリセットすること、
を含む、方法。
【請求項７】
請求項１に記載の方法であって、さらに、
前記プロセッサが低電力モードにあるとき前記プロセッサを低電力モードから復帰させるため、ウェイクアップ割り込み信号をアサートすること、
複数のタイムスロットに対し、トークン期間中のウェイクアップ割り込み発生のヒストグラムを作成すること、及び
後で用いるためにトークンを節約することによって達成され得る潜在的なエネルギー節約を、前記ヒストグラムの各タイムスロットに対し決定すること、
を含み、
前記プロセッサが低電力モードにある一方で、前記プロセッサがタイムスロットの間にウェイクアップ割り込みにより復帰されることがあり得ると前記ヒストグラムが示す場合、及び、後に用いるためにトークンを節約することによって達成され得る潜在的なエネルギー節約が、前記タイムスロットでのスリープを継続することにより達成され得るエネルギー節約より多いと推定される場合、前記タイムスロットがプリエンプティブウェイクアップタイムススロットとして選択され、プリエンプティブウェイクアップ要求が動的スリープコントローラによりアサートされる、
方法。
【請求項８】
前記ヒストグラムが、前記動的スリープコントローラにより生成されたプリエンプティブウェイクアップ要求を除外する、請求項７に記載の方法。
【請求項９】
前記プロセッサが前記タスクについてウェイクアップ遅延を招き得る最大回数を決定するために、スラック時間分析が用いられる、請求項１に記載の方法。
【請求項１０】
前記コンピュータシステムが、単一の動的スリープコントローラに結合された複数のプロセッサコアを含み、前記動的スリープコントローラが、それぞれのタスクを実行する一方で前記複数のプロセッサコアの各々を低電力モードに置くための責務を担う、請求項１に記載の方法。
【請求項１１】
メモリに結合され、当該メモリに格納されたソフトウェアタスクを実行するように構成されるプロセッサと、
前記プロセッサに結合された割り込みコントローラであって、当該割り込みコントローラが、ウェイクアップ要求信号を電力コントローラに提供するように構成され、前記電力コントローラが前記プロセッサを低電力モードに置くように構成される、前記割り込みコントローラと、
前記プロセッサからアイドル信号を受け取るように結合された動的スリープコントローラであって、当該動的スリープコントローラが、
タスクに割り当てられたトークンカウントの現在値がゼロより大きい場合にのみ、アイドルインジケータに応答して前記プロセッサを低電力モードに置くように前記電力コントローラに信号を送るように、及び
前記プロセッサが前記低電力モードから復帰されることに応答してスタートアップ遅延を招く度、前記タスクのトークンカウントの現在値をデクリメントするように、及び
各トークン期間の最後に前記割り当てられたトークンカウントに一致させるため前記トークンカウントをリセットするように、
構成され、
前記トークンカウントが、トークン時間期間にタスクを実行するとき前記プロセッサが前記トークン時間期間中に低電力モードに置かれた後にスタートアップ遅延を招き得る最大回数を示す、
コンピュータシステム。
【請求項１２】
請求項１１に記載のシステムであって、前記動的スリープコントローラがさらに、
前記プロセッサが復帰されそうな時間を予想し、スタートアップ遅延が招かれないように当該予想された時間より前に前記プロセッサをプリエンプティブに復帰するように、及び
前記プロセッサが復帰される際にスタートアップ遅延が招かれないとき、前記トークンカウントの現在値を維持するように、
構成される、システム。
【請求項１３】
請求項１２に記載のシステムであって、
前記動的スリープコントローラがさらに、複数のタイムスロットに対して、前記トークン期間の間のウェイクアップ割り込み発生のヒストグラムを作成するように構成され、
閾値を上回るヒストグラム値を有するタイムスロットが、前記プロセッサが復帰されそうである前記予想された時間として選択される、
システム。
【請求項１４】
請求項１３に記載のシステムであって、前記動的スリープコントローラがさらに、前記ヒストグラムを作成する一方で、前記動的スリープコントローラによって生成されるプリエンプティブウェイクアップ要求を除外するように構成される、システム。
【請求項１５】
請求項１１に記載のシステムであって、前記動的スリープコントローラがさらに、
複数のタイムスロット対し、前記トークン期間の間のウェイクアップ割り込み発生のヒストグラムを作成するように、及び
後に用いるためにトークンを節約することにより達成され得る潜在的なエネルギー節約を前記ヒストグラムの各タイムスロットに対して決定するように、
構成され、
前記プロセッサが低電力モードにある一方で、前記プロセッサがタイムスロットの間にウェイクアップ割り込みにより復帰されることがあり得ることを前記ヒストグラムが示す場合、及び、後に用いるためにトークンを節約することにより達成され得る潜在的なエネルギー節約が、前記タイムスロットでスリープを継続することにより達成され得るエネルギー節約より高いことが推定される場合、前記タイムスロットがプリエンプティブウェイクアップタイムスロットとして選択され、プリエンプティブウェイクアップ要求が動的スリープコントローラによってアサートされる、
システム。
【請求項１６】
請求項１５に記載のシステムであって、前記動的スリープコントローラがさらに、前記ヒストグラムを作成する一方で、前記動的スリープコントローラによって生成されるプリエンプティブウェイクアップ要求を除外するように構成される、システム。
【請求項１７】
請求項１５に記載のシステムであって、前記動的スリープコントローラがさらに、
時間期間の間の前記プロセッサの総アイドル時間に対する前記低電力モードにおける総スリープ時間のスリープ比を決定するように、及び
当該スリープ比がスリープ比閾値より低いとき前記ヒストグラムをリセットするように、
構成される、システム。
【請求項１８】
請求項１５に記載のシステムであって、前記動的スリープコントローラがさらに、
時間期間の間に前記プロセッサをプリエンプティブに復帰する前に、ウェイクアップ割り込みが何回受け取られるかについてのウェイクアップ比を決定するように、及び
当該ウェイクアップ比がウェイクアップ比閾値より高いとき前記ヒストグラムをリセットするように、
構成される、システム。
【請求項１９】
請求項１１に記載のシステムであって、複数のプロセッサが、動的電力管理のための前記動的スリープコントローラに結合される、システム。
【請求項２０】
請求項１１に記載のシステムであって、前記プロセッサに結合されるリアルタイムサブシステムをさらに含み、前記プロセッサにより実行されているタスクが、前記リアルタイムサブシステムのためのリアルタイム制御信号を開始する、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、概して、リアルタイム制御システム用のマイクロコントローラに関し、特に、マイクロコントローラにより使用される電力を削減することに関する。
【０００２】
リアルタイム制御システムにおいて用いられるコンピュータプロセッサは、典型的に、相補型金属酸化物半導体（ＣＭＯＳ）プロセスを用いて製造される。ＣＭＯＳ回路において、電力消費は、周波数と供給電圧の二乗との積に比例する。プロセッサの動作周波数及び／または供給電圧の削減は、エネルギー消費及び熱放散を著しく節約することにつながり得る。リアルタイムシステムにおいては、タスクが実行されていないアイドル期間の間、プロセッサは低電力モード（ＬＰＭ）へ置かれ得る。ＬＰＭにある間、プロセッサは電力をほとんど消費しない。プロセッサが実行の再開を求める要求を受け取ると、プロセッサはＬＰＭから復帰（awake）され得、プロセッサは通常の電力状態に戻り処理を再開する。
【図面の簡単な説明】
【０００３】
【図１Ａ】ＣＰＵアクティビティ（活動）を従来型の動的電力管理と比較する図である。
【図１Ｂ】ＣＰＵアクティビティを従来型の動的電力管理と比較する図である。
【図１Ｃ】ＣＰＵアクティビティを従来型の動的電力管理と比較する図である。
【０００４】
【図２】動的スリープコントローラ（ＤＳＣ）ベースのＣＰＵ電力管理を示すブロック図である。
【０００５】
【図３Ａ】動的電力管理のためのトークンの使用を示すタイミング図である。
【図３Ｂ】動的電力管理のためのトークンの使用を示すタイミング図である。
【図３Ｃ】動的電力管理のためのトークンの使用を示すタイミング図である。
【０００６】
【図４】スリープ決定マップの例図である。
【０００７】
【図５】ウェイクアップタイムスロット決定マップの例図である。
【０００８】
【図６】ウェイクアップ要求ヒストグラムのフォーメーションを示す図である。
【０００９】
【図７】図２のマイクロコントローラに含まれ得る性能監視ユニットのブロック図である。
【００１０】
【図８】動的電力管理を含む例示的なＳｏＣのブロック図である。
【００１１】
【図９】動的電力管理の動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
プロセッサの電力消費を削減するために、プロセッサの低電力モード（ＬＰＭ）を効率的に利用する方法を本明細書で説明する。プロセッサがアイドル状態であるとき、プロセッサは、そのプロセッサが低性能またはゼロ性能を提供するＬＰＭに置かれ得、ほとんど電力を消費しない。プロセッサが実行を再開するための要求を受け取ると、プロセッサはＬＰＭから復帰し、プロセッサは通常の電力状態に戻り処理を再開し得る。
【００１３】
ＬＰＭを用いることの問題点は、プロセッサをＬＰＭから通常状態に復帰させるためにある程度時間がかかることである。このような待ち時間によって、プロセッサにより実行されるタスクの処理遅延が生じる。タスクの厳しいデッドラインを有するリアルタイムシステムでは、この処理遅延が全体的なシステム性能に悪影響を及ぼすことがある。
【００１４】
プロセッサのＬＰＭの使用を最大にしつつ、性能劣化を限定するために全体的な処理遅延を抑制する方法を次に説明する。本明細書で説明する動的電力管理システムにより、リアルタイムタスクがアクティブに実行中である間であっても、ＬＰＭを用いることができる。ＣＰＵで実行中のタスクがそれらのデッドラインに間に合うように、ウェイクアップ待ち時間による性能劣化を制限することのできるトークンスキームが用いられる。ＣＰＵの活動パターンを監視することによりＬＰＭの使用を最大にすることのできる予測スキームも用いられ得る。
【００１５】
低電力モード（ＬＰＭ）の使用は、状態遷移のオーバーヘッドに関与する。ＬＰＭから通常状態への状態変化にかかる待ち時間は、ウェイクアップ待ち時間と呼ばれる。このウェイクアップ待ち時間は、どのような種類のメカニズムがＬＰＭで用いられるかに依存する。例えば、ＬＰＭがクロックゲーティング特徴のみを用いる場合、ウェイクアッププロセスは、クロックゲーティング信号を解放することに関与する。それゆえ、ウェイクアップ待ち時間は、２〜３クロックサイクル程度の小ささとなり得る。一方、通常状態からＬＰＭへ遷移する間にプロセッサが別の安全なまたは不揮発性メモリ領域に内部コンテキストをセーブするパワーゲーティングをＬＰＭが用いる場合、ウェイクアップ待ち時間は、２〜３ミリ秒を要することのあるコンテキストリストア時間を含む。一般に、あまり電力を消費しないＬＰＭは、より長い待ち時間を要する。
【００１６】
ＬＰＭのウェイクアップ待ち時間が無視できる場合、プロセッサは、プロセッサがアイドル状態にあるときはいつでもＬＰＭに置かれ得、そして、ウェイクアップ割り込みのようなウェイクアップ要求がある場合には復帰され得る。しかしながら、一般には、ウェイクアップ待ち時間は無視できるものではなく、待ち時間がプロセッサのタスク実行時間の遅延を引き起こすので、この待ち時間はシステムの全体的な性能に悪影響を及ぼす恐れがある。
【００１７】
その結果、これまで、電力節約のための典型的なシナリオでプロセッサをＬＰＭに置くのは、プロセッサで実行中のアプリケーションが、ウェイクアップ待ち時間がウェイクアップ要求の時点で許容され得ることが明らかな状態にあるときのみであった。すなわち、リアルタイムタスクがアクティブに実行中でないときにのみ、ＬＰＭが用いられる。
【００１８】
図１Ａから図１Ｃは、ＣＰＵアクティビティ（活動）を従来の動的電力管理と比較する。図１Ａは、例示的なリアルタイムタスクの実行パターンを示す。アイドル期間１０２、１０６の間、ＣＰＵはアクティブタスクを実行していない。アクティブ期間１０４の間、ＣＰＵはタスクを実行するが、アクティブ期間１０４の間にもアイドル時間の期間が存在する。
【００１９】
図１Ｂは、ＬＰＭの従来の使用例を示す。この例では、アイドル期間１０２、１０６の間のように、アプリケーションが明らかに非アクティブであるときにのみ、ＬＰＭが用いられる。タスクがアクティブである間、プロセッサは通常の電力状態１１４のままである。
【００２０】
図１Ｃは、概して１２４で示すように、アプリケーションがプロセッサでアクティブに実行中であるときでもＬＰＭモードを利用する方法を示す。
【００２１】
図２は、本発明の例示的な実施形態のブロック図である。動的スリープコントローラ（ＤＳＣ）２２０は、ソフトウェアまたはハードウェアにおいて実装され得るものであり、ＣＰＵ２２０がアイドル状態であるときにアサートされるｃｐｕ＿ｉｄｌｅ信号２０４を監視する。この信号は、典型的に、実行されているタスクに含まれるアイドル命令をプロセッサが実行するときに、または、タスク実行をスケジューリングするオペレーティングシステムによって、アサートされる。ｃｐｕ＿ｉｄｌｅがアサートされると、ＬＰＭに移行するのに適した時間であるか、または通常状態に留まる方がよいのかを、ＤＳＣ２２０が決定する。ＤＳＣ２２０がＬＰＭへ移行するのに適した時間であると決定する場合、ＤＣＳ２２０は、ｓｌｅｅｐ_ｒｅｑ信号２２２をアサートする。その後、パワー及びクロックコントローラ２３０が、クロック信号２３２及び／または電力供給２３４の電圧レベルをそれに応じて変化させることによって、ＣＰＵをＬＰＭに置く。
【００２２】
割り込みコントローラ２１０が、マスクされていない機能割り込み２１２を検出すると、割り込みコントローラ２１０は、ｗａｋｅｕｐ＿ｒｅｑ信号２１４をアサートし、パワー及びクロックコントローラ２３０は、クロック信号２３２及び／または電力供給レベル２３４をリストアすることによって、ＣＰＵ２０２を通常電力状態へ戻す。先に述べたように、ＣＰＵ２０２は、タスクの実行に戻る前に、コンテキストリストアまたは他のハウスキーピングタスクを行うことも必要とし得る。ＣＰＵ２０２は、ＤＳＣ２２０によってプリエンプティブ（preemptive）に復帰されてもよい。ＤＳＣ２２０は、プリエンプティブｗａｋｅｕｐ＿ｉｎｔ信号２２４をアサートすることによってＣＰＵ２０２を復帰することができる。もし、ＣＰＵがプリエンプティブウェイクアップ割り込み２２４によって復帰され、かつその後にＣＰＵが別の機能割り込み２１２を受け取る場合、ＣＰＵは、ウェイクアップ遅延を招くことなく、この機能割り込みを処理することが可能となる。なぜなら、機能ウェイクアップ要求を受け取る前にプリエンプティブウェイクアップ要求に応答して、ウェイクアップ待ち時間が発生したからである。ＤＳＣは、機能割り込みが間もなく生じると予期するときに、この事前対応型のウェイクアップメカニズムを使用し得る。
【００２３】
ＤＳＣ２２０は、いくつかの動的電力管理機能を行うことができる。ｃｐｕ＿ｉｄｌｅがアサートされるとき（２０４）、ＤＳＣは、ＬＰＭへ移行するか否かを決定する。ＤＳＣがＬＰＭを選択する決定をする場合、ＤＳＣは、いつＣＰＵを復帰するのかも決定し得る。プリエンプティブｗａｋｅｕｐ＿ｉｎｔ２２４がアサートされる前に機能割り込み２１２が発生する場合、ＣＰＵは、ウェイクアップ待ち時間に起因する処理遅延を被り得るが、プリエンプティブｗａｋｅｕｐ＿ｉｎｔ２２４がアサートされた後に機能割り込み２１２が生じる場合は、ＣＰＵは、ウェイクアップ待ち時間を被らない。
【００２４】
ウェイクアップ待ち時間が特定の閾値を超えないように、ＤＳＣ２２０は、ウェイクアップ待ち時間により生じる処理遅延の蓄積を管理する。この方法において、プロセッサで実行するタスクは、それらのデッドラインに間に合う。ＤＳＣ２２０に利用可能なクオリティ・オブ・サービス（ＱｏＳ）ポリシー２２６が、アプリケーションに特有の情報を含む。
【００２５】
ＤＳＣは、ＬＰＭの使用を最大にするよう試みることもできる。ＭｉｎＥｎｅｒｇｙポリシー２２８が、ＱｏＳポリシーが満たされる限りＬＰＭを最大限用いるよう試みる一連の命令を含む。上述のように、これらの命令は、ウェイクアップ待ち時間をなくすために、次の機能ウェイクアップ要求の前にＣＰＵをプリエンプティブに復帰させ得る。また、これらの命令は、スリープ時間を最大化させるために、できるだけ遅くＣＰＵを復帰するよう試みることもできる。ＭｉｎＥｎｅｒｇｙポリシーは、ＣＰＵの活動パターン及びＱｏＳポリシーに基づいて実行時間中に生成される。
【００２６】
図２は、ＤＳＣが１つのＣＰＵのみを管理する実施形態を示す。別の実施例では、ＤＳＣが多数のＣＰＵを処理するために十分な帯域幅及びリソースを有する限り、ＤＳＣはそれらの多数のＣＰＵを管理し得る。一部のマルチＣＰＵアーキテクチャにおいては、信号配路を最小化するため、及び一層良好なスケーラビリティを提供するために、専用のハードウェア信号ではなく、バス相互接続を介して搬送されるバストランザクションコマンドを用いる、ｓｌｅｅｐ＿ｒｅｑ２２２、プリエンプティブｗａｋｅｕｐ＿ｉｎｔ２２４、及びｃｐｕ＿ｉｄｌｅ２０４などの信号を実装することが有益であり得る。
【００２７】
クオリティ・オブ・サービス・ポリシー
ＱｏＳポリシー及びＭｉｎＥｎｅｒｇｙポリシーの実施例を次に詳細に説明する。ＣＰＵがＬＰＭにあり、プリエンプティブｗａｋｅｕｐ＿ｉｎｔではなく機能割り込みによって復帰される場合を、本明細書では予測外れ（mis-prediction）と呼ぶことにする。各予測外れの発生において、ＤＳＣは正確なウェイクアップ時間の予測に失敗しており、ＤＳＣはＣＰＵを迅速に復帰させていない。予測外れが発生すると、タスク処理は、ウェイクアップ待ち時間の量だけ遅延される。ＱｏＳポリシーは、このような予測外れが何回、またどのくらいの頻度、システムにより許容され得るのかを説明する。
【００２８】
表１は、ＱｏＳポリシー２２６の一例を示す。表１は、多数のトークン制約（token constraints）を含む。トークン制約は、２つのパラメータ、トークンの数及び期間、を含む。１トークンは、ＣＰＵで実行中のアプリケーションが、各特定された期間の間１つのウェイクアップ待ち時間の発生により生じた処理遅延を許容できることを意味する。例えば、表１のトークン制約１は、システムが１ミリ秒のトークン期間毎に２つのウェイクアップ待ち時間の発生を許容できることを示す。それゆえ、システムが１ミリ秒以内に２つのウェイクアップ待ち時間の発生を経験すると、如何なる追加の処理遅延をも避けるために、そのトークン期間の間にＤＳＣが再びＬＰＭを使用することはない。次の１ミリ秒のトークン期間の間、ＤＳＣはＬＰＭを再び使用し得る。しかし、トークン制約２のため、次の１ミリ秒の間、ＤＳＣは１つのみのウェイクアップ待ち時間の発生を許容できる。このように、階層的なトークン制約ポリシーによって、例えば１０ミリ秒のようなより長い期間で多数のウェイクアップ待ち時間を特定することができる一方で、すべての許容可能なウェイクアップ待ち時間が短期間に招かれることを防ぐことができる。
【表１】
2015513336.tif 000003
【００２９】
上述のトークンベースのＱｏＳポリシーは、ＬＰＭの使用により生じる性能劣化を抑制するために効果的である。スループット要件を有するソフトリアルタイムアプリケーションは、或る閾値を上回る性能を維持しながら、トークンベースのＱｏＳポリシーを用いることができる。
【００３０】
トークンベースのＱｏＳポリシーはまた、リアルタイムタスクのデッドラインを保証するためにも非常に効果的である。リアルタイムのシステムでは、タスクＴｉは、典型的に、（Ｃ、Ｔ、Ｄ）のパラメータによってモデル化される。ここで、それぞれ、Ｃは最悪ケースの実行時間、Ｔはタスクの期間、ＤはＴｉの相対デッドラインである。このモデル化は、既知のシミュレーション及び解析技術を用いて成され得る。
【００３１】
Ｃ、Ｔ、及びＤパラメータが各タスクに対して一旦決定されると、各タスクのスラック時間を解析することにより、トークン制約が各タスクのために計算され得る。スラック時間とは、最悪ケースの実行時間の後に残された時間量である。各タスクのスラック時間は、スラック時間をＬＰＭウェイクアップ待ち時間で除算することにより、トークンの数に直接的に変換できる。前述のように、ＬＰＭウェイクアップ待ち時間は、どのくらい深くプロセッサがスリープ状態に置かれていたかに依存する。トークン期間は、タスクのＴパラメータと同じになるように選択され得る。各タスクは１つのトークン制約を生成し得る。タスクの所与のセットを解析した後、タプルのセット（ＴＫｉ、Ｔｉ）が得られる。ここで、ＴＫｉ＝タスクｉのためのトークンの数、Ｔｉ＝タスクｉのパラメータＴである。ＴＫｉ≦ＴＫｊ及びＴｉ≧Ｔｊである場合、（ＴＫｉ，Ｔｉ）は、（ＴＫｊ，Ｔｊ）よりも厳密な制約であり、その結果（ＴＫｊ，Ｔｊ）を無視し得る。
【００３２】
最小エネルギーポリシー
図３Ａから図３Ｃは、動的電力管理のためのトークンの使用を示すタイミング図である。ＭｉｎＥｎｅｒｇｙポリシー２２８は、ＣＰＵ２０２のスリープ時間を最大化するために、ＬＰＭの使用にとっての最適なタイミングを表す。この例の場合、トークン制約（３、１０ミリ秒）を想定されたい。図３Ａは、タスク実行の１つの１０ミリ秒のトークン期間を示す。このトークン期間の間、タスク実行アクティビティ３０１〜３０４の４つのバーストがあり、それらの間にアイドル期間３１１〜３１３が点在する。タスクアクティビティは、デッドライン時間３２０よりも前に完了しなければならない。スラック時間３１４は、タスク処理３０４の終わりとデッドライン時間３２０との間のアイドル期間である。この例では、ウェイクアップ待ち時間は、デッドライン時間３２０を超えることなく少なくとも３回発生し得る。
【００３３】
図３Ｂでは、３つのウェイクアップ待ち時間の発生３３１〜３３３が１０ミリ秒のトークン期間の中ほどで生じ、それゆえ、ＣＰＵは、このトークン期間の間に再びＬＰＭに置かれることができず、そのため、１０ミリ秒の持続時間の残り３３５の間、通常の電力状態のままである。
【００３４】
一方、図３ＣはＬＰＭを使用した別の方式を示しており、この方式では、ＤＳＣは、より長い時間にわたりＬＰＭを用いることができ、それにより余分な電力を節約し得る。この例では、第１のアクティビティバースト３０１が終了すると、ＤＳＣは通常状態に留まることを決定する。この結果、第２のアクティビティバースト３０２はウェイクアップ待ち時間を生じさせない。その結果、１つのトークンがアクティビティパターン３０１の復帰の間に用いられたため、第２のアクティビティバースト３０２の終わりで残存するトークン数はまだ２である。第２のトークンは、第３のアクティビティパターン３０３の復帰の間に用いられる（３４３）。
【００３５】
ＤＳＣ２２０は、第４のアクティビティバースト３０４の前にＣＰＵを首尾よく復帰させる（３４４）。それゆえ、ウェイクアップ待ち時間は処理遅延を生じさせなかった。これは、残りのトークンの数が１つのままであることを意味している。
【００３６】
第４のアクティビティバースト３０４が終了するとき、ＤＳＣ２２０はまだ１つ残ったトークンを有する。この結果、ＤＳＣは、１０ミリ秒の期間３４５の残りの間にＬＰＭを使用し得る。
【００３７】
したがって、図３Ｂに示すように、任意のトークン期間の間にどのくらいの頻度でＣＰＵがＬＰＭに置かれ得るのかを追跡し続けるだけのためにトークンを用いることが、省電力につながるということが理解されよう。しかしながら、図３Ｃに示すように、最小のエネルギーポリシーが、残存するトークンの数に従って、ＬＰＭへの移行及び復帰を選択するための最適化されたタイミングを特定する場合、更なる省電力につながり得る。ＭｉｎＥｎｅｒｇｙポリシーは次のように定義され得る。
所与の残りのトークンカウント（トークン数）に対し、ＣＰＵがアイドル状態になる度に、通常の電力状態に留まるか、またはＬＰＭへ移行するかを、ＭｉｎＥｎｅｒｇｙポリシーが通知する。
ＭｉｎＥｎｅｒｇｙポリシーがＣＰＵにＬＰＭへ移行するよう通知する場合、ＭｉｎＥｎｅｒｇｙポリシーは、ＣＰＵをいつ復帰させるのかも通知し得る。
【００３８】
一つの実施例では、図４に示す「スリープ決定マップ（ＳＤＭ）」４００及び図５に示す「Ｗａｋｅｕｐ＿ｔｉｍｅ＿ｓｌｏｔ決定マップ（ＷＤＭ）」５００と呼ばれる２つの表を用いて、ＭｉｎＥｎｅｒｇｙポリシーを実装し得る。ＳＤＭ及びＷＤＭは、トークン期間を、タイムスロットと呼ばれる一層小さな時間期間に分割する。ＳＤＭは、各タイムスロットに対しＬＰＭに移行する条件を表す。この条件とは、残っているトークンの数である。例えば、ＣＰＵがタイムスロット２の間にアイドル状態になり、かつＭｉｎ＿ｔｏｋｅｎ［２］＝３である場合、残っているトークンの数が３と等しいか３より大きい場合にのみ、ＤＳＣはＬＰＭへの移行を決定し得る。
【００３９】
各タイムスロットに対しＣＰＵをいつ復帰させるのかを決定するために、ＤＳＣ２２０はＷＤＭ５００を用いる。ＤＳＣがＳＤＭ４００に基づいてＬＰＭへの移行を一旦決定すると、いつＣＰＵを復帰させるかを決定するために、ＤＳＣはＷＤＭ５００を参照する。ＷＤＭ５００は２次元アレイである。このアレイにおける各エントリに対し、ｗａｋｅｕｐ＿ｔｉｍｅ＿ｓｌｏｔ［ｗ］［ｘ］は、ＤＳＣがタイムスロットｘでＬＰＭを使用することを決定し、かつ残りのトークン数が（ｗ＋１）である場合、ＤＳＣがＣＰＵを復帰すべきタイムスロット値である。
【００４０】
タイムスロットベースのＣＰＵアクティビティ監視
ＳＤＭ４００及びＷＤＭ５００を含むＭｉｎＥｎｅｒｇｙポリシーは、ＣＰＵアクティビティパターンを知ることに依存する。図６は、アクティビティパターンを監視して統計を集計する手順を示す。図６の例では、ＣＰＵのアイドル‐アクティブ事象が監視される。これは、ＣＰＵがＬＰＭモードにある場合にＣＰＵを復帰させ得る事象であり、図２を再び参照すると、ウェイクアップ要求２１４である。
【００４１】
トークン期間５３０が予め規定され、この期間はタイムスロットに分割される。ウェイクアップ待ち時間が或るタイムスロットで発生する場合、そのタイムスロットに対応するカウンタがインクリメントされる。例えば、５１７ａで示すように、ウェイクアップ要求５４５がタイムスロット１７に記録される。より細かなタイムスロットは、ＤＳＣ動作のより細かな分解能を意味することに留意すべきである。
【００４２】
このカウント処理は、特定された数の期間にわたるヒストグラムを形成するために期間毎に繰り返される。例えば、次のトークン期間５３１の間、ウェイクアップ事象５５０が、５１７ｂで示すように、２までカウントを増大させることによってスロット１７に記録される。或る時間量の後、カウント処理は停止し、各タイムスロットの最終的なカウント値がそのタイムスロットで発生するウェイクアップ要求の確率に変換される。タイムスロットに対するウェイクアップ確率の、結果として生じるセットを、本明細書ではウェイクアップ確率マップと呼ぶ。
【００４３】
ウェイクアップ確率マップは、タスクアクティビティパターンの履歴を表し、仮説は、過去のアクティビティパターンのこのような統計がシステムの近い将来の挙動を予測するためにいくぶん有効となり得るということに留意されたい。
【００４４】
ウェイクアップ確率マップの期間は、この期間がウェイクアップ要求にいくぶん同期するように選択されなければならず、そうでない場合には、ウェイクアップ要求の確率分布はフラットになり得る。
【００４５】
複数のトークン制約が異なる期間を有する場合には、ウェイクアップ確率マップは、トークン制約毎に構築され得る。この場合、異なるトークン制約は、プロセッサで実行されている異なるタスクと相関され得る。図２のタスクＩＤ信号２０６により示すように、どのタスクが現在実行されているかを識別するためにタスクＩＤがプロセッサによりＤＳＣに提供され得る。あるいは、プロセッサ２０２は、例えば、バス相互接続を介してタスクＩＤをＤＳＣ２２０に書き込むことができる。
【００４６】
別の実施例では、単一のウェイクアップ確率マップが、そのマップがウェイクアップ要求を同期してキャプチャする限りにおいて、構築され得る。例えば、トークン期間の最小公倍数が用いられ得る。
【００４７】
ＳＤＭ及びＷＤＭ決定
ＤＳＣが、ＣＰＵをタイムスロットｘでＬＰＭに置き、タイムスロットｘ＋ａのためにウェイクアップを設定する場合、期待され得るエネルギー節約は、数式１により得られる。
【数１】
2015513336.tif 000004
上式で、ＥＬＰＭとは、ＣＰＵをＬＰＭに置くことによる、１タイムスロットの間のエネルギー節約であり、ＰＫとは、タイムスロットｋにおけるウェイクアップ要求の確率である。
【００４８】
トークンを後で使用し得るように、期間の終わりまでにトークンを使い果たさない確率Ｐは、数式２により得られる。
【数２】
2015513336.tif 000005
【００４９】
複数のトークンが利用可能な場合、スリープ時間を最大化しつつ、すべてのトークンを最終的に使いきる、様々な異なるシナリオが可能である。
【００５０】
すべての可能なシナリオ及びこれらのシナリオに関連する確率を考慮すると、ＣＰＵが、タイムスロットｘでＬＰＭに置かれ、かつウェイクアップタイムスロットがタイムスロットｘ＋ａに対して設定されるとき、エネルギー節約の期待値が計算され得る。ＭｉｎＴｏｋｅｎ［ｘ］及びＷａｋｅｕｐ＿ｔｉｍｅ＿ｓｌｏｔ［ｗ］［ｘ］は、エネルギー節約の期待値が最大となるように決定され得る。
【００５１】
統計の更新
ＳＤＭ及びＷＤＭは、ウェイクアップ確率マップに基づいて計算される。上述のように、ウェイクアップ確率マップは、タスクアクティビティパターンの履歴を表し、そのような履歴パターンはシステムの近い将来の挙動を予測するためにいくぶん有効となり得ることが想定された。システム挙動のダイナミクスに応じて、このような履歴は、長いまたは短い時間期間の間、有効であり得る。
【００５２】
システム挙動の最新の特性を表すために、後続の確率マップならびに結果として生じるＳＤＭ及びＷＤＭが継続的に構築され得る。しかし、このような継続的な更新の計算労力は、余分のエネルギーを用いることとなり得、それゆえ、実際の電力節約と、最大化された電力節約に対する試みとの間にトレードオフが存在し得る。
【００５３】
図７は、図２のシステムに含まれ得る性能監視ユニット４４０のブロック図である。確率マップを更新するために、ＤＣＳ２００の性能がどの程度良好であるかを監視する性能監視ユニット４４０を有することが望ましいことがある。ＤＳＣ２２０の性能が良好でない場合、監視ユニット４４０は、確率マップならびに結果として生じるＳＤＭ及びＷＤＭの構築の反復を引き起こし得る。
【００５４】
性能監視ユニットは、ＤＳＣの性能を評価するために、いくつかのパラメータを監視し得る。ＤＳＣがＣＰＵ２０２を復帰させる前に、ＣＰＵ２０２が割り込みを受け取る平均回数が監視され得る。これは、ＤＳＣのウェイクアップメカニズムがどの程度良好に機能しているのかを表す。ＣＰＵがＬＰＭで費やす総スリープ時間対ＣＰＵの総アイドル時間が監視され得る。これは、ＤＳＣのスリープ決定メカニズム及びウェイクアップメカニズムがどの程度良好に機能しているかを表す。
【００５５】
上述のパラメータが警告信号４４２をアサートすることによる選択された閾値よりも低い場合、性能監視ユニットは、確率マップを反復するようにＤＳＣに警告し得る。
【００５６】
図８は、ＣＰＵ８０２を有する、例示的な特定用途向け集積回路のシステムオンチップ（ＳＯＣ）８００を示すブロック図である。本開示の目的のため、いくぶん包括的な用語「マイクロコントローラ」（ＭＣＵ）が、１つまたは複数の処理モジュール８０２、メモリ８５０、周辺機器、及び／またはＤＭＡ（ダイレクト・メモリ・アクセス）コントローラ８６０を含み得る、任意の複合的なデジタルシステム・オン・チップ（ＳＯＣ）に適用するように用いられ得る。メモリモジュール８５０の少なくとも一部は、不揮発性とし得、システムアプリケーションを実行するために処理モジュール８０２により実行される命令プログラムを保持し得る。ＣＰＵ８０２は、図示しないが、データキャッシュと命令キャッシュに結合されてもよい。ＣＰＵ８０２は、バルクメモリ８５０へのアクセスのためシステムバス８５２に結合される。周辺機器８６０もシステムバス８５２に結合されて、ＣＰＵ８０２によるアクセス及び制御を可能にする。
【００５７】
ＳＯＣ８００のトポロジー及び構成は、一例であることが厳密に意図される。本発明の他の実施例が、メモリモジュールの様々な組み合わせ、周辺機器モジュールの様々な組み合わせ、マルチプロセッサ等を相互接続するためのバスの様々な構成を含んでもよい。ＣＰＵ８０２は、現在知られている、または将来開発される、様々なタイプのマイクロプロセッサまたはマイクロコントローラのうちの任意の１つとし得る。例えば、ＣＰＵ８０２は、デジタルシグナルプロセッサ、従来型のプロセッサ、または縮小命令セットプロセッサとし得る。本明細書で用いられるように、用語「マイクロプロセッサ」またはＣＰＵは、システムオンチップ内に含まれる任意のプロセッサを指すことが意図されている。
【００５８】
ＳＯＣ８００は、リアルタイムサブシステム（ＲＴＳ）８７０に結合される。ＲＴＳ８７０は、例えばモータとすることができ、このような場合には、ＳＯＣ８００が、ロータ位置に基づき複数セットのステータ巻線への電圧の印加を制御することによって、モータの速度及び方向を制御する。別の例では、ＲＴＳ８７０は、ＳＯＣ８００によってデジタルストリームから変換されたオーディオサウンドまたは音楽を再生するためのスピーカとし得る。本開示の目的のため、ＲＴＳ８７０は、ハードリアルタイム制御の何らかの形式を必要とする、現在知られている、または将来開発される、任意のタイプのデバイスまたは構成要素である。
【００５９】
１つまたは複数の周辺デバイス８６０は、制御信号またはデータ信号をＲＴＳ８７０へ提供し得、ＲＴＳ８７０からステータスまたは他の情報を受け取ることができる。例えば、ＲＴＳ８７０がモータである場合、周辺デバイス８６０は、新しいステータ制御の設定のために割り込みを生成するＲＴＳ８７０からのロータ位置データを受け取り得る。ＳＯＣ８００は、例えば自動車用エンジン制御システムの一部とし得、エンジン位置及び速度情報を受け取り、燃料及びスパーク燃焼制御信号を提供し得る。
【００６０】
別の例として、ＲＴＳ８７０がスピーカである場合、周辺デバイス８６０は、アナログサウンド信号をＲＴＳ８７０へ提供し得る。別の周辺モジュールが、オーディオデータのデジタルストリームにアクセスすることができ、オーディオデータの新たなフレームが利用可能であるときに割り込みを生成し得る。ＳＯＣ８００は、モバイルハンドセットの一部とし得、例えば、セルラーフォンネットワークを介して音声及び音楽デジタル信号を受け取ることができる。
【００６１】
ＤＳＣ８２０は、より詳細に上述したように、各ＣＰＵ８０２へのクロック及び電圧レベル８３０を制御するように動作し得る。一実施例では、ＤＳＣ８２０による動的電力管理を備える、１６個のＣＰＵ８０２があり得る。この例では、ＤＳＣ８２０は、バス８５２を介するトランザクションを介して、様々なＣＰＵ８０２からアイドル指示を受け取る。同様に、ＤＳＣ８２０は、バス８５２を介するトランザクションを介して、プリエンプティブウェイクアップ割り込みを様々なＣＰＵ８０２に送る。ＤＳＣ８２０は、ハードワイヤードロジック、ソフトウェア制御マイクロコントローラ、ステートマシン、または、より詳細に上述したような動的電力管理機能を実行する、その他のタイプの論理として実装され得る。
【００６２】
上記で詳細に述べたように、様々なＣＰＵ８０２の各々のためのＤＳＣ８２０の性能を監視するために、性能監視ユニット８４０がＤＳＣ８２０に結合されてもよい。
【００６３】
図９は、コンピュータシステムにおけるプロセッサによる電力消費を著しく削減するための動的電力管理の動作を示すフローチャートである。トークンの時間期間にタスクを実行する場合に、トークンの時間期間の間に低電力モードへ移行された後、プロセッサが招き得るスタートアップ遅延の最大回数が決定される（９０２）。これは概して、デッドライン時間前にタスクのスラック時間を決定することによって、また、選択された低電力モードのレベルに基づいて招かれ得るウェイクアップ待ち時間を決定することによって、システムが設計及び構成される一方でなされる。いくつかの実施例では、選択され得る低電力モードを１タイプよりも多くし得る。
【００６４】
タスクのためにプロセッサがスタートアップ遅延を招き得る決定された最大回数に従い、トークンカウントがタスクに割り当てられる（９０４）。これは、タスクについてのスラック時間をウェイクアップ待ち時間で除算することによってなされる。前述のように、スタートアップ遅延時間は、低電力モードのどのレベルにプロセッサが置かれるかに応じて変化し得る。
【００６５】
タスクはアイドルポイントに到達するまで実行される（９０６）。このポイントで、プロセッサはアイドル信号をアサートして、有用な処理が停止したことを知らせる。上述のように、これは、タスクの一部である、または、タスクのスケジューリングを制御するオペレーティングシステムの一部であるアイドル命令を実行することに応答し得る。
【００６６】
タスクに割り当てられたトークンカウントの現在値がゼロよりも大きい場合にのみ（９０８）、プロセッサは、アイドルインジケータに応答してタスクを実行する一方で、低電力モードに置かれる（９１０）。実際の閾値数はゼロとは異なっていてもよく、ヒストグラムによりキャプチャされる（９３０）プロセッサのアクティビティパターンに依存し得る。閾値はまた、アイドルポイントが検出された現在のタイムスロット値にも依存していてもよい。図４は、このような閾値ポリシーの一例であり、ここでは、タイムスロットｘの各Ｍｉｎ＿ｔｏｋｅｎ［ｘ］は、ヒストグラムに基づいて決定される。
【００６７】
プロセッサを低電力モードから復帰させることにより（９１６）、タスクの実行は再開される。これは、概して、例えば、システム内のデバイスまたは周辺機器による、またはカウンタまたはタイマーによる機能割り込みの結果として生じる。
【００６８】
プロセッサが、低電力モードから復帰されることに応答してスタートアップ遅延を招く度、タスクのトークンカウントの現在値はデクリメントされる（９１８）。
【００６９】
現在のトークンカウントは、各トークン期間の終わりに、割り当てられたトークンカウントに一致させるようにリセットされる（９２４）。
【００７０】
プロセッサが復帰されそうな時間は予測可能であり得（９１２）、プロセッサは、この予測された時間より前に動的スリープコントローラによってプリエンプティブに復帰され得（９１４）、そのためスタートアップ遅延は招かれない。この場合、プロセッサが処理を開始する際にスタートアップ遅延が起こらないときには、トークンカウンタの現在値は維持される（９１５）。プロセッサが復帰されそうであっても、プロセッサが復帰されない低い確率から予期されるエネルギー節約が、トークンを用いるために値するようであれば、動的スリープコントローラは、プロセッサをプリエンプティブに復帰しないと決定し得る。
【００７１】
ウェイクアップ割り込み信号がアサートされ（９１６）、プロセッサが低電力モードにあるときにはプロセッサを低電力モードから復帰させ、プロセッサが低電力モードに移行しなかったときにはタスク実行を再スタートさせる（９２０）。
【００７２】
トークン期間中のウェイクアップ割り込み発生のヒストグラムが、複数のタイムスロットに対して作成される場合がある（９３０）。ヒストグラムの各反復が、例えば、監視ユニット４４０からの性能警告に応答してなされ得る。低電力モードにおける総スリープ時間対時間期間の間のプロセッサの総アイドル時間のスリープ比が監視ユニット４４０により決定され得、スリープ比がスリープ比閾値よりも低いときヒストグラムはリセットされ得る。監視ユニットは、時間期間の間にプロセッサをプリエンプティブに復帰させる前に、何回ウェイクアップ割り込みが受け取られたかのウェイクアップ比を決定することができ、これは予測失敗として参照され、そして、ウェイクアップ比がウェイクアップ比閾値よりも大きいときヒストグラムをリセットする。監視ユニットが予測失敗をカウントするとき、トークンを節約するに値しないという理由で動的スリープコントローラがプロセッサを意図的に復帰させなかった状況（９１２）を、監視ユニットは無視し得る。
【００７３】
あるいは、ヒストグラムは、例えば、システム設計の間に決定される周期的レートでリセットされてもよい。典型的に、ヒストグラムは、動的スリープコントローラによって生成されるプリエンプティブウェイクアップ要求を除外する。
【００７４】
プロセッサが復帰される可能性があるとき（９１２）、閾値を上回るヒストグラム値を有するタイムスロットが予測時間として選択され得る。
【００７５】
ヒストグラムを作成した後（９３０）、ＤＳＣは、後に用いるためにトークンを節約することによって達成され得る潜在的なエネルギー節約を、ヒストグラムの各タイムスロットに対して決定し得る。プロセッサが低電力モードにある一方で、タイムスロットがプリエンプティブウェイクアップタイムスロットとして選択され得（９１２）、タイムスロットの間にウェイクアップ割り込みによってプロセッサが復帰され得る可能性があることをヒストグラムが示す場合、また、後で用いるためにトークンを節約することによって達成され得る潜在的なエネルギー節約が、タイムスロットでスリープ状態であり続けることにより達成され得るエネルギー節約よりも高い場合、動的スリープコントローラによってプリエンプティブウェイクアップ要求がアサートされる（９１４）。このことは、例えば、ＳＤＭ４００及びＷＤＭ５００を用いることにより、式１及び式２に関してより詳細に述べている。
【００７６】
その他の実施形態
例示的な実施例を参照して本発明を説明してきたが、この説明は限定的な意味に解釈されることを意図していない。本発明の様々な他の実施例が、この説明を参照して当業者に明らかとなろう。例えば、単一のＤＳＣが、シングルプロセッサまたはシステムオンチップ内のマルチプロセッサコア用に、動的電力制御を提供してもよい。
【００７７】
本明細書で説明された動的スリープ管理の実施例及び方法は、任意のいくつかのタイプのデジタルシステムに提供され得る。例えば、デジタルシグナルプロセッサ（ＤＳＰ）、汎用プログラマブルプロセッサ、特定用途向け回路、または、ＤＳＰと、様々な特殊なアクセラレータを有する縮小命令セット（ＲＩＳＣ）プロセッサとの組み合わせなどのシステムオンチップ（ＳｏＣ）である。ボード上のまたは外部の（フラッシュＥＥＰ）ＲＯＭまたはＦＲＡＭに記憶されたプログラムが、動的電力管理の態様を実装するために用られ得る。
【００７８】
本開示で説明した技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実装され得る。ソフトウェアで実装する場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＲＧＡ）、またはデジタルシグナルプロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサにおいて実行され得る。技術を実行するソフトウェアは、コンパクトディスク（ＣＤ）、ディスケット、テープ、ファイル、メモリ、またはその他のコンピュータ読出し可能な記憶デバイスなどの、コンピュータ可読媒体に初めに記憶され得、プロセッサ内でロードされ実行され得る。或る場合には、ソフトウェアは、コンピュータプログラム製品の状態で販売され得、それにはコンピュータ可読媒体と、コンピュータ可読媒体用の包装材料が含まれる。或る場合には、ソフトウェア命令は、コンピュータ可読媒体（例えば、フロッピーディスク、光ディスク、フラッシュメモリ、ＵＳＢキー）や、別のデジタルシステムのコンピュータ可読媒体等の伝送経路を介して分配され得る。
【００７９】
特許請求の範囲内で、説明された実施形態に対する改変が可能であり、また、多くの他の実施形態が可能であることを、本技術分野に関する当業者は理解するであろう。
【図１Ａ】
2015513336.tif 000006
【図１Ｂ】
2015513336.tif 000007
【図１Ｃ】
2015513336.tif 000008
【図２】
2015513336.tif 000009
【図３Ａ】
2015513336.tif 000010
【図３Ｂ】
2015513336.tif 000011
【図３Ｃ】
2015513336.tif 000012
【図４】
2015513336.tif 000013
【図５】
2015513336.tif 000014
【図６】
2015513336.tif 000015
【図７】
2015513336.tif 000016
【図８】
2015513336.tif 000017
【図９】
2015513336.tif 000018
【国際調査報告】
2015513336.tif 000019
2015513336.tif 000020