(57)【特許請求の範囲】
【請求項１】
複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を判別することと、
前記複数のプログラムの前記周波数に影響されにくいスレッドと、前記周波数に影響されやすいスレッドと、をプロセッサの同じコアに交互に割り当てることと、
前記プロセッサが前記周波数に影響されにくいスレッドを実行する場合に、前記プロセッサに供給される電力を低下させることと、
前記プロセッサが前記周波数に影響されやすいスレッドを実行する場合に、前記プロセッサに供給される電力を増加させることと、
を含む、電力バジェット方法。
【請求項２】
前記周波数に影響されやすいスレッドは、前記周波数に影響されにくいスレッドの後に続く、請求項１に記載の電力バジェット方法。
【請求項３】
前記プロセッサに供給される前記電力は、現在のスレッドと次のスレッドとの周波数感度レベルの相対的な関係に基づいて低下する、請求項２に記載の電力バジェット方法。
【請求項４】
前記プロセッサに供給される前記電力を低下させることは、前記プロセッサの動作周波数を低下させることを含み、前記プロセッサに供給される前記電力を増加させることは、前記プロセッサの動作周波数を増加させることを含む、請求項１〜３の何れかに記載の電力バジェット方法。
【請求項５】
前記周波数に影響されにくいスレッドは、メモリ関連の動作を含むスレッドであり、前記周波数に影響されやすいスレッドは、演算関連の動作を含むスレッドである、請求項１〜３の何れかに記載の電力バジェット方法。
【請求項６】
複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を判定する手段と、
前記複数のプログラムの前記周波数に影響されにくいスレッドと、前記周波数に影響されやすいスレッドと、をプロセッサの同じコアに交互に割り当てる手段と、
前記プロセッサが前記周波数に影響されにくいスレッドを実行する場合に、前記プロセッサに供給される電力を低下させる手段と、
前記プロセッサが前記周波数に影響されやすいスレッドを実行する場合に、前記プロセッサに供給される電力を増加させる手段と、
を備える、電力バジェットシステム。
【請求項７】
前記周波数に影響されやすいスレッドは、前記周波数に影響されにくいスレッドの後に続く、請求項６に記載の電力バジェットシステム。
【請求項８】
前記プロセッサに供給される前記電力は、現在のスレッドと次のスレッドとの周波数感度レベルの相対的な関係に基づいて低下する、請求項７に記載の電力バジェットシステム。
【請求項９】
前記プロセッサに供給される前記電力を低下させる手段は、前記プロセッサの動作周波数を低下させる手段を備え、前記プロセッサに供給される前記電力を増加させる手段は、前記プロセッサの動作周波数を増加させる手段を備える、請求項６〜８の何れかに記載の電力バジェットシステム。
【請求項１０】
前記周波数に影響されにくいスレッドは、メモリ関連の動作を含むスレッドであり、前記周波数に影響されやすいスレッドは、演算関連の動作を含むスレッドである、請求項６〜８の何れかに記載の電力バジェットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、プロセッサのパフォーマンスの最適化に関する。より詳細には、本発明は、プロセッサのパフォーマンスを改善するための電力バジェット方法及びシステムに関する。
【背景技術】
【０００２】
コンピュータ分野において、プロセッサのパフォーマンスを改善することは重要な側面である。プロセッサは、特定の範囲の動作周波数で設計されている。プロセッサに供給することができる最大電力は、例えば、温度、電力供給システムの電力供給能力、電力供給ネットワークの抵抗降下問題（resistance drop issue）等のいくつかの要因によって制限される。如何にして、プロセッサにアプリケーションやプログラムをより高速に実行させ、その電力制限内でより良いパフォーマンスを達成させるかは、難しい問題である。
【０００３】
現在、プロセッサの電力制限内でプロセッサのパフォーマンスを最適化するために様々な方法が提案されている。例えば１つの従来の方法は、加速処理ユニット（ＡＰＵ）システムで電力管理を行うために使用される協調ブースティング方法（cooperative boosting method）である。この方法では、ＣＰＵとＧＰＵとの間に電力が割り当てられ、パフォーマンス結合及び熱結合の効果を考慮して最適なパフォーマンスを達成する。
【０００４】
別の提案方法は、電力トークン分散方法（power token balancing method）であり、この方法は、電力を電力バジェット内に維持しながら（すなわち、重要でない（non-critical）スレッドから電力を取り出し、この電力を重要なスレッドに供給しながら）、電力バジェットを多重スレッドのワークロードに並行して割り当てて、パフォーマンスを改善する。図１は、この提案方法の概略図であって、コアＣ１，Ｃ２，Ｃ３，Ｃ４の各々には、同じ量の電力（例えば、図１に示す「１０」等）が割り当てられている。コア２（Ｃ２）及びコア３（Ｃ３）のスレッドがバリアに到達してスピン状態に移行すると、これらは少量の電力（図１に示す「４」等）しか消費せず、そして、電力トークン分散（ＰＴＢ）部は、冗長な電力バジェット（すなわち、図に示す「６」）をコア２／コア３からコア１（Ｃ１）／コア４（Ｃ４）に割り当てて、コア１／コア４内のスレッドの実行を加速させる。これにより、プロセッサのパフォーマンスを改善することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術における上記の方法は、実行パフォーマンスを改善することができるが、プロセッサのパフォーマンスを改善するための上記の従来方法は、空間的な電力の割り当てに基づいており、所定の短いタイミングウィンドウにおいてパフォーマンスを最適化しようとする。これらの従来の方法は、プロセッサのパフォーマンスに対する一時的な熱結合の影響を考慮しておらず、これにより、最適な結果に及ばない可能性がある。
【０００６】
従来のパフォーマンス改善方法の欠点を克服してプロセッサのパフォーマンスをさらに最適化するために、本発明は、プロセッサのパフォーマンスに対する一時的な熱結合の影響を考慮した電力バジェット方法及びシステムを提供する。
【課題を解決するための手段】
【０００７】
第１の態様では、電力バジェット方法が提供される。この方法は、プログラムの周波数に影響されにくいフェーズと、周波数に影響されやすいフェーズと、を予測することと、プロセッサによって実行されるプログラムが周波数に影響されにくいフェーズに移行する場合に、プロセッサに供給される電力を低下させることと、プロセッサによって実行されるプログラムが周波数に影響されやすいフェーズに移行する場合に、プロセッサに供給される電力を増加させることと、を含む。周波数に影響されやすいフェーズは、周波数に影響されにくいフェーズの後に続いてもよく、電力は、プロセッサの最大許容温度を超えることなく供給され得る。
【０００８】
第２の態様では、電力バジェット方法が提供される。この方法は、複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を判別することと、複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を同じコアに交互に割り当てることと、プロセッサが周波数に影響されにくいスレッドを実行する場合に、プロセッサに供給される電力を低下させることと、プロセッサが周波数に影響されやすいスレッドを実行する場合に、プロセッサに供給される電力を増加させることと、を含む。周波数に影響されやすいスレッドは、周波数に影響されにくいスレッドの後に続いてもよく、電力は、プロセッサの最大許容温度を超えることなく供給され得る。
【０００９】
第３の態様では、電力バジェットシステムが提供される。このシステムは、プログラムの周波数に影響されにくいフェーズと、周波数に影響されやすいフェーズと、を予測する手段と、プロセッサによって実行されるプログラムが周波数に影響されにくいフェーズに移行する場合に、プロセッサに供給される電力を低下させる手段と、プロセッサによって実行されるプログラムが周波数に影響されやすいフェーズに移行する場合に、プロセッサに供給される電力を増加させる手段と、を備える。周波数に影響されやすいフェーズは、周波数に影響されにくいフェーズに続いて移行されてもよく、電力は、プロセッサの最大許容温度を超えることなく供給され得る。
【００１０】
第４の態様では、電力バジェットシステムが提供される。このシステムは、複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を判別する手段と、複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を同じコアに交互に割り当てる手段と、プロセッサが周波数に影響されにくいスレッドを実行する場合に、プロセッサに供給される電力を低下させる手段と、プロセッサが周波数に影響されやすいスレッドを実行する場合に、プロセッサに供給される電力を増加させる手段と、を備える。周波数に影響されやすいスレッドは、周波数に影響されにくいスレッドに続いて移行されてもよく、電力は、プロセッサの最大許容温度を超えることなく供給され得る。
【００１１】
上述した方法のステップ及び上述したシステムを提供することによって、本発明は、プロセッサに供給される電力を一時的に最適化することによって、従来の電力管理スキームの欠点を克服し、プロセッサのパフォーマンスをさらに改善することができる。また、本発明の電力バジェット方法及びシステムは、熱を考慮し、プロセッサの信頼性を保証することもできる。
【００１２】
本発明は、限定ではなく一例として添付の図面に例示されており、これらの図において、同様の参照番号は同様の要素を示している。
【図面の簡単な説明】
【００１３】
【図１】従来技術におけるプロセッサのパフォーマンスを改善するための電力トークン分散方法の概略図である。
【図２】（ａ）は、従来技術の電力管理スキームによるプログラムの異なる実行フェーズにおける電力、温度及び最大許容温度の状態を示す図であり、（ｂ）は、本発明の電力バジェット方法において従来技術と比較した電力、温度及び最大許容温度の状態を示す図である。
【図３】１つのプログラムを実行する間に使用される、一時的な熱結合を考慮した電力バジェット方法のフローチャートである。
【図４】複数のプログラムを実行する間に使用される、一時的な熱結合を考慮した電力バジェット方法の例示的な実施形態のフローチャートである。
【発明を実施するための形態】
【００１４】
本発明は、添付の図面に示されるように、そのいくつかの態様を参照して詳細に記載される。以下の説明では、本発明を十分に理解するために、多数の具体的な詳細が記載されている。しかしながら、本発明の実施形態は、これらの具体的な詳細の一部又は全てを用いることなく実施され得ることが当業者には明らかであろう。他の例では、本発明を不必要に不明瞭にしないために、周知のプロセスステップ及び／又は構造が詳細に記載されていない。
【００１５】
プロセッサのパフォーマンスは、アーキテクチャ、キャッシュのサイズ等のいくつかのハードウェアの特性によって影響を受けることに加えて、プロセッサで実行されるワークロード又はプログラムの特性によっても影響を受ける。つまり、プログラムやアプリケーションの特性もプロセッサの実行パフォーマンスに影響を与える。一部のアプリケーション又はプログラムは、周波数に影響されやすい。それらがプロセッサによって実行される場合、プロセッサの実行パフォーマンスは、プロセッサの動作周波数のブーストによって大幅に向上し得る。一部のアプリケーション又はプログラムは、周波数に影響されにくい。それらがプロセッサによって実行される場合、周波数の変化によってプロセッサの実行パフォーマンスに及ぼす影響は小さい。一方、単一のプログラム又はアプリケーションの場合、周波数感度（frequency sensitivity）が様々な実行フェーズで変化し得る。プログラム又はアプリケーションの一部の実行フェーズは、周波数に影響されにくいものがあれば、周波数に影響されやすいものもあり、プロセッサの実行パフォーマンスにも影響する。
【００１６】
図２は、例えば双方向性のアプリケーション電力管理（ＢＡＰＭ）等の従来の電力管理スキームに従ってプログラム又はアプリケーションがプロセッサによって実行される場合のプログラム又はアプリケーションの様々な実行フェーズにおける電力、温度、最大許容温度の状態を、一時的な熱結合を考慮した電力バジェット方法と比較して示す概略図である。示されるように、図２は、（ａ）及び（ｂ）の２つの図を含んでおり、図２（ａ）は、例えばＢＡＰＭ等の従来の電力管理スキームに従ってプログラムが実行される場合のプログラムの様々な実行フェーズにおける電力、温度、最大許容温度の状態を示しており、図２（ｂ）は、本発明の説明的な一実施形態による、一時的な熱結合を考慮した電力バジェット方法に従ってプログラムが実行される場合のプログラムの様々な実行フェーズにおける電力、温度、最大許容温度の状態を示している。
【００１７】
図２において、図２（ａ）及び図２（ｂ）の２本の線Ｍは、プロセッサが到達することが許容され得る最大許容温度を示している。線Ｐは、プロセッサが従来の電力管理スキームに従って単一のプログラムを実行する場合に、プロセッサに供給される電力を表示しており、Ｐ’は、プロセッサが本発明の電力バジェット管理スキームに従って単一のプログラムを実行する場合に、プロセッサに供給される電力を示している。線Ｔは、プロセッサが従来の電力管理スキームに従って単一のプログラムを実行する場合のプロセッサの温度を示しており、Ｔ’は、プロセッサが本発明の電力バジェット管理スキームに従って単一のプログラムを実行する場合のプロセッサの温度を示している。
【００１８】
図２の例に示されるように、最初に、例示されたプログラムは、周波数に影響されにくいフェーズＳ１を有し、これは、プロセッサの実行パフォーマンスが周波数の変化による影響を受けにくいことを意味している。このフェーズでは、図２（ｂ）に示すように、プロセッサに供給される電力Ｐ’を従来技術における電力Ｐ（図２（ａ）を参照）よりも低くすることによって、プロセッサの温度を下げることができる。これにより、パフォーマンスがわずかに低下するだけで、このフェーズでより多くのサーマルヘッドルーム（thermal headroom）を得ることができる。例えば、プロセッサの動作周波数を低下させることで、プロセッサの電力を低下させることができる。その後、プログラムは、周波数に影響されやすいフェーズＳ２に移行する。ここで、周波数のブーストに伴って実行パフォーマンスを大幅に向上させることができる。このフェーズでは、図２（ｂ）に示すように、周波数に影響されにくいフェーズＳ１において得られた追加のサーマルヘッドルームを使用することによって、フェーズＳ２においてプロセッサに供給される電力Ｐ’を、プロセッサの最大許容温度Ｍを超えることなく、図２（ａ）に示されている同じフェーズにおいてプロセッサに供給される電力Ｐよりも高くなるように増加させることができる。あるいは又はさらに、プロセッサの電力をＰ’よりも低い電力に増加させて、最大許容温度Ｍを超えることなく、より長期間に亘ってこの電力で動作させることもできる。一態様では、プロセッサの動作周波数をブーストさせて、プロセッサの電力を増加させることができる。このようにして、プログラムの実行パフォーマンスを長期のタイミングウィンドウに亘って最適化することができ、これにより、全体的により高いパフォーマンスを達成することができる。図２に示すように、例えばＢＡＰＭ等の従来の電力管理スキームを使用してプログラムを終了するのに時間Ｔ２を要する。これと比較して、本発明の一時的な熱結合を考慮した電力バジェット方法では、時間Ｔ２より短い時間Ｔ１でプログラムを終了することができる。
【００１９】
説明的な態様では、図３は、単一のプログラム又はアプリケーションを実行する場合に用いられる、一時的な熱結合を考慮した電力バジェット方法のフローチャートを示している。この方法は、以下のステップを含む。先ず、ステップ３０において、プログラムの周波数に影響されにくいフェーズと、周波数に影響されやすいフェーズと、を予測する。次に、ステップ３２において、プロセッサによって実行されるプログラムが周波数に影響されにくいフェーズに移行した場合に、プロセッサに供給される電力を低下させる。次いで、方法は、ステップ３４において、プロセッサによって実行されるプログラムが周波数に影響されやすいフェーズに移行した場合に、プロセッサに供給される電力を増加させることを含む。一実施形態では、周波数に影響されやすいフェーズは、周波数に影響されにくいフェーズの後に続く。一態様では、プロセッサの動作周波数を増加又は低下させることによって、プロセッサに供給される電力を増減させることができる。
【００２０】
一態様において、上記のステップ３２において、現在のフェーズの周波数感度と次のフェーズの周波数感度とを用いて、現在のフェーズに対する最適な電力バジェットを決定する。すなわち、ステップ３２において、現在のフェーズと次のフェーズとの感度レベルの相対的な関係を用いて、電力低下度を決定する。例えば、一態様では、周波数感度レベルが現在のフェーズにおいて非常に低く、次のフェーズでは非常に高い場合に、現在のフェーズの電力を最小レベルまで低下させることができる。この結果、現在のフェーズのパフォーマンスを著しく低下させることなく、次のフェーズで最高の周波数ブーストを得ることができる。現在のフェーズの周波数感度レベルが中程度に低く、次のフェーズの感度が中程度である場合、現在のフェーズの電力を、最初のケースほど積極的ではない程度の比較的低いレベルに低下させることができる。極端な場合には、現在のフェーズと次のフェーズの周波数感度レベルが類似している場合、電力は低下しない。
【００２１】
一態様では、プログラムの周波数に影響されにくいフェーズは、例えば、ストレージ動作、アクセス動作等のメモリ関連の動作が実行されるフェーズであってもよい。プログラムの周波数に影響されやすいフェーズは、例えば、算術演算、論理演算等の演算関連の動作が実行されるフェーズであってもよい。
【００２２】
図３に示す上記の方法によれば、プログラムが周波数に影響されにくいフェーズに移行した場合に、プロセッサに供給される電力を低下させることによって、プロセッサがより低い温度で動作することができ、より多くの温度ヘッドルーム（すなわち、プロセッサの現在の温度と最大許容温度との差）を提供することができる。これを用いて、プロセッサが、プログラムの周波数に影響されやすいフェーズにおいて、より高い電力で動作するのを可能にし得る。この方法によって、周波数に影響されにくいフェーズにおけるパフォーマンスがわずかに低下しても、周波数に影響されやすいフェーズにおけるパフォーマンスは、周波数に影響されにくいフェーズにおいて低下したパフォーマンスよりも大幅に向上する。よって、全体として、プログラムを実行するためのプロセッサの全体的なパフォーマンスが改善される。
【００２３】
一態様では、図４は、複数のプログラムを実行するための一時的な熱結合を考慮した電力バジェット方法の例示的な実施形態のフローチャートを示している。この方法は、以下のステップを含む。先ず、ステップ４０において、複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を判別する。次に、ステップ４２において、複数のプログラムの周波数に影響されにくいスレッドと、周波数に影響されやすいスレッドと、を同じコアに交互に割り当てる。次いで、ステップ４４において、プロセッサが周波数に影響されにくいスレッドを実行する場合に、プロセッサに供給される電力を低下させる。そして、この方法は、ステップ４６において、プロセッサが周波数に影響されやすいスレッドを実行する場合に、プロセッサに供給される電力を増加させることを含む。一態様では、プロセッサは、周波数に影響されにくいスレッドに続いて周波数に影響されやすいスレッドを実行する場合に、プロセッサの最大許容温度を超えることなく電力を増加させることができる。一態様では、プロセッサの動作周波数を増加又は低下させることによって、プロセッサに供給される電力を増減させることができる。一態様では、プログラムの周波数に影響されにくいスレッドは、例えば、ストレージ動作、アクセス動作等のメモリ関連の動作を含むスレッドであってもよい。プログラムの周波数に影響されやすいスレッドは、例えば、算術演算、論理演算等の演算関連の動作を含むスレッドであってもよい。
【００２４】
一態様では、上記のステップ４４では、現在のスレッドの周波数感度と、次のスレッドの周波数感度とを用いて、現在のスレッドの最適な電力バジェットを決定する。すなわち、現在のスレッドと次のスレッドとの感度レベルの相対的な関係を用いて、ステップ４４における電力低下度を決定する。例えば、一態様では、周波数感度レベルが現在のスレッドにおいて非常に低く、次のスレッドにおいて非常に高い場合に、現在のスレッドの電力を最小レベルに下げることができる。この結果、現在のスレッドのパフォーマンスを著しく低下させることなく、次のスレッドにおいて最高の周波数ブーストを得ることができる。現在のスレッドの周波数感度レベルが中程度に低く、次のスレッドの感度が中程度の場合に、現在のスレッドの電力を、最初のケースほど積極的ではない程度の比較的低いレベルに下げることができる。極端な場合には、現在のスレッドと次のスレッドの周波数感度レベルが類似している場合、電力は低下しない。
【００２５】
図４に示す上記の方法によれば、プロセッサが周波数に影響されにくいスレッドを実行する場合に、プロセッサに供給される電力を低下させることによって、プロセッサがより低い温度で動作することができ、より多くの温度ヘッドルームを提供することができる。これを用いて、プロセッサが、プログラムの周波数に影響されやすいスレッドを実行する場合に、より高い電力で動作するのを可能にし得る。この方法によって、周波数に影響されにくいスレッドを実行するパフォーマンスがわずかに低下しても、周波数に影響されやすいスレッドを実行するパフォーマンスは、低下したパフォーマンスよりも大幅に向上する。よって、全体として、複数のプログラムを実行するためのプロセッサの全体的なパフォーマンスが改善される。
【００２６】
プログラムを実行するための全体のパフォーマンスを改善することに加えて、本発明の電力バジェット方法は、他の利点を生み出すことができる。例えば、本発明の電力バジェット方法は、熱を考慮し、プロセッサの信頼性を保証することができる。また、本発明の電力バジェット方法は、一時的な電力の割り当てに基づく電力バジェット方法であって、他の空間的な電力バジェット方法と組み合わせて、プロセッサのパフォーマンスの総合的な空間的及び時間的な最適化を実現することができる。
【００２７】
特徴及び要素は、特定の組み合わせで上記のように説明されているが、各特徴又は要素は、他の特徴及び要素なしに単独で、又は、他の特徴及び要素の有無にかかわらず様々な組み合わせで使用することができる。本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のためにコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアに実装されてもよい。コンピュータ可読媒体の例には、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープ等の磁気媒体や、ＣＤ−ＲＯＭ及びホログラフィックデバイス等の光学媒体や、フロプティカルディスク等の光磁気媒体や、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス、ＲＯＭ及びＲＡＭデバイス等のようにプログラムコードを記憶し実行するように特別に構成されたハードウェアデバイス等が含まれるが、これらに限定されない。
【００２８】
特許請求の範囲に記載された発明の趣旨及び範囲から逸脱することなく、本明細書に記載された実施形態に対して様々な修正及び変形を加え得ることが当業者には明らかであろう。よって、本明細書では、添付の特許請求の範囲及びその均等物の範囲内であれば、本明細書に記載された様々な実施形態の修正及び変形を包含することを意図している。
【図１】
0006776339.tif 000002
【図２】
0006776339.tif 000003
【図３】
0006776339.tif 000004
【図４】
0006776339.tif 000005