(57)【要約】【課題】  正確で高精度な実測による消費電力のプロファイリングを実現する。【解決手段】  本発明は、計算機装置において、任意の一定時間毎に消費電力の測定を行い、その測定値を積算していく積算電力カウンタで、カウンタがオーバーフローしたらＣＰＵにサンプリング用の割込みを挙げることを特徴とするサンプリング手段に関する。そして、割込みを受け取ったＣＰＵは，所定のサンプリングプログラムに実行制御を移行することにより、消費電力ベースのサンプリングおよびプロファイルが可能とする。【選択図】図１
2010191937.tif 000002
【特許請求の範囲】
【請求項１】
消費電力を測定する計算機装置であって、
任意の一定時間毎に消費電力の測定を行う消費電力測定手段と、
前記消費電力の測定値を積算していく積算電力カウンタと、
前記積算電力カウンタがオーバーフローしたときに、ＣＰＵに割込みをかける割込み手段と、
前記割込みがあると、割込み発生時の命令アドレスとプロセスＩＤを含むトレース情報を採取する採取手段と、
を有することを特徴とする計算機装置。
【請求項２】
前記積算電力カウンタは、オーバーフロー後、積算の停止および再開を行うことを特徴とする請求項１に記載の計算機装置。
【請求項３】
前記計算機装置は、リングバッファを備え、採取トリガー発生毎にプロファイルに必要なトレース情報を前記リングバッファへサイクリックに記録しておき、前記電力積算カウンタによるオーバーフロー割込み時に、その時のタイムスタンプから遅延補正した時刻と前記リングバッファに保存された各データのタイムスタンプを突き合わせることによって前記トレース情報を抽出することを特徴とする請求項１に記載の計算機装置。
【請求項４】
前記計算機装置は、前記電力積算カウンタによるオーバーフロー割込み時に、一旦前記リングバッファに蓄積したデータを回収し、測定後の分析時に、記録されたタイムスタンプに基づいて前記トレース情報を求めて分析することを特徴とする請求項１に記載の計算機装置。
【請求項５】
前記計算機装置における前記ＣＰＵがマルチコアで構成される場合、
前記ＣＰＵの各コアに対応したコア毎の積算電力カウンタと、前記消費電力と比例関係にありコア単位で測定可能なコア電力指標を参照し、該コア電力指標に基づいて前記消費電力の測定値を前記コア毎の積算電力カウンタに分配する分配器とを備え、
前記コア毎の積算電力カウンタのいずれかがオーバーフローしたときに前記ＣＰＵに割込みをかけることを特徴とする請求項１に記載の計算機装置。
【請求項６】
前記分配器の前段に前記消費電力の測定値を積算する第１の積算電力カウンタを設け、前記第１の積算電力カウンタがオーバーフローしたときに、前記分配器は、その積算値を前記コア電力指標に基づいて前記コア毎の積算カウンタに分配することを特徴とする請求項５に記載の計算機装置。
【請求項７】
前記計算機装置における前記ＣＰＵがマルチコアで構成される場合、
前記採取手段は、前記ＣＰＵの全コアのトレース情報を採取するとともに、前記消費電力と比例関係にありコア単位で測定可能なコア電力指標を採取することを特徴とする請求項１に記載の計算機装置。
【請求項８】
消費電力を測定する計算機装置であって、
任意の一定時間毎に消費電力の測定を行う消費電力測定手段と、
前記消費電力の測定値を積算していく積算電力カウンタと、
前記積算電力カウンタが閾値を超えると、前記積算電力カウンタをクリアし、命令アドレスとプロセスＩＤを含むトレース情報を採取する採取手段と、
を有することを特徴とする計算機装置。
【請求項９】
消費電力を測定する計算機装置におけるサンプリング方法であって、
任意の一定時間毎に消費電力の測定を行う消費電力測定ステップと、
前記消費電力の測定値を積算電力カウンタに積算していく積算ステップと、
前記積算電力カウンタがオーバーフローしたときに、ＣＰＵに割込みをかける割込みステップと、
前記割込みがあると、割込み発生時の命令アドレスとプロセスＩＤを含むトレース情報を採取する採取ステップと、
を有することを特徴とする消費電力のサンプリング方法。
【請求項１０】
消費電力を測定する計算機装置におけるサンプリング方法であって、
任意の一定時間毎に消費電力の測定を行う消費電力測定ステップと、
前記消費電力の測定値を積算電力カウンタに積算していく積算ステップと、
前記積算電力カウンタが閾値を超えると、前記積算電力カウンタをクリアし、命令アドレスとプロセスＩＤを含むトレース情報を採取する採取ステップと、
を有することを特徴とする消費電力のサンプリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit ）の消費電力を測定する技術に関する。
【背景技術】
【０００２】
従来、プログラムの動作分析や性能チューニングのために、サンプリング情報がよく用いられている。具体的には、命令アドレスやＰＩＤ（Process Identification）など、後で実行プログラムや関数と紐付けできる様な情報をサンプリングしておき、その採取データからプロファイル分析を行うことにより、プログラムの動作状況の把握や、性能改善箇所を特定することが一般になされている。
【０００３】
このサンプリング情報の採取方式として、タイムベースによるサンプリング方式がよく用いられている。それは、コンピュータ設計やプログラミング、システムの構築や管理において、これまでは時間性能や処理性能が要件として高く求められてきたからである。
【０００４】
しかし、現在は、電力消費もそれらの第一要件となってきている。そのため、動作プログラムや命令に関し、消費電力に基づいたデータサンプリング手段が必要となってきている。
【０００５】
これに対し、消費電力という観点における従来のプログラム動作分析方法としては、プロセッサに既に備わっているパフォーマンスカウンタを利用する手法がある。まず、電力消費に関連するいくつかのイベントの発生回数をパフォーマンスカウンタでカウントし、解析時に、各イベントに対応する電力換算値あるいは算出式を用いて消費電力を見積もる手法である（例えば、非特許文献１参照）。
【０００６】
しかし、この手法では、以下の様な問題点があった。先ず、消費電力プロファイル（動作プログラムによる電力消費の内訳分析）はできないという点。即ち、単に測定期間におけるシステム全体の消費電力がわかるだけで、その内訳となるプログラム毎の電力消費率はわからないという問題である。これに対し非特許文献１では、カーネルを改造してプログラム毎にカウンタ値を保存しプログラムの消費電力に基づくプロファイルを可能としているが、一般カーネルでは利用できず汎用性に欠ける。
【０００７】
また、精度面での問題を抱える。そもそも、同手法は見積もり値であり、完全には正しく消費電力を反映していない。さらに、パフォーマンスカウンタが有限個のためプロセッサによっては電力算出に必要なイベントを同時に採取できないという問題もある。その場合は何度かに分けてイベントを採取し、解析時に合成算出するので、正しい消費電力を反映していない可能性がますます高くなり信頼性や精度面での不安が残る。
【０００８】
上述した問題に対し、特許文献１では、タイムベースによるサンプリングにおいて、サンプリング毎に命令アドレス情報などとともに消費電力も記録していき、見積もりではない実測ベースの消費電力のプロファイルを実現している。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】F. Bellosa, “The Benefits of Event-Driven Energy Accounting in Power-Sensitive Systems,” Proc. SIGOPS European Workshop, ACM Press, 2000, pp.37-42.
【特許文献】
【００１０】
【特許文献１】特開２００５−２５７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１では、消費電力の大きいプログラムを正しく見つけることが難しいケースがある。
【００１２】
例えば、図１３に示すように（タイムベースによるサンプリング結果を、横軸を時間、縦軸を消費電力として、タイムベースによるサンプリング結果をグラフ化）、電力消費は小さいが実行時間の大部分を占める「プログラムＡ」と、実行時間はわずかだが消費電力の大きい「プログラムＢ」が実行されているようなケースである。このケースでは、見つけ出したいのは「プログラムＢ」の方であるにもかかわらず、「プログラムＢ」は、各サンプリング時刻とズレを生じているため抽出できていない。
【００１３】
このように、タイムベースサンプリングは、一定時間毎（例では１ｍｓ毎）に分析に必要な情報をサンプリング（採取）し、その採取データからサンプリング数ベースで動作プログラムの内訳を分析（プロファイル）するための手法であり、統計的に意味のある分析ができるのは時間に関してのものだけとなる。
【００１４】
こうした消費電力測定とそのプロファイルに乖離が生じるのは、消費電力のプロファイルを行うのに、タイムベースでサンプリングしているところに問題がある。つまり、消費電力のプロファイルを行うためには、データ採取も消費電力ベースで行うことが求められる。
【００１５】
そこで、上述してきた従来技術の問題を解決するため、本発明では、測定時に消費電力ベースでサンプリングを行うことによって、正確で高精度な消費電力のプロファイリングを実現する。
【課題を解決するための手段】
【００１６】
本発明は、上の目的を実現するために、実測消費電力に基づいたサンプリング手段を提供するものである。
【００１７】
その一つの発明では、計算機装置において、任意の一定時間毎に消費電力の測定を行い、その測定値を積算していく積算電力カウンタで、カウンタがオーバーフローしたらＣＰＵにサンプリング用の割込みを挙げるオーバーフロー割込み手段を適用することによって、割込みを受け取ったＣＰＵは、所定のサンプリングプログラムに実行制御を移行することで消費電力ベースのサンプリングおよびプロファイルが可能となる。また、オーバーフロー後も、カウンタ積算、カウンタオーバーフロー、およびサンプリング割込みの一連の動作を繰り返すことができることを特徴としている。
【００１８】
また、別な発明では、サンプリングプログラムを、タイマー割込みを利用し、一定間隔毎の消費電力を測定および積算し、予め設定された閾値を超えた時点で、プロファイルに必要な情報をサンプリングする構成とすることによって、一定の消費電力量を単位とした分析情報のサンプリングを可能としている。
【発明の効果】
【００１９】
以上、一態様の発明によれば、一定の消費電力量を単位として、分析に必要な情報をサンプリング（採取）することが可能となり、消費電力の大きいプログラムを特定することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態になる計算機装置の構成例（その１）を示す図である。
【図２】本発明の実施の形態になるオーバーフロー割込み制御によるサンプリングの動作フローを示す図である。
【図３】本発明の実施の形態になる計算機装置の構成例（その２）を示す図である。
【図４】本発明の実施の形態になるプログラム内の積算電力カウンタによる消費電力サンプリングの処理フローを示す図である。
【図５】本発明の実施の形態になる消費電力ベースのサンプリングによって抽出されるプログラムデータを示す図である。
【図６】消費電力サンプリング時の遅延による影響を説明する図である。
【図７】本発明の実施の形態になるバッファリング手段による消費電力サンプリング時の遅延補正の構成例を示す図である。
【図８】本発明に適用するリングバッファの仕組みを説明する図である。
【図９】本発明の実施の形態になる遅延補正を加えた時刻突き合わせによるデータ抽出を説明する図である。
【図１０】本発明の実施の形態になるＣＰＵコア毎の分配積算による測定電力値採取の構成例（その１）を示す図である。
【図１１】本発明の実施の形態になるＣＰＵコア毎の分配積算による測定電力値採取の構成例（その２）を示す図である。
【図１２】本発明の実施の形態になるＣＰＵコア単位での重み付けによる消費電力採取の構成例を示す図である。
【図１３】従来のタイムベースのサンプリングによって抽出されるプログラムデータの例を示す図である。
【発明を実施するための形態】
【００２１】
以下、図面にもとづいて本発明の実施形態を説明する。本発明は、計算機の設計、システムの構築・管理、プログラミングの技術に関する。とくに、省電力化を要件とした際の計算機設計やシステム構築・管理やプログラム最適化のための基礎データ採取において利用される。また、ＯＳ（Operating System）が行うプロセススケジューリングのためのトリガーとしての利用も考えられる。
【００２２】
本発明は、それらの利用を目的とし、計算機システム上での動作プログラムによるプロファイル（例えば、消費時間の動作プログラムによる内訳分析）用のデータサンプリングに関する技術となる。また、本発明が実装される応用製品としては、プロセッサやマザボードなどが想定され、本発明の仕組みを利用する応用製品としては、プロファイラなどの性能ツールやＯＳなどが考えられる。
【００２３】
以下では、３つのケースを取り上げる。実施例１では、積算電力カウンタがオーバーフローしたときに、ＣＰＵに割込みを入れて必要情報のサンプリングを行う消費電力ベースのサンプリング手法を示す。また、実施例２では、プログラム内の積算電力カウンタが予め設定された閾値を超えたときに、必要情報のサンプリングを行うタイムベースプログラムによるサンプリング手法を示す。また、実施例３では、サンプリング時に遅延があったとしても、正しい動作プログラムの情報の採取ができる手法を示す。
【００２４】
さらに、実施例４では、ＣＰＵが複数のコアからなる場合に、コア単位で消費電力プロファイルを実現する手法について示す。
【００２５】
なお、実施例１〜４で使用する図中の共通の構成要素に対し符号は同一としている。
（実施例１）
図１は、本発明の実施の形態になる計算機装置の構成例（その１）を示す。計算機装置１は、積算電力カウンタ４の動作制御を行う電力監視設定レジスタ２、電源からＣＰＵに供給される電力を所定時間毎に測定する消費電力測定手段３を有する。更に、計算機装置１は、時間毎の消費電力を積算する積算電力カウンタ４、積算電力カウンタ４がオーバーフローしたらＣＰＵコア（以降、単にＣＰＵと表現する）６にサンプリング用の割込みを入れるオーバーフロー割込み手段５、受け取った割込みを実行制御するＣＰＵ６を有する。更に、オーバーフロー割込み毎に、命令アドレス、プロセスＩＤ等のプロファイルに必要な情報の採取を行うサンプリングプログラム（採取手段）１０の実行モジュールと、採取したデータを保持するメモリ７を有する。
【００２６】
なお、積算電力カウンタ４は、プログラムによって読出し／書込みが可能なものであり、実施例では、１カウント当たり１Ｗ分の電力積算で３２ｂｉｔカウンタとしている。
【００２７】
また、電力監視設定レジスタ２は、プログラムから設定可能で、以下の制御ビット（ｂｉｔ）によって積算電力カウンタ４の動作を制御している。
ｂｉｔ＃０：「カウンタ」停止ビット（counter freeze bit）であり、”１”のとき、カウント動作を停止し、”０”のとき、カウント動作を有効とする。
ｂｉｔ＃１：「オーバーフロー割込み」有効ビット（overflow interrupt bit）であり、”１”のとき、積算電力カウンタ４がオーバーフローした時に割り込みを入れ、かつ、counter freeze bitを”1 ”にセット（設定）して、ハード的に自動でカウンタを一旦停止する。”０”のときには、積算電力カウンタ４がオーバーフローしても割込みやfreeze bitのセットを行わないようにしている。
【００２８】
図２は、本発明の実施の形態になるオーバーフロー割込み制御によるサンプリングの動作フローを示す。
【００２９】
まず、ステップＳ１１において、サンプリングプログラム１０は、電力監視設定レジスタ２のoverflow interrupt bitを”1 ”に設定する。
【００３０】
また、ステップＳ１２において、サンプリングプログラム１０により、サンプリングレートを設定する。具体的には、積算電力カウンタ４に、期待値Ｒでオーバーフローするような初期値がセットされる。例えば、サンプリングレートが５０ｋＷの場合、積算電力カウンタ４が、５０，０００カウント（５０，０００＝０ｘｃ３５０）毎に、オーバーフローするように、サンプリングプログラムから０ｘｆｆｆｆ＿ｆｆｆｆ−０ｘｃ３５０＝０ｘｃ３５０＝「０ｘｆｆｆｆ３ｃａｆ」を積算電力カウンタ４の初期値として書き込んでおく。
【００３１】
さらに、ステップＳ１３において、サンプリングプログラム１０により、電力監視設定レジスタ２のcounter freeze bitを”0 ”にセットして、積算電力カウンタ４の動作を開始させる。
【００３２】
ステップＳ１４において、動作有効となった積算電力カウンタ４は、所定時間毎に（例えば、１μｓｅｃ．）消費電力を測定し、その測定値である消費電力を積算電力カウンタ４に積算していく。
【００３３】
そして、ステップＳ１５において、オーバーフロー割込み手段５は、積算電力カウンタ４がオーバーフローしたら、ステップＳ１６において、ＣＰＵ６に割込みを入れ、割込みと同時に、電力監視設定レジスタ２のfreeze bitを”1 ”にしてカウンタ動作を自動的に停止させる。ステップＳ１５で、オーバーフローしていなければ、ステップＳ１４に戻り、消費電力の測定、および積算を繰り返す。
【００３４】
つぎに、ステップＳ１７において、サンプリングプログラム１０では、先ず、プロファイル分析に必要な、つまり、その割込み発生時の実行中プログラムを分析時に特定できる命令アドレスやプロセスＩＤなどの情報をサンプリング（採取）する。
【００３５】
そして、ステップＳ１８において、サンプリングプログラム１０は、一連の消費電力サンプリングが全て終了か否かを、例えば、予め決めておいた所定の測定時間などをもとに判定し、まだ終了でなければ、ステップＳ１２以降の処理を繰り返す。
（実施例２）
図３は、本発明の実施の形態になる計算機装置の構成例（その２）を示す。本実施例では、タイムベースのサンプリングプログラム１０が消費電力ベースのサンプリングを行う例を示している。
【００３６】
計算機装置１は、電源からＣＰＵに供給される電力を所定時間毎に測定する消費電力測定手段３と、タイマー８を利用したサンプリングを行うサンプリングプログラム１０を制御するＣＰＵ６を有する。更に、計算機装置１は、プログラム内に消費電力測定手段３からの測定値を取込む積算電力カウンタ１１及びサンプリング閾値１２を備え、分析に必要な情報の採取を行うサンプリングプログラム１０の実行モジュールと、採取したデータを保持するメモリ７を有する。
【００３７】
なお、消費電力測定手段３において測定されたデータは、プログラムによって読出し可能となっている。
【００３８】
図４は、本発明の実施の形態になるプログラム内の積算電力カウンタによる消費電力サンプリングの処理フローを示す。
【００３９】
まず、ステップＳ２１において、サンプリングプログラム１０は、該プログラム内のサンプリング閾値１２の閾値（すなわち、サンプリングレート）を設定する。
【００４０】
そして、ステップＳ２２において、サンプリングプログラム１０は、該プログラム内の積算電力カウンタ１１をゼロに初期化し、カウンタ動作を開始する。
【００４１】
ステップＳ２３において、サンプリングプログラム１０は、タイマー８による既存のタイマー割込み等を利用し、一定時間毎にサンプリングプログラム１０を実行する。
【００４２】
つぎに、ステップＳ２４において、サンプリングプログラム１０は、実行される度にＣＰＵの消費電力測定を行い、ステップＳ２５において、その測定値を積算電力カウンタ１１に積算していく。
【００４３】
さらに続けて、ステップＳ２６において、サンプリングプログラム１０は、積算後の積算電力カウンタ１１のカウンタ値とサンプリング閾値１２に設定された閾値とを比較し、カウンタ値が閾値を越えた場合に、ステップＳ２７において、サンプリングプログラム１０は、プロファイル分析に必要な情報として命令アドレスやプロセスＩＤ等の情報をサンプリング（採取）する。
【００４４】
そして、ステップＳ２８において、サンプリングプログラム１０は、積算電力カウンタ１１をゼロクリアし、再びカウンタ動作を開始させる。さらに、ステップＳ２９において、予め設定しておいた所定の測定時間が経過したかどうかを判定し、まだ測定時間が残っている場合には、ステップＳ２３以降の処理を繰り返す。
【００４５】
図５は、本発明の実施の形態になる消費電力ベースのサンプリングによって抽出されるプログラムデータの例を示す。本例は、消費電力ベースのサンプリングの結果について、横軸に時間、縦軸に消費電力をとってグラフ化したものである。本発明によって、実測消費電力量（電力×時間）に基づく高確度・高精度なプログラムのプロファイルが可能となる。従来タイムベースでは正しく抽出されなかった大きな消費電力の掛かる「プログラムＢ」を抽出可能とする。
（実施例３）
以下の実施例では、実施例１の延長として、測定遅延がある場合の消費電力データのサンプリングの例を示す。ここでは、図１に示したように、電力測定がＣＰＵ外部で行われる場合を扱う。
【００４６】
図６は、消費電力サンプリング時の遅延による影響を説明する図である。
【００４７】
積算電力カウンタがオーバーフローしてから、その割込みをＣＰＵに挙げ、サンプリングプログラムに制御が移行するまで、サンプリングとしては無視できない時間、即ち「遅延」の生じることが考えられる。その場合、サンプリングプログラムで、実際にサンプリングするタイミングは既にズレてしまっており、誤った情報を採取してしまう可能性がある。
【００４８】
図６に示すように、消費電力測定手段によって所定時間毎に測定された消費電力の測定値が積算電力カウンタに積算され、積算電力カウンタがオーバーフローしたらＣＰＵへ割込みを挙げ、所定のサンプリングプログラムに実行制御を移行する。
【００４９】
採取される消費電力データには、タイマーによるタイムスタンプ、プロセスＩＤ、アドレスなどの情報が紐付けられる。
【００５０】
例えば、遅延が０．４ｍｓあったとした場合、サンプリングすべき本当の時刻（Ｔ）において採取すべきプログラム（正解）はプログラムＢであるが、電力測定に遅延があるためにプログラムＡに関する情報を採取してしまう懸念がある。
【００５１】
図７は、本発明の実施の形態になるバッファリング手段による消費電力サンプリング時の遅延補正の構成例を示す。本例では、消費電力に基づいたサンプリング方法において、上述した「電力測定の遅延問題」を解消する手法を説明する。
【００５２】
計算機装置１は、必要な情報をサイクリックに記録するバッファリング手段２０とその記録先となるリングバッファ２００を備え、採取トリガー発生毎に、電力測定後のプロファイル分析に必要な情報（例えば、仮想マシンＩＤ（識別子）、プロセスＩＤ、命令アドレス（分岐元、分岐先）等）と、タイムスタンプカウンタ（ＴＳＣと略す）によるタイムスタンプ（カウンタ値）とを採取し、トレース情報２１としてリングバッファ２００に記録する。
【００５３】
本実施例では、積算電力カウンタのオーバーフロー割込みによる消費電力サンプリングにおいて、プロファイル分析に必要なトレース情報２１を、バックグラウンドでトリガー発生毎にリングバッファ２００へ記録しておき、オーバーフロー割込み毎に、サンプリング時のタイムスタンプから遅延補正した時刻とリングバッファ２００に保存されたデータのタイムスタンプとを突合せ、該当する適正な情報を抽出して採取データ格納領域１００に記録することを特徴としている。
【００５４】
なお、電力積算カウンタからのオーバーフロー割込み時のサンプリングには、以下の２通りの手法が考えられる。
【００５５】
第一の手法は、割込み時にリングバッファから該当プログラムの割り出しに必要な情報だけを記録するもので、オーバーフロー割込みのタイミングにおいて、ＴＳＣとリングバッファ２００のタイムスタンプのデータからオーバーフロー要因となった該当プログラムを割り出す手法である。
【００５６】
第二の手法は、割込みのタイミングでは、ＴＳＣとリングバッファ２００を丸ごと回収して記録しておき、測定後のプロファイル分析時に、オーバーフロー要因となった該当プログラムを割り出す手法である。第二の手法は、第一の手法に比べて採取データ量が膨大になるというデメリットがある反面、サンプリングプログラムによる測定中の負荷が軽減できるというメリットがある。
【００５７】
このオーバーフロー要因となる該当プログラムは、該測定環境での遅延時間を予め補正値として把握しておき、リングバッファ２００上のタイムスタンプをサンプリング時のタイムスタンプを補正した時刻で突き合わせることにより求めることができる。
【００５８】
すなわち、本発明は、プロファイルに用いるべき正しい該当プログラムの情報をリングバッファ上の採取データとタイムスタンプから求めることを特徴とする。
【００５９】
図８は、本発明に適用するリングバッファの仕組みを説明する図である。（ａ）は、バッファがフルになると停止する通常バッファ例を示し、（ｂ）は、循環してデータを上書き記録し続けるリングバッファの例（この場合、古いデータから順に消される）を示している。
【００６０】
実施例は、タイムスタンプ、プロセスＩＤ、および命令アドレスからなるトレース情報２１を１ブロックとする８ブロック構成のバッファ例を示している。（ａ）の通常バッファでは、全ブロックが充満すると停止状態となるが、（ｂ）のリングバッファ２００では、ブロック＃１からブロック＃８まで、充満されたらサイクリックにデータが上書きされる。したがって、前回のデータがブロック＃３（Ｔｏｐ）であれば、次のブロック＃４に最新データが記録されることとなる。
【００６１】
上記リングバッファ２００に記録されるデータは、バッファリング手段２０によって、オーバーフロー割込みとは別にバックグラウンドで自動的にサンプリングされたものである。例えば、タイムスタンプ、プロセスＩＤ、およびアドレスからなるトレース情報２１が、分岐命令、仮想マシンの切替、プロセスの切替などのイベントをトリガーとする採取トリガー２２毎に、１ブロックとしてリングバッファ２００に記録される（分岐発生をトリガーとする場合は、命令アドレスとして、分岐元と分岐先の両アドレスを記録することが考えられる）。
【００６２】
図９は、本発明の実施の形態になる遅延補正を加えた時刻突き合わせによるデータ抽出を説明する図である。
【００６３】
プロファイル分析に用いるデータ抽出のプロセスを以下に示す。
（１）電力積算カウンタ４からのオーバーフロー割込みによる仮のサンプリングとして、タイムスタンプ４と遅延時間（０．４ｍｓ）よりサンプリングすべき本来の時刻（Ｔ）を求める。
（２）リングバッファ２００に記録されているトレース情報２１であるタイムスタンプと時刻（Ｔ）を突合わせる。
（３）その結果、サンプリングすべきプログラムの箇所は、「命令アドレス１」〜「命令アドレス２」の間ということが分かり、その間の任意のアドレス（または仮想マシンＩＤやプロセスＩＤなど）のサンプリングデータとしてプログラムＢが採取され、正しい消費電力のプロファイルが可能となる。
（実施例４）
ＣＰＵがマルチコアで構成され、かつ電力測定がチップ全体を測定対象としている場合、上記実施例１〜３だけでは、コア毎の消費電力プロファイルを求めることはできない。そこで、マルチコアＣＰＵの場合でも、「どのコアの、どのプログラムが電力を多く消費しているか」まで判断できるプロファイルの手法が求められる。
【００６４】
これまで、実施例１〜３では、ＣＰＵチップ単位での電力測定について述べてきたが、本実施例では、測定ＣＰＵがマルチコア構成となっている場合に、コア単位での消費電力プロファイルを実現する手法について述べる。
【００６５】
なお、以下の説明で使用する「コア電力指標」は、消費電力と比例関係にあるＣＰＵ上の指標値であり、かつコア単位で容易に測定可能なもので、例えば、「温度」、「ＣＰＵ使用率」、「実行命令数」などが相当する。本例では、「コア電力指標」は「実行命令数」を例として説明する。この「コア電力指標」の測定は、図示していないが、例えば、性能イベントカウンタ等を各コアに備えることによって測定可能である。また、実施例では、コア数を４個の場合を取り上げているが、本発明はこれに限定されるものではない。
【００６６】
図１０には、ＣＰＵコア毎の分配積算による測定電力値採取の構成例（その１）を示す。
【００６７】
本実施例の計算機装置１は、マルチコアＣＰＵ６０（＃０〜＃３の４コアの場合を例としている）、コア毎に用意した各コアに対応する積算電力カウンタ４０（＃０〜＃３の各コア用の積算電力カウンタ）、および消費電力測定手段３によって実行される定期的な電力測定毎に、その測定結果についてコア電力指標を基に分配積算する分配器３０を備え、いずれかのコア毎の積算電力カウンタ（＃１〜＃４）がオーバーフローしたら、オーバーフロー割込み手段５がマルチコアＣＰＵ６０に割込みを入れ、サンプリングプログラム（採取手段）１０によって該当カウンタに対応するコアの動作プログラム情報が採取され、割込み時の採取情報１０１として当該コアのプログラム情報（命令アドレスとプロセスＩＤを含むとトレース情報及びコア電力指標）がメモリ７の採取データ格納領域１００に格納される。
【００６８】
測定電力値のコア単位での分配積算のプロセスは以下の通りである。
（１）消費電力測定手段３は、定期的な電力測定時に、マルチコアＣＰＵ６０の各コアの「コア電力指標」として実行命令数を測定する。
（２）つぎに、分配器３０は、その時のコア間の実行命令数に比例して測定電力値を傾斜配分し、各配分値を対応するコア毎の積算電力カウンタ４０に分配積算していく。
（３）その結果、各積算電力カウンタ４０からのオーバーフロー割込みは、バラバラに発生し、例えば、コア＃２用の積算電力カウンタ４０からの割込みだった場合は、コア＃２上の動作プログラム情報のみサンプリング（採取）する。
【００６９】
また、図１１には、ＣＰＵコア毎の分配積算による測定電力値採取の構成例（その２）を示す。本実施例は、図１０の変形例で、定期的な電力測定のための第一段目のカウンタとして、積算電力カウンタ（第１の積算電力カウンタ）４を、消費電力測定手段３と分配器３０の間に設けたことを特徴している。
【００７０】
第一段目の積算電力カウンタ４がオーバーフローしたときに、分配器３０は、その積算分の電力値をＣＰＵコア毎に対応させて第二段目のカウンタとして用意した積算電力カウンタ４０（＃０〜＃３）に、電力測定結果を「コア電力指標」に応じて分配積算する。そして、コア毎の積算電力カウンタ４０のいずれかのカウンタがオーバーフローした場合、該当するカウンタに対応するコアの動作プログラム情報だけが採取される。
【００７１】
以上述べてきたように、図１０の実施例では、消電力測定手段３からの電力測定値が、直接、コア毎の積算電力カウンタ４０に分配されるため、ある程度の測定周期が必要とされるのに対し、図１１の実施例では、測定周期の短い場合への対応が可能となり、分解能を上げることが可能となる。
【００７２】
さらに、図１２には、消費電力ベースサンプリングのコア単位での重み付けによる消費電力採取の構成例を示している。
（１）オーバーフロー割込み時に、サンプリングプログラム（採取手段）１０は、各コア上の動作プログラムの情報とともに、各コアの「コア電力指標」として、例えば、実行命令数を採取し、毎回保存しておく。
（２）そして、サンプリング終了後の解析処理時に、コア間での実行命令数の比によるコア毎の重み付けを集計し、コア毎のプロファイル結果を出力する。
【００７３】
または、（１）の割込み処理において、オーバーフロー割込み毎に、実行命令数の比に基づいて、コア毎に重み付けカウントも採取情報として付加しておき（実行命令数は保存せずにその場で参照する）、（２）の解析処理時において、その重み付け用のカウント値にしたがってコア毎に重み付け集計を行い、コア単位のプロファイル分析を行うこととしても良い。
【００７４】
以上、実施例４により、測定ＣＰＵがマルチコア構成の場合でも、コア単位で消費電力ベースのサンプリングが可能となる。
【産業上の利用可能性】
【００７５】
本発明の利用分野としては、計算機の設計、システムの構築・管理、プログラミングに関する分野が挙げられる。とくに、「省電力化」を要件とする「計算機設計やシステム構築・管理やプログラム最適化」のための基礎データ採取において利用される。
【符号の説明】
【００７６】
１  計算機装置
２  電力監視設定レジスタ
３  消費電力測定手段
４  積算電力カウンタ
５  オーバーフロー割込み手段
６  ＣＰＵコア
７  メモリ
８  タイマー
１０  サンプリングプログラム
１１  積算電力カウンタ
１２  サンプリング閾値
２０  バッファリング手段
２１  トレース情報
２２  採取トリガー
３０  分配器
４０  コア毎の専用積算電力カウンタ
６０  マルチコアＣＰＵ
１００  採取データ格納領域
１０１  割込み時の採取情報
２００  リングバッファ
【図１】
2010191937.tif 000003
【図２】
2010191937.tif 000004
【図３】
2010191937.tif 000005
【図４】
2010191937.tif 000006
【図５】
2010191937.tif 000007
【図６】
2010191937.tif 000008
【図７】
2010191937.tif 000009
【図８】
2010191937.tif 000010
【図９】
2010191937.tif 000011
【図１０】
2010191937.tif 000012
【図１１】
2010191937.tif 000013
【図１２】
2010191937.tif 000014
【図１３】
2010191937.tif 000015