(57)【要約】【課題】従来のＣＰＵの省電力方法では、周波数切替条件が１つの閾値であり、周波数切替が頻発する場合は周波数切替条件を変更するようにしているため、きめ細かな周波数切り替えができず、スループットを保証しながら最大限の節電をすることが困難である。【解決手段】ＣＰＵパワー制御手段１０１は、ＣＰＵ現使用率取得手段１０２により取得した自ＣＰＵの現在のＣＰＵ使用率と下限ＣＰＵ使用率及び上限ＣＰＵ使用率とをそれぞれ比較し、下限ＣＰＵ使用率より低く、かつ、自ＣＰＵの現周波数が最低でないときは、自ＣＰＵの周波数を１段階下げる。逆に、自ＣＰＵの現在のＣＰＵ使用率が上限ＣＰＵ使用率より高く、かつ、自ＣＰＵの現周波数が最高でないと判定したときは、自ＣＰＵの周波数を１段階上げる。これにより、ＣＰＵ使用率の低いときにはＣＰＵ周波数を低くして節電し、高いときにはスループットを落とさないようにすることができる。【選択図】図１
2008217628.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータのＣＰＵのパワー制御によりＣＰＵの省電力化を行うＣＰＵの省電力システムにおいて、
前記コンピュータのオペレーティングシステムのレディタスクに前記ＣＰＵをスケジューリングするスケジューラと、
前記スケジューラにより起動されて前記ＣＰＵの現在の使用率を取得して定期的に更新するＣＰＵ現使用率取得手段と、
前記スケジューラにより起動されて前記ＣＰＵ現使用率取得手段により取得された前記ＣＰＵの現在の使用率を入力として受け、その現在の使用率と使用率の複数の閾値とを比較し、その比較結果に基づいて、前記ＣＰＵの現在のＣＰＵ周波数を制御することでＣＰＵパワー制御を行うＣＰＵパワー制御手段と
を有することを特徴とするＣＰＵの省電力システム。
【請求項２】
前記ＣＰＵパワー制御手段は、前記複数の閾値として上限ＣＰＵ使用率と下限ＣＰＵ使用率とを用意し、前記ＣＰＵの現在の使用率が前記上限ＣＰＵ使用率よりも高く、かつ、前記ＣＰＵの現在のＣＰＵ周波数が予め定めた最高周波数未満であるときは、前記現在のＣＰＵ周波数を１段階上げ、前記ＣＰＵの現在の使用率が前記下限ＣＰＵ使用率よりも低く、かつ、前記ＣＰＵの現在のＣＰＵ周波数が予め定めた最低周波数よりも高いときは、前記現在のＣＰＵ周波数を１段階下げるパワー制御を行うと共に、変更後のＣＰＵ周波数を前記現在の周波数に更新することを特徴とする請求項１記載のＣＰＵの省電力システム。
【請求項３】
前記ＣＰＵパワー制御手段は、前記スケジューラにより起動されたときの時刻を現時刻として取得し、その現時刻と前回のＣＰＵのパワー制御実行時の前回評価時刻とが、予め定めた評価周期を経過しているときにのみ前記パワー制御を行うと共に、そのパワー制御したときの時刻又は前記ＣＰＵの現在の使用率が前記上限ＣＰＵ使用率と前記下限ＣＰＵ使用率との間の値であると判定したときに、前記前回評価時刻を前記現時刻に更新することを特徴とする請求項２記載のＣＰＵの省電力システム。
【請求項４】
前記コンピュータは、複数のＣＰＵがメインメモリを共有するマルチプロセッサであり、前記ＣＰＵ現使用率取得手段及び前記ＣＰＵパワー制御手段は前記複数のＣＰＵに対して共通に設けられており、前記複数のＣＰＵのそれぞれのＣＰＵ現使用率の取得とＣＰＵパワー制御とを個別に行うことを特徴とする請求項１乃至３のうちいずれか一項記載のＣＰＵの省電力システム。
【請求項５】
コンピュータを構成する複数のＣＰＵのパワーを個別に制御することによりＣＰＵの省電力化を行うＣＰＵの省電力システムにおいて、
前記コンピュータのオペレーティングシステムのレディタスクに前記複数のＣＰＵをスケジューリングするスケジューラと、
前記スケジューラにより起動されて前記複数のＣＰＵの現在の使用率を取得して定期的に更新するＣＰＵ現使用率取得手段と、
前記複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々について周波数０の休止を含むＣＰＵ周波数を順位付けたＣＰＵ周波数順位表を予め有しており、前記スケジューラにより起動されて前記ＣＰＵ現使用率取得手段により取得された前記ＣＰＵの現在の使用率を入力として受け、各ＣＰＵ毎に入力された現在の使用率と使用率の複数の閾値とを比較し、その比較結果に基づいて各ＣＰＵの前記ＣＰＵ周波数順位表での現在の周波数順位を設定してＣＰＵ周波数を制御することでＣＰＵパワー制御を行うＣＰＵパワー制御手段と
を有することを特徴とするＣＰＵの省電力システム。
【請求項６】
前記ＣＰＵパワー制御手段は、前記複数の閾値として上限ＣＰＵ使用率と下限ＣＰＵ使用率とを用意し、前記第１のＣＰＵの現在の使用率が前記上限ＣＰＵ使用率よりも高く、かつ、前記第１のＣＰＵの現在のＣＰＵ周波数が現在の前記ＣＰＵ周波数順位表での予め定めた最高周波数未満であるときは、前記現在のＣＰＵ周波数順位表での順位を１段階上げ、前記第１のＣＰＵの現在の使用率が前記下限ＣＰＵ使用率よりも低く、かつ、前記第１のＣＰＵの現在のＣＰＵ周波数が現在の前記ＣＰＵ順位表での予め定めた最低周波数よりも高いときは、前記現在のＣＰＵ周波数順位表での順位を１段階下げる順位制御を行うと共に、前記第１及び第２のＣＰＵの各ＣＰＵ周波数が、前記順位制御の結果前記ＣＰＵ周波数順位表で示す自ＣＰＵの周波数と現在のＣＰＵ周波数とが異なるとき、前記ＣＰＵ周波数順位表で示す自ＣＰＵの周波数を前記現在のＣＰＵ周波数に設定するパワー制御を行うことを特徴とする請求項５記載のＣＰＵの省電力システム。
【請求項７】
前記ＣＰＵパワー制御手段は、前記スケジューラにより起動されたときの時刻を現時刻として取得し、その現時刻と前回のＣＰＵのパワー制御実行時の前回評価時刻とが、予め定めた評価周期を経過しているときにのみ前記パワー制御を行うと共に、そのパワー制御したときの時刻又は前記第１のＣＰＵの現在の使用率が前記上限ＣＰＵ使用率と前記下限ＣＰＵ使用率との間の値であると判定したときに、前記前回評価時刻を前記現時刻に更新することを特徴とする請求項５又は６記載のＣＰＵの省電力システム。
【請求項８】
コンピュータのＣＰＵのパワー制御によりＣＰＵの省電力化を行うＣＰＵの省電力方法において、
前記コンピュータのオペレーティングシステムのレディタスクに前記ＣＰＵをスケジューリングするスケジューラにより起動されて前記ＣＰＵの現在の使用率を取得する第１のステップと、
前記スケジューラにより起動されて前記第１のステップにより取得された前記ＣＰＵの現在の使用率と予め設定した使用率の複数の閾値とを比較する第２のステップと、
前記第２のステップによる比較結果に基づいて、前記ＣＰＵの現在のＣＰＵ周波数を制御する第３のステップと
を含むことを特徴とするＣＰＵの省電力方法。
【請求項９】
前記第２のステップは、前記複数の閾値として上限ＣＰＵ使用率と下限ＣＰＵ使用率とを用意し、前記第３のステップは、前記ＣＰＵの現在の使用率が前記上限ＣＰＵ使用率よりも高く、かつ、前記ＣＰＵの現在のＣＰＵ周波数が予め定めた最高周波数未満である比較結果が得られたときは、前記現在のＣＰＵ周波数を１段階上げ、前記ＣＰＵの現在の使用率が前記下限ＣＰＵ使用率よりも低く、かつ、前記ＣＰＵの現在のＣＰＵ周波数が予め定めた最低周波数よりも高い比較結果が得られたときは、前記現在のＣＰＵ周波数を１段階下げるパワー制御を行うと共に、変更後のＣＰＵ周波数を前記現在の周波数に更新することを特徴とする請求項８記載のＣＰＵの省電力方法。
【請求項１０】
コンピュータを構成する複数のＣＰＵのパワーを個別に制御することによりＣＰＵの省電力化を行うＣＰＵの省電力方法において、
前記コンピュータのオペレーティングシステムのレディタスクに前記複数のＣＰＵをスケジューリングするスケジューラにより起動されて前記複数のＣＰＵの現在の使用率を取得する第１のステップと、
前記複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々について周波数０の休止を含むＣＰＵ周波数を順位付けたＣＰＵ周波数順位表を予め有しており、前記スケジューラにより起動されて前記第１のステップにより取得された前記ＣＰＵの現在の使用率を入力として受け、各ＣＰＵ毎に入力された現在の使用率と使用率の複数の閾値とを比較する第２のステップと、
前記第２のステップの比較結果に基づいて各ＣＰＵの前記ＣＰＵ周波数順位表での現在の周波数順位を設定してＣＰＵ周波数を制御することでＣＰＵパワー制御を行う第３のステップと
を含むことを特徴とするＣＰＵの省電力方法。
【請求項１１】
前記第２のステップは、前記複数の閾値として上限ＣＰＵ使用率と下限ＣＰＵ使用率とを用意しており、前記第３のステップは、前記第２のステップにより前記第１のＣＰＵの現在の使用率が前記上限ＣＰＵ使用率よりも高く、かつ、前記第１のＣＰＵの現在のＣＰＵ周波数が現在の前記ＣＰＵ周波数順位表での予め定めた最高周波数未満である比較結果が得られたときは、前記現在のＣＰＵ周波数順位表での順位を１段階上げ、前記第２のステップにより前記第１のＣＰＵの現在の使用率が前記下限ＣＰＵ使用率よりも低く、かつ、前記第１のＣＰＵの現在のＣＰＵ周波数が現在の前記ＣＰＵ順位表での予め定めた最低周波数よりも高い比較結果が得られたときは、前記現在のＣＰＵ周波数順位表での順位を１段階下げる順位制御を行うと共に、前記第１及び第２のＣＰＵの各ＣＰＵ周波数が、前記順位制御の結果前記ＣＰＵ周波数順位表で示す自ＣＰＵの周波数と現在のＣＰＵ周波数とが異なるとき、前記ＣＰＵ周波数順位表で示す自ＣＰＵの周波数を前記現在のＣＰＵ周波数に設定するパワー制御を行うことを特徴とする請求項１０記載のＣＰＵの省電力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＣＰＵの省電力システム及び省電力方法に係り、特にオペレーティングシステム（ＯＳ）におけるＣＰＵ（中央処理装置）の省電力システム及び省電力方法に関する。
【背景技術】
【０００２】
従来の中央処理装置（ＣＰＵ）の動作周波数の切り替えによる省電力方法には、ＣＰＵの周波数切替の条件として、データの入出力又は１つのＣＰＵの稼働率を用いて省電力化を実現する方法が知られている（例えば、特許文献１参照）。この省電力方法では、ＣＰＵの稼働率を監視し、ＣＰＵの稼働率がＣＰＵの周波数を切り替えるための周波数切替条件を満たしたときにＣＰＵの周波数を切り替え、また、その周波数切替の頻度が周波数の切替条件を満たしたとき周波数切替条件を変更する周波数切替条件変更手段を備えた構成である。
【０００３】
この特許文献１記載のＣＰＵの省電力方法によれば、ＣＰＵの稼働率に基づいてＣＰＵの周波数切替を行い、その周波数切替の切替頻度が高い場合は、周波数切替条件の稼働率を切り替えることで、システム性能を著しく低下させることなく、省電力を図るようにしている。
【０００４】
また、クロック周波数を動的に変更できたり、ＨＡＬＴ（休止）モードを設けたりしたパワーセーブ機能付きのＣＰＵが現在利用可能であるが、このＣＰＵでは、（１）ＯＳがアイドル状態のときにＨＡＬＴ（休止）モードにする、（２）電源種別（ＡＣ電源駆動かバッテリ駆動か）や電池残量や発熱状態に応じてクロック周波数を落とす方法のいずれかで省電力方法が採られている。
【０００５】
【特許文献１】特開平７−１０４８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかるに、特許文献１記載の従来のＣＰＵの省電力方法は、周波数の切り替えが高いか低いかの２段階しかできず、また、周波数切替条件が１つの閾値（下げる場合と上げる場合で同一の値）であり、これにより周波数切替が頻発する場合は周波数切替条件を変更するようにしているため、きめ細かな周波数切り替えができず、パフォーマンス（スループット）を保証しながら最大限の節電をすることが困難である。
【０００７】
一方、パワーセーブ機能付きのＣＰＵでは、オペレーティングシステム（ＯＳ）がパワーセーブ機能を利用してシステムがアイドル状態のときにＨＡＬＴモードにする、電源種別（ＡＣ電源駆動かバッテリ駆動か）や電池残量や発熱状態に応じてクロック周波数を落とすなどの省電力方法を採用しているが、例えばＡＣ電源駆動であっても省電力は重要な課題となっており、クロック周波数を電源毎に一律とするのではなくパフォーマンスと両立できる省電力方法が課題であり、パフォーマンス（スループット）を保証しながら最大限の節電をすることができない。
【０００８】
本発明は以上の点に鑑みなされたもので、ＣＰＵ使用率を一定に保つようＣＰＵのパワー制御を行うことで、システムのスループットと省電力のバランスを最適化し得るＣＰＵの省電力システム及び省電力方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するため、第１の発明は、コンピュータのＣＰＵのパワー制御によりＣＰＵの省電力化を行うＣＰＵの省電力システムにおいて、コンピュータのオペレーティングシステムのレディタスクにＣＰＵをスケジューリングするスケジューラと、スケジューラにより起動されてＣＰＵの現在の使用率を取得して定期的に更新するＣＰＵ現使用率取得手段と、スケジューラにより起動されてＣＰＵ現使用率取得手段により取得されたＣＰＵの現在の使用率を入力として受け、その現在の使用率と使用率の複数の閾値とを比較し、その比較結果に基づいて、ＣＰＵの現在のＣＰＵ周波数を制御することでＣＰＵパワー制御を行うＣＰＵパワー制御手段とを有することを特徴とする。
【００１０】
この発明では、ＣＰＵの現在の使用率と使用率の複数の閾値とを比較し、その比較結果に基づいて、ＣＰＵの現在のＣＰＵ周波数を制御することでＣＰＵパワー制御を行うようにしたため、ＣＰＵ使用率に応じてＣＰＵ周波数を制御して、ＣＰＵ使用率の低いときにはＣＰＵ周波数を低くして節電し、高いときにはスループットを落とさないようにすることができると共に、ＣＰＵ使用率が複数の閾値のいずれの閾値より高いか、低いか又はそれらの間にあるかによって、ＣＰＵ周波数をきめ細かく制御することができる。
【００１１】
ここで、第２の発明は、第１の発明におけるＣＰＵパワー制御手段が、複数の閾値として上限ＣＰＵ使用率と下限ＣＰＵ使用率とを用意し、ＣＰＵの現在の使用率が上限ＣＰＵ使用率よりも高く、かつ、ＣＰＵの現在のＣＰＵ周波数が予め定めた最高周波数未満であるときは、現在のＣＰＵ周波数を１段階上げ、ＣＰＵの現在の使用率が下限ＣＰＵ使用率よりも低く、かつ、ＣＰＵの現在のＣＰＵ周波数が予め定めた最低周波数よりも高いときは、現在のＣＰＵ周波数を１段階下げるパワー制御を行うと共に、変更後のＣＰＵ周波数を現在の周波数に更新することを特徴とする。
【００１２】
また、第３の発明は、第２の発明のＣＰＵパワー制御手段が、スケジューラにより起動されたときの時刻を現時刻として取得し、その現時刻と前回のＣＰＵのパワー制御実行時の前回評価時刻とが、予め定めた評価周期を経過しているときにのみパワー制御を行うと共に、そのパワー制御したときの時刻又はＣＰＵの現在の使用率が上限ＣＰＵ使用率と下限ＣＰＵ使用率との間の値であると判定したときに、前回評価時刻を現時刻に更新することを特徴とする。
【００１３】
また、上記の目的を達成するため、第４の発明は、コンピュータを構成する複数のＣＰＵのパワーを個別に制御することによりＣＰＵの省電力化を行うＣＰＵの省電力システムにおいて、コンピュータのオペレーティングシステムのレディタスクに複数のＣＰＵをスケジューリングするスケジューラと、スケジューラにより起動されて複数のＣＰＵの現在の使用率を取得して定期的に更新するＣＰＵ現使用率取得手段と、複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々について周波数０の休止を含むＣＰＵ周波数を順位付けたＣＰＵ周波数順位表を予め有しており、スケジューラにより起動されてＣＰＵ現使用率取得手段により取得されたＣＰＵの現在の使用率を入力として受け、各ＣＰＵ毎に入力された現在の使用率と使用率の複数の閾値とを比較し、その比較結果に基づいて各ＣＰＵのＣＰＵ周波数順位表での現在の周波数順位を設定してＣＰＵ周波数を制御することでＣＰＵパワー制御を行うＣＰＵパワー制御手段とを有することを特徴とする。
【００１４】
この発明では、複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々について周波数０の休止を含むＣＰＵ周波数を順位付けたＣＰＵ周波数順位表での現在の周波数順位を、ＣＰＵ現使用率取得手段により取得されたＣＰＵの現在の使用率と使用率の複数の閾値との比較結果に基づいて設定して、その周波数順位表に示すＣＰＵ周波数に制御することでＣＰＵパワー制御を行うようにしたため、マルチプロセッサ（ＴＣＭＰ）のように、全体の消費電力とスループットの関係が、それぞれのＣＰＵの消費電力とスループットの和にならないような場合に有効なパワー制御ができる。
【００１５】
また、上記の目的を達成するため、第５の発明は、コンピュータのＣＰＵのパワー制御によりＣＰＵの省電力化を行うＣＰＵの省電力方法において、コンピュータのオペレーティングシステムのレディタスクにＣＰＵをスケジューリングするスケジューラにより起動されてＣＰＵの現在の使用率を取得する第１のステップと、スケジューラにより起動されて第１のステップにより取得されたＣＰＵの現在の使用率と予め設定した使用率の複数の閾値とを比較する第２のステップと、第２のステップによる比較結果に基づいて、ＣＰＵの現在のＣＰＵ周波数を制御する第３のステップとを含むことを特徴とする。この発明では、第１の発明と同様に、ＣＰＵの現在の使用率と使用率の複数の閾値とを比較し、その比較結果に基づいて、ＣＰＵの現在のＣＰＵ周波数を制御することでＣＰＵパワー制御を行うようにしたため、ＣＰＵ使用率が複数の閾値のいずれの閾値より高いか、低いか又はそれらの間にあるかによって、ＣＰＵ周波数をきめ細かく制御することができる。
【００１６】
また、上記の目的を達成するため、第６の発明は、コンピュータを構成する複数のＣＰＵのパワーを個別に制御することによりＣＰＵの省電力化を行うＣＰＵの省電力方法において、コンピュータのオペレーティングシステムのレディタスクに複数のＣＰＵをスケジューリングするスケジューラにより起動されて複数のＣＰＵの現在の使用率を取得する第１のステップと、複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々について周波数０の休止を含むＣＰＵ周波数を順位付けたＣＰＵ周波数順位表を予め有しており、スケジューラにより起動されて第１のステップにより取得されたＣＰＵの現在の使用率を入力として受け、各ＣＰＵ毎に入力された現在の使用率と使用率の複数の閾値とを比較する第２のステップと、第２のステップの比較結果に基づいて各ＣＰＵのＣＰＵ周波数順位表での現在の周波数順位を設定してＣＰＵ周波数を制御することでＣＰＵパワー制御を行う第３のステップとを含むことを特徴とする。
【００１７】
この発明では、第４の発明と同様に、複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々について周波数０の休止を含むＣＰＵ周波数を順位付けたＣＰＵ周波数順位表での現在の周波数順位を、ＣＰＵの現在の使用率と使用率の複数の閾値との比較結果に基づいて設定して、その周波数順位表に示すＣＰＵ周波数に制御することでＣＰＵパワー制御を行うようにしたため、マルチプロセッサ（ＴＣＭＰ）のように、全体の消費電力とスループットの関係が、それぞれのＣＰＵの消費電力とスループットの和にならないような場合に有効なパワー制御ができる。
【発明の効果】
【００１８】
本発明によれば、ＣＰＵ使用率に応じてＣＰＵ使用率が複数の閾値のいずれの閾値より高いか、低いか又はそれらの間にあるかによって、ＣＰＵ周波数をきめ細かく制御するようにしたため、ＣＰＵ使用率の低いときにはＣＰＵ周波数を低くして節電し、高いときにはスループットを落とさないようにすることが最適にでき、スループットをあまり落とさずに省電力化を実現することができる。
【００１９】
また、本発明によれば、複数のＣＰＵのうち常時動作するように設定した第１のＣＰＵと残りの他の第２のＣＰＵの各々についてＣＰＵ周波数順位表での現在の周波数順位を、ＣＰＵの現在の使用率と使用率の複数の閾値との比較結果に基づいて設定して、その周波数順位表に示すＣＰＵ周波数に制御することでＣＰＵパワー制御を行うことにより全体の効率を考慮した省電力制御を実現することができるため、１つのＣＰＵが高周波数で処理し、他のＣＰＵは休止させた方が全体の消費電力が小さいマルチプロセッサシステムに対して、様々な特性に柔軟に対処して最適な省電力化を実現することができる。
【発明を実施するための最良の形態】
【００２０】
次に、発明を実施するための最良の形態について図面と共に説明する。図１は本発明になるＣＰＵの省電力システムの一実施の形態の構成図を示す。同図に示すように、本実施の形態のＣＰＵの省電力システムは、ＣＰＵ使用率をリアルタイムに取得するためのＣＰＵ現使用率取得手段１０２と、そのＣＰＵ使用率によりリアルタイムにＣＰＵのパワー制御を行うためのＣＰＵパワー制御手段１０１と、スケジューラ１０３とを備えており、コンピュータのＯＳにおいて、ＣＰＵ使用率を一定に保つようＣＰＵのパワー制御を行うことで、システムのスループットと省電力のバランスを最適化することを特徴としている。
【００２１】
図１において、ＣＰＵパワー制御手段１０１は、ＯＳのスケジューラ１０３により起動され、ＣＰＵ現使用率取得手段１０２を用いて現在のＣＰＵ使用率を取得し、その情報を基準値と比較してＣＰＵパワーを制御する。
【００２２】
ここで、本発明の一実施例として、図２に示すＣＰＵ番号＃０、＃１、＃２の３つのＣＰＵを密結合（ＭＥＭで示すメインメモリを共有）した構成のマルチプロセッサ（ＴＣＭＰ）として有するコンピュータを考え、各ＣＰＵは３段階（高・中・低）の周波数切り替えと休止状態（ＨＡＬＴモード）への遷移が可能であるものとする。動作周波数は高いほど処理速度が速いが消費電力も大きく、逆に低いほど処理速度は遅いが消費電力も小さいものとする。
【００２３】
再び図１に戻って説明する。図１に示す構成は、図２に示す３つのＣＰＵに個別に設けられて動作する。図１において、スケジューラ１０３はＯＳのレディ（Ｒｅａｄｙ）タスク（プロセス／スレッド）にＣＰＵをディスパッチする（スケジューリングする）ものであり、スケジューラ１０３が毎ディスパッチ前にＣＰＵ現使用率取得手段１０２及びＣＰＵパワー制御手段１０１を呼び出すことで、コンピュータのＣＰＵの処理速度と消費電力を制御する。スケジューラ１０３から呼び出されたＣＰＵ現使用率取得手段１０２は、各ＣＰＵの使用率を定期的に更新し、ＣＰＵパワー制御手段１０１は、ＣＰＵ現使用率取得手段１０２にて現在の使用率を参照してこの値によりＣＰＵの処理速度を制御する。
【００２４】
また、ＣＰＵパワー制御手段１０１を実現するためのテーブルを図３に、ＣＰＵ現使用率取得手段１０２実現のためのテーブルを図４に示す。図３のテーブルは「ＣＰＵ状態表」１と、「システム設定値」２とからなる。「ＣＰＵ状態表」１は、ＣＰＵ番号＃０、＃１、＃２の各ＣＰＵ毎にＣＰＵを特定するＣＰＵ番号と現在の動作周波数（処理速度）である「現周波数」、最後に動作周波数の変更を行うかの評価を行った「前回評価時刻」からなる。また、「システム設定値」２は、システムの設定値として、これを下回った場合には周波数を下げるＣＰＵ使用率としての「下限ＣＰＵ使用率」、逆にこれを上回った場合には周波数を上げるＣＰＵ使用率としての「上限ＣＰＵ使用率」（下限ＣＰＵ使用率＜上限ＣＰＵ使用率）、ＣＰＵ使用率によって周波数を変更するかを評価する間隔としての「評価周期」が格納されている。
【００２５】
図４に示すテーブルは、ＣＰＵ番号＃０、＃１、＃２の各ＣＰＵ毎にＣＰＵ使用率を計算するための「ＣＰＵ使用状況表」１１と「システム設定値」１２とからなる。「ＣＰＵ使用状況表」１１はＣＰＵ番号と、最後にＣＰＵ使用率の測定を開始した時刻である「前回積算時刻」と、前回積算時刻以降のＣＰＵのアイドル時間を積算した値である「アイドル積算時間」とからなり、「システム設定値」１２は、システムの設定値として、各ＣＰＵ使用率の更新周期である「ＣＰＵ使用率更新間隔」が格納されている。システム設定値はいずれもシステム固定で参照のみである。
【００２６】
次に、本実施の形態の動作について説明する。図１において、スケジューラ１０３が次のＲｅａｄｙタスクへのディスパッチのたびに、その直前にＣＰＵ現使用率取得手段１０２を呼び出し、続いてＣＰＵパワー制御手段１０１を呼び出す。
【００２７】
まず、図１のＣＰＵパワー制御手段１０１の動作を、図５に示すアクティビティ図（フローチャート）を参照して詳細に説明する。ＣＰＵパワー制御手段１０１は、スケジューラ１０３が次のＲｅａｄｙタスクを実行させる前に呼び出し、最初に現時刻を取得する（ステップＳ１）。これは「時分秒」形式である必要はなく、むしろ十分な精度として１０ｍｓ単位以下の実時間タイマなどを利用する。
【００２８】
次に、Ｒｅａｄｙタスクがあるかどうか判定し（ステップＳ２）、ない場合、自ＣＰＵをＨＡＬＴモードにする（ステップＳ３）。これはスケジューラ１０３のアイドルループに当たる。ＨＡＬＴモードは外部からの割り込みにより解け、対応する割り込み処理（ステップＳ４）を行ってスケジューラ１０３に戻るのは従来のＯＳと同様であるが、ここではＣＰＵ現使用率取得手段１０２を実現するために、ステップＳ４の割り込み処理では、最終的な割り込み処理（ステップＳ４０３）の前に再度現時刻を取得し（ステップＳ４０１）、ＨＡＬＴモードの前後の時刻の差を「ＣＰＵ使用状況表」の自ＣＰＵの「アイドル積算時間」に加算する（ステップＳ４０２）。「アイドル積算時間」の初期値は”０”とする。
【００２９】
一方、ステップＳ２でＲｅａｄｙタスクがあると判定した場合は、現時刻が図３のＣＰＵ状態表１の「前回評価時刻」からシステム設定値２の「評価周期」以上経過しているかどうか判定し（ステップＳ５）、経過している場合のみ、以下の評価を行う。
【００３０】
ＣＰＵ現使用率取得手段１０２により取得された自ＣＰＵの現在のＣＰＵ使用率を得た（ステップＳ６）のち、この自ＣＰＵの現在のＣＰＵ使用率とシステム設定値２の「下限ＣＰＵ使用率」及び「上限ＣＰＵ使用率」とをそれぞれ比較し（ステップＳ７）、システム設定値２の「下限ＣＰＵ使用率」より低い場合は、自ＣＰＵの「現周波数」が最低であるかを判定し（ステップＳ８）、「現周波数」が最低でない（まだ周波数を下げることが可能）であるなら、自ＣＰＵの周波数を１段階下げ、その値を「現周波数」として更新する（ステップＳ９）。例えば、「現周波数」が「中」であれば周波数を１段階下げて「現周波数」を「下」に更新する。
【００３１】
逆に、ステップＳ７で自ＣＰＵの現在のＣＰＵ使用率がシステム設定値２の「上限ＣＰＵ使用率」より高いと判定した場合は、自ＣＰＵの「現周波数」が最高であるかどうか判定し（ステップＳ１０）、最高でない（まだ周波数を上げることが可能）と判定したときは、自ＣＰＵの周波数を１段階上げ、その値を「現周波数」として更新する（ステップＳ１１）。例えば、「現周波数」が「中」であれば周波数を１段階上げて「現周波数」を「上」に更新する。
【００３２】
また、ステップＳ７で自ＣＰＵの現在のＣＰＵ使用率がシステム設定値２の「上限ＣＰＵ使用率」と「下限ＣＰＵ使用率」との間の使用率であると判定した場合、又はステップＳ８で自ＣＰＵの「現周波数」が最低であると判定した場合、又はステップＳ１０で自ＣＰＵの「現周波数」が最高であると判定した場合、又はステップＳ９、Ｓ１１のいずれかの更新処理が終了した場合は、自ＣＰＵの「前回評価時刻」に現時刻を設定してスケジューラ１０３に戻る（ステップＳ１２）。
【００３３】
次に、図１のＣＰＵ現使用率取得手段１０２の動作を図６及び図７に示すアクティビティ図（フローチャート）を参照して詳細に説明する。図６はスケジューラ１０３が次のＲｅａｄｙタスクを実行させる前に呼び出した場合の動作、図７はＣＰＵパワー制御手段１０１が図５にて現ＣＰＵ使用率を取得するのに呼び出した場合の動作である（ステップＳ４）。
【００３４】
ＣＰＵ現使用率取得手段１０２は、スケジューラ１０３が次のＲｅａｄｙタスクを実行させる前に呼び出されると、最初に現時刻を取得し（図６のステップＳ２１）、続いて取得した現時刻がＣＰＵ使用状況表１１の自ＣＰＵ番号対応の「前回積算時刻」からシステム設定値１２の「ＣＰＵ使用率更新間隔」以上経過しているかどうか判定し（図６のステップＳ２２）、経過している場合は、「前回積算時刻」から現時刻までの時間と「アイドル積算時間」から以下の計算でＣＰＵ使用率を求めて図４の自ＣＰＵの「ＣＰＵ使用率」を更新する（図６のステップＳ２３）。
【００３５】
ＣＰＵ使用率＝１−（「アイドル積算時間」／（現時刻−「前回積算時刻」））
ステップＳ２３での更新処理に続いて、ＣＰＵ現使用率取得手段１０２は、自ＣＰＵの「前回積算時刻」に現時刻を更新すると共に、「アイドル積算時間」は０クリアして（図６のステップＳ２４）、スケジューラ１０３の処理に戻る。
【００３６】
また、ＣＰＵ現使用率取得手段１０２は、ＣＰＵパワー制御手段１０１が図５にて現ＣＰＵ使用率を取得するのに呼び出した場合、図４のテーブル中のＣＰＵ使用状況表１１の自ＣＰＵ番号対応の「ＣＰＵ使用率」をＣＰＵパワー制御手段１０１に返却する（図７のステップＳ３１）。
【００３７】
このように、本実施の形態によれば、ＣＰＵ使用率と上限ＣＰＵ使用率及び下限ＣＰＵ使用率の２つの閾値とを比較して、それらの比較結果に応じてＣＰＵ周波数を多段階に制御して、ＣＰＵ使用率の低いときにはＣＰＵ周波数を低くして節電し、ＣＰＵ使用率の高いときにはスループットを落とさないようにするので、スループットをあまり落とさずに省電力できる。
【００３８】
次に、本発明の他の実施の形態について図面と共に説明する。上記の実施の形態では、マルチプロセッサの各ＣＰＵが独立してそれぞれのＣＰＵ使用率によりそれぞれの動作周波数（低、中、高）を制御するものであった。これに対し、発明の他の実施の形態は、全ＣＰＵを統合的に制御するものである。これは、マルチプロセッサ（ＴＣＭＰ）の全体の消費電力とスループットの関係が、それぞれのＣＰＵの消費電力とスループットの和にならないような場合に有効である。
【００３９】
本実施の形態では、このような場合として複数のＣＰＵを低速で同時に動作させるより、１つのＣＰＵを高速で動作させ、他を休止（ＨＡＬＴ）させる方が消費電力に対するスループットが良い場合を考える。その基本的構成は上記図１と同様であるが、制御のためのＣＰＵ使用率は各ＣＰＵのものではなく、ここではＣＰＵ＃０のものを代表して使用し、動作周波数の順位は図８に示すように全体として考えるところが異なる。
【００４０】
図８において、ＣＰＵ周波数順位表３１は、ＣＰＵ＃０〜＃２の周波数の組み合わせを処理速度が昇順で消費電力が降順になるよう選択して周波数順位をつけたものである。「休止」はＣＰＵをＨＡＬＴモードで休止させることを表している。また、ＣＰＵ＃０はアイドル状態以外いずれの順位でも休止せず、ホストの役割を負う。図１のＣＰＵパワー制御手段１０１は、この図８のＣＰＵ周波数順位表３１に従ってＣＰＵの周波数を推移させる。
【００４１】
本実施の形態では、図３のＣＰＵ状態表１は、図９のＣＰＵ状態表４１およびＣＰＵ状態表４２のように変更する。ＣＰＵ状態表４１には現在図８のＣＰＵ周波数順位のいずれの状態にあるかを表す「現周波数順位」と、最後に周波数順位の変更を行うかの評価を行った「前回評価時刻」からなる。
【００４２】
次に、この実施の形態のＣＰＵパワー制御手段１０１の動作について、図１０のアクティビティ図（フローチャート）と共に説明する。ＣＰＵパワー制御手段１０１は、まず、スケジューラ１０３が次のＲｅａｄｙタスクを実行させる前に呼び出し、Ｒｅａｄｙタスクがあるかどうか判定し（ステップＳ４１）、Ｒｅａｄｙタスクがない場合は、図５のステップＳ１、Ｓ３と同じで、現時刻を取得した後自ＣＰＵをＨＡＬＴモードにする（ステップＳ４２、Ｓ４３）。ＨＡＬＴモードはスケジューラ１０３のアイドルループに当たる。ＨＡＬＴモードは外部からの割り込みにより解け、図５のステップＳ４の割り込み処理と同様に割り込み処理（ステップＳ４４）を行ってスケジューラ１０３に戻る。
【００４３】
一方、ステップＳ４１でＲｅａｄｙタスクがあると判定した場合は、自ＣＰＵのＣＰＵ番号が＃０か否かで動作が異なる。自ＣＰＵのＣＰＵ番号が＃０であるかどうかを判定し（ステップＳ４５）、＃０である場合、最初に現時刻を取得し（ステップＳ４６）、続いて図９のＣＰＵ状態表４１の「前回評価時刻」からシステム設定値４３の「評価周期」以上経過しているかどうか判定し（ステップＳ４７）、経過していない場合はスケジューラ１０３に戻り（ステップＳ４８）、経過している場合のみ、以下のようにＣＰＵ状態表４１の「現周波数順位」の更新を行う。
【００４４】
まず、ＣＰＵ現使用率取得手段１０２により現在のＣＰＵ番号＃０のＣＰＵの使用率を得る（ステップＳ４９）。続いて、このＣＰＵ使用率とシステム設定値４３の「下限ＣＰＵ使用率」及び「上限ＣＰＵ使用率」とをそれぞれ比較し（ステップＳ５０）、ＣＰＵ使用率がシステム設定値４３の「下限ＣＰＵ使用率」より低い場合は、＃０のＣＰＵの「現周波数順位」が最低であるかを判定し（ステップＳ５１）、「現周波数順位」が最低でない（まだ周波数順位を下げることが可能）であるなら、ＣＰＵ状態表４１の現周波数順位を１段階下げる。
【００４５】
逆に、ステップＳ５０で＃０のＣＰＵの現在のＣＰＵ使用率がシステム設定値４３の「上限ＣＰＵ使用率」より高いと判定した場合は、その＃０のＣＰＵの「現周波数順位」が最高であるかどうか判定し（ステップＳ５４）、最高でない（まだ周波数順位を上げることが可能）と判定したときは、＃０のＣＰＵの現周波数順位を１段階上げる（ステップＳ５５）。
【００４６】
また、ステップＳ５０で＃０のＣＰＵの現ＣＰＵ使用率がシステム設定値４３の「上限ＣＰＵ使用率」と「下限ＣＰＵ使用率」との間の使用率であると判定した場合、又はステップＳ５１で＃０のＣＰＵの「現周波数順位」が最低であると判定した場合、又はステップＳ５４で＃０のＣＰＵの「現周波数順位」が最高であると判定した場合、又はステップＳ５２、Ｓ５５のいずれかの現周波数順位の変更処理が終了した場合は、＃０のＣＰＵのＣＰＵ状態表４１の「前回評価時刻」に現時刻を設定する（ステップＳ５３）。
【００４７】
次に、ステップＳ４５で自ＣＰＵのＣＰＵ番号が＃０でないと判定した場合、又はステップＳ５３の自ＣＰＵのＣＰＵ番号が＃０で、そのＣＰＵの現時刻設定処理が終了した場合は、前述の一連の「現周波数順位」の更新処理の後、以下のように「現周波数順位」に従った周波数設定を行う。まず、図９のＣＰＵ状態表４２の自ＣＰＵの「現周波数」（現在のＣＰＵの周波数）が、図８のＣＰＵ周波数順位表３１における、ＣＰＵ状態表４１の「現周波数順位」に対応するエントリの自ＣＰＵの周波数と異なるかどうか判定する（ステップＳ５６）。
【００４８】
異なる場合、ＣＰＵ状態表４２の自ＣＰＵの「現周波数」にＣＰＵ周波数順位表３１のＣＰＵ状態表４１の「現周波数順位」に対応するエントリの自ＣＰＵの周波数を設定し（ステップＳ５７）、その設定した自ＣＰＵの現周波数が”休止”であるかどうかＣＰＵ周波数順位表３１に基づいて判定する（ステップＳ５８）。”休止”でない場合は、ＣＰＵの周波数をその設定した周波数に切り替える（ステップＳ５９）。ステップＳ５７で設定した自ＣＰＵの現周波数が”休止”の場合は、ステップＳ４２に進んでＨＡＬＴモードに設定する処理を行う。
【００４９】
一方、ＣＰＵパワー制御手段１０１は、ステップＳ５６でＣＰＵ状態表４２の自ＣＰＵの「現周波数」（現在のＣＰＵの周波数）が、ＣＰＵ周波数順位表３１における、ＣＰＵ状態表４１の「現周波数順位」に対応するエントリの自ＣＰＵの周波数と等しいと判定した場合、又はステップＳ５９の周波数切替処理が終了した場合は、スケジューラ１０３に処理を渡す。以上のようにしてＣＰＵ＃０のＣＰＵをポストとして、ＣＰＵのパワー制御を行う。
【００５０】
これにより、本実施の形態によれば、全体の効率を考慮した省電力制御を実現することができる。例えば、マルチプロセッサが互いに処理上の偏りがない場合は、前記の特許文献１記載の発明でも全ＣＰＵがほぼ同じ周波数で推移する。しかし、同じ処理効率であっても、ＣＰＵの消費電力特性によっては、１つのＣＰＵが高周波数で処理し、他のＣＰＵは休止させた方が全体の消費電力が小さいシステムもあり得る。本実施の形態では、図８の管理を行うことで、様々な特性に柔軟に対処して最適な消費電力の低減をすることができる。
【産業上の利用可能性】
【００５１】
コンピュータシステムにおいて、ＣＰＵの処理速度が可変で処理速度と消費電力がトレードオフの関係にある場合に、本発明を適用でき、スループットを落とさず省電力を実現するものである。
【図面の簡単な説明】
【００５２】
【図１】本発明のＣＰＵの省電力システムの一実施の形態のブロック図である。
【図２】本発明のＣＰＵ番号＃０〜＃２の３つのＣＰＵを密結合（メインメモリ共有）のマルチプロセッサ（ＴＣＭＰ）として有するコンピュータを示す図である。
【図３】本発明の一実施の形態におけるＣＰＵパワー制御手段を実現するためのテーブルの一例を示す図である。
【図４】本発明の一実施の形態におけるＣＰＵ現使用率取得手段を実現するためのテーブルの一例を示す図である。
【図５】本発明の一実施の形態におけるＣＰＵパワー制御手段の動作説明用アクティビティ図である。
【図６】本発明の一実施の形態におけるＣＰＵ現使用率取得手段の動作説明用アクティビティ図（その１）である。
【図７】本発明の一実施の形態におけるＣＰＵ現使用率取得手段の動作説明用アクティビティ図（その２）である。
【図８】本発明のＣＰＵの省電力システムの他の実施の形態におけるＣＰＵ周波数順位表である。
【図９】本発明のＣＰＵの省電力システムの他の実施の形態におけるＣＰＵ状態表である。
【図１０】本発明の他の実施の形態におけるＣＰＵパワー制御手段の動作説明用アクティビティ図である。
【符号の説明】
【００５３】
１０１  ＣＰＵパワー制御手段
１０２  ＣＰＵ現使用率取得手段
１０３  スケジューラ
【図１】
2008217628.tif 000003
【図２】
2008217628.tif 000004
【図３】
2008217628.tif 000005
【図４】
2008217628.tif 000006
【図５】
2008217628.tif 000007
【図６】
2008217628.tif 000008
【図７】
2008217628.tif 000009
【図８】
2008217628.tif 000010
【図９】
2008217628.tif 000011
【図１０】
2008217628.tif 000012