(57)【要約】【課題】複数のアプリケーションが重複してハードウェア資源を使用する場合にあっても、ＣＰＵのクロック周波数を必要最小限の値に設定することにより、組み込みシステムの省電力化を図る。【解決手段】本発明に係る組み込みシステムにおける省電力制御方法は、組み込みシステムの有するアプリケーション毎に使用するハードウェア資源を定義すると共に、前記ハードウェア資源の動作に必要なクロック周波数の参照値となる重み付け値を前記ハードウェア資源毎に定義し、起動中の前記アプリケーションが使用する前記ハードウェア資源の前記重み付け値のうち、もっとも大きい前記重み付け値に基づいて組み込みシステムのクロック周波数を設定するものである。【選択図】  図２
2008226084.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション毎に使用するハードウェア資源を定義すると共に、前記ハードウェア資源の動作に必要なクロック周波数の参照値となる重み付け値を前記ハードウェア資源毎に定義し、起動中の前記アプリケーションが使用する前記ハードウェア資源の前記重み付け値のうち、もっとも大きい前記重み付け値に基づいて組み込みシステムの有するＣＰＵのクロック周波数を設定する組み込みシステムにおける省電力制御方法。
【請求項２】
起動中の前記アプリケーションが使用する前記ハードウェア資源の論理和をとり、前記論理和の中でもっとも大きい前記重み付け値を有する前記ハードウェア資源の前記重み付け値に基づいて前記ＣＰＵのクロック周波数を設定する請求項１記載の組み込みシステムにおける省電力制御方法。
【請求項３】
前記ＣＰＵの前記クロック周波数の設定は、前記アプリケーションの起動又は停止時の少なくとも一方の動作時毎に行われる請求項１又は２記載の組み込みシステムにおける省電力制御方法。
【請求項４】
アプリケーション毎に使用するハードウェア資源が対応付けられると共に、前記ハードウェア資源の動作に必要なクロック周波数の参照値となる重み付け値が前記ハードウェア資源毎に対応付けられたクロック設定テーブルと、
前記クロック設定テーブルを参照して、クロック周波数生成を制御して自己のクロック周波数を設定するＣＰＵと、を備えた組み込みシステム。
【請求項５】
前記クロック設定テーブルは、前記組み込みシステムの有するメモリに記憶されている請求項４記載の組み込みシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込みシステム、及び組み込みシステムにおける省電力制御方法に関する。
【背景技術】
【０００２】
従来より、組み込みシステム上で動作するアプリケーションの実行状況に応じて、ＣＰＵ（Central Processing Unit）のクロックを各動作状態に適した周波数に自動制御する組み込みシステムにおける省電力制御方法が知られている。特許文献１及び２には、この省電力制御方法としては、起動されるアプリケーションをモニタし、状況に応じて動作クロックの逓倍率を変更してＣＰＵの動作クロックを生成することが開示されている。
【０００３】
特許文献１には、起動されたアプリケーションを識別し、動作クロック生成部によって生成された動作クロックを、当該アプリケーションで使用されるハードウェア資源の有するＰＬＬ（Phase-Locked Loop）や分周器によって各ハードウェア資源に最低必要となる動作クロックに分周することにより、組み込みシステムの省電力化を図ることが記載されている。
【０００４】
特許文献２には、予期される処理ジョブをジョブタイプ別に分類し、ジョブタイプ毎に重み付け係数を設定し、この重み付け係数に起動中の該当するジョブタイプのジョブ数を掛け合わせ、すべてのジョブタイプの総和をとり、この総和に基づいてＣＰＵのクロック周波数を設定することにより、組み込みシステムの省電力化を図ることが記載されている。
【特許文献１】特開２００４−２２１９６１号公報
【特許文献２】特表昭６１−５０２５６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１及び特許文献２に記載された組み込みシステムにおける省電力制御方法では、複数のアプリケーションが共通のハードウェア資源を用いる場合にあっては、１つのハードウェア資源に対し重複してクロック周波数が考慮されることとなる。ここで、ハードウェア資源を動作させるために必要なＣＰＵのクロック周波数を決定する支配的な要因は、起動される複数のアプリケーションの数や種別ではなく、使用されるハードウェア資源の種別である。そのため、特許文献１及び特許文献２に記載された組み込みシステムにおける省電力制御方法では、必ずしも必要最小限のクロック周波数に設定されないという問題点を有する。
【０００６】
本発明は、このような点に鑑みてなされたものであり、複数のアプリケーションが重複してハードウェア資源を使用する場合にあっても、ＣＰＵのクロック周波数を必要最小限の値に設定することにより、組み込みシステムの省電力化を図ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る組み込みシステムにおける省電力制御方法の一態様は、アプリケーション毎に使用するハードウェア資源を定義すると共に、前記ハードウェア資源の動作に必要なクロック周波数の参照値となる重み付け値を前記ハードウェア資源毎に定義し、起動中の前記アプリケーションが使用する前記ハードウェア資源の前記重み付け値のうち、もっとも大きい前記重み付け値に基づいて組み込みシステムの有するＣＰＵのクロック周波数を設定するものである。
【０００８】
これにより、起動されたハードウェア資源のなかで最も重み付けの大きいハードウェア資源に必要な動作クロック周波数にＣＰＵのクロック周波数が設定されるため、複数のアプリケーションが重複してハードウェア資源を使用する場合にあっても、使用される使用されるハードウェア資源の種別に応じて、ＣＰＵのクロック周波数を必要最小限の値に設定することができる。
【０００９】
また、本発明に係る組み込みシステムにおける省電力制御方法の他の一態様は、上記の組み込みシステムにおける省電力制御方法において、起動中の前記アプリケーションが使用する前記ハードウェア資源の論理和をとり、前記論理和の中でもっとも大きい前記重み付け値を有する前記ハードウェア資源の前記重み付け値に基づいて前記ＣＰＵのクロック周波数を設定するものである。
【００１０】
このように、複数のアプリケーションが使用するハードウェア資源の論理和をとることによって、アプリケーション毎に使用するハードウェア資源の重み付け値を参照する必要がなく、複数のアプリケーションが重複してハードウェア資源を使用する場合にあっては、処理アルゴリズムを簡略化することができる。
【００１１】
また、本発明に係る組み込みシステムにおける省電力制御方法の他の一態様は、上記の組み込みシステムにおける省電力制御方法において、前記ＣＰＵの前記クロック周波数の設定は、前記アプリケーションの起動又は停止時の少なくとも一方の動作時毎に行われるものである。
【００１２】
このように、アプリケーションが起動又は停止毎にＣＰＵのクロック周波数を設定することにより、アプリケーションの起動状況に随時追従して最適なクロック周波数を設定することができる。
【００１３】
また、本発明に係る組み込みシステムの一態様は、アプリケーション毎に使用するハードウェア資源が対応付けられると共に、前記ハードウェア資源の動作に必要なクロック周波数の参照値となる重み付け値が前記ハードウェア資源毎に対応付けられたクロック設定テーブルと、前記クロック設定テーブルを参照して、クロック周波数生成を制御して自己のクロック周波数を設定するＣＰＵと、を備えたものである。
【００１４】
このように、アプリケーション毎に使用するハードウェア資源が対応付けられると共に、ハードウェア資源の動作に必要なクロック周波数の参照値となる重み付け値がハードウェア資源毎に対応付けられたクロック設定テーブルを設けることにより、複数のアプリケーションが使用するすべてのハードウェア資源のうち、もっとも重み付け値の大きいハードウェア資源に必要な動作クロックに合わせて自己のクロック周波数を設定することができ、自己のクロック周波数を最小限の動作クロックに設定することができる。
【００１５】
また、本発明に係る組み込みシステムの一態様は、上記の組み込みシステムにおいて、前記クロック設定テーブルは、前記組み込みシステムの有するメモリに記憶されているものである。
【００１６】
このように、クロック設定テーブルをメモリに記憶することにより、従来の組み込みシステムにクロック設定テーブルを容易に組み込むことができる。
【発明の効果】
【００１７】
本発明に係る組み込みシステムの省電力制御方法によれば、起動されたアプリケーションの利用する各ハードウェア資源のうち最も高い動作クロックを要するクロックをＣＰＵを介して当該ハードウェア資源及びその他の起動中のハードウェア資源に供給することができるため、最低限必要な動作クロックを生成して組み込みシステムの省電力化を図ることができる。
【発明を実施するための最良の形態】
【００１８】
以下、添付した図面を参照して本発明の実施の形態について説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態に係る省電力制御方法を実施する組み込みシステム１０の一構成例を示す図である。組み込みシステム１０は、ＬＳＩ（Large Scale Integration）１１及びメモリ１２を備えて構成されている。ＬＳＩ１１は、ＣＰＵ１３、ＰＬＬ１４、及び複数のハードウェア資源ＨＷ１〜ＨＷｎを備えている。ＣＰＵ１３は、接続された複数のハードウェア資源ＨＷ１〜ＨＷｎを起動するよう構成されている。ハードウェア資源ＨＷ１〜ＨＷｎは、ＬＣＤ（Liquid Crystal Display）コントローラやカメラコントローラ等である。ＰＬＬ１４は、ＣＰＵ１３に接続され、最適なクロック周波数を生成し、ＣＰＵ１３やＣＰＵ１３を介して接続されたハードウェア資源ＨＷ１〜ＨＷｎに出力するよう構成されている。
【００１９】
メモリ１２は、図２に示すクロック設定テーブル１６を備えている。クロック設定テーブル１６は、ＬＳＩ１１で実行される各アプリケーションＡ〜ｎに利用されるハードウェア資源ＨＷ１〜ＨＷｎ（図２中ではＨＷ１〜ＨＷ７）が定義付けられている。例えば、アプリケーションＡでは、ハードウェア資源ＨＷ４、ＨＷ６が利用されるため、該当する位置は「１」に設定され、それ以外の利用されないハードウェア資源ＨＷ１〜３、ＨＷ５、ＨＷ６に該当する位置には「０」が設定されている。
【００２０】
また、各ハードウェア資源ＨＷ１〜ＨＷｎには、ハードウェア資源ＨＷ１〜ＨＷｎの下に示すように、ハードウェア資源ＨＷ１〜ＨＷ７を起動するのに必要なクロック周波数を示す重み付け値が対応付けられている。重み付け値は、ＰＬＬ１４が生成する通常の動作クロックをＭＡＸ周波数とし、その何割の速度でハードウェア資源ＨＷが動作するかを示す値である。例えば、通常３００ＭＨｚで動作するシステムであれば、ＭＡＸ周波数は３００ＭＨｚとなる。ハードウェア資源ＨＷ４の重み付け値は０．７であるため、ハードウェア資源ＨＷ４に必要な動作クロックは３００ＭＨｚ×０．７＝２１０ＭＨｚとなる。重み付け値は、そのハードウェア資源ＨＷが動作するのに必要なクロック周波数を考慮する必要があるため、ハードウェア資源ＨＷを適用するシステム毎にチューニングされ、設定されている。
【００２１】
図３は、このように構成された組み込みシステム１０のクロック周波数の制御について示した図である。なお、図３に示す矢印は、クロックの流れを示している。ＬＳＩ１１には、外部から水晶発振子などによって生成された比較的低周波であるソースクロックが入力される。入力されたソースクロックは、ＰＬＬ１４に入力され、ＬＳＩ１１が動作するのに最適な動作クロックとなるようＰＬＬ１４によって逓倍される。ＰＬＬ１４は、最適な動作クロックを出力するようＣＰＵ１３によってプログラムで制御されている。
【００２２】
なお、ハードウェア資源ＨＷ１〜ＨＷｎは、一般的にそれぞれクロックを分周するシステム（図示せず）を備えている。なお、ＣＰＵ１３は、図２に示すクロック設定テーブル１６を参照してクロックの設定を行うことができるため、ハードウェア資源ＨＷ１〜ＨＷｎの起動自体は制御するが、ハードウェア資源ＨＷ１〜ＨＷｎのクロックを設定する際には、各ハードウェア資源ＨＷ１〜ＨＷｎをモニタする必要がない。
【００２３】
次に、このように構成された組み込みシステム１０の制御方法について説明する。図４は、組み込みシステム１０におけるクロックの設定方法を示すフローチャートである。また、図５は、組み込みシステム１０において起動されているアプリケーションＡ〜Ｃの起動及び停止のタイミングを示すタイミングチャートである。図５に示すように、アプリケーションＡは時間Ｔ１に起動され時間Ｔ６に停止され、アプリケーションＢは時間Ｔ２に起動され時間Ｔ５に停止され、アプリケーションＣは時間Ｔ３に起動され時間Ｔ４に停止された後、時間Ｔ７に起動され時間Ｔ８に停止される。
【００２４】
図５における時間Ｔ２を例として、組み込みシステム１０の制御方法について説明する。図４に示すように、はじめに、ＣＰＵ１３は、ステップＳ１においてアプリケーションＸを起動又は停止すると、ステップ２においてクロック設定テーブル１６を参照し、現在起動されているアプリケーションＡ〜ｎに対応する行をすべて読み出す。
【００２５】
すなわち、ＣＰＵ１３は、時間Ｔ２においてアプリケーションＢを起動すると（Ｓ１）、クロック設定テーブル１６のうち時間Ｔ２において起動されているアプリケーションＡ、Ｂに対応する行を読み出す（Ｓ２）。ここで、ハードウェア資源ＨＷに対応する行を（ＨＷ１、ＨＷ２、ＨＷ３、ＨＷ４、ＨＷ５、ＨＷ６、ＨＷ７）と示すとすると、
アプリケーションＡに対応する行（０、０、０、１、０、１、０）と、
アプリケーションＢに対応する行（０、０、１、０、０、１、０）が読み出される。
【００２６】
次に、ステップＳ３において読み出した各行のＯＲをとる。すなわち、時間Ｔ２では
アプリケーションＡで対応する行とアプリケーションＢに対応する行のＯＲ（論理和）は、
（０、０、０、１、０、１、０）ＯＲ（０、０、１、０、０、１、０）
＝（０、０、１、１、０、１、０）となる。
【００２７】
次に、ステップＳ４において、ステップＳ３でＯＲをとったハードウェア資源ＨＷ１、３、６の重み付け値と積算を行い、もっとも大きな値を抽出する。ここで、各ハードウェア資源の重み付け値を（1.0、0.9、0.8、0.7、0.6、0.5、0.4）と示すと、時間Ｔ２におけるハードウェア資源ＨＷのＯＲをとった行の値と重み付け値の積算は、
（０、０、１、１、０、１、０）×（1.0、0.9、0.8、0.7、0.6、0.5、0.4）Ｔ
＝（0、0、0.8、0.7、0、0.5、0）
となる。
【００２８】
次に、得られた積算結果のうち、もっとも大きな値を抽出することにより、ハードウェア資源ＨＷ３に相当する０．８が抽出される。なお、論理和をとった行の０に相当する箇所は積算結果も０であることがわかっているため積算を省略して余分な計算量を削減することができる。
【００２９】
次に、ステップＳ５においてＰＬＬ１４のＭＡＸ周波数に前手順で求めた値を積算する。すなわち、ＰＬＬ１４のＭＡＸ周波数が３００ＭＨｚであると、３００ＭＨｚ×０．８＝２４０ＭＨｚを得る。次に、ステップＳ６においてＰＬＬ１４の出力が前手順で求めたクロック周波数となるように、ＰＬＬ１４のクロック設定を行う。すなわち、時間Ｔ２では、ＰＬＬ１４は２４０ＭＨｚを出力するよう設定される。
【００３０】
以上のステップＳ１〜Ｓ６までのシーケンスを、図４に示す各アプリケーションＡ〜Ｃの起動（Ｔ１、Ｔ２、Ｔ３、７Ｔ）及び停止（Ｔ４、Ｔ５、Ｔ６、Ｔ８）毎に行い、ＰＬＬ１４から出力されるクロック周波数を設定する。
【００３１】
このように、本実施形態では、アプリケーションＡ〜ｎ毎に使用するハードウェア資源ＨＷ１〜ＨＷｎをクロック設定テーブル１６に定義し、クロック設定テーブル１６を参照してクロック制御を行うことにより、いかなるアプリケーションＡ〜ｎであっても起動されているハードウェア資源ＨＷの種別に応じて、同じ制御方法で最適なクロックに設定することができる。
【００３２】
また、クロック設定テーブル１６を用いて、起動されているアプリケーションＡ〜ｎの使用するハードウェア資源ＨＷのＯＲをとることにより、アルゴリズムを簡略化することができる。
【００３３】
これにより、システムの動作状況に応じたクロック周波数を適宜設定することにより、無駄な消費電力を削減し省電力化を図ることができる。
【００３４】
［第２の実施形態］
第２の実施形態の特徴は、第１の実施形態におけるハードウェア資源ＨＷ１〜ＨＷｎ毎に重み付けを行う方法に代えて、アプリケーションＡ〜ｎ毎に重付けを行う点にある。なお、第２の実施形態に係る省電力制御方法を実施する組み込みシステム１０全体の構成については、図１と略同一であるためその説明を省略する。
【００３５】
図６は、第２の実施形態に係る省電力制御方法に用いられるクロック設定テーブル６０である。このクロック設定テーブル６０は、第１の実施形態と同様に図１に示すメモリ１２に記憶されている。クロック設定テーブル６０は、ＬＳＩ１１において起動されるアプリケーションＡ〜ｎ毎に重み付け値が設定されている。例えば、アプリケーションＡの重み付け値は、０．２に設定されている。
【００３６】
次に、このように構成されたクロック設定テーブル６０を用いた組み込みシステムの省電力制御方法について説明する。図７は、第２の実施形態に係る組み込みシステムにおけるクロックの設定方法を示すフローチャートである。ＣＰＵ１３は、ステップＳ１１においてアプリケーションを起動すると、ステップ１２においてクロック設定テーブル６０を参照し、すでに起動しているアプリケーションと新たに起動したアプリケーションＸの重みを加算する。
【００３７】
すなわち、図５において時間Ｔ２を例にすると、時間Ｔ２にアプリケーションＢが起動されると（Ｓ１１）、クロック設定テーブル６０を参照し、すでに起動されたアプリケーションＡの重み付け値０．２に新たに起動したアプリケーションＢの重み付け値０．３を加算して（Ｓ１２）、加算結果０．５を得る。
【００３８】
次に、ステップＳ１３において加算結果が１．０以上であるか否か判定する。加算結果が１．０以上である場合にはステップＳ１４においてＰＬＬ１４の出力をＭＡＸ周波数に設定し、加算結果が１．０未満であればステップＳ１５においてＰＬＬ１４のＭＡＸ周波数に加算結果を積算した値をＰＬＬ１４の出力として設定する。例えば、ＰＬＬ１４のＭＡＸ周波数が３００ＭＨｚであれば、ＭＡＸ周波数３００ＭＨｚに時間Ｔ２における加算結果０．５を積算した値である１５０ＭＨｚに設定される。
【００３９】
次に、ステップＳ１６において、ステップＳ１４又はステップＳ１５で設定された値にクロック周波数がなるようにＰＬＬ１４のクロック設定を変更する。これにより、起動されたアプリケーションＡ〜ｎに応じて適宜クロック周波数を設定することができる。
【００４０】
以上のようなステップＳ１１〜Ｓ１６を、図４に示す各アプリケーションＡ〜Ｃの起動（Ｔ１、Ｔ２、Ｔ３、７Ｔ）及び停止（Ｔ４、Ｔ５、Ｔ６、Ｔ８）毎に行い、ＰＬＬ１４から出力されるクロック周波数を設定する。
【００４１】
第１の実施形態では、起動されたアプリケーションＡ〜ｎが利用するハードウェア資源ＨＷ１〜ＨＷｎのうち、もっとも大きい重み付け値にクロック周波数を設定していたが、第２の実施形態では、複数のアプリケーションＡ〜ｎに使用されるハードウェア資源ＨＷ１〜ＨＷｎのマルチタスクを考慮しクロック周波数を設定することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の第１の実施形態に係る省電力制御方法を実施する組み込みシステム１０の一構成例を示す図である。
【図２】クロック設定テーブル１６を示す図である。
【図３】組み込みシステム１０のクロック周波数の制御について示した図である
【図４】組み込みシステム１０におけるクロックの設定方法を示すフローチャートである。
【図５】組み込みシステム１０において起動されているアプリケーションＡ〜Ｃの起動及び停止のタイミングを示すタイミングチャートである。
【図６】第２の実施形態に係る省電力制御方法に用いられるクロック設定テーブル６０である。
【図７】第２の実施形態に係る組み込みシステムにおけるクロックの設定方法を示すフローチャートである。
【符号の説明】
【００４３】
１０...組み込みシステム      １１...ＬＳＩ        １２...メモリ
１３...ＣＰＵ                １４...ＰＬＬ        １６，６０...クロック設定テーブル
ＨＷ...ハードウェア資源
【図１】
2008226084.tif 000003
【図２】
2008226084.tif 000004
【図３】
2008226084.tif 000005
【図４】
2008226084.tif 000006
【図５】
2008226084.tif 000007
【図６】
2008226084.tif 000008
【図７】
2008226084.tif 000009