(57)【要約】集積回路におけるアイドルフェーズ予測のための方法および装置が開示される。一実施形態では、集積回路（ＩＣ）は、アクティブ状態とアイドル状態との間隔の間でサイクル動作するように構成された機能ユニットを含む。ＩＣは、アイドル状態の複数の間隔に対するアイドル状態の持続時間の履歴を記録するように構成された予測ユニットをさらに含む。アイドル状態の持続時間の履歴に基づき、予測ユニットは、アイドル状態の次の間隔の持続時間の予測を生成するように構成されている。予測は、他の使用の中でも特に、機能ユニットを低消費電力（例えば、スリープ）状態に置くかどうかを判断するために、電力管理ユニットによって使用されてもよい。【選択図】図５
2016506576.tif 000002
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）の機能ユニットを、アクティブ状態の間隔と、アイドル状態の間隔との間でサイクル動作させることと、
前記アイドル状態の複数の間隔に対するアイドル状態の持続時間の履歴を記録することと、
前記アイドル状態の持続時間の履歴に基づき、前記アイドル状態の次の間隔の持続時間を予測することと、
を含む方法。
【請求項２】
前記アイドル状態の持続時間の履歴を複数のビン内に細分することをさらに含み、各ビンは、特定の範囲内のアイドル状態の持続時間のインスタンスのカウントを記録するように指定されている、請求項１に記載の方法。
【請求項３】
前記アイドル状態の最新のＮ個の間隔に対する前記アイドル状態の持続時間を示す情報を格納する前記複数のビンをさらに含む、請求項２に記載の方法。
【請求項４】
前記予測することは、前記アイドル状態の前記最新のＮ個の間隔に対する平均の持続時間を計算することを含む、請求項３に記載の方法。
【請求項５】
前記予測することは、前記複数のビンのうち何れのビンが、前記アイドル状態の前記最新のＮ個の間隔について最も急速に増加しているカウントを有しているかを判断することを含む、請求項３に記載の方法。
【請求項６】
閾値を下回るアイドル状態の持続時間のインスタンスを、前記複数のビンのうち第１のビンに記録することと、
前記閾値を上回るアイドル状態の持続時間のインスタンスを、前記複数のビンのうち第２のビンに記録することと、
前記アイドル状態の前記次の間隔の持続時間が前記閾値よりも大きいかまたは小さいかを、前記第１および第２のビンの何れが、指定された範囲内のアイドル状態の持続時間のインスタンスの大きい方のカウントを有しているか、に基づいて予測することと、
をさらに含む、請求項３に記載の方法。
【請求項７】
前記アクティブ状態の次の間隔の持続時間を、前記アイドル状態の持続時間の履歴に基づいて予測することをさらに含む、請求項１に記載の方法。
【請求項８】
前記次のアイドル状態の前記持続時間の予測に基づいて、低消費電力状態に移行するかどうかを判断することをさらに含む、請求項１に記載の方法。
【請求項９】
前記低消費電力状態は、前記機能ユニットから電力が除去されたスリープ状態である、請求項８に記載の方法。
【請求項１０】
前記スリープ状態に移行した後の所定の時間において前記スリープ状態を抜けることをさらに含み、
前記予測された時間は、前記アイドル状態の前記予測された持続時間に基づいている、請求項９に記載の方法。
【請求項１１】
アクティブ状態の間隔と、アイドル状態の間隔との間でサイクル動作するように構成された機能ユニットと、
前記アイドル状態の複数の間隔に対するアイドル状態の持続時間の履歴を記録するように構成された予測ユニットであって、前記アイドル状態の前記次の間隔の持続時間を、前記アイドル状態の持続時間の履歴に基づき予測するように構成された予測ユニットと、
を備える、集積回路。
【請求項１２】
前記予測ユニットは、前記アイドル状態の持続時間の履歴を複数のビンに格納するように構成された記憶ユニットを含み、各ビンは、特定の範囲内のアイドル状態の持続時間のカウントを記録するように指定されている、請求項１１に記載の集積回路。
【請求項１３】
前記記憶ユニットは、前記複数のビン内に、前記アイドル状態の最新のＮ個の間隔に対するアイドル状態の持続時間を示す情報を格納するように構成されている、請求項１２に記載の集積回路。
【請求項１４】
前記予測ユニットは、前記次のアイドル状態の持続時間を、前記アイドル状態の前記最新のＮ個の間隔の平均の持続時間に基づいて予測するように構成されている、請求項１３に記載の集積回路。
【請求項１５】
前記予測ユニットは、前記複数のビンの何れが、前記アイドル状態の前記最新のＮ個の間隔について最も急速に増加しているカウントを有しているかに基づき、前記次のアイドル状態の持続時間を予測するように構成されている、請求項１３に記載の集積回路。
【請求項１６】
前記予測ユニットは、
閾値を下回るアイドル状態の持続時間のインスタンスを、前記複数のビンのうち第１のビンに記録することと、
前記閾値を上回るアイドル状態の持続時間のインスタンスを、前記複数のビンのうち第２のビンに記録することと、
前記次のアイドル状態の持続時間が前記閾値よりも大きいかまたは小さいかを、前記第１および第２のビンの何れが、指定された範囲内のアイドル状態の持続時間のインスタンスの大きい方のカウントを有しているか、に基づいて予測することと、
を行うように構成されている、請求項１３に記載の集積回路。
【請求項１７】
前記予測ユニットは、次のアクティブ状態の持続時間を、前記アイドル状態の持続時間の履歴に基づいて予測するようにさらに構成されている、請求項１１に記載の集積回路。
【請求項１８】
前記機能ユニットを低消費電力状態に移行するかどうかを、前記次のアイドル状態の持続時間の予測に基づいて判断するように構成された電力管理ユニットをさらに含む、請求項１１に記載の集積回路。
【請求項１９】
前記低消費電力状態は、前記電力管理ユニットが電力を前記機能ユニットから除去したスリープ状態である、請求項１８に記載の集積回路。
【請求項２０】
前記電力管理ユニットは、前記機能ユニットを、前記スリープ状態に移行した後の所定の時間において前記スリープ状態から抜け出すように構成されており、前記所定の時間は、前記次のアイドル状態の持続時間の予測に基づいている、請求項１９に記載の集積回路。
【請求項２１】
システムオンチップ（ＳｏＣ）上に実装された複数のプロセッサコアであって、前記複数のプロセッサコアの各々は、アクティブ状態とアイドル状態との間隔の間でサイクル動作するように構成されている、複数のプロセッサコアと、
ＳｏＣ上に実装された予測ユニットであって、前記複数のプロセッサコアの各々に対して、アイドル状態の持続時間の対応する履歴を記録するように構成された予測ユニットであって、アイドル状態の持続時間の各々の履歴に基づき、前記複数のプロセッサコアの各々に対する前記アイドル状態の前記次の間隔の持続時間を予測するように構成された予測ユニットと、
を備える、システム。
【請求項２２】
前記予測ユニットは、前記複数のプロセッサコアの各々に対して、前記アイドル状態の持続時間の対応する履歴を複数のビン内に格納するように構成された記憶ユニットを含み、
各ビンは、特定の範囲内のアイドル状態の持続時間のカウントを記録するように指定されている、請求項２１に記載のシステム。
【請求項２３】
前記記憶ユニットは、各プロセッサコアに対する前記複数のビン内に、前記プロセッサコアに対する前記アイドル状態の最新のＮ個の間隔に対するアイドル状態の持続時間を示す情報を格納するように構成されている、請求項２２に記載のシステム。
【請求項２４】
前記予測ユニットは、所定のプロセッサコアに対して、次のアイドル状態の持続時間を、前記所定のプロセッサコアに対する前記アイドル状態の前記最新のＮ個の間隔の平均の持続時間に基づき予測するように構成されている、請求項２３に記載のシステム。
【請求項２５】
前記予測ユニットは、所定のプロセッサコアに対して、前記次のアイドル状態の持続時間を、前記所定のプロセッサコアに対する前記複数のビンの何れが、前記アイドル状態の最新のＮ個の間隔について最も急速に増加しているカウントを有しているかに基づいて、予測するように構成されている、請求項２３に記載のシステム。
【請求項２６】
前記予測ユニットは、
第１のプロセッサコアに対して、閾値を下回るアイドル状態の持続時間のインスタンスを、対応する複数のビンのうち第１のビンに記録することと、
前記第１のプロセッサコアに対して、前記閾値を上回るアイドル状態の持続時間のインスタンスを、前記対応する複数のビンのうち第２のビンに記録することと、
前記第１のプロセッサコアの次のアイドル状態の持続時間が前記閾値よりも大きいかまたは小さいかを、前記対応する第１および第２のビンの何れが、指定された範囲内のアイドル状態の持続時間のインスタンスの大きい方のカウントを有しているか、に基づいて予測することと、
を行うように構成されている、請求項２３に記載のシステム。
【請求項２７】
前記予測ユニットは、所定のプロセッサコアに対する次のアクティブ状態の持続時間を、前記所定のプロセッサコアに対する前記アイドル状態の持続時間の履歴に基づいて予測するようにさらに構成されている、請求項２１に記載のシステム。
【請求項２８】
コンピュータシステム上で実行可能なプログラムによって操作されるデータ構造を含むコンピュータ可読記憶媒体であって、前記プログラムは、前記データ構造によって記述される回路を含む集積回路を製造するためのプロセスの一部を実行するために、前記データ構造に関して動作し、前記データ構造で記述された前記回路は、
アクティブ状態の間隔と、アイドル状態の間隔との間でサイクル動作するように構成された機能ユニットと、
前記アイドル状態の複数の間隔に対するアイドル状態の持続時間の履歴を記録するように構成された予測ユニットであって、前記アイドル状態の次の間隔の持続時間を、前記アイドル状態の持続時間の履歴に基づき予測するように構成された予測ユニットと、
を含む、コンピュータ可読記憶媒体。
【請求項２９】
前記データ構造で記述された前記予測ユニットは、前記アイドル状態の持続時間の履歴を複数のビンに格納するように構成された記憶ユニットを含み、各ビンは、特定の範囲内のアイドル状態の持続時間のカウントを記録するように指定されている、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３０】
前記データ構造で記述された前記回路は、前記機能ユニットを低消費電力状態に移行するかどうかかを、前記次のアイドル状態の持続時間の予測に基づいて判断するように構成された電力管理ユニットを含む、請求項２８に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、集積回路に関し、より詳細には、集積回路の電力消費の管理に関する。
【背景技術】
【０００２】
例えば、コンピュータシステムプロセッサや様々なタイプのシステムオンチップ（ＳｏＣ）ＩＣなどの集積回路（ＩＣ）内で電力消費を管理することは、ますます重要になっている。このことは、ＩＣがアクティブに作業を実行している間だけでなく、ＩＣがアイドルの間にも当てはまる。特に、ＩＣ内の小型形状サイズのトランジスタがリーク電流を生じ、これにより、いかなる作業も実行していない機能ユニットにおいてでさえ電力消費を生じ得る。
【０００３】
ＩＣの機能ユニットがアイドル状態になると、電力管理ハードウェアまたはソフトウェアは、電力消費を低減するために様々な処置を取り得る。クロック周波数を低減したり、クロックをゲートすることによって、動的な電力消費を低減し得る。供給電圧を低減することによって、電力消費をさらに低減し得る。いくつかの場合には、機能ユニットは、アイドルの場合にパワーゲートされ得る（すなわち、そこから電力を除去させ得る）。これは、ディープスリープ状態と呼ばれ得る。
【０００４】
低消費電力状態またはスリープ状態に移行することは、様々な動作を実行することによって達成され得る。例えば、マルチプロセッサコアおよび当該コア上に実装された電力管理ユニットを有するＳｏＣを考慮する。プロセッサコアをスリープ状態に移行する際に実行される動作は、電力を失う任意のキャッシュをフラッシュすることと、位相ロックループ（ＰＬＬ）からの電力をオフにすることと、システム状態を保存することと、などを含み得る。低消費電力状態またはスリープ状態に移行すると、プロセッサコアは、コアのウェイクアップを開始させる外部割込みまたは他の動作が行われるまで、これらの状態に留まり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
集積回路におけるアイドルフェーズ予測の方法および装置が開示される。一実施形態では、方法は、アクティブ状態の間隔とアイドル状態の間隔との間で集積回路（ＩＣ）の機能ユニットをサイクル動作させることを含む。本方法は、アイドル状態の複数の間隔に対するアイドル状態の持続時間の履歴を記録することと、アイドル状態の持続時間の履歴に基づきアイドル状態の次の間隔の持続時間を予測することと、をさらに含む。
【０００６】
一実施形態では、ＩＣは、アクティブ状態の間隔とアイドル状態の間隔との間でサイクル動作するように構成された機能ユニットを含む。ＩＣは、アイドル状態の複数の間隔に対するアイドル状態の持続時間の履歴を記録するように構成された予測ユニットをさらに含む。予測ユニットは、アイドル状態の持続時間の履歴に基づきアイドル状態の次の間隔の持続時間を予測するようにさらに構成されている。
【０００７】
本開示の他の態様は、以下の詳細な記述を読み、ここで簡潔に説明する添付の図面を参照することによって、明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】集積回路（ＩＣ）の一実施形態のブロック図である。
【図２】ＩＣの一実施形態における機能ユニットの動作を示す図である。
【図３】電力管理ユニットの一実施形態と、電力管理ユニットに接続された予測ユニットの一実施形態とを示すブロック図である。
【図４】予測ユニットの様々な実施形態で使用されるビニング（ｂｉｎｎｉｎｇ）アプローチを示すためのいくつかのヒストグラムを示す図である。
【図５】平均に基づいてアイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。
【図６】最も急速に増加しているビンを判断することに基づいてアイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。
【図７】アイドル状態の持続時間の二峰性分布に基づいてアイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。
【図８】閾値によって分けられた一対のビンに基づいてアイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。
【図９】ＩＣの機能ユニットに対するアクティブ時間を予測するためにビニングアプローチを使用する方法の一実施形態を示すフロー図である。
【図１０】コンピュータ可読記憶媒体の一実施形態を示すブロック図である。
【発明を実施するための形態】
【０００９】
本明細書で開示される発明は、様々な修正および代替形式を受け入れる余地があるが、その特定の実施形態が、一例として図面に示され、本明細書で詳細に説明される。しかし、図面およびこれに対する説明は、開示された特定の形態に制限することを意図しておらず、それとは逆に、添付の請求項によって定義されるように、本開示の趣旨および範囲に含まれる全ての修正、均等物および代替手段を包含することが理解されるべきである。
【００１０】
（概要）
本開示は、ＩＣの機能ユニットに対する次のアイドル状態の持続時間を、前のアイドル状態の持続時間の履歴に基づいて予測するための様々な方法を対象とする。予測情報は、機能ユニットがある低消費電力状態（例えば、スリープ状態）に移行するのを許可するかどうかを、かかる低消費電力状態をいつ抜けるかと共に判断すること（これに限定されない）を含む、様々な目的で使用され得る。
【００１１】
例示的な実施形態では、ＩＣは、いくつかのプロセッサコアを有するシステムオンチップ（ＳｏＣ）であってよい。ＳｏＣは、プロセッサコアの活動を監視して、どのコアがアイドル状態に移行しているのかを判断するように構成された予測ユニットを含んでもよい。アイドル状態は、一般に、ＩＣの機能ユニットが作業を実行していない状態と定義され得る。プロセッサコアの場合、アイドル状態は、例えば、プロセッサコアがどの命令も実行していない状態などのように、様々な方法で定義され得る。予測ユニットは、プロセッサコアがアイドル状態である時間を測定するタイマーを含んでもよく、タイマーは、プロセッサコアがアクティブ状態で動作を再開する（例えば、命令を処理している）と、リセットされる。アイドル状態の所定の間隔が終了すると、予測ユニットは、当該間隔の持続時間を記録してもよい。予測ユニットは、アイドル状態の最新のＮ個の間隔（Ｎは１よりも大きい整数）の持続時間の履歴をビン内に細分してもよい。予測ユニットは、ビンによって示される情報を用いて、次のアイドル状態に対する持続時間の予測を生成してもよい。
【００１２】
アイドル状態の持続時間の履歴に基づいて予測を生成するために、様々なアプローチが用いられてもよい。アプローチの例としては、平均のアイドル状態の持続時間を計算して、これに基づき予測すること、最も急速に増加しているカウントを有するビンに基づいて予測すること、アイドル状態の時間の履歴分布が二峰性である場合に、２つのビンのうち大きい方に基づいて予測すること、などを含む。上述したように、かかる予測は、アイドル時間中に低消費電力状態に移行するか否かを判断するのに用いられてもよい。例えば、電力管理ユニットは、スリープ（すなわち、パワーゲートされた）状態に移行することが、予測したアイドル時間において得られる省エネルギーに基づいて、過度の性能損失という結果にならないかどうかを、アイドル状態の時間の予測を用いて判断してもよい。
【００１３】
（電力管理ユニットを有するシステムオンチップ（ＳｏＣ）およびその動作）
図１は、メモリに接続された集積回路（ＩＣ）の一実施形態のブロック図である。ＩＣ２およびメモリ６は、ディスプレイ３およびディスプレイメモリ３００と共に、この例におけるコンピュータシステム１０の少なくとも一部を構成している。図示した実施形態では、ＩＣ２は、いくつかの処理ノード１１を有するシステムオンチップ（ＳｏＣ）である。処理ノード１１は、この特定の例ではプロセッサコアであり、これにより、コア＃１、コア＃２などと指定されている。本明細書で説明する方法は、例えば、（単一コアまたはマルチコアプロセッサであってもよい）マルチプロセッサを、別個の固有のＩＣダイ上に実装するマルチプロセッサコンピュータシステムなどの他の構成にも適用され得ることに留意されたい。さらに、単一の処理ノード１１のみを有する実施形態も可能であり、検討される。
【００１４】
各処理ノード１１は、図示した実施形態ではノースブリッジ１２に接続されている。ノースブリッジ１２は、処理ノード１１の各々に対する多種多様なインタフェース機能（メモリおよび様々な周辺機器へのインタフェースを含む）を提供してもよい。また、ノースブリッジ１２は、各処理ノード１１の電力消費を管理するように構成された電力管理ユニット２０を含む。電力管理ユニット２０は、いくつかの実施形態では、ノースブリッジ１２の外部に実装されてもよいことに留意されたい。電力管理ユニット２０によって実行される電力管理機能は、処理ノード１１の活動レベルに基づいて様々な低消費電力状態に移行するかどうかの判断である。例えば、処理ノード１１がアイドルである場合には、電力管理ユニット２０は、当該処理ノード１１に供給される電圧を低減してもよいし、当該処理ノード１１に供給されるクロック信号の周波数を低減してもよい。さらに、所定の処理ノード１１が十分な期間においてアイドルである場合には、電力管理ユニット２０は、当該処理ノード１１に供給されるクロック信号および電力の両方をゲートする（すなわち、オフにする）ことによって、当該処理ノード１１をスリープ状態にしてもよい。電力管理ユニット２０は、キャッシュのフラッシュ、状態の保存などの動作を処理ノード１１が実行可能にするために、処理ノード１１に供給される電力およびクロック信号をゲートする前に、処理ノード１１に対して様々な信号を提供してもよい。
【００１５】
図示した実施形態では、ノースブリッジ１２は、電力管理ユニット２０に接続された予測ユニット２１を含む。予測ユニット２１は、各プロセッサコア１１の前のアイドル状態の履歴に関連する情報を記憶および分析するように構成されており、前のアクティブ状態の履歴に関連する情報を記憶してもよい。特に、予測ユニット２１は、各プロセッサコア１１に対して以前に生じたいくつかのアイドル状態の各々の持続時間に関する情報を記憶してもよい。予測ユニット２１は、各プロセッサコア１１に対して以前に生じたいくつかのアクティブ状態の各々の持続時間に関する情報を記憶してもよい。各プロセッサコアに対する持続時間の情報は、以下でさらに説明するように、ビン内に配置されてもよい。予測ユニット２１は、アイドル状態に対する持続時間の情報を用いて、各プロセッサコア１１ごとに次のアイドル状態の持続時間を予測してもよい。
【００１６】
電力管理ユニット２０は、予測ユニット２１によって行われた予測を用いて、プロセッサコア１１がアイドルであるという判断に応じて、プロセッサコア１１を低消費電力状態に移行するか否かを判断してもよい。本明細書で定義する低消費電力状態は、プロセッサコアに供給される電圧が最大電圧から低減した状態、クロック信号の周波数が低減した状態、クロック信号がプロセッサコアから抑制された（クロックゲートされた）状態、電力がプロセッサコアから除去された（パワーゲートされた）状態、または、上述した状態の組み合わせであってよい。クロックおよび電力の両方がプロセッサコアから除去された低消費電力状態は、スリープ状態と呼ばれ得る。
【００１７】
低消費電力状態に移行する際には、エネルギーコストおよび性能コストの観点からオーバーヘッドがあることから、電力管理ユニット２０は、予測を用いて低消費電力状態に移行することが、損益分岐点で、または損益分岐点を超えて、節電を提供し得るかどうかを判断してもよい。例えば、スリープ状態に移行することは、１つ以上のキャッシュのフラッシュ、プロセッサ状態の保存、ＰＬＬの電源オフなどが必要となる場合がある。スリープ状態から抜けると、ＰＬＬは、完全に動作する前に、ウォームアップ期間を必要とする場合がある。スリープ状態から抜けるときには、以前の状態を復元することが必要となる場合がある。スリープ状態から抜けた後に続く再開動作時には、キャッシュミスが頻繁に生じる場合がある。その結果、スリープ状態に移行すること（および、より一般的には、低消費電力状態に移行すること）は、様々なコストを被る。次のアイドル状態の持続時間が短いと予測ユニット２１が予測した場合には、低消費電力状態に移行することによって被るコストが、得られる節電の利益を上回る可能性があることから、電力管理ユニット２０は、低消費電力状態に移行するの見合わせてもよい。逆に言えば、次のアイドル状態の持続時間が長いと予測ユニット２１が予測した場合には、低消費電力／スリープ状態に移行することによって得られる節電は、その状態に移行することによって被るコストを上回ることができる。したがって、後者の場合には、電力管理ユニット２０は、コアがアイドルであって、予測されたアイドル持続時間がコストを正当化するのに十分に長いという判断に応じて、アイドルのプロセッサコア１１を低消費電力／スリープ状態に移行してもよい。
【００１８】
上述したように、予測ユニット２１は、アクティブ状態時間を予測してもよい。電力管理ユニット２０および／または影響を受けるプロセッサコア１１は、予測されたアクティブ状態の時間を用いて、性能および電力消費を最適化してもよい。例えば、所定のプロセッサコア１１が短期間だけアクティブであると予測ユニット２１が予測した場合には、アクティブ状態の当該インスタンスに対してフルキャッシュが必要とされる可能性が低くなることから、電力管理ユニット２０は、当該コア内のキャッシュの一部のみを有効にしてもよい。アクティブ状態の持続時間がより長いと予測された場合には、キャッシュの大部分が有効にされてもよい。
【００１９】
予測ユニット２１は、前のアイドル（いくつかの場合には、アクティブ）状態の持続時間に対する履歴データの保持に加えて、予測精度の履歴を保持してもよい。これは、将来の予測に関する信頼度測定基準を生成するために用いられてもよく、それに応じて、将来の予測を調整するためのフィードバックを提供してもよい。
【００２０】
様々な実施形態では、処理ノード１１の数は、わずか１つであってもよいし、ＩＣダイ上での実装に適しただけの数であってもよい。マルチコアの実施形態では、処理ノード１１は、互いに同一（すなわち、ホモジニアスマルチコア）であってもよいし、１つ以上の処理ノード１１が他と異なるもの（すなわち、ヘテロジニアスマルチコア）であってもよい。各処理ノード１１は、１つ以上の実行ユニット、キャッシュメモリ、スケジューラ、分岐予測回路などを含んでもよい。さらに、各処理ノード１１は、メモリ６へのアクセスに対する要求をアサートするように構成されてもよく、メモリ６は、コンピュータシステム１０に対するメインメモリとして機能し得る。かかる要求は、読み取り要求および／または書き込み要求を含んでもよく、最初に、ノースブリッジ１２によって各処理ノード１１から受信されてもよい。メモリ６へのアクセスに対する要求は、図示した実施形態では、メモリコントローラ１８を介してルーティングされてもよい。
【００２１】
図示した実施形態では、Ｉ／Ｏインタフェース１３は、ノースブリッジ１２に接続されている。Ｉ／Ｏインタフェース１３は、コンピュータシステム１０におけるサウスブリッジ装置として機能してもよい。いくつかの異なるタイプの周辺機器用バスが、Ｉ／Ｏインタフェース１３に接続されてもよい。この特定の例では、バスタイプは、ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＰＣＩ−Ｅｘｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ＰＣＩＥ（ＰＣＩＥｘｐｒｅｓｓ）バス、ギガビットイーサネット（登録商標）（ＧＢＥ）バスおよびユニバーサルシリアルバス（ＵＳＢ）を含む。しかし、これらのバスタイプは一例であり、他の多くのバスタイプがＩ／Ｏインタフェース１３に接続されてもよい。周辺機器は、周辺機器用バスの一部または全てに接続されてもよい。かかる周辺機器は、キーボード、マウス、プリンタ、スキャナ、ジョイスティックまたは他のタイプのゲームコントローラ、媒体記録装置、外部記憶装置、ネットワークインタフェースカードなど、を含む（が、それらに制限されない）。対応する周辺機器用バスを介してＩ／Ｏユニット１３に接続される周辺機器の少なくとも一部は、直接メモリアクセス（ＤＭＡ）を用いてメモリアクセス要求をアサートしてもよい。（読み取りおよび書き込み要求を含み得る）これらの要求は、Ｉ／Ｏインタフェース１３を介してノースブリッジ１２に伝達されてもよく、そして、メモリコントローラ１８にルーティングされてもよい。
【００２２】
図示した実施形態では、ＩＣ２は、コンピュータシステム１０のディスプレイ３に接続されているディスプレイ／ビデオエンジン１４を含む。ディスプレイ３は、フラットパネルＬＣＤ（液晶ディスプレイ）、プラズマディスプレイ、ＣＲＴ（ブラウン管）、または、任意の他の適切なディスプレイタイプであってよい。ディスプレイ／ビデオエンジン１４は、様々なビデオ処理機能を実行し、処理された情報を、視覚情報として出力するためにディスプレイ３に提供し得る。例えば３Ｄ処理、ビデオゲーム用の処理、および、さらに複雑なタイプのグラフィック処理などのいくつかのビデオ処理機能は、グラフィックスエンジン１５によって実行されてもよく、処理された情報は、ノースブリッジ１２を介してディスプレイ／ビデオエンジン１４に中継される。
【００２３】
この特定の例では、コンピュータシステム１０は、非統一メモリアーキテクチャ（ＮＵＭＡ）を実装しており、この実装では、ビデオメモリおよびＲＡＭは、互いに分離されている。図示した実施形態では、コンピュータシステム１０は、ディスプレイ／ビデオエンジン１４に接続されたディスプレイメモリ３００を含む。したがって、ビデオデータをメモリ６から受信する代わりに、ビデオデータは、ディスプレイ／ビデオエンジン１４によってディスプレイメモリ３００からアクセスされてもよい。これは、結果として、各コア１１、および、１つの周辺機器用バスを介してＩ／Ｏインタフェース１３に接続された任意の周辺機器に対して、より大きなメモリアクセス帯域幅を許容することができる。
【００２４】
図示した実施形態では、ＩＣ２は、システムクロック信号を受信するために接続された位相ロックループ（ＰＬＬ）ユニット４を含む。ＰＬＬユニット４は、対応するクロック信号を生成して各処理ノード１１に配信するように構成された、いくつかのＰＬＬを含んでもよい。この実施形態では、各処理ノード１１によって受信されるクロック信号は、互いに独立している。さらに、この実施形態のＰＬＬユニット４は、各処理ノード１１に互いに独立して提供されるクロック信号の各々の周波数を個々に制御および変更するように構成されている。以下でさらに詳細に説明するように、処理ノード１１のうち任意の所定の処理ノード１１によって受信されたクロック信号の周波数は、当該処理ノード１１に課された性能要求に応じて、増加または減少されてもよい。ＰＬＬユニット４から出力されるクロック信号の様々な周波数は、各処理ノード１１に対する異なる動作点に対応し得る。この結果、処理ノード１１のうち特定の処理ノード１１に対する動作点の変更は、処理ノード１１で受信されたクロック信号の周波数を変更することによって、実行され得る。
【００２５】
１つ以上の処理ノード１１の各々の動作点の変更が、１つ以上の処理ノード１１の各々のクロック周波数の変更を含む場合には、電力管理ユニット２０は、ＰＬＬユニット４に提供されるデジタル信号ＳｅｔＦ［Ｍ：０］の状態を変更してもよい。これらの信号における変更に応じて、ＰＬＬユニット４は、影響を受ける処理ノード（複数でもよい）のクロック周波数を変更してもよい。また、電力管理ユニット２０は、ＰＬＬユニット４に対して、処理ノード１１のうち対応する処理ノードにクロック信号を提供させないようにしてもよい。
【００２６】
図示した実施形態では、ＩＣ２は、電圧レギュレータ５も含む。他の実施形態では、電圧レギュレータ５は、ＩＣ２とは別に実装されてもよい。電圧レギュレータ５は、各処理ノード１１に供給電圧を提供し得る。いくつかの実施形態では、電圧レギュレータ５は、特定の動作点に応じて異なる（例えば、より大きな性能に対しては増加され、より大きな節電に対しては減少される）供給電圧を提供してもよい。いくつかの実施形態では、各処理ノード１１は、電源層を共有してもよい。したがって、かかる実施形態における各処理ノード１１は、処理ノード１１の他のノードと同じ電圧で動作する。別の実施形態では、電源層が共有されず、これにより、各処理ノード１１によって受信される供給電圧は、処理ノード１１の他のノードによって受信される供給電圧とは独立して、設定および調整されてもよい。したがって、非共有の電源層を有する実施形態では、供給電圧の調整を含む動作点の調整は、各処理ノード１１に、他とは独立して選択的に適用されてもよい。動作点の変更が、１つ以上の処理ノード１１に対する動作電圧の変更を含む場合には、電力管理ユニット２０は、電圧レギュレータ５に提供されるデジタル信号ＳｅｔＶ［Ｍ：０］の状態を変更してもよい。信号ＳｅｔＶ［Ｍ：０］における変更に応じて、電圧レギュレータ５は、処理ノード１１の影響を受けるものに提供される供給電圧を調整してもよい。１つの処理ノード１１から電力が除去される（すなわち、ゲートされる）インスタンスでは、電力管理ユニット２０は、ＳｅｔＶ［Ｍ：０］信号の対応する１つの状態を設定して、電圧レギュレータ５に対して、影響を受ける処理ノード１１に電力を供給させないようにしてもよい。
【００２７】
上述した様々なユニットが別個のＩＣ上で実装される実施形態が可能であり、考えられることに留意すべきである。例えば、コア１１が第１のＩＣ上で実装され、ノースブリッジ１２およびメモリコントローラ１８が別のＩＣ上に存在し、残りの機能ユニットがさらに別のＩＣ上に存在する、という一実施形態が考えられる。一般に、前述した機能ユニットは、必要なだけ、多いまたは少ない、異なるＩＣ上で、および単一のＩＣ上で、実装されてもよい。上述した説明は、ＳｏＣの特定の実施形態に焦点を合わせているが、本明細書で説明する様々な方法は、電力管理機能を実装する任意のＩＣと共に使用され得ることにさらに留意されたい。
【００２８】
図２は、上記のＩＣ２の実施形態におけるプロセッサコアの動作を示す図である。図２に示すように、プロセッサコア１１の動作は、アクティブ状態の間隔とアイドル状態の間隔との間でサイクル動作し得る。アクティブ状態での動作中、プロセッサコアは、命令を処理し、他の有用な作業を行っている。アイドル状態の場合には、プロセッサコア１１は、命令を処理しておらず、如何なる有用な作業も実行していない。アイドル状態の時間が十分な場合には、プロセッサコア１１を、低消費電力状態またはスリープ状態に置くことが有益となり得る。スリープ状態では、プロセッサコアは、パワーゲートされてもよく、すなわち、電力がプロセッサコアから除去されてもよい。通常、プロセッサコア１１は、スリープ状態では、クロックゲートされる。
【００２９】
スリープ状態への移行又はスリープ状態からの抜け出しを伴う一連の事象が図２に示されている。プロセッサコア１１をスリープ状態にするための任意の動作が実行される前に、プロセッサコア１１は、先ず、アイドルであることが判断される。図示した例では、プロセッサコア１１がアイドルであるという判断は、時間Ｔ＿検出の間、有用な作業または他の活動がプロセッサコア１１によって実行されていないのを検出することによって行われてもよい。この閾値を超えると、電力管理ユニット２０は、プロセッサコア１１がスリープ状態に移行されると判断してもよい。
【００３０】
プロセッサコア１１から電力を除去する前に、当該コア１１に実装された何れのキャッシュもフラッシュされる。キャッシュのフラッシュは、その内部に存在する任意の修正されたデータの、メインメモリおよび／または下位レベルキャッシュへのライトバックを含む。したがって、キャッシュのフラッシュは、メモリ内容の一貫性（ｃｏｈｅｒｅｎｃｙ）を維持するために実行される。いくつかの場合には、プロセッサコア１１の状態の保存（「状態保存」）も実行されてよい。プロセッサコア１１の状態の保存は、様々なレジスタの状態、様々な保持フロップ（ｒｅｔｅｎｔｉｏｎｆｌｏｐ）に記憶されたデータなどの保存を含んでもよい。この情報は、プロセッサコア１１の外部の別のメモリに保存されてよい。キャッシュフラッシュおよび状態保存動作が完了すると、プロセッサコア１１から電力が除去されて、プロセッサコア１１をスリープ状態にしてもよい。スリープ状態から抜けると、電力をプロセッサコア１１に戻した後に、保存された状態が復元されてもよい。保存された状態が復元されると、プロセッサコア１１は、アクティブ状態における動作を再開してもよい。
【００３１】
（予測ユニットおよび電力管理ユニット）
ここで図３を参照すると、予測ユニット２１の一実施形態と、電力管理ユニット２０の一実施形態とを示すブロック図が示されている。図示した実施形態では、予測ユニット２１は、様々なプロセッサコア１１から活動の指標を受信するために接続された活動モニター２１２を含む。より一般化された実施形態では、活動モニター２１２は、ＩＣ上に実装された様々な異なるタイプの機能ユニットから活動指標を受信するために接続されてもよい。この特定の実施形態に戻ると、活動モニター２１２によって監視される活動のタイプは、実行された命令、リタイアした命令、メモリ要求など（これらに制限されない）を含んでもよい。また、１つ以上のタイプの活動が活動モニター２１２によって監視されてもよい。
【００３２】
図示した実施形態における予測ユニット２１は、複数のタイマー２１３を含む（ここでは、各タイマーを包含する単一のブロックとして図示している）。活動が監視される各機能ブロックに対して、１つのタイマー２１３が含まれてもよい。各タイマー２１３は、対応するプロセッサコアから活動モニター２１２によって活動が検出されると、リセットされてもよい。リセットされた後に、所定のタイマー２１３は、最後の活動以後の時間を追跡（ｔｒａｃｋｉｎｇ）してもよい。各タイマー２１３は、対応するプロセッサコア１１において活動が最後に検出されてからの時間を報告してもよい。最後の活動以後の時間が所定のプロセッサコア１１に対するある閾値に達した後に、活動モニター２１２は、所定のコアがアイドルであると示してもよい。活動モニター２１２は、プロセッサコア１１がアイドルである時間を、コアが活動を再開するまで、対応するタイマー２１３から受信した時間値に基づいて、さらに継続して記録してもよい。
【００３３】
プロセッサコア１１が、アイドル状態にあると判断された後に活動を再開すると、活動モニター２１２は、当該コアにおけるアイドル状態の持続時間を事象記憶２１４に記憶してもよい。図示した実施形態では、事象記憶２１４は、アイドル状態時間が監視されている各プロセッサコア１１に対するアイドル状態の最新のＮ個のインスタンスの各々に対する持続時間を格納し得る。一実施形態では、事象記憶２１４は、複数の先入れ先出し（ＦＩＦＯ）メモリを、各プロセッサコア１１ごとに１つ含んでもよい。事象記憶２１４の各ＦＩＦＯは、対応するプロセッサコア１１に対するアイドル状態の最新のＮ個のインスタンスの持続時間を記憶してもよい。アイドル状態の持続時間の新しいインスタンスが所定のコアに対応するＦＩＦＯに記録される場合に、最も古いアイドル状態インスタンスに対する持続時間が上書きされてもよい。
【００３４】
ビニング記憶２１５は、事象記憶２１４に接続されており、各プロセッサコア１１に対して、アイドル状態の持続時間の分布を生成するために、アイドル状態の持続時間のカウントを対応するビンに格納してもよい。ビニング記憶２１５は、記憶された持続時間を事象記憶２１４から読み取るための論理を含んでもよく、各ビンに対するカウント値を生成してもよい。古い持続時間データが、アイドル状態の追加のインスタンスの出現を伴う新しい持続時間で上書きされる場合には、ビニング記憶２１５の論理は、ビン内のカウント値を更新してもよい。ビニング方法は、図４に関して以下でさらに説明される。
【００３５】
予測装置２１８は、ビニング記憶２１５に接続されている。予測装置２１８は、所定のプロセッサコア１１に対するアイドル状態の持続時間の分布に基づいて、次のアイドル状態の持続時間に関する予測を生成してもよい。予測を生成するために様々な方法が用いられてもよく、これらの方法は、以下にさらに詳細に説明される。
【００３６】
予測装置２１８は、アイドル状態の持続時間に対する予測に加えて、アイドル状態の持続時間の予測に基づいて低消費電力状態が終了し得る所定の時間についての指示を生成してもよい。例えば、一実施形態では、プロセッサコア１１がアイドル状態の段階において、スリープ状態にされる（すなわち、電力およびクロックの両方が当該コア１１から除去される）場合には、電力管理ユニット２０は、当該コアを、予測されたアイドル状態の持続時間に基づいて、所定の時間にスリープ状態から抜き出させてもよい。このスリープ状態から抜けることは、スリープ状態からの抜け出しを生じさせる任意の他の外部事象（例えば、周辺機器からの割込み）なしで発生してもよい。さらに、スリープ状態から抜けることは、アイドル状態の予測された持続時間が完全に経過する前に発生してもよい。アイドル状態の持続時間の予測が合理的に正確な場合には、スリープ状態から先行して抜けることは、様々な性能優位性をもたらし得る。例えば、前に記憶された状態の復元は、スリープ状態から抜ける時間と、アクティブ状態の再開との間に実行されてもよく、このようにして、プロセッサコア１１が、スリープ状態から反応的に抜けて命令を行う場合と比較して、命令の実行を迅速に開始するのを可能にする。
【００３７】
予測装置２１８によって行われた予測は、電力管理ユニット２０の判断ユニット２０５に転送されてもよい。図示した実施形態では、判断ユニット２０５は、アイドル状態の時間の予測を他の情報と共に用いて、アイドルのプロセッサコア１１を低消費電力状態に移行するかどうかを判断してもよい。また、判断ユニット２０５は、アイドルのプロセッサコアを、何れのタイプの低消費電力状態に置くかを判断してもよい。例えば、予測されたアイドル持続時間が比較的短い場合には、判断ユニット２０５は、プロセッサコア１１に供給されるクロック信号の周波数を低減すること、プロセッサコア１１に供給される電圧を低減すること、または、それらの両方によって、電力消費を低減してもよい。別の例では、予測されたアイドル持続時間が損益分岐点を超えるほど十分に長い場合には、判断ユニット２０５は、アイドルのプロセッサコア１１を、電力およびアクティブなクロック信号の何れもコアに供給されないスリープ状態にさせてもよい。プロセッサコア１１が何れの電力状態に置かれるかという判断に応じて、判断ユニット２０５は、電力状態情報（電力状態）を当該コアに提供してもよい。更新された電力状態情報を判断ユニット２０５から受信しているプロセッサコア１１は、更新された電力状態に移行することに関連した様々な動作（例えば、更新された電力状態情報が、プロセッサコア１１がスリープ状態に移行することを示している場合には、状態保存）を実行してもよい。
【００３８】
図示した実施形態における電力管理ユニット２０は、周波数制御ユニット２０１および電圧制御ユニット２０２を含む。周波数制御ユニット２０１は、各プロセッサコア１１に提供されたクロック信号の周波数を調整するための制御信号を生成するように構成されている。所定のプロセッサコア１１に提供されるクロック信号の周波数は、他のコアに提供されるクロック信号とは独立して調整されてもよい。周波数制御信号は、ＰＬＬユニット４に提供されてもよい。周波数制御信号は、クロック信号の周波数の変更に加えて、ＰＬＬユニット４に対して、選択されたプロセッサコア１１にクロック信号を提供させない（クロックゲートする）ようにしてもよい。図示した実施形態における電圧制御ユニット２０２は、各プロセッサコア１１によって受信された供給電圧を独立して調整するための制御信号であって、電圧レギュレータ５に提供される制御信号を生成するように構成されている。電圧制御信号は、所定のプロセッサコア１１に提供される供給電圧を低減するために、当該コア１１に提供される供給電圧を増加するために、または、当該コア１１が供給電圧を受信しないようにすることによって当該コア１１の電源をオフにするために、用いられてもよい。周波数制御ユニット２０１および電圧制御ユニット２０２の両方は、判断ユニット２０５によって提供される情報に基づいて、各々の制御信号を生成してもよい。
【００３９】
（持続時間データのビニング）
図４は、予測ユニットの様々な実施形態で使用されるビニングアプローチを示すためのいくつかのヒストグラムである。上述したハードウェアの様々な実施形態は、以下で説明するビニングアプローチの何れかを利用し得る。さらに、いくつかの実施形態は、ユーザー入力および動作条件などの様々な要因に基づいて、ビニングアプローチを切り替えてもよい。上述した様々な実施形態に対する代替の一部または全部がソフトウェアで実装されてもよく、したがって、本開示の範囲に含まれ得ることにさらに留意されたい。
【００４０】
各図示例の横軸は、指定された持続時間をカバーするビンに分割されている。ビンの間隔は、様々な実施形態では線形（ｌｉｎｅａｒ）または対数であってよい。いくつかの実施形態では、ビンの間隔は、前の履歴または低消費電力状態に移行するための損益分岐点などの要因に基づき、動的に調整可能であってよい。各図示例における縦軸は、アイドル持続時間のインシデント（ｉｎｃｉｄｅｎｔ）のカウントを表す。したがって、各ビン内のデータは、その特定のビンによって表される範囲に含まれるアイドル持続時間のインシデント数のカウントを表す。
【００４１】
図４の例（Ａ）では、アイドル状態の持続時間の履歴の分布は、ビン２によって表される範囲が最も多数のインシデントを有し、次にビン３が多くの数を有する。上述したような予測ユニットは、例（Ａ）に示されるデータを用いることにより、次のアイドル状態の持続時間がビン２によって表される範囲に含まれるであろう、と予測してもよい。または、予測ユニットは、例（Ａ）に示されるデータに基づき、平均のアイドル状態の持続時間を計算し、その平均を基礎として用いて、次のアイドル状態の持続時間を予測してもよい。いくつかの場合には、平均化を実行する際に、ある閾値を下回るカウントを有するビンが無視されてもよい。例えば、例（Ａ）では、ビン０およびビン４内のカウント値が閾値を下回る場合には、ビン０およびビン４は無視されてもよく、平均値は、ビン１、２および３内に存在するデータに基づき計算されてもよい。
【００４２】
例（Ｂ）では、アイドル状態の時間の分布が二峰性の場合を示している。すなわち、ビン１およびビン３の各々は、ビン０、２および４よりも著しく大きなカウントを示している。二峰性分布の場合には、予測ユニットは、次のアイドル状態の持続時間を、より大きな持続時間を表すビン（この場合にはビン３）に対応する範囲に含まれると予測してもよい。本明細書に示す例を用いると、次のアイドル状態に移行してからの持続時間が、ビン１によって表される範囲を超えて延長する場合には、最終的な持続時間は、履歴分布に基づき、ビン３によって表される範囲に含まれる可能性が高い。一般に、二峰性分布が生じる場合には、予測ユニットの一実施形態は、次のアイドル状態の持続時間の予測を、持続時間のより大きな範囲を表すビンに基づき得る。予測ユニットの他の実施形態は、二峰性分布における２つのビンの何れを、次のアイドル状態の持続時間の予測に対する基礎とすべきかを判断する際に、追加の要因を組み込み得る。
【００４３】
例（Ｃ）では、ビン２がアイドル状態の持続時間の最も高いカウントを有し、他方、ビン３が、（「増加率に基づき予測される増加」とマークを付けられた点線で表されるように）アイドル状態の持続時間が最も急速に増加しているカウントを有している。一実施形態では、予測ユニットは、事象記憶およびビニング記憶の両方を用いて、各ビンに対する増加率を判断してもよい。かかる実施形態では、予測は、最速の増加率を有するビンに基づく予測であってもよく、最速の増加率を有するビンは、いくつかの場合には、最も多いカウント値を有するビンとは異なってもよい。（Ｃ）に示す例では、予測ユニットは、次のアイドル状態の持続時間が、全体として多数のインシデントを示すビン２ではなく、最速の増加率を有するビン３によって指定された範囲内であると予測してもよい。次のアイドル状態の持続時間をこのように予測することは、より最近の履歴を重視し、これにより、動作条件の変更に対してより迅速に適応し得る。最も急速に増加しているカウント値を有するビンを判断することが有効にされている実施形態では、予測ユニットは、各ビン内のカウントに対して増加（および減少）率を追跡する能力を実装してもよい。
【００４４】
例（Ｄ）では、２つのビンだけが存在する。これら２つのビンは、閾値によって分けられており、閾値は、いくつかの実施形態では静的であり、他の実施形態では動的であってよい。２つのビンを分ける閾値は、例えばスリープ状態などの低消費電力状態に移行する純便益があるかどうかを判断するために用いられるエネルギー損益分岐点に基づいてもよい。このビニングアプローチを用いると、予測ユニットは、次のアイドル状態の持続時間が、２つのビンを分ける持続時間閾値よりも大きいかどうかに関する二値予測（ｂｉｎａｒｙｐｒｅｄｉｃｔｉｏｎ）を行い得る。さらに、予測は、どちらのビンが大きなカウント値を有しているかに基づいてもよい。この特定の例では、ビン１の方が大きなカウント値を有していることから、次のアイドル状態は、閾値を上回る持続時間を有すると予測され得る。
【００４５】
例（Ｄ）で説明したアプローチに対する代替は、例（Ｃ）で説明したアプローチを組み込み得る。すなわち、予測ユニットは、２つのビンのうちどちらが最も急速に増加しているかに基づいて、次のアイドル状態の持続時間が閾値を上回るかどうかに関して予測を行ってもよい。さらに、別の代替アプローチでは、生カウント（ｒａｗ  ｃｏｕｎｔ）および増加／減少率の両方とも考慮されてもよいが、それらの要因のうち１つが重視される。
【００４６】
一般的に言えば、ビニングの結果に基づき予測を行うための様々なアプローチの何れも、予測ユニットによって実装されてよい。さらに、これらのアプローチは、上述したアプローチ（Ｃ）および（Ｄ）の組み合せなどのように、様々な方法で組み合されてもよい。上述した様々なアプローチ、それらの様々な組み合せ、または、本明細書では説明されていないビニングを利用する他のアプローチの１つを用いて、予測ユニットは、次のアイドル状態に対する持続時間、おおよその持続時間、または、持続時間の範囲の予測を生成してもよい。電力管理ユニットは、かかる予測を用いて、電力管理動作が行われるべきかどうか、および、行われる電力管理動作のタイプを判断してもよい。
【００４７】
いくつかの実施形態では、予測ユニットは、データの分布が正確な予測の役に立たない場合には、予測を行うのを中断してもよい。例えば、アイドル状態の持続時間の分布がビンにわたって比較的均等である場合には、上述した方法の１つを用いて正確な予測がもたらされ得る可能性が低い。かかる場合には、予測ユニットは、予測を行うのを中断してもよい。
【００４８】
データの将来の分布が正確な予測を行うのにより適合する場合には、予測ユニットは、予測を行うのを再開してもよい。さらに、予測ユニットは、データの分布における変化に基づいて、予測が行われる方法を変更してもよい。例えば、データの分布が最初は例（Ａ）に示すものに類似しており、時間とともに（Ｂ）に示すような二峰性分布に移行する場合には、予測ユニットは、その予測方法を、二峰性分布について上述したものに変更してもよい。また、上述したものの様々な実施形態における予測ユニットは、前の予測の精度を追跡するように構成されてもよく、それに基づき予測方法を調整してもよい。
【００４９】
（予測方法）
図５〜図９は、次のアイドル状態に対する持続時間の予測を生成するための様々な方法を示すフロー図である。以下で説明する各方法は、上記説明したような様々な装置の実施形態によって実行され得る。いくつかの場合には、以下で説明する方法の一部または全部は、ソフトウェアによっても実行され得る。
【００５０】
図５は、平均に基づいてアイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。図示した実施形態では、方法５００は、アイドル状態の最新のＮ個の間隔に対する持続時間の情報の格納で開始する（ブロック５０５）。格納される情報は、最新のＮ個の間隔の各々の持続時間を示す情報を含んでもよい。この情報から、例えば上述したようなヒストグラムが、最新のＮ個の間隔に対するアイドル状態の持続時間の履歴分布を示すために生成され得る。ヒストグラムは、代表する範囲に含まれる持続時間を有するアイドル状態のインスタンスのカウントをそれぞれ格納しているいくつかのビンを含み得る。
【００５１】
最新のＮ個のアイドル状態の間隔の各々の持続時間に基づき、平均の持続時間が計算され得る（ブロック５１０）。平均を計算する方法は、異なっていてもよく、ヒストグラムによって示される履歴分布に少なくとも一部が基づいてもよい。例えば、平均のアイドル状態の持続時間を計算する一つ方法は、極値の持続時間データを除去して、分布の中央に焦点を合わせることを含んでもよい。
【００５２】
平均の持続時間を計算した後、予測ユニットは、次のアイドル状態の持続時間を予測し得る（ブロック５１５）。いくつかの場合、予測は、計算された平均に直接対応し得る。他の場合には、予測は、平均に直接対応しない場合がある。例えば、計算された平均が同じビンの上方の範囲であっても、予測は、所与のビンの範囲の中心に含まれ得る。
【００５３】
予測は、電力管理ユニットまたはソフトウェア電力管理ルーチンに転送され得る。例えば、ハードウェアベースの電力管理ユニットは、予測を用いて、次のアイドル状態の予測された持続時間が、低消費電力状態に移行することによるエネルギーコストおよび性能コストを正当化するのに十分大きいかどうかを判断し得る。次のアイドル状態に移行した後、電力管理ユニットは、予測を用いて行われた判断に基づき、電力管理動作を実行することもあれば、実行しないこともある。
【００５４】
予測を行った後のある時期に、その予測が行われた対応する機能ユニットが、アイドル状態に移行することになる（ブロック５２０）。アイドル状態の持続時間を追跡するためにタイマーが用いられてもよく、機能ユニットがアイドル状態を終了してアクティブ状態を再開すると、最終的な持続時間の値が記録され得る。最新のアイドル状態に対する持続時間データを記録する際に、最も古い（すなわち、最も古いアイドル状態に対する）データが置き換えられてもよい。方法５００は、次いで、ブロック５０５に戻り、アイドル状態の最新のＮ個のインスタンスに対する持続時間の情報を格納する。
【００５５】
図６は、最も急速に増加しているビンの判断に基づき、アイドル状態の持続時間を予測するための方法の一実施形態を示すフロー図である。方法６００は、アイドル状態の最新のＮ個の間隔に対する持続時間の情報を格納し（ブロック６１０）、アイドル状態の持続時間データのカウントを、特定の範囲の持続時間をそれぞれカバーするビン内に配置する（ブロック６１０）ことで開始する。最新のＮ個の間隔に対するデータのアイドル状態の持続時間のカウントがビン内に配置されてヒストグラムを形成した後、予測ユニットは、各ビン内のカウントの生のカウントデータおよび履歴データの両方に基づき、何れのビンが最も急速に増加しているカウントを有しているかを判断し得る（ブロック６１５）。予測ユニットは、次いで、何れのビンが最も急速に増加しているカウントを有しているかに基づき、次のアイドル状態の間隔の持続時間を予測し得る（ブロック６２０）。予測を行った後のある時点で、その予測が行われた対象の機能ユニットが、アイドル状態に移行することになる（ブロック６２５）。機能ユニットがアイドルであるという判断の後、タイマーは、アイドル状態の間隔の持続時間を追跡し得る。機能ユニットがアクティブ状態に再度移行すると、アイドル状態の間隔の最終的な持続時間が記録され得る。次いで、終了したばかりのアイドル状態の持続時間が格納されてもよく、最も古い持続時間データが置き換えられる（ブロック６３０）。方法は、次いで、ブロック６０５に戻る。
【００５６】
図７は、アイドル状態の持続時間の二峰性分布に基づき、アイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。方法７００は、アイドル状態の最新のＮ個の間隔に対する持続時間の情報の格納で開始する（ブロック７０５）。最新のＮ個の間隔に対する持続時間の情報が格納された後、データが、上記説明したようにビン内に配置され得る（ブロック７１０）。予測ユニットは、次いで、データを検査してその分布を判断し得る。データの分布が二峰性であると判断された場合（ブロック７１５、はい）、予測ユニットは、アイドル状態の持続時間の大きい方に対応するビンに基づいて、次のアイドル状態の持続時間を予測し得る（ブロック７２０）。分布が二峰性でない場合（ブロック７１５、いいえ）、別の予測方法が用いられてもよい（ブロック７２５）。予測を行った後に、その対象である機能ユニットが、アイドル状態に移行してもよく、その持続時間が記録され得る（ブロック７３０）。アイドル状態が終了すると、記録された持続時間が格納されてもよく、最も古い格納された持続時間データが置き換えられる（ブロック７３５）。方法は、次いで、ブロック７０５に戻る。
【００５７】
図８は、閾値によって分けられた一対のビンに基づき、アイドル状態の持続時間を予測する方法の一実施形態を示すフロー図である。方法８００は、最新のＮ個の間隔の各々に対する持続時間データの格納で開始する（ブロック８０５）。持続時間データが格納された後、データが、閾値に基づき、２つの別個のビン内に配置され得る（ブロック８１０）。第１のビンは、閾値未満の持続時間を有するアイドル状態のインシデントのカウントを含んでもよく、他方、第２のビンは、閾値を上回る持続時間を有するアイドル状態のインシデントのカウントを含んでもよい。一実施形態では、閾値は、低消費電力状態（例えば、スリープ状態）に移行するエネルギーコストおよび性能コストが正当化され得るものを上回る損益分岐点であってよい。閾値は、いくつかの実施形態では、動的に設定されてもよく、他方、他の実施形態では、静的な値であってもよい。データがビン内に配置された後、「閾値を上回る」ビンのカウントが、「閾値に満たない」ビンよりも大きいかどうかに関して判断が行われる。「閾値を上回る」ビンのカウントが大きい場合（ブロック８１５、はい）、予測は、次のアイドル状態の持続時間が損益分岐点よりも大きいであろうということになり、これにより、電力管理ユニットは、対応する機能ユニットを、アイドル状態の次の間隔中に低消費電力状態に移行させてもよい（ブロック８２０）。「閾値を上回る」ビンのカウントが「閾値に満たない」ビンに満たない場合（ブロック８１５、いいえ）には、アイドル状態の次の間隔中に低消費電力状態に移行しない。低消費電力状態に移行するか否かに関わらず、次のアイドル状態の持続時間が追跡され、その終了時に記録され（ブロック８３０）、方法がブロック８０５に戻る前に、このデータが、最も古い格納された持続時間データを置き換えてもよい（ブロック８３５）。
【００５８】
方法８００の変形が可能であり検討される。代替の実施形態では、２つのビンのカウント間の差に基づく追加の閾値が、予測において組み込まれてもよい。上述したように、両方のビンに対するカウントの合計はＮである。差の閾値が考慮される一実施形態では、予測装置は、ビンの一方のカウント値が、他のビンのカウント値をＭ（ここで、Ｍ＜Ｎ）だけ上回っているかを判断し得る。実施形態は、「閾値を上回る」ビンのカウントが「閾値に満たない」ビンのカウントをＭだけ上回る場合に、次のアイドル状態の間隔中に低消費電力状態に移行すると判断してもよく、これにより、節電よりも性能を重視する。あるいは、別の実施形態では、「閾値に満たない」ビンのカウントが、「閾値を上回る」ビンをＭ未満だけ上回るか、または、「閾値を上回る」ビンよりも実際に低い場合に、次のアイドル状態の間隔中に低消費電力状態に移行すると判断することにより、性能よりも節電を重視し得る。方法８００に関する別の変形は、２つのビンの何れの数が増加しているかの判断を組み込み得る。
【００５９】
図９は、ＩＣの機能ユニットに対するアクティブ時間を予測するためにビニングアプローチを使用する方法の一実施形態を示すフロー図である。図示した実施形態では、方法９００は、アイドル状態の最新のＮ個の間隔の各々に対する持続時間の情報の格納で開始する（ブロック９０５）。また、方法９００は、アクティブ状態の最新のＮ個の間隔の各々に対する持続時間の情報の格納を含む（ブロック９１０）。次いで、第１のヒストグラムが、アイドル状態の持続時間データに対して生成されてもよく、そして、第２のヒストグラムが、アクティブ状態の持続時間データに対して生成されてもよい。これは、上述したように、データを、個々の範囲をそれぞれカバーするビン内に配置する（ブロック９１５）ことにより達成され得る。次に、予測ユニットは、上述した様々な方法の１つ以上を用いて、次のアイドル状態の持続時間を予測してもよく、また、次のアクティブ状態の持続時間を予測してもよい（ブロック９２０）。次のアクティブ状態の持続時間の予測は、上述したものに類似した１つ以上の方法、または、本明細書では説明していない異なる方法を用いて行われてもよい。
【００６０】
方法９００は、次のアイドル状態の間隔の持続時間を記録すること（ブロック９２５）、最も古いアイドル状態の持続時間データを置き換えること（ブロック９３０）、次のアクティブ状態の持続時間を記録すること（ブロック９３５）、最も古いアクティブ状態の持続時間の情報を置き換えること（ブロック９４０）をさらに含み、ブロック９０５へ戻る。アイドル状態の持続時間の情報を記録して格納するための上述した機構の変形は、アクティブ状態の持続時間の情報を記録して格納するためにも使用され得る。
【００６１】
アクティブ状態の情報を予測することは、節電ニーズと性能ニーズとのバランスをとりながら、さらなる節電を得るために有用となり得る。例えば、次のアクティブ状態の予測された持続時間は、次のアクティブ状態の間隔中に有効にされるキャッシュメモリの量を判断するために用いられ得る。次のアクティブ状態の間隔が短い持続時間であると予測される場合には、少量のキャッシュが有効にされてもよく、他方、予測されたアクティブ状態の持続時間がさらに長い場合には、さらに大量のキャッシュが有効にされてもよい。
【００６２】
（コンピュータアクセス可能記憶媒体）
次に図１０を参照すると、システム１０を代表するデータベース３０５を含むコンピュータアクセス可能記憶媒体３００のブロック図が示されている。一般的に言えば、コンピュータアクセス可能記憶媒体３００は、命令および／またはデータをコンピュータに提供するために、使用中にコンピュータによってアクセス可能な任意の持続性（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）記憶媒体を含み得る。例えば、コンピュータアクセス可能記憶媒体３００は、磁気または光媒体などの記憶媒体（例えば、ディスク（固定または取り外し可能）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、Ｂｌｕ−Ｒａｙ（登録商標））を含んでもよい。記憶媒体は、ＲＡＭ（例えば、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭ、低電力ＤＤＲ（ＬＰＤＤＲ２など）ＳＤＲＡＭ、ラムバスＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）など）、ＲＯＭ、フラッシュメモリ、ユニバーサルシリアルバス（ＵＳＢ）インタフェースなどの周辺インタフェースを介してアクセス可能な不揮発性メモリ（例えば、フラッシュメモリ）などの、揮発性または不揮発性メモリ媒体をさらに含んでもよい。記憶媒体は、微小電気機械システム（ＭＥＭＳ）、ならびに、ネットワークおよび／または無線リンクなどの通信媒体を介してアクセス可能な記憶媒体を含んでもよい。
【００６３】
概して、コンピュータアクセス可能記憶媒体３００上で保持されるシステム１０のデータベース３０５は、プログラムによって読み取られて、システム１０を含むハードウェアを製造するために、直接的または間接的に使用可能なデータベースまたは他のデータ構造であってよい。例えば、データベース３０５は、ＶｅｒｉｌｏｇまたはＶＨＤＬなどの高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述またはレジスタ転送レベル（ＲＴＬ）記述であってよい。記述は、合成ライブラリからのゲートのリストを含むネットリストを生成するために記述を合成し得る合成ツールによって読み取られてよい。ネットリストは、システム１０を含むハードウェアの機能を表すゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクは、システム１０に対応する半導体回路または複数の回路を製造するために、様々な半導体製造ステップで使用されもよい。また、コンピュータアクセス可能記憶媒体３００上のデータベース３０５は、必要に応じて、ネットリスト（合成ライブラリの有無にかかわらず）またはデータセットであってよい。
【００６４】
コンピュータアクセス可能記憶媒体３００は、システム１０の表現を含むが、他の実施形態では、必要に応じて、ＩＣ２、任意のセットのエージェント（例えば、処理ノード１１、Ｉ／Ｏインタフェース１３、電力管理ユニット２０など）またはエージェントの一部（例えば、活動モニター２１２、予測装置２１８など）を含む、システム１０の任意の部分の表現を含んでもよい。
【００６５】
上述した開示が完全に理解されると、多数の変形および修正が当業者に明らかになるであろう。かかる変形および修正の全てが以下の請求項にて包含されると解釈されることを意図している。
【図１】
2016506576.tif 000003
【図２】
2016506576.tif 000004
【図３】
2016506576.tif 000005
【図４】
2016506576.tif 000006
【図５】
2016506576.tif 000007
【図６】
2016506576.tif 000008
【図７】
2016506576.tif 000009
【図８】
2016506576.tif 000010
【図９】
2016506576.tif 000011
【図１０】
2016506576.tif 000012
【国際調査報告】
2016506576.tif 000013
2016506576.tif 000014