(57)【要約】【課題】消費電力の低減を図ることが可能な半導体装置を提供する。【解決手段】供給される動作クロック信号に同期して、タスクを切り換えながら、複数のタスクを実行するプロセッサを備えた半導体装置は、第１期間におけるプロセッサの使用率を測定するプロセッサ使用率測定回路と、プロセッサ使用率測定回路によって測定された使用率に基づいて、第１期間よりも時間的に後の第２期間において、プロセッサへ供給する動作クロック信号の周波数を変更する分周値選択回路および分周回路を備える。【選択図】図１
2019192110.tif 000002
【特許請求の範囲】
【請求項１】
供給される動作クロック信号に同期して、タスクを切り換えながら、複数のタスクを実行するプロセッサを備えた半導体装置であって、
第１期間における前記プロセッサの使用率を測定する使用率測定部と、
前記使用率測定部によって測定された使用率に基づいて、前記第１期間よりも後の第２期間において、前記プロセッサへ供給する前記動作クロック信号の周波数を変更する周波数変更部と、
を備える、半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記プロセッサは、前記第１期間および前記第２期間において、アイドルタスクを含む複数のタスクを実行する、半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記使用率測定部は、前記第１期間において実行される前記アイドルタスクに基づいて、前記プロセッサの使用率を測定する、半導体装置。
【請求項４】
請求項３に記載の半導体装置において、
前記使用率測定部は、前記第１期間において実行される前記アイドルタスクの実行時間に基づいて、前記プロセッサの使用率を測定する、半導体装置。
【請求項５】
請求項４に記載の半導体装置において、
前記周波数変更部は、前記使用率測定部で測定された使用率と目標使用率との差が小さくなるように、前記動作クロック信号の周波数を変更する、半導体装置。
【請求項６】
請求項５に記載の半導体装置において、
前記周波数変更部は、
クロック信号を分周する分周回路と、
前記分周回路に接続され、前記使用率測定部で測定された使用率と前記目標使用率とに基づいて、前記使用率測定部で測定された使用率と前記目標使用率との間の差を小さくするような分周値を、前記分周回路に供給する分周値選択回路と、
を備え、
前記分周回路は、前記分周値選択回路から供給された分周値に従って、前記クロック信号を分周することにより、前記動作クロック信号を出力する、
半導体装置。
【請求項７】
請求項６に記載の半導体装置において、
前記分周値選択回路は、分周値を変更するとき、段階的に分周値を変更する、半導体装置。
【請求項８】
請求項６または７に記載の半導体装置において、
前記目標使用率が設定されるレジスタを、さらに備える、半導体装置。
【請求項９】
動作クロック信号に同期して、複数のタスクをプロセッサに実行させるプロセッサ制御方法であって、
第１期間において、前記プロセッサにより実行されるアイドルタスクに基づいて、プロセッサの使用率を測定する使用率測定工程と、
前記使用率測定工程で測定された使用率に基づいて、前記動作クロック信号の周波数を変更する周波数変更工程と、
を備える、プロセッサ制御方法。
【請求項１０】
請求項９に記載のプロセッサ制御方法において、
前記第１期間において、前記プロセッサにより実行されるタスクは、周期的に実行されるリアルタイムタスクと、ランダムに実行されるノンリアルタイムタスクと、前記リアルタイムタスクおよび前記ノンリアルタイムタスクが実行されていないときに、実行される前記アイドルタスクと、を含み、
前記使用率測定工程では、前記第１期間に実行される前記アイドルタスクの実行時間に基づいて、前記使用率を算出する、プロセッサ制御方法。
【請求項１１】
請求項１０に記載のプロセッサ制御方法において、
前記周波数変更工程は、
クロック信号を分周して、前記動作クロック信号を形成する分周工程と、
前記算出された前記使用率と目標使用率との差が小さくなるように、前記分周工程での分周値を選択する選択工程と、
を備える、プロセッサ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサを備えた半導体装置およびプロセッサ制御方法に関し、例えばタスクを切り換えながら、複数のタスクを実行するプロセッサを備えた半導体装置およびプロセッサ制御方法に関する。
【背景技術】
【０００２】
タスクを切り換えながら、複数のタスクをプロセッサに実行させるために、プロセッサ上でマルチタスクのオペレーティングシステム（以下、ＯＳと呼ぶ）を動作させ、マルチタスクのＯＳ上で複数のタスクを動作させることが行われる。タスクには、予め決められた一定の周期で実行されることが要求されるタスク、すなわちリアルタイム性が要求されるタスク（以下、リアルタイムタスクと呼ぶ）が存在する。このようなリアルタイムタスクを扱うことが可能なＯＳとしてリアルタイムＯＳが存在する。リアルタイムＯＳは、例えば産業用ネットワーク機器等を構成する半導体装置に実装され、半導体装置内のプロセッサが、リアルタイムＯＳを実行する。
【０００３】
リアルタイムＯＳを搭載したデータ処理装置が、例えば特許文献１に記載されている。また、ハードウェアによってリアルタイムＯＳを実装する技術が、例えば特許文献２に記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１０７９４４号公報
【特許文献２】国際公開第２００９／０２２３７１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、産業用ネットワーク機器は、安全性およびリアルタイム性が求められており、安全性およびリアルタイム性を確保するために、産業用ネットワーク機器内のプロセッサを、より高い周波数の動作クロック信号で動作させる傾向にある。そのため、プロセッサの消費電力が増加すると言う課題がある。また、例えば、工場には、多くの産業用ネットワーク機器が設置されるが、産業用ネットワーク機器のプロセッサの消費電力が増加することにより、工場全体の消費電力も増加すると言う課題もある。
【０００６】
本発明者は、リアルタイムＯＳを実装した産業用ネットワーク機器として、ネットワーク通信用半導体装置の処理の負荷状況を調べた。調べたところ、実行すべき有意なタスク（アプリケーションを構成するタスク）が無いときに実行されるアイドルタスクの時間が、比較的長いことに気づいた。アイドルタスクは、タスクの優先度が最も低いタスクであり、例えば空のループ処理を実行するタスクである。
【０００７】
プロセッサは、アイドルタスクを実行しているときも、優先度が高いタスクを実行しているときと同じ周波数の動作クロック信号に同期して動作している。すなわち、プロセッサは、アイドルタスクを実行しているときも、優先度の高いタスクを実行しているときと同様な電力を消費していることになる。
【０００８】
特許文献１には、個々のタスクの要求性能を管理するタスク要求性能テーブルを備えたデータ処理装置が記載されている。この特許文献１では、プロセッサを動作させる動作クロック信号の周波数が、タスク要求性能テーブルに設定された要求性能に応じて決定される。リアルタイムタスクを特許文献１に記載のデータ処理装置で処理させるには、リアルタイム性を確保するために、十分なマージンを持った要求性能を、タスク要求性能テーブルに設定することが必要である。そのため、リアルタイムＯＳの処理全体として最適化がなされているとは言えず、データ処理装置の消費電力を想定した値にまで低減することができないことが危惧される。逆に、十分なマージンを持たない要求性能を設定した場合、一定の周期で実行されるべきリアルタイムタスクが、処理しきれずに、リアルタイム性が損なわれることが懸念される。
【０００９】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態に係わる半導体装置を述べると、次のとおりである。
【００１１】
すなわち、半導体装置は、動作クロック信号に同期して、タスクを切り換えながら、複数のタスクを実行するプロセッサを備えている。半導体装置は、第１期間におけるプロセッサの使用率を測定する使用率測定部と、使用率測定部によって測定された使用率に基づいて、第１期間よりも時間的に後の第２期間において、プロセッサへ供給する動作クロック信号の周波数を変更する周波数変更部とを備えている。
【発明の効果】
【００１２】
一実施の形態によれば、消費電力の低減を図ることが可能な半導体装置を提供することができる。第１期間における使用率に基づいて、第２期間においてプロセッサに供給する動作クロック信号の周波数が変更される。これにより、第２期間における半導体装置の消費電力を低減することが可能である。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係わる半導体装置の構成を示すブロック図である。
【図２】（Ａ）および（Ｂ）は、実施の形態１に係わる半導体装置の動作を示すタイミング図である。
【図３】実施の形態１に係わるプロセッサ使用率測定回路および分周値選択回路の動作を示すフローチャート図である。
【図４】実施の形態１に係わるプロセッサ使用率測定回路および分周値選択回路の動作を示すフローチャート図である。
【図５】実施の形態１に係わるプロセッサ使用率測定回路および分周値選択回路の動作を示すフローチャート図である。
【図６】実施の形態２に係わるプロセッサ使用率測定回路および分周値選択回路の動作を示すフローチャート図である。
【図７】実施の形態２に係わる半導体装置の動作を説明するためのタイミング図である。
【発明を実施するための形態】
【００１４】
以下、本発明の各実施の形態について、図面を参照しつつ説明する。なお、開示はあくまでも一例にすぎず、当業者において、発明の主旨を保っての適宜変更について容易に想到し得るものについては、当然に本発明の範囲に含有されるものである。また、図面は説明をより明確にするため、実際の態様に比べ、各部の幅、厚さ、形状等について模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
【００１５】
また、本明細書と各図において、既出の図に関して前述したものと同様の要素には、同一の符号を付して、詳細な説明を適宜省略することがある。
【００１６】
（実施の形態１）
＜半導体装置の構成＞
図１は、実施の形態１に係わる半導体装置の構成を示すブロック図である。特に制限されないが、図１に示す半導体装置１は、産業用ネットワーク通信用半導体装置である。半導体装置１は、ネットワーク通信を行うための複数の回路ブロックを備えているが、図１には、説明に必要な部分のみが描かれている。
【００１７】
図１において、２は、バス１２に接続されたプロセッサを示している。バス１２には、プロセッサ２以外に、複数の周辺ブロックおよびメモリ等が接続されている。同図では、周辺ブロックとしてダイレクトメモリアクセスコントローラ（以下、ＤＭＡコントローラと呼ぶ）３が、バス１２に接続されている。また、４は、バス１２に接続されたメモリを示している。メモリ４には、リアルタイムＯＳのプログラムと、リアルタイムＯＳ上で動作する複数のアプリケーション用プログラムが格納されている。
【００１８】
プロセッサ２は、バス１２を介してリアルタイムＯＳのプログラムを読み出し、リアルタイムＯＳを実行する。リアルタイムＯＳにより、上記した複数のアプリケーション用プログラムのそれぞれは、複数のタスクに分けられ、分けられたタスクは、タスクスイッチされながら、プロセッサ２により実行される。また、ＤＭＡコントローラ３は、特定のタスクに割り当てられ、特定のタスクが実行されるとき、ＤＭＡコントローラ３が動作する。
【００１９】
図１において、５は、発振回路を示している。特に制限されないが、発振回路５は、半導体装置１の外部端子１５−１および１５−２を介して水晶振動子１３に接続され、水晶振動子１３によって定まる所定の周波数のクロック信号ＣＬＫ１を出力する。クロック信号ＣＬＫ１は、特に制限されないが、周波数を逓倍する逓倍回路６に供給され、逓倍されたクロック信号ＣＬＫ２が、逓倍回路６から出力される。特に制限されないが、クロック信号ＣＬＫ１の周波数は、約２５ＭＨｚである。逓倍回路６は、例えば所謂ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）を備え、ＰＬＬを用いて、約２５ＭＨｚのクロック信号ＣＬＫ１から、例えば約５００ＭＨｚのクロック信号を生成し、クロック信号ＣＬＫ２として出力する。
【００２０】
クロック信号ＣＬＫ２は、タイマー７と分周回路１０に供給されている。タイマー７は、クロック信号ＣＬＫ２を基にして、タイムクロック信号Ｔｃｋを発生する。タイマー７は、例えば、クロック信号ＣＬＫ２をカウントし、所定数カウントすると、タイムクロック信号Ｔｃｋの電圧を変化させる。これにより、タイムクロック信号Ｔｃｋは、所定の時間を１周期としたクロック信号となる。タイムクロック信号Ｔｃｋは、プロセッサ２に供給されている。プロセッサ２では、供給されたタイムクロック信号Ｔｃｋを、リアルタイムＯＳにおいて時間を定める基準クロック信号として用いる。なお、タイムクロック信号Ｔｃｋは、プロセッサ２だけでなく、後で説明するプロセッサ使用率測定回路等の半導体装置１内の他の回路ブロックにも供給されている。
【００２１】
分周回路１０は、可変分周回路である。分周回路１０は、分周値選択回路９から供給される分周値情報ＤＩＮＦによって示される分周値に従って、クロック信号ＣＬＫ２を分周し、分周により得たクロック信号を動作クロック信号Ｏ−ＣＬＫとしてプロセッサ２に供給する。プロセッサ２は、この動作クロック信号Ｏ−ＣＬＫに同期して動作する。
【００２２】
図１において、８はプロセッサ使用率測定回路を示し、１１は目標使用率レジスタを示している。プロセッサ使用率測定回路８は、クロックカウンタＸ１およびＸ２を備え、アイドルタスクが実行されている実行時間を、クロックカウンタＸ１、Ｘ２等を用いてハードウェア的に計測し、計測により得られたアイドルタスクの実行時間と、所定の処理時間との比率を求め、求めた比率を、プロセッサの使用率情報ＤＵＤとして出力する。すなわち、プロセッサ使用率測定回路８においては、アイドルタスクの実行時間が、プロセッサ２の未使用時間と仮定され、所定の時間（例えばプロセッサ２による全体の処理時間）と仮定した未使用時間の比率が、プロセッサ使用率として求められる。言い換えるならば、プロセッサ使用率は、所定の時間において、プロセッサ２がアイドルタスク以外のタスクを実行している時間の割合を示していることになる。プロセッサ使用率測定回路８は、後で、さらに詳しく説明する。
【００２３】
目標使用率レジスタ１１には、半導体装置１の外部端子１４を介して、プロセッサ２の目標使用率が設定される。勿論、目標使用率は、外部端子１４ではなく、バス１２を介して目標使用率レジスタ１１に設定するようにしてもよい。アイドルタスクの実行時間をプロセッサ２の未使用時間と仮定しているため、目標使用率は、上記した所定の時間において、プロセッサ２がアイドルタスク以外のタスクを実行している時間の割合を示すことになる。目標使用率は、例えば、半導体装置１を用いるユーザーが、外部端子１４を介して目標使用率レジスタ１１に設定する。目標使用率レジスタ１１は、設定された目標使用率を、目標使用率情報ＴＵＤとして出力する。
【００２４】
分周値選択回路９は、目標使用率情報ＴＵＤにより表される目標使用率と、プロセッサ使用率測定回路８から出力されている使用率情報ＤＵＤにより表される現在のプロセッサ２の使用率との差を小さくするような、分周値を選択し、選択した分周値を分周値情報ＤＩＮＦとして出力する。
【００２５】
例えば、目標使用率として、７０％が目標使用率レジスタ１１に設定され、使用率情報ＤＵＤによって表される現在のプロセッサ２の使用率が、５０％であるとする。この場合、分周値選択回路９は、現在の分周値よりも大きな分周値を選択し、分周値情報ＤＩＮＦとして出力する。現在の分周比（１／分周値）に比べて分周比が小さくなるため、分周回路１０から出力される動作クロック信号Ｏ−ＣＬＫの周波数が低くなる。そのため、プロセッサ２の動作が遅くなり、最も優先度の低いアイドルタスクが実行されている時間の低減が可能となる。このようにしてアイドルタスクの実行時間が短くなると、次にプロセッサ使用率測定回路８から出力される使用率情報ＤＵＤで表される使用率は、５０％よりも上昇し、７０％の目標使用率との差が小さくなる。
【００２６】
これに対して、目標使用率が７０％に設定され、使用率情報ＤＵＤによって表される現在のプロセッサ２の使用率が、例えば８０％の場合には、分周値選択回路９は、現在の分周値よりも小さい分周値を選択し、分周値情報ＤＩＮＦとして出力する。その結果、分周回路１０から出力される動作クロック信号Ｏ−ＣＬＫの周波数は高くなり、プロセッサ２の動作が早くなる。これにより、最も優先度の低いアイドルタスクが実行されている実行時間を長くすることが可能となる。アイドルタスクの実行時間が長くなると、次にプロセッサ使用率測定回路８から出力される使用率情報ＤＵＤで表される使用率は、８０％よりも下降し、７０％の目標使用率との差が小さくなる。
【００２７】
上記した説明では、目標使用率をユーザーが、半導体装置１の外部から設定する例を説明したが、これに限定されるものではない。例えば７０％の目標使用率を表す目標使用率情報ＴＵＤが、固定的に分周値選択回路９に供給されるようにしてもよい。この場合には、プロセッサ２の使用率を、常に７０％程度にキープするような分周値が、分周値選択回路９から分周値情報ＤＩＮＦとして出力されることになる。
【００２８】
＜半導体装置の動作＞
次に実施の形態１に係わる半導体装置１の動作を説明する。図２は、実施の形態１に係わる半導体装置の動作を示すタイミング図である。ここで、図２（Ａ）は、第１の期間Ｔ１において、プロセッサ２により実行されるタスクＴＡ、ＴＢおよびＴＩＤのタイミングを示している。また、図２（Ｂ）は、時間的に期間Ｔ１よりも後の第２の期間Ｔ２において、プロセッサ２により実行されるタスクＴＡ、ＴＢおよびＴＩＤのタイミングを示している。なお、タスクＴＡおよびＴＢは、図２（Ａ）および（Ｂ）において、同じタスクである。
【００２９】
図２（Ａ）および（Ｂ）において、Ｔｉｃｋは、タイムクロック信号Ｔｃｋによって表される時間を示している。すなわち、リアルタイムＯＳにおける時間である。プロセッサ２に供給される動作クロック信号Ｏ−ＣＬＫの周波数は、分周値情報ＤＩＮＦによって変更されるが、タイムクロック信号Ｔｃｋの周波数は一定である。すなわち、動作クロック信号Ｏ−ＣＬＫの周波数が変更されても、時間Ｔｉｃｋによって表される時間間隔は変化しない。時間Ｔｉｃｋは、期間Ｔ１およびＴ２において、時間ｔの経過とともに、等間隔で、１から４０に増加している。
【００３０】
タスクＴＡは、その優先度が最も高く、例えば優先度が１となっている。また、タスクＴＡは、時間Ｔｉｃｋ＝１０を１周期として、周期的に起動されるリアルタイムタスクである。タスクＴＢは、その優先度が、タスクＴＡよりも低く、例えば優先度が２のタスクである。このタスクＴＢは、周期的に起動されるタスクではなく、例えば割り込み要求等によって起動されるランダムなタスクである。タスクＴＢは、周期的に起動されないため、ノンリアルタイムタスクと見なすことができる。また、タスクＴＩＤは、その優先度が最も低く、例えば優先度が１５となっている。タスクＴＩＤは、空のタスクであり、例えばループ処理を行うアイドルタスクである。
【００３１】
プロセッサ２は、タスクＴＡおよびＴＢを実行していないときに、タスクＴＩＤを実行する。図２（Ａ）では、タスクＴＡが、時刻Ｔｉｃｋ＝１−２、１１−１２、２１−２２および３１−３２において、実行されている。また、タスクＴＢは、時刻Ｔｉｃｋ＝４−５、１０、１３、１６−１７、２３−２４、２８−２９、３４−３５および４０において、実行されている。タスクＴＩＤは、タスクＴＡおよびＴＢが実行されていない時刻Ｔｉｃｋ＝３、６−９、１４−１５、１８−２０、２５−２７、３０、３３および３６−３９において実行されている。
【００３２】
ここでは、期間Ｔ１において、プロセッサ使用率測定回路８により、使用率を求め、期間Ｔ２の開始時に、分周回路１０に供給される分周値が変更され、期間Ｔ２においては、動作クロック信号Ｏ−ＣＬＫの周波数が変更される場合を説明する。
【００３３】
期間Ｔ１およびＴ２のそれぞれが、上記した所定の時間、すなわちプロセッサ２の使用率を求める際の時間（プロセッサ２の全体の処理時間）に相当する。図２では、プロセッサ２の全体の処理時間は、Ｔｉｃｋ＝１〜４０の４０である。アイドルタスクであるタスクＴＩＤが実行されている実行時間は、時刻Ｔｉｃｋ＝３、６−９、１４−１５、１８−２０、２５−２７、３０、３３および３６−３９の合計である１９である。そのため、プロセッサ使用率測定回路８は、プロセッサ２の未使用時間として１９を仮定し、使用率として１−１９／４０＝５２．５％を、使用率情報ＤＵＤとして出力する。
【００３４】
プロセッサ２の使用率が５２．５％と、負荷を処理するには、未だ余裕があるため、例えば７０〜８０％の目標使用率が、ユーザーによって目標使用率レジスタ１１に設定される。これにより、分周値選択回路９は、目標使用率とプロセッサの使用率との差を小さくするように、現在の分周値よりも大きな分周値を選択し、選択した分周値を、分周値情報ＤＩＮＦとして分周回路１０へ供給する。これにより、分周回路１０での分周比が、現在の分周比（例えば１／３）から、小さな分周比（２／９）へと変更される。
【００３５】
これにより、期間Ｔ２の開始時には、プロセッサ２に供給される動作クロック信号Ｏ−ＣＬＫの周波数が低くなる。期間Ｔ２においても、期間Ｔ１と同様に、タスクＴＡおよびＴＢは実行されるが、動作クロック信号Ｏ−ＣＬＫの周波数が低くなるため、プロセッサ２の動作が遅くなる。そのため、タスクＴＡおよびＴＢを実行するのに要する時間が長くなる。すなわち、プロセッサ２は、図２（Ｂ）に示すように、タスクＴＡを、時刻Ｔｉｃｋ＝１−３、１１−１３、２１−２３および３１−３３において実行し、タスクＴＢを、時刻Ｔｉｃｋ＝４−６、１０、１４−１８、２４−２６、２８−３０、３４−３６および４０において実行する。
【００３６】
そのため、タスクＴＡおよびＴＢが実行されていない時間は、時刻Ｔｉｃｋ＝７−９、１９−２０、２７および３７−３９となり、プロセッサ２は、この時間において、タスクＴＩＤを実行する。アイドルタスクであるタスクＴＩＤを実行している実行時間が、９（時刻Ｔｉｃｋ＝７−９、１９−２０、２７および３７−３９の合計）となり、プロセッサ２の未使用時間を９に低減することができる。その結果、プロセッサ２の使用率は、１−９／４０＝７７．５％まで向上させることができる。すなわち、タスクＴＡおよびＴＢの処理時間は長くなるが、アイドルタスクの実行時間を短くすることが可能であり、プロセッサ２の使用効率を向上させることが可能である。動作クロック信号Ｏ−ＣＬＫの周波数を低くしても、リアルタイムタスクであるタスクＴＡは、図２（Ｂ）に示すように、図２（Ａ）と同様に、同じ周期（ＴｉｃＫ＝１〜１０）で起動されるため、リアルタイム性を確保することが可能である。
【００３７】
このように、アイドルタスクの実行時間を短くすることにより、アイドルタスクの実行により生じる消費電力を低減することが可能である。また、タスクＴＡおよびＴＢが実行されているときの平均消費電力を低くすることも可能である。
【００３８】
なお、タスクの優先度として、１５の優先度があり、優先度の番号が増えるのに従って、タスクの優先度が低くなる例を説明したが、これに限定されるものではない。すなわち、タスクの優先度は１５個に限定されず、また、タスクの優先度は、優先度の番号が増えるのに従って高くなるようにしてもよい。
【００３９】
なお、図２（Ａ）および（Ｂ）において、タスクＴＢの２回目の実行は、優先度の高いタスクＴＡと重なるため、タスクＴＢからタスクＴＡにタスクスイッチし、タスクＴＡの２回目の実行が終了すると、タスクＴＢの２回目が再起動されている。
【００４０】
＜プロセッサ使用率測定回路および分周値選択回路＞
プロセッサ使用率測定回路８は、図１に示したようにクロックカウンタＸ１およびＸ２を備えている。クロックカウンタＸ１およびＸ２は、プロセッサ２により制御される。すなわち、クロックカウンタＸ１およびＸ２は、プロセッサ２からのカウント開始の指示により、タイムクロック信号Ｔｃｋをカウントする。また、プロセッサ２からの読み出し指示により、クロックカウンタＸ１およびＸ２によってカウントされたカウント値ＸＣ１およびＸＣ２は、プロセッサ２によって読み出される。さらに、クロックカウンタＸ１およびＸ２は、プロセッサ２からのクリア指示により、クリアされる。
【００４１】
図３〜図５は、実施の形態１に係わるプロセッサ使用率測定回路および分周値選択回路の動作を示すフローチャート図である。
【００４２】
図１に示したプロセッサ２は、プロセッサ使用率測定回路８および分周値選択回路９の機能を実現するための使用率設定プログラムを実行することにより、図３〜図５に示す処理を実行する。使用率設定プログラムを実行する過程において、プロセッサ２は、図１に示したクロックカウンタＸ１およびＸ２を利用する。特に制限されないが、この使用率設定プログラムは、リアルタイムＯＳのプログラムに追加されている。
【００４３】
プロセッサ２は、リアルタイムＯＳの処理を、図５のステップＳ５０で開始する。次に、プロセッサ２は、所定の時間が経過したか否かを、図５のステップＳ５１で判定する。ステップＳ５１で判定する所定の時間が、図２で説明した第１の期間Ｔ１および第２の期間Ｔ２に相当する。このステップＳ５１は、所定の時間が経過するまで、繰り返される。ステップＳ５１が繰り返されている所定の時間の間において、プロセッサ２は、図３および図４に示すステップを実行する。
【００４４】
すなわち、所定の時間の開始時に、プロセッサ２は、図３のステップＳ３１を実行する。このステップＳ３１で、プロセッサ２は、クロックカウンタＸ１に対してカウントの開始を指示する。この指示により、クロックカウンタＸ１は、タイムクロック信号Ｔｃｋの電圧が変化するたびに、ステップＳ３２を実行する。すなわち、ステップＳ３２で、クロックカウンタＸ１のカウント値が＋１加算される。これにより、クロックカウンタＸ１のカウント値ＸＣ１は、所定の時間が開始すると、タイムクロック信号Ｔｃｋが変化するたびに、＋１加算され、順次増加する。クロックカウンタＸ１のカウント値ＸＣ１は、所定の時間におけるプロセッサ２の全体の処理時間を表すことになる。
【００４５】
また、所定の時間の開始時に、プロセッサ２は、図４のステップＳ４１を実行する。ステップＳ４１で、プロセッサ２は、リアルタイムＯＳを用いたタスクスケジューリングを開始する。図４には、タスクスケジューリングのうち、タスクの優先度に基づいた処理のみが示されている。すなわち、ステップＳ４２において、優先度１のタスクに対応するイベントが有るか否かが判定される。同図には、複数の優先度１のタスクＳ４３−１〜Ｓ４３−３が実行待ちの状態になっている場合が示されている。この場合、優先度１のタスクＳ４３−１〜４３−３が実行される。優先度１のタスクの実行が完了した場合または優先度１のイベントがない場合、次にステップＳ４４が実行される。
【００４６】
ステップＳ４４では、優先度２のタスクに対応するイベントが有るか否かが判定される。同図には、複数の優先度２のタスクＳ４５−１〜Ｓ４５−３が実行待ちの状態になっている場合が示されている。この場合、優先度２のタスクＳ４５−１〜４５−３が実行される。優先度２のタスクの実行が完了した場合または優先度２のイベントがない場合、優先度３のタスクに対応するイベントが有るか否かの判定が行われ、イベントが有る場合には、優先度３のタスクが実行される。
【００４７】
以降、同様にして、優先度４〜１３まで、イベントの有無が判定され、イベントが有る場合には、対応する優先度のタスクが実行される。ステップＳ４６では、２番目に低い優先度１４のタスクに対応するイベントが有るか否かが判定される。同図には、複数の優先度１４のタスクＳ４７−１〜Ｓ４７−３が実行待ちの状態になっている場合が示されている。この場合、優先度１４のタスクＳ４７−１〜４７−３が実行される。優先度１４のタスクの実行が完了した場合または優先度１４のイベントがない場合、次にステップＳ４８が実行される。
【００４８】
ステップＳ４８においては、最も低い優先度１５のタスクであるアイドルタスクが実行される。アイドルタスクのステップＳ４８において、プロセッサ２は、ループ処理を実行するとともに、クロックカウンタＸ２に対して、カウントの開始を指示する。これにより、クロックカウンタＸ２は、ステップＳ４９において、タイムクロック信号Ｔｃｋの電圧が変化すると、カウント値ＸＣ２に＋１加算を行う。
【００４９】
ステップＳ４８において、アイドルタスクが実行されると、次にステップＳ４２に戻り、以降、上記した所定の時間の間、上記した動作が繰り返される。
【００５０】
これにより、所定の時間において、イベントが有る場合には、イベントに対応したタスクが実行され、例えば優先度１〜１４のイベントが存在しない場合には、アイドルタスクが実行される。アイドルタスクにおいては、クロックカウンタＸ２のカウント値ＸＣ２が、タイムクロック信号Ｔｃｋの電圧変化に応答して更新される。そのため、クロックカウンタＸ２のカウント値ＸＣ２は、所定の時間の間に実行したアイドルタスクにおいて、タイムクロック信号Ｔｃｋが変化した数の総数となる。図２を例にして述べると、クロックカウンタＸ２のカウント値ＸＣ２は、期間（所定の時間）Ｔ１、Ｔ２において、アイドルタスクが実行された実行時間１９、９を表すことになる。
【００５１】
再び、図５に戻って説明する。ステップＳ５１において、所定の時間が経過したことが判定されると、次にステップＳ５２が実行される。ステップＳ５２において、プロセッサ２は、クロックカウンタＸ１およびＸ２から、カウント値ＸＣ１、ＸＣ２を読み出し、読み出したカウント値ＸＣ１、ＸＣ２に基づいて、プロセッサの使用率を求める。すなわち、プロセッサ２は、１−ＸＣ２／ＸＣ１の演算を実施する。
【００５２】
また、ステップＳ５２において、次の所定の時間での処理に備えて、クロックカウンタＸ１およびＸ２のカウント値がクリアされる。
【００５３】
次に、プロセッサ２は、ステップＳ５３において、目標使用率情報ＴＵＤによって通知された目標使用率と、ステップＳ５２で算出したプロセッサの使用率とを用いて、動作クロック信号Ｏ−ＣＬＫの周波数を求めるための分周値演算を実行する。分周値演算により算出した分周値を、選択した分周値として、プロセッサ２は、分周回路１０に出力する。
【００５４】
ステップＳ５３において実行される分周値演算の一例は、次の通りである。すなわち、プロセッサ２は、目標使用率とプロセッサの使用率のどちらが高いかを判定し、目標使用率とプロセッサの使用率との差を求める。目標使用率が、プロセッサの使用率よりも高い場合、プロセッサ２は、現在の分周値よりも大きな分周値を選択し、現在の分周値と選択した分周値との間の差を、目標使用率とプロセッサの使用率との間の差から算出する。これに対して、目標使用率が、プロセッサの使用率よりも低い場合、プロセッサ２は、現在の分周値よりも小さな分周値を選択し、現在の分周値と選択した分周値との間の差を、目標使用率とプロセッサの使用率との間の差から算出する。勿論、ステップＳ５３で実行する分周値演算は、これに限定されるものではない。
【００５５】
ステップＳ５３の後で、プロセッサ２は、ステップＳ５４を実行する、ステップＳ５４では、ステップＳ５３で選択した分周値を、分周回路１０に設定する。その後は、再びステップＳ５１に戻り、上記したステップＳ５１〜Ｓ５４を実行する。
【００５６】
ステップＳ５１が繰り返して実行されているとき、プロセッサ２には、時間的に先に実行されたステップＳ５４で設定された分周値に従った動作クロック信号Ｏ−ＣＬＫが供給されている。すなわち、図２で説明したように、第２の期間Ｔ２においてプロセッサ２に供給される動作クロック信号Ｏ−ＣＬＫの周波数は、第１の期間Ｔ１において測定したプロセッサ２の使用率に基づいて変更される。その結果、第１の期間Ｔ１におけるプロセッサ２の使用率と目標使用率とによって、第２の期間Ｔ２において実行されるアイドルタスクの実行時間を、例えば短くし、プロセッサ２の使用率を向上させることが可能である。
【００５７】
実施の形態１に係わる半導体装置１においては、タスク毎に固定的に定めた周波数の動作クロック信号でプロセッサを動作させるのではなく、所定の時間（期間Ｔ１）におけるプロセッサの使用率を測定し、測定により得られた使用率に基づいて、次の所定の時間（期間Ｔ２）における動作クロック信号の周波数が変更される。これにより、プロセッサの動作状況に応じて、プロセッサを動作させる動作クロック信号の周波数を最適化することが可能となる。その結果として、プロセッサおよびプロセッサを内蔵した半導体装置の消費電力を効率的に抑制することが可能である。
【００５８】
また、実施の形態１においては、タスクが切り換わるごとに動作クロック信号の周波数を変更するのではなく、所定の時間ごとに動作クロック信号の周波数が変更される。すなわち、プロセッサの使用率を測定している期間においては、動作クロック信号の周波数は変更されない。そのため、動作クロック信号の周波数が、頻繁に変更されるのを防ぐことが可能であり、プロセッサおよび半導体装置の動作が不安定になるのを防ぐことが可能である。
【００５９】
実施の形態１に係わる半導体装置においては、プロセッサ２が、リアルタイムＯＳを実行することにより、リアルタイムタスク、ノンリアルタイムタスクおよびアイドルタスクを切り換えながら、タスクを実行する。実施の形態１に係わる半導体装置においては、リアルタイムＯＳを実行しているときに、アイドルタスクに係わる情報から、プロセッサ２の使用率を求め、求めた使用率からプロセッサの動作クロック信号を、動的に変更するようにフィードバックが行われていると見なすこともできる。
【００６０】
図１に示したプロセッサ使用率測定回路８は、使用率測定部と見なすことができる。また、分周値選択回路９および分周回路１０によって、周波数変更部が構成されていると見なすことができる。
【００６１】
また、図３〜図５は、プロセッサ２を制御する制御方法を示していると見なすことができる。この場合、プロセッサの使用率を測定する使用率測定工程は、図３に示したステップＳ３２、図４に示したステップＳ４８および図５に示したステップＳ５２を含んでいると見なすことができ、動作クロック信号の周波数を変更する周波数変更工程は、図５に示したステップＳ５３およびＳ５４を含んでいると見なすことができる。
【００６２】
＜実施の形態２＞
実施の形態２においては、動作クロック信号の周波数が、急激に変化するのを抑制することが可能な半導体装置が提供される。実施の形態１においては、第１の期間Ｔ１（図２）において測定されたプロセッサの使用率に基づいて、分周値が選択され、選択された分周値で、第２の期間Ｔ２（図２）においてプロセッサ２に供給される動作クロック信号Ｏ−ＣＬＫの周波数が定められていた。そのため、第１の期間Ｔ１から第２の期間Ｔ２へ移る際に、動作クロック信号Ｏ−ＣＬＫの周波数が、大きく変化することが危惧される。動作クロック信号Ｏ−ＣＬＫの周波数の変化量が大きいと、プロセッサ２の動作が不安定になることが考えられる。実施の形態２においては、分周値選択回路９（図１）から分周回路１０に通知される分周値が段階的に変化する。これにより、動作クロック信号Ｏ−ＣＬＫの周波数が大きく変化することを防ぐことが可能であり、プロセッサ２の安定した動作を担保することが可能となる。
【００６３】
図６は、実施の形態２に係わるプロセッサ使用率測定回路および分周値選択回路の動作を示すフローチャート図である。また、図７は、実施の形態２に係わる半導体装置の動作を説明するためのタイミング図である。実施の形態２に係わる半導体装置１の構成は、実施の形態１で説明した半導体装置と同じであるため、説明は省略する。
【００６４】
図６は、図５と類似しているので、相異点を主に説明する。図５に対して、図６では、ステップＳ６０〜Ｓ６２が追加されている。なお、図５で説明した分周値を設定するステップＳ５４は、ステップＳ６２に含まれている。
【００６５】
図５で説明したのと同様に、図６のステップＳ５３で、期間Ｔ１で測定したプロセッサの使用率に基づいて分周値が算出される。算出された分周値は、ステップＳ６２において、微調整され、微調整された分周値が、分周値情報ＤＩＮＦとして分周回路１０に設定される。ステップＳ５３において算出された分周値が、例えば４であったとする。この場合、分周回路１０は、クロック信号ＣＬＫ２を４分周することになる。ステップＳ６２において、プロセッサ２は、微調整として、４分周を、例えば２分周と２分周に分割する。分周値選択回路９は、分割により得た２分周を、分周値情報ＤＩＮＦとして、分周回路１０に供給する。図７を参照して述べると、分周値選択回路９は、第２の期間Ｔ２の開始時刻ｔ１で、２分周を示す分周値Ｄ２−１を分周値情報ＤＩＮＦとして、分周回路１０に供給する。これにより、分周回路１０は、クロック信号ＣＬＫ２を２分周した周波数ｆ２−１のクロック信号を動作クロック信号Ｏ−ＣＬＫとしてプロセッサ２に供給する。その結果、プロセッサ２は、周波数ｆ２−１の動作クロック信号Ｏ−ＣＬＫで、第２の期間における処理を開始する。
【００６６】
次に、プロセッサ２は、ステップＳ６０を実行する。ステップＳ６０では、分周値設定が完了したか否かを判定する。プロセッサ２は、ステップＳ６２で分割した全ての分周値を、分周値情報ＤＩＮＦとして分周回路１０に供給していないことを把握しているため、ステップＳ６０では、分周値設定は完了していないと判定する。これにより、次にステップＳ６１が実行される。ステップＳ６１では、微調整用の時間（Ｔ３）が経過したか否かを判定する。ステップＳ６１において、微調整用の時間（Ｔ３）が経過していないと判定されると、ステップＳ５１が実行される。
【００６７】
一方、ステップＳ６１において、微調整用の時間（Ｔ３）が経過したと判定された場合、次にステップＳ６２が再び実行される。ステップＳ６２において、プロセッサ２は、分割により得た残りの２分周と、先に分周値情報ＤＩＮＦとして出力した２分周とを掛け算し、４分周を取得し、図７に示すように、微調整用の時間（Ｔ３）が経過した時刻ｔ２において、分周値Ｄ２−２として、分周回路１０に通知する。
【００６８】
これにより、動作クロック信号Ｏ−ＣＬＫの周波数は、時刻ｔ１では、２分周の周波数であるｆ２−１に変化し、微調整用の時間（Ｔ３）の間、この周波数ｆ２−１に維持される。その後、時刻ｔ２において、動作クロック信号Ｏ−ＣＬＫの周波数は、４分周の周波数であるｆ２−２に変化することになる。すなわち、分周値および動作クロック信号Ｏ−ＣＬＫが、時間の経過にともなって段階的に変化する。従って、動作クロック信号Ｏ−ＣＬＫが、短時間に大きく変化するのを防ぐことが可能であり、プロセッサ２および半導体装置１の動作の安定化を図ることが可能である。
【００６９】
分周値Ｄ２−２を分周回路１０に通知するために、プロセッサ２が、ステップＳ６２において掛け算を実施する例を示したが、これに限定されない。すなわち、第１の期間Ｔ１において算出した分周値を、分周値Ｄ２−２として、分周回路１０へ通知するようにしてもよい。また、プロセッサ２は、ステップＳ６２において、分割により得た残りの２分周を、分周回路１０に通知し、分周回路１０において、掛け算により４分周を算出するようにしてもよい。さらに、分割する分周値は２つに限定されず、３つ以上に分割するようにしてもよい。
【００７０】
実施の形態２においても、クロックカウンタＸ１のカウント値ＸＣ１は、実施の形態１と同様に、第１の期間Ｔ１および第２の期間Ｔ２において、図７に示すように、プロセッサ２の処理に応じて増加する。また、クロックカウンタＸ２のカウント値ＸＣ２は、実施の形態１と同様に、第１の期間Ｔ１および第２の期間Ｔ２において、アイドルタスクが実行されている期間に増加する。
【００７１】
また、図７において、Ｄ１−１およびＤ１−２は、第１の期間Ｔ１よりも前の期間において算出された分周値を分割することにより得られた分周値を示し、ｆ１−１は、分周値Ｄ１−１により分周された周波数を示し、ｆ１−２は、分周値Ｄ１−２により分周された周波数を示している。
【００７２】
実施の形態では、リアルタイムＯＳのプログラムを、プロセッサ２が実行する場合を説明したが、これに限定されるものではない。すなわち、リアルタイムＯＳは、特許文献２に記載されているようにハードウェアによって実装されてもよい。特許文献２に記載されているタスク処理装置に適用する場合を例にして述べると、次のようになる。すなわち、タスク処理装置に、上記したクロックカウンタＸ１およびＸ２が追加される。また、タスク処理装置が備える複数の状態記憶部のうち、アイドルタスクに対応する状態記憶部が選択されたとき、図３〜図５で説明したステップが実行されるようにすればよい。これにより、ハードウェアによってリアルタイムＯＳを実装する場合も、クロックカウンタＸ１およびＸ２を用いて、プロセッサの使用率を測定することが可能である。測定したプロセッサの使用率に基づいて、次の期間においてプロセッサを動作させる動作クロック信号の周波数を変更することが可能である。
【００７３】
上記した実施の形態１では、クロックカウンタＸ１およびＸ２が、タイムクロック信号Ｔｃｋをカウントする例を示したが、これに限定されるものではない。クロックカウンタＸ１およびＸ２は、同じクロック信号をカウントすればよい。そのため、クロックカウンタＸ１およびＸ２は、例えば期間ごとに周波数が変化する動作クロック信号Ｏ−ＣＬＫの電圧変化をカウントするようにしてもよい。
【００７４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００７５】
１  半導体装置
２  プロセッサ
３  ＤＭＡコントローラ
４  メモリ
５  発振回路
６  逓倍回路
７  タイマー
８  プロセッサ使用率測定回路
９  分周値選択回路
１０  分周回路
１１  目標使用率レジスタ
１２  バス
ＤＵＤ  使用率情報
ＤＩＮＦ  分周値情報
Ｏ−ＣＬＫ  動作クロック信号
ＴＵＤ  目標使用率情報
Ｔｃｋ  タイムクロック信号
Ｘ１、Ｘ２  クロックカウンタ
【図１】
2019192110.tif 000003
【図２】
2019192110.tif 000004
【図３】
2019192110.tif 000005
【図４】
2019192110.tif 000006
【図５】
2019192110.tif 000007
【図６】
2019192110.tif 000008
【図７】
2019192110.tif 000009