(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコアと、
未来の期間における、前記複数のプロセッサコアの未来に生じる待機時間を含む前記複数のプロセッサコアの未来の活動を予測する予測メカニズムと、
前記複数のプロセッサコアの前記未来の活動に基づいてコアホッピングが効率的であるかを判断し、前記未来の期間における前記複数のプロセッサコアの前記活動に基づいて前記コアホッピングが効率的でないと判断された場合に、コアホッピングイベントを許可しないコアホッピングメカニズムと、
少なくとも熱密度条件に基づいて、前記コアホッピングイベントを生成するコアホッピングトリガ論理回路と
を備え、
前記コアホッピングイベントは、コアホッピングの実行要求を含み、
前記コアホッピングを許可しない前記コアホッピングメカニズムは、前記コアホッピングの実行要求を拒否する
装置。
【請求項２】
複数のプロセッサコアと、
未来の期間における前記複数のプロセッサコアの未来の活動を予測する予測メカニズムと、
前記複数のプロセッサコアの前記未来の活動に基づいてコアホッピングが効率的であるかを判断し、前記未来の期間における前記複数のプロセッサコアの前記活動に基づいて前記コアホッピングが効率的でないと判断された場合に、コアホッピングイベントを許可しないコアホッピングメカニズムと
を備え、
前記未来の期間における前記複数のプロセッサコアの未来の活動を予測する前記予測メカニズムは、前記未来の期間における第１待機‐ビジー状態パターンの第１存在時間を予測する装置。
【請求項３】
前記未来の期間における前記第１待機‐ビジー状態パターンは、複数の効率的コアホッピング待機‐ビジー状態パターンを統合した第１統合待機‐ビジー状態パターンを含む請求項２に記載の装置。
【請求項４】
前記未来の期間における前記複数のプロセッサコアの前記未来の活動に基づいて、コアホッピングが効率的であるかを判断する前記コアホッピングメカニズムは、
前記第１統合待機‐ビジー状態パターンの前記第１存在時間が閾値を上回る場合には、前記コアホッピングが効率的であると判断し、
前記第１統合待機‐ビジー状態パターンの前記第１存在時間が前記閾値を上回らない場合には、前記コアホッピングが効率的でないと判断する請求項３に記載の装置。
【請求項５】
前記未来の期間における前記複数のプロセッサコアの未来の活動を予測する前記予測メカニズムは、前の期間における前記複数のプロセッサコアの過去の活動を、前記未来の期間における前記複数のプロセッサコアの前記未来の活動として利用する請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記未来の期間における前記複数のプロセッサコアの未来の活動を予測する前記予測メカニズムは、ソフトウェアから要求された前記複数のプロセッサコアの要求電力状態の情報を受信し、前記ソフトウェアからの前記要求電力状態に基づいて、前記未来の期間における前記未来の活動を予測する請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記未来の期間における前記複数のプロセッサコアの前記未来の活動に基づいて、コアホッピングが効率的であるかを判断する前記コアホッピングメカニズムは、前記複数のプロセッサコアの前記未来の活動が、前記熱密度条件を緩和するようなコアホッピングが実行可能かを示しているかを判断する請求項１に記載の装置。
【請求項８】
前記複数のプロセッサコア、前記予測メカニズム及び前記コアホッピングメカニズムが、１つのマイクロプロセッサに含まれ、
前記マイクロプロセッサは、１つのメモリと接続され、
前記メモリは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ダブル・データ・レート（ＤＤＲ）ＲＡＭ、及びスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）からなる群から選択される請求項１から７のいずれか一項に記載の装置。
【請求項９】
１つのプロセッサを備える装置であって、
前記プロセッサは、
複数のコアと、
前記複数のコアに接続され、コアホッピング要求をトリガするコアホッピング論理回路と、
前記複数のコアに接続され、次の期間における前記複数のコアの待機時間を含む前記複数のコアの活動を予測する予測論理回路と、
前記コアホッピング論理回路及び前記予測論理回路に接続されるコアホッピング管理論理回路であって、前記次の期間における前記複数のコアの前記活動がコアホッピングを行うのは非効率的であると示している、と判断した場合には、前記コアホッピング要求を拒否する前記コアホッピング管理論理回路と
を有する装置。
【請求項１０】
コアホッピング要求をトリガする前記コアホッピング論理回路は、熱密度条件に基づく請求項９に記載の装置。
【請求項１１】
前記複数のコアの前記活動の前記予測論理回路による予測は、前記次の期間における可能性のある複数の活動パターンをグループ化したサブセットである統合活動パターンについての統合された予測存在時間の予測を含む請求項１０に記載の装置。
【請求項１２】
前記複数のコアは、Ｎ個のコアを含み、
可能性のある複数の活動パターンは、２Ｎ個のパターンを含み、
前記統合活動パターンは、前記２Ｎ個の活動パターンのサブセットを含み、前記サブセットは、前記熱密度条件を緩和可能である請求項１１に記載の装置。
【請求項１３】
前記次の期間における前記複数のコアの前記活動が、コアホッピングを行うのは非効率的であると示しているかの判断を行う前記コアホッピング管理論理回路は、前記熱密度条件を緩和可能な前記２Ｎ個の活動パターンの前記サブセットの前記予測存在時間が、閾値存在時間を越えないかを判断する請求項１２に記載の装置。
【請求項１４】
前記コアホッピング管理論理回路は、
前記コアホッピング管理論理回路が、前記次の期間における前記複数のコアの前記活動が、コアホッピングを行うのは効率的であると示していると判断した場合に、前記コアホッピング要求に応答して前記熱密度条件を緩和するコアホッピングを開始し、
前記コアホッピング管理論理回路による前記次の期間における前記複数のコアの前記活動が、コアホッピングを行うのは効率的であると示しているとの判断は、前記熱密度条件を緩和可能な前記２Ｎ個の活動パターンの前記サブセットの前記予測存在時間が、前記閾値存在時間を越えると判断することを含む請求項１３に記載の装置。
【請求項１５】
前記コアホッピング要求に応答して、前記熱密度条件を緩和するコアホッピングを開始する前記コアホッピング管理論理回路は、
前記熱密度条件を緩和する最適な活動パターンを判断し、前記最適な活動パターンを得るコアホッピングを少なくとも開始する請求項１３に記載の装置。
【請求項１６】
前記複数のコア、前記コアホッピング論理回路、前記予測論理回路及び前記コアホッピング管理論理回路が、１つのマイクロプロセッサに含まれ、
前記マイクロプロセッサは、１つのメモリと接続され、
前記メモリは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ダブル・データ・レート（ＤＤＲ）ＲＡＭ、及びスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）からなる群から選択される請求項９から１５のいずれか一項に記載の装置。
【請求項１７】
１つのプロセッサ上の複数のコアについて、未来の期間における待機‐アクティブ状態の表現の予測存在時間を予測する段階と、
コアホッピング要求を受信する段階と、
前記未来の期間における前記複数のコアについての前記待機‐アクティブ状態の表現の前記予測存在時間が、予め定められた存在時間閾値よりも長いかを判断する段階と、
前記未来の期間における前記待機‐アクティブ状態の表現の前記予測存在時間が、前記存在時間閾値よりも長いと判断された場合には、前記コアホッピング要求に応答してコアホッピングを実行する段階と、
前記未来の期間における前記待機‐アクティブ状態の表現の前記予測存在時間が、前記存在時間閾値よりも長くないと判断された場合には、前記コアホッピング要求に応答してコアホッピングを拒否する段階とを備える方法。
【請求項１８】
前記待機‐アクティブ状態の表現は、可能性のある複数の待機‐アクティブ状態パターンの全数のうちの、第１の数の待機‐アクティブ状態パターンを統合した第１の統合を含み、前記第１の数の待機‐アクティブ状態パターンは、コアホッピングを行うのが効率的であると判断される請求項１７に記載の方法。
【請求項１９】
コアホッピングを行うのが効率的であると判断される前記第１の数の待機‐アクティブ状態パターンは、前記コアホッピングを行うことによる熱密度改善の利益と、前記コアホッピングを行うことによる時間的損失とを比較検討するポリシーに基づいている請求項１８に記載の方法。
【請求項２０】
前記コアホッピングを行うことによる前記熱密度改善の利益と、前記コアホッピングを行うことによる前記時間的損失とを比較検討する前記ポリシーは、
前記可能性のある待機‐アクティブ状態パターンの全数を、
コアホッピングの実行可能性に関連付けられた前記第１の数の待機‐アクティブ状態パターン、
前記全数の待機‐アクティブ状態パターンのうち、最低限の熱密度改善の利益に関連付けられた第２の数の待機‐アクティブ状態パターン、及び
前記全数の待機‐アクティブ状態パターンのうち、コアホッピングの実行不可能性に関連付けられた第３の数の待機‐アクティブ状態パターンと
にグループ化するポリシーを含む請求項１９に記載の方法。
【請求項２１】
熱密度条件に応じて、前記コアホッピング要求を生成する段階をさらに備える請求項１７から２０のいずれか一項に記載の方法。
【請求項２２】
前記存在時間閾値は、カーネル又はＯＳによって動的に調整可能である請求項１７から２１のいずれか一項に記載の方法。
【請求項２３】
請求項１７から２２のいずれか一項に記載の前記方法をコンピュータの前記プロセッサに実行させるプログラム。
【請求項２４】
複数のコアと、
電力メカニズムと
を備え
前記複数のコアの未来の活動を予測する前記電力メカニズムは、前記複数のコアに接続され、前記複数のコアのうちの１つのコアから要求電力状態へと入るための要求を受信し、予測電力状態を予測し、
前記電力メカニズムの前記予測電力状態の予測について判断された予測精度が予め定められた精度閾値を超える場合には、前記コアについて前記予測電力状態にし、
前記電力メカニズムの前記予測精度が前記精度閾値を超えない場合には、前記コアについて前記要求電力状態にする、装置。
【請求項２５】
前記予測電力状態を予測する前記電力メカニズムは、１つの期間において測定された測定待機継続時間に基づいて、前記予測電力状態を予測する請求項２４に記載の装置。
【請求項２６】
前記期間において測定された測定待機継続時間に基づいて前記予測電力状態を予測する前記電力メカニズムは、
前記期間における前記測定待機継続時間が、予め定められた損益分岐継続時間を越える場合には、予測待機継続時間を増加させ、
前記期間における前記測定待機継続時間が、前記損益分岐継続時間を越えない場合には、前記予測待機継続時間を減少させる請求項２５に記載の装置。
【請求項２７】
前記電力メカニズムは、
前記期間における前記測定待機継続時間が前記損益分岐継続時間を超え、且つ前記予測待機継続時間が長い待機継続時間に対応する場合には、前記予測精度を増加させ、
前記期間における前記測定待機継続時間が前記損益分岐継続時間を超え、且つ前記予測待機継続時間が短い待機継続時間に対応する場合には、前記予測精度を減少させ、
前記期間における前記測定待機継続時間が前記損益分岐継続時間を超えず、且つ前記予測待機継続時間が前記短い待機継続時間に対応する場合には、前記予測精度を増加させ、
前記期間における前記測定待機継続時間が前記損益分岐継続時間を超えず、且つ前記予測待機継続時間が前記長い待機継続時間に対応する場合には、前記予測精度を減少させ、
前記電力メカニズムの前記予測精度を判断する請求項２６に記載の装置。
【請求項２８】
前記複数のコア及び前記電力メカニズムが、１つのマイクロプロセッサに含まれ、
前記マイクロプロセッサは、１つのメモリと接続され、
前記メモリは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ダブル・データ・レート（ＤＤＲ）ＲＡＭ、及びスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）からなる群から選択される請求項２７に記載の装置。
【請求項２９】
複数のコアと、
前記複数のコアのうちの１つのコアと接続され、前記複数のコアのうちの１つのコアの１つの期間における待機継続時間に少なくとも基づいて、予測低電力状態を予測する予測論理回路と、
前記待機継続時間の測定結果に応じて、前記予測論理回路の予測精度を更新する予測精度論理回路と、
前記予測論理回路に接続され、ソフトウェアから要求低電力状態の要求を受信し、前記予測論理回路から前記予測低電力状態が提供される電力管理論理回路と
を備え、
前記電力管理論理回路は、
前記予測精度が予め定められた閾値精度よりも高い場合には、前記コアについて前記予測低電力状態を選択し、
前記予測精度が前記閾値精度よりも高くない場合には、前記コアについて前記要求低電力状態を選択する装置。
【請求項３０】
１つのコアの待機継続時間に少なくとも基づいて、予測低電力状態を予測する前記予測論理回路は、
前記期間における前記コアの前記待機継続時間を測定する待機継続時間論理回路と、
前記待機継続時間論理回路と接続される損益分岐論理回路であって、前記待機継続時間が予め定められた損益分岐継続時間を超える場合には、前記待機継続時間は長い継続時間であると判断し、前記待機継続時間が損益分岐継続時間を超えない場合には、前記待機継続時間は短い継続時間であると判断する損益分岐論理回路と、
前記損益分岐論理回路と接続され、前記待機継続時間が前記損益分岐継続時間を超える場合には前記待機継続時間が長い継続時間であると判断し、前記待機継続時間が前記損益分岐継続時間を超えない場合には前記待機継続時間は短い継続時間であると判断する前記損益分岐論理回路に基づいて、前記予測低電力状態を更新する予測状態論理回路とを有する請求項２９に記載の装置。
【請求項３１】
前記待機継続時間論理回路は、前記期間において前記コアの前記待機継続時間をカウントするカウント論理回路を含み、
前記損益分岐論理回路は、前記待機継続時間と前記損益分岐継続時間とを比較する比較論理回路を含む請求項３０に記載の装置。
【請求項３２】
前記予測状態論理回路は、
前記損益分岐論理回路が、前記待機継続時間が長い継続時間であると判断した場合には、より長い予測待機継続時間の予測待機状態へと遷移し、前記損益分岐論理回路が、前記待機継続時間が短い継続時間であると判断した場合には、より短い予測待機継続時間の予測待機状態へと遷移する状態機械と、
前記より長い予測待機継続時間の予測待機状態又は前記より短い予測待機継続時間の予測待機状態に基づいて、前記予測低電力状態の表現を記憶する記憶素子とを含む請求項３１に記載の装置。
【請求項３３】
前記予測論理回路の予測精度を更新する前記予測精度論理回路は、
前記期間を含む全期間数をカウントする期間論理回路と、
前記損益分岐論理回路及び前記予測状態論理回路に接続される精度判断論理回路であって、前記全期間数について前記予測状態論理回路によって過去に予測された予測低電力状態に基づき、前記全期間数について長い継続時間なのか短い継続時間なのかを判断する前記損益分岐論理回路の判断と組み合わせて、前記全期間数のうち前記予測論理回路の予測が正確であった期間の数をカウントする精度判断論理回路と、
前記全期間数のうちの前記予測が正確であった期間の数に基づいて、前記予測精度を判断する精度論理回路とを含み、
前記予測待機継続時間が閾値よりも長く、実際の測定された待機継続時間も損益分岐閾値よりも長い場合、または、前記予測待機継続時間が閾値よりも短く、実際の測定された待機継続時間も損益分岐閾値よりも短い場合に、前記予測が正確であったと判断する
請求項３２に記載の装置。
【請求項３４】
前記期間論理回路は、
前記全期間数をカウントするカウント論理回路を含み、
前記精度論理回路は、前記正確な期間の数を前記全期間数で割って前記予測精度を判断する演算論理回路を含む請求項３３に記載の装置。
【請求項３５】
前記精度判断論理回路は、
前記全期間数の、過去の予測低電力状態の表現と、前記全期間数における長い継続時間又は短い継続時間の対応する表現とを比較する比較論理回路と、
前記全期間数における前記正確な期間の数をカウントするカウント論理回路とを含む請求項３４に記載の装置。
【請求項３６】
前記複数のコア、前記予測論理回路、前記予測精度論理回路、及び前記電力管理論理回路が、１つのマイクロプロセッサに含まれ、
前記マイクロプロセッサは、１つのメモリと接続され、
前記メモリは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ダブル・データ・レート（ＤＤＲ）ＲＡＭ、及びスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）からなる群から選択される請求項２９から３５のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの実行の分野に関し、特に、プロセッサ動作の最適化に関する。
【背景技術】
【０００２】
半導体プロセス及び論理設計の技術の発展に伴い、より多くの数の論理回路を集積回路デバイスに組み込むことができるようになってきた。その結果、コンピュータシステム構成は、１つのシステムに１つのＩＣ又は複数のＩＣが設けられていた構成から、複数のプロセッサダイ、複数のコア、複数のハードウェアスレッド及び複数の論理プロセッサが個々のＩＣに搭載される構成へと進化を遂げた。典型的なプロセッサ又はＩＣは、１つの物理プロセッサダイを含み、プロセッサダイは、１つ以上のコア、ハードウェアスレッド又は論理プロセッサを含む。
【０００３】
コア、ハードウェアスレッド及び論理プロセッサといったプロセッサの構成要素が数多くＩＣに設けられるようになり、より多くのタスクを平行して処理できるようになった。しかしながら、当然の結果として、処理能力が向上するにしたがって、熱密度及び電力漏れの問題も大きくなる。そこで、複数のコアを持つプロセッサは、少なくとも１つのコア構造の状態／コンテキストから他のコアへ移動するコアホッピングという放熱技術を採用している場合がある。しかしながら、全コンテキストをあるコアから他のコアへと移動させるのは、実行サイクルを無駄にし、移動及びコールドキャッシュにエネルギーを消費してしまうコストの掛かるプロセスである。それにも関わらず、現在のところ、最初のコアホッピングを行った状態から、いつ次のコアホッピングを行うか熱密度に基づいての知的判定は行われていない。その結果、例えば、熱密度が自然に緩和されていくような状況又は実行不能な状況といったコアホッピングを必要としない状況でも、コアホッピングが開始されてしまう場合があり、このような状況でコアホッピングを実施したとしても、熱の状態に変化がないか又は悪化させてしまう場合がある。このように、熱条件によってコアホッピングがトリガされるにも関わらず、コアホッピングを行わないほうがよい場合がある。
【０００４】
プロセッサの熱及び消費電力に関する問題が増大するにつれ、低電力状態を賢く利用する技術が重要となってくる。現在、優先されるべきレベルのソフトウェアであるオペレーティングシステム（ＯＳ）では、低電力状態への遷移要求は、正確に行われていない。その結果、以前のソフトウェアが、コアに、消費電力は低くなるがコアが待機状態となる時間と比較した場合に動作時間が短くなってしまう深すぎる低電力状態、又は動作時間よりも待機時間が長い場合において消費電力が高くなってしまう浅い低電力状態のいずれかである特定の低電力状態を要求してしまう場合があった。
【０００５】
以下、本発明を説明するが、本発明を例示的に説明するものであり、添付の図面によって本発明は限定されない。
【図面の簡単な説明】
【０００６】
【図１】複数のプロセッシング素子を含むプロセッサの一実施形態を示す図である。
【図２】複数のプロセッシング素子を含むプロセッサの他の実施形態を示す図である。
【図３】非効率なコアホッピングを回避するメカニズムの一実施形態を示す図である。
【図４】未来の活動を予測する図３の予測メカニズムの一実施形態を示す図である。
【図５】未来の活動の予測のために、待機‐アクティブ状態パターンの存在時間を使用した実施形態を示す図である。
【図６】非効率なコアホッピングを回避する方法のフローチャートである。
【図７】ハードウェア補助低電力選択を提供する一実施形態を示したものである。
【図８】ハードウェア補助低電力状態選択の他の実施形態を示したものである。
【図９ａ】ハードウェア補助低電力状態選択を提供する方法の実施形態を表したフローチャートである。
【図９ｂ】図８の予測待機状態機械についての状態機械の実施形態を示したものである。
【発明を実施するための形態】
【０００７】
以下、待機状態予測、待機継続時間測定、測定精度、特定のプロセッサ構成、特定のコアホッピング条件、特定の低電力状態、特定のプロセッサユニット／論理、処理要素の特定の例等についての特定のハードウェア構造／メカニズムの例を含め様々な特定の詳細事項が記載されるが、これらは、本発明の深い理解を提供するためのものである。しかしながら、これらの特定の詳細事項を採用しなくとも、本発明を実行可能であることは、当業者にとって明らかである。また、特定の代替マルチコア及びマルチスレッドプロセッサアーキテクチャ、例示したモジュール／ブロックに対する特定の論理回路、及びマイクロプロセッサの特定の動作の詳細等、よく知られている要素又は方法については、本発明を不明瞭にすることを防ぐため、記載を省略する。
【０００８】
本明細書に記載する方法及び装置は、非効率なコアホッピングの回避及びプロセッサにおけるハードウェア補助の低電力状態選択を提供する。特に、これらの最適化については、特に、プロセッサにおけるコアの予測の未来の活動／非活動状態に基づくホッピング及び電力状態選択を参照して説明する。図２は、複数のプロセッサコア間の通信のための環状の配置を示しており、ある実施形態で可能性のあるオンプロセッサコア構成を例示するためのものである。しかしながら、本明細書に記載される装置及び方法はこれに限定されることなく、ＩＣの別の部分においてコアホッピング又は電力状態選択の技術を利用することにより、あらゆるＩＣに実装することが可能である。
【０００９】
[マルチコアプロセッサの実施形態]
図１は、マルチコアの実施形態を示したものである。ある実施形態において、プロセッサ１００は、複数のコア間のコンテキストを移動させるための図示しないコアホッピングハードウェアを含む。他の実施形態では、プロセッサ１００は、複数のコアをそれぞれ低電力状態にする図示しない電力ハードウェアを含む。プロセッサ１００は、どのようなプロセッサであってもよく、例えば、マイクロプロセッサ、組み込みプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、ネットワークプロセッサ、又はコードを実行する他のデバイスであってもよい。図に示すように、プロセッサ１００は、複数の処理要素を含む。
【００１０】
ある実施形態では、処理要素とは、スレッドユニット、スレッドスロット、プロセスユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び／若しくは実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能な他の要素のことを指す。すなわち、ある実施形態では、処理要素は、ソフトウェアスレッドのようなコード、ＯＳ、アプリケーション又はその他のコードに独立して関連付け可能なあらゆるハードウェア指す。物理的プロセッサとは、典型的には、コア又はスレッド等の他の処理要素を１以上含む集積回路（ＩＣ）のことを指す。
【００１１】
コアとは、多くの場合、少なくとも幾つかの専用実行リソースと関連付けられたアーキテクチャの状態がそれぞれ独立して保持される独立アーキテクチャ状態を保持可能なＩＣに位置する論理を指す。一方、ハードウェアスレッドとは、典型的には、独立して保持されている複数のアーキテクチャ状態が実行リソースへのアクセスを共有する独立アーキテクチャ状態を保持可能であってＩＣに位置する論理を指す。このように、あるリソースは共有され、他のリソースは１つのアーキテクチャ状態に占有されている場合には、ハードウェアスレッド及びコアという命名の境界線が重複することとなる。しかしながら、やはりコアとハードウェアとは、ＯＳから見れば個々の論理プロセッサであり、ＯＳは、各論理プロセッサに対して独立してオペレーションをスケジュールすることができる。
【００１２】
図１に示すように、物理プロセッサ１００は、２つのコア、コア１０１及びコア１０２を含む。ここで、プロセッサの一部における熱条件を緩和するために、コアホッピングを利用してもよい。コア１０１からコア１０２へとコアホッピングを行う場合、コアホッピングによるコストが発生するにも関わらず、コア１０１で存在していた熱状態と同じ熱状態がコア１０２で作り出されてしまう可能性がある。ある実施形態では、プロセッサ１００は、コアホッピングを利用する１以上のコアを含む。さらに、プロセッサ１００に含まれる電力管理ハードウェアは、電力節約のために、個々のユニット及び／又はコアを、低電力状態にすることが可能であってもよい。ある実施形態では、プロセッサ１００は、プロセッサ１００の複数の処理要素、及び可能性として以下に詳細に記載し例示する個々のモジュール／ユニットが、低電力状態を選択するのを補助するハードウェアを提供する。
【００１３】
プロセッサ１００は、非対称なコア、すなわち、異なる構成、機能ユニット及び／又は論理を持ったコアを含んでもよいし、例示したような対称なコアを含んでもよい。コア１０２は、コア１０１と同様な構成を持つため、説明の重複を避け、以下にはその構成を詳細に記載しない。コア１０１は、２つのハードウェアスレッド１０１ａ及び１０１ｂを含み、コア１０２は、２つのハードウェアスレッド１０２ａ及び１０２ｂを含む。したがって、ＯＳのようなソフトウェア実体は、プロセッサ１００を４つの別個のプロセッサとして見なすこともでき、すなわち、４つのソフトウェアスレッドを並列に実行可能な４つのプロセッサ又は処理要素として見なすことができる。ある実施形態では、テキストのホッピングとは、コアホッピングを指すが、別の実施形態では、コアホッピングと連動して又はコアホッピングとは別々に、スレッドホッピングを実行してもよい。
【００１４】
第１のスレッドは、複数のアーキテクチャ状態レジスタ１０１ａと関連付けられており、第２のスレッドは、複数のアーキテクチャ状態レジスタ１０１ｂと関連付けられており、第３のスレッドは、複数のアーキテクチャ状態レジスタ１０２ａと関連付けられており、第４のスレッドは、複数のアーキテクチャ状態レジスタ１０２ｂと関連付けられている。図に示すように、複数のアーキテクチャ状態レジスタ１０１ａは、複数のアーキテクチャ状態１０１ｂに複製されており、個々のアーキテクチャ状態／コンテキストは、論理プロセッサ１０１ａ及び論理プロセッサ１０１ｂに記憶可能である。命令ポインタ及びリネーム割り当て論理１３０におけるリネーム論理のようなその他の小さなリソースも、スレッド１０１ａ及びスレッド１０１ｂについて複製されていてもよい。並べ替え（ｒｅ‐ｏｒｄｅｒ）／リタイアメントユニット１３５における並び換えバッファ、ＩＬＴＢ１２０、読み出し／記憶バッファ及びキューのようなリソースは、領域割り当てを通じて共有されていてもよい。汎用内部レジスタ、ページ‐テーブルベースレジスタ、下位層データキャッシュ及びデータ‐ＴＬＢ１１５、１以上の実行ユニット１４０、及びアウト・オブ・オーダーユニット１３５のような他のリソースについては、完全に共有されていてもよい。
【００１５】
プロセッサ１００は、多くの場合、完全に共有されている、領域割り当てを通じて共有されている、若しくは処理要素について占有の又は占有されている複数の他のリソースを含む。図１には、例示的な１つのプロセッサの複数の論理ユニット／リソースを持つプロセッサの例が示されている。例示されている複数の機能ユニットのうち、幾つかを含んでもよいし、又は省略してもよく、図示しない他の既知の機能ユニット、論理又はファームウェアを含んでもよい。図に示すように、プロセッサ１００は、実行される／選択される分岐先を予測する分岐先バッファ（Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ｂｕｆｆｅｒ：ＢＴＢ）１２０、及び命令についてのアドレス変換エントリを記憶する命令変換バッファ（Ｉ‐ＴＬＢ）１２０を含む。
【００１６】
プロセッサ１００は、ユニット１２０に接続されてそこからフェッチを行い、フェッチした要素をデコードするデコードモジュール１２５をさらに含む。ある実施形態では、プロセッサ１００は、プロセッサ１００で実行可能な命令を規定／特定する命令セットアーキテクチャ（ＩＳＡ）と関連付けられている。ＩＳＡによって認識される機械コード命令は、一般的に、実行すべき命令又はオペレーションを参照する／特定する命令コード（ｏｐｃｏｄｅ）と呼ばれる命令の一部を含む。
【００１７】
１つの例では、割り当て及びリネームブロック１３０は、命令処理結果を記憶するレジスタファイルのようなリソースをリザーブする割り当て部を含む。スレッド１０１ａ及び１０１ｂは、アウト・オブ・オーダー実行を行う能力を備え、割り当て及びリネームブロック１３０は、命令結果を追跡する記録バッファのような他のリソースをリザーブする。ユニット１３０は、プログラム／命令参照レジスタを、プロセッサ１００の他の内部レジスタにリネームするレジスタリネーマーを含んでもよい。並べ替え／リタイアメントユニット１３５は、アウト・オブ・オーダー実行及びアウト・オブ・オーダーで実行される順番が最後の方の命令のリタイアメントをサポートするために、上述のような並び換えバッファ、ロードバッファ、及び記憶バッファのような要素を含んでもよい。
【００１８】
ある実施形態では、スケジューラ及び実行ユニットブロック１４０は、実行ユニットに対して命令／オペレーションをスケジューリングするスケジューラユニットを含むとしてよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットの一部にスケジュールされる。また、情報命令処理結果を記憶するために、実行ユニットに関連付けられたレジスタファイルが含まれている。実行ユニットの例としては、浮動少数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及びその他の既知の実行ユニットが挙げられる。
【００１９】
下位層データキャッシュ及びデータ変換バッファ（Ｄ‐ＴＬＢ）１５０は、実行ユニット１４０に接続されている。データキャッシュは、メモリコヒーレンシ状態で保持されているデータオペランドのような最近利用／処理されたものを、要素に記憶する。Ｄ‐ＴＬＢは、最近の仮想／線形アドレス−物理アドレス間の変換を記憶する。特別な例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を持つとしてよい。
【００２０】
図示するように、コア１０１及びコア１０２は、上位層に位置する又はより離れたところに位置し、最近フェッチされた要素をキャッシュするキャッシュ１１０へのアクセスを共有する。ここで、上位層又はより離れた位置とは、キャッシュレベルがより高い又は実行ユニットからより離れていることを指す。ある実施形態では、上位層キャッシュ１１０は、Ｌ２又はＬ３データキャッシュのような、プロセッサ１００におけるメモリ階層構造において最も最後に位置するキャッシュ、すなわちラストレベルデータキャッシュである。しかしながら、上位層キャッシュ１１０は、これに限定されることなく、命令キャッシュに関連付けられていても、命令キャッシュを含んでもよい。替わりに、命令キャッシュの一種であるトレースキャッシュを、デコーダ１２５の後に連結して、最近デコードされたトレースを記憶してもよい。
【００２１】
図示されている構成では、プロセッサ１００はまた、プロセッサ１００の外部のデバイス、例えば、システムメモリ１７５、チップセット、ノースブリッジ、又はその他のＩＣとの間で通信を行うためのバスインターフェースモジュール１０５を含む。メモリ１７５は、プロセッサ１００専用としてもよいし、システム内の他のデバイスと共有するとしてもよい。メモリ１７５の種類の一般的な例としては、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、不揮発性メモリ（ＮＶメモリ）、及びその他の既知の記憶デバイスが挙げられる。
【００２２】
図１は、異なるモジュール、ユニット及び／又は論理を表現するプロセッサの例を論理的に大まかに示したものである。本明細書に記載される方法及び装置を利用するプロセッサは、ここに例示されたユニットを全て含む必要はない。また、プロセッサは、図示されたユニットの幾つか又は全てを省略してもよい。図２を参照して、別の構成の可能性を示す。図２は、複数のコアを相互接続した環状配置を有するオンプロセッサメモリ・インターフェース・モジュール、すなわち非コアモジュールを含むプロセッサ２００の実施形態を示したものである。図に示されたプロセッサ２００は、物理的に分散されているキャッシュ、環状の相互接続、並びにコア、キャッシュ及びメモリコントローラ要素を含む。しかしながら、図に示されて構成は単なる例示に過ぎず、ここに記載される方法及び装置を実装するプロセッサは、あらゆる処理要素、あらゆる種類及び階層のキャッシュ、及び／又はメモリ、フロントサイドバス、又は外部のデバイスと通信するための他のインターフェースを含んでもよい。
【００２３】
ある実施形態では、キャッシング・エージェント２２１‐２２４はそれぞれ、物理的に分散しているキャッシュのスライスを管理する。例えば、要素２２１のような各キャッシュ要素は、並べて配置されたコア、すなわち分配されたキャッシュのスライスを管理するためにキャッシュエージェントと関連付けられているコアに対するキャッシュの一部を管理する。図に示すように、キャッシュエージェント２２１‐２２４は、キャッシュ・スライス・インターフェース論理（ＣＳＩＬ）と呼ばれ、これらは、キャッシュ要素、エージェント、又は既知の論理、ユニット、又はキャッシュ若しくはキャッシュスライスのインターフェースのためのモジュールと呼ばれる場合もある。キャッシュは、どの層のキャッシュであってもよいが、ここで例示する実施形態では、コア２０１‐２０４によって共有されるラストレベルキャッシュ（ＬＬＣ）に注目して説明する。
【００２４】
キャッシュエージェントが、環状相互接続２５０のトラフィック及びキャッシュスライスとのインターフェースを取り扱うのと同様、コアエージェント／要素２１１‐２１４はそれぞれ、トラフィック及びコア２０１‐２０４とのインターフェースを取り扱う。図に示されるように、コアエージェント２２１‐２２４は、プロセッサ・コア・インターフェース論理（ＰＣＩＬ）と呼ばれ、これらは、コア要素、エージェント、又は既知の論理、ユニット、又は処理要素とのインターフェースのためのモジュールと呼ばれる場合もある。加えて、環状配置２５０は、メモリ・コントローラー・インターフェース論理（ＭＣＩＬ）２３０及びグラフィックハブ（ＧＦＸ）２４０を含み、メモリコントローラ（ＩＭＣ）２３１及びグラフィックプロセッサ（図示せず）のような他のモジュールとインターフェースする。環状配置２５０は、上述の複数のモジュールのうちいずれを含んでもよいし、また省略してもよく、図示しない他の既知のプロセッサモジュールを含んでもよい。また、同様なモジュールを、ポイント・ツー・ポイント接続又はマルチドロップ接続のような既知の相互接続を用いて接続してもよい。
【００２５】
［非効率なコアホッピングを回避する実施形態］
ある実施形態では、図１及び図２に示したようなプロセッサ、又は図示しない他のプロセッサは、非効率なコアホッピングを回避するように構成される。図３は、非効率なコアホッピングを回避することのできるプロセッサの実施形態を示したものである。ここでは、コアホッピングは、あるコンテキスト又はアーキテクチャ状態を、コア３０２のようなあるコアから、コア３０３のような他のコアへ移動させることを指す。コアホッピングトリガメカニズム３１０は、既知のコアホップを行う条件に基づいて、コアホッピング又はコアホッピングイベントをトリガする。例えば、コアホッピングを、熱密度条件に基づいてトリガしてもよい。すなわち、プロセッサの一部、又はより具体的にはプロセッサのコアが、熱くなりすぎた時に、ある場合には、熱密度状況を緩和させる、すなわち、負荷及びそれに応じた熱を、プロセッサの他の物理位置に分散させる。
【００２６】
具体例として、コア３０１及び３０２が、プロセッサ上で並ぶように配置され、フルキャパシティで動作していると仮定すると、プロセッサの一部に非常に高い熱が発生し、熱密度条件が発生する。このような条件を示す既知の装置又は方法に基づいて、コアホッピングトリガ論理３１０は、コアホッピング要求を生成／トリガする。要求に応じて、コアホッピングメカニズム／マネージャーは、コアホッピングを実行してもよい。このシナリオでは、コアホッピングメカニズム３２０は、コア３０１における１つ以上の又は全ハードウェアスレッドコンテキストが含まれてもよいアーキテクチャ状態を、コア３０１からコア３０４のような他のコアに移行させるのを開始してもよい。その結果、プロセッサの負荷は、プロセッサ全体に渡って分散され、それに伴い熱も分散される可能性がある。
【００２７】
しかしながら、未来の活動に関するさらなる情報を考慮せずして、上述のように、現在の熱の状態の情報に基づいてのみコアホッピングを行うと、依然としてコアホッピングが非効率になってしまう可能性がある。例えば、上述の状況の場合、コア３０１が次の期間（インターバル）では、待機状態となることが予定されている場合、待機状態では大して熱が生成されないことから、熱密度条件は自然と緩和されることが考えられる。しかしながら、予測なしでは、コアホップに伴う電力及び実行時間の無駄という両方のコストが生じてしまうが、未来に生じる待機状態を予測すれば、このような無駄を回避できる場合もある。もう１つの例として、図に示した４つのコアのうち、コア３０１、３０２及び３０４という３つのコアが大きな負荷を持っている場合も、コアホッピングを行う熱密度条件を引き起こす。しかしながら、ビジー状態になるようなコアのコンテキストをコア３０３に移したとしても、コア３０３とビジー状態にある他のコアが近接していることから、熱密度条件を緩和することにはならない場合がある。
【００２８】
したがって、ある実施形態では、未来の期間について、複数のプロセッサコアの未来の活動を予測する予測メカニズム３１５が備えられている。ここで言う期間とは、時間の長さ、実行サイクルの数、又は他の時間を測定する単位を指す。例えば、期間とは、数サイクルから、数千マイクロ秒の間の範囲であってもよい。同様に、プロセッサ、コア、処理要素又は他の実行エンジンの活動を予測する既知のあらゆる方法を利用して、未来の期間又は次の期間の間のプロセッサコア３０１‐３０４の活動を予測してもよい。このような予測を一般化した例としては、前の期間における複数のプロセッサコアの過去の活動を、未来の期間における当該複数のプロセッサコアの未来の活動として利用する、ソフトウェア実体から活動のヒントを受信し、この活動のヒントに基づいて未来の活動を予測する、未来の活動の算術的又は統計的予測を実行する、未来の活動を予測するのにカルマンフィルターアルゴリズムのような予測アルゴリズムを使用する、及び過去の待機状態期間及び低電力状態期間の状況を使用して未来の活動を予測するといった予測方法が挙げられる。
【００２９】
図４は、未来のアクティブ状態の期間、及び待機状態の期間を予測する実施形態を示したものである。ある実施形態では、予測メカニズム３１５に含まれる予測部４３５が、カルマンフィルターアルゴリズムを使用してもよい。コア３０１‐３０Ｎの、動作状態又はステートＣ０と時に呼ばれるアクティブ状態、及び非動作状態又はステートＣ２‐ＣＮと時に呼ばれる低電力状態、それぞれの状態の期間の長さ、すなわち存在時間についてのデータに基づいて、予測を計算する。以下の説明では、特定の低電力状態には、ステートＣといった特定の参照名称が使用されている。待機及びアクティブ状態の存在時間は、あらゆる形態の電力状態、実行状態、グローバル状態、又は他の形態のアクティブ／非アクティブを示す情報と関連付けられていてもよい。
【００３０】
ステートＣは、多くの場合、Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ   （ＡＣＰＩ）により規定されている電力状態を指す。ＡＣＰＩによるプロセッサ又はコアの種類及び電力状態の例には、次のようなものが含まれる。Ｃ０は動作／アクティブ型のステート、Ｃ１はホルト（Ｈａｌｔ）として知られているプロセッサが命令の実行を行わないが、実質的に即時実行状態へと戻ることが可能なステート、Ｃ２はストップクロック（Ｓｔｏｐ‐Ｃｌｏｃｋ）として知られているプロセッサが全てのソフトウェアビジブル状態を維持するが、起動に長い時間が掛かるステート、Ｃ３はスリープ（Ｓｌｅｅｐ）として知られるプロセッサがキャッシュコヒーレンシを保つ必要がないが、他の状態は維持するステートを表している。プロセッサの中には、Ｃ３ステートに種類があり、それぞれプロセッサが起動するのに掛かる時間及び省電力の量が異なる、ディープスリープ（Ｃ４）、ディーパースリープ（Ｃ５）及びディープエストスリープ（Ｃ６）がある。ここに記載されるＣステートの種類の幾つかは、カリフォルニア、サンタクララに本社を置くインテルコーポレーション社製のアドバンスト・インテル（登録商標）・アーキテクチャ３２（ＩＡ‐３２）プロセッサのようなプロセッサ例についてのものであるが、本実施形態は、他のプロセッサに対しても同様に適用可能である。また、インテル（登録商標）プロセッサに対するＣステートは、ＡＣＰＩ規格に直接沿ったものになっていない場合があるが、アクティブ／非アクティブ状態のセットについての説明は、同様に適用可能である。すなわち、プロセッサは、上記のＡＣＰＩ型のＣステートの種類に対して、カスタマイズした独自のＣステートを幾つ作ってもよい。
【００３１】
上述の説明に戻り、予測部４３５が、カルマンフィルターアルゴリズムを利用して、活動監視部４３０からのデータに基づいて予測を計算すると、コアホッピング管理部４４０が、予測判断に基づいてコアホッピングを避けるべきか否かを判断することが可能となる。したがって、活動監視部４３０は、上述のように、アクティブか待機状態かの情報を判断するためのデータを監視してもよい。監視部４３０によって監視することのできるこれらの電力状態に関連付けられたデータの例としては、監視期間又は期間の間にコア３０１‐３０Ｎについての開始／終了イベントのような、電力状態開始／終了イベント、及び開始／終了イベント又は他のカウントに基づいてこのような電力状態の存在時間の計算結果が含まれる。このデータから、同じパッケージに存在するコアの重なり状態を計算する。ある実施形態では、活動監視及び予測を行う間隔は、５００マイクロ秒毎であってもよく、あるいは数実行サイクルから、数千マイクロ秒毎であってもよい。
【００３２】
上述したように、活動監視部４３０は、様々なコア３０１‐３０Ｎから、これらコアの現在の又は過去の活動レベルについてのデータを受信してもよい。ある実施形態では、活動監視部４３０は、様々な態様で配置される１つのバッファを含む。例えば、各コア３０１‐３０Ｎについて、各電力状態変更イベントに関連付けられたタイムスタンプを示す情報を格納するのにバッファを採用してもよい。この場合、活動監視部４３０は、ＣＰＵのコア３０１‐３０Ｎが、ある電力状態に入る及び電力状態を抜けるイベントを傍受及びタイムスタンプする。ある実施形態では、この記録が、カーネルバッファに格納される。そして、上述したような所定の間隔で、活動監視部４３０が監視したデータを予測部４３５に提供する。この監視データには、タイムスタンプデータ、及び格納を行う期間の間に各コアが所定の状態にどれだけ長く居たかを示す活動状態が含まれる。
【００３３】
そして、予測部４３５は、この情報を利用して、次の期間において予測されるコア状態のためのパターン分布を生成する。これに限定されないが、ある実施形態では、予測部４３５は、カルマンフィルターアルゴリズムのような所定の予測アルゴリズムを実行して、このパターン分布を生成してもよい。また、パターン分布は、サポートする電力状態の数、所定のコアの数、予測期間の長さ等に応じて、大きく異なっていてもよい。説明を簡単にするため、ここでは、３つの異なるパターンを含むパターン分布について述べる。３つの統合パターンを、図５を参照して、以下により詳細に説明する。しかしながら、本発明の範囲はこれらに限定されず、異なる実施形態では、所定の活動レベルにおけるコアの数に応じて様々な粒度を持った、３つより多い又は少ないパターンが提供されていてもよい。
【００３４】
パターン分布情報は、予測部４３５からコアホッピング管理部４４０に提供され、コアホッピング管理部４４０は、パターン分布に基づいてコアホッピング要求を許可する又は許可しなくてもよい。例えば、次の期間のための特定の統合待機‐アクティブ状態パターンが、コアホッピングを行うのが効率的であると示しているとする。この場合、コアホッピング管理部４４０は、統合パターン分布に応じて、及び／又は存在時間が、閾値存在時間を上回ったときに、コアホッピングを許可する。すなわち、コア３０１‐３０Ｎは、アクティブ‐待機状態パターンが、コアホッピングが実行可能で効率的であると見なすのに十分に長い存在時間を持つと予測された場合に、コアホッピングが許可される。効率的なパターンとは反対に、待機‐アクティブ状態パターンが、コアホッピングが実現不可能又は効率的でないと見なされると予測された場合、すなわち、効率的なパターンの存在時間が閾値を下回ると示された場合には、コアホッピング管理部４４０は、コアホッピング要求を許可しない又は拒否する。その結果、この例では、不必要な、非効率な又は実行不可能なコアホッピングは、コア３０１‐３０Ｎの未来の活動状態の予測に基づいて回避される。
【００３５】
ある実施形態では、活動を予測するのに、次の３つのパターンを計算してもよい。（１）パターンＡ：パッケージが待機状態である（内部の全てのコアが待機状態）、（２）パターンＢ：パッケージがビジー状態である（内部の全てのコアがビジー状態）、（３）パターンＣ：パッケージが部分的に待機状態である（残りの場合、すなわち少なくとも１つのコアがビジー状態であると同時に少なくとも１つのコアが待機状態である）。３番目のパターンは、待機／ビジー状態が重複しているシナリオである。上述の例の場合、コア３０１‐３０Ｎの開始／終了電源状態タイムスタンプは、活動監視部４３０によって利用可能となる。そして、これら３つのパターン分布についての予測を計算することができる。本発明の実施形態に係る予測の出力例を、以下の表１に示す。期間の長さは、５００マイクロ秒を想定している。
【００３６】
【表１】
0005460565.tif 000002
【００３７】
表１に示すように、期間Ｔ１において、待機状態パッケージパターンは、期間の２５％（すなわち、１２５秒）であると予測され、全てのコアは、期間の１５％（すなわち、７５マイクロ秒）はアクティブ状態であると予測され、次の予測期間の残りの６０％（すなわち、３００マイクロ秒）は、少なくとも１つのコアがアクティブである少なくとも１つのコアが待機状態である。異なる実施形態では、これらのパターン予測を生成する方法が異なっていてもよい。ある実施形態では、以下に説明するようなカルマンフィルターを使用して予測を行ってもよく、他の実装形態も可能である。
【００３８】
カルマンフィルターモデル（ＫＦＭ）は、ガウス雑音を前提とする線形力学と線形観察を伴う確率論的なプロセスである。このフィルターは、一連の未完成のノイズ測定から動的システムの状態を推定する、効率的で再帰的なフィルターである。カルマンフィルターモデルに基づいて、コア３０１‐３０Ｎの活動状態を、幾つかの所定のパターンで表現することができる（例えば、図５を参照して上述したような、パターンＡ、Ｂ及びＣを含む複数のパターンの存在時間／割合）。これら所定のパターンは、時間領域に離散している実数の確率論的プロセスの観測値であると考えることができ、ｙ１：ｔ＝（ｙ１・・・ｙｔ）と表される。プロセスの隠れ状態も、実数のベクトルｘ１：ｔ＝（ｘ１・・・ｘｔ）で表される。
【００３９】
カルマンフィルターモデルにおける、線形確率的差分方程式は、次のようになる。
【数１】
0005460565.tif 000003
【００４０】
そして、測定方程式は、次のようになる。
【数２】
0005460565.tif 000004
【００４１】
差分方程式である式１におけるｎ×ｎの遷移行列は、駆動関数又はプロセスノイズを使用することなく、１つ前の時間ステップｔ−１における状態を、現在のステップｔにおける状態に関連付ける。ここで、ｎは隠れ状態の数である。本実施形態における課題の場合、ｍ＝ｎが、可能性のあるＣＰＵ活動状態の数である。ｘ１｜０及びＶ１｜０は、それぞれ状態の初期平均及び初期分散であり、Ｑは、遷移動的雑音のシステム共分散であり、Ｒは観測雑音の観測共分散である。観測関数の遷移は、全時間に渡って同じであり、このモデルは、時不変又は一様であると言える。
【００４２】
現在の時間までの全ての観測値が与えられているとすると、カルマンフィルターモデルを使用して未来の時間の値を予測することができる。しかしながら、未来は一般的に不確定であり、最も有利な推測値を信頼度と共に計算することとする。可能性のある未来の観測値についての確率分布Ｐ（Ｙｔ＋ｈ＝ｙ｜ｙ１：ｔ）を計算する。ここで、ｋ＞０が境界であり、すなわち、どのくらい未来の予測を行うかを表す。
【００４３】
一連の観測された値が（ｙ１−ｙｔ）であるとすると、新たな観測値を計算するには、ｋ＞０の境界から未来におけるＰ（Ｙｔ＋ｈ＝ｙ｜ｙ１：ｔ）を完成させる。式３は、未来の隠れ状態予測を除くことにより、未来の観測値の予測計算を行っている。
【００４４】
【数３】
0005460565.tif 000005
【００４５】
式の右側の項、Ｐ（Ｘｔ＋ｈ＝ｘ｜ｙ１：ｔ）を、固定ラグ平滑化アルゴリズムにより計算する。すなわち、Ｐ（Ｘｔ−Ｌ＝ｘ｜ｙ１：ｔ）、Ｌ＞０であり、ここでＬが時間の遅れ（ラグ）である。アルゴリズムの詳細を説明する前に、カルマンフィルターモデルにおける固定ラグ平滑化について説明する。
【００４６】
固定ラグカルマン平滑化（ＦＬＫＳ）は、遡及的にデータの同化を行う方法である。与えられた現在の時間までの全ての形跡から、過去の状態を推定する、すなわち、Ｐ（Ｘｔ−Ｌ＝ｘ｜ｙ１：ｔ）、Ｌ＞０であり、ここでＬがラグである。例としては、現在のセンサの読み取り値から、Ｌ分前にパイプが破損していたか否かを推定することが挙げられる。これは、"固定ラグ平滑化"と呼ばれ、その概念は、"後知恵"といった言葉で表すことができるかもしれない。非直結型の場合、これは（固定区間）平滑化と呼ばれ、Ｐ（ＸＴ−Ｌ＝ｘ｜ｙ１：Ｔ）、Ｔ≧Ｌ≧１を計算することに対応する。
【００４７】
予測アルゴリズムでは、さらにｈ個の前方及び後方パスが存在するパスの計算は、平滑化プロセスの計算と同様である。唯一異なる点は、予測ステップでは、新たな観測の初期値がゼロである点である。すなわち、
0005460565.tif 000006
となっていることを意味する。
予測アルゴリズムは、現在の時間に
0005460565.tif 000007
を加えた時点までの全ての形跡について、遡及的にデータの同化を実施して、
0005460565.tif 000008
の値を推定する。実際には、過去のステップを以前のデータとして使用することを考え、例えば、ｈ＝１の場合には、ｙＴ＋１＝ｎｕｌｌ（ゼロ）とするのではなく、ｙＴ＋１＝（ｙＴ−１＋ｙＴ）／２とする。
【００４８】
表２は、予測アルゴリズムの擬似コードである。
【表２】
0005460565.tif 000009
【００４９】
表２において、"Ｆｗｄ"及び"Ｂａｃｋ"は、理論上の演算子である。第１のループ（ｔ＝１：Ｔ）のＦｗｄ（前方パス）オペレーションそれぞれについて、ｘｔ｜ｔ−１＝Ａｘｔ−１｜ｔ−１、Ｖｔ｜ｔ−１＝ＡＶｔ−１｜ｔ−１Ａ'＋Ｑとして、まず、推測平均及び推測分散を計算する。そして、推測値における誤差（イノベーション）誤差の分散、カルマン・ゲイン行列及びこの観測の条件付き対数尤度を、それぞれ、ｅｒｒｔ＝ｙｔ−Ｃｘｔ｜ｔ−１、Ｓｔ＝ＣＶｔ｜ｔ−１Ｃ'＋Ｒ、Ｋｔ＝Ｖｔ｜ｔ−１Ｃ'Ｓｔ-1、Ｌｔ＝ｌｏｇ（Ｎ（ｅｒｒｔ；０，Ｓｔ）として求める。最後に、ｘｔ｜ｔ＝ｘｔ｜ｔ−１＋Ｋｔｅｒｒｔ、Ｖｔ｜ｔ＝Ｖｔ｜ｔ−１−ＫｔＳｔＫｔ'として、平均及び分散の推定値を更新する。
【００５０】
第２のループ（ｔ＝Ｔ−１：−１：１）のＢａｃｋ（後方パス）オペレーションそれぞれについて、ｘｔ＋１｜ｔ＝Ａｘｔ｜ｔ、Ｖｔ＋１｜ｔ＝ＡＶｔ｜ｔＡ'＋Ｑとして推測値を計算する。次いで、平滑化ゲイン行列を
0005460565.tif 000010
として計算し、最後に、ｘｔ｜Ｔ＝ｘｔ｜ｔ＋Ｊｔ（ｘｔ＋１｜Ｔ−ｘｔ＋１|t）、Ｖｔ｜Ｔ＝Ｖｔ｜ｔ＋Ｊｔ（Ｖｔ＋１｜Ｔ−Ｖｔ＋１｜ｔ）Ｊｔ'、Ｖｔ−１，ｔ｜Ｔ＝Ｊｔ−１Ｖｔ｜Ｔとして、平均、分散及び共分散それぞれの推定値を計算する。これらは、Ｒａｕｃｈ‐Ｔｕｎｇ‐Ｓｔｒｉｅｂｅｌ（ＲＴＳ）方程式として知られている。
【００５１】
表２に示した計算は、複雑な場合がある。例えば、Ｆｗｄ演算子におけるカルマン・ゲイン行列及びＢａｃｋ演算子における平滑化ゲイン行列を計算する際には、Ｔ＋１ステップのループにおいて行列反転をしなければならない。Ｔは過去の観測値の数、Ｎは活動状態の数を表すとすると、計算の複雑度は、Ｏ（ＴＮ３）となる。これは、通常のＮ×Ｎ行列の場合、行列反転を解くためのガウス消去は、Ｏ（Ｎ３）の複雑度になるためである。しかしながら、様々な実施形態において、アルゴリズムの実装を単純化してもよい。カルマンフィルターモデルを使用して電力状態選択のために未来の活動状態を予測する方法の具体的な議論については、同時係属中の米国特許出願１１／９５５３２６号明細書、発明の名称"Ｓａｖｉｎｇ  Ｐｏｗｅｒ  ｉｎ  Ａ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ"に記載されている。
【００５２】
図５には、可能性のある活動パターン、すなわち、待機‐アクティブ状態パターン、予測された活動、未来の活動、次の期間の活動、活動表現、待機‐アクティブ状態表現などと言い換えることができる活動パターンの実施形態が示されている。ここでは、予測部４３５が、３つの統合された、待機‐アクティブ状態パターン５０１、５０２及び５０３を予測する例が示されている。この例において、論理値の１は、コアがアクティブ状態である、すなわち動作状態又はＣ０ステートであることを表し、論理値の０は、コアが待機状態、すなわち非動作状態又はＣ０ステート以外であることを表す。しかしながら、例えば、Ｃ０及びＣ１は、アクティブ状態と考えられ、Ｃ２‐Ｃ６は、待機／非アクティブ状態と考えられるといったように、電力状態についてあらゆるグループ分けを、"アクティブ"及び"待機"状態の定義内に含めることが可能である。図に示した例では、フィールド５０５ａ‐ｄの可能性のある複数の活動パターン５０５は、それぞれコア３０１‐３０４の活動に対応している。ここで、各フィールドは、次の又は未来の期間に予測されたアクティブ状態又は非アクティブ状態を表し、４つのコアに対して、１６個の待機‐アクティブ状態パターンが考えられる。単純な例を元に推定すると、Ｎ個のコアに対して２Ｎ個のパターンが存在してもよい。
【００５３】
予測部４３５を含む予測メカニズムは、未来の／次の期間の２Ｎ個のパターン全てについての存在時間を表す何らかの形式の値を予測し、図に示すように、それらの値を統合して統合パターンとしてもよい。また、２Ｎ個のパターンのサブセット（部分集合）を、統合パターンとして予測してもよい。統合パターンの予測を行う時に、各パターンの存在時間の予測も行ってもよい。また、パターンの統合は、どのような形態で行ってもよく、グループ化は、図５に示した例と異なっていてもよい。さらに、パターンの存在時間の表現方法は、どのような形式であってもよく、例えば、分布の存在時間、期間における存在時間の割合、次の期間における存在時間の時間的量、又はあるパターンが未来の帰還において発生すると予測される時間若しくは量を表す表現であってもよい。
【００５４】
図示した例では、コア３０１‐３０４についての予測された複数の活動パターンが、３つのグループ５０１、５０２、５０３に統合される。図示していないが、コアホッピングが効率的か又は許可されるべきかを判断する最も基本的な方法は、複数のパターンを、コアホッピングを行うのが効率的であると考えられる活動パターンと、コアホッピングを行うのが非効率的であると考えられる活動パターンの２つのグループに統合することである。図に示すように、この例では、統合パターン５０２は、コアホッピングを行うのが"効率的"であると判断される複数の統合されたパターンを含み、一方、統合パターン５０３及び５０１は、コアホッピングを行うのが"非効率的"であると判断される複数のパターンを含む。この例では、非効率性について境界線を引いている。パターン５０１は、コアホッピングが実行可能である、すなわち容易に実行できると考えられるがコアホッピングを行う必要がないと判断される複数のパターンを含む。より具体的には、００００又は０１０１のような、パターン５０１に統合された複数のパターンに関連付けられている熱密度状態は、コアホッピングを行って実行速度が遅くなり時間を失うという不利益と比較した場合に、コアホッピングは有益でないと考えられる。
【００５５】
例えば、コア３０１がコア３０２及びコア３０４にそれぞれ隣接するようなリング型（環状）トポロジーにコア３０１‐３０４が存在している場合を考える。現在の活動が０１０１を含む時にコア３０４に対してコアホッピングが要求された場合、コンテキストをコア３０４からコア３０３に移せば、コア３０４における熱の問題を一時的に緩和できるかもしれない。しかしながら、全体として見れば、現在は、活動パターンが、コア３０２と３０３が離れている０１０１ではなく、互いに隣接している０１１０にあることから、熱の問題は悪化すると考えられる。この場合、プロセッサパッケージ全体の熱状態が悪化するだけでなく、各コアにおける熱状態が単純に、コア３０３に移されてしまうと考えられる。しかしながら、ある実装形態では、設計者は、このパターンを効率的と考え、他の効率的なパターンと統合する場合もある。
【００５６】
一方、パターン５０３は、コアホッピングが有益であると考えられるパターンを含む。しかしながら、コアホッピングを実行することによる時間的及び実行の損失と比較した場合、実行不可能性又は実質的な熱状態の緩和が存在しないことにより、コアホッピングが、非効率となる可能性がある。例えば、パターン１１１１は、コア３０１‐３０４全てがビジー状態であることを示す。したがって、あるコアから別のコアへのホッピングは、単に１つのアクティブコアを他のコアにスイッチすることに過ぎない。また、１０１１のようなパターンは、コア３０１からコア３０２へとコンテキストをスイッチ／ホッピングしてパターン０１１１を得ようとすると、上述したように初期熱状態を悪化させてしまうことから、サブセットグループに含まれていてもよい。
【００５７】
２Ｎ個のパターンのグループ化、統合又はサブセットは、熱条件緩和の可能性とホッピング実行の実行又は時間的損失との比較検討に基づいたグループ化に限定されない。ある場合には、コアホッピングポリシーは、純粋に実行可能性にのみ基づいてグループ化を行ってもよい。この実施形態では、コアホッピングが実行可能である場合には効率的であると判断し、コアホッピングが実行不可能である場合は非効率的であると判断する。したがって、予測メカニズムは、複数の待機‐アクティブ状態パターンを統合パターンへとグループ化するどのようなポリシーを用いてもよい。また、統合は、複数のパターンのいかなるグループ化又は関連付けを含んでもよい。ある実施形態では、統合は、複数のパターンの存在時間の統合を含んでもよい。例えば、統合パターン５０２の存在時間が、例えば、７０％のようにある期間を占める割合で表されるとすると、その期間における存在時間の量に容易に変換できる（５００マイクロ秒×７０％＝３５０マイクロ秒）。これは実質的に、予測部４３５が、未来の５００マイクロ秒の期間に、統合パターン５０２を構成する複数のパターンの幾つかのバージョンが、３５０マイクロ秒又はその期間の７０％存在していることを意味する。
【００５８】
また別の例として、パターン１１００が次の期間の１０％、パターン００１１が次の期間の３０％、及びパターン１００１が次の期間の１０％存在すると予測部４３５が予測したとする。この例では、統合は、単純に個々のパターンを１０％＋２０％＋３０％＋１０％と合計して、統合の存在時間を７０％と算出する。上述したように、統合は、複数のパターン又は存在時間のあらゆるグループ化を含んでもよい。ここで、個々のパターン又は統合パターンの実際の存在時間は、予測された存在時間と比較して異なっていてもよい。しかしながら、シミュレーションの結果、予測部４３５のような予測部による予測は非常に正確であることが分かった。実際に、４つのコアプロセッサについての予測を行った一連のシミュレーションの結果では、相対誤差が僅か４．３４％であった。すなわち、予測部が、５００マイクロ秒の期間について、０１０１のようなあるパターンの存在期間が３００マイクロ秒であると予測したとすると、測定結果は、そのパターンの存在期間が、２８７マイクロ秒から３１３マイクロ秒となることを意味する。
【００５９】
ある実施形態では、ある期間の間、コアホッピングメカニズム３２０又はコアホッピング管理部４４０は、その期間における複数のプロセッサコアの未来の／予測された活動に基づいて、コアホッピングが効率的か否かを判断する。この判断の一部又は全てが、予測メカニズム３１５で行われてもよいし、他のロジックで行われてもよい。上述の例に戻り、予測部４３５が統合パターン５０１、５０２、５０３の存在時間を予測した後、コアホッピング管理部４４０は、コアホッピングが効率的かを判断する。ある実施形態では、コアホッピングが効率的であると判断する段階は、効率的なコアホッピングパターンの統合グループが、次の期間において、コアホッピングが効率的であると考えられるのに十分に長い時間存在するかを予測する段階を含んでもよい。
【００６０】
例えば、効率的なコアホッピングパターンからなる統合パターン５０２の存在時間が、例えば存在時間閾値のような、閾値を上回るか否かを判断する。閾値は、割合、時間、分布又はパターン存在時間を表すその他の値を含んでもよい。ここでは、例示のため、閾値が６０％であると仮定する。統合パターン５０２の存在時間が７０％を含む上述の例の場合、予測された効率的な待機‐アクティブ状態パターンは、閾値を超える、すなわち、閾値を超えて長い時間存在すると予測される。この場合、コアホッピングが効率的であると判断されたので、コアホッピング管理部４４０は、コアホッピングを許可する。閾値が７５％であった場合は、効率的であると見なされるパターンが、期間の間に十分長く存在しないと予測されるので、コアホッピング管理部４４０は、コアホッピングを拒否する。ある実施形態では、存在時間閾値は予め定められていてもよく、他の実施形態では、優先レベルエントリ、非優先レベルエントリ又はこれらの組み合わせにより動的に閾値を調整してもよい。
【００６１】
ある実施形態では、コアホッピング管理部４４０は、コアホッピング要求に基づいて、コアホッピングのための最適な構成を判断してもよい。例えば、コア３０４からホッピング要求を受信したのに応答して、コアホッピング管理部は、活動監視部４３０をポーリングして、現在のアクティブ‐待機状態パターンを判断してもよい、又は、期間におけるパターンの存在時間の予測を利用して、最適な構成のためのホッピングを選択してもよい。ここで、１つのパターン００１１が、次の期間で最も長い存在時間を持つと仮定する。この場合、コアホッピング要求に応答して、コアホッピング管理部は、３０４のコンテキストをコア３０２ではなくコア３０１にホッピングすべきと判断してもよい。これは、この期間に最も長く存在するパターン００１１において、互いに隣接するコア３０２及び３０３は、同時にアクティブ状態であるからである。最適な構成の判断は、１つのパターンに基づいて行うことに限られない。組み合わせや統合を利用してもよい。例えば、特定のコアがアクティブであることを示す予測された複数のパターンを組み合わせて、組み合わせた存在時間を評価することにより、最適なコアホッピングを決定してもよい。
【００６２】
コアホッピングメカニズム３２０が行う判断は、活動パターンについてでなくてもよい。ある実施形態では、コアホッピングが効率的であるかの判断を行うのに利用可能なあらゆる活動予測に対して判断を行ってもよい。図４を参照した説明以前に、そのような未来の活動予測についての幾つか例について記載されている。したがって、コアホッピングが効率的であるか判断するあらゆる既知の方法又は装置を使用してもよい。また、図示した統合パターンのサブセットグループ化の数字及び内容は、共に一例に過ぎない。
【００６３】
図６は、非効率なコアホッピングを回避する方法の一実施形態を示したものである。図６及び後に説明する図９ａに示されるフローは、実質的にシリアルなフローとして描かれているが、これらフローは、少なくとも一部パラレル又は異なる順番で実行されてもよい。また、他の実施形態では、例示したフローを省略して、他のフローを使用してもよい。例えば、次の又は未来の期間のために行う存在時間の予測を、現在より１つ前の期間の最後に行ってもよい。シミュレーションでは、予測に掛かる時間は、平均で約６．５マイクロ秒であった。したがって、期間の終了、予測の開始及びコアホッピング要求の発生は、部分的に全て同平行して起こる場合もあり得る。よって、図６及び図９ａに示されるフローの順番は、単に例示に過ぎない。
【００６４】
フロー６０５では、１つのプロセッサの複数のコアについて、未来の期間の間に、待機‐アクティブ表現が現れている存在時間が予測される。上述したように、待機‐アクティブ状態を示す表現は、処理要素活動の既知の表現であってもよい。ある例では、待機‐アクティブ状態の表現は、幾つかの効率的と判断される待機‐アクティブ状態パターンからなる第１の統合待機‐アクティブ状態パターンを含む。Ｎ個のコアの活動は、２Ｎ個のパターンで表すことができ、効率的な待機‐アクティブ状態パターンは、コアホッピングにより熱密度条件が緩和される利益と、コアホッピングを行うことによる時間的実効的コストとを比較検討するといった、プラットフォームポリシーにより効率的か否かが判断される。効率的待機‐アクティブパターンのような具体的な例が、図２の統合パターン５０２として示されている。図２に示すように、２つ以上の統合パターンを予測及び計算してもよい。ある実施形態では、可能性のある２Ｎ個のパターン全ての存在時間を予測して統合してもよいし、他の実施形態では、２Ｎ個のパターンのサブセットのみ及びその統合パターンのみ予測及び計算してもよい。
【００６５】
期間内に、コアホッピング要求が受信される。コアホッピング要求及びそれらの生成については、コアホッピング要求を回避すべきか否かの判断の説明を不明瞭にしない目的から、ここに詳細に記述しない。コアホッピング要求は、熱密度条件、負荷条件、故障条件等の既知の条件に基づいて生成してもよい。また、どのようなエントリが、コアホッピング要求を生成してもよい。例えば、コアホッピング要求は、図３に示すコアホッピングトリガ論理３１０のようなハードウェアによってトリガされてもよい。また、コアホッピング要求は、カーネル又はＯＳのような優先レベルソフトウェア実体によって生成されてもよい。また、コアホッピングトリガ論理３１０がユーザーからの要求を受信してコアホッピング要求を生成するといったように、プロセッサ設計者は、要求メカニズムをユーザーレベルコードに開放することを選択してもよい。
【００６６】
判断を行うフロー６１５では、コアホッピングが効率的である待機‐アクティブ状態の予測された存在時間が、閾値を上回るかの判断を行う。例えば、統合パターン５０２の存在時間が、存在時間閾値を上回るかが判断される。このような判断に替えて、同じ結果を導く判断の方法として、パターン５０１及びパターン５０３のようなコアホッピングが非効率的であるパターンの統合の存在時間の予測を実行してもよい。そして、その統合が、閾値を下回るか否かの判断を行う。効率的コアホッピングパターンがコアホッピングを行うのが効率的であると見なすのに十分長い時間存在するかの判断を行う替わりに、この例では、非効率的コアホッピングパターンが、コアホッピングを行うのが効率的であると見なすのに十分長い時間存在しないかの判断を行う。
【００６７】
予測閾値に対して予測存在時間を比較することを含めた判断の結果に応じて、予測された存在時間が閾値を上回る場合、すなわちコアホッピングを行う方が効率的である場合、フロー６２５において要求が許可される。一方、予測された存在時間が閾値を上回らない場合、すなわちコアホッピングを行う方が非効率的となる場合、フロー６２０において要求が拒否／回避される。コアホッピングの許可は、単純に、通常のコアホッピング論理にそのタスクを実行させるだけでもよく、例えば論理に、あるコアの状態を別のコアに移動させるだけでもよい。一方、コアホッピングの拒否は、あらゆる形式のコアホッピングをブロックする、非許可とする、拒否するオペレーション又はコアホッピングの発生を停止するその他のオペレーションであってよい。
【００６８】
［ハードウェア補助低電力状態選択の実施形態］
図７は、要求電力状態と、予測精度に基づく予測された電力状態との間の選択を行う電力メカニズムを含むプロセッサの実施形態を示している。図示されるように、電力メカニズム７１０は、複数のコア７０１‐７０４のうちのコア７０１のように１つのコアについての要求を受信し、要求電力状態にする。上述で説明したように、要求電力状態としては、あらゆる電力状態が含まれ、例えば、Ｃステート、ＡＣＰＩ電力ステート又はその他既知の電力状態が含まれてもよい。要求電力状態は、ソフトウェア要求７４１にのみ基づいて電力制御ユニットによって使用されていた。その結果、オペレーティングシステム（ＯＳ）、カーネル、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）のようなソフトウェア実体７４０は、コア７０１の電力状態を要求し、それに従った電力状態にされていた。しかしながら、上述のコアホッピングで述べたように、コア７０１の待機継続時間の予測を行わないと、コア７０１が低電力状態になることによるコスト／対価を払い、その上短時間で再び起動させなくてはならない場合が発生する。このケースでは、コア７０１は、低電力状態に移り、コア７０１がこの電力状態からウェイクするのに掛かる時間よりも短い時間、この電力状態となる場合がある。さらなる要素として、同時係属中の米国特許出願１１／９５５３２６号明細書、発明の名称"Ｓａｖｉｎｇ  Ｐｏｗｅｒ  ｉｎ  Ａ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ"には、ある一定時間コアが１つの電力状態にある場合のハードウェアによる電力状態の昇格／降格について記載されている。ハードウェアによる電力状態の昇格／降格を、ここに記載する装置及び方法と共に使用してもよい。例えば、ハードウェアは、予測待機継続時間又は予測電力状態を予測し、ソフトウェアは、予測電力状態を要求してもよい。ハードウェアが正確であれば、予測された予測電力状態が選択される。しかしながら、コアが、長過ぎる時間又は短過ぎる時間、予測電力状態にある場合、上記の同時係属中の出願明細書に記載されるように、その後に電力状態を降格／昇格させてもよい。
【００６９】
ある実施形態では、電力メカニズム７１０は、ハードウェア補助電力状態選択を提供する。最適化の可能性としては、電力状態選択は、予測精度に基づいて行ってもよく、ハードウェア予測精度が高い場合は、ハードウェアが予測した電力状態が選択される。ハードウェア予測精度が低い場合は、ソフトウェが要求した要求電力状態が選択される。したがって、ハードウェが正確に正しい電力状態、すなわち、未来の期間において最も効率的である電力状態を予測可能な場合、ハードウェアの選択が最も優先され、反対に、予測メカニズムの精度が高くない場合には、ハードウェアはソフトウェアに優先度を譲る。シミュレーションの結果、オペレーティングシステム電源管理部による電力状態選択は、３４．８％の確率で正しいものであり、ハードウェア予測のみの実施形態の場合、９２．７％の確率で正しいものであり、これらの組み合わせであり、ハードウェアの精度に基づいて行ったハードウェア補助の電力状態選択の実施形態では、９４．３％の確率で正しい電力状態が選択されていた。
【００７０】
ある実施形態では、電力メカニズム７１０は、待機継続時間又は予測電力状態を予測する予測メカニズム７２０を含む。予測メカニズムは、例えば、非常に長い、長い、短い又は非常に短い継続時間といったように待機継続時間について予測し、ハードウェア、ファームウェア又はこれらの組み合わせにより、電力状態がこれらの予測と関連付けられる。例えば、非常に長い及び長い継続時間を、最も深いスリープ状態Ｃ６と関連付け、短い及び非常に短い継続時間を、スリープ状態Ｃ３と関連付けてもよい。また、この例において、Ｃ３及びＣ６のような低電力状態を予測するという言葉は、待機継続時間を予測すると同義である。
【００７１】
ある実施形態では、予測メカニズム７２０は、測定された待機継続時間に応じて、予測待機継続時間の増減を行う。例えば、ある期間において、図４の監視部４３０のような活動監視部は、例えばコア７０１のような１つのコアの待機継続時間を、カウンタ論理及び／又はタイムスタンプを使用して判断／測定する。待機継続時間に基づいて、未来の／予測された待機継続時間を更新する。例えば、測定された待機継続時間に応じて、予測待機継続時間を、損益の分かれ目となる閾値と比較して、増減する。ある実施形態では、ソフトウェア実体７４０から電力を要求された場合、損益の分かれ目となる閾値は、Ｃ６のような最も深い電力状態の損益分岐時間を含む。このＣ６の損益分岐時間は、予め定められていてもよい。また、損益分岐時間は、Ｃ６電力状態からアクティブ状態へとウェイクするのに掛かる時間、及びある電力状態へと入る又は電力状態から抜け出すのに関連付けられたあらゆる時間的な測定単位を含んでもよい。
【００７２】
過去の期間における測定された待機継続時間がＣ６の損益分岐時間よりも長かった場合は、予測メカニズム７２０により、予測待機継続時間を増加させる。反対に、過去の期間における測定された待機継続時間がＣ６の損益分岐時間よりも短かった場合は、予測メカニズム７２０により、予測待機継続時間を減少させる。ここで記載された電力状態の損益分岐時間とは、単なる例示の閾値に過ぎない。ある期間に測定された又は実際の待機継続時間と比較される閾値については、どのような長さの時間又はその他の値を閾値として採用してもよい。また上述したように、予測待機継続時間を、ある電力状態と対応付けてもよい。
【００７３】
しかしながら、幾つかの実施形態では、予測待機継続時間を更新したとしても、予測電力状態の変化が必ずしも反映されない場合がある。これを上述の例の場合で説明すると、長い及び非常に長い待機継続時間が、Ｃ６ステートと関連付けられ、短い及び非常に短い待機継続時間が、Ｃ３ステートと関連付けられているとする。予測待機継続時間が、上記の長い又は非常に長い待機継続時間より増加したとしても、変わらずＣ６の予測電力状態を示すことになる。しかしながら、測定された待機継続時間が、損益分岐閾値を下回れば、予測待機継続時間が長い時間から短い時間へと減少し、予測電力状態のＣ６からＣ３への変化を表すこととなる。後者の場合、ソフトウェア実体７４０から、コア７０１に対して、Ｃ６のような低電力状態へ移る要求を受信したと仮定している。予測メカニズム７２０は、ある期間において、コア７０１の待機継続時間の測定を終えたとする。この時、測定された待機継続時間が、Ｃ６の損益分岐時間を下回ると、予測メカニズム７２０は、短い待機継続時間を予測する。この時点で、ハードウェア予測が正確であると仮定すると、ハードウェアが待機継続時間は短いと予測したことに基づいて、電力管理部７１５は、コア７０１について、ソフトウェアが要求したＣ６ステートではなく、Ｃ３ステートのハードウェア予測状態を選択してもよい。
【００７４】
ある実施形態では、ハードウェアが予測した電力状態を、ハードウェア予測メカニズム７２０の予測精度に基づいて調整してもよい。この実施形態では、基本的に、ハードウェアが予測を正確に行わない場合には、ハードウェアが予測した予測電力状態が選択されずにソフトウェア要求した要求電力状態が選択されるような予防手段が設けられる。したがって、ある実施形態では、予測精度メカニズム７２５が、予測メカニズム７２０の予測精度を予測する。例えば、予測精度メカニズム７２５は、期間における測定された待機継続時間が損益分岐閾値／継続時間を超え、また予測された待機継続時間が長い待機継続時間に対応している場合に、予測精度を引き上げる。すなわち、予測待機継続時間が、閾値継続時間よりも長い待機状態であって、実際の測定された待機継続時間も損益分岐閾値を上回る場合、待機状態予測が正しかったといえる。したがって、予測精度メカニズム７２５は、判定された精度予測に基づいて、精度を引き上げる。長い待機継続時間の予測及び同様に損益分岐継続時間を越えるような長い待機状態の測定が、正確であると判断される唯一の予測ではない。別の例では、短い待機継続時間が予測され、損益分岐時間よりも短い待機継続時間が測定された場合にも、予測精度を引き上げることになる。
【００７５】
同様に、予測精度メカニズム７２５は、期間における測定された待機継続時間が損益分岐閾値／継続時間を超え、且つ予測された待機継続時間が短い待機継続時間に対応している場合に、予測精度を引き下げる。さらに、予測精度メカニズム７２５は、期間に測定された待機継続時間が損益分岐継続時間を越えない、すなわち測定待機継続時間が短い、且つ予測された待機継続時間が長い待機継続時間に対応付けられている場合にも、予測精度を引き下げる。
【００７６】
上述の例は、待機継続時間の予測について対処したものであり、このような予測精度の判断について説明された。しかしながら、予測については、これ限定されない。例えば、予測は、実際の電力状態の予測又は期間内の電力状態継続時間の予測を含んでもよい。ここで、活動監視部は、このような電力状態への開始／終了についてのデータを収集してもよい。また、予測をそのようなデータと比較して、直接的な電力状態予測の精度を判断してもよい。
【００７７】
予測方法に関わらず、一旦ハードウェア予測が行われると、電力管理部７１５は、電力メカニズム７２０の予測精度に基づいて、コア７０１のような１つのコアに対する予測状態、又はコア７０１に要求された状態のいずれかを選択する。ある実施形態では、精度の閾値が提供される。ここで、予測精度が、予測精度閾値を超える場合には、ハードウェアが予測した電力状態が選択／使用される。一方、予測精度が、予測精度閾値を超えない場合には、要求電力状態が選択される。
【００７８】
図８は、待機継続時間／電力状態を予測する予測論理、及び予測精度を判断する精度論理の特定の実施形態を示したものである。ここで、例示の数字や状態を用いた単純化した例示的な実施形態を用いて、図８の論理のオペレーションを説明する。予測論理７２０は、ある期間において、複数のコアのうちの１つのコア、例えばコア７０１についての、少なくとも待機継続時間に基づいて、予測低電力状態を予測する。ここで、待機継続時間論理８０５は、この期間におけるコアの待機継続時間を判断する。例えば、この期間は、５００マイクロ秒期間といったように、特定の時間の長さで区切られた期間であってもよい。あるいは、期間として、待機継続時間そのものを含めてもよい。この実施形態では、コア７０１のような１つのコアが、低電力状態、すなわち待機状態に入った時に、カウンタのようなカウント論理は、コア７０１の待機継続時間をカウントする。図４を参照して説明したようなタイムスタンプを利用した活動監視を、待機継続時間を判断するのに用いてもよい。コア７０１がウェイクすると、予測論理７２０は、その予測を更新し、それに伴って、予測精度論理７２５は、予測論理７２０の精度を更新する。また、コアのウェイクに応答して、待機継続時間論理８０５は、測定した待機継続時間８０６を損益分岐論理８１０に提供する。
【００７９】
損益分岐論理８１０は、測定された待機継続時間８０６が長い継続時間なのか短い継続時間なのかを判断する。上述したように、ある実施形態では、Ｃ６ステートのような電力状態の損益分岐時間を、損益分岐閾値として使用してもよい。どのような損益分岐値を使用してもよいが、この例では、損益分岐閾値を、１００マイクロ秒とする。その結果、待機継続時間８０６が１００マイクロ秒を超えた場合には、コア７０１の待機継続時間は、長い継続時間であると判断される。反対に、待機継続時間８０６が１００マイクロ秒以下である場合には、待機継続時間は、短い継続時間であると判断される。単純な例としては、損益分岐論理８１０は、待機継続時間８０６と１００マイクロ秒である損益分岐継続時間とを比較する比較論理を含んでもよい。
【００８０】
予測状態論理８１５、８２０は、損益分岐論理に基づいて、すなわち、損益分岐論理８１０が判断した継続時間の長い又は短いに基づいて、予測された低電力状態を判断する。予測された待機状態／電力状態素子８２０は、過去に予測された電力状態を保持する。幾つの電力状態及び／又は待機継続時間を、素子８２０に提示してもよい。ある実施形態の例では、記憶素子８２０は、ある電力状態に対応し、待機状態を表す２ビットを保持する。ここで、００はＣ３電力状態に対応する非常に短い待機継続時間を表し、０１はＣ３電力状態に対応する短い待機継続時間を表し、１０はＣ６電力状態に対応する長い待機継続時間を表し、１１はＣ６電力状態に対応する非常に長い待機継続時間を表す。その結果、コア７０１に対して要求電力状態が、ソフトウェア実体７４０から受信されると、予測された待機継続時間／電力状態８２２が、ハードウェア予測電力状態として電力管理部７１５に提供される。
【００８１】
待機継続時間の長い／短いを示す情報８１１に基づいて、予測された待機継続時間８２０を予測待機状態メカニズム８１５により更新してもよい。図９ｂは、予測待機状態機械８１５のフローの実施形態を示した図である。図に示すように、損益分岐論理８１０による待機継続時間の長い／短いの判断に基づいて、状態機械８１５の状態が更新される。例えば、素子８２０に保持されている前回の状態が、０１、すなわち短い予測待機継続時間８１６ｂであり、今回は長い待機継続時間であると判断された場合には、この長い待機継続時間が、状態機械を状態８１６ｃ、すなわち予測された長い待機状態へと遷移させる。この結果を、状態機械８１５に保持し、直接電力管理部７１５へと提供してもよい。または、結果を、素子８２０に保存してもよい。更新された待機継続時間８１６が提供されると、予測サイクルが実質的に完了する。ソフトウェア実体７４０からの、例えば、Ｃ３ステートの電力状態への遷移要求が行われると、新たに更新された予測待機継続時間／電力状態、すなわち、Ｃ６電力状態に対応する長い待機継続時間が、電力管理部７１５に提供される。電力管理部７１５は、要求電力状態であるＣ３及び予測された電力状態Ｃ６のいずれかを選択する。
【００８２】
ある実施形態では、この選択は、予測論理７２０の精度に基づいて行われる。論理８１０に戻り、待機継続時間の長い／短いの判断は、期間精度決定論理にも提供される。さらに、状態機械８１５による更新が行われる前の、素子８２０に保持された過去の状態も、論理８２５に提供される。基本的に、過去に予測された待機継続時間は、新たに測定された継続期間と比較される、具体的には、測定された待機状態と予測された待機状態が共に長い待機状態なのか、それとも短い待機状態なのかの比較を行う。すなわち、論理８２５は、コア７０１待機状態の予測が正しかったかを判断する。
【００８３】
期間精度判断論理は、精度判断８２６を提供する。ある実施形態では、予測が正確であった場合は、信号８２６は、精度論理８３０をインクリメントするインクリメント信号である。また、予測が不正確であった場合には、信号８２６は、インクリメント信号を含まない。これにより、精度論理８３０は、実質的に、予測した論理が正解であった待機状態の期間の数をカウントすることになる。また、待機継続時間の測定が行われる度に、全期間追跡論理８３０がインクリメントされる。これにより、コア７０１について、正確な待機状態期間の数が、精度論理８３０で取得可能となり、期間の全数は、期間追跡論理８３０で取得可能となる。また、精度論理８３０は、正確な期間の数を、期間の全数で割って、パーセント精度のような精度値８３１を求めてもよい。
【００８４】
このようにすることで、電源管理部７１５又は精度論理８３０は、この精度値を、例えば９０％といった閾値と比較することができる。精度が閾値９０％を超える場合は、コア７０１について、ハードウェアの予測した状態Ｃ６を使用する。精度が閾値９０％を超えない場合は、コア７０１について、要求電力状態を使用する。他の例では、精度論理を容易に反転させることができ、精度論理８３０内のカウンタを、精度の低い待機状態期間ではインクリメントし、そして期間の全数で割ることにより、不正確度を表す値を求めることができる。この値を、例えば、１０％といった不正確度の閾値と比較してもよい。オペレーションにおいては、精度、不正角度いずれも実質的に同じように扱われる。図８を参照して説明した例に示された、精度閾値、並びにその他残りの数及び状態は、全て単なる例に過ぎない。また、損益分岐閾値又は精度閾値のような閾値は、ハードウェア、優先ソフトウェア、ユーザーソフトウェア、又はこれらの組み合わせにより動的に調整可能である。
【００８５】
図９ａ及び図９ｂを参照して、待機継続時間を予測し、予測の精度を判断する方法の実施形態について説明する。フロー９０１では、１つのコアが、待機状態又は非アクティブ状態からウェイクアップする又はこれらの状態から抜け出す。ここで、この１つのコアは、複数のコアのグループの中の一部であってもよいし、プロセッサ全体がウェイクアップする動作の一部であってもよい。待機状態の間に、フロー９０５において、待機継続時間を測定／判断する。例えば、カウンタが、待機状態の継続時間をカウントする。
【００８６】
フロー９１０では、全待機状態カウントを決定する。例えば、各待機状態期間の都度、全待機状態カウントをインクリメントする。フロー９１５では、待機継続時間が、例えば、電力状態の損益分岐時間のような損益分岐閾値よりも長いかを判断する。待機継続時間が、損益分岐閾値よりも長くない場合には、フロー９２０において、待機継続時間が短いと判断される。反対に、待機継続時間が、損益分岐閾値よりも長い場合には、フロー９２５において、待機継続時間が長いと判断される。図９ｂには、フロー９２０、９２５での判断に基づいて、複数の状態間を移動する状態機械が示されている。例えば、フロー９２５において待機継続時間が長いと判断された場合は、状態機械は、ステート８１６ａ‐８１６ｄから、長い待機継続時間のステートへと移動する。反対に、フロー９２０において待機継続時間が短いと判断された場合は、状態機械は、短い待機継続時間のステート、例えばステート８１６ａへと移動する。
【００８７】
そして、フロー９３０‐９４５において、予測ハードウェアの予測精度が判断される。ここで、フロー９２０において、待機継続時間が短いと判断された場合には、フロー９３０から得られる精度の結果について２つの可能性がある。すなわち、（１）前に予測された待機状態が正しい、すなわち、予測された待機継続時間が、待機継続時間が短いことを表すステート８１６ａ又は８１６ｂのいずれかである、（２）前に予測された待機状態が不正確である、すなわち、予測された待機継続時間が、待機継続時間が長いことを表すステート８１６ｃ又は８１６ｄのいずれかである。同様に、フロー９３５では、２つの結果が考えられる。すなわち、１）前に予測された待機状態が正しい、すなわち、予測された待機継続時間が、待機継続時間が長いことを表すステート８１６ｃ又は８１６ｄのいずれかである、（２）前に予測された待機状態が不正確である、すなわち、予測された待機継続時間が、待機継続時間が短いことを表すステート８１６ａ又は８１６ｂのいずれかである。いずれかのパスにおいて、予測が正しい時には、フロー９４０において予測カウントがインクリメントされる。予測が正しかった場合には、フローは、フロー９４５に移り、精度カウントをフロー９１０からの全待機状態カウントで和って、精度値が決定される。精度が閾値精度を上回る場合には、コア７０１に対して、ハードウェア予測電力状態が使用される。反対に、精度が閾値精度を上回らない場合には、コア７０１に対して、要求電力状態が使用される。ソフトウェア要求及び正確なハードウェア予測の組み合わせは、非常に高い精度を持つ電力状態選択を可能にすると考えられ、例えば、シミュレーションでは、＋９４％正しい選択が行われるという結果を得ている。
【００８８】
本明細書で用いられたモジュールとは、任意のハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、通常変わることが多く、重複する可能性もある。例えば、第１のモジュール及び第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを共有しているとしてもよいし、独立したハードウェア、ソフトウェア又はファームウェアを持つとしてもよい。一実施形態によると、「論理」という用語は、例えば、トランジスタ、レジスタのようなハードウェア、又はプログラム可能な論理デバイスのようなその他のハードウェアを含む。しかしながら、別の実施形態では、論理はさらに、ハードウェアと一体化されたソフトウェア又はコード、例えば、ファームウェア又はマイクロコードを含む。
【００８９】
また、本明細書で使用されている値は、数、状態、論理状態又は２値論理状態のあらゆる既知の表現を含む。また、明細書で使用されている論理レベル、論理値、又は論理的値は、１又は０といった単純に２値論理状態を意味している場合もある。例えば、１は高い論理レベルを指し、０は低い論理レベルを指す。ある実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、１つの論理値又は複数の論理値を保持可能であってもよい。しかしながら、コンピュータシステムにおける値の他の表現が使用されてきている。例えば、１０進数の１０は、２進値表示では、１０１０と表され、１６進数表示ではＡと表される。したがって、ある１つの値は、コンピュータシステムに保持される情報のあらゆる表示形式を含む。
【００９０】
さらに、状態は、値又は値の一部によって表されていてもよい。例えば、論理値の１のような第１の値が、デフォルト状態又は最初の状態を表していてもよく、論理値の０のような第２の値が、非デフォルト状態を表していてもよい。加えて、リセット及びセットという言葉はそれぞれ、ある実施形態では、デフォルト値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は、高い論理値、すなわち、リセットを含んでもよく、更新値は、低い論理値、すなわち、セットを含んでもよい。値のどのような組み合わせを、複数の状態を表すのに利用してもよい。
【００９１】
上記の方法、ハードウェア、ソフトウェア、ファームウェア、コードの実施形態を、機械アクセス可能な又は機械可読な媒体に記憶され、プロセッシング素子によって実効可能な命令又はコードを使用して実装してもよい。機械アクセス可能／機械可読な媒体としては、コンピュータ又は電子システムのような機械によって読み出し可能な形式の情報を提供する（すなわち、記憶及び／又は送信する）あらゆるメカニズムを含む。例えば、機械アクセス可能媒体は、スタティックＲＡＭ（ＳＲＡＭ）若しくはダイナミックＲＡＭ（ＤＲＡＭ）のようなランダム・アクセス・メモリ（ＲＡＭ）、ＲＯＭ，磁気的又は光学的記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光学記憶デバイス、音響的記憶デバイス、又は他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号）記憶デバイス等が含まれる。例えば、機械は、搬送波のような伝播信号を、搬送波信号によって送信可能な情報を保持可能な媒体から、受信することにより、記憶デバイスにアクセスしてもよい。
【００９２】
また、本明細書における「一実施形態」又は「ある実施形態」という言葉は、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、１以上の実施形態において、特定の構成、構造又は特徴を、適切な形で組み合わせてもよい。
【００９３】
明細書の上記において、特定の例示された実施形態を参照して、詳細な説明がなされた。しかしながら、添付の特許請求の範囲に記載される本発明の範囲内において、様々な変形及び変更を加えることが可能であることは、明らかである。したがって、明細書及び添付の図面は、発明を制限するものではなく、発明を例示するものであると見なされるべきである。また、上記の実施形態及び他の例で使用された言葉は、同じ実施形態又は同じ例を必ずしも指している必要はなく、異なる及び別の実施形態を指している場合もあるし、同じ実施形態を指している場合もある。
【図１】
0005460565.tif 000011
【図２】
0005460565.tif 000012
【図３】
0005460565.tif 000013
【図４】
0005460565.tif 000014
【図５】
0005460565.tif 000015
【図６】
0005460565.tif 000016
【図７】
0005460565.tif 000017
【図８】
0005460565.tif 000018
【図９ａ】
0005460565.tif 000019
【図９ｂ】
0005460565.tif 000020