(57)【特許請求の範囲】
【請求項１】
複数のプロセッサのクロック周波数を制御するシステムであって、当該システムは、
前記複数のプロセッサの利用を測定する利用測定モジュールと、
複数のプロセッサ上で実行する、プロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定する関連性モジュールと、
推定された前記バランス及び測定された前記利用に基づいて、クロック周波数調整を計算し、計算された該クロック周波数調整に基づいて、前記複数のプロセッサのクロック周波数を更新するクロック周波数調整モジュールと、を含み、
前記関連性モジュールは、さらに、
推定された前記バランスに関連づけられた期間について前記クロック周波数を変化させ、
前記期間中の利用変化を測定し、前記利用変化のクロック周波数変化に対する比率に基づいて、前記バランスを推定する、システム。
【請求項２】
前記関連性モジュールは、さらに、前記比率を閾値比率と比較し、前記比率が該閾値比率よりも小さい場合は、前記バランスを前記Ｐ／Ｃワークロードに関連づける、請求項１に記載のシステム。
【請求項３】
推定された前記バランスがＰ／Ｃワークロードに関連付けられており、測定された前記利用が利用閾値よりも小さい場合、前記クロック周波数調整はクロック周波数上昇である、請求項１又は２に記載のシステム。
【請求項４】
前記利用測定モジュールは、さらに、ある時間間隔経過後に前記複数のプロセッサの利用を再測定し、前記クロック周波数調整モジュールは、さらに、再測定された前記利用が前記利用閾値よりも大きく、かつ、前記クロック周波数調整がクロック周波数上昇であった場合に、前記クロック周波数を小さくする、請求項３に記載のシステム。
【請求項５】
前記クロック周波数の更新は、さらに、前記複数のプロセッサの制御状態の電圧周波数ペアリングを調整することを含む、請求項１から４のいずれか一項に記載のシステム。
【請求項６】
前記複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である、請求項１から５のいずれか一項に記載のシステム。
【請求項７】
当該システムは、スマートフォン、スマートタブレット、ノートブック又はラップトップコンピュータのいずれかに組み込まれた、請求項１から６のいずれか一項に記載のシステム。
【請求項８】
複数のプロセッサのクロック周波数を制御する方法であって、当該方法は、
前記複数のプロセッサの利用を測定することと、
複数のプロセッサ上で実行する、プロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定することと、
推定された前記バランス及び測定された前記利用に基づいて、クロック周波数調整を計算することと、
計算された該クロック周波数調整に基づいて、前記複数のプロセッサのクロック周波数を更新することと、を含み、
前記バランスを推定することは、さらに、
推定された前記バランスに関連づけられた期間について前記クロック周波数を変化させることと、
前記期間中の利用変化を測定することと、
前記利用変化のクロック周波数変化に対する比率に基づいて、前記バランスを推定することと、を含む、方法。
【請求項９】
さらに、前記比率を閾値比率と比較することと、前記比率が該閾値比率よりも小さい場合は、前記バランスを前記Ｐ／Ｃワークロードに関連づけることと、を含む請求項８に記載の方法。
【請求項１０】
推定された前記バランスがＰ／Ｃワークロードに関連付けられており、測定された前記利用が利用閾値よりも小さい場合、前記クロック周波数調整はクロック周波数上昇である、請求項８又は９に記載の方法。
【請求項１１】
さらに、ある時間間隔経過後に前記複数のプロセッサの利用を再測定することと、
再測定された前記利用が前記利用閾値よりも大きく、かつ、前記クロック周波数調整がクロック周波数上昇であった場合に、前記クロック周波数を小さくすることと、を含む請求項１０に記載の方法。
【請求項１２】
前記クロック周波数を更新することは、さらに、前記複数のプロセッサの制御状態の電圧周波数ペアリングを調整することを含む、請求項８から１１のいずれか一項に記載の方法。
【請求項１３】
前記複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である、請求項８から１２のいずれか一項に記載の方法。
【請求項１４】
あるプロセッサにより実行されると、複数のプロセッサのクロック周波数を制御する動作をもたらすプログラムであって、当該動作は、
前記複数のプロセッサの利用を測定することと、
複数のプロセッサ上で実行する、プロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定することと、
推定された前記バランス及び測定された前記利用に基づいて、クロック周波数調整を計算することと、
計算された該クロック周波数調整に基づいて、前記複数のプロセッサのクロック周波数を更新することと、を含み、
前記バランスを推定することは、さらに、
推定された前記バランスに関連づけられた期間について前記クロック周波数を変化させることと、
前記期間中の利用変化を測定することと、
前記利用変化のクロック周波数変化に対する比率に基づいて、前記バランスを推定することと、を含む、プログラム。
【請求項１５】
さらに、前記比率を閾値比率と比較することと、前記比率が該閾値比率よりも小さい場合は、前記バランスを前記Ｐ／Ｃワークロードに関連づけることと、を含む請求項１４に記載のプログラム。
【請求項１６】
推定された前記バランスがＰ／Ｃワークロードに関連付けられており、測定された前記利用が利用閾値よりも小さい場合、前記クロック周波数調整はクロック周波数上昇である、請求項１４又は１５に記載のプログラム。
【請求項１７】
当該動作は、さらに、ある時間間隔経過後に前記複数のプロセッサの利用を再測定することと、
再測定された前記利用が前記利用閾値よりも大きく、かつ、前記クロック周波数調整がクロック周波数上昇であった場合に、前記クロック周波数を小さくすることと、を含む請求項１６に記載のプログラム。
【請求項１８】
前記クロック周波数を更新することは、さらに、前記複数のプロセッサの制御状態の電圧周波数ペアリングを調整することを含む、請求項１４から１７のいずれか一項に記載のプログラム。
【請求項１９】
前記複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である、請求項１４から１８のいずれか一項に記載のプログラム。
【請求項２０】
複数のプロセッサのクロック周波数を制御するシステムであって、当該システムは、
前記複数のプロセッサの利用を測定する手段と、
複数のプロセッサ上で実行するプロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定する手段と、
推定された前記バランス及び測定された前記利用に基づいて、クロック周波数調整を計算する手段と、
計算された該クロック周波数調整に基づいて、前記複数のプロセッサのクロック周波数を更新する手段と、を含み、
前記バランスを推定することは、さらに、
推定された前記バランスに関連づけられた期間について前記クロック周波数を変化させる手段と、
前記期間中の利用変化を測定する手段と、
前記利用変化のクロック周波数変化に対する比率に基づいて、前記バランスを推定する手段と、を含む、システム。
【請求項２１】
さらに、前記比率を閾値比率と比較する手段と、前記比率が該閾値比率よりも小さい場合は、前記バランスを前記Ｐ／Ｃワークロードに関連づける手段と、を含む請求項２０に記載のシステム。
【請求項２２】
推定された前記バランスがＰ／Ｃワークロードに関連付けられており、測定された前記利用が利用閾値よりも小さい場合、前記クロック周波数調整はクロック周波数上昇である、請求項２０又は２１に記載のシステム。
【請求項２３】
さらに、ある時間間隔経過後に前記複数のプロセッサの利用を再測定する手段と、
再測定された前記利用が前記利用閾値よりも大きく、かつ、前記クロック周波数調整がクロック周波数上昇であった場合に、前記クロック周波数を小さくする手段と、を含む請求項２２に記載のシステム。
【請求項２４】
前記クロック周波数を更新することは、さらに、前記複数のプロセッサの制御状態の電圧周波数ペアリングを調整する手段を含む、請求項２０から２３のいずれか一項に記載のシステム。
【請求項２５】
前記複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である、請求項２０から２４のいずれか一項に記載のシステム。
【請求項２６】
請求項１４から１９のいずれか一項に記載のプログラムを記憶した、少なくとも一つのコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プロセッサ状態制御に関連し、より詳細には、複数のプロセッサにわたるプロデューサ／コンシューマワークロードシリアライゼーションの検出に基づいたプロセッサ状態制御に関連する。
【背景技術】
【０００２】
コンピュータシステムプロセッサは、次第にプロセッサ状態制御能力を提供しており、それを通じて、プロセッサ電圧及びクロック周波数は変化されることができる。より高いクロック周波数であればより速いワークロード実行を可能にするが、増大する電力消費と熱発生がある。速度と電力使用量とは典型的にはトレードオフの関係となり、クロック周波数は、変化する条件及び要件に応じて、所望の結果を達成するように動的に調整されることができる。これは、一般的には、プロセッサ状態のデマンドベーススイッチング（ＤＢＳ）と呼ばれる。
【０００３】
マルチプロセッサ又はマルチコアシステムにおいて、ワークロードは二つ以上のプロセッサに、例えば、スレッドとして分割される。いくつかのケースにおいては、スレッドは相対的に並列的なやり方で実行することができるが、他のケースにおいては、一つのスレッドは他のスレッドからの結果を待つ必要があり得る。後者のケースは、しばしば、プロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードシリアライゼーションと呼ばれ、ここでは、消費スレッドは生産スレッドを待つため、プロセッサ利用が低下することになり得る。
【０００４】
典型的には、プロセッサワークロードは、Ｐ／Ｃ及び非Ｐ／Ｃワークロードの混合を含むことができる。プロセッサ利用がＰ／Ｃワークロードにより影響されるのか否か、そしてどの程度まで影響されるのかを知ることは、プロセッサ状態制御決定に行う際に有利となる。現存する解決手段では、プロセッサ状態制御システムには、スレッドがＰ／Ｃ指向性があるか否かを明確に知らせるため、ソフトウェアに依拠している。残念なことに、これは、概して、ソフトウェア及びこの分野における進歩が阻害されているソフトウェア開発に負担となっている。
【図面の簡単な説明】
【０００５】
クレームされた実施形態の特徴及び効果は、次に続く詳細な説明で明らかとなり、図面への参照においては、類似した符号は類似する部分を示す。
【０００６】
【図１】図１は、本開示と一致する、実施形態例のトップレベルシステム図を示す。
【図２】図２は、本開示と一致する、実施形態例のブロック図を示す。
【図３】図３は、本開示と一致する、実施形態例の動作のフローチャートを示す。
【図４】図４は、本開示と一致する、実施形態例の関連性曲線を示す。
【図５】図５は、本開示と一致する、他の実施形態例の動作のフローチャートを示す。
【図６】図６は、本開示と一致する、他の実施形態例のプラットフォームのシステム図を示す。
【０００７】
次に続く詳細な説明は、説明される実施形態に関連してなされるが、多くの代替、修正及びバリエーションは当業者に明らかとなるものである。
【発明を実施するための形態】
【０００８】
概して、本開示は複数のプロセッサにわたるプロデューサ／コンシューマ（Ｐ／Ｃ）の検出に基づいて、複数のプロセッサのプロセッサ状態、つまり、クロック周波数を制御する、システム、デバイス、方法及びコンピュータ読み取り可能媒体を提供する。Ｐ／Ｃワークロードの性質は、一つのスレッドの実行進行は、他のスレッドの実行進行にリンクされているということである。Ｐ／Ｃワークロードシリアライゼーションは、一つのプロセッサでのスレッドが他のプロセッサでの他のスレッドにより提供される結果を待つ、つまり、複数のスレッドのより並列的な実行を許容するよりも幾分か作業をシリアル化するときに、遅延が生じる状況を示す。Ｐ／Ｃワークロードシリアライゼーションは、待ちスレッドに関連づけられたアイドル時間により、プロセッサ利用（utilization）が下がる一つの原因となる。本システムは、複数のプロセッサ（又はコア）にわたって複数のスレッドで実行するＰ／Ｃワークロード及び非Ｐ／Ｃワークロードとのバランスを推定することができる。
【０００９】
バランス推定は、クロック周波数における試験的な変化（例えば、上げる又は下げる）を伴う、プロセッサ利用における変化を測定することによって達成されることができる。相対的に高いＰ／Ｃワークロードの混合であるケースにおいては、変更されたクロック周波数の期間中において相対的に変化しないままである傾向がある。相対的低いＰ／Ｃワークロードの混合であるケースにおいては、例えば、より高いクロック周波数の期間中において利用が減少する傾向がある。ゆえに、バランスはプロセッサ利用における測定された変化を追跡する又は、これとクロック周波数における試験的な変化とを関連づけることによって推定されることができる。クロック周波数調整モジュールは、関連性に基づいて、クロック周波数における所望の変化を計算するように構成されることができる。
【００１０】
図１は、本開示に一致する、実施形態例のトップレベルシステム図１００を示す。システムは、多数のプロセッサ１０４、１０６等と、プロセッサ状態制御モジュール１０２と、プロデューサ／コンシューマワークロード推定モジュール１０８とを含むように示されている。いくつかの実施形態においては、プロセッサは、プロセッサコア又は、例えば、グラフィクスプロセッサ（ＧＰＵ）等の他のタイプの処理ユニットであることができる。簡潔性のため二つのプロセッサしか示されていないが、任意の数の任意のタイプのプロセッサが採用され、本開示で説明されるように制御されることができる。本開示で説明される技術は、制御可能なクロック周波数を有する任意のデバイスコレクションに提供されることができる。システムは、デバイス又は任意のタイプの計算又は通信プラットフォームであることができるより大きなシステムの一部であることができ、定置されているかモバイルであるかによらず、例えば、スマートフォン、スマートタブレット、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルインターネットデバイス（ＭＩＤ）、コンバーチブルタブレット、ノートブック、ラップトップコンピュータ、ワークステーション、デスクトップコンピュータ又はウェアラブルデバイスを含む。
【００１１】
プロセッサ状態制御モジュール１０２は、プロセッサ１０４、１０６等のプロセッサ状態を調整するように構成されることができる。いくつかの実施形態においては、プロセッサ状態は、プロセッサ電圧仕様／要求（specification/request）及びクロック周波数仕様／要求のペアリング（paring）を含むことができる。より高いクロック周波数は、いくつかのタイプのワークロード（例えば、Ｐ／Ｃワークロード）に対してはより速いワークロード実行を可能にすることができるが、概して、望ましくない電力消費の上昇を招く。
【００１２】
プロデューサ／コンシューマワークロード推定モジュール１０８は、下記に詳細に説明されるように、複数のプロセッサ及びスレッドにわたるＰ／Ｃワークロード及び非Ｐ／Ｃワークロード実行の混合を推定するように構成されることができる。推定は、その後に、プロセッサ状態制御モジュール１０２によりプロセッサ１０４、１０６に適用されるクロック周波数調整（clock  frequency  adjustment）を計算するのに用いられることができる。
【００１３】
図２は、本開示に一致する、実施形態例のブロック図２００を示す。プロデューサ／コンシューマワークロード推定モジュール１０８は、利用測定モジュール２０２と、周波数／利用関連性モジュール２０４と、周波数調整計算モジュール２０６と、クロック周波数追跡モジュール２０８と、を含むように示されている。
【００１４】
概して、プロセッサの要求が減少するときは、測定されるプロセッサ利用もまた減少する。これは、するべき作業が少なくなっており、プロセッサがアイドル状態より多くの時間を消費するためである。このような状況下では、クロック周波数を低くすれば、パフォーマンスへの影響がほとんどなく電力を節約できるという恩恵を得ることができる。しかし、測定された利用における低下は、ワークロードが異なるプロセッサでホストされたプロデューサ／コンシューマを高い比率で有するときの、シリアライズされた実行に関連づけられた待ち時間によって生じるかもしれない。しかし、この場合、クロック周波数を上げると、なされるのを待っている作業があり、より高いクロック周波数がそれらの待ち時間を低減することができるので、パフォーマンスを改善することができる。このため、Ｐ／Ｃワークロードの程度を推定することは、適切なクロック周波数を決定する際に有益である。
【００１５】
利用測定モジュール２０２は、プロセッサがアイドルでない時間のパーセンテージとして、各プロセッサの利用を測定するように構成されることができる。このため、例えば、３０％の利用測定であれば、プロセッサは時間の３０％は作業を行っており、時間の７０％はアイドルのままでいるということを示す。いくつかの実施形態においては、測定は、好適な期間にわたる平均測定であることができる。最初の利用測定は、潜在的な周波数上昇が有益となり得る閾値を下回っているかどうかを判定するのに行われることができる。
【００１６】
周波数／利用関連性モジュール２０４は、トライアルの、又は試験的なクロック周波数変化と、結果として生じるプロセッサ利用における変化との関係を決定するように構成されることができる。代表的には、下記に説明されているように、試験的なクロック周波数変化は、上昇であるが、上昇又は下降のいずれか一方がこの目的のために用いられることができる。事実上、作業の相対的に大きいパーセンテージがＰ／Ｃである場合、測定された利用は、前述したシリアライゼーション効果により、１００％を下回るものである。このタイプのワークロードを実行するコアのクロック周波数における上昇では、スレッドあたりの利用は実質的に変化しないままである。これは、実行速度が上げられたとしても、他のスレッドを待つのに消費される時間のパーセンテージはほぼ同じのままであるからである。しかし、クロック周波数の上昇に応じて、スレッド当たりの利用が下降する場合には、事実上、ワークの相対的小さいパーセンテージがＰ／Ｃであるということを示すことができる。言い換えると、非Ｐ／Ｃワークロードに対して、より高いクロック周波数で作業を行うのにより少ない時間しかかからないので、利用が下がる。
【００１７】
前述したように、いくつかの実施形態においては、試験的なクロック周波数変化は下降であることができる。この場合において、クロック周波数の下降に応じて、スレッド当たりの利用が上昇する場合には、これは、事実上、ワークの相対的に小さいパーセンテージがＰ／Ｃであるというこを示すことができる。言い換えると、非Ｐ／Ｃワークロードに対して、より低いクロック周波数で作業を行うのにより多い時間がかかるので、利用が上がる。
【００１８】
周波数／利用関連性モジュール２０４は、このため、Ｐ／Ｃワークロードと非Ｐ／Ｃワークロードとのバランスが推定されている期間、クロック周波数を上げることができる。プロセッサ利用は、トライアルのクロック上昇の前後で測定され、利用変化（utilization  change）のクロック周波数上昇に対する比率が計算されることができる。そして、ワークロードバランス推定は、この比率又は関連性に基づくことができる。例えば、いくつかの実施形態においては、比率が閾値比率と比較されることができ、ワークロードバランスは、計算された比率が閾値比率より小さい場合、図４に示されるように、よりＰ／Ｃ指向性があると推定されることができる。
【００１９】
周波数調整計算モジュール２０６は、計算された比率に基づいて、適切なクロック周波数調整を決定するように構成されることができる。いくつかの実施形態においては、閾値比率を下回る計算された比率は、最大クロック周波数の選択をもたらすことができる。いくつかの実施形態においては、閾値比率を上回る計算された比率は、パフォーマンス対エネルギー効率プリファレンスに基づいたクロック周波数を下げる範囲にマップされることができる。マップ機能は、例えば、オペレーティングシステム又はファームウェアにより提供されることができる。
【００２０】
クロック周波数追跡モジュール２０８は、ある時間にわたるクロック周波数変化（clock  frequency  change）の履歴をモニタするように構成されることができる。例えば、利用の周期的な再チェック（例えば、ある時間間隔経過後に再測定する）が、プロセッサ利用が閾値を上回ったことを示し、変化履歴が、クロック周波数が以前に上げられていることを示す場合は、クロック周波数は下げられることができ、エネルギー効率性を上げる。
【００２１】
図３は、本開示と一致する、他の実施形態例の動作３００のフローチャートを示す。動作は、複数のプロセッサにわたるプロデューサ／コンシューマワークロードシリアライゼーションの検出に基づいて、複数のプロセッサのクロック周波数を制御する方法を提供する。動作３０２では、複数のプロセッサ（又はコア）にわたる複数のスレッドの利用が測定され、利用閾値と比較される。動作３０４では、利用が閾値よりも大きく（又は等しく）、プロセッサのクロック周波数が以前に上げられている場合、動作３０６で、クロック周波数は所定の、又は調整可能な期間後に下げられる。
【００２２】
しかし、測定された利用が閾値よりも小さい場合、動作３０８で、利用は記録され、動作３１０で、複数のプロセッサのクロック周波数は上げれらて、複数のプロセッサにわたるＰ／Ｃワークロードシリアライゼーションの程度の推定を開始する。クロック周波数が上がったことに応じて、動作３１２で、測定されるのであるが、利用が変化（減少）する場合、ワークロードが相対的により少ないＰ／Ｃに傾いていると判定され、動作３１４において、クロック周波数は元に戻される（restored）。
【００２３】
あるいは、利用が相対的に変化しないままである場合、ワークロードは、相対的により大きいＰ／Ｃに傾いていると判定され、パフォーマンスはクロック周波数を上げることによる恩恵を受けることができている。動作３１６では、利用変化と周波数上昇との関連性が計算される。動作３１８では、クロック周波数調整が、計算された関連性に基づいて決定され、動作３２０で、クロック周波数は更新される。
【００２４】
図４は、本開示に一致する、実施形態例の関連性曲線４００を示す。横軸４０４は、ワークロードバランスを表し、左側にある最大（実質的に１００％）Ｐ／Ｃワークロード（及び関連づけられたシリアライゼーション）から、右側にある最小（実質的に０％）Ｐ／Ｃワークロードまでの幅がある。縦軸４０２は、パーセンテージ利用変化とパーセンテージクロック周波数変化との比率（又は、関連性）を表し、０（関連性なし）から１（十分に関連性あり（full  correlation））までがある。図示された曲線は、例として提示されており、任意の形状に合わせることができ、経験的に決定されることができる。閾値４０６も示され、最大クロック周波数（左）と下げられたクロック周波数（右）との間の境界を示すことができる。
【００２５】
図５は、本開示に一致する、他の実施形態例の動作５００のフローチャートを示す。動作は、複数のプロセッサにわたるプロデューサ／コンシューマワークロードシリアライゼーションの検出に基づいて、プロセッサのクロック周波数を制御する方法を提供する。動作５１０では、複数のプロセッサの利用が測定される。動作５２０では、複数のプロセッサ上で実行する、プロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスの推定がなされる。動作５３０では、推定されたバランス及び測定された利用に基づいて、クロック周波数調整が計算される。動作５４０では、複数のプロセッサのクロック周波数が計算された調整に基づいて更新される。
【００２６】
図６は、本開示に一致する、一実施形態例のシステム図６００を示す。システム６００は、例えば、スマートフォン、スマートタブレット、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルインターネットデバイス（ＭＩＤ）、コンバーチブルタブレット、ノートブック、ラップトップコンピュータその他の好適なデバイス等の、モバイルプラットフォーム６１０又はコンピューティングデバイスであることができる。しかし、本開示で説明されたシステムの実施形態は、モバイルプラットフォームに限定されず、いくつかの実施形態においては、システム６００はワークステーション又はデスクトップコンピュータであることができる。デバイスは、概して、例えば、タッチスクリーン、液晶ディスプレイ（ＬＣＤ）その他の好適なタイプのディスプレイ等のディスプレイ要素６６０を介してユーザに種々のインタフェースを提示することができる。
【００２７】
システム６００は、任意の数のプロセッサ１０４、１０６等を含むように示されており、任意で、任意の数のＧＰＵ６２０又は他の専用タイプのプロセッサを含む。いくつかの実施形態においては、プロセッサ１０４、１０６及び６２０は、任意の数のプロセッサコアとして実装されることができる。プロセッサ（又はプロセッサコア）は、任意のタイプのプロセッサであることができ、例えば、マイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、フィールドプログラマブルゲートアレイ又はコードを実行するように構成された他のデバイス等である。プロセッサは、マルチスレッドコアであることができ、一コア当たり一つより大きい数のハードウェアスレッドコンテクスト（又は「論理プロセッサ」）を含むことができる。システム６００は、また、プロセッサに結合されたメモリ６３０を含むように示されている。メモリは、当業者に既知の、又は利用可能な、（種々のメモリ階層の層及び／又はメモリキャッシュを含む）幅広いメモリのいずれかであることができる。プロセッサ及びメモリは、一つ以上のユーザアプリケーション、その他のソフトウェアアプリケーションを記憶、ホスト及び／又は実行するように構成されることができることが分かる。これらのアプリケーションは、非限定的に、例えば、任意のタイプの計算、通信、データ管理、データストレージ及び／又はユーザインタフェースタスクを含むことができる。いくつかの実施形態においては、これらのアプリケーションはモバイルプラットフォーム６１０の任意の他のコンポーネントを使用する、又はこれらと相互作用することができる。
【００２８】
システム６００は、例えば、セルラー通信、ワイヤレスフィデリティ（ＷｉＦｉ（登録商標））、ブルートゥース（登録商標）、ニアフィールドコミュニケーション（ＮＦＣ）等の無線通信能力を含むネットワークインタフェースモジュール６４０を含むように示されている。無線通信は、ブルートゥース、Ｗｉ−Ｆｉ及び携帯電話通信規格の過去、現在及び未来のバージョンを含む既存の又はこれから発展する通信規格に合う、又はこれらと互換性があることができる。
【００２９】
システム６００は、また、プロセッサ１０４、１０６、６２０と、システム６００の他の要素又はシステム６００の外部にある他の要素（図示せず）との間にあるデータ通信を可能にする又は管理するように構成されることができる入出力（Ｉ／Ｏ）システム又はコントローラ６５０を含むように示されている。
【００３０】
システム６００は、また、前述したように、プロセッサ状態制御モジュール１０２及びプロデューサ／コンシューマワークロード推定モジュール１０８を含むように示されている。
【００３１】
いくつかの実施形態においては、システム６００の種々のコンポーネントは、システムオンチップ（ＳｏＣ）アーキテクチャで組み合わされてよい。いくつかの実施形態においては、コンポーネントは、ハードウェアコンポーネント、ファームウェアコンポーネント、ソフトウェアコンポーネント又はハードウェア、ファームウェア若しくはソフトウェアの任意の好適な組み合わせであることができる。
【００３２】
本明細書で説明された方法の実施形態は、一つ以上のプロセッサにより実行されると、本方法を実行する命令が、個別に又は組み合わされて、記憶された一つ以上のストレージ媒体を含むシステム内で実装されることができる。ここで、プロセッサは、例えば、システムＣＰＵ（例えば、コアプロセッサ）及び／又はプログラマブル回路を含むことができる。ゆえに、本明細書で説明された方法に従う動作は、例えば、複数の異なる物理的位置にある処理構造等の複数の物理的デバイスにわたって分散してよいことを意図している。また、本発明の動作は、当業者に理解されるように、個別に又はサブコンビネーションで行われることができる。ゆえに、各フローチャートの全ての動作が行われる必要はなく、本開示は、そのような動作の全てのサブコンビネーションが、当業者に理解されるように、可能にされていることを明示的に意図している。
【００３３】
ストレージ媒体は、任意のタイプの有形の媒体、例えば、フロッピー（登録商標）ディスク、光学ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、デジタルバーサタイルディスク（ＤＶＤ）、磁気光学ディスク等を含む任意のタイプのディスク、リードオンリーメモリ（ＲＯＭ）、ダイナミックＲＡＭ、スタティックＲＡＭ等のランダムアクセスメモリ（ＲＡＭ）、イレーサブルプログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、エレクトリカリーイレーサブルプログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ等の半導体デバイス、磁気若しくは光学カード、又は、電子命令を記憶するのに好適な任意のタイプの媒体を含むことができる。
【００３４】
本開示の任意の実施形態で用いられた「回路（Circuitry）」は、単独又は組み合わせで、ハードワイヤード回路、プログラマブル回路、ステートマシン回路及び又はプログラマブル回路により実行される命令を記憶するファームウェアを含むことができる。アプリケーションは、ホストプロセッサ又は他のプログラマブル回路等のプログラマブル回路上で実行されるコード又は命令として具現化されている。本開示の実施形態で用いられたモジュールは、回路として具現化されることができる。回路は、集積回路チップ等の集積回路として具現化されることができる。
【００３５】
ゆえに、本開示は、複数のプロセッサにわたるプロデューサ／コンシューマワークロードシリアライゼーションの検出に基づいて、プロセッサのプロセッサ状態（例えば、クロック周波数）を制御する、システム、デバイス、方法及びコンピュータ読み取り可能媒体を提供する。次の例は、さらなる実施形態に関連する。
【００３６】
例１によれば、複数のプロセッサのクロック周波数を制御するシステムが提供される。このシステムは、その複数のプロセッサの利用を測定する利用測定モジュールを含むことができる。この例のシステムは、また、複数のプロセッサ上で実行するプロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定する関連性モジュールを含むことができる。この例のシステムは、さらに、推定されたそのバランス及び測定されたその利用に基づいて、クロック周波数調整を計算し、計算されたこの調整に基づいて、その複数のプロセッサのクロック周波数を更新するクロック周波数調整モジュールを含むことができる。
【００３７】
例２は、前述の例の要素を含むことができ、その関連性モジュールは、さらに、推定されたそのバランスに関連づけられた期間についてそのクロック周波数を変化させ、その期間中の利用変化を測定し、その利用変化のクロック周波数変化に対する比率に基づいて、そのバランスを推定するように構成される。
【００３８】
例３は、前述の例の要素を含むことができ、そのクロック周波数変化は、クロック周波数上昇である。
【００３９】
例４は、前述の例の要素を含むことができ、そのクロック周波数変化は、クロック周波数下降である。
【００４０】
例５は、前述の例の要素を含むことができ、その関連性モジュールは、さらに、その比率を閾値比率と比較し、その比率がこの閾値比率よりも小さい場合は、そのバランスをそのＰ／Ｃワークロードに関連づける。
【００４１】
例６は、前述の例の要素を含むことができ、推定されたそのバランスがＰ／Ｃワークロードに関連付けられており、測定されたその利用が利用閾値よりも小さい場合、そのクロック周波数調整はクロック周波数上昇である。
【００４２】
例７は、前述の例の要素を含むことができ、その利用測定モジュールは、さらに、ある時間間隔経過後にその複数のプロセッサの利用を再測定するように構成され、そのクロック周波数調整モジュールは、さらに、再測定されたその利用がその利用閾値よりも大きく、かつ、そのクロック周波数調整がクロック周波数上昇であった場合に、そのクロック周波数を小さくするように構成される。
【００４３】
例８は、前述の例の要素を含むことができ、そのクロック周波数の更新は、さらに、その複数のプロセッサの制御状態の電圧周波数ペアリングを調整することを含む。
【００４４】
例９は、前述の例の要素を含むことができ、その複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である。
【００４５】
例１０は、前述の例の要素を含むことができ、このシステムは、スマートフォン、スマートタブレット、ノートブック又はラップトップコンピュータのいずれかに組み込まれている。
【００４６】
例１１によれば、複数のプロセッサのクロック周波数を制御する方法が提供される。この方法は、その複数のプロセッサの利用を測定する工程を含むことができる。この例の方法は、また、複数のプロセッサ上で実行するプロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定する工程を含むことができる。この例の方法は、さらに、推定されたそのバランス及び測定されたその利用に基づいて、クロック周波数調整を計算する工程を含むことができる。この例の方法は、さらに、計算されたこの調整に基づいて、その複数のプロセッサのクロック周波数を更新する工程を含むことができる。
【００４７】
例１２は、前述の例の動作を含むことができ、そのバランスを推定する工程は、さらに、推定されたそのバランスに関連づけられた期間についてそのクロック周波数を変化させる工程と、その期間中の利用変化を測定する工程と、その利用変化のクロック周波数変化に対する比率に基づいて、そのバランスを推定する工程と、を含む。
【００４８】
例１３は、前述の例の動作を含むことができ、そのクロック周波数変化は、クロック周波数上昇である。
【００４９】
例１４は、前述の例の動作を含むことができ、そのクロック周波数変化は、クロック周波数下降である。
【００５０】
例１５は、前述の例の動作を含むことができ、さらに、その比率を閾値比率と比較する工程と、その比率がこの閾値比率よりも小さい場合は、そのバランスをそのＰ／Ｃワークロードに関連づける工程と、を含む。
【００５１】
例１６は、前述の例の動作を含むことができ、推定されたそのバランスがＰ／Ｃワークロードに関連付けられており、測定されたその利用が利用閾値よりも小さい場合、そのクロック周波数調整はクロック周波数上昇である。
【００５２】
例１７は、前述の例の動作を含むことができ、さらに、ある時間間隔経過後にその複数のプロセッサの利用を再測定する工程と、再測定されたその利用がその利用閾値よりも大きく、かつ、そのクロック周波数調整がクロック周波数上昇であった場合に、そのクロック周波数を小さくする工程と、を含む。
【００５３】
例１８は、前述の例の動作を含むことができ、そのクロック周波数を更新する工程は、さらに、その複数のプロセッサの制御状態の電圧周波数ペアリングを調整する工程を含む。
【００５４】
例１９は、前述の例の動作を含むことができ、その複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である。
【００５５】
例２０によれば、前述の例の要素を含むことができ、複数のプロセッサのクロック周波数を制御するシステムが提供される。このシステムは、その複数のプロセッサの利用を測定する手段を含むことができる。この例のシステムは、また、複数のプロセッサ上で実行するプロデューサ／コンシューマ（Ｐ／Ｃ）ワークロードと非Ｐ／Ｃワークロードとのバランスを推定する手段を含むことができる。この例のシステムは、さらに、推定されたそのバランス及び測定されたその利用に基づいて、クロック周波数調整を計算する手段を含むことができる。この例のシステムは、さらに、計算されたこの調整に基づいて、その複数のプロセッサのクロック周波数を更新する手段を含むことができる。
【００５６】
例２１は、前述の例の要素を含むことができ、そのバランスを推定することは、さらに、推定されたそのバランスに関連づけられた期間についてそのクロック周波数を変化させる手段と、その期間中の利用変化を測定する手段と、その利用変化のクロック周波数変化に対する比率に基づいて、そのバランスを推定する手段と、を含む。
【００５７】
例２２は、前述の例の要素を含むことができ、そのクロック周波数変化は、クロック周波数上昇である。
【００５８】
例２３は、前述の例の要素を含むことができ、そのクロック周波数変化は、クロック周波数下降である。
【００５９】
例２４は、前述の例の要素を含むことができ、さらに、その比率を閾値比率と比較する手段と、その比率がこの閾値比率よりも小さい場合は、そのバランスをそのＰ／Ｃワークロードに関連づける手段と、を含む。
【００６０】
例２５は、前述の例の要素を含むことができ、推定されたそのバランスがＰ／Ｃワークロードに関連付けられており、測定されたその利用が利用閾値よりも小さい場合、そのクロック周波数調整はクロック周波数上昇である。
【００６１】
例２６は、前述の例の要素を含むことができ、さらに、ある時間間隔経過後にその複数のプロセッサの利用を再測定する手段と、再測定されたその利用がその利用閾値よりも大きく、かつ、そのクロック周波数調整がクロック周波数上昇であった場合に、そのクロック周波数を小さくする手段と、を含む。
【００６２】
例２７は、前述の例の要素を含むことができ、そのクロック周波数を更新することは、さらに、その複数のプロセッサの制御状態の電圧周波数ペアリングを調整する手段を含む。
【００６３】
例２８は、前述の例の要素を含むことができ、その複数のプロセッサは、プロセッサコア及び／又はグラフィクスプロセッシングユニット（ＧＰＵ）である。
【００６４】
他の例によれば、あるプロセッサにより実行されると、複数のプロセッサに上記の例のいずれかに記載された方法の動作を行わせる命令が記憶された、少なくとも一つのコンピュータ読み取り可能媒体が提供される。
【００６５】
他の例によれば、上記の例のいずれかに記載された方法を行う手段を含む装置が提供される。
【００６６】
本開示で使用された用語及び表現は、説明としての文言として用いられ、非限定的なものであり、そのような用語及び表現の使用において、示され、説明された特徴（又はその一部）の任意の均等物を排除することは意図しておらず、様々な修正がクレームの範囲内において可能であると認められる。従って、クレームは全ての均等物を含むことを意図している。様々な特徴、側面及び実施形態が本開示で説明されている。それらの特徴、側面及び実施形態は、バリエーション及び修正と同様に、互いに組み合わせられる余地があり、そのことは、当業者に理解されるものである。本開示は、このため、そのような組み合わせ、バリエーション及び修正を包含するものとみなされるべきである。
【図１】
0006297748.tif 000002
【図２】
0006297748.tif 000003
【図３】
0006297748.tif 000004
【図４】
0006297748.tif 000005
【図５】
0006297748.tif 000006
【図６】
0006297748.tif 000007