(57)【特許請求の範囲】
【請求項１】
コンピュータが、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する、
処理を実行することを特徴とする選択方法。
【請求項２】
前記状態情報を選択する処理では、前記所定消費電力値以下であるいずれかの状態情報のうち、測定した前記処理性能値が示す処理性能が最も高くなる稼働状態を示す状態情報を選択することを特徴とする請求項１に記載の選択方法。
【請求項３】
コンピュータが、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する、
処理を実行することを特徴とする選択方法。
【請求項４】
前記状態情報を選択する処理では、補正した処理性能値が示す前記プロセッサの処理性能が最も高くなる稼働状態を示す状態情報を選択することを特徴とする請求項３に記載の選択方法。
【請求項５】
前記コンピュータが、
前記複数の特定消費電力値の各々について、前記消費電力値および前記処理性能値を測定した際の特定周波数を、選択した前記状態情報についての前記比率に基づいて補正することを特徴とする請求項３または４に記載の選択方法。
【請求項６】
コンピュータに、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する、
処理を実行させることを特徴とする選択プログラム。
【請求項７】
コンピュータに、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する、
処理を実行させることを特徴とする選択プログラム。
【請求項８】
各要素の稼働状態を変更可能なプロセッサの消費電力値および処理性能値を測定可能な測定部と、
前記プロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を前記測定部によって測定させ、異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する制御部と、
を有することを特徴とする選択装置。
【請求項９】
各要素の稼働状態を変更可能なプロセッサの消費電力値および処理性能値を測定可能な測定部と、
前記プロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を前記測定部によって測定させ、異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する制御部と、
を有することを特徴とする選択装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、選択方法、選択プログラム、および選択装置に関する。
【背景技術】
【０００２】
従来、プロセッサの低消費電力化を図るため、プロセッサに供給するクロック信号の周波数を制御する技術が公知である（例えば、下記特許文献１参照。）。また、従来、プロセッサの低消費電力化を図るため、プロセッサに供給するクロック信号の周波数および電源電圧値を制御する技術が公知である（例えば、下記特許文献２参照。）。
【０００３】
また、仮想サーバシステムの管理装置が、サーバなどのハードウェア情報やサーバ上に構築された仮想サーバ情報を元に、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア数とメモリ容量のリソースに適した仮想サーバを検索することにより、仮想サーバシステムの低消費電力化を図る技術が公知である（例えば、下記特許文献３参照。）。
【０００４】
また、従来、プロセッサの消費電力値および処理性能値をシミュレーションによって見積もる技術が公知である（例えば、下記非特許文献１参照。）。
【０００５】
また、従来、プロセッサの各要素の稼働状態が変更される場合、周波数を制御するＤＦＳ（Ｄｙｎａｍｉｃ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）よりも低消費電力化を図れる場合があることは公知である（例えば、下記非特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３１７０５４号公報
【特許文献２】特開２００９−１７５７８８号公報
【特許文献３】特開２０１０−６１２７８号公報
【非特許文献】
【０００７】
【非特許文献１】Ｄａｖｉｄ  Ｂｒｏｏｋｓ、他２名、「Ｗａｔｔｃｈ：Ａ  Ｆｒａｍｅｗｏｒｋ  ｆｏｒ  Ａｒｃｈｉｔｅｃｔｕｒａｌ−Ｌｅｖｅｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｏｐｔｉｍｉｚａｔｉｏｎｓ」、ＩＳＣＡ、２０００、ｐ．８３−９４
【非特許文献２】Ｙａｓｕｋｏ  Ｅｃｋｅｒｔ、他３名、「Ｓｏｍｅｔｈｉｎｇ  Ｏｌｄ  ａｎｄ  Ｓｏｍｅｔｈｉｎｇ  Ｎｅｗ：Ｐ−ｓｔａｔｅｓ  ｃａｎ  Ｂｏｒｒｏｗ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ  Ｔｅｃｈｎｉｑｕｅｓ  Ｔｏｏ」、ＩＳＬＰＥＤ、２０１２
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、プログラムの実行においてプロセッサの消費電力値の条件が設定される場合、プロセッサが、その条件を満たしつつ処理性能が高くなる稼働状態を選択することは困難であるという問題点がある。
【０００９】
１つの側面では、本発明は、消費電力値の条件を満たし処理性能の高い稼働状態によりプロセッサがプログラムを実行することを可能にする選択方法、選択プログラム、および選択装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一の側面によれば、各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する選択方法、選択プログラム、および選択装置が提案される。
【００１１】
本発明の他の側面によれば、各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する選択方法、選択プログラム、および選択装置が提案される。
【発明の効果】
【００１２】
本発明の一態様によれば、消費電力値の条件を満たし処理性能の高い稼働状態によりプロセッサがプログラムを実行することを可能にする。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明にかかる選択装置による動作例１を示す説明図である。
【図２】図２は、本発明にかかる選択装置による動作例２を示す説明図である。
【図３】図３は、実施の形態にかかる選択装置のハードウェア構成例を示すブロック図である。
【図４】図４は、ＣＰＵの詳細例を示す説明図である。
【図５】図５は、選択装置の機能的構成例を示すブロック図である。
【図６】図６は、状態リスト例を示す説明図である。
【図７】図７は、消費電力値測定部の詳細例を示す説明図である。
【図８】図８は、測定結果を各状態情報に付与した状態リスト例を示す説明図である。
【図９】図９は、実施例１にかかる状態情報の選択例を示す説明図である。
【図１０】図１０は、制御用モード表例を示す説明図である。
【図１１】図１１は、実施例１にかかる選択装置による選択処理手順例を示すフローチャートである。
【図１２】図１２は、図１１に示した状態リストの生成処理手順例を示すフローチャートである。
【図１３】図１３は、図１１に示した消費電力値および処理性能値の測定処理を示すフローチャートである。
【図１４】図１４は、図１１に示した制御用モード表の生成処理を示すフローチャートである。
【図１５】図１５は、実施例２にかかる状態情報の選択例を示す説明図である。
【図１６】図１６は、実施例２にかかる制御用モード表例を示す説明図である。
【図１７】図１７は、ＤＦＳと実施例２とのそれぞれによる消費電力値および処理性能値の比較例を示す説明図である。
【図１８】図１８は、図１１に示した制御用モード表の生成処理を示すフローチャートである。
【図１９】図１９は、制御用モード表に基づく消費電力値制御例を示す説明図である。
【図２０】図２０は、ＣＰＵによる選択処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本発明にかかる選択方法、選択プログラム、および選択装置の実施の形態を詳細に説明する。
【００１５】
図１は、本発明にかかる選択装置による動作例１を示す説明図である。選択装置１００は、プロセッサによるプログラムの実行において、消費電力値の上限を満たしつつ処理性能が高くなるようなプロセッサの各要素の稼働状態を提供するためのテーブルを生成するコンピュータである。ここで、プロセッサとは、例えば、図１に示すＣＰＵ１０１であり、各要素の稼働状態を変更可能である。ＣＰＵ１０１の各要素とは、例えば、図１に示すような１次キャッシュＬ１や２次キャッシュＬ２、さらに、演算器などの命令実行に関する要素である。各要素の稼働状態を変更するとは、図１のような１次キャッシュＬ１や２次キャッシュＬ２を例に挙げると、例えばキャッシュのＷａｙ数を可変として各キャッシュに含まれる各Ｗａｙに対応する複数のブロックのうち、稼働させるブロックの数を変更させることである。具体的には、例えば、稼働状態を示す状態情報１１１と周波数を設定可能なレジスタをＣＰＵ１０１が有し、ＣＰＵ１０１の稼働状態は当該レジスタに設定された状態情報１１１が示す稼働状態に変更させることができる。また、ＣＰＵ１０１の各要素に与えるクロックの周波数は、当該レジスタに設定された周波数に変更させることができる。ＣＰＵ１０１は、選択装置１００が有するＣＰＵ１０１であってもよいし、選択装置１００が稼働状態を変更可能な他の装置が有するＣＰＵ１０１であってもよい。
【００１６】
まず、選択装置１００は、稼働状態を変更可能なＣＰＵ１０１の複数通りの稼働状態の各々について、稼働状態を示す状態情報１１１を取得する。より具体的に、状態情報１１１は、各要素の稼働状態の組み合わせを示す。複数通りの稼働状態は、例えば、消費電力値や処理性能値に基づいて特定プログラムに対して適した稼働状態をシミュレーションで求めることにより得られる。特定プログラムは、例えば、ＣＰＵ１０１に実行させるために用意されたプログラムであり、実際のアプリケーションのプログラムであってもよい。また、特定プログラムは、複数種類あってもよい。詳細例については、後述する。
【００１７】
図１に示すように、状態情報１１１−Ｆを例に挙げると、状態情報１１１−Ｆが示す稼働状態にＣＰＵ１０１が変更された場合、ＣＰＵ１０１内の１次キャッシュＬ１の４つのブロックＢ１１〜Ｂ１４のうち、ブロックＢ１１とブロックＢ１２とは稼働されているが、ブロックＢ１３とブロックＢ１４とは非稼働となる。ＣＰＵ１０１内の２次キャッシュＬ２の２つのブロックＢ２１とブロックＢ２２とのうち、ブロックＢ２１は稼働されているが、ブロックＢ２２は非稼働となる。図１に示す１次キャッシュＬ１の例では、クロック信号を供給するか否かを切り替え可能なクロックゲーティング素子ｇ１１〜ｇ１４がそれぞれクロック信号線と１次キャッシュＬ１のブロックとの間に設けられる。ＣＰＵ１０１は、クロックゲーティング素子ｇ１１〜ｇ１４を制御することによって切り替えを制御可能である。図１に示す２次キャッシュＬ２の例では、電源を供給するか否かを切り替え可能なパワーゲーティング素子ｇ２１，ｇ２２が電源供給線と２次キャッシュＬ２のブロックとの間に設けられる。ＣＰＵ１０１は、パワーゲーティング素子ｇ２１，ｇ２２を制御することにより切り替えを制御可能である。このようにして、各要素の稼働状態が変更される。
【００１８】
つぎに、選択装置１００は、取得した状態情報１１１の各々について、状態情報１１１が示す稼働状態に変更後のＣＰＵ１０１に特定プログラムを一定時間だけ実行させることにより、変更後のＣＰＵ１０１の消費電力値および処理性能値を測定する。一定時間は、定常的な消費電力値および性能値を取得するのに十分な時間であり、例えば利用者によって指定される。例えば、ＣＰＵ１０１の内部に消費電力値および処理性能値を測定可能な回路が予め設けられ、特定プログラムを実行させることにより測定する。また、処理性能値は、例えば、ＭＩＰＳ（Ｍｉｌｌｉｏｎ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｐｅｒ  Ｓｅｃｏｎｄ）値であり、ＭＩＰＳ値の場合、値が大きいほど処理性能が高いことを示す。また、消費電力値は、動的電力値と、リーク電流により消費される静的電力値と、に区別して測定してもよい。
【００１９】
つぎに、選択装置１００は、異なる複数の所定消費電力値の各々について、取得した状態情報１１１の中から、測定した消費電力値が所定消費電力値以下であるいずれかの状態情報１１１を、測定した処理性能値に基づいて選択する。具体的には、選択装置１００は、異なる複数の特定消費電力値を取得する。複数の特定消費電力値は、最小値から最大値までの間で所定幅ずつ異なる値である。所定幅の間隔が小さいほど、特定消費電力値の数は多くなる。所定消費電力値は、特定消費電力値そのものであってもよいし、特定消費電力値に誤差を加算させた値であってもよい。図１の例では、所定消費電力値は、特定消費電力値と誤差とを加算させた値とする。ここでは、例えば、所定消費電力値は、特定消費電力値と誤差とを加算させた値とし、誤差は５とする。図１の例では、特定消費電力値は、２０ずつ異なる値である。
【００２０】
例えば、特定消費電力値が９５であれば、所定消費電力値は１００であるため、所定消費電力値以下であり最も処理性能が高くなる状態情報１１１として、状態情報１１１−Ａが選択される。例えば、特定消費電力値が７５であれば、所定消費電力値は８０であるため、所定消費電力値以下であり最も処理性能が高くなる状態情報１１１として、状態情報１１１−Ｂが選択される。例えば、特定消費電力値が５５であれば、所定消費電力値は６０であるため、所定消費電力値以下であり最も処理性能が高くなる状態情報１１１として、状態情報１１１−Ｃが選択される。
【００２１】
そして、選択装置１００は、特定消費電力値の各々と、特定消費電力値について選択した状態情報１１１と、を関連付けたテーブル１２０を生成する。これにより、運用時に、実際の消費電力値の条件を満たし高処理性能な稼働状態に切り替えることが可能となる。消費電力値の条件とは、例えば、消費電力値の上限に関する条件である。
【００２２】
また、動作例１にかかる選択装置１００によれば、ＤＦＳと比較した場合に、電力効率を向上させることができる。ＤＦＳはプログラム実行時にＣＰＵの周波数を下げることで消費電力を下げる技術である。類似の技術にＤＶＦＳ（Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）があり、こちらはＤＦＳに加えて周波数を下げることにより生じるタイミング余裕の分だけ動作電圧を下げることによってさらに消費電力を下げる技術である。電力効率とは、単位消費電力あたりの処理量である。
【００２３】
ＣＰＵ１０１の処理性能はクロック信号の周波数に比例するため、ＤＦＳやＤＶＦＳを利用した消費電力制御においても消費電力を同程度削減するならばなるべく周波数を下げずに電力を下げたほうがよい。ＤＦＳでは、周波数のみを制御し電源電圧は変化させないため、消費電力値のうち動的電力値のみが周波数に比例して減少する。これに対して、ＤＶＦＳは、さらに電源電圧値が周波数に応じて下がるため、動的電力値は周波数の３乗程度のオーダーで変動する。また、配線幅およびゲート幅の微細化の進んだテクノロジではＤＩＢＬ（Ｄｒａｉｎ  Ｉｎｄｕｃｅｄ  Ｂａｒｒｉｅｒ  Ｌｏｗｅｒｉｎｇ）効果などにより電源電圧値が下がると、リーク電流も減少するため、動的電力値だけでなく静的電力値も同程度のオーダーで下がる。そのため、ＤＶＦＳはＤＦＳよりも効率よく消費電力値を下げることが可能である。
【００２４】
一方、微細化が進むにつれて、テクノロジースケーリングの限界によりトランジスタの最低動作電圧値が下げられない。また、半導体集積回路に混載されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）マクロやアナログマクロなどの動作保証最低電圧値がディジタル回路の動作保証最低電圧値のようには下げられない。そのため、ＤＶＦＳによって制御可能な周波数の範囲が狭まっている。また、電源電圧値は周波数と比較した場合に制御が複雑であり、制御に要する時間が大きい。また、電源電圧値の変動時の動作を保証させるための設計や検証が周波数の変動時の動作を保証させるための設計や検証よりも困難である。そのため、電源電圧値の制御を消費電力制御の手段として利用できない場合もある。これに対して、動作例１にかかる選択装置１００によれば、電源電圧値を変化させることなく、ＤＦＳと比較した場合に電力効率を向上させることができる。
【００２５】
図２は、本発明にかかる選択装置による動作例２を示す説明図である。動作例２では、図１に示す動作例１と状態情報１１１を選択する場合の例が異なり、各状態情報１１１について測定については同一処理であるため、詳細な説明を省略する。また、図１に示す選択装置１００と、図２に示す選択装置１００とは、異なる装置であってもよいが、ハードウェア構成などが同一であってよいため、ここでは同一符号を付す。選択装置１００は、異なる複数の特定消費電力値の各々について、取得した状態情報１１１のうちのいずれかの状態情報１１１を、測定した処理性能値を測定した消費電力値と特定消費電力値との比率とに基づき補正した処理性能値に基づいて、選択する。また、選択装置１００は、補正した処理性能値が示すＣＰＵ１０１の処理性能が最も高くなる稼働状態を示す状態情報１１１を選択する。具体的には、選択装置１００は、「測定した処理性能値×（特定消費電力値／測定した消費電力値）」により測定した処理性能値を補正する。
【００２６】
ここでは、例えば、測定時の周波数が設定可能な最も高い周波数とし、測定時の周波数よりも低く設定できるが、測定時の周波数よりも高く設定できないこととする。図２に示すように特定消費電力値が５５の場合を例に挙げると、状態情報１１１−Ａについての補正処理性能値は、「１００×（５５／９５）」であり、５７．９である。状態情報１１１−Ｂについての補正処理性能値は、「８０×（５５／７５）」であり、５８．７である。状態情報１１１−Ｃについての補正処理性能値は、「４０×（５５／６０）」であり、３６．７である。状態情報１１１−Ｄ〜状態情報１１１−Ｅについては、処理性能値が示す処理性能が状態情報１１１−Ｃよりも低く、周波数を高く変更しなければ、処理性能値を補正できないため、補正対象から除外される。そして、図１の例では、上述したように、処理性能値がＭＩＰＳ値であれば、選択装置１００は、特定消費電力値が５５の場合、補正処理性能値が最も大きい値である状態情報１１１−Ｂを選択する。また、より具体的には、消費電力値が、動的電力値と、リーク電流値である静的電力値と、に区別して測定された場合、「動的電力値／（特定消費電力値−静的電力値）」を比率とする。この場合の詳細例は、後述する。
【００２７】
さらに、選択装置１００は、複数の特定消費電力値の各々について、消費電力値および処理性能値を測定した時の周波数を、選択した状態情報１１１についての比率に基づいて補正する。
【００２８】
このように、測定した消費電力値が特定消費電力値に近い状態情報１１１がなくとも、周波数を変更させることが可能であれば、周波数を変更させて処理性能が高くなる状態情報１１１を選択することができる。そして、選択装置１００は、特定消費電力値の各々と、特定消費電力値について選択した状態情報１１１と、補正した周波数と、を関連付けたテーブル２００を生成する。これにより、実際の消費電力の上限を満たしつつ高処理性能な稼働状態を選択させることが可能となる。また、動作例２にかかる選択装置１００によれば、ＤＦＳと比較した場合に、電力効率を向上させることができる。
【００２９】
（選択装置１００のハードウェア稼働状態例）
図３は、実施の形態にかかる選択装置のハードウェア構成例を示すブロック図である。図３において、選択装置１００は、ＣＰＵ１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０１と、ＲＡＭ３０２と、ディスクドライブ３０３と、ディスク３０４と、を有する。選択装置１００は、Ｉ／Ｆ（ＩｎｔｅｒＦａｃｅ）３０５と、入力装置３０６と、出力装置３０７と、を有している。また、各部はバス３００によってそれぞれ接続される。
【００３０】
ここで、ＣＰＵ１０１は、選択装置１００の全体の制御を司る。ＲＯＭ３０１は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０２は、ＣＰＵ１０１のワークエリアとして使用される。ディスクドライブ３０３は、ＣＰＵ１０１の制御にしたがってディスク３０４に対するデータのリード／ライトを制御する。ディスク３０４は、ディスクドライブ３０３の制御で書き込まれたデータを記憶する。ディスク３０４としては、磁気ディスク、光ディスクなどが挙げられる。
【００３１】
Ｉ／Ｆ３０５は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、Ｉ／Ｆ３０５は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０５には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３２】
入力装置３０６は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置３０６は、カメラから画像や動画を取り込むこともできる。また、入力装置３０６は、マイクから音声を取り込むこともできる。出力装置３０７は、ＣＰＵ１０１の指示により、データを出力するインターフェースである。出力装置３０７には、ディスプレイやプリンタが挙げられる。
【００３３】
図４は、ＣＰＵの詳細例を示す説明図である。図４の例では、ＣＰＵ１０１は、命令バッファ４１１、デコーダ４１２、リザベーションステーション４１３、アップデートバッファ４１４、Ｆｌｏａｔｉｎｇレジスタファイル４１５、レジスタファイル４１６等の要素を有する。また、ＣＰＵ１０１は、各種演算パイプライン４１７〜４１９、１次キャッシュＬ１、２次キャッシュＬ２、Ｍｏｖｅ−ｏｕｔ  Ｂｕｆｆｅｒ４２０、Ｍｏｖｅ−ｉｎ  Ｂｕｆｆｅｒ４２１などの要素を有する。ＣＰＵ１０１は、状態情報に基づいて稼働状態を変更可能である。具体的には、ＣＰＵ１０１は、各要素と、各要素にクロック信号を供給するＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）４０４と、消費電力制御部４０３と、消費電力値測定部４０１と、制御用モード表格納バッファ４０５と、処理性能値測定部４０２と、を有する。ＰＬＬ４０４は、消費電力制御部４０３によってクロック信号の周波数が調整される。制御用モード表格納バッファ４０５は、本実施の形態において生成される制御用モード表が格納される。実施の形態では、制御用モード表格納バッファ４０５をＣＰＵ１０１の内部に設ける例を挙げるが、これに限らず、ＣＰＵ１０１外部のＲＡＭ３０２やディスク３０４などの記憶装置であってもよい。消費電力制御部４０３と、消費電力値測定部４０１と、処理性能値測定部４０２と、の詳細については、後述する。
【００３４】
また、例えば、各要素の部分要素へクロック信号を供給するか否かを切り替え可能なクロックゲーティング素子が部分要素のクロック信号線にそれぞれ設けられ、ＣＰＵ１０１がクロックゲーティング素子を制御することにより、各要素の稼働状態を変更する。また、例えば、電源供給回路から各要素の部分要素へ電源を供給するか否かを切り替え可能なパワーゲーティング素子がブロックの電源供給線にそれぞれ設けられ、ＣＰＵ１０１がパワーゲーティング素子を制御することにより、各要素の稼働状態を変更する。
【００３５】
（選択装置１００の機能的構成例）
図５は、選択装置の機能的構成例を示すブロック図である。選択装置１００は、状態情報生成部５０１と、取得部５０２と、測定部５０３と、選択部５０４と、周波数導出部５０５と、制御用モード表生成部５０６と、の制御部を有する。制御部（測定部５０３から制御用モード表生成部５０６）の処理は、例えば、ＣＰＵ１０１がアクセス可能な記憶装置に記憶された選択プログラムにコーディングされる。そして、ＣＰＵ１０１が記憶装置から情報処理プログラムを読み出して、選択プログラムにコーディングされた処理を実行する。これにより、各部の処理が実現される。また、制御部（測定部５０３から制御用モード表生成部５０６）の処理結果は、例えば、ＲＡＭ３０２、ディスク３０４などの記憶装置に記憶される。
【００３６】
また、本実施の形態については、選択部５０４による選択処理が異なる実施例１と実施例２とに分けて説明する。実施例１では、複数の状態情報から、測定した消費電力値が特定消費電力値以下であるいずれかの状態情報を選択する。実施例２では、複数の状態情報から、測定した処理性能値を測定した消費電力値と特定消費電力値によって補正した処理性能値が最も高くなる状態情報を選択する。なお、実施例１では、上述した図１に示す動作例１の詳細を示し、実施例２では、上述した図２に示す動作例２の詳細を示す。また、周波数導出部５０５による処理は、実施例２において行われる処理であり、実施例１において行われる処理でない。
【００３７】
（実施例１）
実施例１では、各稼働状態についてＣＰＵ１０１の処理性能値および消費電力値を測定する。そして、実施例１では、複数の所定電力値のそれぞれを上限として性能が高くなる各稼働状態を測定結果により選択する。これにより、電力値の上限ごとに高処理性能な稼働状態を運用時に特定することが可能となる。
【００３８】
状態情報生成部５０１は、ＣＰＵ１０１の特定の稼働状態を示す状態情報を取得する。特定の稼働状態とは、基準となる稼働状態である。特定の稼働状態を示す状態情報を特定状態情報と称する。
【００３９】
状態情報生成部５０１は、特定の稼働状態においてＣＰＵ１０１が特定プログラムを実行した場合の特定処理性能値をシミュレーションによって得る。ここでのシミュレーションは、例えば、上述した非特許文献１などのシミュレーション技術を用いればよい。
【００４０】
状態情報生成部５０１は、所定範囲内の異なる複数の下限処理性能値の各々について、ＣＰＵ１０１が特定プログラムを実行した場合のシミュレーションを行う。これにより、状態情報生成部５０１は、処理性能値が下限処理性能値以上となる稼働状態から、消費電力値が最も小さくなる稼働状態を示す状態情報を生成する。所定範囲は、例えば、特定処理性能値から最低処理性能値までの範囲である。最低処理性能値については、利用者によって定められ、予めＲＡＭ３０２やディスク３０４などの記憶装置に記憶される。また、特定プログラムは、生成された制御用モード表で電力を調整されるプログラムを用いることによりそのプログラムで電力効率が高くなる稼働状態が生成される。また、調整対象となるプログラムを用いずに、例えば、整数演算重視のプログラム、浮動小数点演算重視のプログラム、キャッシュアクセス重視のプログラム、メモリアクセス重視のプログラムなどのＣＰＵ１０１のいずれかの要素の利用に特徴がある複数のプログラムを用いてもよい。この場合、この複数のプログラムのうち測定部５０３で実行されるプログラムと要素の利用状況が類似したプログラムを用いて生成された稼働状態において高い電力効率となる。特定プログラムは、予めＲＡＭ３０２やディスク３０４などの記憶装置に記憶される。
【００４１】
具体的には、状態情報生成部５０１は、ＣＰＵ１０１について、可変値を取る各要素が取りうる値の組み合わせとして得られる全稼働状態を探索空間としてその範囲で下限性能制約の元で消費電力最小となる稼働状態を求める。求める解は近似解で構わない。各要素が取りうる値の範囲とは、例えば、１次キャッシュＬ１を例に挙げると、１次キャッシュＬ１が有するブロックのうち稼働可能な数の範囲であり、１次キャッシュＬ１の場合、１〜４となる。探索に用いる各稼働状況の評価手段としては、非特許文献１のような電力・性能評価技術を用いることができる。最適解の探索手法としては、例えばＣＰＵの特定の１要素の値を一段階変動させた稼働状態を近傍解とみなして近傍探索を繰り返す逐次探索のような単純な最適化手法を用いてもよいし、より質の良い近似解を探索する高度なアルゴリズムを用いてもよい。状態情報生成部５０１は、異なる複数の下限処理性能値の各々について得られた状態情報を状態リスト６００に登録する。
【００４２】
図６は、状態リスト例を示す説明図である。状態リスト６００は、複数通りの稼働状態のそれぞれについての稼働状態を示す状態情報６０１が含まれる。状態情報６０１は、ＣＰＵ１０１の要素のそれぞれについて、要素内の稼働させる部分要素の数や同一要素のうち稼働させる要素の数を有する。具体的には、状態リスト６００は、演算パイプ数、１次キャッシュＬ１Ｗａｙ数、命令発行幅、ＭＩＢエントリ数などのフィールドを有する。各フィールドに情報が設定されることにより、状態情報（６０１−Ａ〜６０１−Ｄなど）として記憶される。例えば、演算パイプ数のフィールドには、稼働させる演算パイプの数が設定される。１次キャッシュＬ１Ｗａｙ数のフィールドには、稼働させる１次キャッシュＬ１のＷａｙ数が設定される。例えば、命令発行幅のフィールドには、デコーダ４１２からリザベーションステーション４１３へ並列に発行可能な命令の数である命令発行幅が設定される。例えば、ＭＩＢエントリ数のフィールドには、Ｍｏｖｅ−ｉｎ  Ｂｕｆｆｅｒ４２１のエントリ数が設定される。状態リスト６００は、例えば、ＲＡＭ３０２やディスク３０４などの記憶装置に記憶される。
【００４３】
取得部５０２は、稼働状態を変更可能なＣＰＵ１０１の複数通りの稼働状態の各々について、稼働状態を示す状態情報６０１を取得する。ここでは、取得部５０２は、状態情報生成部５０１によって生成された状態リスト６００を取得する。
【００４４】
測定部５０３は、取得された状態情報６０１の各々について、状態情報６０１が示す稼働状態に変更後のＣＰＵ１０１に特定プログラムを一定時間実行させることにより、変更後のＣＰＵ１０１の消費電力値および処理性能値を測定する。一定時間については、利用者によって定められ、予めＲＡＭ３０２やディスク３０４などの記憶装置に記憶される。具体的には、測定部５０３は、消費電力制御部４０３と、消費電力値測定部４０１と、処理性能値測定部４０２と、に消費電力値および処理性能値を測定させる。例えば、消費電力制御部４０３には、周波数と、状態情報６０１と、が設定可能であり、測定された現在の消費電力値が設定される現モード設定レジスタ４０６がある。
【００４５】
ここでは、例えば、測定部５０３は、周波数と状態情報６０１とを設定する。消費電力制御部４０３は、設定されたＣＰＵ１０１の稼働状態を状態情報６０１が示す稼働状態に変更し、ＣＰＵ１０１の稼働状態に供給されるクロック信号の周波数を設定した周波数となるように変更する。そして、測定部５０３は、測定した消費電力値を現モード設定レジスタ４０６に設定する。実施例１では、基準となる周波数を設定する。ここで、実行時間は、例えば、処理性能値と消費電力値を計測可能な時間である。図示しないが、処理性能値測定部４０２は、ＣＰＵ１０１中の命令発行部分に毎サイクルの命令発行数を一定期間ごとに積算していく回路を設けることなどにより処理性能値を測定することができる。命令発行部分とはデコーダ４１２からリザベーションステーション４１３に命令情報を転送する部分であり、前述の積算回路はデコーダ４１２からリザベーションステーション４１３に転送される命令数を積算する。また、例えば、消費電力値は、静的電力値と動的電力値とに区別して測定される。
【００４６】
図７は、消費電力値測定部の詳細例を示す説明図である。消費電力値測定部４０１は、ＣＰＵ１０１内の各要素の動作率に基づいて動的電力値を見積もり、変動部分の静的電力値と非変動部分の静的電力値とに基づいて静的電力値を見積もる。
【００４７】
具体的には、消費電力値測定部４０１は、係数補正部によって、状態情報６０１を用いて各動作率の係数を補正する。係数１〜Ｎの各々は、各要素の動作率情報が示す動作率に基づいて回帰分析などの手法により事前に定めた値である。係数１〜Ｎは、ＣＰＵ１０１内のレジスタなどに予め設定される。状態情報６０１は、ＣＰＵ１０１の現モード設定レジスタ４０６から取得される。そして、消費電力値測定部４０１は、補正した係数１’〜Ｎ’と動作率情報が示す動作率とを乗算することにより、各要素の動的電力値を算出する。動作率情報１〜Ｎは、例えば、それぞれＣＰＵ１０１内の各要素の動作率を示す情報である。動作率情報は、例えば、１次キャッシュＬ１の動作率を示す情報、演算器の動作率を示す情報などである。１次キャッシュＬ１の動作率は、１次キャッシュＬ１に対する単位時間当たりのアクセス回数などである。図示していないが、各要素に各要素へのアクセスを測定可能なカウンタなどを予め設け、カウンタの値に基づき動作率が算出されることとする。そして、消費電力値測定部４０１は、動的電力値の総和を算出する。つぎに、消費電力値測定部４０１は、周波数変換部よって、各要素の動的電力値の総和に対して周波数変換を行い、動的電力値を算出する。
【００４８】
消費電力値測定部４０１は、静的電力値について事前に見積もった平均条件におけるＣＰＵ１０１の静的電力値を個々のプロセスのばらつき情報と温度情報によって補正して見積もる。具体的には、消費電力値測定部４０１は、各要素の物理的な素子数に基づく変動部分１静的電力値から変動部分Ｍ静的電力値の各々を、電力補正部によって、状態情報６０１を用いて補正する。ここでの静的電力値は、予めＣＰＵ１０１内のレジスタに設定される。１次キャッシュＬ１を例に挙げると、４ブロックのうち、２ブロックのみを動作させる場合、１次キャッシュＬ１の静的電力値の半分の値が補正された変動部分の静的電力値となる。ただし、パワーゲーティングがされない場合、各要素の静的電力値は変動しないため、すべて非変動部分静的電力値は固定値となり、静的電力値は状態情報６０１によって補正されない。
【００４９】
つぎに、消費電力値測定部４０１は、補正後の変動部分１静的電力値から変動部分Ｍ静的電力値と、非変動部分の静的電力値と、を加算する。そして、消費電力値測定部４０１は、製造ばらつきなどによるばらつき変換や温度による温度変換、電源電圧変換などの変換を行い、静的電力値を出力する。製造ばらつきを示すばらつき情報は、例えば、予めＣＰＵ１０１内のレジスタに設けられた情報であったり、入力装置３０６を介して取得された情報である。温度を示す温度情報は、例えば、温度を測定可能な装置から取得された情報である。電源電圧値は、ＣＰＵ１０１内の各要素に電源電圧を供給する回路から取得された値である。消費電力値の測定結果は、例えば、ＲＡＭ３０２やディスク３０４などの記憶装置や現モード設定レジスタ４０６などに設定される。
【００５０】
また、各消費電力値測定部４０１と処理性能値測定部４０２とは、論理積回路、否定論理回路、論理和回路や、ラッチ回路であるＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）などの素子によって形成されてもよい。また、各部は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によって実現されてもよい。具体的には、例えば、上述した消費電力値測定部４０１と処理性能値測定部４０２との機能をハードウェア記述言語などによってネットリストに機能定義し、そのネットリストを論理合成してＡＳＩＣやＰＬＤに与えることにより、各部を実現してもよい。
【００５１】
また、消費電力値測定部４０１と処理性能値測定部４０２は、ＣＰＵ１０１がアクセス可能な記憶装置に記憶された測定プログラムにコーディングされてもよい。そして、ＣＰＵ１０１が記憶装置から測定プログラムを読み出して、測定プログラムにコーディングされた処理を実行する。これにより、消費電力値測定部４０１と処理性能値測定部４０２の処理が実現されてもよい。また、消費電力値測定部４０１と処理性能値測定部４０２による測定結果は、例えば、ＲＡＭ３０２、ディスク３０４などの記憶装置に記憶されてもよいし、ＣＰＵ１０１内に専用のレジスタを予め設けておき、当該専用のレジスタに設定されてもよい。
【００５２】
図８は、測定結果を各状態情報に付与した状態リスト例を示す説明図である。例えば、状態リスト６００内の各状態情報６０１には、動的電力値と、静的電力値と、処理性能値とが、付与される。
【００５３】
選択装置１００は、異なる複数の特定消費電力値の各々について、取得した状態情報６０１の中から、測定した消費電力値が特定消費電力値との差が所定値以下である状態情報６０１のうちのいずれかの状態情報６０１を、測定した処理性能値に基づいて選択する。複数の特定消費電力値については、予め設計者によって定められる。また、選択装置１００は、所定値以下である状態情報６０１のうちのいずれかの状態情報６０１のうち、測定した処理性能値が示す処理性能が最も高くなる稼働状態を示す状態情報６０１を選択する。そして、選択装置１００は、選択結果を制御用モード表１０００として出力する。
【００５４】
図９は、実施例１にかかる状態情報の選択例を示す説明図である。グラフは、横軸が処理性能値を示し、縦軸が消費電力値を示す。○によって示す点は、各状態情報６０１について測定した処理性能値と測定した消費電力値とに基づいてプロットされた点である。●によって示す点は、特定消費電力値Ｐ１〜Ｐ５について選択された構成情報について測定した処理性能値と測定した消費電力値とに基づいてプロットされた点である。特定消費電力値Ｐ０については、特定状態情報ＩＮＩが選択される。
【００５５】
具体的には、選択部５０４は、状態リスト６００内の状態情報６０１を、静的電力値と動的電力値との合計値が大きい順にソートする。そして、選択装置１００は、状態リスト６００から、ソート後の状態リスト６００において、処理性能値が降順になっていない状態情報６０１を削除する。これにより、低電力効率の稼働状態を示す状態情報６０１を削除することができる。ここでは、例えば、状態情報６０１−Ｂ、状態情報６０１−Ｃ、状態情報６０１−Ｅ、状態情報６０１−Ｊが状態リスト６００から削除される。
【００５６】
つぎに、選択部５０４は、複数の所定消費電力値の各々について、測定された消費電力値が所定消費電力値以下となるいずれかの状態情報６０１を処理性能値に基づいて選択する。複数の所定消費電力値は、例えば、それぞれ特定消費電力値Ｐ１〜Ｐ５そのもの、または特定消費電力値Ｐ１〜Ｐ５の各々に許容可能な誤差を含めた値である。また、選択部５０４は、処理性能値が示す処理性能が最も高い状態情報６０１を選択する。
【００５７】
具体的には、選択部５０４は、各状態情報６０１についての静的電力値と動的電力値との合計値と、特定消費電力値と、の差を算出する。そして、選択部５０４は、複数の特定消費電力値Ｐ１〜Ｐ５の各々について、差が所定値以内となる状態情報６０１を検出する。所定値は、許容可能な誤差である。また、選択部５０４は、差が所定値以内となる状態情報６０１のうち、処理性能値が示す処理性能が最も高い状態情報６０１を選択する。また、選択部５０４は、差が所定値以内となる状態情報６０１がない場合、合計値が特定消費電力値以下である状態情報６０１のうち、処理性能値が示す処理性能が最も高い状態情報６０１を選択する。
【００５８】
例えば、選択部５０４は、特定消費電力値Ｐ１について、状態情報６０１−Ａを選択する。例えば、選択部５０４は、特定消費電力値Ｐ２について、状態情報６０１−Ｄを選択する。例えば、選択部５０４は、特定消費電力値Ｐ３について、状態情報６０１−Ｆを選択する。例えば、選択部５０４は、特定消費電力値Ｐ４について、状態情報６０１−Ｇを選択する。例えば、選択部５０４は、特定消費電力値Ｐ５について、状態情報６０１−Ｈを選択する。
【００５９】
制御用モード表生成部５０６は、複数の特定消費電力値Ｐ０〜Ｐ５の各々と、特定消費電力値について選択した状態情報６０１と、測定時の周波数と、を関連付けたテーブルを生成する。当該テーブルは、制御用モード表１０００と称する。例えば、生成された制御用モード表１０００は、ＲＡＭ３０２やディスク３０４などの記憶装置に記憶させる。また、制御用モード表１０００を用いた制御処理が行われる前に、ＣＰＵ１０１は、制御用モード表１０００を制御用モード表格納バッファ４０５に記憶される。
【００６０】
図１０は、制御用モード表例を示す説明図である。制御用モード表１０００は、例えば、特定消費電力値、周波数、状態情報６０１のフィールドを有する。特定消費電力値のフィールドには、上述した特定消費電力値が設定される。周波数のフィールドには、測定時の周波数が設定される。状態情報６０１のフィールドには、選択された状態情報６０１が設定される。図１０の例では、状態情報６０１のフィールドには、状態情報６０１を省略して状態情報６０１を示す識別情報が設定されているが、実際には図６に示した状態情報６０１のように各要素の稼働状態などが設定される。各フィールドに情報が設定されることにより、レコード（１００１−０〜１００１−５）として記憶される。
【００６１】
（実施例１にかかる選択装置１００による選択処理手順例）
図１１は、実施例１にかかる選択装置による選択処理手順例を示すフローチャートである。選択装置１００は、特定プログラムを取得する（ステップＳ１１０１）。つぎに、選択装置１００は、特定プログラムに基づき状態リスト６００の生成処理を行う（ステップＳ１１０２）。選択装置１００は、特定プログラムに基づき消費電力値および処理性能値の測定処理を行う（ステップＳ１１０３）。選択装置１００は、制御用モード表１０００の生成処理を行う（ステップＳ１１０４）。そして、選択装置１００は、運用時に特定プログラムを実行し（ステップＳ１１０５）、一連の処理を終了する。
【００６２】
図１２は、図１１に示した状態リストの生成処理手順例を示すフローチャートである。選択装置１００は、特定の稼働状態を示す特定状態情報ＩＮＩを取得する（ステップＳ１２０１）。選択装置１００は、取得した特定状態情報ＩＮＩが示す稼働状態に変更後のＣＰＵ１０１のモデルによる特定プログラムを実行した場合の処理性能値を性能評価シミュレーションにより導出する（ステップＳ１２０２）。選択装置１００は、処理性能刻み値ｘを取得する（ステップＳ１２０３）。
【００６３】
つぎに、選択装置１００は、最低処理性能値ｙを取得する（ステップＳ１２０４）。そして、選択装置１００は、状態リスト６００＝空とする（ステップＳ１２０５）。選択装置１００は、下限処理性能値＝導出した処理性能値−処理性能刻み値ｘとする（ステップＳ１２０６）。選択装置１００は、下限処理性能値≧最低処理性能値ｙであるか否かを判断する（ステップＳ１２０７）。下限処理性能値≧最低処理性能値ｙである場合（ステップＳ１２０７：Ｙｅｓ）、選択装置１００は、特定プログラムを実行した場合の処理性能値が示す処理性能が、下限処理性能値が示す処理性能よりも高い状態情報６０１のうち、消費電力値が最小となる稼働状態を示す状態情報６０１を生成する（ステップＳ１２０８）。選択装置１００は、生成した状態情報６０１が状態リスト６００に含まれているか否かを判断する（ステップＳ１２０９）。
【００６４】
生成された状態情報６０１が状態リスト６００に含まれている場合（ステップＳ１２０９：Ｙｅｓ）、選択装置１００は、ステップＳ１２１１に進む。生成された状態情報６０１が状態リスト６００に含まれていない場合（ステップＳ１２０９：Ｎｏ）、選択装置１００は、状態情報６０１を状態リスト６００に追加する（ステップＳ１２１０）。選択装置１００は、下限処理性能値＝下限処理性能値−処理性能刻み値ｘとし（ステップＳ１２１１）、ステップＳ１２０７へ戻る。ステップＳ１２０７において、下限処理性能値≧最低処理性能値ｙでない場合（ステップＳ１２０７：Ｎｏ）、選択装置１００は、一連の処理を終了する。
【００６５】
図１３は、図１１に示した消費電力値および処理性能値の測定処理を示すフローチャートである。選択装置１００は、状態リスト６００のうち、未選択な状態情報６０１があるか否かを判断する（ステップＳ１３０１）。未選択な状態情報６０１がある場合（ステップＳ１３０１：Ｙｅｓ）、選択装置１００は、未選択な状態情報６０１から１つの状態情報６０１を選択する（ステップＳ１３０２）。選択装置１００は、選択した状態情報６０１が示す稼働状態にＣＰＵ１０１の各要素の稼働状態を変更する（ステップＳ１３０３）。
【００６６】
選択装置１００は、変更後の稼働状態によって特定プログラムを所定時間実行し、消費電力値と処理性能値とを測定する（ステップＳ１３０４）。選択装置１００は、測定した消費電力値と処理性能値とを選択した状態情報６０１に付与し（ステップＳ１３０５）、ステップＳ１３０１へ戻る。
【００６７】
ステップＳ１３０１において、状態リスト６００のうち、未選択な状態情報６０１がない場合（ステップＳ１３０１：Ｎｏ）、選択装置１００は、一連の処理を終了する。
【００６８】
図１４は、図１１に示した制御用モード表の生成処理を示すフローチャートである。選択装置１００は、状態リスト６００内の状態情報６０１を消費電力値の大きい順にソートする（ステップＳ１４０１）。つぎに、選択装置１００は、ソート後の状態リスト６００のうち、各状態情報６０１について測定した処理性能値が状態情報６０１の登録順においてつぎの状態情報６０１について測定した処理性能値より小さい状態情報６０１を削除する（ステップＳ１４０２）。消費電力値の大きい順に状態情報６０１がソートされたにも関わらず、処理性能値が示す処理性能が高い順でない場合の状態情報６０１は削除される。
【００６９】
選択装置１００は、複数の特定消費電力値を取得する（ステップＳ１４０３）。選択装置１００は、複数の特定消費電力値のうち、未選択な特定消費電力値があるか否かを判断する（ステップＳ１４０４）。未選択な特定消費電力値がある場合（ステップＳ１４０４：Ｙｅｓ）、選択装置１００は、未選択の特定消費電力値から１つの特定消費電力値を選択する（ステップＳ１４０５）。そして、選択装置１００は、状態リスト６００のうち、測定した消費電力値と選択した特定消費電力値との差が所定値以下である状態情報６０１を検出する（ステップＳ１４０６）。所定値は、上述したように許容される誤差である。
【００７０】
選択装置１００は、状態情報６０１が検出されたか否かを判断する（ステップＳ１４０７）。状態情報６０１が検出された場合（ステップＳ１４０７：Ｙｅｓ）、選択装置１００は、検出された状態情報６０１のうち、（処理性能値／消費電力値）が示す処理性能が最も高い状態情報６０１を選択し（ステップＳ１４０８）、ステップＳ１４１０へ移行する。状態情報６０１が検出されなかった場合（ステップＳ１４０７：Ｎｏ）、選択装置１００は、測定した消費電力値が選択した消費電力値以下である状態情報６０１の中で、測定した処理性能値が示す処理性能が最も高い状態情報６０１を選択する（ステップＳ１４０９）。
【００７１】
つぎに、選択装置１００は、選択した特定消費電力値と、選択した状態情報６０１と、測定時の周波数と、を１要素として制御用モード表１０００に登録し（ステップＳ１４１０）、ステップＳ１４０４へ戻る。ステップＳ１４０４において、未選択な特定消費電力値がない場合（ステップＳ１４０４：Ｎｏ）、選択装置１００は、一連の処理を終了する。
【００７２】
（実施例２）
実施例２では、各稼働状態についてＣＰＵ１０１の処理性能値及び消費電力値を測定し、複数の特定消費電力値のそれぞれと測定した消費電力値との比率に基づき測定した処理性能値を補正し、補正した処理性能値が最も高くなる各稼働状態を選択する。さらに、実施例２では、この比率に基づき測定時の周波数を補正する。これにより、状態情報６０１の数が少なくても、クロック信号の周波数の変更により特定消費電力値となった場合の処理性能値が示す処理性能が最も高くなる状態情報６０１を選択することができる。したがって、電力値の上限ごとに高処理性能な稼働状態を運用時に特定することが可能となる。
【００７３】
選択部５０４は、複数の特定消費電力値の各々について、取得した状態情報６０１のうちのいずれかの状態情報６０１を、測定した処理性能値を測定した消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて、選択する。また、選択部５０４は、補正した処理性能値が示すＣＰＵ１０１の処理性能が最も高くなる稼働状態を示す状態情報６０１を選択する。具体的には、選択部５０４は、複数の特定消費電力値の各々について、以下式（１）に基づいて各状態情報６０１について測定した処理性能値を補正する。
【００７４】
補正処理性能値＝測定した処理性能値×（特定消費電力値−静的電力値）／（動的電力値）・・・（１）
【００７５】
そして、選択部５０４は、複数の特定消費電力値の各々について、補正処理性能値が最も高くなる状態情報６０１を選択する。（特定消費電力値−静的電力値）／（動的電力値）が、比率である。
【００７６】
また、周波数導出部５０５は、複数の特定消費電力値の各々について、消費電力値および処理性能値を測定した際の特定周波数を、選択した状態情報６０１についての比率に基づいて補正する。
【００７７】
図１５は、実施例２にかかる状態情報の選択例を示す説明図である。ここでは、測定時の周波数ｆ０がＣＰＵ１０１に設定可能な周波数の中で最も高い周波数とする。そのため、複数の特定消費電力値の各々についての補正対象となる状態情報６０１は、測定した消費電力値が特定消費電力値より大きい状態情報６０１とする。
【００７８】
図１５中、グラフは、横軸が処理性能値を示し、縦軸が消費電力値を示す。○によって示す点は、各状態情報６０１について測定した処理性能値と測定した消費電力値とに基づいてプロットされた点である。●によって示す点は、各状態情報６０１について測定した処理性能値を補正した処理性能値と特定消費電力値とに基づいてプロットされた点である。
【００７９】
点ａ１〜ａ７は、それぞれ特定消費電力値Ｐ１〜Ｐ７について、状態情報６０１−Ａについて測定した処理性能値を補正した処理性能値に基づいてプロットされた点である。点ｂ３〜ｂ７は、それぞれ特定消費電力値Ｐ３〜Ｐ７について、状態情報６０１−Ｂについて測定した処理性能値を補正した処理性能値に基づいてプロットされた点である。点ｃ５〜ｃ７は、それぞれ特定消費電力値Ｐ５〜Ｐ７について、状態情報６０１−Ｃについて測定した処理性能値を補正した処理性能値に基づいてプロットされた点である。点ｄ７は、それぞれ特定消費電力値Ｐ７について、状態情報６０１−Ｄについて測定した処理性能値を補正した処理性能値に基づいてプロットされた点である。
【００８０】
選択部５０４は、特定消費電力値の各々について、補正した処理性能値が示す処理性能が最も高い状態情報６０１を選択する。例えば、特定消費電力値Ｐ７を例に挙げると、点ａ７と、点ｂ７と、点ｃ７と、点ｄ７と、の比較によれば、点ｄ７が最も処理性能が高いため、選択部５０４は、状態情報６０１−Ｄを選択する。
【００８１】
制御用モード表生成部５０６は、複数の特定消費電力値の各々と、特定消費電力値について選択された状態情報６０１と、特定消費電力値について補正された補正周波数と、を関連付けたテーブルを生成する。実施例１と同様に生成されたテーブルは、制御用モード表１０００と称する。例えば、生成された制御用モード表１０００は、ＲＡＭ３０２やディスク３０４などの記憶装置に記憶される。また、制御用モード表１０００を用いた制御処理が行われる前に、ＣＰＵ１０１は、制御用モード表１０００を制御用モード表格納バッファ４０５に記憶させる。
【００８２】
図１６は、実施例２にかかる制御用モード表例を示す説明図である。制御用モード表１０００の各フィールドは、実施例１で説明した例と同一であるため、詳細な説明を省略する。制御用モード表１０００によれば、特定消費電力値Ｐ０については、状態情報６０１−Ａが選択され、周波数はｆ０となる。特定消費電力値Ｐ１については、状態情報６０１−Ａが選択され、周波数はｆ１となる。特定消費電力値Ｐ２については、状態情報６０１−Ｂが選択され、周波数はｆ０となる。特定消費電力値Ｐ３については、状態情報６０１−Ｂが選択され、周波数はｆ２となる。特定消費電力値Ｐ４については、状態情報６０１−Ｃが選択され、周波数はｆ０となる。特定消費電力値Ｐ５については、状態情報６０１−Ｃが選択され、周波数はｆ３となる。特定消費電力値Ｐ６については、状態情報６０１−Ｄが選択され、周波数はｆ０となる。特定消費電力値Ｐ７については、状態情報６０１−Ｄが選択され、周波数はｆ４となる。
【００８３】
図１７は、ＤＦＳと実施例２とのそれぞれによる消費電力値および処理性能値の比較例を示す説明図である。グラフは、縦軸が消費電力値であり、横軸が処理性能値である。処理性能値としてＭＩＰＳ値を挙げる。○が示す点と、点線とがＤＦＳの場合の例である。ＤＦＳの場合、１つの状態情報６０１に設定したままで、周波数が調整されると、点線が示すように消費電力値と処理性能値が推移する。
【００８４】
例えば、消費電力値が２２［Ｗ］のラインにおいて、ＤＦＳによって調整された場合のＭＩＰＳ値が３．０となるのに対して、実施例２によって調整された場合ＭＩＰＳ値は３．５となり、ＭＩＰＳ値が０．５だけ向上する。同様に消費電力値が２０［Ｗ］、１８［Ｗ］ではそれぞれＭＩＰＳ値が０．８、１．３向上する。このような制御用モード表１０００が生成されたとして、システムの電力管理機構によって消費電力値の上限値が２２［Ｗ］で２秒間動作、上限値が２０［Ｗ］で３秒間動作、上限値が１８［Ｗ］で１秒間動作させるような電力調整指示を受け付ける場合を例に挙げる。この場合、実施例２では、ＤＦＳの場合よりも６秒間に５．７百万命令（＝０．５×２＋０．８×３＋１．３＋１）多くの命令が実行できることになる。
【００８５】
（実施例２にかかる選択装置１００による選択処理手順例）
実施例２では、実施例１と異なる選択装置１００による制御用モード表１０００の生成処理手順例について説明し、同一の処理手順については説明を省略する。
【００８６】
図１８は、図１１に示した制御用モード表の生成処理を示すフローチャートである。選択装置１００は、状態リスト６００内の状態情報６０１を消費電力値の大きい順にソートする（ステップＳ１８０１）。つぎに、選択装置１００は、ソート後の状態リスト６００のうち、各状態情報６０１について測定した処理性能値が登録順においてつぎの状態情報６０１について測定した処理性能値より小さい状態情報６０１を削除する（ステップＳ１８０２）。
【００８７】
選択装置１００は、複数の特定消費電力値を取得する（ステップＳ１８０３）。選択装置１００は、複数の特定消費電力値のうち、未選択な特定消費電力値があるか否かを判断する（ステップＳ１８０４）。未選択な特定消費電力値がある場合（ステップＳ１８０４：Ｙｅｓ）、選択装置１００は、未選択の特定消費電力値から１つの特定消費電力値を選択する（ステップＳ１８０５）。
【００８８】
つぎに、選択装置１００は、状態リスト６００内の各状態情報６０１について、測定した処理性能値を測定した消費電力値と選択した特定消費電力値との比率に基づき補正する（ステップＳ１８０６）。具体的には、選択装置１００は、各状態情報６０１について「補正処理性能値＝測定した処理性能値×（選択した特定消費電力値−測定した静的電力値）／測定した動的電力値）」を行う。
【００８９】
そして、選択装置１００は、状態リスト６００から、補正処理性能値が示す処理性能が最も高い状態情報６０１を選択する（ステップＳ１８０７）。そして、選択装置１００は、測定時の周波数を比率に基づいて補正する（ステップＳ１８０８）。具体的には、選択装置１００は、「補正周波数＝測定時の周波数×比率」を行う。比率は、（（選択した特定消費電力値−測定した静的電力値）／測定した動的電力値）であり、補正処理性能値／測定された処理性能値であってもよい。
【００９０】
つぎに、選択装置１００は、選択した特定消費電力値と、選択した状態情報６０１と、補正周波数と、を１要素として制御用モード表１０００に登録し（ステップＳ１８０９）、ステップＳ１８０４へ戻る。ステップＳ１８０４において、未選択な特定消費電力値がない場合（ステップＳ１８０４：Ｎｏ）、選択装置１００は、一連の処理を終了する。
【００９１】
図１９は、制御用モード表に基づく消費電力値制御例を示す説明図である。消費電力制御部４０３は、例えば、上限電力値レジスタ１９１１と、現モード設定レジスタ４０６と、電力比較部１９１２と、モード表検索部１９１３と、設定変更部１９１４と、現モード設定レジスタ更新部１９１５と、を有する。また、各部は、論理積回路、否定論理回路、論理和回路や、ラッチ回路であるＦＦなどの素子によって形成されてもよい。また、各部は、スタンダードセルやストラクチャードＡＳＩＣなどのＡＳＩＣやＦＰＧＡなどのＰＬＤによって実現されてもよい。具体的には、例えば、上述した各部の機能をハードウェア記述言語などによってネットリストに機能定義し、そのネットリストを論理合成してＡＳＩＣやＰＬＤに与えることにより、各部を実現してもよい。
【００９２】
現モード設定レジスタ４０６は、電力値と、周波数と、状態情報６０１と、を設定可能なレジスタである。現モード設定レジスタ４０６のうちの電力値を設定可能なレジスタには、消費電力値測定部４０１によって測定された現在の消費電力値が設定される。現モード設定レジスタ４０６のうちの周波数を設定可能なレジスタには、各要素に供給されるクロックの周波数が設定される。現モード設定レジスタ４０６のうちの状態情報６０１を設定可能なレジスタには、現在のＣＰＵ１０１の各要素の稼働状態を示す状態情報６０１が設定される。
【００９３】
消費電力制御部４０３は、システム管理機構１９００から受け付けた上限電力値を上限電力値レジスタ１９１１に設定する。例えば、図示していないが、ＣＰＵ１０１は、マルチプロセッサのシステム内に含まれるプロセッサであってもよい。そのため、システム管理機構１９００は、例えば、システムの消費電力制約を超えないようにシステム全体でジョブを実行させるための機構である。例えば、システム管理機構１９００は、専用のハードウェアであってもよいし、ＣＰＵ１０１やＣＰＵ１０１以外の非制御対象１９０１や非制御対象１９０２などのＣＰＵ上で実行されるＯＳなどのソフトウェアであってもよい。システム管理機構１９００は、システムの電力制約や、電力優先であるか性能優先であるかなどの電力管理ポリシーなどに基づきマルチプロセッサのうちの稼働中の各ＣＰＵ１０１に対する消費電力の上限値を決定し、各ＣＰＵ１０１の消費電力を制御する。
【００９４】
そして、電力比較部１９１２は、上限電力値レジスタ１９１１に設定された上限電力値と、現モード設定レジスタ４０６に設定された電力値と、を比較する。現モード設定レジスタ４０６に設定された電力値が上限電力値レジスタ１９１１に設定された上限電力値よりも大きい場合、モード表検索部１９１３は、制御用モード表格納バッファ４０５に格納された制御用モード表１０００から、状態情報６０１および周波数を検索する。また、現モード設定レジスタ４０６に設定された電力値が上限電力値レジスタ１９１１に設定された上限電力値以下であり、当該電力値と当該上限電力値との差が所定値以内である場合に、モード表検索部１９１３は、状態情報６０１および周波数を検索する。ここで、所定値は、例えば、最も近い特定消費電力値間の差とする。所定値については、例えば、ＣＰＵ１０１内のレジスタに設定されておくこととする。具体的に、モード表検索部１９１３は、制御用モード表格納バッファ４０５に格納された制御用モード表１０００から、上限電力値以下である特定消費電力値に関連付けられた状態情報６０１および周波数を検索する。制御用モード表１０００は、実施例１または実施例２において生成された制御用モード表１０００である。そして、モード表検索部１９１３は、検索した状態情報６０１および周波数のうち、特定消費電力値が上限電力値に最も近い状態情報６０１および周波数を検索する。また、モード表検索部１９１３は、現モード設定レジスタ４０６に設定された状態情報６０１および周波数と異なる状態情報６０１および周波数を検索する。
【００９５】
設定変更部１９１４は、実行中のプログラムに割り込みをかけた後に、検索された状態情報６０１が示す稼働状態にプロセッサを変更し、検索された周波数となるようにＰＬＬ４０４へ変更を通知する。そして、現モード設定レジスタ更新部１９１５は、設定変更部１９１４による変更後に、現モード設定レジスタ４０６に検索された状態情報６０１および周波数を設定する。そして、現モード設定レジスタ更新部１９１５は、割り込みにより中断中のプログラムの実行を再開する。
【００９６】
また、図１９に示す例において、ＣＰＵ１０１内の命令実行についての要素と異なる回路を使用した場合の説明であるが、これに限らない。例えば、上限電力値レジスタ１９１１の更新をトリガーとして割り込みを発生させ、モード表検索部１９１３と電力比較部１９１２などの各機能を例外処理としてソフトウェア的に実現してもよい。また、電力比較部１９１２による比較をトリガーとして割り込みを発生させ、モード表検索部１９１３の機能を例外処理としてソフトウェア的に実現してもよい。
【００９７】
（ＣＰＵ１０１による選択処理手順例）
図２０は、ＣＰＵ１０１による選択処理手順例を示すフローチャートである。ＣＰＵ１０１は、システム管理機構１９００から上限電力値を受け付けたか否かを判断する（ステップＳ２００１）。具体的には、ＣＰＵ１０１は、上限電力値レジスタ１９１１の値が更新された場合に、上限電力値を受け付けたと判断する。上限電力値を受け付けていないと判断された場合（ステップＳ２００１：Ｎｏ）、ステップＳ２００１へ戻る。上限電力値を受け付けたと判断された場合（ステップＳ２００１：Ｙｅｓ）、ＣＰＵ１０１は、測定した消費電力値が上限電力値より大きいか否かを判断する（ステップＳ２００２）。測定された消費電力値が上限電力値より大きい場合（ステップＳ２００２：Ｙｅｓ）、ＣＰＵ１０１は、ステップＳ２００４へ移行する。
【００９８】
一方、測定された消費電力値が上限電力値以下である場合（ステップＳ２００２：Ｎｏ）、ＣＰＵ１０１は、測定した消費電力値と上限電力値との差が所定値以上であるか否かを判断する（ステップＳ２００３）。上述したように、所定値は、最も近い特定消費電力値間の差である。所定値以上でない場合（ステップＳ２００３：Ｎｏ）、ＣＰＵ１０１は、ステップＳ２００１へ戻る。
【００９９】
一方、所定値以上である場合（ステップＳ２００３：Ｙｅｓ）、ＣＰＵ１０１は、制御用モード表１０００から、上限電力値より小さい特定消費電力値のうち、上限電力値に最も近い特定消費電力値に関連付けられた周波数と状態情報６０１とを検索する（ステップＳ２００４）。ＣＰＵ１０１は、実行中のプログラムに割り込みを発生させる（ステップＳ２００５）。ＣＰＵ１０１は、現モード設定レジスタ４０６に設定された周波数および状態情報６０１と、検索された周波数および状態情報６０１と、の差に基づいて、ＣＰＵ１０１の各要素の稼働状態またはクロック信号の周波数を変更する（ステップＳ２００６）。ＣＰＵ１０１は、現モード設定レジスタ４０６に、検索された周波数および状態情報６０１を設定する（ステップＳ２００７）。ＣＰＵ１０１は、割り込みにより中断されたプログラムの実行を再開し（ステップＳ２００８）、ステップＳ２００１へ戻る。
【０１００】
以上説明したように、実施例１にかかる選択装置は、各稼働状態についてプロセッサの処理性能値および消費電力値を測定する。そして、選択装置は、複数の所定電力値のそれぞれを上限として高処理性能となる各稼働状態を測定結果により特定しておく。これにより、消費電力値の上限の条件を満たし処理性能の高い稼働状態によりプロセッサがプログラムを実行することを可能となる。
【０１０１】
また、選択装置は、複数の所定消費電力値のそれぞれを上限として測定した処理性能値が示す処理性能が最も高くなる稼働状態を特定しておく。これにより、消費電力値の上限の条件を満たし処理性能の高い稼働状態によりプロセッサがプログラムを実行することが可能となる。
【０１０２】
また、選択装置は、所定消費電力値に対応する特定電力値と、所定消費電力値について選択した稼働状態と、測定時の周波数と、が関連付けられた制御用モード表を生成する。これにより、電力値の上限ごとに最も性能が高いと推定される稼働状態を運用時に特定することが可能となる制御用モード表を自動で生成することができる。
【０１０３】
以上説明したように、実施例２にかかる選択装置は、各稼働状態についてプロセッサの処理性能値及び消費電力値を測定し、複数の特定消費電力値のそれぞれと測定した消費電力値との比率に基づき測定した処理性能値を補正する。そして、選択装置は、補正した処理性能値が最も高くなる各稼働状態を選択する。さらに、実施例２にかかる選択装置は、この比率に基づき測定時の周波数を補正する。これにより、状態情報の数が少なくても、クロック信号の周波数の変更により特定消費電力値となった場合の処理性能値が示す処理性能が最も高くなる状態情報を選択することができる。したがって、運用時に、消費電力上限の条件を満たしつつ高処理性能な稼働状態に切り替えることが可能となる。
【０１０４】
また、選択装置は、補正処理性能値が示す処理性能が最も高くなる稼働状態を選択する。これにより、消費電力値の上限の条件を満たす処理性能の高い稼働状態によりプロセッサがプログラムを実行することが可能となる。
【０１０５】
また、各要素の稼働状態を変更可能なＣＰＵは、運用時に、選択装置によって生成された制御用モード表によって、上限電力値以下である特定消費電力値の中で、上限電力値に最も近い特定消費電力値に関連付けられた稼働状態を検索する。これにより、運用中に、消費電力値の上限の条件を満たし処理性能が高くなる稼働状態に切り替えることができる。したがって、ＣＰＵの低消費電力化を図りつつ、処理性能を向上させることができる。
【０１０６】
また、ＣＰＵは、測定した現在の消費電力値が受け付けた上限電力値以下の場合に、稼働状態を変更しない。これにより、高処理性能となる稼働状態である場合に稼働状態を変更しないため、稼働状態の変更によって実行中のプログラムを中断させることを防げる。
【０１０７】
また、ＣＰＵは、測定した現在の消費電力値が受け付けた上限電力値以下の場合に、測定した現在の消費電力値と受け付けた上限電力値との差分が最も近い特定消費電力値間の差よりも大きい場合に、制御用モード表によって稼働状態を変更する。これにより、運用中に、電力値の上限値以下となる稼働状態の中で、最も性能が高くなる稼働状態に切り替えることができる。
【０１０８】
なお、本実施の形態で説明した選択方法は、予め用意された選択プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本選択プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、選択プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１０９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１０】
（付記１）コンピュータが、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する、
処理を実行することを特徴とする選択方法。
【０１１１】
（付記２）前記状態情報を選択する処理では、前記所定消費電力値以下であるいずれかの状態情報のうち、測定した前記処理性能値が示す処理性能が最も高くなる稼働状態を示す状態情報を選択することを特徴とする付記１に記載の選択方法。
【０１１２】
（付記３）前記コンピュータが、
前記複数の所定消費電力値のそれぞれに対応する複数の特定消費電力値の各々と、前記特定消費電力値に対応する前記所定消費電力値について選択した前記状態情報と、を関連付けたテーブルを生成することを特徴とする付記１または２に記載の選択方法。
【０１１３】
（付記４）前記プロセッサが、
消費電力値の上限値を受け付け、
生成した前記テーブルから、受け付けた前記上限値よりも小さい特定消費電力値に関連付けられた状態情報のうち、受け付けた前記上限値に最も近い特定消費電力値に関連付けられた状態情報を検索し、
検索した前記状態情報が示す稼働状態に変更する、
処理を実行することを特徴とする付記３に記載の選択方法。
【０１１４】
（付記５）前記プロセッサが、現在の消費電力値を測定可能であって、
前記状態情報を検索する処理では、測定した前記現在の消費電力値が受け付けた前記上限値よりも大きい場合に、生成した前記テーブルから、受け付けた前記上限値よりも小さい特定消費電力値に関連付けられた状態情報のうち、現在の前記プロセッサの稼働状態と異なる稼働状態を示す状態情報を検索し、測定した前記現在の消費電力値が受け付けた前記上限値よりも小さい場合に、検索しないことを特徴とする付記４に記載の選択方法。
【０１１５】
（付記６）前記プロセッサが、現在の消費電力値を測定可能であって、
前記状態情報を検索する処理では、測定した前記現在の消費電力値が受け付けた前記上限値以下であり、かつ測定した前記現在の消費電力値と受け付けた前記上限値との差が所定値以上である場合に、生成した前記テーブルから、受け付けた前記上限値よりも小さい特定消費電力値に関連付けられた状態情報のうち、現在の前記プロセッサの稼働状態と異なる稼働状態を示す状態情報を検索し、測定した前記現在の消費電力値が受け付けた前記上限値以下であり、測定した前記現在の消費電力値と受け付けた前記上限値との差が所定値未満である場合に、検索しないことを特徴とする付記５に記載の選択方法。
【０１１６】
（付記７）コンピュータが、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する、
処理を実行することを特徴とする選択方法。
【０１１７】
（付記８）前記状態情報を選択する処理では、補正した処理性能値が示す前記プロセッサの処理性能が最も高くなる稼働状態を示す状態情報を選択することを特徴とする付記７に記載の選択方法。
【０１１８】
（付記９）前記コンピュータが、
前記複数の特定消費電力値の各々について、前記消費電力値および前記処理性能値を測定した際の特定周波数を、選択した前記状態情報についての前記比率に基づいて補正することを特徴とする付記７または８に記載の選択方法。
【０１１９】
（付記１０）前記コンピュータが、
前記複数の特定消費電力値の各々と、前記特定消費電力値について選択した前記状態情報と、前記特定消費電力値について補正した周波数と、を関連付けたテーブルを生成することを特徴とする付記７〜９のいずれか一つに記載の選択方法。
【０１２０】
（付記１１）前記プロセッサが、
消費電力値の上限値を受け付け、
生成した前記テーブルから、受け付けた前記上限値よりも小さい特定消費電力値に関連付けられた状態情報および周波数のうち、受け付けた前記上限値に最も近い特定消費電力値に関連付けられた状態情報および周波数を検索し、
検索した前記状態情報が示す稼働状態に変更し、前記プロセッサの周波数を検索した前記周波数に変更する、
処理を実行することを特徴とする付記１０に記載の選択方法。
【０１２１】
（付記１２）前記プロセッサが、現在の消費電力値を測定可能であって、
前記状態情報および周波数を検索する処理では、測定した前記現在の消費電力値が受け付けた前記上限値よりも大きい場合に、生成した前記テーブルから、受け付けた前記上限値よりも小さい特定消費電力値に関連付けられた状態情報および周波数のうち、現在の前記プロセッサの稼働状態と異なる稼働状態を示す状態情報および周波数を検索し、測定した前記現在の消費電力値が受け付けた前記上限値よりも小さい場合に、検索しないことを特徴とする付記１１に記載の選択方法。
【０１２２】
（付記１３）前記プロセッサが、現在の消費電力値を測定可能であって、
前記状態情報および周波数を検索する処理では、測定した前記現在の消費電力値が受け付けた前記上限値以下であり、かつ測定した前記現在の消費電力値と受け付けた前記上限値との差が所定値以上である場合に、生成した前記テーブルから、受け付けた前記上限値よりも小さい特定消費電力値に関連付けられた状態情報および周波数のうち、現在の前記プロセッサの稼働状態と異なる稼働状態を示す状態情報および周波数を検索し、測定した前記現在の消費電力値が受け付けた前記上限値以下であり、測定した前記現在の消費電力値と受け付けた前記上限値との差が所定値未満である場合に、検索しないことを特徴とする付記１２に記載の選択方法。
【０１２３】
（付記１４）コンピュータに、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する、
処理を実行させることを特徴とする選択プログラム。
【０１２４】
（付記１５）コンピュータに、
各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する、
処理を実行させることを特徴とする選択プログラム。
【０１２５】
（付記１６）各要素の稼働状態を変更可能なプロセッサの消費電力値および処理性能値を測定可能な測定部と、
前記プロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を前記測定部によって測定させ、異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する制御部と、
を有することを特徴とする選択装置。
【０１２６】
（付記１７）各要素の稼働状態を変更可能なプロセッサの消費電力値および処理性能値を測定可能な測定部と、
前記プロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を前記測定部によって測定させ、異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する制御部と、
を有することを特徴とする選択装置。
【０１２７】
（付記１８）各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の所定消費電力値の各々について、取得した前記状態情報の中から、測定した前記消費電力値が前記所定消費電力値以下であるいずれかの状態情報を、測定した前記処理性能値に基づいて選択する、
処理をコンピュータに実行させる選択プログラムを記録したことを特徴とする記録媒体。
【０１２８】
（付記１９）各要素の稼働状態を変更可能なプロセッサの複数通りの稼働状態の各々について、前記稼働状態を示す状態情報を取得し、
取得した前記状態情報の各々について、前記状態情報が示す稼働状態に変更後の前記プロセッサに特定プログラムを実行させることにより、変更後の前記プロセッサの消費電力値および処理性能値を測定し、
異なる複数の特定消費電力値の各々について、取得した前記状態情報のうちのいずれかの状態情報を、測定した前記処理性能値を測定した前記消費電力値と前記特定消費電力値との比率とに基づき補正した処理性能値に基づいて選択する、
処理をコンピュータに実行させる選択プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１２９】
１００  選択装置
１０１  ＣＰＵ
１１１−Ａ〜１１１−Ｇ，６０１−Ａ〜６０１−Ｊ  状態情報
１２０，２００  テーブル
４０１  消費電力値測定部
４０２  処理性能値測定部
４０３  消費電力制御部
４０４  ＰＬＬ
４０５  制御用モード表格納バッファ
５０１  状態情報生成部
５０２  取得部
５０３  測定部
５０４  選択部
５０５  周波数導出部
５０６  制御用モード表生成部
６００  状態リスト
１０００  制御用モード表
１９１１  上限電力値レジスタ
１９１２  電力比較部
１９１３  モード表検索部
１９１４  設定変更部
１９１５  現モード設定レジスタ更新部
【図１】
0006024828.tif 000002
【図２】
0006024828.tif 000003
【図３】
0006024828.tif 000004
【図４】
0006024828.tif 000005
【図５】
0006024828.tif 000006
【図６】
0006024828.tif 000007
【図７】
0006024828.tif 000008
【図８】
0006024828.tif 000009
【図９】
0006024828.tif 000010
【図１０】
0006024828.tif 000011
【図１１】
0006024828.tif 000012
【図１２】
0006024828.tif 000013
【図１３】
0006024828.tif 000014
【図１４】
0006024828.tif 000015
【図１５】
0006024828.tif 000016
【図１６】
0006024828.tif 000017
【図１７】
0006024828.tif 000018
【図１８】
0006024828.tif 000019
【図１９】
0006024828.tif 000020
【図２０】
0006024828.tif 000021