(57)【要約】【課題】オペレーティングシステムを利用したシステムにおいて、タスクの実行中の省電力化が十分ではない【解決手段】省電力テーブル１１２内のＩＤ−属性テーブルは、各タスクの識別情報と省電力属性との関係を保持する。省電力テーブル１１２内の属性−制御テーブルは、省電力属性と省電力制御との関係を保持する。システムコール１１１は、生成対象のタスク１５０の識別情報をキーとしてＩＤ−属性テーブルを検索し、検索結果に応じて省電力属性と関連付けたタスク１５０を生成する。ディスパッチャ１１３は、各タスク１５０を実行する際に、実行対象のタスク１５０に関連付けられた省電力属性をキーとして属性‐制御テーブルから対応する省電力制御を取得して実行する。【選択図】図１
2014096034.tif 000002
【特許請求の範囲】
【請求項１】
生成対象のタスクの識別情報に基づいて省電力属性を決定し、決定した前記省電力属性と関連付けてタスクを生成し、
各タスクを実行する際に、実行対象のタスクに関連付けられた前記省電力属性に対応する省電力制御を実行する、オペレーティングシステム制御方法。
【請求項２】
前記実行対象のタスクである第１タスクの実行を終了する際に前記第１タスクの実行に伴って実行されていた前記省電力制御の種別と、前記第１タスク終了後に実行する第２タスクに対応する前記省電力制御の種別と、の比較を実行し、
当該比較の結果に応じて、前記第２タスクの実行開始時に実行を開始する前記省電力制御の種別と、実行を終了する前記省電力制御の種別を決定する、請求項１に記載のオペレーティングシステム制御方法。
【請求項３】
前記比較により、前記第１タスクの実行に伴って実行されていた前記省電力制御の種別と、前記第２タスクに対応する前記省電力制御の種別と、のうち重複する前記省電力制御については前記第２タスクの実行開始時に実行を停止しない、請求項２に記載のオペレーティングシステム制御方法。
【請求項４】
タスクの前記識別情報と前記省電力属性が多対１の関係に定義されている、請求項１に記載のオペレーティングシステム制御方法。
【請求項５】
任意の前記省電力属性に対して、複数種類の前記省電力制御が関連付けられている、請求項１に記載のオペレーティングシステム制御方法。
【請求項６】
前記省電力制御の実行は、フックルーチン内において実行される、請求項１に記載のオペレーティングシステム制御方法。
【請求項７】
各タスクの実行主体であるＣＰＵの処理負荷を計測し、当該処理負荷が一定値以上となった場合、前記省電力制御の実行を行わない、請求項１に記載のオペレーティングシステム制御方法。
【請求項８】
請求項１〜請求項７のいずれかに記載の方法を実行するプログラム。
【請求項９】
各タスクの識別情報と省電力属性との関係を示すＩＤ−属性テーブルと、
前記省電力属性と省電力制御との関係を示す属性−制御テーブルと、
生成対象のタスクの識別情報をキーとして前記ＩＤ−属性テーブルを検索し、検索結果に応じて前記省電力属性と関連付けたタスクを生成するタスク生成手段と、
各タスクを実行する際に、実行対象のタスクに関連付けられた前記省電力属性をキーとして前記属性‐制御テーブルから対応する前記省電力制御を取得して実行するディスパッチ手段と、を備えたオペレーティングシステムを中央演算装置によって実行する、半導体装置。
【請求項１０】
前記ディスパッチ手段は、
前記実行対象のタスクである第１タスクの実行を終了する際に前記第１タスク実行に伴って実行されていた前記省電力制御の種別と、前記第１タスク終了後に実行する第２タスクに対応する前記省電力制御の種別と、の比較を実行し、
当該比較の結果に応じて、前記第２タスクの実行開始時に実行を開始する前記省電力制御の種別と、実行を終了する前記省電力制御の種別を決定する、請求項９に記載の半導体装置。
【請求項１１】
前記ディスパッチ手段は、
前記比較により、前記第１タスクの実行に伴って実行されていた前記省電力制御の種別と、前記第２タスクに対応する前記省電力制御の種別と、のうち重複する前記省電力制御については前記第２タスクの実行開始時に実行を停止しない、請求項１０に記載の半導体装置。
【請求項１２】
前記ＩＤ−属性テーブルでは、タスクの前記識別情報と前記省電力属性が多対１の関係に定義されている、請求項９に記載の半導体装置。
【請求項１３】
前記属性−制御テーブルでは、任意の前記省電力属性に対して、複数種類の前記省電力制御が関連付けられている、請求項９に記載の半導体装置。
【請求項１４】
前記中央演算装置の処理負荷を算出する監視手段を更に備え、
前記ディスパッチ手段は、前記監視手段が算出した前記処理負荷が所定閾値以上である場合に前記省電力制御の実行を停止する、請求項９に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、オペレーティングシステム制御方法、及びプログラムに関し、例えば省電力制御機能を有する半導体装置、オペレーティングシステム制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、地球温暖化対策やエコへの関心が高まっている。これに伴い、エアコンや冷蔵庫等の民生機器についても、省エネ機能を持つことが重要視されている。また産業機器等の組み込み機器に対しても低消費電力設計を行うことが求められている。このような機器の低消費電力化を実現した高効率のシステム開発を実現するために、スマートプラットフォームの開発及び導入が重要となってきている。
【０００３】
システムのプラットフォーム化を行う場合、当該システムにリアルタイムＯＳ（Operating System）を導入することが多い。そのため、リアルタイムＯＳが省電力機能を持つことが望ましい。以下、リアルタイムＯＳにおける省電力機能に関連する技術について説明する。
【０００４】
特許文献１には、複数のタスクを扱うリアルタイムシステムにおいて、イベント処理に対するリアルタイム性を保証し、ＣＰＵの動作周波数を最適に制御する制御装置が開示されている。当該制御装置では、実行対象となるタスクの要求性能に応じて省電力動作に移行する。
【０００５】
特許文献２には、省電力機能を持ち、かつリアルタイムＯＳによって複数のタスクの実行状態を制御するマイクロコンピュータが開示されている。当該リアルタイムＯＳは、アイドルタスク（何も行わないタスク）の実行中にマイクロコンピュータを省電力状態に移行させる。
【０００６】
なお、特許文献３には、機能ブロック（回路ブロック）毎に消費電力モードに切り替えることが記載されているが、タスク等のソフトウェアに関する消費電力削減については言及していない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２８５０９３号公報
【特許文献２】特開２００２−１３２３９４号公報
【特許文献３】特開２００７−１０２６７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のようにリアルタイムＯＳをはじめとするオペレーティングシステムでは、省電力機能を持つことが望ましい。しかしながら、特許文献１の手法では、各タスクの要求性能に着目しているものの、実行中の各タスクの性質（処理内容等）に応じて省電力制御を行うものではなく、その省電力性能が十分ではない可能性がある。たとえば要求性能が高いタスクを実行中の場合、当該タスクの実行には関係のない処理部等までもが通常動作する可能性がある。
【０００９】
また特許文献２に記載のマイクロコンピュータでは、アイドルタスク（何も実行しないタスクであり、最も優先度の低いタスク）の実行中に省電力制御を行っているが、その他のタスクの実行中における省電力制御が考慮されていない。換言すると、アイドルタスク以外のタスクを実行している際に省電力制御を全く行っていないため、電力削減の効果を十分に得ることができない。
【００１０】
すなわち、オペレーティングシステムを利用したシステムにおいて、タスクの実行中の省電力化が十分ではないという課題があった。
【００１１】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の態様では、半導体装置内において実行されるオペレーティングシステムが生成するタスクの識別情報に応じた属性を取得し、タスク実行中に当該属性に応じた省電力制御を行う。
【発明の効果】
【００１３】
前記一実施の形態によれば、タスクの実行中の省電力化を図ることができる半導体装置、オペレーティングシステム制御方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかるマイクロコンピュータ１の構成を示すブロック図である。
【図２】実施の形態１にかかる省電力テーブル１１２（ＩＤ−属性テーブル）の構成を示す概念図である。
【図３】実施の形態１にかかるタスク管理ブロック１３０の構成を示す概念図である。
【図４】実施の形態１にかかる省電力テーブル１１２（属性−制御テーブル）の構成を示す概念図である。
【図５】実施の形態１にかかるマイクロコンピュータ１の動作を示すフローチャートである。
【図６】実施の形態１にかかるマイクロコンピュータ１の動作を示すフローチャートである。
【図７】実施の形態１にかかるマイクロコンピュータ１の動作を示す概念図である。
【図８】実施の形態１にかかるマイクロコンピュータ１の動作を示す概念図である。
【図９】実施の形態１にかかるマイクロコンピュータ１の動作を示す概念図である。
【図１０】実施の形態２にかかるマイクロコンピュータ１の構成を示すブロック図である。
【図１１】実施の形態２にかかるフックコード１７１の記述例を示す図である。
【図１２】実施の形態２にかかるフックコード１７１の記述例を示す図である。
【図１３】実施の形態３にかかるマイクロコンピュータ１の構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
＜実施の形態１＞
以下、図面を参照して本実施の形態にかかるマイクロコンピュータ（半導体装置）について説明する。図１は、本実施の形態にかかるマイクロコンピュータ（半導体装置）にかかる構成を示すブロック図である。
【００１６】
マイクロコンピュータ（半導体装置）１は、メモリ（記憶装置）１０、ＣＰＵ（Central Processing Unit）２０、レジスタ３０、Ａ／Ｄ（Analog/Digital）変換器４０、及びＣＡＮ（Controller Area Network）モジュール５０を備える。なお、マイクロコンピュータ１は、その他の回路等を適宜備えてもよい。
【００１７】
マイクロコンピュータ１は、たとえば携帯電話やスマートフォン等の通信端末、自動車等に設けられる車載システム、オーディオシステムやポータブルミュージックプレーヤー等の音響機器、産業用ロボットなど様々な情報通信機器に搭載される。
【００１８】
ＣＰＵ２０は、マイクロコンピュータ１のメモリ１０等の記憶装置からＯＳ（Operating System）プログラムやアプリケーションプログラム等のプログラムを読み出して実行する演算装置である。なお読み出して実行されたプログラムは、任意の記憶装置上に展開されて実行される。以下の説明では、ＯＳプログラム等のプログラムがメモリ１０内に格納されており、実行時にもメモリ１０に展開されるものとする。ＣＰＵ２０は、プログラムの実行以外にもマイクロコンピュータ１の様々な制御を行う。
【００１９】
レジスタ３０は、マイクロコンピュータ１を制御するための各種情報を保持する。レジスタ３０は、たとえばマイクロコンピュータ１の動作電圧（５Ｖで動作するのか、２Ｖで動作するのか等）やマイクロコンピュータ１の動作周波数に関する情報を保持する。後述する省電力制御においては、レジスタ３０の値を書き換えることにより、マイクロコンピュータ１の省電力化を行う。なお、レジスタ３０の値は図示しない任意のソフトウェアや任意の回路（電源制御回路）等から適宜読み出しが可能である。
【００２０】
Ａ／Ｄ変換器４０は、マイクロコンピュータ１の外部にあるセンサ等から入力されたアナログ信号をデジタル信号に変換する。当該デジタル信号は、任意の記憶装置や処理部（ＣＰＵ２０を含む）に供給される。Ａ／Ｄ変換器４０は、後述するように、リアルタイムＯＳ１１０からの制御によりＯＮ／ＯＦＦ制御が行われる。
【００２１】
ＣＡＮ（Controller Area Network）モジュール５０は、マイクロコンピュータ１外の任意の処理部との通信を行うためのモジュールである。ＣＡＮは、比較的長距離の伝送が可能であり、通信レートの高い通信手法である。ＣＡＮモジュール５０は、後述の省電力制御によって一時的に停止される可能性がある。
【００２２】
続いてメモリ１０内の構成について説明する。メモリ１０は、ＣＰＵ２０のワークエリアとして利用されるとともに、各種のデータを記憶する。たとえばメモリ１０は、ランダムアクセスが可能な揮発性メモリ等により構成される。
【００２３】
リアルタイムＯＳ（Operating System）１１０は、いわゆる基本ソフトウェアであって、コンピュータにおいてハードウェアを抽象化したインターフェイスをアプリケーションソフトに提供するプログラムである。リアルタイムＯＳ１１０は、リアルタイムシステム向けの基本ソフトウェアである。
【００２４】
システムコール１１１は、リアルタイムＯＳ１１０の各種機能を読み出すために使用される機構である。当該機能には、新たにタスク１５０を生成する機能（create_task）が含まれる。なおシステムコール１１１は、サービスコールと呼称される場合もある。一般的にシステムコール１１１は、関数形式（open()関数、exit()関数、create_task()関数等）で提供される。
【００２５】
アプリケーションバイナリファイル１２０は、アプリケーションプログラムをコンパイルリンクして得たバイナリファイルである。アプリケーションバイナリファイル１２０の生成元となるアプリケーションプログラムには、タスク１５０を生成するために必要な各種情報（たとえばタスクＩＤ情報）が記述されている。
【００２６】
リアルタイムＯＳ１１０は、タスク生成のためのシステムコール１１１（create_task）が呼び出された場合に、アプリケーションバイナリファイル１２０および後述の省電力テーブル１１２内のＩＤ−属性テーブルから必要な情報を読み出し、タスク１５０を生成する。なお、タスク１５０は、複数生成され得るが（後述する１５０−１〜１５０−ｎ）、特にこれらのタスク１５０−１〜１５０−ｎを区別しない場合には単に"タスク１５０"と記載する。リアルタイムＯＳ１１０は、生成したタスク１５０の状況（タスクＩＤ、実行状態等）をタスク管理ブロック１３０に書き込む。
【００２７】
省電力テーブル１１２は、２つのテーブル（ＩＤ−属性テーブル、属性−制御テーブル）から構成される。図２は、省電力テーブル１１２内のＩＤ−属性テーブルの構成例を示す図である。ＩＤ−属性テーブルは、タスクＩＤ（タスク１５０の識別情報）と属性の関係を保持するテーブルである。省電力テーブル１１２は、設定ファイル１４０に記載された設定内容を読み込むことによりテーブル形式に展開される。属性とは、タスク１５０の実行時にどのような省電力制御を行うかを識別するための情報である。図２の例では、タスクＩＤ＝１のタスク１５０が実行される場合、属性Ｘに対応する省電力制御が行われること等が記載されている。また省電力テーブル１１２には、タスク１５０単体と属性を関連付けるだけでなく、タスクグループと属性を関連付けることも可能である。たとえば図２では、タスクＩＤ＝３〜６のタスクグループと属性Ｚが関連付けられている。
【００２８】
設定ファイル１４０は、省電力テーブル１１２（ＩＤ−属性テーブル、属性−制御テーブル）に反映される情報が記載されている。当該設定ファイル１４０は、コンピュータシステム上の一般的なファイルであり、ユーザが適宜書き換え可能なファイルである。設定ファイル１４０を編集することにより、新しい種類のアプリケーションプログラムを実行するような場合にも省電力制御が可能となる。この場合、新しい種類のアプリケーションプログラムに関するタスク１５０と属性との関係を設定ファイル１４０に新たに追記することにより省電力制御を実現する。
【００２９】
タスク１５０（１５０−１〜１５０−ｎ）は、リアルタイムＯＳ１１０の処理の実行単位である。タスク１５０は、タスク生成のためのシステムコール１１１が呼び出された場合に生成される。タスク１５０には、生成時に固有のタスクＩＤが割り当てられる。タスク１５０は、複数のタスクが並列して実行され得る。換言するとリアルタイムＯＳ１１０は、マルチタスクＯＳである。
【００３０】
ディスパッチャ１１３は、リアルタイムＯＳ１１０の一機能であり、実行可能状態にあるタスク（１５０−１〜１５０−ｎ）の中から、次に実行すべきタスク１５０を一つ選択して実行状態とする（タスクディスパッチ）。なおディスパッチャ１１３は、オペレーティングシステムにおけるスケジューラとも呼称される機能である。ディスパッチャ１１３は、タスク管理ブロック１３０を参照し、実行可能状態となっているタスク１５０から実行状態にするタスク１５０を選択する（タスクスケジューリング機能）。
【００３１】
タスク管理ブロック１３０は、タスク１５０（１５０−１〜１５０−ｎ）の状態を保持する記憶ブロックである。タスク管理ブロック１３０の保持する情報は、タスク状態の変更要求（たとえばディスパッチャ１１３によるディスパッチ処理）に応じて、適宜書き換えられる。
【００３２】
タスク管理ブロック１３０の構成の一例を図３に示す。タスク管理ブロック１３０は、生成されたタスク１５０毎にＩＤ、優先度（Ｐｒｉｏｒｉｔｙ）、状態（ｒｕｎｎｉｎｇ、ｒｅａｄｙ等）、及び属性が格納されている。ここで属性は、省電力テーブル１１２内のＩＤ−属性テーブルに応じて、タスク１５０の生成時に設定される。
【００３３】
ディスパッチャ１１３は、タスク１５０のディスパッチ（実行状態に遷移させる）を行う際に、タスク管理ブロック１３０の「状態」を書き換えるとともに「属性」を読み出す。そしてディスパッチャ１１３は、読み出した属性の値に対応する制御を、省電力テーブル１１２内の属性−制御テーブルから読み出す。省電力テーブル１１２内の属性−制御テーブルの構成を図４に示す。
【００３４】
属性−制御テーブルは、図４に示すように各属性と省電力制御が関連付けられている。たとえば、属性Ｘに関連するタスク１５０の実行中には、「Ａ／Ｄ変換器４０を止める」ことが設定されている。ディスパッチャ１１３は、タスクディスパッチ時に属性−制御テーブルからディスパッチするタスク１５０に対応する処理を読み出す。そしてディスパッチャ１１３は、読み出した処理を実行する。たとえば、属性−制御テーブルには、各属性と対応付けられた省電力制御が関数名で記載される。
【００３５】
関数群１６０は、省電力制御処理の実行時に呼び出される関数であり、メモリ１０上に展開されている。図４の例では、関数ＸはＡ／Ｄ変換器４０の停止および再開に関する処理が記載されている。関数Ｙは、ＣＡＮモジュール５０の停止および再開に関する処理が記載されている。
【００３６】
ディスパッチャ１１３は、タスク１５０の実行終了時に、次に実行するタスク１５０の属性をタスク管理ブロック１３０から読み出す。ディスパッチャ１１３は、当該属性をもとに次に実行する省電力制御を決定する。ここでディスパッチャ１１３は、実行終了したタスク１５０の実行中に行っていた省電力制御と、これから行う省電力制御と、に重複があるか否かを判定する。重複がある場合、ディスパッチャ１１３は、重複していない省電力制御のみを終了する。
【００３７】
以下の説明では、タスクＩＤ＝１のタスク１５０をタスク１５０−ｆ、タスクＩＤ＝２のタスク１５０をタスク１５０−ｓ、タスクＩＤ＝３のタスク１５０をタスク１５０−ｔと記載する。たとえば、図２〜図４に示す設定時において、タスク１５０−ｆの処理を終了し、タスク１５０−ｓを実行する場合について考える。タスク１５０−ｆの実行中には関数Ｘ（Ａ／Ｄ変換器４０の停止）が実行されており、タスク１５０−ｓの実行中には関数Ｙ（ＣＡＮモジュール５０の停止）が実行されることが規定されている。そのため、ディスパッチャ１１３は両省電力制御に重複がないと判断する。そしてディスパッチャ１１３は、タスク１５０−ｆの終了時にＡ／Ｄ変換器４０を再開するとともに、ＣＡＮモジュール５０の停止を行う。
【００３８】
次に、図２〜図４に示す設定時において、タスク１５０−ｆの処理を終了し、タスク１５０−ｔを実行する場合について考える。タスク１５０−ｆの実行中には関数Ｘ（Ａ／Ｄ変換器４０の停止）が実行されており、タスク１５０−ｔの実行中には関数Ｘ（Ａ／Ｄ変換器４０の停止）および関数Ｙ（ＣＡＮ回路５０の停止）が実行されることが規定されている。そのため、ディスパッチャ１１３は、関数Ｘの実行に重複があると判定する。すなわちディスパッチャ１１１は、タスク１５０−ｆの終了後も引き続きＡ／Ｄ変換器４０を停止させることを認識する。そこでディスパッチャ１１３は、タスク１５０−ｔの実行開始時に、関数Ｘを用いたＡ／Ｄ変換器４０の再開を行わずに（Ａ／Ｄ変換器４０を停止させたままとして）、関数Ｙを実行してＣＡＮモジュール５０を停止させる。
【００３９】
続いて図５および図６を参照して、マイクロコンピュータ１の動作を改めて説明する。図５は、タスク生成時の動作を示すフローチャートである。はじめに、任意のタスク１５０等からタスク生成にかかるシステムコール１１１（create_task）が呼び出される（Ｓ１１）。
【００４０】
リアルタイムＯＳ１１０は、呼び出されたシステムコール１１１に応じてアプリケーションバイナリファイル１２０から各種情報を読み出す（Ｓ１２）。当該情報には、タスク１５０を生成するための情報（タスクＩＤ等）が含まれる。リアルタイムＯＳ１１０は、当該タスクＩＤに対応する属性を省電力テーブル１１２から読み出す（Ｓ１２）。
【００４１】
そしてリアルタイムＯＳ１１０は、タスク１５０を生成する（Ｓ１３）。リアルタイムＯＳ１１０は、生成したタスク１５０のタスクＩＤと、省電力テーブル１１２内のＩＤ−属性テーブルから読み出した属性と、を関連付けてタスク管理ブロック１３０に格納する（Ｓ１４）。
【００４２】
次に図６を参照してタスクディスパッチ時の動作について説明する。図６は、タスクディスパッチ時の動作を示すフローチャートである。
【００４３】
ディスパッチャ１１３は、タスクスケジューリングを行う（Ｓ２１）。ここでタスクスケジューリングは、一般的なオペレーティングシステムにおいて行われるスケジュール手法であればよい。ディスパッチャ１１３は、タスク管理ブロック１３０を参照し、次にディスパッチするタスク１５０を決定する（Ｓ２１）。
【００４４】
ディスパッチャ１１３は、Ｓ２１において決定したタスク１５０に関連付けられた属性をタスク管理ブロック１３０から読み出す（Ｓ２２）。ディスパッチャ１１３は、読み出した属性をキーとして、省電力テーブル１１２内の属性−制御テーブル（図４）から実行する省電力制御の関数を読み出す。さらにディスパッチャ１１３は、実行を終了するタスク１５０に伴って実行している省電力制御の処理と、読み出した省電力制御の処理（関数）と、を比較する。たとえば、現在実行中の省電力制御処理が「Ａ／Ｄ変換器４０の停止、動作周波数の低速化」であり、これから実行するタスク１５０に関連付けられた省電力制御が「Ａ／Ｄ変換器４０の停止、ＣＡＮ回路５０の停止」である場合、ディスパッチャ１１３は動作周波数の低速化を解除する関数を実行する（Ｓ２３）。
【００４５】
ディスパッチャ１１３は、実行を終了するタスク１５０に伴って実行している省電力制御の処理と、読み出した省電力制御の処理（関数）を比較し、これから新たに行う省電力制御を実行開始する。上述の例ではディスパッチャ１１３は、「ＣＡＮモジュール５０の停止」に関する関数を実行する（Ｓ２４）。
【００４６】
ディスパッチャ１１３は、タスク管理ブロック１３０を更新する（Ｓ２５）。すなわちディスパッチャ１１３は、実行を終了するタスク１５０、及び実行を開始するタスク１５０の状態をタスク管理ブロック１３０に書き込む（Ｓ２５）。そしてディスパッチャ１１３は、タスクディスパッチを行う（Ｓ２５）。
【００４７】
次に図７〜図９を参照して本実施の形態にかかるマイクロコンピュータ１の動作概念を説明する。図７〜図９は、本実施の形態にかかるマイクロコンピュータ１の各タスクの動作イメージを示す概念図である。
【００４８】
図７は、あるタスク（タスクＢ）に対して１つの省電力制御を設定した場合の動作を示す図である。タスクＢの実行時にはＣＡＮモジュール５０の動作が停止し、省電力化を図っている。図８は、あるタスク（タスクＡ）に対して複数の省電力制御を設定した場合の動作を示す図である。タスクＡの実行時にはＣＡＮモジュール５０及びＡ／Ｄ変換器４０の動作が停止し、省電力化を図る。図９は、あるタスクグループ（タスクＡ，タスクＢ）に対して省電力制御を設定した場合の動作を示す図である。図示するようにタスクＡとタスクＢの実行時にマイクロコンピュータ１の電源電圧が低減される省電力化が行われる。
【００４９】
続いて本実施の形態にかかるマイクロコンピュータ１の効果について説明する。本実施の形態では、上述のように省電力テーブル１１２にタスク１５０の識別情報（タスクＩＤ）と省電力属性との関係、及び省電力属性と実行する省電力制御との関係、を保持している。そしてタスク１５０のディスパッチ時に省電力テーブル１１２の設定に応じて各種の省電力制御処理を行っている。省電力テーブル１１２の設定内容は、タスク１５０の種別（タスク１５０の処理内容）に応じてユーザが設定ファイル１４０を書き換えることにより、適宜設定可能である。これにより、実行中のタスク１５０の特性に応じた省電力制御が可能となり、マイクロコンピュータ１における効率的な省電力化を実現することができる。
【００５０】
さらにあるタスク１５０（以下、第１タスクとも記載する。）の実行終了と、第１タスクの終了後に実行するタスク１５０（以下、第２タスクとも記載する。）の実行開始までと、の間に、ディスパッチャ１１３は、第１タスクに関連して実行されていた省電力制御の種別と、第２タスクに関連して実行される省電力制御の種別と、を比較する。そしてディスパッチャ１１３は、重複している省電力制御については終了せず、第１タスクの実行時に実行していたが第２タスクの実行時には実行しない省電力制御のみを終了する。一般的な回路やモジュールの実行開始時（立ち上げ時）には通常時よりも電力消費量が多くなってしまうため、再起動の回数はできるだけ少なくすることが望ましい。本実施の形態ではディスパッチャ１１３が上述の処理を行うことにより、各処理部の再起動の回数を最小限に抑えることができ、省電力性能を高めることができる。
【００５１】
さらに省電力テーブル１１２は、図２に示すように複数のタスクＩＤと一つの属性を関連付けることができる。すなわちタスク１５０のグループと一つの属性を関連付けることができる。これにより、ユーザの設定の手間を省くことができる。
【００５２】
省電力テーブル１１２は、図４に示すように、ある属性に対して複数の省電力制御（に関する関数）を関連付けることができる。これにより、例えば他の処理部に影響が少ないタスク１５０の実行中に、複数の処理部を止めることや、動作周波数を落とす等の複数の省電力制御を実行することができる。これにより、大幅な消費電力の削減を実現することができる。
【００５３】
＜実施の形態２＞
本実施の形態にかかるマイクロコンピュータ１は、ユーザがタスク１５０実行時の処理及びタスク１５０終了時の処理を明示的に記述できることを特徴とする。本実施の形態にかかるマイクロコンピュータ１について、実施の形態１と異なる点を以下に説明する。
【００５４】
図１０は、本実施の形態にかかるマイクロコンピュータ１の構成を示すブロック図である。図示するように、リアルタイムＯＳ１１０内にフックコード１７１およびフックコード１７２が設けられている。
【００５５】
フックコード１７１は、ディスパッチャ１１３がディスパッチ（あるタスク１５０を実行状態に遷移させる）直前に実行するプログラムコード（Dispatch Hook）である。なおフックコード１７１は、各タスク１５０が実行を開始する直前に実行するプログラムコード（Pre Task Hook）であってもよい。
【００５６】
フックコード１７２は、ディスパッチャ１１３が、あるタスク１５０の実行を終了した直後に実行するプログラムコード（Dispatch Hook）である。なおフックコード１７２は、各タスク１５０が実行を終了する直前に実行するプログラムコード（Pre Task Hook）であってもよい。
【００５７】
フックコード１７１及びフックコード１７２は、ユーザが記述可能なコードである。本実施の形態におけるリアルタイムＯＳ１１０は、各種のフックコードに対応している。すなわち、フックコード１７１及びフックコード１７２が存在する場合、ディスパッチャ１１３またはタスク１５０は、当該記述内容を自動的に実行するように制御されている。当該フック処理は、一般的なオペレーティングシステムに設けられている一般的な処理に沿って行われればよい。
【００５８】
ユーザは、フックコード１７１及びフックコード１７２に、どのような省電力制御を行うかを記述する。当該制御内容は、図６に示す処理に略対応する。図１１は、フックコード１７１の記述例を示す概念図である。図示するようにフックコード１７１には、省電力テーブル１１２から、これから実行するタスク１５０の属性を取得し、取得した属性に対応する省電力制御として、どのような処理を行うかを記述する。
【００５９】
図１２は、フックコード１７２の記述例を示す概念図である。図示するようにフックコード１７２には、現在実行中のタスク１５０の属性取得、これから実行するタスク１５０の属性取得、現在実行中の省電力制御の内容取得、これから実行する省電力制御の内容取得、現在実行中の省電力制御とこれから実行する省電力制御の差分の抽出、及び差分から停止する省電力制御を決定して停止処理の実行、等が記載される。
【００６０】
なお、図１１及び図１２においては、処理の流れの概略を示したが、フックコード１７１及びフックコード１７２はユーザが記述可能であるため、図示する以外の処理の流れを記述してもよい。フックコード１７１及びフックコード１７２は、リアルタイムＯＳ１１０が実行可能なプログラミング言語で記載されていれば、どのようなプログラミング言語を用いてもよい。
【００６１】
なお、フックコード１７１及びフックコード１７２は、必要に応じてコンパイルが行われ、リアルタイムＯＳ１１０が実行可能な状態で記憶部１０内に格納される。ユーザは、フックコード１７１及びフックコード１７２のソースコードを任意のタイミングで変更し、適宜必要なコンパイル処理等を行う。そして、ユーザは、変更したフックコード１７１及びフックコード１７２を記憶部１０内に配置することにより、任意のタイミングでマイクロコンピュータ１の制御内容を変更できる。
【００６２】
上述した以外の処理（タスク１５０生成時の属性の付与等）は、実施の形態１と同一である。なお、実施の形態１で行っていたディスパッチャ１１３による省電力テーブル１１２の参照等は、フックコード１７１及びフックコード１７２内において行われる。そのため、ディスパッチャ１１３は、実施の形態１と異なり、一般的な機能（スケジューリング等）のみを持つものであればよい。
【００６３】
続いて本実施の形態にかかるマイクロコンピュータ１の効果について説明する。本実施の形態にかかるマイクロコンピュータ１では、ユーザが記述可能なフックコード１７１及びフックコード１７２内に各タスク１５０に対応する省電力制御を記述し、当該フックコード１７１及びフックコード１７２を参照して省電力化を行う。これにより、制御内容をユーザ自らが定義することができ、システム用途等に応じた省電力化を定義することができる。
【００６４】
また、フックコード１７１及び１７２は、任意のタイミングで差し替えることが可能である。これにより、例えばシステムの用途が変更され場合、当該変更に応じて省電力制御の内容を適宜切り替えることができる。
【００６５】
＜実施の形態３＞
本実施の形態にかかるマイクロコンピュータ１は、ＣＰＵ２０の処理負荷を考慮した省電力制御を行うことを特徴とする。本実施の形態にかかるマイクロコンピュータ１について、実施の形態１と異なる点を以下に説明する。
【００６６】
一般的にリアルタイムＯＳには、その用途に応じて求められるリアルタイム性が異なる。たとえば車載システムのように、処理の遅れが人命にかかわるようなシステム内で使用されるリアルタイムＯＳには、高いリアルタイム性が求められる。なお、リアルタイムシステムは、制御工学においてはハードリアルタイムシステム、ファームリアルタイムシステム、ソフトリアルタイムシステム等に分類される場合がある。
【００６７】
以下、マイクロコンピュータ１が比較的高いリアルタイム性を求められる場合（たとえばハードリアルタイムシステムで用いられる場合）について説明する。図１３は、本実施の形態にかかるマイクロコンピュータ１の構成を示すブロック図である。図１３に示すように、本実施の形態にかかるマイクロコンピュータ１の構成は、リアルタイムＯＳ１１０の機能としてＣＰＵ監視モジュール１１４を有する。ＣＰＵ監視モジュール１１４は、ＣＰＵ２０の処理負荷を監視する。ＣＰＵ監視モジュール１１４は、ＣＰＵ２０の処理負荷に応じて省電力停止／開始制御情報をディスパッチャ１１３に入力される。
【００６８】
省電力停止／開始制御情報とは、ＣＰＵ２０の使用率に応じて上述の省電力制御処理の停止または開始を指示する情報である。たとえば、ＣＰＵ２０の使用率が８０％以上となった場合、停止を指示する値がディスパッチャ１１３に入力される。同様にＣＰＵ２０の使用率が８０％未満となった場合、開始を指示する値がディスパッチャ１１３に入力される。
【００６９】
省電力停止／開始制御情報が停止を示す値が入力された場合、ディスパッチャ１１３は、ディスパッチの際の省電力テーブル１１２の読み出しや関数実行を行わず、一般的なオペレーティングシステムで行われるスケジューリング処理のみを行う。省電力停止／開始制御情報に開始を示す値が入力された場合、ディスパッチャ１１３は、一般的なスケジューリング処理に加えて、ディスパッチの際の省電力テーブル１１２の読み出しや関数実行等の省電力制御を行う。
【００７０】
マイクロコンピュータ１におけるその他の動作は、実施の形態１と同様であるため、詳細な説明は省略する。
【００７１】
続いて本実施の形態にかかるマイクロコンピュータ１の効果について説明する。本実施の形態にかかるマイクロコンピュータ１は、ＣＰＵ２０の使用率（処理負荷）に応じて、省電力制御を行うか否かを切り替えている。一般的にマイクロコンピュータ１の省電力化を図ることが望ましいものの、省電力化を行うための処理が発生する。この場合、当該省電力化のための処理を行うことにより、他の処理の遅延の問題を引き起こす恐れがある。特にハードリアルタイムシステムやファームリアルタイムシステム等のリアルタイム性が強く求められるシステムでは、当該遅延は重大な問題となり得る。
【００７２】
本実施の形態にかかるマイクロコンピュータ１は、ＣＰＵ２０の使用率が所定値以上となった場合、省電力制御を行わず、処理遅延の問題を回避している。また、ＣＰＵ２０の使用率が所定値未満である場合、マイクロコンピュータ１において、上述の省電力制御が行われる。これにより、リアルタイム性を担保しつつ、電力削減を実現したマイクロコンピュータ１を提供することができる。
【００７３】
なお、ユーザが上述のＣＰＵ２０の使用率に関する閾値（所定値）を設定できる構成とすることも可能である。この場合、ユーザは、専用のレジスタまたは専用のファイルに当該閾値を入力する。ＣＰＵ２０の使用率を計測するソフトウェア等は、当該専用のレジスタまたは専用のファイルに設定された閾値に応じて判定処理を行えばよい。
【００７４】
ユーザが明示的にＣＰＵ２０の使用率に関する閾値を設定できることにより、リアルタイム性と省電力制御のバランスを明示的に指定することができ、システムを意図する状態で動作させることができる。
【００７５】
なお、上記の説明ではマイクロコンピュータ１上でリアルタイムＯＳ１１０が動作しているものとして説明したが、必ずしもこれに限られない。マイクロコンピュータ１上で一般的なオペレーティングシステムが動作している場合であっても同様の構成及び動作を実現することができる。
【００７６】
上述のＣＰＵ２０が実行するプログラム(たとえばリアルタイムオペレーティングシステム１１０)は、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７７】
上述のように、ディスパッチャ１１３（ディスパッチ手段）、システムコール１１１（タスク生成手段）、ＣＰＵ監視モジュール１１４（ＣＰＵ監視手段）は、メモリ１０（記憶装置）に格納された各種オペレーティングシステムプログラムに基づいて各種制御を実行する機能であり、中央演算処理装置（ＣＰＵ）等によってその機能がマイクロコンピュータ１上で実現される。
【００７８】
以下、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００７９】
１  マイクロコンピュータ
１０  メモリ
１１０  リアルタイムオペレーティングシステム（ＯＳ）
１１１  システムコール
１１２  省電力テーブル
１１３  ディスパッチャ
１１４  ＣＰＵ監視モジュール
１２０  アプリケーションバイナリファイル
１３０  タスク管理ブロック
１４０  設定ファイル
１５０（１５０−１〜１５０−ｎ）  タスク
１６０  関数群
１７１  フックコード
１７２  フックコード
２０  ＣＰＵ
３０  レジスタ
４０  Ａ／Ｄ変換器
５０  ＣＡＮモジュール  
【図１】
2014096034.tif 000003
【図２】
2014096034.tif 000004
【図３】
2014096034.tif 000005
【図４】
2014096034.tif 000006
【図５】
2014096034.tif 000007
【図６】
2014096034.tif 000008
【図７】
2014096034.tif 000009
【図８】
2014096034.tif 000010
【図９】
2014096034.tif 000011
【図１０】
2014096034.tif 000012
【図１１】
2014096034.tif 000013
【図１２】
2014096034.tif 000014
【図１３】
2014096034.tif 000015