(57)【要約】【課題】所要のデータ処理能力を満足するクロック周波数の範囲でデータ処理部による電力消費量が小さくなるようクロック周波数を制御する。【解決手段】中央処理装置（１３）の制御を受けてデータ処理を行うデータ処理部（１１，１２）の消費電力を制御する電力制御部(１８)は、データ処理部に設定可能な範囲で動作クロック周波数における単位クロックサイクル当たりのデータ処理で消費する処理要素電流と単位クロックサイクル当たりのデータ非処理で消費するアイドル要素電流とのデータを格納する要素テーブル（１８３）を有し、データ処理部に設定された動作クロック周波数に応じた処理要素電流とアイドル要素電流を参照すると共に、データ処理部で周期的なデータ処理を行った際のデータ非処理時間とデータ処理時間を算出し、これに基づいて電力消費量を演算し、演算された電力消費量の変化に応じて、データ処理部の動作クロック周波数を制御する。【選択図】図１
2011018163.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、前記中央処理装置の制御を受けてデータ処理を行うデータ処理部と、前記データ処理部の消費電力を制御する電力制御部とを有する半導体装置であって、
前記電力制御部は、前記データ処理部に設定可能な範囲で動作クロック周波数における単位クロックサイクル当たりのデータ処理で消費する処理要素電流と単位クロックサイクル当たりのデータ非処理で消費するアイドル要素電流とのデータを格納する要素テーブルを有し、前記データ処理部に設定された動作クロック周波数に応じた処理要素電流とアイドル要素電流を前記要素テーブルから参照すると共に、前記データ処理部で周期的なデータ処理を行った際のデータ非処理時間と区別されるデータ処理時間を算出し、それらに基づいて電力消費量を演算する電力消費量演算処理と、これによって演算された電力消費量の変化に応じて、前記データ処理部に設定する動作クロック周波数を制御する周波数制御処理と、を行う、半導体装置。
【請求項２】
中央処理装置と、前記中央処理装置の制御を受けてデータ処理を行うデータ処理部と、前記データ処理部の消費電力を制御する電力制御部とを有する半導体装置であって、
前記電力制御部は、前記データ処理部に設定可能な範囲で動作クロック周波数における単位クロックサイクル当たりのデータ処理で消費する処理要素電力と単位クロックサイクル当たりのデータ非処理で消費するアイドル要素電力とのデータを格納する要素テーブルを有し、前記データ処理部に設定された動作クロック周波数に応じた処理要素電力とアイドル要素電力を前記要素テーブルから参照すると共に、前記データ処理部で周期的なデータ処理を行った際のデータ非処理時間と区別されるデータ処理時間を算出し、それらに基づいて電力消費量を演算する電力消費量演算処理と、これによって演算された電力消費量の変化に応じて、前記データ処理部に設定する動作クロック周波数を制御する周波数制御処理と、を行う、半導体装置。
【請求項３】
前記電力制御部は、前記電力消費量演算処理及び周波数制御処理を繰り返すことによって前記演算された電力消費量が最も小さくなる動作クロック周波数を採用する、請求項１又は２記載の半導体装置。
【請求項４】
前記電力制御部は、前記電力消費量演算処理及び周波数制御処理によって動作クロック周波数を変更したとき、当該処理で得られた電力消費量及び動作クロック周波数を保持する電力テーブルを有する、請求項３記載の半導体装置。
【請求項５】
前記電力制御部は、前記周波数制御処理では、電力消費量演算処理で演算された電力消費量と電力テーブルが保持する最新の電力消費量とを比較し、消費電力が減少しているときは増加又は減少の何れか一方に動作クロック周波数を変更する処理を、演算された消費電力が増加に転ずるまで所定回数繰り返す処理である、請求項４記載の半導体装置。
【請求項６】
前記要素テーブルは前記中央処理装置によって初期設定される、請求項１乃至５の何れか１項記載の半導体装置。
【請求項７】
前記電力制御部は、データ処理部による処理種別毎に前記電力消費量演算処理及び周波数制御処理を行なう、請求項１乃至６の何れか1項記載の半導体装置。
【請求項８】
前記電力制御部は、データ処理部による処理の単位時間毎に前記電力消費量演算処理及び周波数制御処理を行なう、請求項１乃至６の何れか1項記載の半導体装置。
【請求項９】
前記電力制御部による周波数制御に応じて前記データ処理部の動作電源電圧を決定する電源回路を更に有する、請求項１乃至８の何れか１項記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理用の半導体装置における低消費電力化、特に、その動作クロック信号の切換え制御に関し、例えば複数のアクセラレータを備えたマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
ＣＭＯＳ半導体で製造されるマイクロプロセッサの消費電力は、クロックツリーやデータラインの電圧がハイレベルからローレベル、ローレベルからハイレベルへトグルする回数に比例して消費電力が増加する。つまり、動作クロックが高くなると単位時間あたりの消費電力も増加する。
【０００３】
近年、半導体の微細化製造技術の進歩により、マイクロプロセッサのクロック周波数が高くなってきており、それに伴い消費電力も増加傾向にある。携帯機器に用いるマイクロプロセッサは電池駆動される為、消費電力であるこいとが要求される。そこで、特許文献１に記載される如く、処理ブロック毎に動作してない処理ブロックのクロックを停止させ、処理を行う時にクロック供給をすることで、低消費電力化を図る技術が開示されている。例えば、中央演算装置、メモリ、専用ハードウェア処理部（例えば、動画再生専用ハードウェア処理部や、音楽再生専用ハードウェア処理部、三次元映像演算処理専用ハードウェア処理部など）、及びそれらを接続するバスによって組込み機器向けのマイクロプロセッサが構成されているとき、ソフトウェアを実行する中央処理装置によってハードウェア制御レジスタに制御データを設定することで、専用ハードウェア処理部の動作クロック周波数を所望の周波数に設定することが可能にされる。また、専用ハードウェア処理部を使用しない期間においては、専用ハードウェア処理部へ供給するクロックを停止させ、専用ハードウェア処理部の使用要求があった場合には、クロック供給を開始することで、低電力化を図ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−２５５０３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、前述の所望の専用ハードウェア処理部の動作クロック周波数は、所望の処理時間内にデータ処理を完了するという視点で設定される。前記動作クロック周波数の設定に関し、専用ハードウェア処理部で消費される電力量の大小を考慮して動作クロック周波数を設定することは行われていない。要するに、クロック周波数を低くしていくと徐々に消費電力が少なくなる場合だけでなく、他の回路の動作との関係によって、或いはデータ処理の内容に応じて、消費電力が途中で増大に転じたりする場合もあり、そのような事情を考慮してクロック周波数の設定を行うことについて従来は、考えられていなかった。
【０００６】
本発明は、上記課題を鑑みてなされたものであり、所要のデータ処理能力を満足するクロック周波数の範囲でデータ処理部による電力消費量が小さくなるようクロック周波数を制御することができる半導体装置を提供することを目的とする。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、中央処理装置の制御を受けてデータ処理を行うデータ処理部の消費電力を制御する電力制御部は、前記データ処理部に設定可能な範囲で動作クロック周波数における単位クロックサイクル当たりのデータ処理で消費する処理要素電流と単位クロックサイクル当たりのデータ非処理で消費するアイドル要素電流とのデータを格納する要素テーブルを有し、前記データ処理部に設定された動作クロック周波数に応じた処理要素電流とアイドル要素電流を前記要素テーブルから参照すると共に、前記データ処理部で周期的なデータ処理を行った際のデータ非処理時間とデータ処理時間を算出し、これに基づいて電力消費量を演算し、演算された電力消費量の変化に応じて、前記データ処理部に設定する動作クロック周波数を制御する。
【００１０】
データ処理時間とデータ非処理時間は、データ処理部に設定される動作クロック周波数に応じて変化の仕方が異なり、実際にどのように変化するかはデータ処理の内容や他の回路からの影響等によって相違され、その変化を一義的に予測することは困難である。このような事情の下で、実際にデータ非処理時間とデータ処理時間を算出して電力消費量を演算することによってその変化の傾向に即して動作クロック周波数の制御を行うことができる。
【発明の効果】
【００１１】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１２】
すなわち、所要のデータ処理能力を満足するクロック周波数の範囲でデータ処理部による電力消費量が小さくなるようにクロック周波数を制御でき、半導体装置の低消費電力化に資することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は本発明の半導体装置に係る第１の実施の形態であるマイクロプロセッサ１の構成を示すブロック図である。
【図２】図２は同期式デジタル回路の基本構成を例示する説明図である。
【図３】図３はデータ処理部でデータ処理を行った際のデータ処理を行っているクロックサイクルと、データ処理を行っていないクロックサイクルを示した説明図である。
【図４】図４は設定クロック周波数を変更した場合に処理周波数は変化せずに前記Ｉｄｌｅ周波数のみ変わる場合を示した説明図である。
【図５】図５は処理周波数も前記Ｉｄｌｅ周波数も変化する場合を示す説明図である。
【図６】図６はデータ処理部で消費される消費電流を図式化した第１の例を示す説明図である。
【図７】図７はデータ処理部で消費される消費電流を図式化した第２の例を示す説明図である。
【図８】図８は設定クロック周波数と処理周波数の関係を示した説明図である。
【図９】図９は設定クロック周波数と処理要素電流の関係を示した説明図である。
【図１０】図１０は設定クロック周波数の制御シーケンスを例示するフローチャートである。
【図１１】図１１は設定された要素電流テーブルの一例を示す説明図である。
【図１２】図１２は処理周波数テーブルの一例を示す説明図である。
【図１３】図１３は電力テーブルの一例を示す説明図である。
【図１４】図１４は第２の実施の形態におけるデコード種別（Ｉ／Ｂ／Ｐ−Ｐｉｃｔｕｒｅ）毎の設定クロック周波数と処理周波数の関係を示した処理周波数テーブルの説明図である。
【図１５】図１５は第３の実施の形態における第１データ処理部の処理中の期間とＩｄｌｅ中の期間、第２データ処理部の処理中の期間とＩｄｌｅの期間を示した説明図である。
【発明を実施するための形態】
【００１４】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係る半導体装置（１）は、中央処理装置(１３)と、前記中央処理装置の制御を受けてデータ処理を行うデータ処理部(１１，１２)と、前記データ処理部の消費電力を制御する電力制御部(１８)とを有する。前記電力制御部は、前記データ処理部に設定可能な範囲で動作クロック周波数における単位クロックサイクル当たりのデータ処理で消費する処理要素電流と単位クロックサイクル当たりのデータ非処理で消費するアイドル要素電流とのデータを格納する要素テーブル(１８３)を有し、前記データ処理部に設定された動作クロック周波数に応じた処理要素電流とアイドル要素電流を前記要素テーブルから参照すると共に、前記データ処理部で周期的なデータ処理を行った際のデータ非処理時間と区別されるデータ処理時間を算出し、それらに基づいて電力消費量を演算する電力消費量演算処理と、これによって演算された電力消費量の変化に応じて、前記データ処理部に設定する動作クロック周波数を制御する周波数制御処理と、を行う。
【００１６】
データ処理時間とデータ非処理時間は、データ処理部に設定される動作クロック周波数に応じて変化の仕方が異なり、実際にどのように変化するかはデータ処理の内容や他の回路からの影響等によって相違され、その変化を一義的に予測することは困難である。このような事情の下で、実際にデータ非処理時間とデータ処理時間を算出して電力消費量を演算することによってその変化の傾向に即して動作クロック周波数の制御を行うことができる。
【００１７】
特に、要素テーブルは処理要素電流とアイドル要素電流を格納するから、動作クロック周波数に応じて電源電圧も変更する場合には、電力消費量の演算には動作クロック周波数に応じて変更される電源電圧を用いればよい。
【００１８】
〔２〕本発明の別の実施の形態に係る半導体装置は、項１の要素テーブルに代えて、前記データ処理部に設定可能な範囲で動作クロック周波数における単位クロックサイクル当たりのデータ処理で消費する処理要素電力と単位クロックサイクル当たりのデータ非処理で消費するアイドル要素電力とのデータを格納する要素テーブルを採用する。この実施の形態において動作クロック周波数に応じて電源電圧も変更する場合、電力消費量の演算では動作クロック周波数に応じて変更される電源電圧を直接把握しなくてもよい。
【００１９】
〔３〕項１又は２の半導体装置において、前記電力制御部は、前記電力消費量演算処理及び周波数制御処理を繰り返すことによって前記演算された電力消費量が最も小さくなる動作クロック周波数を採用する。データ処理部に設定される動作クロック周波数に応じてデータ処理時間と区別されるデータ非処理時間の割合が相違されることによって、電力消費量が１次関数的に変化しても２次関数的に変化しても、その変化の態様に影響されることなく低消費電力にとって最適な動作クロック周波数を選択することができる。
【００２０】
〔４〕項３の半導体装置において、前記電力制御部は、前記電力消費量演算処理及び周波数制御処理によって動作クロック周波数を変更したとき、当該処理で得られた電力消費量及び動作クロック周波数を保持する電力テーブル(１８６)を有する。電力テーブルを利用することにより、演算された電力消費量の変化を把握が容易になる。
【００２１】
〔５〕項４の半導体装置において、前記電力制御部は、前記周波数制御処理では、電力消費量演算処理で演算された電力消費量と電力テーブルが保持する最新の電力消費量とを比較し(Ｓ６)、消費電力が減少しているときは増加又は減少の何れか一方に動作クロック周波数を変更する(Ｓ８)処理を、演算された消費電力が増加に転ずるまで所定回数繰り返す処理である。電力消費量が１次関数的に変化しても２次関数的に変化しても、その変化の態様に影響されることなく低消費電力にとって最適な動作クロック周波数を選択することができる。
【００２２】
〔６〕項１乃至５の何れかの半導体装置において、前記要素テーブルは前記中央処理装置によって初期設定される。
【００２３】
〔７〕項１乃至６の何れかの半導体装置において、前記電力制御部は、データ処理部による処理種別毎に前記電力消費量演算処理及び周波数制御処理を行なう。処理種別に応じて電力消費特性が変化したとき容易に対処することができる。
【００２４】
〔８〕項１乃至６の何れかの半導体装置において、前記電力制御部は、データ処理部による処理の単位時間毎に前記電力消費量演算処理及び周波数制御処理を行なう。刻々と変化する処理内容に応じて電力消費特性が変化したとき容易に対処することができる。
【００２５】
〔９〕項１乃至８の何れかの半導体装置において、前記電力制御部による周波数制御に応じて前記データ処理部の動作電源電圧を決定する電源回路（１０）を更に有する。更なる低消費電力化に資することができる。
【００２６】
２．実施の形態の詳細
《実施の形態１》
図１には本発明の半導体装置に係る第１の実施の形態としてマイクロプロセッサ１の構成が例示される。マイクロプロセッサ１は、中央処理装置（ＣＰＵ）１３、ＣＰＵ１３の指示に基づいてデータ処理を行うデータ処理部として例示された第１データ処理部１１及び第２データ処理部１２、ＣＰＵ１３などのワーク領域若しくはデータの一時記憶領域として用いられる内部メモリとしてのＳＤＲＡＭ１４、ＳＤＲＡＭのメモリ制御を行うＳＤＲＡＭ制御部１４Ａ、フラッシュメモリなどに代表される電気的に書き換え可能な不揮発性メモリ１５、クロック生成部１６、電源回路１０、電力制御部１８、そして外部入出力回路（ＩＯ）１９を有し、それらはバス１７を介してインタフェースされる。
【００２７】
クロック生成部１６は原発振に基づいてマイクロプロセッサ１の内部同期動作用のクロック信号ＣＫ，ＣＫ１，ＣＫ２を生成する。電源回路１０はマイクロプロセッサ１の内部動作用の電源電圧ＶＤＤ，ＶＤＤ１，ＶＤＤ２を出力する。第１データ処理部１１は電源電圧ＶＤＤ１を動作電源とし、クロック信号ＣＫ１に同期動作する。第２データ処理部１２は電源電圧ＶＤＤ２を動作電源とし、クロック信号ＣＫ２に同期動作する。ＣＰＵ１３は電源電圧ＶＤＤを動作電源とし、クロック信号ＣＫに同期動作する。特に図示はしないがその他の回路はＣＰＵ１３と同様に電源電圧ＶＤＤを動作電源とし、クロック信号ＣＫに同期動作する。電力制御回路１８はクロック制御回路１６と電源回路１０に制御信号１８７を与え、所要のデータ処理能力を満足するクロック周波数の範囲でデータ処理部１１，１２による電力消費量が小さくなるようにクロック周波数ＣＫ１，ＣＫ２を制御し、これに応じて電源電圧ＶＤＤ１，ＶＤＤ２を制御する。クロック信号ＣＫの周波数は一定とされる。以下の説明では、発明の理解を容易化するために電源電圧ＶＤＤ１，ＶＤＤ２は電源電圧ＶＤＤと同じ一定電圧であるとし、要所において、電源電圧ＶＤＤ１，ＶＤＤ２がクロック信号ＣＫ1、ＣＫ２の設定周波数に応じて変化される場合を例とした説明を加える。
【００２８】
第１データ処理部１１及び第２データ処理部１２は、データを処理する機能を有しており、例えば動画像や音楽データのエンコードデータ処理部であったり、デコードデータ処理部であったりする。ＣＰＵ１３は、ソフトウェアを動作させ、第１データ処理部１１、ＳＤＲＡＭ制御部１４Ａ、電力制御部１８等のマイクロプロセッサ１の内部回路に対する各種制御を行うと共に、ソフトウェア処理により音声復号や暗号化データの復号処理等を行う。
【００２９】
マイクロプロセッサ１の第１データ処理部１１やＣＰＵ１３等、各モジュールの多くの部分は同期式デジタル回路で構成されている。図２は同期式デジタル回路の基本構成を例示する。同期式デジタル回路は、フリップフロップ２１と組み合わせ論理回路２２、フリップフロップに供給されるクロックライン２３とデータを伝送するデータライン２４で構成される。同期式デジタル回路では、フリップフロップ２１とデータライン２４、クロックライン２３が論理値０から論理値１、又は論理値１から論理値０にトグルする際に電流が流れる為、電力消費が発生する。また、データライン２４がトグルすると、組み合わせ論理回路の内部でも論理値０／論理値１が変化して電力消費が発生する。
【００３０】
内部回路がデータ処理を行っている最中は、フリップフロップ２１と組み合わせ論理回路２２、データライン２４、クロックライン２３がトグルすることで電力消費が発生する。前記電力消費の消費量は、第１データ処理部１１及び第２データ処理部１２等のデータ処理部におけるデータライン本数や前記データラインの配線容量と配線抵抗、組み合わせ論理回路数や前記組み合わせ論理回路のトランジスタサイズ、クロックライン本数や前記ラインの配線容量と配線抵抗などに依存している。その消費電流値は電流解析ツールを用いて容易に解析することができる。例えば、マイクロプロセッサ１のデバイステストの工程で消費電流値の解析を行うことで、各データ処理部１１，１２の単位クロック周波数（例えば１ＭＨｚ）あたりの消費電流を解析して取得することが可能である。以降、データ処理を行っている最中の単位クロック周波数当たりの消費電流を、処理要素電流と呼ぶ。
【００３１】
次に、データ処理を行っていないときには、クロックライン２３のみが０から１、もしくは１から０へトグルし、電力消費が発生する。データ処理を行っていない時の消費電流においても電流解析ツールにより単位クロック周波数あたりの消費電流を解析することが可能であり、以降、データ処理を行っていないときの単位クロック周波数あたりの消費電流を、アイドル（Ｉｄｌｅ）要素電流と呼ぶ。
【００３２】
図３は、データ処理部１１，１２でデータ処理を行った際のデータ処理を行っているクロックサイクルと、データ処理を行っていないクロックサイクルを示した図である。例えば、動画像のデコード処理を行う際に、データ処理部に供給する設定クロック周波数を８０ＭＨｚとした場合、実際に処理が行われている時間が１秒あたりに１／８秒であった場合、クロックサイクル数で考えると８０ＭＨｚ＊１／８＝１０ＭＨｚ分であり、残りの７０ＭＨｚ分が処理を行っていない時間のクロックサイクル数となる。以降、前記処理を行っているサイクル数（１０ＭＨｚ分）を処理周波数と呼ぶ。また、前記処理を行っていないサイクル数（７０ＭＨｚ分）をアイドル（Ｉｄｌｅ）周波数と呼ぶ。
【００３３】
前記設定クロック周波数を変更した場合、前記処理周波数は変化せずに前記Ｉｄｌｅ周波数のみ変わる場合（図４）と、前記処理周波数も前記Ｉｄｌｅ周波数も変化する場合（図５）がある。
【００３４】
所望の処理を完了するには、クロック信号のトグル回数が何回必要であるかに依存し、前記処理周波数は、所望の処理を完了する為に必要な処理サイクル数を表している。データ処理がデータ処理部の内部で完結しており、データ処理部のクロックが単一クロックであれば、設定クロック周波数を変えても処理周波数が分らない場合がある（図４）。また、データ処理がデータ処理部の内部で完結せず、他のデータ処理部からのデータ待ちや、バスとのデータ送受信待ちを含んでいる場合やデータ処理部が２種類以上のクロック周波数で動作する場合、１つの設定クロック周波数を変更した場合に、処理周波数が増加もしくは減少する場合がある（図５）。設定クロック周波数を変えた場合、処理周波数が増加するか、減少するか、変化しないかはデータ処理部の特性や周辺で接続する回路とのデータ処理上の関係に依存する為、一義的に予想することは困難である。
【００３５】
図６及び図７は、データ処理部１１，１２で消費される消費電流を図式化したものであり、例えば第１データ処理部１１での消費電流を図式化したものである。
【００３６】
所望の処理を行っている期間に消費する電流は、“処理要素電流×処理周波数”であり、
所望の処理を行っていない期間に消費する電流は、“Ｉｄｌｅ要素電流×Ｉｄｌｅ周波数”である為、
第１データ処理部１１で消費される消費電流は、
消費電流（ｍＡ）＝処理要素電流×処理周波数＋Ｉｄｌｅ要素電流×Ｉｄｌｅ周波数…（式１）
となる。上記（式１）を図式化したものが図６である。
【００３７】
また、“設定クロック周波数＝処理周波数＋Ｉｄｌｅ周波数”である為、
消費電流（ｍＡ）＝Ｉｄｌｅ要素電流×設定クロック周波数＋（処理要素電流−Ｉｄｌｅ要素電流）×処理周波数…（式２）
となる。上記（式２）を図式化したものが図７である。
【００３８】
電力制御部１８は、前記消費電流を求める計算式（式１）（式２）に基づいて、最も消費電流が小さくなるようクロック信号ＣＫ１，ＣＫ２の設定クロック周波数を制御するものである。処理要素電流とＩｄｌｅ要素電流は、予め解析ツールを用いることで求めることが可能であるが、処理周波数及びＩｄｅｌ周波数は、前述のとおり予め求めることは困難であるため、データ処理部１１，１２などを実際に動作させて処理周波数及びＩｄｅｌ周波数を計測する。計算式（式２）を用いる場合には、ある設定クロック周波数における消費電流を求めるので、処理周波数が求められればよい。
【００３９】
図８は、設定クロック周波数と処理周波数の関係を示した図である。設定クロック周波数と処理周波数の関係を予想することは困難であるが、設定クロック周波数で一旦動作させてしまえば、処理周波数を計測することは可能である。例えば、固定ビットレートの音声データをデコードする処理など処理が一定の処理であれば、処理周波数は定常的な値となる。また、設定クロック周波数と処理周波数の関係は、データ処理部の処理内容毎に傾向がある。例えば、第１データ処理部１１は、設定クロック周波数を下げると処理周波数が下がる傾向があり、第２データ処理部１２は、設定クロック周波数を下げると処理周波数が上がる傾向があり、ＣＰＵ１３は、設定クロック周波数を下げても処理周波数は一定となる傾向がある、など、データ処理部毎に傾向が異なる場合がある。もしくは、傾向が一定でない場合もある。
【００４０】
図９は、設定クロック周波数と処理要素電流の関係を示した図である。設定クロック周波数と処理要素電流の関係は、データ処理部１１，１２の回路構成に依存しており、予めデータ処理部１１，１２で処理動作をさせた状態を解析ツールによって消費電力を解析することで、設定クロック周波数毎に処理要素電流を求めることができる。Ｉｄｌｅ要素電流も同様に解析ツールで解析することで、設定クロック周波数毎にＩｄｌｅ要素電流を求めることが可能である。
【００４１】
図１に示される電力制御部１８は、所要のデータ処理能力を満足する範囲のクロック周波数である設定クロック周波数に対して処理周波数とＩｄｌｅ周波数を演算する処理時間計算部１８１、前記設定クロック周波数に対して計算された処理周波数とＩｄｌｅ周波数を保持する処理周波数テーブル１８２、設定クロック周波数に対して予め解析された前記処理要素電流及びＩｄｌｅ要素電流を保持する要素電流テーブル１８３、及び制御信号１８７を生成するための制御を行う動作クロック制御部１８４を備える。動作クロック制御部１８４は、前記処理周波数テーブル１８２及び要素電流テーブル１８３を参照して消費電力を計算する電力計算部１８５、電力計算部１８５で演算された消費電力の履歴を設定クロック周波数と共に保持する電力テーブル１８６、及び電力計算部１８５で計算された消費電力を入力し電力テーブル１８６に保持されている消費電力を参照して、制御信号１８７を生成する制御ロジック部１８８を有する。なお、処理周波数テーブル１８２、要素電流テーブル１８３、電力テーブル１８６は、ＣＰＵ１３から読出しおよび書き込み可能なレジスタ群によって構成される。
【００４２】
前記制御ロジック部１８８によるクロック周波数制御の具体的な処理手順について説明する。図１０には第１データ処理部１１の設定クロック周波数を制御する場合を一例とした処理フローが示される。
【００４３】
ＣＰＵ１３から電力制御部１８に対して設定クロック周波数制御の開始が指示される（Ｓ１）。この指示を受けて電力制御部１８は、要素電流テーブルの設定が行われる（Ｓ２）。すなわち、ＣＰＵ１３から要素電流テーブル１８３に第１データ処理部１１の設定クロック周波数毎の処理要素電流とＩｄｌｅ要素電流が設定される。要素電流テーブル１８３は、第１データ処理部１１の設定可能クロック周波数が、例えば６０,８０，１００，１２０，１４０，１６０ＭＨｚであった場合、設定クロック周波数と、処理要素電流と、Ｉｄｌｅ要素電流を１セットとして設定可能クロック周波数毎にＣＰＵ１３から設定される。更に、設定クロック周波数毎に第１データ処理部１１の動作電圧を変更可能な場合は、前記要素電流テーブルに保存される設定クロック周波数、処理要素電流、Ｉｄｌｅ要素電流に動作電圧を加えて１セットとしてもよい。もしくは処理要素電流の代わりに処理要素電力（＝処理要素電流×動作電圧）、Ｉｄｌｅ要素電流の代わりにＩｄｌｅ要素電力（＝Ｉｄｌｅ電流×動作電圧）を保存してもよい。図１１は設定された要素電流テーブル１８３の一例である。前記処理要素電流とＩｄｌｅ要素電流は予め電流解析ツールにより求められた値である。
【００４４】
次にＣＰＵ１３から第１データ処理部１１に対して処理開始の指示が与えられ、第１データ処理部１１はデータ処理を行う（Ｓ３）。第１データ処理部１１は前記データ処理が完了するとＣＰＵ１３へ処理完了通知を伝える。ＣＰＵ１３は前記処理完了通知を受け、電力制御部１８へ処理時間を計算する指示を与える。その指示が与えられた処理時間計測部１８１は、第１データ処理部１１の処理時間、すなわち非処理時間と区別される処理時間の計測結果を、前記Ｉｄｌｅ周波数と区別される前記処理周波数へ変換を行い、変換した処理周波数を処理周波数テーブル１８２に設定する（Ｓ４）。前記処理時間の計測は、第１データ処理部１１内で処理開始から終了までかかったクロックサイクル数を計測し、前記計測値を処理時間計測部１８１が取得してもよいし、処理時間計測部１８１が処理開始と処理終了の通知を受け、前記通知間のクロックサイクル数をカウントしてもよい。後者の場合で第１データ処理部１１と電力制御部１８のクロック周波数が異なる場合は、電力制御部１８でのクロックサイクル数を第１データ処理部１１におけるクロックサイクル数に変換を行えばよい。前記処理周波数への変換は、例えば動画像のエンコードにおいて、３０フレーム／秒のエンコードの場合、約３３．３ｍｓ周期でエンコード処理を繰り返しており、前記処理時間の計測結果が、１０００サイクル、第１データ処理部１１の設定クロック周波数が１００ＭＨｚの場合であれば、処理時間は、“１０ｍｓ＝１０００サイクル×１／１００ＭＨｚ”であり、処理周波数は、“３０ＭＨｚ＝１０ｍｓ／３３．３ｍｓ×１００ＭＨｚ”となる。Ｉｄｌｅ周波数は、“７０ＭＨｚ＝（１００−３０）ＭＨｚ”となる。図１２には処理周波数テーブル１８２に設定された値の一例が示される。
【００４５】
前記処理周波数取得（Ｓ４）により、電流計算に用いるパラメータ（処理要素電流、Ｉｄｌｅ要素電流、設定クロック周波数、処理周波数）がそろい、前記処理における消費電流、更には消費電力を計算する（Ｓ５）。電力テーブル１８６には計算された前記消費電力と前記設定クロック周波数を保存する。設定クロック周波数に応じて、動作電源電圧が変更可能にされる場合には、前記消費電流に動作電圧を乗算して計算された消費電力が記憶される。電源電圧が一定の場合には図１３のように便宜的に消費電力に代えて消費電流を記憶させるようにしても差し支えない。図１３の電力テーブルの一例では、設定クロック周波数と消費電流の値が履歴として保持される。ここでは、“設定クロック周波数変更回数”は古い周波数設定ほど小さい値にされる。前記設定クロック変更回数が今回ｎ回目であれば、電力テーブル１８６に保存されている（ｎ−１）回目の計算結果と、今回の計算結果の比較が行われる（Ｓ６）。比較の結果、消費電力（消費電流）が減少していた場合、設定クロック周波数の変更が可能か否かの判別が行われる（Ｓ７）。設定クロック周波数を、さらに１段階上げる、もしくは下げることが可能であれば、設定クロック周波数をそのように変更し（Ｓ８）、再びデータ処理部の処理実行に戻ってデータ処理が行なわれる（Ｓ３）。
【００４６】
ステップＳ６の判別において消費電力（消費電流）比較において消費電力が増加していた場合、設定クロック周波数の変更方向を反転させる（Ｓ９）。例えば、これまで設定クロック周波数を増加させていたなら減少方向に、減少させていたのなら増加方向にし、ステップＳ３の処理に戻る。ただし、これまでに変更方向を反転させたことがあれば、次のシーケンスへ抜けて、設定クロック周波数の決定を行う（Ｓ１０）。ステップＳ１０の処理では、電力テーブル１８６に保存された最小電力値を検索し、最小電力値における設定クロック周波数をクロック生成部１６に設定する周波数として採用し、設定クロック周波数制御を終了する（Ｓ１１）。以降、ＣＰＵ１３から再び設定クロック周波数制御シーケンスが要求されるまで、第１データ処理部１１は、前記決定された設定クロック周波数で動作し続ける。
【００４７】
なお、設定クロック変更判定（Ｓ７）で変更可能か否かは、第１データ処理部１１の性能として設定可能の上限値より小さいか否か、もしくは、リアルタイム性を要求される処理では、処理時間が要求される時間内に完了しているか否かで下限値が決まる。このとき、ＣＰＵ１３から下限値の設定可能周波数が予め動作クロック制御部１８４に設定されていてもよいし、処理時間から推測してもよい。例えば、クロック周波数１００ＭＨｚのときに１０ｍｓで処理を完了している場合において、処理完了の要求時間：３３．３ｍｓ以内の場合、設定クロック周波数の下限値を、“３０ＭＨｚ＝（１０ｍｓ／３３．３ｍｓ）／（１／１００ＭＨｚ）”もしくは処理周波数が設定クロック周波数に依存する場合に２０％程度のマージンをもたせて３６ＭＨｚを下限値としてもよい。
【００４８】
上述の処理フローにおいて、最初に設定クロック周波数を最速の周波数に設定してクロック周波数制御を行ったときはステップＳ６の判別は無条件で消費電力減少とされるように制御され、例えばステップＳ８では周波数がダウンされ、続けて処理が繰り返されたとき、ある設定周波数で消費電力が増大に転じたときはステップＳ９によりクロックの周波数変更方向が一度も変更されていなければダウンからアップに変更され、その後、更にステップＳ３に戻って処理を繰り返し、再度ステップＳ６で同じ結果になることを条件にステップＳ１０の処理に移って設定クロック周波数を設定し、再度ステップＳ６で同じ結果にならずに消費電力が減少していたときはステップＳ８で周波数をアップし、再度ステップＳ３に戻って処理を繰り返し、ステップＳ６でやはり消費電力が増加していることが確認されたときはステップＳ１０の処理に移って設定クロック周波数を設定する。このような処理手順を採用することにより、周波数を下げていったときと途中で消費電力が増大に転ずる特性を有する場合に間違いなく消費電量が最も小さくなる周波数をデータ処理部１１に設定することができる。
【００４９】
また、周波数を下げていったときと消費電力が一次関数的に減少する特性を有する場合にはステップＳ７で周波数設定可能な範囲から逸脱することが判別されてステップＳ１０のクロック周波数設定処理に移行されるから、周波数の変化に対して消費電力が一次関数的に変化する特性を有する場合にも間違いなく消費電量が最も小さくなる周波数をデータ処理部１１に設定することができる。
【００５０】
前記消費電力の変化について、説明する。
【００５１】
まず、処理要素電流、Ｉｄｌｅ電流が設定クロック周波数に依存せず一定であり、処理周波数が設定クロック周波数に依存して変化するケースにおいて、設定クロック周波数を減少させると、以下の場合が考えられる。
（１）処理周波数が減少する場合には、
前記（式２）より、第１項、第２項とも減少し、全体として消費電流は減少する。
（２）処理周波数が一定である場合には、
前記（式２）より、第１項が一定で第２項が減少し、全体として消費電流は減少する。
（３）処理周波数が増加する場合には、
前記（式２）より、処理周波数の増加量：ｄ（処理周波数）、設定クロック周波数の減少量：ｄ（設定クロック周波数）とすると、
（３−１）；“ｄ（処理周波数）×（処理要素電流−Ｉｄｌｅ要素電流）−ｄ（設定クロック周波数）×Ｉｄｌｅ要素電流＝０”、である場合に消費電流の増減はない。
（３−２）；また、“ｄ（処理周波数）×（処理要素電流−Ｉｄｌｅ要素電流）−ｄ（設定クロック周波数）×Ｉｄｌｅ要素電流＞０”、である場合に消費電流は増加する。
（４）設定クロック周波数の変化量に対して処理周波数の変化が増加方向へ一定もしくは減少方向に一定とならないケースにおいては、消費電流の増加もしくは減少の一定方向にならない為、設定可能な設定クロック周波数をすべて設定して消費電流を計算し、前記計算結果から最小消費電流となる設定クロック周波数を設定してもよい。
【００５２】
次に、処理周波数、Ｉｄｌｅ電流が設定クロック周波数に依存せず一定であり、処理要素電流が設定クロック周波数に依存して変化するケースにおいて、設定クロック周波数を減少させると、以下の場合が考えられる。
（５）処理要素電流が減少する場合には、
前記（式２）より、第１項が減少し第２項が一定であり、全体として消費電流は減少する。
（６）処理要素電流が一定である場合には、
前記（式２）より、第１項が一定で第２項が減少し、全体として消費電流は減少する。
（７）処理要素電流が増加する場合には、
前記（式２）より、処理要素電流の増加量：ｄ（処理要素電流）、設定クロック周波数の減少量：ｄ（設定クロック周波数）とすると、
（７−１）；“処理周波数×（ｄ（処理要素電流）−Ｉｄｌｅ要素電流）−ｄ（設定クロック周波数）×Ｉｄｌｅ要素電流＝０”、である場合に消費電流の増減はない。
（７−２）；また、“処理周波数×（ｄ（処理要素電流）−Ｉｄｌｅ要素電流）−ｄ（設定クロック周波数）×Ｉｄｌｅ要素電流＞０”、である場合、消費電流は増加する。
（８）設定クロック周波数の変化量に対して処理要素電流の変化が増加方向に一定もしくは減少方向に一定とならないケースにおいては、消費電流の増加もしくは減少の一定方向にならない為、設定可能な設定クロック周波数をすべて設定して消費電流を計算し、前記計算結果から最小消費電流となる設定クロック周波数を設定してもよい。このとき、処理周波数が変化しない条件である為、実際に動作させる必要はない。
【００５３】
処理周波数が（１）もしくは（２）もしくは（３−１）、かつ処理要素電流が（７−２）となる傾向がある場合、消費電流の増減が複雑な動きをする場合があり、設定可能な設定クロック周波数をすべて設定して消費電流を計算し、前記計算結果から最小消費電流となる設定クロック周波数を設定してもよい。
【００５４】
また、処理周波数が（３−２）、かつ処理要素電流が（５）もしくは（６）もしくは（７−１）である場合も消費電流の増減が複雑な動きをする場合があり、設定可能な設定クロック周波数をすべて設定して消費電流を計算し、前記計算結果から最小消費電流となる設定クロック周波数を設定してもよい。
【００５５】
さらに、処理周波数の傾向や処理要素電流の傾向を考慮せずに設定可能な設定クロック周波数をすべて設定して消費電流を計算し、前記計算結果から最小消費電流となる設定クロック周波数を設定してもよい。
【００５６】
なお、要素電流テーブル設定（Ｓ２）において、処理要素電流、Ｉｄｌｅ要素電流は、電流解析ツールも用いて消費電流値の解析を行った値を例に説明したが、マイクロプロセッサ１を用いたシステムの開発を行うフェーズにおいて、実際にマイクロプロセッサ１内部の第１データ処理部１１のみを動作させて消費電流を実測し、実測した値を処理要素電流、Ｉｄｌｅ要素電流としてＣＰＵ１３から要素電流テーブル１８３に設定する動作としてもよい。
【００５７】
《実施の形態２》
次に、本発明の第２の実施の形態について説明する。
【００５８】
第１の実施の形態では、同一設定クロック周波数であれば処理周波数が一定である場合について説明してきたが、第２の実施の形態では、例えば動画像デコード処理のように、同一設定クロック周波数であっても、フレーム毎に処理周波数が異なる場合について説明する。
【００５９】
例えば、（４ｎ−３）枚目がＩ−Ｐｉｃｔｕｒｅ、（４ｎ−２）枚目がＰ−Ｐｉｃｔｕｒｅ、（４ｎ−１）、４ｎ枚目がＢ−Ｐｉｃｔｕｒｅ、（ｎ：自然数）となる周期のデコードを行う場合を例に説明する。
【００６０】
図１４は、デコード種別（Ｉ／Ｂ／Ｐ−Ｐｉｃｔｕｒｅ）毎の設定クロック周波数と処理周波数の関係を示しており、動画像デコード時の処理周波数テーブル１８２に保存されるデータの一例である。また、例えばデコード種別内でも処理周波数にばらつきがある場合、平均値をテーブルに持ってもよいし、最大値を持ってもよい。
【００６１】
デコード種類毎に第１の実施の形態で説明した図１０の処理を行い、デコード種類毎に最小電力となる設定クロック周波数を決定する。動画像デコードを行う前に、データ解析を行うことでデコード種別を判定すれば、予めデコード種別を知り、設定クロック周波数を制御することが可能である。これにより、フレーム毎に電力が最小となる設定クロック周波数を設定する制御を行うことで、省電力化を行う。
【００６２】
ここまでデコード種別を判定してフレーム単位で制御可能な場合で説明したが、これに限定するものではない。データ処理をミクロに見ると処理周波数の変動が激しいが、マクロにみると処理周波数は一定であることが多い。例えばフレーム単位の制御が困難な場合においては、単位時間毎（例えば１秒毎）に第１の実施例を実施してもよい。具体的には、１秒間の処理周波数を算出して消費電力を計算し、設定クロック周波数を設定して、最小電力となる制御を行ってもよい。
【００６３】
《第３の実施の形態》
次に、本発明の第３の実施形態について説明する。
【００６４】
第１の実施の形態では、データ処理部毎にクロック周波数を設定する場合について説明したが、第３の実施の形態ではクロック生成部１６から第１データ処理部１１と第２データ処理部１２へ供給されるクロックが同一であり、クロック周波数を変更すると、第１データ処理部１１及び第２データ処理部１２で共に変更される場合について説明する。
【００６５】
図１５は、第１データ処理部１１の処理中の期間とＩｄｌｅ中の期間、第２データ処理部１２の処理中の期間とＩｄｌｅの期間を示した一例である。例えば動画再生時に、第１データ処理部１１が音声データ再生用データ処理部であり、第２データ処理部１２が動画再生用データ処理部の場合について説明する。音声データの処理周期と動画の処理周期は関連がなく、例えば音声データは１００ミリ秒毎に処理を行い、動画データは約１６．７ミリ秒毎に処理を行う場合、各周期の最小公倍数である約１６７０ミリ秒間の各々の動作時間とＩｄｌｅ時間を計測し加算することで、平均動作時間、Ｉｄｌｅ時間を算出可能となる。
【００６６】
上記から第１データ処理部１１と第２データ処理部１２の、
“処理周波数＝  平均動作時間  ／計測期間×設定クロック周波数”
“Ｉｄｌｅ周波数＝平均Ｉｄｌｅ時間／計測期間×設定クロック周波数”
を求め、第１データ処理部１１と第２データ処理部１２の消費電力の和に対して第１の実施の形態で示したクロック周波数制御を行う。
【００６７】
上記処理手順は図７に示したフローとほぼ同一であり、ステップＳ２，Ｓ４，Ｓ５の処理が相違されるだけであり、その他のステップの処理が同じである。相違点のみ説明する。
【００６８】
ステップＳ２における要素電流テーブルの設定処理では、第１データ処理部１１と第２データ処理部１２共に設定する。
【００６９】
ステップＳ４における処理周波数取得処理では、処理時間計測部１８１が第１データ処理部１１の処理時間とＩｄｌｅ時間の和である第１データ処理部処理周期と、第２データ処理部１２の処理時間とＩｄｌｅ時間の和である第２データ処理部処理周期から、前記周期の最小公倍数となる値の間、各々の処理時間を加算して各々の処理周波数を求める。また、処理周波数を求める期間は、ＣＰＵ１３から設定してもよい。
【００７０】
ステップＳ５における消費電力計算処理では、第１の実施の形態における消費電力計算を各々で行い、加算する。
【００７１】
第３の実施の形態では、データ処理部が２個の場合について説明したが、これに限定するものでなく、２個以上であっても同じである。
【００７２】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７３】
例えば、電力制御部が行う電力消費量演算処理は直接消費電力制御を行わなくても良い場合がある。例えば電源電圧一定の場合には消費電流量を演算すればそれ以降の設定周波数決定では電力消費量を演算したのと同様の結果を得ることができる。したがって、電源電圧一定の場合における消費電流量を演算する処理には、上記電力消費量演算処理が内在される。データ処理部の数は単数であってもよいし、２以外の複数であってもよい。半導体装置はシングルチップの半導体集積回路であってもよいし、モジュール基板にマルチチップを実装してモールドしたモジュールデバイスであってもよい。
【符号の説明】
【００７４】
１…マイクロプロセッサ
１０…電源回路
ＶＤＤ，ＶＤＤ１，ＶＤＤ２…電源電圧
１１…第１データ処理部
１２…第２データ処理部
１３…ＣＰＵ
１４…ＳＤＲＡＭ制御部
１５…ＳＤＲＡＭ
１６…クロック生成部
ＣＫ，ＣＫ１，ＣＫ２…クロック信号
１７…バス
１８…電力制御部
１８１…処理時間計測部
１８２…処理周波数テーブル
１８３…要素電流テーブル
１８４…動作クロック制御部
１８５…電力計算部
１８８…制御ロジック部
１８６…電力テーブル
２１…フリップフロップ
２２…組み合わせ論理回路
２３…クロックライン
２４…データライン
【図１】
2011018163.tif 000003
【図２】
2011018163.tif 000004
【図３】
2011018163.tif 000005
【図４】
2011018163.tif 000006
【図５】
2011018163.tif 000007
【図６】
2011018163.tif 000008
【図７】
2011018163.tif 000009
【図８】
2011018163.tif 000010
【図９】
2011018163.tif 000011
【図１０】
2011018163.tif 000012
【図１１】
2011018163.tif 000013
【図１２】
2011018163.tif 000014
【図１３】
2011018163.tif 000015
【図１４】
2011018163.tif 000016
【図１５】
2011018163.tif 000017