(57)【要約】  計算機システムは、イベントカウンタ、ＣＰＵ、メモリ、外部装置、ハブＭ３１及びハブＩ３３を備える。更に、この計算機システムは、クロック変更モジュール５０を備えている。システムソフトウェア６０とアプリケーション７０ａ〜７０ｍが動作し、クロック変更モジュール５０がこれらアプリケーション７０を実行するクロックを指定する。クロック変更モジュール５０は、イベントカウンタ２１から読み出したストールサイクルに基づいて、実行制約９０を満足しつつ性能や消費電力特性を最大限に高めるクロックを指定する。
2009125789.tif 000002
【特許請求の範囲】
【請求項１】
システムソフトウェア及び少なくとも１つのアプリケーションソフトウェアを実行し、イベントカウンタ、キャッシュ及び演算装置を含むＣＰＵと、
前記イベントカウンタの制御下で動作するクロック変更モジュールとを備え、
前記クロック変更モジュールは、前記アプリケーションソフトウェアのストールサイクルに基づいて前記アプリケーションソフトウェアを実行するクロックの周波数を変更する
計算機システム。
【請求項２】
請求の範囲１に記載の計算機システムにおいて、
前記クロック変更モジュールは、前記ストールサイクル以外のサイクルと全サイクルの割合である実行効率の範囲が指定されると、前記ストールサイクルに基づいて前記各アプリケーションソフトウェアを実行する
計算機システム。
【請求項３】
請求の範囲１に記載の計算機システムにおいて、
前記クロック変更モジュールは、実行効率の範囲が指定されると、前記指定された実行効率範囲を満たすように、クロックに依存するストールサイクルとクロックに依存しないストールサイクルに基づいて前記クロック周波数を変更して前記アプリケーションソフトウェアを実行する
計算機システム。
【請求項４】
請求の範囲１に記載の計算機システムにおいて、
前記クロック変更モジュールは、ＣＰＵ使用率の範囲が指定されると、前記指定されたＣＰＵ使用率範囲を満たすように前記ストールサイクルに基づいて前記クロック周波数を変更して前記アプリケーションソフトウェアを実行する
計算機システム。
【請求項５】
請求の範囲１に記載の計算機システムにおいて、
前記クロック変更モジュールは、消費電力の範囲が指定されると、前記指定された消費電力の範囲を満たすように、前記ストールサイクルに基づいてクロックを変更して前記アプリケーションソフトウェアを実行する
計算機システム。
【請求項６】
請求の範囲１に記載の計算機システムにおいて、
前記クロック変更モジュールは、前記アプリケーションソフトウェアの実行時のクロックの周波数を変更することによる前記ストールサイクルの変化を推定して、前記クロック周波数を指定する
計算機システム。
【請求項７】
請求の範囲１に記載の計算機システムにおいて、
前記クロック変更モジュールは、前記アプリケーションソフトウェアの実行時のクロックの周波数を変更することによる前記ストールサイクル及び実行効率の変化を推定して、前記クロックを指定する
計算機システム。
【請求項８】
請求の範囲４に記載の計算機システムにおいて、
前記クロック変更モジュールは、前記アプリケーションソフトウェアの実行時のクロックの周波数を変更することによる前記ストールサイクル、実行効率及びＣＰＵ使用効率の変化を推定して、クロックを指定する
計算機システム。
【請求項９】
ＣＰＵによりシステムソフトウェア及び少なくとも１つのアプリケーションソフトウェアを実行するステップと、
前記ＣＰＵにより命令が実行されないストールサイクルを前記アプリケーションソフトウェア毎に検出するステップと、
前記検出されたストールサイクルに基づいて前記ＣＰＵの動作クロック周波数を変更するステップと
を備える計算機システムの動作方法。
【請求項１０】
請求の範囲９に記載の計算機システムの動作方法を実現するための計算機読み取り可能なプログラムコードを記録した計算機読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、計算機システムの動作方法に関し、特にＣＰＵのストールサイクルに基づいてＣＰＵの動作クロックを変更できる計算機システム、その計算機システムの動作方法に関する。
【背景技術】
【０００２】
近年のＣＰＵには、省電力を目的として、ソフトウェア制御でクロック周波数変更を可能とする機能を備えたものがある。クロック周波数の変更機能の１つであるＥｎｈａｎｃｅｄ  Ｉｎｔｅｌ  ＳｐｅｅｄＳｔｅｐ  Ｔｅｃｈｎｏｌｏｇｙ  （ＥＩＳＴ）をソフトウェアで制御する方法が、例えば、Ｖｅｎｋａｔｅｓｈ  Ｐａｌｌｉｐａｄｉによる「Ｅｎｈａｎｃｅｄ  Ｉｎｔｅｌ  ＳｐｅｅｄＳｔｅｐ  Ｔｅｃｈｎｏｌｏｇｙ  ａｎｄ  Ｄｅｍａｎｄ−Ｂａｓｅｄ  Ｓｗｉｔｃｈｉｎｇ  ｏｎ  Ｌｉｎｕｘ」（ｈｔｔｐ：／／ｓｏｆｔｗａｒｅｃｏｍｍｕｎｉｔｙ．ｉｎｔｅｌ．ｃｏｍ／ａｒｔｉｃｌｅｓ／ｅｎｇ／１６１１．ｈｔｍ，２００５年１月１日）に開示されている。このＥＩＳＴは、例えばＩｎｔｅｌ社が生産するＣＰＵであるＰｅｎｔｉｕｍＭ（登録商標：Ｐｅｎｔｉｕｍ）に実装されている。クロック周波数の変更にかかる時間が凡そ１０マイクロ秒であり、実現できるクロックと電圧の組は、（１．６ＧＨｚ，  １．４８４Ｖ），（１．４ＧＨｚ，  １．４２０Ｖ），（１．２ＧＨｚ，  １．２７６Ｖ），（１．０ＧＨｚ，  １．１６４Ｖ），（８００ＭＨｚ，  １．０３６Ｖ），（６００ＭＨｚ，  ０．９５６Ｖ）の６つあることがＴａｂｌｅ１．１に記載されている（例えば、「Ｅｎｈａｎｃｅｄ  Ｉｎｔｅｌ  ＳｐｅｅｄＳｔｅｐ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｐｅｎｔｉｕｍ  Ｍ  Ｐｒｏｃｅｓｓｏｒ」（ｈｔｔｐ：／／ｓｏｆｔｗａｒｅｃｏｍｍｕｎｉｔｙ．ｉｎｔｅｌ．ｃｏｍ／ａｒｔｉｃｌｅｓ／ｅｎｇ／１６１１．ｈｔｍ  ２００４年３ 月）。【０００３】
近年では、性能に関連するＣＰＵ内部イベントをカウントできるＣＰＵが、例えば、特開２０００−１４８４７５号公報で知られている。このイベントは多岐に渡るが、上記文献のＡ．４節には、「Ｕｎｈａｌｔｅｄ  Ｃｏｒｅ  Ｃｙｃｌｅｓ」、「Ｕｎｈａｌｔｅｄ  Ｒｅｆｅｒｅｎｃｅ  Ｃｙｃｌｅｓ」、「Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｉｒｅｄ」、「ＬＬＣ  Ｒｅｆｅｒｅｎｃｅ」、「ＬＬＣ  Ｍｉｓｓｅｓ」、「Ｂｒａｎｃｈ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｉｒｅｄ」、「Ｂｒａｎｃｈ  Ｍｉｓｓｅｓ  Ｒｅｔｉｒｅｄ」の６つが挙げられている。これら以外にも多くのイベントをカウント可能である。また、アウトオブオーダー実行のような複雑な実行形態を持つＣＰＵの性能を測定することは容易ではない旨が、例えば、「インテルＣｏｒｅマイクロアーキテクチャー・プロセッサーのパフォーマンスカウンター」（ｈｔｔｐ：／／ｊｐ．ｘｌｓｏｆｔ．ｃｏｍ／ｄｏｃｕｍｅｎｔｓ／ｉｎｔｅｌ／ｓｅｍｉｎａｒ／４＿Ｃｏｒｅ２＿ｐｅｒｆ＿ｃｏｕｎｔｅｒｓ＿Ｊ．ｐｄｆ  ２００７年）に記載されている。【０００４】
従来のようにＣＰＵの性能が命令のリタイア（実行完了）に強く依存する場合には、少数のイベントをカウントすれば十分であった。しかし近年では、ＣＰＵの性能は、リタイア数よりも、むしろ多数の要因による「ストールサイクル」に強く依存する。この「ストールサイクル」は、実行すべき命令はあるが実行に移せないサイクルという意味で、実行すべき命令がないアイドルサイクルとは異なる。【０００５】
更に、ＣＰＵの負荷状態とバッテリの残容量、ＣＰＵの発熱温度に従って、ＣＰＵのクロック周波数を変更する方法が、例えば特開平９−２３７１３２号公報に開示されている。特開平９−２３７１３２号公報においては、ＣＰＵがＩ／Ｏ（入出力）又はメモリをアクセスする度にセットされる、ビジー状態を示すフラグのセット回数に基づいてアイドル状態の回数を認識して、ＣＰＵの負荷状態を検出する技術が開示されている。【０００６】
ユーザ指定の消費電力指標範囲において、パフォーマンス指標の値を増減させる方法が、例えば、特開平１１−３５３０５２号公報に開示されている。特開平１１−３５３０５２号公報に記載の方法における代表的なパフォーマンス指標は、実行されたユーザモードの命令数である。この命令数は、ＣＰＵのクロック周波数に強く依存するが、比例関係にあるとは限らない。そこで、クロック周波数の変更の前後でパフォーマンス指標の値を測定し、変化率が定められた閾値を越えるか否かを考慮することでクロック周波数が決定される。一方、消費電力指標としては総実行命令数が用いられている。【０００７】
また、ソフトウェアのバージョンアップやインストールは、通常時よりも高いクロック周波数で実行する方法が、例えば、特開２０００−１４８４７５号公報に開示されている。自動車等の移動体に搭載されるコンピュータは、温度の変化と常時バッテリ駆動、他の機器との干渉を考慮して、ハードウェアの最高性能又は最高クロック周波数よりも低い性能で動作することが多い。しかし、近年におけるソフトウェアの変更の頻繁さを考慮すると、バージョンアップやインストール時には高速処理が行われないと実用上不便である。【０００８】
更に、システムの起動処理の期間中は、ＣＰＵをその最高性能又は最高クロックで動作させる方法が、例えば、特開２００１−５６６１号公報に開示されている。特開２００１−５６６１号公報に開示される方法は、省電力を目的としてＣＰＵのクロック周波数を落としてユーザーアプリケーションを実行することを想定している。システムをシャットダウン又はスタンバイしたとき、ＣＰＵの最高速度未満のクロックでシステムを比較的低速に再起動することを避けるための方法である。【０００９】
Ｉ／Ｏバウンドの処理を行うときにＣＰＵのクロック周波数を動的に変更する方法が、例えば、特開２００３−１９６０８３号公報に開示されている。特開２００３−１９６０８３号公報に開示される方法では、メモリ管理の単位であるページにクロックが指定される。ページに記録された命令コードが指定クロックで実行される。クロックは段階的に指定され、例えば、ＯＳカーネルは高速で実行されるように、ＯＳカーネルの入出力待ちファンクションは低速で実行されるように、アプリケーションプログラムは中速で実行されるように、クロック周波数は指定される。【００１０】
システムの電力／熱バジェットを超えることなく、デバイスの性能を最適化できるようクロックを制御する方法が、例えば、特開２００５−７１３６５号公報に開示されている。特開２００５−７１３６５号公報に開示される方法では、アプリケーションプログラムの実行によって生じる複数のデバイス、主にメモリデバイスとＩ／Ｏデバイスへの相対的な負荷を利用する。アプリケーションプログラムがメモリデバイスに多くアクセスする場合にはメモリデバイスのクロック周波数が、他方Ｉ／Ｏデバイスに多くアクセスする場合にはＩ／Ｏデバイスのクロック周波数が相対的に高く設定される。【００１１】
バッチ処理か対話式処理かでＣＰＵのクロック周波数を変更する方法が、例えば、特開２００６−３０２３０６号公報に開示されている。特開２００６−３０２３０６号公報に開示される方法では、ＣＰＵで律速されるバッチ処理を実行するときにはクロック周波数は高く設定され、ワープロの如くＣＰＵで律速されない対話式処理を実行するときにはクロック周波数は低く設定される。但し、ユーザがＣＰＵ性能とシステム電力消費の釣り合いを有効に制御することは難しいため、クロック周波数を調整する図形インターフェースが提供される。【００１２】
処理が割込みによるものか否か及びレジスタの更新頻度に基づいてクロックを停止するコンピュータシステムが、例えば、特開平１１−１１００６３号公報に開示されている。特開平１１−１１００６３号公報に開示されるコンピュータシステムで想定されるのは、外部からの処理要求の多くが割り込みによって発生するシステムであり、割り込み処理は高速に行う必要がある。逆に、キー入力待ちやＩ／Ｏデバイスの完了待ちの処理は高速に行う必要はない。これらの待ち状態において、ソフトウェアループやＨＡＬＴ命令実行などの状態にあると考えれば、このときレジスタへの書き込みは発生しない。【００１３】
上述のように、従来技術では、ストールサイクルに基づいてＣＰＵのクロック周波数を決定できない。特開２００３−１９６０８３号公報や特開２００５−７１３６５号公報では、明らかにアイドルサイクルが生じるＩ／Ｏに限ってクロック周波数が下げられる。同様に、特開平９−２３７１３２号公報に記載のように、Ｉ／Ｏ処理のアイドルサイクルをＣＰＵ負荷として考慮しても、ストールサイクルは考慮できない。特開２０００−１４８４７５号公報、特開２００１−５６６１号公報、及び特開２００６−３０２３０６号公報は、例えばバージョンアップやシステム起動、バッチ処理等の事前に指定された特定の処理だけクロック周波数が上げられるが、これらによって生じるストールサイクルは考慮されていない。特開平１１−３５３０５２号公報では、リタイアした命令数に基づいてＣＰＵのクロック周波数が変更されるが、ストールサイクルは考慮できない。これは、命令によって実行に必要なサイクル数が異なるために命令数が多いからといって、ストールサイクルが短いわけではないからである。即ち、ストールサイクル以外のサイクル数と全サイクル数の商を命令の実行効率とすると、実行効率のリタイアした命令数への依存性は場合によって異なる。また、引用文献８のコンピュータシステムでは、レジスタの更新頻度に基づいてＣＰＵのクロックを停止している。しかし、レジスタの更新頻度及びストールサイクル間には相関関係はあるが、ストールサイクルの絶対値を参照していない。そのため、クロックをどの程度下げるかを定量的に決定できず、クロックを停止するか否かを決定することが開示されているに過ぎない。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平９−２３７１３２号公報
【特許文献２】特開平１１−３５３０５２号公報
【特許文献３】特開２０００−１４８４７５号公報
【特許文献４】特開２００１−５６６１号公報
【特許文献５】特開２００３−１９６０８３号公報
【特許文献６】特開２００５−７１３６５号公報
【特許文献７】特開２００６−３０２３０６号公報
【特許文献８】特開平１１−１１００６３号公報
【非特許文献】
【００１５】
【非特許文献１】Ｖｅｎｋａｔｅｓｈ  Ｐａｌｌｉｐａｄｉ著「Ｅｎｈａｎｃｅｄ  Ｉｎｔｅｌ  ＳｐｅｅｄＳｔｅｐ  Ｔｅｃｈｎｏｌｏｇｙ  ａｎｄ  Ｄｅｍａｎｄ−Ｂａｓｅｄ  Ｓｗｉｔｃｈｉｎｇ  ｏｎ  Ｌｉｎｕｘ」」、ｈｔｔｐ：／／ｓｏｆｔｗａｒｅｃｏｍｍｕｎｉｔｙ．ｉｎｔｅｌ．ｃｏｍ／ａｒｔｉｃｌｅｓ／ｅｎｇ／１６１１．ｈｔｍ、２００５年１月１日
【非特許文献２】「Ｅｎｈａｎｃｅｄ  Ｉｎｔｅｌ  ＳｐｅｅｄＳｔｅｐ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｐｅｎｔｉｕｍ  Ｍ  Ｐｒｏｃｅｓｓｏｒ」、ｈｔｔｐ：／／ｓｏｆｔｗａｒｅｃｏｍｍｕｎｉｔｙ．ｉｎｔｅｌ．ｃｏｍ／ａｒｔｉｃｌｅｓ／ｅｎｇ／１６１１．ｈｔｍ、２００４年３ 月
【非特許文献３】「Ｉｎｔｅｌ  ６４  ａｎｄ  ＩＡ−３２  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ  Ｖｏｌｕｍｅ３Ｂ：  Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ，  Ｐａｒｔ  ２」、ｈｔｔｐ：／／ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／ｐｒｏｄｕｃｔｓ／ｐｒｏｃｅｓｓｏｒ／ｍａｎｕａｌｓ／ｉｎｄｅｘ．ｈｔｍ、２００７年１１月
【非特許文献４】「インテルＣｏｒｅマイクロアーキテクチャー・プロセッサーのパフォーマンスカウンター」、ｈｔｔｐ：／／ｊｐ．ｘｌｓｏｆｔ．ｃｏｍ／ｄｏｃｕｍｅｎｔｓ／ｉｎｔｅｌ／ｓｅｍｉｎａｒ／４＿Ｃｏｒｅ２＿ｐｅｒｆ＿ｃｏｕｎｔｅｒｓ＿Ｊ．ｐｄｆ、２００７年
【発明の概要】
【００１６】
本発明は、ストールサイクルに基づいてＣＰＵの動作クロック周波数を変更する計算システム、その計算機システムの動作方法及びそのプログラムを提供する。
【００１７】
本発明による計算機システムは、イベントカウンタ、キャッシュ及び演算装置を含むＣＰＵを用いてシステムソフトウェア及び少なくとも１つのアプリケーションソフトウェアが動作する計算機システムにおいて、前記イベントカウンタの制御下で動作するクロック変更モジュールを更に備え、前記アプリケーションソフトウェアのストールサイクルに基づいて前記アプリケーションソフトウェアを実行するクロックを変更する。
本発明による計算機システムの動作方法は、ＣＰＵによりシステムソフトウェア及び少なくとも１つのアプリケーションソフトウェアを動作させる計算機の動作方法において、前記ＣＰＵにより命令が実行されないストールのサイクルであるストールサイクルを前記アプリケーションソフトウェア毎に検出するステップと、前記検出されたストールサイクルに基づいて前記ＣＰＵの動作クロックを変化させるステップとを含む。
本発明のプログラムは、上記の計算機システムの動作方法を実現するための計算機が読み取り可能なプログラムを格納する記録媒体である。
【００１８】
本発明によれば、ストールサイクルが多いアプリケーションは低いクロックで実行され、ストールサイクルが少ないアプリケーションは高いクロックで実行される。従って、命令の実行効率を高めることができる。
また、ＣＰＵ使用率が指定範囲内に収まるように現在のストールサイクルとクロック変更後のストールサイクルの関係を推定しつつアプリケーションを実行するＣＰＵのためのクロックが指定されている。従って、消費電力を抑制し且つ十分な性能を提供できる。
更に、消費電力が指定範囲内に収まるように、現在のストールサイクルとクロック変更後のストールサイクルの関係を推定しつつアプリケーション毎にクロックが指定されている。従って、性能低下を抑制しつつ消費電力を低減できる。
【図面の簡単な説明】
【００１９】
【図１】本発明を実施するための計算機の基本構成を示す機能ブロック図である。
【図２】本発明の計算機システムを実施するための最良の形態の主要部の構成を示すブロック図である。
【図３】本発明の計算機の動作方法を説明するフローチャートである。
【図４】本発明の計算機の動作方法を実施するための実行情報８０ｉ（１≦ｉ≦ｍ）の具体例の説明図である。
【図５】本発明の計算機の動作方法の第３の具体例においてＣＰＵ使用率を計算するためのフローチャートである。
【発明を実施するための形態】
【００２０】
次に、本発明による計算機システム、その計算機システムの動作方法について、添付図面を参照して詳細に説明する。
【００２１】
図１は、本発明による計算機システムの実施形態のシステム構成を示す機能ブロック図である。本発明の計算機システムは、図１に示す計算機１０を用いて実現される。この計算機１０は、ＣＰＵ（中央演算処理装置）２０、ハブＭ３１、メモリ３２、ハブＩ３３及び外部装置４０を含んでいる。この計算機１０において、ハブＭ３１は、ＣＰＵ２０及びメモリ３２に接続されている。また、ハブＭ３１は、ハブＩ３３を介して外部装置４０に接続されている。
【００２２】
ＣＰＵ２０は、複数のイベントをカウント可能なイベントカウンタ２１、キャッシュ２２及び演算装置２３を含んでいる。キャッシュ２２は、メモリ３２よりも小容量且つ高速動作可能な記憶装置であり、メモリ３２に記録されたデータの一部のコピーが記録されている。演算装置２３は、キャッシュ２２に必要なデータがない場合（キャッシュミス）にのみ、メモリ３２のデータを操作する。キャッシュミスはイベントカウンタ２１によってカウントされるイベントの１つである。一方、外部装置４０は、例えば記憶装置４１、通信装置４２及びその他の装置４３を含んでいる。外部装置４０としてハブＩ３３に接続された記憶装置４１は、一般にメモリ３２よりも大容量且つ低速であり、ここに記録されたデータはメモリ３２にコピーして使用される。
【００２３】
次に、図２は、本発明による計算機システムの実施形態の主要部を示す機能ブロック図である。本発明の計算機システムは、図２に示すクロック変更モジュール５０を既存の計算機システムに追加することによって実現される。既存の計算機システムの一例では、計算機１０上でシステムソフトウェア６０が動作する。システムソフトウェア６０は、複数のアプリケーション７０ａ、７０ｂ、…、７０ｍをＣＰＵ２０に割り当てる。
【００２４】
システムソフトウェア６０は、アプリケーション７０（７０ａ〜７０ｍ）の実行時間の管理機能も有している。この計算機システムに、アプリケーション７０の実行に際して満足すべき性能又は消費電力に関する制約条件、条件を満足しているか否かを判定するために監視するイベント及びそのペナルティを指定する実行制約９０を与える。クロック変更モジュール５０は、実行制約９０により指定されたイベントの発生回数をイベントカウンタ２１から読み出し、アプリケーション７０毎の実行情報８０（８０ａ〜８０ｍ）として管理する。これらの実行情報８０に基づいて実行制約９０を満足する適切なクロック周波数が指定される。
【００２５】
次に、図３のフローチャートを参照して本発明による計算機システムの全体動作について詳細に説明する。
【００２６】
クロック変更モジュール５０は、実行制約９０により指定されたイベントとそのペナルティを実行情報８０ａ〜８０ｍに反映させ、制約条件を読み込んで実効制約の設定を行う（ステップＡ１）。実行情報８０ａ〜８０ｍは、イベント、ペナルティ及びイベントの発生回数を含んでいる。例えば、実行情報８０ｉ（１≦ｉ≦ｍ）は、図４に例示されるように、テーブル形式で管理される。発生回数の初期値は０とする。また、アプリケーション毎に異なる実行情報を指定してもよい。
【００２７】
クロック変更モジュール５０は、ＣＰＵ２０に割り当てられたアプリケーション７０ｉに対応する実行情報８０ｉに指定されたイベントをイベントカウンタ２１から読み出すイベントカウンタの読み出しを実行する（ステップＡ２）。次に、今回読み出されたイベントの発生回数と、実行情報８０ｉに記録されている前回読み出されたイベントの発生回数の差を求めた後に、発生回数、即ち実行情報の更新が行なわれる（ステップＡ３）。この実行情報の更新は、イベント毎に行なわれる。このステップＡ３で求めた発生回数の差とペナルティの積の総和（即ち、ストールサイクル）が算出される（ステップＡ４）。
【００２８】
次に、ステップＡ４で算出されたストールサイクルが、実行制約９０を満足するか否かを判定する（ステップＡ５）。実行制約を満足しない場合（ステップＡ５：Ｎｏ）には、実行制約９０を満足するアプリケーションクロック周波数、即ちアプリケーション動作速度の指定を行う（ステップＡ６）。実行制約を満足する場合（ステップＡ５：Ｙｅｓ）には、上述したステップＡ２へ戻る。
上記の動作方法は、記録媒体または記憶装置（両方とも図示せず）からメモリ３２にロードされたプログラムをＣＰＵが実行することにより達成される。
【００２９】
次に、具体例に基づいて本発明による計算機システムの動作方法を説明する。先ず、第１の具体例では、実行制約９０が、制約条件は「実行効率５０％以上」、観測するイベントは、ペナルティ０の「ＣＰＵ＿ＣＬＫ＿ＵＮＨＡＬＴＥＤ．ＣＯＲＥ」、ペナルティ１２の「ＭＥＭ＿ＬＯＡＤ＿ＲＥＴＩＲＥＤ．Ｌ１Ｄ＿ＬＩＮＥ＿ＭＩＳＳ」、ペナルティ２００の「ＭＥＭ＿ＬＯＡＤ＿ＲＥＴＩＲＥＤ．Ｌ２Ｄ＿ＬＩＮＥ＿ＭＩＳＳ」、ペナルティ１０の「ＭＥＭ＿ＬＯＡＤ＿ＲＥＴＩＲＥＤ．ＤＴＬＢ＿ＭＩＳＳ」と与えられた場合について述べる。ここで、「実行効率」とは、ストールサイクル以外のサイクルの全サイクルに対する割合である。
【００３０】
ペナルティ０のイベントは、全実行サイクルを表すとする。その他の正のペナルティを持つイベントによってストールサイクルが生じるとする。実行制約中で指定されなかった他のイベントによるストールサイクルは考慮しない。正のペナルティを持つイベントのペナルティは、ＣＰＵ２０のクロックに依存して変化する。その理由は、正のペナルティを持つイベントのペナルティは、主としてＣＰＵ２０と記憶装置の速度差によって発生するからである。例えば、キャッシュミスが発生すると、即ちキャッシュ２２ではなくメモリ３２に記憶されたデータを読もうとすると、１ＣＰＵサイクルでは読めない。そのため、ＣＰＵ２０は、データがメモリ３２から転送されるまで待たなければならない。このサイクルが上述した「ストールサイクル」となる。従って、アプリケーション７０の実行速度は低下するものの、ＣＰＵ２０のクロックが半分になればストールサイクルも半分になる。
【００３１】
上述したステップＡ１において、クロック変更モジュール５０は、実行制約９０から実行情報８０を作成する。即ち、イベント識別子、ペナルティ及び発生回数の３つを管理する。実行情報８０は、例えば次の表１で表現される。
【表１】
2009125789.tif 000003
【００３２】
ステップＡ２において、アプリケーション７０ｉに関して、クロック変更モジュール５０がイベントカウンタ２１からイベントの発生回数を読み出し、ＣＰＵ＿ＣＬＫ＿ＵＮＨＡＬＴＥＤ．ＣＯＲＥが２０，０００，０００、ＭＥＭ＿ＬＯＡＤ＿ＲＥＴＩＲＥＤ．Ｌ１Ｄ＿ＬＩＮＥ＿ＭＩＳＳが１５０，０００、ＭＥＭ＿ＬＯＡＤ＿ＲＥＴＩＲＥＤ．Ｌ２Ｄ＿ＬＩＮＥ＿ＭＩＳＳが５０，０００、ＭＥＭ＿ＬＯＡＤ＿ＲＥＴＩＲＥＤ．ＤＴＬＢ＿ＬＩＮＥ＿ＭＩＳＳが２０，０００だったとする。ステップＡ３において、クロック変更モジュール５０は、イベントの発生回数の増分を求め、発生回数を更新する。観測対象の４つのイベント発生回数は０であったため、発生回数の増分は測定値に等しい。また、発生回数を更新すると次の表２のようになる。
【表２】
2009125789.tif 000004
【００３３】
ステップＡ４において、クロック変更モジュール５０は、ストールサイクルを求める。ストールサイクルは、ペナルティと発生回数の積の総和をとることで求める。従って、実行情報８０より、全サイクルが２０，０００，０００であることを読み取り、ストールサイクルは、１２，０００，０００（＝１２×１５０，０００＋２００×５０，０００＋１０×２０，０００）であることを算出する。
【００３４】
ステップＡ５において、クロック変更モジュール５０は、実行制約９０が満足たされているか否かを調べる。制約条件は「実行効率が５０％以上（ストールサイクルが５０％以下）」であるが、この具体例においては実行効率が４０％であるため、ステップＡ６に進む（尚、満足されている場合には、ステップＡ２に戻る）。実行効率は、全サイクルが２０，０００，０００であることとストールサイクルが１２，０００，０００であることから求めた。
【００３５】
ステップＡ６では、クロック変更モジュール５０が、アプリケーション７０ｉのクロック周波数をｘ倍にすると、イベントの発生数だけでなくペナルティもｘ倍になるため、ストールサイクルはｘ２倍になる。よって、実行効率を５０％以上にするクロック倍率は、１２，０００，０００×x×x／２０，０００，０００×x≦０．５となるｘである。よって、ｘ≦５/６であればよいので、このステップでは５／６倍以下のクロック周波数を指定する。ここでは、最大の性能を得るために、５／６倍のクロックを指定する。
【００３６】
この具体例では、指定された実行効率を実現できるので、実行効率という指標を用いて、ユーザに性能と消費電力のトレードオフを指定することができ、効率的な電力の活用が可能となる。
【００３７】
第２の具体例は、クロックを落としてもペナルティが減少しないイベントも扱う点で上述した第１の具体例とは異なる。第１の具体例で与えられた実行制約９０に加えて、ペナルティ１の「ＲＳ＿ＵＯＰＳ＿ＤＩＳＰＡＴＣＨＥＤ．ＣＹＣＬＥＳ＿ＮＯＮＥ」が観測イベントとして与えられたとする。負のペナルティを持つイベントは、ＣＰＵ２０の動作クロックに依存しないストールサイクルと、第１の具体例のようにクロック依存のストールサイクルの双方を含むとする。第１の具体例と同様に、ステップＡ１において実行情報を作成し、ステップＡ２においてイベント発生回数を読み出したとする。また、ステップＡ３においてイベントの発生回数の増分を求め、次の表３のように発生回数を更新したとする。
【表３】
2009125789.tif 000005
【００３８】
ステップＡ４において、クロック変更モジュール５０は、ストールサイクルを求める。先ず、ストールサイクル以外のサイクルを、ペナルティ０のイベントとペナルティが負のイベントの差として求める。ペナルティが正のイベントによるストールサイクルは、第１の具体例と同様にして求める。ペナルティが負のイベントの発生回数と、ペナルティが正のイベントのストールサイクル差は、クロック非依存のストールサイクルである。以上より、ストールサイクル以外のサイクルは４，０００，０００サイクル、クロック非依存のストールサイクルは４，０００，０００サイクル、クロック依存のストールサイクルは１２，０００，０００サイクルと計算する。
【００３９】
ステップＡ５において、実行効率が２０％であるため、ステップＡ６に進む。実行効率は、全ストールサイクルが２０，０００，０００で、ストールサイクルが１６，０００，０００であることより求めた。
【００４０】
ステップＡ６では、クロック変更モジュール５０が、アプリケーション７０ｉのクロックを指定する。実行効率を５０％以上にするために、（１２，０００，０００×x×x＋４，０００，０００×x）／２０，０００，０００×x≦０．５、を満たすxを見つける。よって、x≦０．５より、クロック変更モジュール５０は０．５倍以下のクロックを指定する。ここでは、性能を最大化するため、０．５倍を指定する。この具体例では、より広範なストールを考慮して指定された実行効率を実現できるようにしたため、第１の具体例よりも効率的な電力の活用を可能にする。
【００４１】
次に、第３の具体例は、実行制約９０の制約条件が「ＣＰＵ使用率が７５％以上」（アイドルサイクルが２５％以下）と与えられる点と、２つのアプリケーションを扱う点及び指定できるクロックが６つ（１．６ＧＨｚ、１．４ＧＨｚ、１．２ＧＨｚ、１．０ＧＨｚ、０．８ＧＨｚ、０．６ＧＨｚ）に制限されている点が、上述した第２の具体例とは異なる。
【００４２】
第２の具体例と同様に、ステップＡ１において２つのアプリケーションそれぞれに対して実行情報８０を作成し、ステップＡ２においてイベント発生回数を読み出したとする。そして、ステップＡ３においてイベントの発生回数の増分を求め、次の表４のように第１のアプリケーションのイベント発生回数を更新したとする。但し、ステップＡ１においては、指定できるクロックが何であるかも読み込む。
【表４】
2009125789.tif 000006
【００４３】
第２のアプリケーションの実行情報は、次の表５のように更新されたとする。
【表５】
2009125789.tif 000007
【００４４】
ステップＡ４において、２つのアプリケーションそれぞれに対してストールサイクルを計算する。第２の具体例と同様の手法で計算して、第１のアプリケーションのストールサイクルは、クロックの倍率をｘとして、（３，０７２，０００×ｘ×ｘ＋７６８，０００×ｘ）と与えられる。第２のアプリケーションのストールサイクルは、クロックの倍率をyとして、（１，３５０，０００×ｙ×ｙ＋４５０，０００×ｙ）と計算する。また、第２の具体例とは異なり、システムソフトウェア６０が管理するアプリケーション７０の動作時間も読み出す。この具体例では、第１のアプリケーションが実行される時間は３０％、第２のアプリケーションが実行される時間は１５％、アイドル（どちらのアプリケーションも実行されない場合）は５５％であるとする。この具体例では、アイドル時にはＣＰＵ２０は最低クロックで動作すると仮定する。
【００４５】
ステップＡ５において、実行制約９０の制約条件「ＣＰＵ使用率７５％以上」が満足されているか否かを判断する。第１及び第２のアプリケーションの使用率の和は４５％なので、制約条件が満足されないので、ステップＡ６に進む。
【００４６】
ステップＡ６では、第１及び第２のアプリケーションに対してクロック周波数を指定する。但し、実行効率を最大化しつつ、指定されたＣＰＵ使用率になるようにクロックの周波数を指定する。第１のアプリケーションのストールサイクルは（３，０７２，０００×ｘ×ｘ＋７６８，０００×ｘ）であるため、クロック周波数とＣＰＵ使用率の関係は以下で与えられる。但し、実行効率は第２の具体例と同様に計算され、ＣＰＵ使用率は、測定されたＣＰＵ使用率、測定されたクロック周波数と想定されるクロック周波数の比、測定されたクロックにおける実行効率と想定されるクロック周波数における実行効率の比の３つの積として計算する。その結果は次の表６の通りである。
【表６】
2009125789.tif 000008
【００４７】
第２のアプリケーションのストールサイクルは（１，３５０，０００×ｙ×ｙ＋４５０，０００×ｙ）であるため、クロックとＣＰＵ使用率の関係は、次の表７の通りである。
【表７】
2009125789.tif 000009
【００４８】
以上より、第１のアプリケーションを実行するクロックの周波数を１ＧＨｚまで落とすまでは、最も実行効率が低いアプリケーションは第１のアプリケーションである。その後、１．４ＧＨｚ、１．２ＧＨｚと順番に求めるクロック周波数を下げる度にＣＰＵ使用率をチェックすると、１ＧＨｚでもＣＰＵ使用率は４１．４８％であり、７５％以上にならない。そこで、第１のアプリケーションのクロックの周波数を１ＧＨｚと想定し、最も実行効率が低くなった第２のアプリケーションに対して想定するクロックの周波数を１．６ＧＨｚから１．４ＧＨｚに１段階下げる。このときのＣＰＵ利用率は４２．４２％であり、最も実行効率が悪いアプリケーションは、また第１のアプリケーションになる。このように、最も実行効率が悪いアプリケーションに対して想定するクロックを段階的に下げつつ、ＣＰＵ利用率が制約条件を満足するか否かを確認する。この具体例では、最終的には、第１のアプリケーションの実行に使用されるクロックの周波数を０．８ＧＨｚ、第２のアプリケーションの実行に使用されるクロックの周波数を１ＧＨｚに落とすと、ＣＰＵ利用率は７５．１９％となり、初めて制約条件を満足する。これは、制約条件を満たしつつ最も高い性能を最も高い実行効率で実現するクロック周波数である。この具体例では、このクロック周波数を指定する。
【００４９】
この具体例におけるクロックの計算方法を、図５のフローチャートのステップＢ１からＢ５にまとめて示す。先ず、指定できるクロックの周波数の全てに対して、アプリケーション毎にクロック周波数と実行効率、ＣＰＵ使用率を計算する（ステップＢ１）。次に、ＣＰＵ使用率として与えられた実行制約９０が満足されるか否かを判定する（ステップＢ２）。実行制約９０が満足された場合（ステップＢ２：Ｙｅｓ）には、ここで想定されているクロック周波数を指定する。実効制約が満足されない場合（ステップＢ２：Ｎｏ）には、ステップＢ３に進む。各アプリケーション７０に対して想定されているクロック周波数に対応する実行効率のうち、最も低い実行効率を持つアプリケーションを選択する（ステップＢ３）。そのアプリケーション７０に対して想定されているクロック周波数を１段階下げる（ステップＢ４）。最後に、想定されるクロックに対してＣＰＵ使用率を計算する（ステップＢ５）。
【００５０】
この具体例では、指定されたＣＰＵ使用率の範囲内でアプリケーション７０を実行できる。ユーザが高いＣＰＵ使用率を許容すれば低い電力（低いクロック）で長時間、低いＣＰＵ使用率しか許容しなければ高い電力（高いクロック）で短時間アプリケーション７０を実行する。高いＣＰＵ使用率が指定された場合には、低いクロック周波数でアプリケーション７０を実行することでストールサイクルによる電力消費を抑制できる。この具体例では、ストールサイクルを低減するように（即ち、実行効率を増大するように）、アプリケーション７０の実行クロックの周波数を調整することで、性能が低下する以上に消費電力を抑制可能である。
【００５１】
次に、第４の具体例では、実行制約９０の制約条件が「消費電力は８．５Ｗ以下」と与えられる点及び実行制約９０にクロック周波数と消費電力の関係が加わる点が、上述した第３の具体例とは異なる。クロック周波数と消費電力の関係は、この具体例では次の表８のように与えられる。
【表８】
2009125789.tif 000010
【００５２】
上述した第３の具体例と同様に、ステップＡ１において２つのアプリケーションそれぞれに対して実行情報８０を作成し、ステップＡ２においてイベント発生回数を読み出したとする。ステップＡ３においてイベントの発生回数の増分を求め、ステップＡ４においては、アプリケーション７０の動作時間を読み出し、ストールサイクルを計算する。但し、ステップＡ１においては、クロック周波数と消費電力の関係も読み込む。
【００５３】
ステップＡ５において、実行制約９０の制約条件「消費電力は８．５Ｗ以下」が満足されているか否かを判定する。ここでは第１及び第２のアプリケーションが共に１．６ＧＨｚで動作している場合を考える。上述した第３の具体例と同様に、第１及び第２のアプリケーション及びアイドルによるＣＰＵ使用率は、それぞれ３０％、１５％、５５％である。よって、ＣＰＵ使用率と消費電力の積の総和は、１３．１２２０５（＝０．３×２４．５＋０．１５×２４．５＋０．５５×３．８１２８１１）であるので、制約条件は満足されず、ステップＡ６に進む。
【００５４】
ステップＡ６では、第１及び第２のアプリケーションに対してクロック周波数を指定する。但し、実行効率を最大化しつつ指定された消費電力の範囲に収まるようにクロック周波数を指定する。クロック周波数と実行効率、ＣＰＵ使用率の関係は上述した第３の具体例と同様に求めるが、この具体例ではこれら３つに加えて、ＣＰＵ使用率とクロック周波数に対応する消費電力の積を、アプリケーションによる消費電力として求める。第１のアプリケーションのクロック周波数と実行効率、ＣＰＵ使用率及び消費電力の関係は次の表９の通りである。
【表９】
2009125789.tif 000011
【００５５】
第２のアプリケーションのクロックと実行効率、ＣＰＵ使用率及び消費電力の関係は次の表１０の通りである。
【表１０】
2009125789.tif 000012
【００５６】
第１のアプリケーションの実行に使用されるクロックの周波数を１ＧＨｚと想定すると、消費電力は３．４２３６６８Ｗで使用率は３６．４８％、１．６ＧＨｚで実行される第２のアプリケーションは、３．６７５Ｗを消費してＣＰＵ使用率は１５％、ＣＰＵ時間の４８．５２％はアイドルになり、このときの消費電力は１．８４９９７５８９７２Ｗである。従って、総消費電力は約８．９５Ｗである。更に、第２のアプリケーションの実行に使用されるクロックの周波数を１．４ＧＨｚと想定すると、第２のアプリケーションによる消費電力は３．１２８２６３Ｗ（０．５４６７３７Ｗ減）、ＣＰＵ使用率は１５．９４％（０．９４％増）なので、アイドル時における消費電力は０．０３５８４０４２３４Ｗ増えるので、合計約０．５１１Ｗ減少する。よって、総消費電力は初めて８．５Ｗを下回る。この具体例では、ＣＰＵ使用率の最小化を図りつつ消費電力に関する制約条件も満足するため、第１のアプリケーションのために使用されるクロックの周波数として１ＧＨｚを、第２のアプリケーションのためのクロックの周波数として１．４ＧＨｚを指定する。
【００５７】
この具体例では、指定された消費電力の範囲内でアプリケーションを実行できる。また、この具体例では、ストールサイクルを低減するように（即ち、実行効率を増大するように）、アプリケーション７０の実行クロックの周波数を調整することで、消費電力を抑制する以上に性能の低下を抑制できる。
【００５８】
本発明は、更に以下の特徴を有している。
（１）本発明による計算機システムは、イベントカウンタ、キャッシュ及び演算装置を含むＣＰＵを用いてシステムソフトウェア及び少なくとも１つのアプリケーションソフトウェアが動作する計算機システムにおいて、前記イベントカウンタの制御下で動作するクロック変更モジュールを更に備え、前記アプリケーションソフトウェアのストールサイクルに基づいて前記アプリケーションソフトウェアを実行するクロックを変更する。
（２）本発明による計算機システムの動作方法は、ＣＰＵによりシステムソフトウェア及び少なくとも１つのアプリケーションソフトウェアを動作させる計算機の動作方法において、前記ＣＰＵにより命令が実行されないストールのサイクルであるストールサイクルを前記アプリケーションソフトウェア毎に検出するステップと、前記検出されたストールサイクルに基づいて前記ＣＰＵの動作クロックを変化させるステップとを含む。
（３）本発明のプログラムは、上記（２）の計算機システムの動作方法を計算機が読み取り可能に構成したプログラムである。
（４）上記（１）の計算機システムにおいて、前記クロック変更モジュールは、前記ストールサイクル以外のサイクルと全サイクルの商である実行効率の範囲が指定されると、前記ストールサイクルに基づいて前記各アプリケーションソフトウェアを実行する。
（５）上記（１）の計算機システムにおいて、前記クロック変更モジュールは、実行効率の範囲が指定されると、クロックに依存するストールとクロックに依存しないストールサイクルに基づいて前記アプリケーションソフトウェアを実行するクロックを変更することにより、前記指定された実行効率を実現する。
（６）上記（１）の計算機システムにおいて、前記クロック変更モジュールは、ＣＰＵ利用率の範囲が指定されると、前記ストールサイクルに基づいて前記アプリケーションソフトウェアを実行するクロックを変更することにより、前記指定のＣＰＵ利用率を実現する。
（７）上記（１）の計算機システムにおいて、前記クロック変更モジュールは、消費電力の範囲が指定されると、前記ストールサイクルに基づいて前記アプリケーションソフトウェアを実行するクロックを変更することにより、前記指定の消費電力を実現する。
（８）上記（１）、（４）乃至（７）の何れかの計算機システムにおいて、前記クロック変更モジュールは、前記アプリケーションソフトウェアを実行するクロックを変更時の前期ストールサイクルの変化を推定して、前記クロックを指定する。
（９）上記（１）、（４）乃至（８）の何れかの計算機システムにおいて、前記クロック変更モジュールは、前記アプリケーションソフトウェアを実行するクロックを変更時の前記ストールサイクル及び実行効率の変化を推定して、前記クロックを指定する。
（１０）上記（６）又は（７）の計算機システムにおいて、前記クロック変更モジュールは、前記アプリケーションソフトウェアを実行するクロックを変更時の前記ストールサイクル、実行効率及びＣＰＵ使用効率の変化を推定して、クロックを指定する。
【００５９】
本発明によれば、動作クロックを変更できるＣＰＵを含む計算機システム一般において、消費電力を低減しつつ要求された情報処理を実行することができる。特に、多くの情報処理を実行するとともに多大な電力を消費するデータセンターにおいて、計算機システムの消費電力を低減することが可能である。
【００６０】
以上、本発明の計算機システムの及び計算機システムの動作方法の好適な実施の形態を幾つかの具体例を挙げて詳述した。しかし、斯かる実施の形態は本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨や精神を逸脱することなく、特定用途に応じて種々の変形変更が可能であること、当業者には容易に理解できよう。また、本発明の計算機の動作方法は、プログラムの形態で実施し、コンピュータにて実行させることが可能であること、当業者には自明である。
本願は、日本国特許出願（特願２００８−１０１２８２）に基づいて条約上の優先権を主張する。その記載内容は、引用により本願に組み込まれる。
【図１】
2009125789.tif 000013
【図２】
2009125789.tif 000014
【図３】
2009125789.tif 000015
【図４】
2009125789.tif 000016
【図５】
2009125789.tif 000017
【国際調査報告】
2009125789.tif 000018
2009125789.tif 000019
2009125789.tif 000020
2009125789.tif 000021