(57)【要約】  マルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のためのシステムおよび方法を提示する。マルチコアSoCのコアがアイドル状態に入ることが識別される。コアの低電力モードについて、コアのエントリ電力コストおよびコアのエグジット電力コストが計算される。コアに関連するキャッシュのワーキングセットサイズもまた計算される。ワーキングセットサイズを使用して、キャッシュがコアの低電力モードを抜け出るためのレイテンシが計算される。最終的に、コアのエントリ電力コスト、コアのエグジット電力コスト、および低電力モードを抜け出るキャッシュのレイテンシに部分的に基づいて、コアに対する低電力モードが、コアに対するアクティブモードと比較して電力節約となるかどうかの決定が行われる。
2018532174.tif 000002
【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイス(PCD)内のマルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のための方法であって、
前記マルチコアSoCのコアがアイドル状態に入ることを識別するステップと、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算するステップと、
前記コアに関連するキャッシュのワーキングセットサイズを計算するステップと、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算するステップと、
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定するステップと
を含む、方法。
【請求項２】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算するステップであって、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかの前記決定が、前記キャッシュが前記低電力モードを抜け出るための前記電力コストにも部分的に基づいている、計算するステップ
をさらに含む、請求項1に記載の方法。
【請求項３】
前記キャッシュの前記ワーキングセットサイズを計算するステップが、少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を決定するステップを含む、請求項1に記載の方法。
【請求項４】
前記キャッシュの前記ワーキングセットサイズを計算するステップが、
前記少なくとも1つのサンプリング期間のうちの最も近いものの間に前記キャッシュによって取り出されたキャッシュラインの数を決定するステップ
をさらに含む、請求項3に記載の方法。
【請求項５】
前記キャッシュの前記ワーキングセットサイズを計算するステップが、
複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの平均数を決定するステップ
をさらに含む、請求項3に記載の方法。
【請求項６】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るためのレイテンシを計算するステップが、
前記少なくとも1つのサンプリング期間の間に取り出されたキャッシュラインの前記数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるステップ
をさらに含む、請求項3に記載の方法。
【請求項７】
前記少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を決定するステップが、
前記キャッシュに結合されたアクセスカウンタを用いて、前記少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするステップ
を含む、請求項3に記載の方法。
【請求項８】
前記少なくとも1つのサンプリング期間が、複数のサンプリング期間を含み、
前記キャッシュに結合されたアクセスカウンタを用いてカウントするステップが、前記複数のサンプリング期間の各々の終わりに前記アクセスカウンタをリセットするステップをさらに含む、
請求項7に記載の方法。
【請求項９】
ポータブルコンピューティングデバイス(PCD)におけるマルチコアシステムオンチップ(SoC)のためのコンピュータシステムであって、
前記SoCのコアと、
前記コアと通信している前記SoCのキャッシュと、
前記コアおよび前記キャッシュと通信している低電力モードコントローラであって、
前記コアがアイドル状態に入ることを識別すること、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算すること、
前記キャッシュのワーキングセットサイズを計算すること、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算すること、および
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定すること
を行うように構成された、低電力モードコントローラと
を備える、コンピュータシステム。
【請求項１０】
前記低電力モードコントローラが、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算することと、前記キャッシュが前記低電力モードを抜け出るための前記電力コストに部分的に基づいて、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかを決定することと
を行うようにさらに構成される、請求項9に記載のシステム。
【請求項１１】
前記キャッシュの前記ワーキングセットサイズが、少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を含む、請求項9に記載のシステム。
【請求項１２】
前記少なくとも1つのサンプリング期間が、複数のサンプリング期間をさらに含み、
前記キャッシュの前記ワーキングセットサイズが、前記複数のサンプリング期間のうちの最も近いものの間に前記キャッシュによって取り出されたキャッシュラインの前記数を含む、
請求項11に記載のシステム。
【請求項１３】
前記少なくとも1つのサンプリング期間が、複数のサンプリング期間をさらに含み、
前記キャッシュの前記ワーキングセットサイズが、前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの平均数を含む、
請求項11に記載のシステム。
【請求項１４】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るためのレイテンシを計算するように構成された前記低電力モードコントローラが、
前記サンプリング期間の間に取り出されたキャッシュラインの前記数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるように構成された前記低電力モードコントローラ
をさらに含む、請求項11に記載のシステム。
【請求項１５】
前記キャッシュに結合されたアクセスカウンタをさらに備え、前記アクセスカウンタが、前記少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするように構成される、請求項11に記載のシステム。
【請求項１６】
前記少なくとも1つのサンプリング期間が、複数のサンプリング期間を含み、
前記アクセスカウンタが、前記複数のサンプリング期間の各々の終わりにリセットするようにさらに構成される、
請求項15に記載のシステム。
【請求項１７】
コンピュータ可読プログラムコードが組み込まれたコンピュータ使用可能記憶媒体であって、前記コンピュータ可読プログラムコードが、ポータブルコンピューティングデバイス(PCD)におけるマルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のための方法を実施するために実行されるように適応され、前記方法が、
前記マルチコアSoCのコアがアイドル状態に入ることを識別するステップと、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算するステップと、
前記コアに関連するキャッシュのワーキングセットサイズを計算するステップと、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算するステップと、
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定するステップと
を含む、コンピュータ使用可能記憶媒体。
【請求項１８】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算するステップであって、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかの前記決定が、前記キャッシュが前記低電力モードを抜け出るための前記電力コストにも部分的に基づいている、計算するステップ
をさらに含む、請求項17に記載のコンピュータ使用可能記憶媒体。
【請求項１９】
前記キャッシュの前記ワーキングセットサイズが、
少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数
を含む、請求項17に記載のコンピュータ使用可能記憶媒体。
【請求項２０】
前記少なくとも1つのサンプリング期間が、複数のサンプリング期間をさらに含み、
前記キャッシュの前記ワーキングセットサイズが、前記複数のサンプリング期間のうちの最も近いものの間に前記キャッシュによって取り出されたキャッシュラインの前記数をさらに含む、
請求項19に記載のコンピュータ使用可能記憶媒体。
【請求項２１】
前記少なくとも1つのサンプリング期間が、複数のサンプリング期間をさらに含み、
前記キャッシュの前記ワーキングセットサイズが、前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの平均数を含む、
請求項19に記載のコンピュータ使用可能記憶媒体。
【請求項２２】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るためのレイテンシを計算するステップが、
前記サンプリング期間の間に取り出されたキャッシュラインの前記数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるステップ
をさらに含む、請求項19に記載のコンピュータ使用可能記憶媒体。
【請求項２３】
前記少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を決定するステップが、
前記キャッシュに結合されたアクセスカウンタを用いて、前記少なくとも1つのサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするステップ
を含む、請求項19に記載のコンピュータ使用可能記憶媒体。
【請求項２４】
ポータブルコンピューティングデバイス(PCD)内のマルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のためのコンピュータシステムであって、
前記マルチコアSoCのコアがアイドル状態に入ることを識別するための手段と、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算するための手段と、
前記コアに関連するキャッシュのワーキングセットサイズを計算するための手段と、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算するための手段と、
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定するための手段と
を備える、コンピュータシステム。
【請求項２５】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算するための手段であって、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかの前記決定が、前記キャッシュが前記低電力モードを抜け出るための前記電力コストにも部分的に基づいている、計算するための手段
をさらに備える、請求項24に記載のシステム。
【請求項２６】
前記キャッシュの前記ワーキングセットサイズを計算するための前記手段が、
複数のサンプリング期間のうちの少なくとも1つの間に前記キャッシュによって取り出されたキャッシュラインの数を決定するための手段
をさらに備える、請求項24に記載のシステム。
【請求項２７】
前記キャッシュの前記ワーキングセットサイズを計算するための前記手段が、
前記複数のサンプリング期間のうちの最も近いものの間に前記キャッシュによって取り出されたキャッシュラインの数を決定するための手段
をさらに備える、請求項26に記載のシステム。
【請求項２８】
前記キャッシュの前記ワーキングセットサイズを計算するための前記手段が、
前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの平均数を決定するための手段
をさらに備える、請求項26に記載のシステム。
【請求項２９】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るための前記レイテンシを計算するための前記手段が、
複数のサンプリング期間のうちの前記少なくとも1つの間に取り出されたキャッシュラインの前記数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるための手段
をさらに備える、請求項26に記載のシステム。
【請求項３０】
複数のサンプリング期間のうちの少なくとも1つの間に前記キャッシュによって取り出されたキャッシュラインの数を決定するための前記手段が、
前記複数のサンプリング期間のうちの前記少なくとも1つの間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするための、前記キャッシュに結合された手段
をさらに備える、請求項26に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ポータブルコンピューティングデバイスにおけるキャッシュアウェア型の低電力モード制御のためのシステムおよび方法に関する。
【背景技術】
【０００２】
ワイヤレス信号を含む様々な通信媒体を介して他のデバイスと通信する、プロセッサを備えたモバイルデバイスが至る所にある。ポータブルコンピューティングデバイス(PCD)を含むモバイルデバイスは、ワイヤレス、アナログ、デジタル、および他の手段により、様々な他のデバイスと通信するために使用される場合がある。これらのモバイルデバイスは、モバイル電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、タブレットコンピュータ、および他のポータブル電子デバイスを含む場合がある。主要機能に加えて、PCDは、ゲームのダウンロードおよびプレイ、音楽のダウンロードおよび再生、ビデオのダウンロードおよび視聴、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、ならびにアプリケーションの実行のために、使用される場合もある。
【０００３】
増加した機能に対応するために、最新のPCDは、一般的に、複数の並列スレッドなどで並行してPCDの様々な機能を制御または実行するために関連するキャッシュメモリが付いた複数のプロセッサまたはコア(たとえば、中央処理装置(CPU))を含む。複数のコアをアクティブに維持すると、エネルギー消費が大きくなり、PCDのバッテリ寿命が減ることになる。結果として、多くのPCDは、コアがアイドルである、またはタスクをアクティブに実行していない場合、1つまたは複数のコアを低電力モードにする。
【０００４】
コアを低電力モードにすることに関する決定は、アルゴリズムまたは他のロジックを用いて行われてもよい。コアを置くかどうかの決定に関する制限因子には、コアを低電力状態にし、その後コアを低電力状態から再アクティブ化することに関連する時間および/またはエネルギーのオーバーヘッドが含まれる。これらの因子は、一般的にあらかじめ決定され、不変であって、コアの現在の動作状態、またはコアの関連するキャッシュメモリなど、コアが依存する他の構成要素の動作状態を考慮に入れない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、動作状態、詳細にはコア/CPUモードに関連するキャッシュメモリの動作状態に基づいた、コア/CPUに対する低電力モードの改善された実装(improved implementation)のためのシステムおよび方法が必要とされている。
【課題を解決するための手段】
【０００６】
コア/CPUモードに関連するキャッシュメモリの動作状態に基づいた、ポータブルコンピューティングデバイス(PCD)におけるコア/CPUに対する低電力モードの改善された実装を可能にするシステムおよび方法が開示される。動作時、例示的な方法は、マルチコアSoCのコアがアイドル状態に入ることを識別する。コアの低電力モードについて、低電力モードに入るコアのエントリ(entry)電力コストおよび低電力モードを抜け出るコアのエグジット(exit)電力コストが計算される。コアに関連するキャッシュのワーキングセットサイズもまた計算される。キャッシュのワーキングセットサイズを使用して、キャッシュがコアの低電力モードを抜け出るためのレイテンシが計算される。最終的に、コアのエントリ電力コスト、コアのエグジット電力コスト、および低電力モードを抜け出るキャッシュのレイテンシに部分的に基づいて、コアに対する低電力モードが、コアに対するアクティブモードと比較して電力節約となるかどうかの決定が行われる。
【０００７】
別の例示的な実施形態は、ポータブルコンピューティングデバイス(PCD)におけるマルチコアシステムオンチップ(SoC)のためのコンピュータシステムであって、このシステムは、SoCのコアと、コアと通信しているSoCのキャッシュと、コアおよびキャッシュと通信している低電力モードコントローラとを備え、低電力モードコントローラは、コアがアイドル状態に入ることを識別することと、コアの低電力モードのためのエントリ電力コストおよびエグジット電力コストを計算することと、キャッシュのワーキングセットサイズを計算することと、キャッシュのワーキングセットサイズを使用して、キャッシュがコアの低電力モードを抜け出るためのレイテンシを計算することと、低電力モードを抜け出るキャッシュのレイテンシに部分的に基づいて、コアに対する低電力モードがアクティブモードと比較して電力節約となるかどうかを決定することとを行うように構成される。
【０００８】
図面では、特に明記されない限り、様々な図を通じて、同様の参照番号は同様の部分を指している。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を含むことが意図されるとき、参照番号に対する文字指定は省略される場合がある。同様に、102'などの'指定を伴う参照番号の場合、'指定は、同じ参照番号を有する(ただし、'指定のない)下位要素に対する代替実施形態を示すことができる。
【図面の簡単な説明】
【０００９】
【図１】本開示の動作状態に基づくポータブルコンピューティングデバイス(PCD)におけるコア/CPUに対する低電力モードの改善された実装が実施され得るポータブルコンピューティングデバイス(PCD)の例示的な実施形態のブロック図である。
【図２】図1に示すPCD実施形態などの、PCDにおける並列スレッドの実行の例示的なタイミング図である。
【図３Ａ】図1に示すPCD実施形態のCPUのコアの1つなどの、コアまたはCPUに対する例示的な低電力モードを示すグラフである。
【図３Ｂ】図3Aに示す低電力モードの1つから抜け出ることのさらなる態様を示す例示的なグラフである。
【図４】図1に示すPCD実施形態などの、PCDにおける動作状態に基づく、コア/CPUに対する低電力モードの改善された実装のためのシステムの例示的な実施形態を示すブロック図である。
【図５Ａ】動作状態に基づく、コア/CPUに対する低電力モードの改善された実装のための方法の例示的な実施形態の態様について説明するフローチャートである。
【図５Ｂ】図5Aに示す方法の態様を実行することが可能な例示的な構成要素を示す図である。
【図６Ａ】動作状態に基づく、コア/CPUに対する低電力モードの改善された実装のための方法の例示的な実施形態のさらなる態様について説明するフローチャートである。
【図６Ｂ】図6Aに示す方法の態様を実行することが可能な例示的な構成要素を示す図である。
【発明を実施するための形態】
【００１０】
「例示的」という語は、本明細書において、「例、実例、または例証としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。
【００１１】
本明細書では、「アプリケーション」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルを含む場合がある。さらに、本明細書において言及される「アプリケーション」は、開かれる必要がある場合がある文書、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能でないファイルを含む場合もある。
【００１２】
「コンテンツ」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルを含む場合がある。さらに、本明細書において言及される「コンテンツ」は、開かれる必要がある場合がある文書、またはアクセスされる必要がある他のデータファイルもしくはデータ値などの、本質的に実行可能でないファイルを含む場合もある。
【００１３】
本明細書で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すことが意図される。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が構成要素であってもよい。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在してもよく、構成要素は、1つのコンピュータ上に局在化されてもよく、および/または2つ以上のコンピュータ間に分散されてもよい。さらに、これらの構成要素は、様々なデータ構造をその中に記憶した様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえばローカルシステム、分散システム内の別の構成要素、および/またはインターネットなどのネットワーク全体にわたって他のシステムと信号によって対話する1つの構成要素からのデータ)を有する信号に従うなど、ローカルおよび/または遠隔のプロセスによって通信してもよい。
【００１４】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリおよび/またはキャパシタなど、制限された容量の充電式電源において動作するデバイスについて説明するために使用される。充電式電源を備えるPCDが、数十年にわたって使用されてきたが、第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現に結び付けられる、充電式バッテリにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがってPCDは、とりわけ、セルラー電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上記デバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータであってもよい。
【００１５】
本明細書では、「中央処理装置(「CPU」)」、「デジタル信号プロセッサ(「DSP」)」、「グラフィックス処理装置(「GPU」)」、「チップ」、「ビデオコーデック」、「システムバス」、「画像プロセッサ」、および「メディアディスプレイプロセッサ(「MDP」)」という用語は、SoC上に実装され得る処理構成要素の非限定的な例である。処理構成要素についてのこれらの用語は、別段に定められているときを除いて、互換的に使用される。その上、以下で説明されるように、上記またはそれらの均等物のいずれも、「コア」および/または「サブコア」と本明細書では一般的に呼ばれる1つまたは複数の別個の処理構成要素に実装されるか、またはそれらからなる場合がある。
【００１６】
本明細書では、「作業負荷」、「処理負荷」、「処理作業負荷」および「グラフィカル作業負荷」という用語は互換的に使用され、全般的に、所与の実施形態の所与の処理構成要素に関連付けられるか、または割り当てられ得る処理負担または処理負担の割合を対象にする場合がある。加えて、「フレーム」、「コードブロック」、および「コードのブロック」という関連用語は、所与の作業負荷の部分またはセグメントを指すために互換的に使用される場合がある。上で定められるものに加えて、「処理構成要素」などは、限定はしないが、中央処理装置、グラフィカル処理装置、コア、メインコア、サブコア、処理エリア、ハードウェアエンジンなど、またはポータブルコンピューティングデバイス内の集積回路内またはその外にある任意の構成要素とすることができる。
【００１７】
「MIPS」という用語が、プロセッサが所与の電力周波数において処理することが可能である百万命令毎秒の数を表すことは、当業者には認識されよう。本明細書では、この用語は、例示的な実施形態におけるプロセッサ性能の相対的なレベルを示すための尺度の一般的な単位として使用され、本開示の範囲内に入る任意の所与の実施形態が任意の特定のドライストーン評価または処理能力を有するプロセッサを含むべきであること、または含むべきではないことを示唆するものと、解釈されることはない。加えて、当業者によって理解されるように、プロセッサのMIPS設定は、プロセッサに供給されている電力、周波数、または動作周波数と直接的に相関する。
【００１８】
PCDにおける動作状態に基づくコア/CPUに対する低電力モードの改善された実装のための本システムおよび方法は、アイドルのコアもしくはCPUを低電力モードにするかどうか、またはアイドルのコアもしくはCPUを少しでも低電力モードにするかどうかに関して、改善された意思決定を動的に実施するためのコスト効果的な方法を提供する。一実施形態では、コア/CPUに関連するキャッシュについて、本システムおよび方法は、コア/CPUを低電力モードにする「コスト」または「オーバーヘッド」に関して決定を行うとき、コア/CPUがアイドル状態に入るより前に、キャッシュの動作状態の影響を考える。
【００１９】
本明細書で説明されるシステム、またはシステムの部分は、必要に応じてハードウェアまたはソフトウェアで実装されてもよい。ハードウェアで実装される場合、デバイスは、当技術分野でよく知られている以下の技術、すなわち個別電子部品、集積回路、適切に構成された半導体デバイスおよび抵抗要素を有する特定用途向け集積回路などのいずれかまたはそれらの組合せを含むことができる。これらのハードウェアデバイスのうちのいずれも、単独で動作しようと、他のデバイス、またはメモリなどの他の構成要素とともに動作しようと、開示される方法の様々な動作またはステップを実行するための構成要素または手段を形成し、または備えることもできる。
【００２０】
本明細書で説明されるシステムが、ソフトウェアにおいて実装される、または部分的に実装されるとき、ソフトウェア部分は、本明細書で説明される方法の様々なステップを実行するために使用されることがある。様々な要素を表す際に使用されるソフトウェアおよびデータは、メモリ内に記憶され、適切な命令実行システム(マイクロプロセッサ)によって実行されることがある。ソフトウェアは、論理関数を実装するための実行可能な命令の順序付きリストを備えてもよく、シングルコアプロセッサもしくはマルチコアプロセッサまたはプロセッサ包含システム(processor-containing system)などの、命令実行システム、装置、またはデバイスによって、またはそれらに関連して使用するために、任意の「プロセッサ可読媒体」に組み入れることができる。そのようなシステムは、一般に、命令実行システム、装置、またはデバイスから命令にアクセスし、それらの命令を実行することになる。
【００２１】
図1は、本明細書で説明されるシステムおよび方法を実装し得るPCD100の例示的な非限定的態様のブロック図である。図1に示されるPCD100は、1つまたは複数のワイヤレス通信システムと通信することが可能なワイヤレス電話の形態によるものである。そのようなワイヤレス通信システムは、ロングタームエボリューション(LTE)システム、符号分割多元接続(CDMA)システム、周波数分割多元接続(FDMA)システム、モバイル通信用グローバルシステム(GSM(登録商標):Global System for Mobile Communications)システム、ワイヤレスローカルエリアネットワーク(WLAN)システム、いくつかの他のワイヤレスシステム、またはそれらのうちのいずれかの組合せを含めて、ブロードバンドワイヤレス通信システムであり得る。CDMAシステムは、広帯域CDMA(WCDMA(登録商標))、CDMA 1X、エボリューションデータオプティマイズド(EVDO)、時分割同期CDMA(TD-SCDMA)、またはCDMAの何らかの他のバージョンを実装することができる。
【００２２】
図示のように、PCD100は、互いに結合された異種マルチコア中央処理装置(「CPU」)110およびアナログ信号プロセッサ128を含むオンチップシステム(またはSoC)102を含む。当業者によって理解されるように、CPU110は、第0のコア120、第1のコア122、第2のコア124、および第Nのコア126を備えてもよい。さらに、当業者によって理解されるように、CPU110の代わりに、デジタル信号プロセッサ(「DSP」)が採用されてもまたよい。その上、異種マルチコアプロセッサの技術分野で理解されるように、コア120、122、124、126の各々は、異なるアーキテクチャを有すること、異なる効率で作業負荷を処理すること、動作しているとき異なる量の電力を消費することなどがある。コア120、122、124、126の各々は、PCD100の1つまたは複数の機能を制御することができる。たとえば、第0のコア120は、PCD100内のグラフィックスを制御するためのグラフィックス処理装置(「GPU」)であってよい。そのようなGPU/第0のコア120は、GPUコア120と(バッファを含む)メモリ112との間の通信を制御することを含めて、PCD100内のグラフィックスを制御するために必要なドライバ、キャッシュ、および/または他の構成要素をさらに含んでもよい。別の例では、第Nのコア126などの異なるコアが、ハイレベルオペレーティングシステム(「HLOS」)であることがあるPCDオペレーティングシステムを実行する場合がある。そのような第N/HLOSのコア126は、ドライバ、キャッシュ、ハードウェアインターフェース、および/または、コア126とメモリ112(フラッシュメモリを含むことができる)との間の通信を含めて、HLOSを実行するために必要な他の構成要素をさらに含んでもよい。
【００２３】
コア120、122、124、126のいずれも、CPUなどの別個のプロセッサ、またはデジタル信号プロセッサであってもよい。コア120、122、124、126のうちの1つまたは複数は、プロセッサに加えて、1つまたは複数のキャッシュメモリなどの他の構成要素を含んでもよい。これらのキャッシュメモリは、たとえば、L1キャッシュなど、特定のコアまたはプロセッサのための専用キャッシュメモリを含んでもよい。追加または代替として、これらのキャッシュメモリは、たとえば、L2キャッシュなど、他のコアもしくはプロセッサと共有されるか、および/または他のコアもしくはプロセッサによってアクセス可能なキャッシュメモリを含んでもよい。
【００２４】
加えて、コア120、122、124、126の各々は、以下で説明されるサブシステムを形成するために、メモリ112、センサ、またはPCD100の他のハードウェアなどの他の構成要素と一緒に、機能的にグループ化されてもよい。そのようなサブシステムは、オーディオサブシステム、GPSサブシステム、センササブシステムなど、PCDのある機能を実行するために実装されてもよい。そのようなサブシステムの1つまたは複数は、SoC102が、電力オフ状態またはモードを含めて、低電力または省電力状態またはモードに置かれているときに、動作を続けるためなどに、SoC102とは独立して動作するように構成されてもまたよい。
【００２５】
上述のように、図1ではメモリ112が、マルチコアCPU110に結合されて図示されている。このようなメモリ112は、たとえば、ランダムアクセスメモリ(「RAM」)、読取り専用メモリ(「ROM」)、フラッシュメモリ、またはそれらの任意の組合せであってもよい。加えて、メモリ112は、バッファ、メインメモリ、およびキャッシュを含めて、一緒に配置されている、または互いに離れて配置されている複数の異なるタイプのメモリを備えてもよい。そのようなキャッシュは、コア120、122、124、126のうちの1つまたは複数によってアクセスされ得る1つまたは複数のL2、L3、LNキャッシュを含んでもよい。加えて、メモリ112はSoC102に配置されて図示されているが、メモリ112は、マルチコアCPU110および/またはコア120、122、124、126のうちの1つまたは複数と通信しているダブルデータレート(「DDR」)メモリなど、SoC102から物理的に離れて配置された、すなわち「オフチップ」の1つまたは複数のメモリを含んでもよい。
【００２６】
図1に示されるように、ディスプレイコントローラ129およびタッチスクリーンコントローラ130がマルチコアCPU110に結合される。次に、オンチップシステム102の外部のディスプレイ/タッチスクリーン132が、ディスプレイコントローラ129およびタッチスクリーンコントローラ130に結合される。デジタルカメラ148もまた、マルチコアCPU110に結合される場合がある。そのような実施形態では、デジタルカメラ148は、マルチコアCPU110のコア120、122、124、126のうちの1つによって制御されてもよい。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(「CCD」)カメラまたは相補型金属酸化膜半導体(「CMOS」)カメラである。
【００２７】
図1のPCD100は、ビデオエンコーダ134、たとえば、マルチコアCPU110に結合された、位相反転線(「PAL:phase alternating line」)エンコーダ、順次式カラーメモリ(「SECAM:sequential couleur a memoire」)エンコーダ、もしくは全国テレビジョン方式委員会(「NTSC:national television system(s) committee」)エンコーダ、または任意の他のタイプのビデオエンコーダ134をさらに含んでもよい。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。ビデオポート138は、ビデオ増幅器136に結合される。図1に示されるように、ユニバーサルシリアルバス(「USB」)コントローラ140がマルチコアCPU110に結合される。同様に、USBポート142がUSBコントローラ140に結合される。加入者識別モジュール(「SIM」)カード146もまた、マルチコアCPU110に結合される場合がある。他の実施形態では、複数のSIMカード146が実装される場合がある。
【００２８】
図1にさらに示されるように、ステレオオーディオコーデック150がマルチコアCPU110に結合される場合がある。その上、オーディオ増幅器152がステレオオーディオコーデック150に結合される場合がある。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156が、オーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158がステレオオーディオコーデック150に結合されてもまたよいことを示している。加えて、マイクロフォン160がマイクロフォン増幅器158に結合されてもよい。特定の態様では、周波数変調(「FM」)無線チューナ162がステレオオーディオコーデック150に結合されてもよい。また、FMアンテナ164がFM無線チューナ162に結合される。さらに、ステレオヘッドフォン166がステレオオーディオコーデック150に結合されてもよい。
【００２９】
図1は、モデムデバイス/無線周波数(「RF」)トランシーバ168がマルチコアCPU110に結合される場合があることをさらに示す。モデムデバイス168は、GSM(登録商標)、CDMA、W-CDMA、TDSCDMA、LTE、および、FDB/LTEワイヤレスプロトコルおよびPDD/LTEワイヤレスプロトコルに限定されないが、これらなど、LTEの変形体など、ワイヤレス通信プロトコルのうちの1つまたは複数をサポートする場合がある。加えて、複数のモデムデバイス168が存在する場合があり、そのような実施形態では、異なるモデムデバイス168が、上に記載されたワイヤレス通信プロトコルおよび/または技術のうちのいくつかまたはすべてをサポートする場合がある。
【００３０】
いくつかの実装形態では、モデムデバイス168はさらに、別個のプロセッサ、メモリ、および/またはRFトランシーバを含めて、様々な構成要素からなってもよい。他の実装形態では、モデムデバイス168は単なるRFトランシーバであってもよい。さらに、モデムデバイス168は集積回路に組み込まれる場合がある。すなわち、モデムデバイス168を備える構成要素は、チップ内のフルソリューションであって、本明細書で説明されるシステムおよび方法によって監視され得るそれ自体のプロセッサおよび/またはコアを含む場合がある。代替的には、モデムデバイス168を備える様々な構成要素が、マルチコアCPU110に結合され、CPU110のコア120、122、124のうちの1つによって制御される場合がある。RFスイッチ170が、モデムデバイス168およびRFアンテナ172に結合されてもよい。様々な実施形態では、複数のRFアンテナ172が存在する場合があり、そのようなRFアンテナ172の各々は、RFスイッチ170を介してモデムデバイス168に結合されてもよい。
【００３１】
図1に示すように、キーパッド174が、直接的に、またはアナログ信号プロセッサ128を介してのいずれかで、マルチコアCPU110に結合されてもよい。また、マイクロフォン付きモノヘッドセット176が、マルチコアCPU110および/またはアナログ信号プロセッサ128に結合されてもよい。さらに、バイブレータデバイス178が、マルチコアCPU110および/またはアナログ信号プロセッサ128に結合されてもまたよい。図1はまた、電源188がオンチップシステム102に結合されてもよいことを示し、いくつかの実装形態では、電源188は、USBコントローラ140を介して結合される。特定の態様では、電源188は電力を必要とするPCD100の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源188は、充電式DCバッテリまたは、交流(AC)電源に接続されたAC-DC変換器から得られるDC電源であってもよい。
【００３２】
マルチコアCPU110は、1つまたは複数の内部のオンチップ熱センサ157A、ならびに、1つまたは複数の外部のオフチップ熱センサ157Bに結合されてもまたよい。オンチップ熱センサ157Aは、垂直PNP構造に基づき、通常は相補型金属酸化膜半導体(「CMOS」)の超大規模集積(「VLSI:very large-scale integration」)回路に専用の、1つまたは複数の絶対温度比例(「PTAT:proportional to absolute temperature」)の温度センサを備えてもよい。オフチップ熱センサ157Bは、1つまたは複数のサーミスタを備えてもよい。熱センサ157は、アナログデジタル変換器(「ADC」)コントローラ103を用いてデジタル信号に変換される、電圧降下を生じさせる場合がある。しかしながら、本開示の範囲から逸脱することなく、他のタイプの熱センサ157が採用されてもよい。
【００３３】
図1は、PCD100がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合があるネットワークカード114も含む場合があることをさらに示す。ネットワークカード114は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(「PAN」)カード、または当技術分野でよく知られている任意の他のネットワークカードであってもよい。さらに、ネットワークカード114は、集積回路に組み込まれてもよい。すなわち、ネットワークカード114は、チップ内のフルソリューションであってもよく、別個のネットワークカード114でなくてもよい。
【００３４】
図1に示されるように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン160、FMアンテナ164、ステレオヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178および電源180は、SoC102の外部にある。
【００３５】
SoC102はまた、マルチコアCPU110および/またはコア120、122、124、126のうちの1つもしくは複数をSoC102またはPCD100の他のサブシステムまたは構成要素に通信可能に結合するための様々なバスおよび/またはインターコネクト(図示せず)を含み得る。オンチップシステム102におけるバス/インターコネクトインターフェースを監視するために、任意の数のバスおよび/またはインターコネクトコントローラが実装され配置されてもまたよいことを理解されたい。代替的には、必要に応じてCPU110とPCD100の様々なサブシステムまたは構成要素との間で信号を通信する2つ以上のバス/インターコネクトインターフェースを監視するように配置された入力を備えた、単一のバス/インターコネクトコントローラが構成されることがある。
【００３６】
本明細書で説明される方法ステップのうちの1つまたは複数は、メモリ112内および/またはCPU110に配置されたメモリに記憶されたデータおよびプロセッサ命令の組合せを介して使用可能にされる場合がある。これらの命令は、本明細書で説明される方法を実行するために、マルチコアCPU110内の1つまたは複数のコア120、122、124、126および/またはSoC102のサブシステムによって実行される場合がある。さらに、マルチコアCPU110、コア120、122、124、126のうちの1つまたは複数、メモリ112、PCD100の他の構成要素、またはこれらの組合せは、動作状態、詳細にはコア/CPUモードに関連する1つまたは複数のキャッシュメモリの動作状態に基づいて、コア/CPUに対する低電力モードの改善された実装を可能にするために本明細書で説明される方法ステップの1つまたは複数を実行するための手段として機能することができる。
【００３７】
図2は、図1に示されるPCD実施形態のコア120、122、124、126によるなど、PCDにおける並列スレッドの実行の例示的なタイミング図である。図2に示されるように、動作中にコア120、122、124、126は、特定の時間期間にわたって様々なタスクを並行して実行する場合がある。時間期間は、マルチコアCPU110(図1)によって受け取られるいずれかの周期信号に従って生成または測定され得る。たとえば、周期信号は、異なる実施形態において、たとえばクロック信号、周期的な割込み、垂直同期(「V-Sync」)信号などである場合がある。図2の例示的なタイミング図では、コア120、122、124、126は、PCD100においてゲームを実行している。この例では、時間期間は、V-Sync信号に従っている。しかしながら、図2は、たとえば、ビデオ再生、遠隔会議またはビデオ会議ソフトウェアの操作など、他の信号および/または使用事例にも当てはまることは、当業者には理解されよう。
【００３８】
図2は、第1の時間期間、すなわちフレーム1/期間1と、第2の時間期間、すなわちフレーム2/期間2の一部とを示す。図2に示されるように、第0のコア120、第1のコア122、第2のコア124、および第Nのコア126のすべてが、フレーム1においてアクティブである。当業者によって理解されるように、コア120、122、124、126のすべてがフレーム1の間にアクティブであるが、アクティビティのレベルまたは量は、コア120、122、124、126の間で必ずしも等しく分散されていない。たとえば、図2に示されるように、第0のコア120スレッドは、2つの比較的小さいタスク、ipEventおよびxTh2をフレーム1中に実行する。第1のコア122スレッドは、1つの比較的大きいタスク、gameRenderThをフレーム1の間に実行する。
【００３９】
同じく当業者によって理解されるように、各スレッドによって実行される異なるタスクは、スレッドを実行するコア120、122、124、126に関連する1つまたは複数のキャッシュに異なるアクティビティレベルを必要とする場合がある。図2に示されるように、再び例として第0のコアを使用すると、フレーム1の間に実行される2つのタスクは、第0のコアに関連するキャッシュによるアクティビティをほとんど必要としない。第0のコアに関連するこのキャッシュは、L1キャッシュ、L2キャッシュ、または第0のコアがアクセスできる任意の他のキャッシュである場合がある。図2では、第0のコアのキャッシュによるアクティビティがこのようにないことは、異なるキャッシュ、DDRのようなオフチップメモリ、DVDディスク、またはネットワーク接続を通じたリモートサーバからのフェッチなど、キャッシュに入れるコンテンツのフェッチを、キャッシュが必要としないことによって表される。
【００４０】
図2に示される例を続けると、第1のコアによって実行されるスレッドの単一タスクは、第1のコアに関連するキャッシュによる比較的大きいアクティビティレベルを必要とする。第1のコアのキャッシュによるこの大きいアクティビティレベルは、キャッシュが外部ソースからコンテンツの複数のフェッチを必要とし、その結果フェッチされたコンテンツがキャッシュに1つまたは複数のキャッシュラインとして書き込まれることによって図2に表されている。そのようなコンテンツフェッチは、たとえば、異なるキャッシュ、DDRのようなオフチップメモリ、DVDディスク、またはネットワーク接続を通じたリモートサーバからコンテンツを取り出すことを含む場合がある。
【００４１】
同じく図2に示されるように、フレーム1/期間1の終了後、フレーム2/期間2ではコア120、122、124、126のいずれにも実行するスレッドまたはタスクがない。結果として、コア120、122、124、126は、少なくともフレーム2/期間2の間アイドル状態に入ることになる。他の例では、コア120、122、124、126のうちの1つまたは複数が、フレーム2/期間2の間アクティブのままであってもよく、残りのコア120、122、124、126はアイドル状態に入る。PCD100が、コア/CPUが図2に示されるフレーム2/期間2などにアイドル状態に入っていることを検出するとき、PCD100は、コア/CPUの電力消費を減らすために、コア/CPUを低電力モードにしようとしてもよい。本明細書で使用される「低電力モード」または「LPM」は、コア/CPUが完全にアクティブな状態である間に消費または漏洩するよりも少ない電力をコア/CPUが消費または漏洩する、機能しない状態、スリープ状態、低減またはゼロ電圧状態、低減またはゼロ電力状態など、コア/CPUの1つまたは複数のモードまたは状態を含む場合がある。
【００４２】
たとえば、図3Aは、コア120、122、124、126のうちの1つまたは複数などのコア/CPUが、アイドルであると検出されるとき、入る場合がある例示的な低電力モードを示すグラフ300Aである。図3Aのグラフ300Aでは、x軸は時間を表し、y軸は、例示的なコア/CPUによって消費または漏洩されるミリアンペア(「mA」)単位の電力を表す。理解されるように、図3Aのグラフ300Aは、システム、コア/CPUに対する低電力モードの数、システムまたはコア/CPUアーキテクチャ、実装形態などに応じて、異なるコア/CPUでは変わる場合がある。
【００４３】
図3Aの例では、コアは、アクティブ状態ならびに2つの低電力モード、すなわちLPM1およびLPM2を有する。同じく図3Aに示されるように、Core Idledと符号がつけられている時点で、例示的なコアは、アイドル状態に入る(図2のフレーム2参照)。アイドル状態のとき、コアは、アクティブモードのままであってもよく、または図3Aに示される低電力モードLPM1もしくはLPM2の一方にされてもよい。低電力モードの一方にされる場合、コアは、いくつかの動作またはタスクがこのコアに再びアクティブモードになることを要求する、Core Activeと符号がつけられている第2の時点までそのモードに留まってもよい。理解されるように、コアの特定の実装形態には、より多いまたはより少ない低電力モードが可能である。
【００４４】
図3Aに示されるように、コアがアクティブモードである間、コアは第1の電力量(mAとして示される)を消費または漏洩する。コアがLPM1にされる場合、コアは、アクティブモードの電力量よりも少ない第2の電力量を消費または漏洩することになる。加えて、コアがLPM2にされる場合、コアは、アクティブモードおよびLPM1の電力量よりも少ない第3の電力量を消費または漏洩することになる。理解されるように、図3Aに示されるアクティブモード、LPM1、およびLPM2のための電力レベルは、例示的なものであって、異なるコア/CPUでは図3に示されるものとは異なる場合がある。同じく理解されるように、コア/CPUを低電力モードにすることはまた、一般的に、コア/CPUとともに、コア/CPUに関連する1つまたは複数のキャッシュがフラッシュされるおよび/または低電力モードもしくは状態にされることになる。コア/CPUを低電力モードから出すと、それに対応して一般的には、1つまたは複数のキャッシュが、低電力モードもしくは状態から出され、および/またはキャッシュが低電力モードにされたとき存在するキャッシュラインで再ポピュレートされることになる。
【００４５】
同じく図3Aに示されるように、LPM1およびLPM2の各々に入ることと各々を抜け出ることの両方のための時間遅延(「エントリレイテンシ」および「エグジットレイテンシ」とも呼ばれる)、ならびにLPM1およびLPM2の各々に入るおよび各々から抜け出るために必要とされる電力量がある。コアを低電力モードに入れ、低電力モードから抜け出させるために必要とされる時間量、およびコアを低電力モードに入れ、低電力モードから抜け出させる電力「コスト」または「オーバーヘッド」は、コア/CPUごとに異なることになる。これらのエントリ/エグジットレイテンシおよびエントリ/エグジット電力コストは、たとえば製造業者での試験によるなど、コア/CPUに対する利用可能な低電力モードごとにあらかじめ決定することができる。決定されると、利用可能な低電力モードごとのエントリ/エグジットレイテンシおよびエントリ/エグジット電力コストは、一般に、特定のコア/CPUでは変化せず、コアを低電力モードにするかどうかの決定を行うアルゴリズムまたはロジックによって使用されるように、「配線接続される」または場合によってはPCD上に記憶されてもよい。
【００４６】
図3Aに示される例示的なコアの場合の一実施形態では、LPM1についてのエントリ/エグジットレイテンシは、LPM1についてのエントリ/エグジット電力コストのように、あらかじめ決定されることになる。PCD100は、コアが図3AのCore Idledと符号がつけられている時間においてアイドル状態に入ったことを認識するようになる。コアが次に動作のいくつかのタスクを実行するために再びアクティブとなる必要があるとき、すなわち図3AのCore Activeと符号がつけられている時間を知ることで、およびコアのエントリ/エグジットレイテンシを知ることで、PCD100は、ウェイクアッププロセスがコアをアクティブモードに戻し始めなければならなくなるまで、コアがどのくらいの時間、LPM1に留まっていることができるか(LPM1におけるコアの「レジデンシ」)を決定することができる。
【００４７】
コアがLPM1に留まっていることができる時間、LPM1の間のコアの電力漏洩(mAで示される)、およびLPM1についてのエントリ/エグジット電力コストを知ることで、PCDは、コアをLPM1にすることが、同じ時間期間の間コアをアクティブモードのままにしておくことに比べていくらかの実際の電力節約となるかどうかを決定することができる。同じ決定は、所望される場合、または所望される場合に入る「最良の」低電力モードの選択の一部として、LPM2に対しても行うことができる。理解されるように、一実施形態では、低電力モードの場合の電力節約に関するこれらの決定を行うためのアルゴリズムまたはロジックは、複数の異なるコアに対して同じであってもよい。しかしながら、決定を行うために使用される特定のパラメータ、および決定の結果は、異なるコア/CPUでは、それらのアーキテクチャ、実装形態などに応じて変わることになる。
【００４８】
コア/CPUを低電力モードから出すとき、コア/CPUに関連する他の構成要素によって招かれる追加のレイテンシおよび追加の電力コストもまたあり得ることが観測されている。たとえば、図3Bは、図3Aに示されるLPM2低電力モードからコア/CPUが抜け出ることのさらなる態様を示すグラフ300Bである。図3Bに示されるように、コア/CPUをLPM2から出すレイテンシおよび電力コストに加えて、コア/CPUに関連するキャッシュを再ポピュレートまたは再構築するレイテンシおよび電力コストもある。
【００４９】
コア/CPUに関連するキャッシュを再ポピュレートまたは再構築することは、外部ソースからコンテンツを再フェッチする、および/またはキャッシュラインをキャッシュに再書き込みするレイテンシおよび電力コストを含んでもよい。キャッシュを再構築するこの追加のエグジットレイテンシおよび電力コストは、一般に、コア/CPUをLPM2にするかどうかの決定において考慮されない。アイドル状態に入る前に、コア/CPUがキャッシュによるフェッチ動作を必要としないまたはほとんど必要としないタスクまたはスレッドを実行していた例では、キャッシュを再構築する追加のエグジットレイテンシおよび電力コストは無視できるものである場合がある。
【００５０】
アイドル状態に入る前に、コア/CPUがキャッシュによる多くのフェッチを必要とするタスクまたはスレッドを実行していた例では、キャッシュを再構築する追加のエグジットレイテンシおよび電力コストはかなりのものである場合がある。たとえば、図3Bの例示的なグラフ300Bに示されるように、キャッシュのキャッシュラインを再構築または再ポピュレートして招かれる追加のレイテンシは、コア/CPUがアクティブモードに戻された後、コア/CPUを事実上ストールする場合がある。いくつかの例では、コア/CPUが、そのキャッシュが再構築または再ロードされる間にアクティブモードで待機する必要があると、コア/CPUを低電力モードにすることによる恩恵を打ち消す場合がある。加えて、いくつかの例では、コア/CPUが、そのキャッシュが再構築または再ロードされる間にアクティブモードで待機する必要があると、コア/CPUが単にアクティブモードのままであった場合よりも大きい電力コストを生じる場合がある。
【００５１】
理解されるように、キャッシュがコア/CPUの低電力モードに与える影響の量は、コア/CPUがアイドル状態に入ったときのキャッシュの動作状態によって決まり得る。したがって、キャッシュについてのレイテンシおよび電力コストは、低電力モードアルゴリズム、ロジック、ドライバ、コントローラなどにおいて一般的に使用されるような、完全にあらかじめ決定されたパラメータを使用して計算されなくてもよい。
【００５２】
図4は、図1に示されるPCD実施形態などの、PCDにおける動作状態に基づく、コア/CPUのための低電力モードの改善された実装のためのシステム400の例示的な実施形態を示すブロック図である。例示的なシステム400は、システムオンチップ(SoC)集積回路202を含み、SoC集積回路202は(図1のSoC102と同様に)PCDに実装され得る。図4のSoC202は、第0のコア220、第1のコア222、第2のコア224、および第Nのコア226を含み、それらすべてがSoC202のインターコネクトまたはバス240に接続される。SoC202のインターコネクト/バス240は、SoC202のアーキテクチャおよび/またはSoC202もしくはPCDが対象とする用途によって決まり得る任意の所望のタイプのバスまたはインターコネクトであってもよい。図4に示されるように、「オフチップ」DDR250もまた、コア220、222、224、226および/またはそれらのそれぞれのL1キャッシュ221、223、225、227と通信しているインターコネクト/バス240に接続される。上記で説明したように、動作中、L1キャッシュ221、223、225、227のうちの1つまたは複数は、必要に応じてSoC202の外側に配置されたDDR250から(またはSoC202の外側の他のメモリもしくは位置から)コンテンツをフェッチし、フェッチしたコンテンツをキャッシュラインとしてキャッシュに書き込んでもよい。
【００５３】
SoC202はまた、明快にするために図4に示されていない他の構成要素および/またはサブシステム(図1に示されるものを含む)を含み得る。第0のコア220、第1のコア222、第2のコア224、および第Nのコア226の各々は、何らかのタイプのプロセッサを含み、各々は、図1に関して上記で説明したコア120、122、124、126のうちの1つとして実装され得る。いくつかの実施形態では、第0のコア220、第1のコア222、第2のコア224、および第Nのコア226のうちの1つまたは複数のプロセッサは、汎用処理装置として実装されることがあり、他の実施形態では、プロセッサは、DSPなど、専用プロセッサとして実装される場合がある。第0のコア220、第1のコア222、第2のコア224、および第Nのコア226の各々はまた、(第0のコア220のための)L1キャッシュ221、(第1のコア222のための)L1キャッシュ223、(第2のコア224のための)L1キャッシュ225、および(第Nのコア226のための)L1キャッシュ227として図4に示される少なくとも1つのキャッシュメモリを含む。
【００５４】
様々な実施形態では、第0のコア220、第1のコア222、第2のコア224、および第Nのコア226のうちの1つまたは複数は、追加のL2キャッシュなど、図2に示されるよりも多いまたは少ない構成要素を含み得る。加えて、いくつかの実施形態では、図4に示される構成要素は、様々な構成でSoC202に物理的に配置されてもよく、図4に示される1つまたは複数の構成要素は、SoC202において互いの近くに物理的に配置されなくてもよい。
【００５５】
図4に示される実施形態では、L1キャッシュ221、223、225、および227の各々が、それぞれアクセスカウンタ231、233、235、237を含み、これに結合されている。図示の実施形態では、アクセスカウンタ231、233、235、237は、L1キャッシュ221、223、225、227とインターコネクト/バス240との間の、キャッシュに結合されたハードウェアカウンタである。他の実施形態では、アクセスカウンタ231、233、235、237は、必要に応じて、L1キャッシュ221、223、225、227自体に、またはコア220、222、224、226に配置されたハードウェア、ファームウェア、ソフトウェア、またはロジックである場合がある。
【００５６】
システム400の動作中に、たとえばL1キャッシュ221がDDR250(または、他の「オフチップ」位置)からコンテンツをフェッチする、または取り出すとき、そのL1キャッシュ221に関連するアクセスカウンタ231は、アクティビティのレコードを作成する。L1キャッシュ221がメモリまたはソース「オフチップ」からコンテンツをフェッチするたびに、関連するアクセスカウンタ231は、L1キャッシュ221によるフェッチ動作に関する情報を記録する。記録され得る例示的な情報は、フェッチ動作の数、フェッチされたキャッシュラインの数、コンテンツがフェッチされたキャッシュ(DDR250など)にフェッチされ書き込まれたバイト数などを含む。結果として、アクセスカウンタ231、233、235、237の各々が、その関連するL1キャッシュ221、223、225、227によって実行されるフェッチ動作の数、量、タイプ、位置などのランニングカウントまたはレコードを保持してもよい。
【００５７】
L1タイプのキャッシュに関連するものとして図4の実施形態に示されたが、アクセスカウンタ231、233、235、237の1つまたは複数は、複数のコア/CPUによって共有されるキャッシュ、L2キャッシュ、および/またはコア220、222、224、226によって使用される複数のレベルのキャッシュを含む、追加のまたは異なるキャッシュに関連する場合があることは理解されよう。したがって、いくつかの実施形態では、アクセスカウンタ231、233、235、237が、各々、複数の異なるキャッシュに対して、このランニングカウント、またはレコード情報を記憶してもよい。一実施形態では、(1つのキャッシュに対してであれ、複数のキャッシュに対してであれ)ランニングカウントまたはレコード情報は、アクセスカウンタ231、233、235、237のメモリに記憶されてもよい。他の実施形態では、アクセスカウンタ231、233、235、237は、このランニングカウントまたはレコード情報を、図示されたL1キャッシュ221、223、225、227など、それらのそれぞれの関連するキャッシュなどの他の場所に記憶してもよい。また他の実施形態では、アクセスカウンタ231、233、235、237によって収集されたランニングカウントまたはレコード情報は、低電力モードコントローラ(LPMコントローラ260)のような、中央の位置に記憶されてもよい。
【００５８】
図4ではインターコネクト/バス240に接続されるものとして示される、例示的なLPMコントローラ260は、PCD100がコア220、222、224、226の1つまたは複数を1つまたは複数の低電力モードにすることに関する決定を行うとき使用するために、アクセスカウンタ231、233、235、237の1つまたは複数からランニングカウントまたはレコード情報を受け取るまたは取得する場合がある。たとえば、一実施形態では、LPMコントローラ260は、集中型のドライバ、ロジック、ソフトウェア、またはアルゴリズムを含んでもよく、コア220、222、224、226の1つまたは複数を低電力モードにするかどうか(および/またはどの低電力モードにするか)に関する決定を行う実装形態ではPCD100のためのオペレーティングシステムの一部であってもよい。別の実施形態では、LPMコントローラ260は、コア220、222、224、226の1つまたは複数に対して低電力モード決定を実施するための、SoC202上のハードウェア構成要素、またはハードウェア構成要素の集合であってもよい。
【００５９】
動作中、図4のアクセスカウンタ231、233、235、237は、アクセスカウンタ231、233、235、237に関連するキャッシュの動作状態に基づく、コア/CPUに対する低電力モードの改善された実装のための方法の一部として使用されてもよい。図5Aは、コア/CPUに関連するキャッシュの動作状態に基づく、コア/CPUに対する低電力モードの改善された実装のための例示的な方法500の態様を示すフローチャートである。
【００６０】
図5Aに示されるように、方法500は、トリガイベントを検出してブロック510において始まる。方法500のこの実施形態では、アクセスカウンタ231、233、235、237は、L1キャッシュ221、223、225、227など、1つまたは複数の関連するキャッシュのためにアクセス情報のランニングカウントを収集および/または記録していたと仮定する。方法500のステップ510において、トリガイベントが検出される。一実施形態では、トリガイベントは、アクセスカウンタ231、233、235、237の1つまたは複数によって検出される。アクセスカウンタ231、233、235、237がハードウェアで実装されるこの実施形態の実装形態では、アクセスカウンタ231、233、235、237によって検出されたトリガイベントは、図1に関して上記で説明したV-Syncなどの、受け取られた周期信号であってもよい。そのような実装形態では、周期信号は、アクセスカウンタによって直接受け取られてもよく、または、それぞれのコア220、222、224、226を介して間接的に受け取られてもよい。
【００６１】
別の実施形態では、トリガイベントの検出は、LPMコントローラ260によるなど、別の構成要素によるものであってもよい。この他の実施形態の実装形態では、LPMコントローラ260は、トリガイベントを検出してもよく、次いで、方法500の残りのブロックを実行するために、それ自体で、またはアクセスカウンタ231、233、235、237の1つまたは複数と連携して作動してもよい。
【００６２】
ブロック520において、アクセスカウンタ231、233、235、237によって収集されるランニングカウントまたはレコード情報など、収集されたアクセスカウンタデータは保存される。いくつかの実施形態では、アクセスカウンタ231、233、235、237は、収集されたアクセスレコード情報をメモリに保存または記憶することによってこのブロック520を実行する。アクセスカウンタ231、233、235、237の1つまたは複数は、いくつかの実施形態では、アクセスカウンタにローカルなメモリにこの情報を保存してもよい。他の実施形態では、アクセスカウンタデータは、アクセスカウンタに関連するL1キャッシュ221、223、225、227、またはLPMコントローラ260(またはLPMコントローラ260にアクセス可能なメモリ)など中央の位置など、他の場所に保存されてもよい。
【００６３】
いくつかの実施形態では、アクセスカウンタ231、233、235、237は、ブロック520において、収集されたレコード情報の要約または集約を保存してもよい。たとえば、各アクセスレコードを別々に保存するのではなく、アクセスカウンタ231、233、235、237の1つまたは複数が、1つまたは複数のキャッシュによるフェッチの総数、1つまたは複数のキャッシュによってフェッチされたキャッシュラインの総数、1つまたは複数のキャッシュによってフェッチされたデータの総バイト数などを保存してもよい。
【００６４】
他の実施形態では、アクセスカウンタデータ(および/またはアクセスカウンタデータの要約もしくは集約)を保存することは、代わりにLPMコントローラ260など、PCD100の異なる部分によって実行されてもよい。一実装形態では、ブロック510においてトリガイベントを検出した後に、LPMコントローラ260は、アクセスカウンタ231、233、235、237の1つまたは複数からアクセスカウンタデータ(および/またはアクセスカウンタデータの要約もしくは集約)を取り出し、その情報をLPMコントローラ260に関連するメモリに記憶してもよい。別の実装形態では、ブロック510においてトリガイベントを検出した後に、LPMコントローラ260は、アクセスカウンタ231、233、235、237の1つまたは複数に、収集されたデータ(および/またはアクセスカウンタデータの要約もしくは集約)を、LPMコントローラ260に、またはそれがLPMコントローラ260によってアクセスされ得る別の位置に提供させてもよい。
【００６５】
方法500は、アクセスカウンタ231、233、235、237がリセットされるブロック530に進む。ブロック530において、キャッシュフェッチに関するランニング情報を含むメモリストアは、クリアおよび/またはリセットされ、ステップ520においてアクセスカウンタデータが保存されたメモリではない。このようにして、ブロック530は、アクセスカウンタ231、233、235、237に、新しい時間期間の間キャッシュフェッチに関する情報の新しいランニング収集を開始させ、キャッシュフェッチ情報が取得および保存される別々のサンプリング期間を作成する。ブロック530は、アクセスカウンタ231、233、235、237をリセットすることによって直接に、またはランニングレコード情報が記憶されたローカルメモリもしくは他のメモリをクリアすることによって、遂行されてもよい。他の実施形態では、これは、LPMコントローラ260がそのようなアクセスカウンタメモリまたは他のメモリにリセットさせることによって実行されてもよい。
【００６６】
アクセスカウンタ231、233、235、237がブロック530においてリセットされた後、オプションのブロック540が実行されてもよい。たとえば、各アクセスカウンタ231、233、235、237が別々に単一キャッシュのために方法500を実行する実施形態では、方法500のブロック540を実行する必要がない場合がある。1つまたは複数のアクセスカウンタ231、233、235、237が別々に複数のキャッシュのために方法500を実行しているなど、他の実施形態では、ブロック540が実行されてもよい。そのような実施形態の場合、アクセスカウンタ231、233、235、237は、ブロック540において、データがキャッシュのすべてに対して保存されたかどうかを決定する。そうである場合、方法500は終了する。そうでない場合、方法500はブロック520に戻り、追加のキャッシュに対するアクセスカウンタデータは保存され、アクセスカウンタはそれらの追加のキャッシュに関してリセットされる(ブロック530)。
【００６７】
LPMコントローラ260(またはPCD100の他の構成要素)が複数のアクセスカウンタ231、233、235、237のために方法500を実行しているなど、また他の実施形態では、ブロック540もまた実行されてもよい。そのような実施形態の場合、LPMコントローラ260(またはPCD100の他の構成要素)は、ブロック540において、アクセスカウンタ231、233、235、237のすべてに対してデータが保存されたかどうかを決定する。そうである場合、方法500は終了する。そうでない場合、方法500はブロック520に戻り、追加のアクセスカウンタ231、233、235、237のためのアクセスカウンタデータは保存され、追加のアクセスカウンタ231、233、235、237はリセットされる(ブロック530)。
【００６８】
理解されるように、図5Aの例示的な方法500は、図4Aのコア220、222、224、226に関連するL1キャッシュ221、223、225、227など、コア/CPUに関連する1つまたは複数のキャッシュの動作状態の取込みを可能にする。詳細には、たとえば、コア/CPUがアイドル状態に入るとき(図2参照)、例示的な方法500は、コア/CPUがアイドル状態に入る直前のある時間期間またはサンプリング期間の間、コア/CPUに関連するキャッシュの動作状態に関する情報、すなわち、以下で説明されるように、コア/CPUが低電力モードから抜け出るとき、キャッシュを再構築または再ポピュレートするためにどのくらいの時間および/または電力が必要とされ得るかを計算または推定するために使用され得る情報を取り込み、提供する。例示的な方法500はまた、これらのキャッシュの動作状態に関する情報が、コア/CPUがアイドル状態に入る前の複数の時間の期間またはサンプリング期間の間に取り込まれ、記録されることを可能にし、キャッシュを再構築または再ポピュレートするために必要とされる時間および/または電力のこの計算または推定の一部として使用される場合もあるキャッシュの動作状態の履歴を提供する。
【００６９】
例示的な方法500を図5Aの状況において説明しているが、他の方法または方法500の実施形態が実施され得ることは理解されよう。たとえば、他の実施形態では、アクセスカウンタ231、233、235、237は、方法500の開始前に、あらかじめ動作していない場合がある。そのような実施形態では、ブロック510においてトリガイベントを検出すると、代わりにアクセスカウンタ231、233、235、237をリセットし、次いでフェッチ情報の収集を開始し、新しいサンプリング期間を始めてもよい。そのような実施形態では、その後のトリガイベントにより、収集されたフェッチ情報が保存され、アクセスカウンタ231、233、235、237が上記で説明したようにリセットされ、次のサンプリング期間を始めてもよい。このようにして、方法500のこの代替実施形態では、図5Aのブロック520およびブロック530は順序が逆転する。理解されるように、図5Aの方法500の他の実施形態および/または変更もまたあり得る。
【００７０】
次に図6Aを参照すると、コア/CPUに対する低電力モードの改善された実装のための方法600の例示的な実施形態のさらなる態様が示されている。図6Aの方法600は、図4のコア220、222、224、226などの1つまたは複数のコア/CPUがアイドル状態に入ることを識別または検出して、ブロック610において始まる。1つまたは複数のコア/CPUがアイドル状態に入ることは、図4に示されるLPMコントローラ260のような構成要素によるなど、PCD100によって識別または検出されてもよい。上記で説明したように、LPMコントローラ260は、別個の構成要素(または、構成要素の集合)であってもよく、PCD100上で動作するアルゴリズム、アプリケーション、プログラム、ドライバなどであってもよい。代替的に、他の実施形態では、ブロック610(および方法600の残りのブロック)の識別または決定は、アイドル状態に入るコア/CPUによって実行されてもよい。理解されるように、1つまたは複数のコアがアイドル状態に入ることをブロック610において識別または決定するには複数の方法がある。
【００７１】
コア/CPUがアイドル状態に入ると識別または決定されると、コア/CPUを低電力モードにすることのエントリおよびエグジットオーバーヘッド(電力コストなど)は、ブロック620において計算される。図3Aについて上記で説明したように、このエントリ/エグジット電力コストは、一般に、コア/CPUごとにあらかじめ決定され、PCD100の動作状態に基づいて変わらない。いくつかの実施形態では、アイドル状態に入る各コア/CPUが、それ自体のためにブロック620の計算を実行してもよい。他の実施形態では、図4のLPMコントローラ260など、集中型の構成要素またはドライバ/アプリケーション/アルゴリズムが、1つまたは複数のコア/CPUのためにブロック620を実行してもよい。
【００７２】
ブロック630において、コア/CPUに関連する1つまたは複数のキャッシュのワーキングセットサイズが計算または決定される。いくつかの実施形態では、キャッシュは、図4のL1キャッシュ221、223、225、227など、コア/CPUに関連するL1キャッシュであってもよい。他の実施形態では、キャッシュは、2つ以上のコア/CPUに共有される、またはアクセス可能な、L2または他のキャッシュであってもよい。一実施形態では、ワーキングセットを計算または決定することは、DDRメモリ(図4のDDR250参照)、DVDなどのディスク、ネットワークによって接続されたリモートサーバなどの「オフチップ」ソースからの、キャッシュによって行われたフェッチに関する情報に基づいてキャッシュの動作ステータスを推定または計算することを含んでもよい。そのような情報は、図5Aについて説明されたように、図4のアクセスカウンタ231、233、235、237によって収集された情報を含んでもよい。
【００７３】
一実施形態では、キャッシュのワーキングセットサイズは、図5Aで説明されるように、コア/CPUがアイドル状態に入る前に、直近の時間期間/サンプリング期間に集められた情報など、キャッシュに関する最新の情報から計算または決定されてもよい。たとえば、ワーキングセットサイズは、直近の時間期間/サンプリング期間にキャッシュによってフェッチされたキャッシュラインの総数、直近の時間期間/サンプリング期間にキャッシュによってフェッチされたコンテンツのバイト数などであってもよい。
【００７４】
他の実施形態では、キャッシュのワーキングセットサイズは、コア/CPUがアイドル状態に入る前に、以前の時間期間/サンプリング期間に集められた情報など、キャッシュに関する最新の情報よりも多くから計算または決定されてもよい。そのような実施形態では、ブロック630におけるキャッシュのワーキングセットサイズを計算することは、過去のN個の時間期間/サンプリング期間の間にキャッシュによってフェッチされた平均キャッシュライン数および/またはコンテンツの平均バイト数を決定することを含んでもよい。他の実施形態では、ブロック630におけるキャッシュのワーキングセットサイズを計算することは、代わりに、または追加として、過去のN個の時間期間/サンプリング期間のいずれかにおいてキャッシュによってフェッチされた最大キャッシュライン数および/またはコンテンツの最大バイト数を決定することを含んでもよい。
【００７５】
いくつかの実施形態では、アイドル状態に入る各コア/CPUが、それ自体のためにブロック630の計算または決定を実行してもよい。他の実施形態では、図4のLPMコントローラ260など、集中型の構成要素またはドライバ/アプリケーション/アルゴリズムが、アイドル状態に入る1つまたは複数のコア/CPUのためにブロック630の計算または決定を実行してもよい。
【００７６】
方法600は、キャッシュを再ポピュレート、再ロード、再フェッチ、および/または再構築するためのオーバーヘッドが決定されるブロック640に進む。一実施形態では、ブロック640の決定または計算は、低電力モードについて、キャッシュを再ポピュレート、再ロード、再フェッチ、および/または再構築するための電力コストを決定することを含んでもよい。電力コストのこの計算は、ワーキングセットサイズがどのように決定されたかにかかわらず、ブロック630において決定されたワーキングセットサイズを使用して実行されてもよい。
【００７７】
他の実施形態では、ブロック640の計算または決定は、代替または追加として、低電力モードについて、キャッシュを再ポピュレート、再ロード、再フェッチ、および/または再構築するためのレイテンシを決定することを含んでもよい。レイテンシのこの計算もまた、ワーキングセットサイズがどのように決定されたかにかかわらず、ブロック630において決定されたワーキングセットサイズを使用して実行されてもよい。たとえば、一実装形態では、ブロック640の計算は、ワーキングセットをキャッシュに再ポピュレート、再ロード、または再構築するための総時間を決定するために、直近の時間期間/サンプリング期間にアクセス/フェッチされたキャッシュラインの総数に、キャッシュがキャッシュラインにアクセスする/キャッシュラインをフェッチするための時間を掛けることを含んでもよい。理解されるように、ブロック640において追加の計算または決定が実施される場合があり、計算は、ブロック630においてワーキングセットがどのように計算されるかによって決まり得る。
【００７８】
いくつかの実施形態では、アイドル状態に入る各コア/CPUが、それ自体のためにブロック640の計算または決定を実行してもよい。他の実施形態では、図4のLPMコントローラ260など、集中型の構成要素またはドライバ/アプリケーション/アルゴリズムが、アイドル状態に入る1つまたは複数のコア/CPUのためにブロック640の計算または決定を実行してもよい。
【００７９】
ブロック650において、方法600は、コアに対する低電力モードが妥当であるかどうかを決定する。一実施形態では、ブロック650の決定は、ブロック620、630、および/または640の計算または決定に基づくものである。たとえば、いくつかの実施形態では、ブロック650は、コア/CPUをアクティブ状態に維持する電力コストを、コア/CPUを低電力状態(図3AのLPM2など)にする電力コストと比較することを含んでもよい。コア/CPUを低電力状態にすることに由来する電力コストは、一実施形態では、「生の(raw)」電力コストを取得するために、最初に、低電力状態のコア/CPUの電力消費/漏洩に、コア/CPUが低電力状態で「レジデント(resident)」である時間の期間を掛けることによって、決定されてもよい。コア/CPUが低電力状態で「レジデント」である時間の期間は、コア/CPUのエントリ/エグジットレイテンシ、ならびにコア/CPUに関連する1つまたは複数のキャッシュを再ポピュレートするレイテンシに基づいて決定されてもよい。この「生の」電力コストは、コア/CPUを低電力モードにする最終的な総電力コストを決定するために、低電力状態のためのコア/CPUのエントリ/エグジット電力コスト、ならびにコア/CPUに関連する1つまたは複数のキャッシュを再ポピュレートする電力コストによって調整されてもよい。
【００８０】
理解されるように、ブロック620、630、640の計算または決定を実行する方法のいずれかが、コア/CPUを低電力モードにする最終的な総電力コストに到達するために、ブロック650の例示的な計算/決定の上記の部分のいずれかにおいて使用される場合がある。加えて、理解されるように、コア/CPUを低電力モードにする最終的な総電力コストに到達するまったく異なる方法が、ブロック650において実施される場合がある。そのような異なる実装形態は、決定までにより多いもしくはより少ない部分を有する場合があり、および/または異なる情報を考慮に入れる場合がある。
【００８１】
一実施形態では、コア/CPUを低電力モードにする最終的な総電力コストが、コア/CPUをフルアクティブモードに維持する電力コスト以上である場合、低電力モードは妥当ではない。別の実施形態では、代わりにブロック650の決定は、低電力モードが妥当であるためには、コア/CPUを低電力モードにすることに由来する「コスト削減」が、所定の量、パーセンテージ、またはしきい値だけフルアクティブモードの電力コストを上回ることを必要としてもよい。
【００８２】
いくつかの実施形態では、アイドル状態に入る各コア/CPUが、それ自体のためにブロック650の決定または計算を実行してもよい。他の実施形態では、図4のLPMコントローラ260など、集中型の構成要素またはドライバ/アプリケーション/アルゴリズムが、アイドル状態に入る1つまたは複数のコア/CPUのためにブロック650の決定または計算を実行してもよい。
【００８３】
ブロック650の後、アイドル状態に入るコア/CPUのための、またはアイドル状態に入るすべてのコア/CPUのためのすべての低電力モードが検討されたかどうかを決定するために、ブロック660が実行されてもよい。すべての低電力モードが検討された場合、方法600は終了する。コア/CPUのための、またはすべてのコア/CPUのためのすべての低電力モードが検討されたわけではない場合、方法600はブロック620に戻り、コア/CPUの次の低電力モードのための、または次のコア/CPUのための計算/決定を開始する。
【００８４】
ブロック660は、いくつかの実施形態ではオプションである。たとえば、コア/CPUに対して1つの低電力モードしか存在しない実施形態では、ブロック660は不要であり、方法600は、ブロック650において低電力モードが妥当であるかどうかを決定した後に終了することができる。他の実施形態では、コア/CPUに対して複数の低電力モードが存在する場合があるが、方法600を実施するコア/CPU、アルゴリズム、ロジック、アプリケーション、ドライバなどは、コア/CPUに対するすべての考えられる低電力モードが、連続して評価され、いずれかの低電力モードが妥当であると決定されるとき停止するように構成されてもよい。そのような実施形態では、ブロック650における、低電力モードが妥当であるという決定が、方法600を終了することもできる。
【００８５】
また他の実施形態では、方法600は、コア/CPUに対するすべての考えられる低電力モードを同時に評価してもよい。これらの実施形態では、ブロック650は、アクティブモードと比較して電力コスト削減が最大の低電力モードなど、「最良」低電力モードの決定をさらに含んでもよい。これらの実施形態の場合、ブロック650における、「最良」低電力モードの決定が、方法600を終了することもできる。
【００８６】
いくつかの実施形態では、アイドル状態に入る各コア/CPUが、必要な場合、それ自体のためにブロック660の決定を実行してもよい。他の実施形態では、図4のLPMコントローラ260など、集中型の構成要素またはドライバ/アプリケーション/アルゴリズムが、アイドル状態に入る1つまたは複数のコア/CPUのためにブロック660の決定を実行してもよい。
【００８７】
理解されるように、図5Aおよび図6Aは、それぞれ、開示される方法500および600の例示的な一実施形態について説明しているにすぎない。他の実施形態では、図5Aに示される方法500および/または図6Aに示される方法600に追加のブロックまたはステップを加えることができる。同様に、いくつかの実施形態では、図5Aおよび/または図6Aに示される様々なブロックまたはステップを結合する、または省略することができる。方法500および600のそのような変形体は本開示の範囲内である。
【００８８】
加えて、本発明が説明した実施形態で機能するように、図5Aまたは図6Aを含めて、本明細書で説明されたプロセスまたはプロセスフロー内のいくつかのステップが、他のステップよりも先行する場合があるのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変更しない場合、本開示は、説明されたステップの順序に限定されない。その上、いくつかのステップが、本開示の範囲から逸脱することなく、他のステップの前、後、またはそれと並行して(実質的に同時に)実行される場合があることを認識されたい。さらに、「それ以降」、「次いで」、「次に」、「後に」などの言葉は、ステップの順序を制限することは意図していない。これらの言葉は単に、例示的な方法の説明に読者を導くために使用される。
【００８９】
方法500および600に関して上記で説明した様々な動作、方法、または機能は、様々なハードウェアおよび/またはソフトウェアの構成要素/モジュールによって実行される場合がある。そのような構成要素および/またはモジュールは、説明された様々な動作、方法、または機能を実行するための手段を提供することができる。概して、対応する等価物であるミーンズプラスファンクション図を有する、図に示された方法が存在する場合、動作ブロックは、同様に番号付けされたミーンズプラスファンクションブロックに対応する。たとえば、図5Aに示されたブロック510〜540は、図5Bに示されたミーンズプラスファンクションブロック510'〜540'に対応する。同様に、図6Aに示されたブロック610〜660は、図6Bに示されたミーンズプラスファンクションブロック610'〜660'に対応する。
【００９０】
プログラミングにおける当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、容易に、開示された発明を実施するために、コンピュータコードを書くことができ、または適切なハードウェアおよび/もしくは回路を識別することができる。したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示が、本発明をどのように製作し使用すべきかについて適切に理解するために必要であるとは見なされない。特許請求されるプロセッサ実施プロセスの本発明の機能は、様々なプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
【００９１】
上記のような1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてもよい。ソフトウェアにおいて実装される場合には、その機能は、非一時的プロセッサ可読媒体など、コンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶または送信されてもよい。コンピュータ可読媒体は、ある場所から別の場所へのプログラムの転送を容易にする任意の媒体を含む、データ記憶媒体とデータ通信媒体との両方を含む。
【００９２】
記憶媒体は、コンピュータまたはプロセッサによってアクセスされてもよい任意の利用可能な媒体であってもよい。限定はしないが、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(「CD」)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
【００９３】
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって定められるような本発明から逸脱することなく、本明細書において様々な置換および変更がなされる場合があることは理解されよう。
【符号の説明】
【００９４】
100  PCD
102  SoC
103  アナログデジタル変換器(ADC)コントローラ
110  CPU
112  メモリ
114  ネットワークカード
120  第0のコア
122  第1のコア
124  第2のコア
126  第Nのコア
128  アナログ信号プロセッサ
129  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  ディスプレイ/タッチスクリーン
134  ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(USB)コントローラ
142  USBポート
146  SIMカード
148  デジタルカメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカ
156  第2のステレオスピーカ
157  熱センサ
158  マイクロフォン増幅器
160  マイクロフォン
162  周波数変調(FM)無線チューナ
164  FMアンテナ
166  ステレオヘッドフォン
168  モデムデバイス/無線周波数(RF)トランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォン付きモノヘッドセット
178  バイブレータ
180  電源
188  電源
202  SoC
220  第0のコア
221  L1キャッシュ
222  第1のコア
223  L1キャッシュ
224  第2のコア
225  L1キャッシュ
226  第Nのコア
227  L1キャッシュ
231  アクセスカウンタ
233  アクセスカウンタ
235  アクセスカウンタ
237  アクセスカウンタ
260  LPMコントローラ
400  システム
【図１】
2018532174.tif 000003
【図２】
2018532174.tif 000004
【図３Ａ】
2018532174.tif 000005
【図３Ｂ】
2018532174.tif 000006
【図４】
2018532174.tif 000007
【図５Ａ】
2018532174.tif 000008
【図５Ｂ】
2018532174.tif 000009
【図６Ａ】
2018532174.tif 000010
【図６Ｂ】
2018532174.tif 000011
【手続補正書】
【提出日】平成30年2月6日(2018.2.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイス(PCD)内のマルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のための方法であって、
前記マルチコアSoCのコアがアイドル状態に入ることを識別するステップと、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算するステップと、
複数のサンプリング期間の間にキャッシュによって取り出されたキャッシュラインの平均数を決定することによって、前記コアに関連する前記キャッシュのワーキングセットサイズを計算するステップと、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算するステップと、
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定するステップと
を含む、方法。
【請求項２】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算するステップであって、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかの前記決定が、前記キャッシュが前記低電力モードを抜け出るための前記電力コストにも部分的に基づいている、計算するステップ
をさらに含む、請求項1に記載の方法。
【請求項３】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るためのレイテンシを計算するステップが、
前記複数のサンプリング期間の間に取り出されたキャッシュラインの前記平均数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を決定するステップが、
前記キャッシュに結合されたアクセスカウンタを用いて、前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするステップ
を含む、請求項1に記載の方法。
【請求項５】
前記キャッシュに結合されたアクセスカウンタを用いてカウントするステップが、前記複数のサンプリング期間の各々の終わりに前記アクセスカウンタをリセットするステップをさらに含む、
請求項4に記載の方法。
【請求項６】
ポータブルコンピューティングデバイス(PCD)におけるマルチコアシステムオンチップ(SoC)のためのコンピュータシステムであって、
前記SoCのコアと、
前記コアと通信している前記SoCのキャッシュと、
前記コアおよび前記キャッシュと通信している低電力モードコントローラであって、
前記コアがアイドル状態に入ることを識別すること、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算すること、
複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの平均数を決定することによって、前記キャッシュのワーキングセットサイズを計算すること、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算すること、および
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定すること
を行うように構成された、低電力モードコントローラと
を備える、コンピュータシステム。
【請求項７】
前記低電力モードコントローラが、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算することと、前記キャッシュが前記低電力モードを抜け出るための前記電力コストに部分的に基づいて、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかを決定することと
を行うようにさらに構成される、請求項6に記載のシステム。
【請求項８】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るためのレイテンシを計算するように構成された前記低電力モードコントローラが、
前記複数のサンプリング期間の間に取り出されたキャッシュラインの前記平均数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるように構成された前記低電力モードコントローラ
をさらに含む、請求項6に記載のシステム。
【請求項９】
前記キャッシュに結合されたアクセスカウンタをさらに備え、前記アクセスカウンタが、前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数をカウントするように構成される、請求項6に記載のシステム。
【請求項１０】
前記アクセスカウンタが、前記複数のサンプリング期間の各々の終わりにリセットするようにさらに構成される、
請求項9に記載のシステム。
【請求項１１】
コンピュータ可読プログラムコードが組み込まれた非一時的コンピュータ使用可能記憶媒体であって、前記コンピュータ可読プログラムコードが、ポータブルコンピューティングデバイス(PCD)におけるマルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のための方法を実施するために実行されるように適応され、前記方法が、
前記マルチコアSoCのコアがアイドル状態に入ることを識別するステップと、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算するステップと、
複数のサンプリング期間の間にキャッシュによって取り出されたキャッシュラインの平均数を決定することによって、前記コアに関連する前記キャッシュのワーキングセットサイズを計算するステップと、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算するステップと、
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定するステップと
を含む、コンピュータ使用可能記憶媒体。
【請求項１２】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算するステップであって、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかの前記決定が、前記キャッシュが前記低電力モードを抜け出るための前記電力コストにも部分的に基づいている、計算するステップ
をさらに含む、請求項11に記載のコンピュータ使用可能記憶媒体。
【請求項１３】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るためのレイテンシを計算するステップが、
前記複数のサンプリング期間の間に取り出されたキャッシュラインの前記平均数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるステップ
をさらに含む、請求項11に記載のコンピュータ使用可能記憶媒体。
【請求項１４】
前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を決定するステップが、
前記キャッシュに結合されたアクセスカウンタを用いて、前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするステップ
を含む、請求項11に記載のコンピュータ使用可能記憶媒体。
【請求項１５】
ポータブルコンピューティングデバイス(PCD)内のマルチコアシステムオンチップ(SoC)における低電力モードの改善された実装のためのコンピュータシステムであって、
前記マルチコアSoCのコアがアイドル状態に入ることを識別するための手段と、
前記コアの低電力モードについて、前記コアのエントリ電力コストおよび前記コアのエグジット電力コストを計算するための手段と、
複数のサンプリング期間の間にキャッシュによって取り出されたキャッシュラインの平均数を決定するための手段を含む、前記コアに関連する前記キャッシュのワーキングセットサイズを計算するための手段と、
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るためのレイテンシを計算するための手段と、
前記コアの前記エントリ電力コスト、前記コアの前記エグジット電力コスト、および前記キャッシュが前記低電力モードを抜け出るための前記レイテンシに部分的に基づいて、前記コアに対する前記低電力モードが、アクティブモードと比較して電力節約となるかどうかを決定するための手段と
を備える、コンピュータシステム。
【請求項１６】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記コアの前記低電力モードを抜け出るための電力コストを計算するための手段であって、前記キャッシュに対する前記低電力モードが前記電力節約となるかどうかの前記決定が、前記キャッシュが前記低電力モードを抜け出るための前記電力コストにも部分的に基づいている、計算するための手段
をさらに備える、請求項15に記載のシステム。
【請求項１７】
前記キャッシュの前記ワーキングセットサイズを使用して、前記キャッシュが前記低電力モードを抜け出るための前記レイテンシを計算するための前記手段が、
前記複数のサンプリング期間の間に取り出されたキャッシュラインの前記平均数に、前記キャッシュが各キャッシュラインを取り出すために必要とされる時間を掛けるための手段
をさらに備える、請求項15に記載のシステム。
【請求項１８】
前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの数を決定するための前記手段が、
前記複数のサンプリング期間の間に前記キャッシュによって取り出されたキャッシュラインの前記数をカウントするための、前記キャッシュに結合された手段
をさらに備える、請求項15に記載のシステム。
【国際調査報告】
2018532174.tif 000012
2018532174.tif 000013
2018532174.tif 000014