(57)【要約】アプリケーション・プログラム（１０６）のタスクを実行するオペレーティング・システム（１０４）を有するデータ・プロセッサ（１０２）と、前記データ・プロセッサによる前記タスクの実行のパラメータおよびモードを制御する電力およびパフォーマンス・コントローラ（１１０、１１２、１１８）とを使ったデータ処理方法。前記電力およびパフォーマンス・コントローラは、前記タスクの非アクティブ期間を考慮に入れて前記タスクのための前記データ・プロセッサ（１０２）の要求されるパフォーマンスの推定を生成し、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整するパフォーマンス予測器（１１２）を含む。前記パフォーマンス予測器（１１２、１２４）は、前記タスクのそれぞれについて：・前記オペレーティング・システム（１０４）がその同じタスクの処理を続けるために利用可能である前記タスクの利用可能な非アクティブ期間と、・前記オペレーティング・システム（１０４）がその同じタスクの処理を続けるために利用可能でない前記タスクの利用不能な非アクティブ期間との間の区別をする。タスクの実行において締め切りを逃すのが少なくなり、サービス品質における実質的な改善が得られる。
2011508328.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション・プログラムのタスクを実行するオペレーティング・システムを有するデータ・プロセッサと、前記データ・プロセッサによる前記タスクの実行のパラメータおよびモードを制御する電力およびパフォーマンス・コントローラとを有するデータ処理装置であって、前記電力およびパフォーマンス・コントローラは、前記タスクの非アクティブ期間を考慮に入れて前記タスクのための前記データ・プロセッサの要求されるパフォーマンスの推定を生成し、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整するパフォーマンス予測器を含み、
前記パフォーマンス予測器は、前記タスクのそれぞれについて：
・前記データ・プロセッサがその同じタスクを処理するために利用可能であった前記データ・プロセッサの利用可能な非アクティブ期間であって、その同じタスクについて要求されるーパフォーマンスの前記推定を生成する際に含められる利用可能な非アクティブ期間と、
・その同じタスクが処理のために利用可能ではなく前記データ・プロセッサが他のタスクを処理するために利用可能でなかった利用不能な非アクティブ期間および前記データ・プロセッサがその同じタスクを処理するためには利用可能でなかったが他のタスクを処理していた利用不能なアクティブ期間であって、その同じタスクについて要求されるーパフォーマンスの前記推定を生成する際に除外される利用不能な期間との間の区別をするよう構成される、
データ処理装置。
【請求項２】
前記データ・プロセッサは、あるタスクについての利用不能な非アクティブ期間に応答して前記オペレーティング・システムを、その非アクティブなタスクによってブロックされていなければ別のタスクに切り換える、あるいは処理されるべく準備ができた他のタスクがなければアイドルにする、請求項１記載のデータ処理装置。
【請求項３】
前記電力およびパフォーマンス・コントローラが、あるタスクについての前記推定を生成する際に、そのタスクについての前記利用可能な非アクティブ期間には応答するが前記利用不能な期間には応答しない、請求項１または２記載のデータ処理装置。
【請求項４】
前記タスクは入出力アクセスを含み、前記電力およびパフォーマンス・コントローラはあるタスクの前記入出力アクセスに応答してそのタスクについて前記推定を生成する際に対応する非アクティブ期間を排除する、請求項１ないし３のうちいずれか一項記載のデータ処理装置。
【請求項５】
前記電力およびパフォーマンス・コントローラが、あるタスクについて前記推定を生成する際に、そのタスクについての作業負荷の減衰平均に応答する、請求項１ないし４のうちいずれか一項記載のデータ処理装置。
【請求項６】
前記電力およびパフォーマンス・コントローラが、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整する際に、前記データ・プロセッサのクロック周波数および／または供給電圧を調整するよう構成されている、請求項１ないし５のうちいずれか一項記載のデータ処理装置。
【請求項７】
アプリケーション・プログラムのタスクを実行するオペレーティング・システムを有するデータ・プロセッサと、前記データ・プロセッサによる前記タスクの実行のパラメータおよびモードを制御する電力およびパフォーマンス・コントローラとを使ったデータ処理方法であって、前記電力およびパフォーマンス・コントローラは、前記タスクの非アクティブ期間を考慮に入れて前記タスクのための前記データ・プロセッサの要求されるパフォーマンスの推定を生成し、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整するパフォーマンス予測器を含み、
前記パフォーマンス予測器は、前記タスクのそれぞれについて：
・前記データ・プロセッサがその同じタスクの処理を続けるために利用可能である前記データ・プロセッサの利用可能な非アクティブ期間と、
・その同じタスクが処理のために利用可能ではなく前記データ・プロセッサが他のタスクを処理するために利用可能でなかった利用不能な非アクティブ期間および前記データ・プロセッサがその同じタスクを処理するためには利用可能でなかったが他のタスクを処理していた利用不能なアクティブ期間との間の区別をし、利用不能な期間はその同じタスクについて要求されるーパフォーマンスの前記推定を生成する際に除外される、
データ処理方法。
【請求項８】
前記データ・プロセッサは、あるタスクについての利用不能な非アクティブ期間に応答して前記オペレーティング・システムを、その非アクティブなタスクによってブロックされていなければ別のタスクに切り換える、あるいは処理されるべく準備ができた他のタスクがなければアイドルにする、請求項７記載のデータ処理方法。
【請求項９】
前記電力およびパフォーマンス・コントローラが、あるタスクについての前記推定を生成する際に、そのタスクについての前記利用可能な非アクティブ期間には応答するが前記利用不能な期間には応答しない、請求項７または８記載のデータ処理方法。
【請求項１０】
前記タスクは入出力アクセスを含み、前記電力およびパフォーマンス・コントローラはあるタスクの前記入出力アクセスに応答してそのタスクについて前記推定を生成する際に対応する非アクティブ期間を排除する、請求項７ないし９のうちいずれか一項記載のデータ処理方法。
【請求項１１】
前記電力およびパフォーマンス・コントローラが、あるタスクについて前記推定を生成する際に、そのタスクについての作業負荷の減衰平均に応答する、請求項１ないし１０のうちいずれか一項記載のデータ処理方法。
【請求項１２】
前記電力およびパフォーマンス・コントローラが、前記推定に応答して前記データ・プロセッサのパフォーマンスおよび電力消費を調整する際に、前記データ・プロセッサのクロック周波数および／または供給電圧を調整する、請求項１ないし１１のうちいずれか一項記載のデータ処理方法。
【請求項１３】
データ処理装置にインストールされたときに請求項７ないし１２のうちいずれか一項記載のデータ処理方法を実行するよう適応されたコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法およびコンピュータ・プログラム・プロダクトに関する。
【背景技術】
【０００２】
電力節減は絶えざる関心事であり、特に充電式バッテリーのような内部エネルギー源をもつ携帯機器においてそうである。データ・プロセッサの電力消費は、プロセッサが動作中（たとえば構成回路スイッチングあり）の動的電力およびプロセッサが動作していないが電源を受けている間（たとえばスイッチングなしの定常状態またはトランジスタ・オフ状態）の静的電力に大別される。静的またはリーク電力散逸は、回路が動作しているときにも起こるが、今日の技術では、これは動的電力散逸に比べれば小さい。
【０００３】
電力浪費の源に対処するべくさまざまな電力節減技術が開発されてきた。多くは、より小さなシリコン・プロセス幾何、能動井戸バイアス（active  well  biasing）および自動アイドル検出回路といった完全にハードウェアの解決策である。他の技術は、データ・プロセッサの動作パラメータと電力消費との妥協を図る。一つのそのような技術は、動的電力管理（DPM:  Dynamic  power  management）の名のもとに一般に知られている。DPMは、動作要求を満たすよう必要とされる最小限のパフォーマンスはもちながら、電力浪費を最小にするためにリアルタイムでそのハードウェア・モジュールの電力状態を設定するシステムを記述する。DPMは、動的電圧および周波数スケーリング（DVFS:  dynamic  voltage  and  frequency  scaling）および動的プロセスおよび温度補償（DPTC:  dynamic  process  and  temperature  compensation）といった、動作モードを動的に制御する技術ならびに低電力アイドル・モード（プロセッサが電力を受けているがクロックを受けていないドーズ（doze）およびプロセッサのいくつかのモジュールが動作電力を供給されないスリープ（sleep）など）を制御するためのアイドル時間予測を含む。
【０００４】
これらの技術について、ここでより詳細に見ておく。データ・プロセッサにおける実行中に、アプリケーション・プログラムおよび他のシステム・ソフトウェアがモニタリングされる。これらのアプリケーションのいくつかは、到来するパフォーマンス・電力ニーズを同定できる（「電力アウェア（power  aware）」なソフトウェア）が、他の多くのアプリケーションはできない。到来するパフォーマンス・電力ニーズを知ることは、データ・プロセッサのオペレーティング・システム内のソフトウェア・ドライバおよび電力ハンドラを使ってハードウェア電力節減機構を駆動する電力マネージャを制御するために使用できる。
【０００５】
一つの動的電力節減技法は、論理回路がアイドリングしているときにその論理回路へのクロックを遅くするまたは無効にすることである。クロック・ゲーティング（clock  gating）またはクロック・フリージング（clock  freezing）は、クロックがゲート・オフされるレジスタ中のみならず、レジスタ信号がもはや伝搬されなくなるのでそれらのレジスタに接続された組み合わせ論理回路中でも電力を節減する。クロック・ゲーティングはオン・オフするのが非常に高速なので、クロック・ゲーティングが正しいタイミングで行われていれば、そのような回路を使うソフトウェアは影響されない。静的またはリーク電力散逸はより大胆な方策を必要とする。電力ゲーティング（power  gating）と呼ばれる一つの解決策は、装置またはサブコンポーネントの電源をオフにすることである。電力ゲーティングは、動的電力およびリーク電力の両方を低減させ、オンチップでローカルに実装することも、外部的に電源ユニットにおいて実装することもできる。
【０００６】
もう一つの電力節減技術は、パフォーマンスが要求されない時（アイドリング）または可変パフォーマンスが要求されるときに回路への供給電圧を変えることである。アイドル・モードの間、装置またはサブコンポーネントがアクティブ状態から低パフォーマンス状態に遷移すると、ハードウェアはより高い電圧からより低い電圧に自動的に切り替わることができる。一例は、スリープまたはストップ・モードにはいると動作電圧が自動的に低下させられるプロセッサ・コア設計である。このモードではコアはクロックされないが、それでも定常電流リークは被る。コアは命令や他の機能を実行する必要がないので、動作電圧は、内部状態データが正しく保持されることを保証するのにちょうど十分な値にまで下げることができる。これは時に、ストップ・モード電圧スケーリング（stop  mode  voltage  scaling）と呼ばれる。
【０００７】
可変パフォーマンスが必要とされる非アイドリング状況は、動作周波数、動作電圧またはその両者を変えることによって対処される。動的周波数スケーリング（Dynamic  Frequency  Scaling）は、集積回路における動的電力消費はほぼ動作周波数に比例するという観察に依拠する。したがって、要求される処理パフォーマンスを満たす最低の値にまでプロセッサのクロック周波数を下げることは意味がある。これは、ソフトウェアはより低速で走るものの、受け容れ可能な余裕をもってそのリアルタイム締め切りは満たすということを意味する。これは動的に行われ、どの周波数設定が受け容れ可能かを決定するよう適応された電力管理ソフトウェア（power  management  software）を必要とする。動作電圧もスケーリングされれば、よりよい電力節減が達成できる。電力は電圧の二乗で変化するので、電圧スケーリングを使えば二乗則の電力節減が潜在的には可能である。電圧スケーリングおよび周波数スケーリングの両方が使われる場合、動的電圧および周波数スケーリング（DVFS）と呼ばれるその組み合わせは、動作電圧の三乗にほぼ比例する電力節減を与えることができる。
【０００８】
これらの二乗則および三乗則の電力節減は、電圧制御回路の構成および効率のみならず、電圧／周波数設定を設定するために使われる予測ソフトウェアの効率にも依存する。所与の集積回路設計について、動作電圧は最大使用可能動作周波数を決定する。電圧は（よって周波数も）、最小限の電力浪費に対して、要求されるパフォーマンスの兼ね合いをつけるようスケーリングされる。電圧を上下にスケーリングさせる（よって消費電力を増減する）とき、動作周波数もスケーリングされ、それとともに装置の利用可能なパフォーマンスも上下する。利用可能なパフォーマンスは、設計の動作許容値内に留まるよう制御されるべきである。DVFS技術は、変動するが継続するソフトウェア作業負荷に対処するものである。
【０００９】
実行モード（run  modes）およびアイドル・モード（idle  modes）の両方について、プロセッサ速度‐電圧レベルのようなシステム・ハードウェアのパフォーマンス電力状態を動的に制御するために、パフォーマンス予測およびパフォーマンス設定アルゴリズムが利用可能である。プロセッサ上の短期ソフトウェア負荷を予測することに基づいてプロセッサの動作周波数および電圧を設定する、DVFSベースのプロセッサとともに使うアルゴリズムが存在する。このクラスの一例のアルゴリズムは、OSにおいて走っている各タスクの最近のソフトウェア負荷（すなわち、メモリにロードされているプログラム命令の集合）の履歴を追跡し、それを外挿して次にくる期間における要求されるパフォーマンスの予測を導出する。この技法は、タスクの最近の過去の作業負荷と近い将来の作業負荷の間にそこそこの相関を想定している。OSカーネルによってタスク・ステータス情報が供給される。このアルゴリズムは、（全タスクについての）総合作業負荷を予測するために作業負荷および使われていないアイドリング時間の推定を維持する。この規格化されたMCU処理レベルは、付随するソフトウェアによって、使用される個別のDVFS機構に必要とされる関連する周波数および電圧設定に変換される。このアルゴリズムは、変化するソフトウェア負荷に応答して新たな予測を継続的に再計算し、供給する。原理的には、このアルゴリズムは、各OSタスクについて個々の締め切りをちょうど満たす要求されるプロセッサ・パフォーマンスを予測する。このアルゴリズムは、作業負荷があまり急速に変化しないOSタスクについてはそこそこよく機能する。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
この種のアルゴリズムによって達成される実際のパフォーマンスおよび電力節減は、理論的計算に比べると満足いくものではなかった。本発明の一つの目的は、データ・プロセッサの達成可能なパフォーマンスおよび電力節減を改善することである。
【課題を解決するための手段】
【００１１】
本発明は、付属の請求項記載のようなデータ処理装置、データ処理方法および該データ処理方法を実行するためのコンピュータ・プログラムを提供する。
【図面の簡単な説明】
【００１２】
【図１】例として与えられる、本発明のある実施形態に基づく、動的電圧および周波数スケーリング（「DVFS」）を用いるデータ処理装置の一例の概略図である。
【図２】既知のDVFSプロセスにおけるパフォーマンス予測のタイミング図の例である。
【図３】図１のデータ処理装置におけるDVFSプロセスにおけるパフォーマンス予測のタイミング図の例である。
【図４】第一のタスクについての図３のDVFSプロセスのフローチャートである。
【図５】第二のタスクについての図３のDVFSプロセスのフローチャートである。
【発明を実施するための形態】
【００１３】
図面の図１は、例として与えられる、本発明のある実施形態に基づく、動的電圧および周波数スケーリング（「DVFS」）を用いるデータ処理装置１００を示している。この例において、本発明は、ビデオ・プレーヤー・アプリケーションに適用されるものとして例解されるが、本発明が他の多くのアプリケーションにも適用可能であることは理解されるであろう。
【００１４】
装置１００は、オペレーティング・システム（「OS」）１０４、ビデオ・プレーヤー・アプリケーション・プログラム１０６、他のアプリケーションを実行するための他のシステム・ソフトウェア１０８およびプロセッサの動作周波数および電圧をCPU１０２上での短期ソフトウェア負荷の予測に基づいて設定するDVFSプロセッサ１１０を含む中央処理装置（「CPU」）１０２を有する。
【００１５】
本装置はまた、重要な締め切りの前に完了されるべき各タスクについて要求されるパフォーマンスを予測するパフォーマンス予測器１１２をも含む。該パフォーマンス予測器は、OS１０４からビデオ・プレーヤー・アプリケーション・プログラムのタスク実行時間に関する入力１１４を受け取る。パフォーマンス予測器１１２は、各タスクについてパフォーマンス・レベル出力信号１１６を生成し、これをDVFSハードウェア１１８に与える。DVFSハードウェア１１８は、選択された電圧およびクロック周波数レベルを定義する信号１２０および１２２を供給する。これらの信号をDVFSプロセッサ１１０が各タスクについてCPUに加える。
【００１６】
パフォーマンス予測器１１２は、OSにおいて走っている各タスクの最近のソフトウェア負荷の履歴を追跡し、それを外挿して次にくる期間における要求されるパフォーマンスの予測を導出するアルゴリズムを使って、各タスクについて、CPUに対する短期ソフトウェア作業負荷を予測する。本発明のこの実施形態では、パフォーマンス予測器１１２は、ブロッキングおよび非ブロッキングのオペレーティング・システム・アクセス・コールの間の区別をするよう構成される。
【００１７】
データ処理装置における入力および出力動作は、データの処理に比べてきわめて遅いことがありうる。たとえば、実行に１０ミリ秒かかるフェッチ（fetch）動作の間に、１ギガヘルツでクロックされるプロセッサは１０００万命令処理サイクルを実行することだってできる。
【００１８】
タスク「A」についての入力および出力動作（「I/O」）への簡単なアプローチは、アクセスを開始し、それが完了するのを待ってから、タスクAまたさらには他のタスクを処理することである。そのようなアプローチ（同期I/OまたはブロッキングI/Oと呼ばれる）は、ある型のI/Oについては必要であるが、I/Oが進行中はプログラムの進行がブロックされ、システム資源はアイドルになる。プログラムが多くのI/O動作を行う場合、これは、プロセッサがその時間のほとんどすべてを、I/O動作が完了するのを待ってアイドルなまま過ごすことがありうるということを意味する。
【００１９】
処理タスクによっては、あるタスクAについてI/Oを開始し、次いでそのI/Oが完了していることを要求しない処理、特に他のタスクの処理を実行することが可能である。これら他のタスクについて、このI/Oは非同期的または非ブロッキングI/Oである。I/Oが完了していることに実際に依存するタスクAのような任意のタスク（これは、入力値を使用することおよび書き込み動作が完了していることを保証することを必要とするクリティカルな動作の両方を含む）は、やはりI/O動作が完了するのを待たねばならず、よってやはりブロックされるが、このI/O動作に対する依存性をもたない他の処理タスクは継続できる。
【００２０】
タスク「A」の非同期的入出力または非ブロッキング入出力とは、タスクA自身はそのI/Oの完了を待たねばならないが、その入出力伝送が終わる前に他のタスクを処理することをオペレーティング・システムに許すような入出力処理の形である。他方、そのアプリケーションがタスクAのためのOS資源（CPU）をコールすると、そのコールがそのアプリケーションが他のタスクのためにOSを解放することを強制するのでない限り、非ブロッキングI/Oコールの期間中の他のタスクの実行についてでさえもOSをブロックすることがありうる。前記のような場合には、タスクA自身がOS資源の欠如によってブロックされる。
【００２１】
必要とされるプロセッサ・パフォーマンスを計算するためにアイドル期間を考慮に入れることにより、DVFSコントローラは、締め切りおよびその他の要求を満たすのにちょうど十分なようにパフォーマンスを調整できる。図１に示される本発明の実施形態におけるパフォーマンス予測器１１２は、所与のタスクについて：
・OSコールが中断されている間、たとえば少なくともタスクAがI/Oアクセスの完了を要求する場合の待ち期間の間、タスクA以外のタスクは処理され続けることができる非ブロッキング・オペレーティング・システム・アクセス・コールに関係する非アクティブ期間と、
・タスクAがI/Oアクセスの完了を要求する場合の待ち期間の間、タスクAがOSを解放せず、当該コール後は当該オペレーティング・システム・アクセスの完了まで、何のタスクも処理できないブロッキング・オペレーティング・システム・アクセス・コールとの間の区別をするよう構成される。
【００２２】
図１の装置の電力およびパフォーマンス・コントローラ機能は、各タスクについてのパフォーマンス予測器１１２のアイドル時間計算を、オペレーティング・システム・アクセスがそのタスクに利用可能であり（「ブロックされていない」）よって他のタスクには拒否されているそのタスクの非アクティブ期間と、オペレーティング・システム・アクセスがそのタスクに利用可能でなく（「ブロックされている」）よって他のタスクに利用可能であるそのタスクの非アクティブ期間との間の区別をするよう修正するアイドル時間補償器を含む。CPUが非アクティブであったがタスクAに専用でありよって他のタスクにとってはブロックされていた場合のタスクAの非アクティブ期間については、CPUは、処理タスクAのそのアクティブ期間の間、より低速で走り、そうでなければアイドルとなる非アクティブ期間の一部を使用することができる。逆に、CPUが非アクティブであったが他のタスクによってブロックされておりよってタスクAにとって利用不能であった場合のタスクAの非アクティブ期間については、CPUはそのアクティブ期間の間、より低速で走ることができたと想定することは誤りである。これは、CPUは、そのアクティブ期間の間、いずれにせよより低速で走って非アクティブ期間の一部をタスクAのために使うことはできなかったからである。逆に、タスクAにとってブロックされている非アクティブ期間については、CPU１０２が他の何らかのタスクについて利用可能であった間にそれらの他のタスクを処理しなかった場合には、それらの他のタスクのそれぞれの待ち期間は、可能なパフォーマンス低下および電力消費節減を計算する際、それらの他のタスクについて正しく考慮に入れられることができる（だがタスクAについては考慮に入れない）。
【００２３】
具体的には、アイドル時間補償器１２４は、OS１０４から、信号１２６、１２８および１３０を受信する。これらの信号はそれぞれ、現在のアプリケーション・タスクのOSアクセス・コールが他のタスクについてCPUの使用についてブロッキングであるか非ブロッキングであるか、現在のタスクに関連付けられた未補正の（「生の」）アイドル時間および現在のタスクに関する他の情報を同定する。次いでアイドル時間補償器１２４は、各タスク１３４についての生のアイドル時間から、CPUがいずれにしろその同じタスクを実行するために利用不能であった非アクティブ時間があればそれを減算し、１３４で同定される各タスクについてこうして修正されたアイドル時間計算を定義する出力１３２をパフォーマンス予測器１１２に与える。
【００２４】
より詳細には、本発明のある実施形態のこの例では、以下のステップを使ってパフォーマンス推定が導出される。本発明のそのような実施形態を実装するために他のアルゴリズムが使用されることもできることは理解されるであろう。
【００２５】
まず、最近の過去の期間（たとえばOSにもよるが100ms）の間の一連の時間スロットi＝1ないしNの間のタスクのフルスピード等価作業負荷（full-speed  equivalent  workload）Workfseが
【００２６】
【数１】
2011508328.tif 000003
を使って計算される。ここで、tiは時間スロットiの長さであり、piはその時間スロットの間のCPUパフォーマンス・レート（performance  rate）である。
【００２７】
次に、より長い期間にわたる作業負荷の減衰平均（decaying  average）が次式を使って計算される：
【００２８】
【数２】
2011508328.tif 000004
ここで、kは重み付け因子である。
【００２９】
次いで、要求される締め切りに行くための時間の減衰平均が次式を使って計算される：
【００３０】
【数３】
2011508328.tif 000005
ここで、Idlefseは、タスクについてのアイドル時間を、そのタスクについてCPUが利用不能であったアイドル時間を減算することによって補償したものである。
【００３１】
最後に、計算された締め切り時間をちょうど満たすのに必要とされるパフォーマンスの割合の調整が、次式
【００３２】
【数４】
2011508328.tif 000006
を使って計算される。；
アイドル時間補償器１２４の効果の図解が、アイドル時間補償器１２４なしのDVFSシステムのはたらきを示す図２と、アイドル時間補償器１２４のある図３に示されている。
【００３３】
図２および図３において、ビデオ・アプリケーション・プログラムは、タスクAについての入力バッファ（図示せず）から再生されるべきn個の時間スロット２００のフレームを要求するものとして示されている。各フレームのあとには、それらのフレームの処理が同期信号を待ちCPUが非アクティブでありうるスロット２０２が続く。図面に示した例では、タスクA以外のタスクはOSによるサービスをコールしない。しかしながら、同期信号を待つ間、タスクAについての次の同期信号がCPUにおける処理を必要とする次のスロット２００より十分前に他のタスクがCPUによって完了されるのであれば、タスクA以外のタスクを実行するためにOSが利用可能となる。
【００３４】
CPU１０２は、アクティブ期間２０８と非アクティブ期間２１０の間を交互に経る。その間に現在のタスクが完了され、他のタスクがどれもOSによるサービスをコールしない場合にはCPUはアイドルにされる。ビデオ・アプリケーション・プログラム１０４によるビデオ・フレームの処理は、入力バッファが空になるまでこのようにして続く。その後の非アクティブ期間２０４および２０６の間、ビデオ・アプリケーション・プログラムは、ローカルな入力バッファにすでに存在するのでない新しいフレーム・データのフェッチを要求するOSへのシステム・コールをし、I/Oインターフェース（たとえばネットワーク・ドライバまたはディスク・ドライバ）がそのデータを入力からフェッチしてバッファに入れる間、OSはタスクAを処理するために利用可能ではない。この遅延された完了は、その意味において非同期動作である。OS１０４は、コールしたビデオ・プログラムに制御を返す。そのビデオ・プログラムが現在のフレームにおけるその作業を完了すると、スロット２００の終わりにOSに制御を譲る。スロット２００はアクティブである（たとえば実行モードにある）DVFSプロセッサ１１０に対応する。タスクAは、OSがタスクAのためのデータを処理するのに利用可能でない非アクティブ期間２０４および２０６の間、CPUを使用できない。タスクAは、その間に他のタスクがCPUをブロックしていなければ、バッファ内にデータが利用可能になるとすぐ再開できる。
【００３５】
アイドル時間補償器１２４がないときのパフォーマンス予測器１１２、電圧および周波数設定ハードウェア１１８およびDVFSプロセッサ１１０を含むパフォーマンス・コントローラの動作が図２に示されている。時間に対する周波数（および／または供給電圧）のグラフ２１２によって示されるように、最初、CPUは通常速度で、フル・クロック周波数をもって走る。２非アクティブ期間２１０後、要求されるパフォーマンスの計算は、パフォーマンス・コントローラに、２１４に示されるようにCPU１０２を減速させる。これにより、CPUのアクティブ期間はより長い時間にわたってより低速で走り、対応してエネルギーが節減され、アイドル期間の継続時間が短縮される。タスクAのアクティブ期間は、それでも、２１６で示されるスロット締め切りの前に満足いくように完了される。
【００３６】
しかしながら、入力バッファが空であり、２０４および２０６において、プロセスが入力からバッファへのさらなるデータのフェッチをコールするとき、パフォーマンス・コントローラは、２１８で示されるようにCPUパフォーマンスのスピードを再び低下させる。要求されるパフォーマンスを計算する際に、データがバッファ中にフェッチされている間CPUがタスクAを処理できないアイドル期間２２０も含めて、現在のタスクAのすべてのOS非アクティブ期間が考慮に入れられるからである。実際のところ、このパフォーマンス・コントローラは、タスクが再開するためにデータが利用可能になってからタスクを適時に完了するために要求されるパフォーマンスを過小評価してしまう。２２２においてデータが利用可能であり、CPU１０２がアクティブなスロットを再開するとき、アクティブ期間の継続時間は引き延ばされすぎ、アクティブ期間を完了するための締め切り２２４を行きすぎてしまう。実際上は、そのように締め切りを逃すことは、システムの最適でない振る舞い、特に安定性の欠如および不正確な予測につながる。これは、ビデオ・プレーヤー・アプリケーションにおけるたとえば欠けたビデオ・フレームのような劣化したサービス品質に帰結する。そのような最適でない振る舞いは、比較的安定した作業負荷条件にあるプロセスの典型的なモデル化からや、作業負荷およびパフォーマンス予測器の簡単な非OS試験からは明白でない。
【００３７】
ここで図３に目を向けると、アイドル時間補償器１２４をもつDVFSシステムのはたらきが示されており、類似の要素は図２と同じ参照符号によって指示されている。２１４において、ブロッキングするアイドル期間２０２のため、CPUパフォーマンスのスピードの同じ低下が起こるが、アイドル時間補償器１２４が生のアイドル時間指示１２８を補正し、修正されたアイドル時間指示は今やタスクAに利用可能でないアイドル時間２２０を無視するようになる。結果として、パフォーマンス・コントローラは、２２６においてアイドル期間２２０に応答してCPU１０２のスピードのさらなる低下をさせないという正しい動作をし、CPUはその後のアクティブ期間２２８の間、不変のスピードで走り、それにより、締め切り２２４前に完了される。そのような実際的な応用でのCPUの実際の使用においては、締め切りを逃すことを回避することにおいて、実質的な改善が得られることが見出される。よって、モデル化および試験が必ずしも改善を明らかにするのでなくても、実際的な使用の場合においてシステム安定性およびサービス品質が大幅に改善される。
【００３８】
図４および図５は、ビデオ・プレーヤー・プログラム１０６、OS１０４のカーネルならびにDVFSプロセッサ１１０、パフォーマンス予測器１１２、DVFSハードウェア１１８およびアイドル時間補償器１２４を含む諸パフォーマンス・コントローラ・モジュールの間の処理ステップの序列の一例を示している。図４は、図２および図３で２１４において、図３で２２６において示される有効な電圧／周波数計算の場合のプロセスを示している。図５は、図２で２１８において示される有効でない電圧／周波数計算の場合のプロセスを示している。
【００３９】
まず図４を参照すると、図示したプロセス４００は、４０２でフレームをデコードし、４０４でデコードされたフレームをディスプレイに送ることをもって始まる。これは図２および図３の再生nのステップ２００に対応する。フレームの終わりに、ビデオ・プレーヤー・アプリケーションは、４０６で同期ストリームを待ってスリープする。OSカーネル１０４におけるスケジューラは、４０８で、実行待ち行列に実行すべきプロセスがないことに留意すること（noting）によってスリープ中のビデオ・プレーヤー・アプリケーションに応答し、４１０において、アイドル期間をスケジュールして、エネルギー消費を節約する。これは、図２および図３のアイドル・ステップ２０２に対応する。アイドル時間i1が４１２において同定され、アイドル時間補償器１２４に送られる。アイドル時間補償器１２４は４１４において、そのアイドル時間が、OSがタスクを処理するために利用可能であった時間であり、タスクAがI/Oを待っている時間ではないことを検証し、４１６でOSカーネル１０４内のスケジューラに信号を送る。本発明のこの実施形態では、アイドル時間補償器は、OSが現在のタスクAのために利用可能であった場合の利用可能な非アクティブ期間とそうでなかった利用可能でない非アクティブ期間との間の区別をするときに、その期間がなぜ非アクティブであるかの理由を考慮に入れる。
【００４０】
スケジューラは、４１８で次の実行可能タスクを取り上げ、このタスクをアイドル時間補償器１２４を通じてパフォーマンス予測器１１２に対して同定する。４２０において、パフォーマンス予測器１１２は、ステップ４１４からのアイドル期間についての情報i1を諸タスクについての減衰平均アイドル時間蓄積器中に含め、そのタスクについての適切な周波数／電圧を計算し、４２２において、対応するタスク実行時間およびアイドル時間を定義する。すると、ビデオ・プレーヤー・アプリケーションはOSに、４２４において次のフレームのデコードし、４２６においてデコードされたフレームをディスプレイに送ることを開始するよう指示できる。
【００４１】
図５に示されるプロセスにおいて、図示されたプロセスは、ビデオ・プレーヤー・アプリケーション１０６が、入力バッファからの全フレームを処理し終わって入力バッファが空になり、プレーヤーがネットワーク・ドライバに新たなフレームをフェッチすることを求めなければならない状態５０２に到達することをもって始まる。これは、図２および図３の待ちステップ２０４および２０６の前の再生ステップの終わりに対応する。５０６において、OSカーネル１０４は、タスクAをネットワーク・ドライバのための待ち行列中に入れることによって、この状況に応答する。５０８では、この例では、OSカーネル１０４はこの時点では実行すべき他のタスクは持たず、５１０において、CPUのためにアイドル期間i2をスケジュールして、エネルギーの消費を節約する。これは図２および図３のアイドル・ステップ２０４および２０６に対応する。アイドル時間i2は他のタスクのために活用可能であろうが、他のタスクを処理するかどうかによらず、OSはタスクAのためには利用可能ではない。５１２においてアイドル時間i2が同定され、アイドル時間補償器１２４に送られる。５１４においてアイドル時間補償器１２４が、そのアイドル時間がタスクAのために利用可能であることを検証し、５１６において、タスクAのためのデータが準備できたときに、OSカーネル１０４内のスケジューラに信号を送る。これは、５１８のスケジューラが５２０において次の実行可能なタスクを取り上げ、このタスクをアイドル時間補償器１２４を通じてパフォーマンス予測器１１２に対して同定することをトリガーする。パフォーマンス予測器１１２は、５２２で、タスクAおよび他のタスクについて適切な周波数／電圧を計算し、ステップ５１４からの情報に起因するタスクAのための減衰平均アイドル時間蓄積器からのアイドル期間i2は消去するが、ステップ５１４からのアイドル時間i2についての情報は他のタスクのための減衰平均アイドル時間蓄積器中に含める。パフォーマンス予測器１１２は、５２４において、対応するタスク実行時間およびアイドル時間を定義する。このデータは、ビデオ・プレーヤー・アプリケーションに渡され、ビデオ・プレーヤー・アプリケーションは５２６において次のフレームをデコードし、５２８においてデコードされたフレームをディスプレイに送ることを開始する。
【００４２】
図面に示されている本発明の実施形態は、そうした実施形態の特徴を例解する簡単なプロセスである。本発明のこれらの実施形態が、高度なランタイム・パフォーマンス・アルゴリズムに適用可能であり、たとえば複数の並行予測器、ポリシーおよび電力コスト規則をサポートする標準化されたソフトウェア・フレームワークを使用できることは理解されるであろう。本発明のこれらの実施形態は、さまざまな市販のオペレーティング・システムのシステム・ソフトウェアとともに走ることができる。
【図１】
2011508328.tif 000007
【図２】
2011508328.tif 000008
【図３】
2011508328.tif 000009
【図４】
2011508328.tif 000010
【図５】
2011508328.tif 000011
【手続補正書】
【提出日】平成22年6月29日(2010.6.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アプリケーション・プログラムのタスクを実行するオペレーティング・システムを有するデータ・プロセッサと、前記データ・プロセッサによる前記タスクの実行のパラメータおよびモードを制御する電力およびパフォーマンス・コントローラとを有するデータ処理装置であって、前記電力およびパフォーマンス・コントローラは、前記タスクの非アクティブ期間を考慮に入れて前記タスクのための前記データ・プロセッサの要求されるパフォーマンスの推定を生成し、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整するパフォーマンス予測器を含み、
前記パフォーマンス予測器は、前記タスクのそれぞれについて：
・前記データ・プロセッサがその同じタスクを処理するために利用可能であった前記データ・プロセッサの利用可能な非アクティブ期間であって、その同じタスクについて要求されるーパフォーマンスの前記推定を生成する際に含められる利用可能な非アクティブ期間と、
・その同じタスクが処理のために利用可能ではなく前記データ・プロセッサが他のタスクを処理するために利用可能でなかった利用不能な非アクティブ期間および前記データ・プロセッサがその同じタスクを処理するためには利用可能でなかったが他のタスクを処理していた利用不能なアクティブ期間であって、その同じタスクについて要求されるーパフォーマンスの前記推定を生成する際に除外される利用不能な期間との間の区別をするよう構成される、
データ処理装置。
【請求項２】
前記データ・プロセッサは、あるタスクについての利用不能な非アクティブ期間に応答して前記オペレーティング・システムを、その非アクティブなタスクによってブロックされていなければ別のタスクに切り換える、あるいは処理されるべく準備ができた他のタスクがなければアイドルにする、請求項１記載のデータ処理装置。
【請求項３】
前記電力およびパフォーマンス・コントローラが、あるタスクについての前記推定を生成する際に、そのタスクについての前記利用可能な非アクティブ期間には応答するが前記利用不能な期間には応答しない、請求項１または２記載のデータ処理装置。
【請求項４】
前記タスクは入出力アクセスを含み、前記電力およびパフォーマンス・コントローラはあるタスクの前記入出力アクセスに応答してそのタスクについて前記推定を生成する際に対応する非アクティブ期間を排除する、請求項１ないし３のうちいずれか一項記載のデータ処理装置。
【請求項５】
前記電力およびパフォーマンス・コントローラが、あるタスクについて前記推定を生成する際に、そのタスクについての作業負荷の減衰平均に応答する、請求項１ないし４のうちいずれか一項記載のデータ処理装置。
【請求項６】
前記電力およびパフォーマンス・コントローラが、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整する際に、前記データ・プロセッサのクロック周波数および／または供給電圧を調整するよう構成されている、請求項１ないし５のうちいずれか一項記載のデータ処理装置。
【請求項７】
アプリケーション・プログラムのタスクを実行するオペレーティング・システムを有するデータ・プロセッサと、前記データ・プロセッサによる前記タスクの実行のパラメータおよびモードを制御する電力およびパフォーマンス・コントローラとを使ったデータ処理方法であって、前記電力およびパフォーマンス・コントローラは、前記タスクの非アクティブ期間を考慮に入れて前記タスクのための前記データ・プロセッサの要求されるパフォーマンスの推定を生成し、前記推定に応じて前記データ・プロセッサのパフォーマンスおよび電力消費を調整するパフォーマンス予測器を含み、
前記パフォーマンス予測器は、前記タスクのそれぞれについて：
・前記データ・プロセッサがその同じタスクの処理を続けるために利用可能である前記データ・プロセッサの利用可能な非アクティブ期間と、
・その同じタスクが処理のために利用可能ではなく前記データ・プロセッサが他のタスクを処理するために利用可能でなかった利用不能な非アクティブ期間および前記データ・プロセッサがその同じタスクを処理するためには利用可能でなかったが他のタスクを処理していた利用不能なアクティブ期間との間の区別をし、利用不能な期間はその同じタスクについて要求されるーパフォーマンスの前記推定を生成する際に除外される、
データ処理方法。
【請求項８】
データ処理装置にインストールされたときに請求項７記載のデータ処理方法を実行するよう適応されたコンピュータ・プログラム。
【国際調査報告】
2011508328.tif 000012
2011508328.tif 000013
2011508328.tif 000014