(57)【要約】【課題】チップ上のマルチコアシステムに関する全域チップ電力を管理する方法および装置を提供する。【解決手段】マルチコアプロセッサチップにおける電力を制御する方法および対応する装置は、マルチコアプロセッサチップ内部のコントローラにおいて、マルチコアプロセッサチップ内部の複数のコアプロセッサの１つ以上の電力推定値を蓄積することを含む。全域電力閾値は、累積電力推定値に基づいて決定され、累積電力推定値は、蓄積された１つ以上の電力推定値の少なくとも一部に基づいて決定される。コントローラにより、各コアプロセッサにおける電力消費が、決定された全域電力閾値に基づいて制御される。コントローラは、コアプロセッサにおける電力消費を直接制御してもよく、または、コアプロセッサにそれを行うよう命令してもよい。【選択図】図１
2015079496.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアプロセッサチップにおいて電力消費を制御する方法であって、
前記マルチコアプロセッサチップ内部のコントローラにおいて、前記マルチコアプロセッサチップ内部の複数のコアプロセッサの１つ以上の電力推定値を蓄積することと、
蓄積された前記１つ以上の電力推定値の少なくとも一部に基づいて決定される累積電力推定値に基づいて全域電力閾値を決定することと、
各コアプロセッサにおける電力消費を、決定された前記全域電力閾値に基づいて制御することと、
を含む方法。
【請求項２】
複数のコアプロセッサの前記１つ以上の電力推定値を蓄積することが、前記マルチコアプロセッサチップ内部の前記複数のコアプロセッサの１つ以上のサブセットの電力推定値の１つ以上の累積合計を受信することを含む、請求項１に記載の方法。
【請求項３】
複数のコアプロセッサの前記１つ以上の電力推定値を蓄積することが、前記マルチコアプロセッサチップ内部の前記複数のコアプロセッサに対応する複数の電力推定値を受信することを含む、請求項１に記載の方法。
【請求項４】
複数のコアプロセッサの前記１つ以上の電力推定値を蓄積することが、読取コマンドを前記コントローラから前記複数のコアプロセッサのうちの少なくとも１つのコアプロセッサへ送信することを含む、請求項１に記載の方法。
【請求項５】
読取コマンドを受信するコアプロセッサが、電力推定値の累積合計を表すパラメータ値を更新し、前記読取コマンドを前記更新された累積合計と共に、別の１つのコアプロセッサまたは前記コントローラに転送する、請求項４に記載の方法。
【請求項６】
前記全域電力閾値を決定することは、
決定された前記累積電力推定値と対応する経時平均とが、両方とも所望の目標電力よりも小さいことを判断すると、前記全域電力閾値を表すパラメータ値を増分することと、
決定された前記累積電力推定値が前記所望の目標電力よりも大きいことを判断すると、前記全域電力閾値を表すパラメータ値を減分することとを含む、
請求項１に記載の方法。
【請求項７】
前記所望の目標電力は、前記マルチコアプロセッサチップのユーザまたはメーカによって設定される定数である、請求項６に記載の方法。
【請求項８】
前記所望の目標電力は、前記マルチコアプロセッサチップの測定温度値の少なくとも一部に基づいて、動的に設定される、請求項６に記載の方法。
【請求項９】
前記マルチコアプロセッサチップ内部の１つ以上のコプロセッサブロックのクロック活動の１つ以上の表現を蓄積することと、
蓄積された前記１つ以上の表現の少なくとも一部に基づいて、前記１つ以上のコプロセッサブロックの１つ以上の電力推定値を決定することとを更に含み、
前記マルチコアプロセッサチップに対する前記累積電力推定値を決定することは更に、前記１つ以上のコプロセッサブロックの前記１つ以上の電力推定値に基づく、
請求項１に記載の方法。
【請求項１０】
前記１つ以上のコプロセッサブロックの前記１つ以上の電力推定値を決定することは更に、ルックアップテーブルに基づく、請求項９に記載の方法。
【請求項１１】
前記１つ以上のコプロセッサブロックの前記クロック活動の前記１つ以上の表現を蓄積することは、
各コプロセッサブロックにおいて、同じコプロセッサブロックのクロック活動のサイクルをカウントすることと、
カウントされたクロック活動のサイクルの所定数を前記コプロセッサブロックの前記クロック活動の前記表現内部で単一のシンボルにマッピングすることによって、前記コプロセッサブロックの前記クロック活動の表現を生成することと、
前記コントローラによって、前記コプロセッサブロックの前記クロック活動の前記表現を受信することとを含む、
請求項９に記載の方法。
【請求項１２】
各コアプロセッサにおける電力消費を制御することは、各コアプロセッサに、前記全域消費閾値に基づいて前記コアプロセッサの電力消費を制御するように指示することを含む、請求項１に記載の方法。
【請求項１３】
各コアプロセッサに電力消費を制御するように指示することは、決定される前記全域消費閾値の指示を各コアプロセッサに送信することを含む、請求項１２に記載の方法。
【請求項１４】
各コアプロセッサによって、前記全域消費閾値を局部電力限界と比較することを更に含む、請求項１３に記載の方法。
【請求項１５】
各コアプロセッサにおける電力消費を制御することは、マスタークロック周波数を調整することを含む、請求項１に記載の方法。
【請求項１６】
マルチコアプロセッサチップであって、
複数のコアプロセッサと、
前記複数のコアプロセッサのうちの少なくとも１つに連結されるコントローラとを備え、前記コントローラは、
前記マルチコアプロセッサチップ内部の前記複数のコアプロセッサの１つ以上の電力推定値を蓄積し、
蓄積された前記１つ以上の電力推定値の少なくとも一部に基づいて決定される累積電力推定値に基づいて全域電力閾値を決定し、
各コアプロセッサにおける電力消費を、決定された前記全域電力閾値に基づいて制御するように構成される、
マルチコアプロセッサチップ。
【請求項１７】
前記複数のコアプロセッサの前記１つ以上の電力推定値を蓄積することにおいて、前記コントローラは、前記複数のコアプロセッサの１つ以上のサブセットの電力推定値の１つ以上の累積合計を受信するように構成される、請求項１６に記載のマルチコアプロセッサチップ。
【請求項１８】
複数のコアプロセッサの前記１つ以上の電力推定値を蓄積することにおいて、前記コントローラは、前記複数のコアプロセッサに対応する複数の電力推定値を受信するように構成される、請求項１６に記載のマルチコアプロセッサチップ。
【請求項１９】
複数のコアプロセッサの前記１つ以上の電力推定値を蓄積することにおいて、前記コントローラは、読取コマンドを前記コントローラから前記複数のコアプロセッサのうちの少なくとも１つのコアプロセッサへ送信するように構成される、請求項１６に記載のマルチコアプロセッサチップ。
【請求項２０】
前記複数のコアプロセッサからの前記少なくとも１つのコアプロセッサは、
読取コマンドを受信し、
電力推定値の累積合計を表すパラメータ値を更新し、
前記読取コマンドを前記更新された累積合計と共に、別の１つのコアプロセッサまたは前記コントローラに転送するように構成される、
請求項１９に記載のマルチコアプロセッサチップ。
【請求項２１】
前記全域電力閾値を決定することにおいて、前記コントローラは、
決定された前記累積電力推定値と対応する経時平均とが、両方とも所望の目標電力よりも小さいことを判断すると、前記全域電力閾値を表すパラメータ値を増分し、
決定された前記累積電力推定値が前記所望の目標電力よりも大きいことを判断すると、前記全域電力閾値を表すパラメータ値を減分するように構成される、
請求項１６に記載のマルチコアプロセッサチップ。
【請求項２２】
前記所望の目標電力は、前記マルチコアプロセッサチップのユーザまたはメーカによって設定される定数である、請求項２１に記載のマルチコアプロセッサチップ。
【請求項２３】
前記所望の目標電力は、前記マルチコアプロセッサチップの測定温度値の少なくとも一部に基づいて、動的に設定される、請求項２１に記載のマルチコアプロセッサチップ。
【請求項２４】
前記マルチコアプロセッサチップは更に１つ以上のコプロセッサブロックを含み、前記コントローラは更に、
前記１つ以上のコプロセッサブロックのクロック活動の１つ以上の表現を蓄積し、
蓄積された前記１つ以上の表現の少なくとも一部に基づいて、前記１つ以上のコプロセッサブロックの１つ以上の電力推定値を決定するように構成され、
前記マルチコアプロセッサチップに対する前記累積電力推定値を決定することは更に、前記１つ以上のコプロセッサブロックの前記１つ以上の電力推定値に基づく、
請求項１６に記載のマルチコアプロセッサチップ。
【請求項２５】
前記１つ以上のコプロセッサブロックの前記１つ以上の電力推定値を決定することにおいて、前記コントローラは更に、ルックアップテーブルを照合して各コプロセッサブロックの前記電力推定値を決定するように構成される、請求項２４に記載のマルチコアプロセッサチップ。
【請求項２６】
前記１つ以上のコプロセッサブロックの前記クロック活動の１つ以上の表現を蓄積することにおいて、各コプロセッサブロックは、
各コプロセッサブロックにおいて、同じコプロセッサブロックのクロック活動のサイクルをカウントし、
カウントされたクロック活動のサイクルの所定数を前記コプロセッサブロックの前記クロック活動の前記表現内部で単一のシンボルにマッピングすることによって、前記コプロセッサブロックの前記クロック活動の表現を生成し、
前記コプロセッサブロックの前記クロック活動の前記表現を前記コントローラに送信するように構成される、
請求項２４に記載のマルチコアプロセッサチップ。
【請求項２７】
各コアプロセッサにおける電力消費を制御することにおいて、前記コントローラは更に、各コアプロセッサに、前記全域消費閾値に基づいて前記コアプロセッサの電力消費を制御するよう指示するように構成される、請求項１６に記載のマルチコアプロセッサチップ。
【請求項２８】
各コアプロセッサに電力消費を制御するよう指示することにおいて、前記コントローラは更に、決定される前記全域消費閾値の指示を各コアプロセッサに送信するように構成される、請求項２７に記載のマルチコアプロセッサチップ。
【請求項２９】
各コアプロセッサは、前記全域消費閾値を局部電力限界と比較するように構成される、請求項２８に記載のマルチコアプロセッサチップ。
【請求項３０】
各コアプロセッサにおける電力消費を制御することにおいて、前記コントローラは、マスタークロック周波数を調整するように構成される、請求項１６に記載のマルチコアプロセッサチップ。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータプロセッサの電力消費は通常、プロセッサまたは相当するチップの過熱を防ぐように制御されている。言い換えれば、プロセッサ内部の電力消費を制御することによって、対応する温度も抑えられる。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
マルチコアプロセッサ装置における電力管理は通常、各コアプロセッサにおいて局所的に実行される。性能を向上させ、効率を高めるために、かかる装置に関する全域チップ電力を管理する能力に対するニーズが存在する。
【課題を解決するための手段】
【０００３】
少なくとも１つの例示的実施形態によれば、マルチコアプロセッサチップにおける電力消費を制御する全域電力管理手法は、マルチコアプロセッサチップ内部のコントローラにおいて、マルチコアプロセッサチップ内部の複数のコアプロセッサの１つ以上の電力推定値を蓄積することを含む。全域電力閾値は、累積電力推定値に基づいて決定され、累積電力推定値は、少なくとも一部において、蓄積された１つ以上の電力推定値に基づいて決定される。コントローラにより、複数のコアプロセッサのそれぞれにおける電力消費が、決定された全域電力閾値（全体電力閾値）に基づいて制御される。
【０００４】
１つ以上の電力推定値を蓄積することにおいて、コントローラは、複数のコアプロセッサによる合計電力消費を表す累積電力推定値を示す信号値を受信してもよい。複数のコアプロセッサは、シリアル構成を形成するように互いに連結されてもよく、ここで、各コアプロセッサにおいて、局部電力消費推定値が、累積電力推定値を表す値に加算され、次のコアプロセッサに転送される。最後のコアプロセッサにおいて、累積電力推定値の最終的な値は、コントローラに転送される。代替として、複数のコアプロセッサは、２つ以上のシリアル構成を形成するように連結されてもよく、この場合、コントローラは、２つ以上の電力推定値を受信する。更に別の例において、各コアプロセッサは、その局部電力消費推定値を直接コントローラに送信してもよい。
【０００５】
コントローラは、読取コマンドをコントローラから複数のコアプロセッサのうちの少なくとも１つのコアプロセッサへ送信するように構成されてもよい。読取コマンドは、読取操作の指示とペイロード値とを含んでいてもよい。読取コマンドを受信するコアプロセッサは、局部電力推定値をペイロード値に加算し、読取コマンドを更新されたペイロード値と共に、次のコアプロセッサまたはコントローラに転送する。ペイロード値は、１つ以上のコアプロセッサの電力推定値の累積合計を表している。
【０００６】
全域電力閾値を決定することにおいて、コントローラは、決定された累積電力推定値と対応する経時平均とが、両方とも所望の目標電力よりも小さいことを判断すると、全域電力閾値を表すパラメータ値を増分し、決定された累積電力推定値が所望の目標電力よりも大きいことを判断すると、全域電力閾値を表すパラメータ値を減分するように構成されている。所望の目標電力は、マルチコアプロセッサチップのユーザまたはメーカによって設定される定数であってもよい。代替として、所望の目標電力は、少なくとも部分的に、マルチコアプロセッサチップの測定温度値に基づいて、動的に設定されてもよい。
【０００７】
また、マルチコアプロセッサチップは１つ以上のコプロセッサブロックを含んでいてもよい。１つ以上のコプロセッサブロックの電力消費を説明するために、コントローラは、１つ以上のコプロセッサブロックのクロック活動（クロック動作（clock activity））の１つ以上の表現（表示（representation））を蓄積し、少なくとも部分的に、蓄積された１つ以上の表現に基づいて、１つ以上のコプロセッサブロックの１つ以上の電力推定値を決定するように構成され、マルチコアプロセッサチップに対する累積電力推定値を決定することは更に、１つ以上のコプロセッサブロックの１つ以上の電力推定値に基づいている。１つ以上のコプロセッサブロックの１つ以上の電力推定値を決定することにおいて、コントローラは、例えば、クロック活動の各表現の電力消費を決定するようルックアップテーブルを採用してもよい。１つ以上のコプロセッサブロックのクロック活動の１つ以上の表現は、各コプロセッサブロックにおいて、同じコプロセッサブロックのクロック活動のサイクルをカウントし、カウントされたクロック活動のサイクルの所定数を、コプロセッサブロックのクロック活動の表現内部で単一のシンボルにマッピングすることによって、コプロセッサブロックのクロック活動の表現を生成することによって形成されてもよい。コプロセッサブロックのクロック活動の表現は次いで、コントローラによって受信される。
【０００８】
各コアプロセッサにおける電力消費を制御することにおいて、コントローラは、マスタークロック周波数を調整し、従って、複数のコアプロセッサのクロックの周波数に影響を及ぼすことによって、コアプロセッサにおける電力消費を制御してもよい。代替として、コントローラは、すべてのコアプロセッサに、それらの局部電力消費を制御するよう指示する命令を送信する。かかるコマンドは、全域電力閾値の指示を含んでいてもよい。全域電力閾値を受信すると、各コアプロセッサは、全域電力閾値を局部電力閾値と比較して、コアプロセッサによって使用される電力限界を決定する。
【０００９】
前記は、同様の参照記号が異なる図を通して同じ部分を言及している添付図面に示すように、本発明の実施例の以下のより詳細な説明から明らかとなるであろう。図面は、本発明の実施形態を示すことに関して、必ずしも縮尺、強調するものではなく、むしろ配置されたものである。
【図面の簡単な説明】
【００１０】
【図１】少なくとも１つの例示的実施形態によるマルチコアプロセッサチップを示すブロック図である。
【図２】少なくとも１つの例示的実施形態によるマルチコアプロセッサチップにおける電力を制御する方法を示すフローチャートである。
【図３Ａ】複数のコアプロセッサからの電力推定値を蓄積するシリアル構成例を示すブロック図である。
【図３Ｂ】複数のコアプロセッサからの電力推定値を蓄積するシリアル構成例を示すブロック図である。
【図４】複数のコプロセッサブロックからの蓄積電力推定用の構成を示すブロック図である。
【図５】少なくとも１つの実施例によるコプロセッサブロッククロックのクロック信号および対応する修正クロック信号の例を示している。
【発明を実施するための形態】
【００１１】
本発明の実施例の説明は、以下の通りである。
【００１２】
マルチコアプロセッサチップ用の典型的な電力管理技法は、通常、対応するコアプロセッサに対して局所的であり、マルチコアプロセッサチップに対して全域で実行されない。各コアプロセッサにおいて局所的に電力管理を適用する場合、マルチコアプロセッサチップに対する電力消費量は、各コアプロセッサに対する電力量を算出するようコアプロセッサの対応数で除算される。次いで、各コアプロセッサは、各コアプロセッサに対する算出された電力量に基づき、他のコアプロセッサとは独立してその電力を管理する。このため、所定のコアプロセッサの動的電力は、制限されるかもしれない。また、各コアプロセッサにおいて局所的に電力管理を適用することにより、性能劣化を招くおそれがある。例えば、第１のコアプロセッサが、それに利用可能な電力量の僅かな部分だけ使用している場合、第２のコアプロセッサは、各コアプロセッサに対して算出された電力量により許可されているよりも多くの電力を必要とするかもしれない。このように、電力管理を局所的に実行する場合、いくつかのタスクは、実行されるまで長い時間がかかるかもしれず、その結果、マルチコアプロセッサチップにおいてより多くの電力を消費するおそれがある。以下において、チップレベルにおける全域の電力管理を適用する実施形態を説明する。
【００１３】
図１は、少なくとも１つの例示的実施形態によるマルチコアプロセッサチップ１００を示すブロック図である。マルチコアプロセッサチップ１００は、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎ、および中央コントローラ１１０を含む。中央コントローラ１１０は、マルチコアプロセッサチップ１００の全域電力を管理するように構成されている。中央コントローラは、複数のコアプロセッサ１２０−１〜１２０−Ｎに連結され、所定の時間間隔で、マルチコアプロセッサチップ１００による全域電力消費の推定値を決定するように構成されている。少なくとも１つの態様によれば、全域電力推定値は、固定時間間隔で定期的に決定される。全域電力推定値を決定することにおいて、中央コントローラ１１０は、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎの１つ以上の電力推定値を記録するように構成されている。複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎのそれぞれにおいて、局部電力推定は、そのすべてを本明細書中に組み込まれた米国特許第８，３５６，１９４号明細書に記載されている実施形態に従って実行されてもよい。
【００１４】
マルチコアプロセッサチップ１００は更に、１つ以上のコプロセッサブロック、例えば、１３０−１〜１３０−Ｍを含んでいてもよい。少なくとも１つの実施例によれば、コプロセッサブロック、例えば、１３０−１〜１３０−Ｍは、入出力（Ｉ／Ｏ）インターフェース操作および／または他の操作を実行して、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎの機能を補うよう構成されている。中央コントローラ１１０は、マルチコアプロセッサチップ１００の全域電力推定値を決定する場合、コプロセッサブロック、例えば、１３０−１〜１３０−Ｍによって消費される電力を考慮するように構成されている。
【００１５】
図２は、少なくとも１つの実施例によるマルチコアプロセッサチップ１００における電力を制御する方法を示すフローチャートである。ブロック２１０において、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎの１つ以上の電力推定値が、中央コントローラ１１０によって蓄積される。中央コントローラ１１０は更に、ブロック２２０において、マルチコアプロセッサチップ１００がるコプロセッサブロックを含む場合に、１つ以上のコプロセッサブロック、例えば、１３０−１〜１３０−Ｍの電力推定値を蓄積する。
【００１６】
ブロック２３０において、中央コントローラ１１０は、蓄積した電力推定値を使用して、固定時間間隔にわたってマルチコアプロセッサチップ１００によって消費される累積電力の推定値を決定する。例えば、中央コントローラ１１０は、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎの蓄積電力推定値、および、該当する場合は、１つ以上のコプロセッサブロック、例えば、１３０−１〜１３０−Ｍの蓄積電力推定値を合計してもよい。中央コントローラは、代替として、または追加して、累積電力推定値を決定することに他の演算処理を実行してもよい。ブロック２３０におけるプロセスは任意選択であってもよい。例えば、中央コントローラは、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎによって消費される累積電力を示す単一の電力推定値を蓄積してもよい。かかる場合において、蓄積された単一の電力推定値は、累積電力推定値として使用されてもよい。
【００１７】
ブロック２４０において、全域電力閾値が、中央コントローラ１１０によって決定される。全域電力閾値は、累積電力推定値に基づいて決定される。累積電力推定値の他に、目標電力値が更に、全域電力閾値を決定することに使用されてもよい。全域電力閾値は、固定時間間隔にわたっていずれのコアプロセッサも超過しない全域電力消費限界を表している。目標電力値は、固定時間間隔にわたるマルチコアプロセッサチップ１００に対する目標電力消費レベルを示す。
【００１８】
少なくとも１つの態様によれば、中央コントローラ１１０は、累積差分パラメータと全域消費閾値パラメータとを維持している。累積差分パラメータ、例えば、Ｃｕｍ＿Ｄｉｆｆは、決定した累積電力推定値（例えば、Ｃｕｍ＿Ｐｏｗｅｒ＿Ｅｓｔｉｍａｔｅ）と、目標電力（例えば、Ｔａｒｇｅｔ＿Ｐｏｗｅｒ）との間の差の合計または平均を表している。例えば、各時間間隔において、累積差分パラメータは、以下のように更新される。
Ｃｕｍ＿Ｄｉｆｆ＝Ｃｕｍ＿Ｄｉｆｆ＋（Ｃｕｍ＿Ｐｏｗｅｒ＿Ｅｓｔｉｍａｔｅ−Ｔａｒｇｅｔ＿ｐｏｗｅｒ）。
【００１９】
Ｃｕｍ＿Ｄｉｆｆパラメータは、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎを所定の時間間隔の間、ビジー状態に維持される程の作業負荷があれば、ゼロ付近になると予想される。その期間、作業負荷が小さければ、Ｃｕｍ＿Ｄｉｆｆパラメータは、パラメータが飽和する負の最小値に到達するまで、マイナスとなる。負の最小値、すなわち飽和値は、例えば、マルチコアプロセッサチップ１００が数ミリ秒間アイドル状態であることを示す熱定数に基づいて定義されてもよい。言い換えれば、飽和値により、マルチコアプロセッサチップ１００が、その短時間の関連する履歴を記憶することが可能となる。代替として、累積電力差は、加重和として定義されてもよい。
【００２０】
全域消費閾値パラメータ、例えば、Ｇｌｏｂａｌ＿ｌｉｍは、各時間間隔において、以下のように更新されてもよい。
（Ｃｕｍ＿Ｐｏｗｅｒ＿Ｅｓｔｉｍａｔｅ＜Ｔａｒｇｅｔ＿Ｐｏｗｅｒ）、かつ（Ｃｕｍ＿Ｄｉｆｆ＜０）の場合、
Ｇｌｏｂａｌ＿ｌｉｍ＝Ｇｌｏｂａｌ＿ｌｉｍ＋１である。
（Ｃｕｍ＿Ｐｏｗｅｒ＿Ｅｓｔｉｍａｔｅ＞Ｔａｒｇｅｔ＿Ｐｏｗｅｒ）の場合、
Ｇｌｏｂａｌ＿ｌｉｍ＝Ｇｌｏｂａｌ＿ｌｉｍ−１である。
すなわち、全域電力閾値は、累積電力推定値が目標電力未満かつ累積差がゼロ未満である場合に限り、増分される。また、全域電力閾値は、累積電力推定値が目標電力を超える場合に限り、減分される。
【００２１】
例示の態様によれば、目標電力値は、マルチコアプロセッサチップ１００のメーカによって定数として設定されてもよい。代替として、目標電力値は、マルチコアプロセッサチップ１００のソフトウェアによって設定可能であってもよい。更に別の態様によれば、目標電力は、例えば、温度センサによって提供される情報に基づいて動的であってもよい。例えば、目標電力は、マルチコアプロセッサチップ１００の記録された温度に基づいて変化してもよい。
【００２２】
一旦、全域消費閾値、例えば、Ｇｌｏｂａｌ＿ｌｉｍが特定の時間間隔に対して決定されると、中央コントローラ１１０は、少なくとも１つのコアプロセッサにその電力消費を低減または増加させるよう構成される。一例示的実施形態によれば、中央コントローラ１１０は、すべてのコアプロセッサ、例えば、１２０−１〜１２０−Ｎに、それらが対応する電力消費を制御するよう指示するコマンドを送信してもよい。例えば、中央コントローラ１１０は、決定された全域消費閾値、例えば、Ｇｌｏｂａｌ＿ｌｉｍをすべてのコアプロセッサ、例えば、１２０−１〜１２０−Ｎに送信してもよい。各コアプロセッサは、局部電力限界値、例えば、Ｐｏｗｅｒ＿ｌｉｍを維持する。代替として、中央コントローラ１１０は、先行する全域消費閾値に適用されるべき増分または減分を表す値を送信してもよい。各コアプロセッサにおいて、全域消費閾値および局部電力限界の最小値は、少なくとも次の時間間隔における電力消費に対する上限として使用される。代わりに、中央コントローラ１１０は、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎにおける電力消費を、直接、低減または増加してもよい。例えば、中央コントローラはマスタークロックの周波数を調整して、これにより、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎのクロック周波数を調整してもよい。
【００２３】
少なくとも１つの例示的実施形態によれば、マルチコアプロセッサチップ１００に対して決定された累積電力推定値が目標電力を超えない場合、中央コントローラ１１０は、コアプロセッサ、例えば、１２０−１〜１２０−Ｎに、それらが自身を抑える必要が無いこと、すなわち、それらの対応する周波数を低減する必要が無いことを示す信号を送信する。しかし、マルチコアプロセッサチップ１００に対して決定された累積電力推定値が目標電力を超え、かつ累積差がゼロである場合、中央コントローラ１１０は、コアプロセッサ、例えば、１２０−１〜１２０−Ｎにそれら自身を抑えるよう指示する信号を送信する。コアプロセッサ、例えば、１２０−１〜１２０−Ｎにそれら自身を抑えるよう指示するか否かに関わらず、送信される信号は、制御操作の指示および全域消費閾値を担持するペイロードを含んでいてもよい。従って、全域消費閾値を局部電力限界と比較することによって、各コアプロセッサは、スロットリングを実行するか否かを決定する。言い換えれば、送信される信号は、読取コマンドを表す信号と類似であってもよい。ただし、操作指示が読取操作の代わりに制御操作を示し、ペイロードが電力推定値の代わりに全域消費閾値を表す点が異なる。例えば、読取コマンドは０で示されてもよく、操作コマンドは１で示されてもよい。
【００２４】
別の例示的実施形態によれば、２つのワイヤによって、中央コントローラ１１０をコアプロセッサ、例えば、１２０−１〜１２０−Ｎに連結してもよい。１つのワイヤは、「ｔｈｒｏｔｔｌｅ＿ｔｈｉｓ＿ｉｎｔｅｒｖａｌ」ワイヤと称されてもよい。このワイヤは、すべてのコアプロセッサ、例えば、１２０−１〜１２０−Ｎにブロードキャストされる。「ｔｈｒｏｔｔｌｅ＿ｔｈｉｓ＿ｉｎｔｅｒｖａｌ」ワイヤは、コアプロセッサ、例えば、１２０−１〜１２０−Ｎに対して次々にブロードキャストされてもよい。第２のワイヤは、「ｓｕｍ（合計）」ワイヤと称されてもよい。「ｓｕｍ」ワイヤは、各コアプロセッサまたは複数のコアプロセッサのサブセット（複数のコアプロセッサの一部）に次々に送られ、各コアプロセッサ通って横断した後、中央コントローラ１１０に戻る。アイドルフェーズ後、「ｓｕｍ」ワイヤの第１のアサート（表明）は、累積電力推定値が、ワイヤ上の次のビット数内で、最初にＬＳＢ、最後に最上位ビット（ＭＳＢ）に続くことを示す。コアプロセッサは、「ｓｕｍ」ワイヤがオンであることを検知すると、その局部電力推定値を次のビット数において累積電力推定値に追加することを認識する。中央コントローラは、「ｓｕｍ」ワイヤを受信し、適用する場合は「ｔｈｒｏｔｔｌｅ＿ｔｈｉｓ＿ｉｎｔｅｒｖａｌ」ワイヤを適切に設定する。
【００２５】
少なくとも１つの例示的実施形態によれば、コアプロセッサにそれらの対応する電力消費を制御するように指示することが、固定時間間隔の他の半分以内で生じている間、電力推定値の蓄積は、固定時間間隔の半分以内で実行される。例えば、固定時間間隔が、２５６のクロックサイクルと等しい場合、中央コントローラ１１０によって電力推定値を蓄積することは、１２８クロックサイクル内で実行され、コアプロセッサ、例えば、１２０−１〜１２０−Ｎにそれらの対応する電力消費を制御するように指示することは、その後の１２８クロックサイクルを必要とする。中央コントローラ１１０による全域消費閾値の決定は、電力推定値を蓄積することの一部、または、コアプロセッサ、例えば、１２０−１〜１２０−Ｎにそれらの対応する電力消費を制御するように指示することの一部として考えられてもよい。
【００２６】
複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎのそれぞれにおいて、信号またはコマンドが、局部電力消費を低減させる命令と共に受信されると、適切な動作が、コアプロセッサによって行われる。電力消費を低減させる１つの方法は、局部クロック周波数を低減することである。かかる取り組みは、各コアプロセッサがそれ自身の位相同期ループ（ＰＬＬ）を有している場合に適用されてもよい。コアプロセッサにおいて局部電力消費を低減させる別の方法は、命令の発行を停止することである。例えば、コアプロセッサは、電力消費が、局部電力限界または中央コントローラ１１０から受信する全域消費閾値を超えるまで、固定時間間隔内で命令の処理を続け、次いで、固定時間間隔の終了まで命令の発行を停止してもよい。
【００２７】
図３Ａおよび３Ｂは、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎからの電力推定値を蓄積するシリアル構成例を示すブロック図である。図３Ａは単一のシリアル構成を示し、この構成に従って、中央コントローラがコアプロセッサのうちの１つ、例えば、１２０−１に読取コマンドを送信する。例示の態様によれば、読取コマンドは、読取操作の指示と中央コントローラ１１０に返信される電力推定値を表すペイロードとを含む。第１のコアプロセッサ、例えば、１２０−１は、中央コントローラ１１０から読取コマンドを受信し、その推定された電力消費値を読取コマンドのペイロードに組み込む。ペイロード初期値がゼロの場合は、推定電力消費値は、加法演算により組み込まれてもよい。読取コマンドは次いで、次のコアプロセッサ、例えば、１２０−２に転送される。
【００２８】
コアプロセッサ１２０−２は、その推定電力消費値をペイロード値に加算し、読取コマンドを次のコアプロセッサ、例えば、１２０−３に転送するように構成されている。局所的に推定される電力消費値のペイロード値への加算は、各コアプロセッサ１２０−２〜１２０−Ｎにおいて繰り返される。最後のコアプロセッサ、例えば、１２０−Ｎにおいて、最終加算結果が、中央コントローラ１１０に転送される。中央コントローラに転送される値は、すべてのコアプロセッサ、例えば、１２０−１〜１２０−Ｎに対する累積電力推定値として使用されてもよく、または、追加の演算処理が適用されてもよい。コアプロセッサにおいて実行される加法演算は、結果として、中央コントローラ１１０への最終結果の到達の時間遅延を生じる。
【００２９】
一例示的実施形態によれば、かかる時間遅延は、加算の適用およびビット単位の転送により低減されてもよい。言い換えれば、最下位ビット（ＬＳＢ）から開始して、一旦、加算が実行されると、加算結果ビットが転送されている間、キャリーオーバー値が保存される。次いで、キャリーオーバー値と、局所的に推定された電力消費値およびペイロード値の次のＬＳＢとが加算される。新規のキャリーオーバー値は保存され、加算結果ビットは、次のコアプロセッサに転送される。次のコアプロセッサにおいて、同様の操作が行われる。すなわち、ペイロードのビットが受信され次第、対応する加算が実行され、加算結果ビットが、別のコアプロセッサに転送される。このため、時間遅延は、著しく低減される。
【００３０】
図３Ｂにおいて、コアプロセッサは、４つのシリアル構成、例えば、１２０−１〜１２０−ｋ１、１２０−（ｋ１＋１）〜１２０−ｋ２、１２０−（ｋ２＋１）〜１２０−ｋ３、および、１２０−（ｋ３＋１）〜１２０−Ｎに編成される。ビット単位の加算および転送は、各シリアル構成内部で適用されてもよい。中央コントローラ１１０は、４つの電力推定値を、例えば、コアプロセッサ１２０−ｋ１、１２０−ｋ２、１２０−ｋ３、および１２０−Ｎから受信する。４つの電力推定値のそれぞれは、該当するシリアル構成のための累積電力推定値を表している。累積電力推定値を演算するために、中央コントローラ１１０は、例えば、受信した４つの電力推定値を合計する。中央コントローラ１１０は、すべてのコアプロセッサ、例えば、１２０−１〜１２０−Ｎに対する累積電力推定値を決定することに他の演算処理を実行してもよい。
【００３１】
図４は、複数のコプロセッサブロック、例えば、１３０−１〜１３０−Ｍからの蓄積電力推定用の構成を示すブロック図である。各コプロセッサブロック内部において、電力の大半、例えば、約９０％は、対応するクロックによって消費される。コプロセッサブロック、例えば、１３０−１、１３０−２、・・・、または１３０−Ｍは、１つ以上のクロックを有するかもしれない。一例示的実施形態によれば、中央コントローラ１１０は、対応する各クロックのための電力消費推定を可能にする、コプロセッサブロック、例えば、１３０−１〜１３０−Ｍからの情報を受信する。例えば、中央コントローラ１１０は、コプロセッサブロックの各クロックの修正クロック信号を受信する。コプロセッサブロック、例えば、１３０−１〜１３０−Ｍのクロックの推定電力消費値は、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎから蓄積される電力推定値と合計されて、マルチコアプロセッサチップ１００全体の全域累積電力消費推定値を生成する。
【００３２】
図５は、少なくとも１つの例示的実施形態によるコプロセッサブロッククロックのクロック信号５１０および対応する修正クロック信号５２０の例を示している。修正クロック信号５２０は、中央コントローラ１１０において、コプロセッサブロック、例えば、１３０−１、１３０−２、・・・、または１３０−Ｍから受信される。クロック信号５１０は通常、中央コントローラ１１０よりも高い周波数を有している。このため、クロック信号５１０が中央コントローラ１１０に送信される場合、中央コントローラは、対応する電力を推定するために、クロック信号５１０を適切にサンプリングしないかもしれない。クロック信号５１０は、コプロセッサブロック、例えば、１３０−１〜１３０−Ｍの異なるクロック信号５１０を非同期にするアイドル状態５１１の時間を含んでいてもよい。
【００３３】
一例示的実施形態によれば、修正クロック信号５２０は、クロック信号５１０におけるクロックサイクル数を修正クロック信号５２０内の単一サイクルに減少することによって生成される。例えば、クロック信号５１０内の３２クロックサイクルは、修正クロック信号５２０内の単一サイクルに相当する。このように、中央コントローラ１１０は、修正クロック信号５２０を適切にサンプリングすることができる。
【００３４】
各コプロセッサブロック、例えば、１３０−１、１３０−２、・・・、または１３０−Ｍは、同じコプロセッサブロック内のクロックのクロック活動のサイクルのカウントを提供するように構成されている。クロックサイクルのカウントに基づいて、クロック活動の表現、例えば、修正クロック信号５２０は、カウントされたクロック活動のサイクルの既定数、例えば、３２を、クロック活動の生成された表現内部で単一のシンボルにマッピングすることによって生成される。生成した表現は次いで、中央コントローラ１１０によって受信される。中央コントローラ１１０は、例えば、生成された各クロック活動の表現の電力消費を決定するようルックアップテーブルを採用してもよい。マルチコアプロセッサチップ１００全体に対する累積電力消費推定値の決定において、中央コントローラ１１０は、複数のコアプロセッサ、例えば、１２０−１〜１２０−Ｎの蓄積電力消費推定値、ならびに、コプロセッサブロック、例えば、１３０−１〜１３０−Ｍに該当する電力推定値を合計してもよい。
【００３５】
本発明を、その実施形態に関して特に示し、説明してきたが、形態および詳細における種々の変更を、添付の特許請求の範囲によって包含される本発明の適用範囲から逸脱することなく行ってもよいことは、当該技術に精通する者によって理解されよう。
【符号の説明】
【００３６】
１００  マルチコアプロセッサチップ
１１０  中央コントローラ
１２０  コアプロセッサ
１３０  コプロセッサブロック
５１０  クロック信号
５１１  アイドル状態
５２０  修正クロック信号
【図１】
2015079496.tif 000003
【図２】
2015079496.tif 000004
【図３Ａ】
2015079496.tif 000005
【図３Ｂ】
2015079496.tif 000006
【図４】
2015079496.tif 000007
【図５】
2015079496.tif 000008
【外国語明細書】
2015079496000001.pdf
2015079496000002.pdf
2015079496000003.pdf
2015079496000004.pdf