(57)【要約】【課題】ソフトウェアの実行時に、集積回路装置に含まれる各機能ブロックの動作状態を好ましい状態に制御することを可能とすること。【解決手段】集積回路装置１は、複数の機能ブロック２、観測部３およびカウンタ部４を備えている。各機能ブロック２は、集積回路装置１がソフトウェアを実行する際に、独立して電力状態を制御される。観測部３は、各機能ブロック２の動作状態を観測する。カウンタ部４は、観測部３から各機能ブロック２の動作状態の情報を集約する。ソフトウェアの開発者は、カウンタ部４から、ソフトウェアを実行したときの各機能ブロック２の動作状態と電力状態の情報を取得する。ソフトウェアの開発者は、取得した情報に基づいて、集積回路装置１がソフトウェアを実行する際の消費電力が少なくなるように、ソフトウェアをチューニングすることができる。【選択図】図１
2011096117.tif 000002
【特許請求の範囲】
【請求項１】
独立して電力状態が制御される複数の機能ブロックと、
該各機能ブロックの動作状態を観測する観測部と、
該観測部から該各機能ブロックの動作状態の情報を集約するカウンタ部と、
を備えることを特徴とする集積回路装置。
【請求項２】
前記観測部は、前記各機能ブロックの有限状態遷移機械の状態を解析する解析部、を備えることを特徴とする請求項１に記載の集積回路装置。
【請求項３】
前記観測部は、ソフトウェアの実行中の前記各機能ブロックの電力状態を検出する検出部、を備えることを特徴とする請求項２に記載の集積回路装置。
【請求項４】
前記カウンタ部は、ソフトウェアの実行中の前記各機能ブロックの動作量をカウントすることを特徴とする請求項１〜３のいずれか一つに記載の集積回路装置。
【請求項５】
前記カウンタ部に対してカウントの開始および停止、並びにカウント値の読み出しを制御する制御部、を備えることを特徴とする請求項４に記載の集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、集積回路装置に関する。
【背景技術】
【０００２】
従来、低消費電力化が実現できる演算装置の消費電力低減システムが知られている。そのようなシステムの一つとして、例えば、クロック制御ブロックが、機能ブロックの機能演算ブロックに対してゲーティドクロックを供給し、ゲーティドクロックを機能演算ブロックごとに停止させるようにしたシステムがある（例えば、特許文献１参照。）。また、プロセッサの低消費電力動作をユーザがきめ細かく定義でき、かつイベントドリブン方式を実現した電力制御装置が知られている。そのような装置の一つとして、例えば、各々電力制御情報を書き換え可能に記憶するための複数の電力制御レジスタを備えたパワーテーブルと、複数の動作条件（例えばプログラムカウンタに対する比較アドレス）を書き換え可能に記憶し、プロセッサの現在の動作が当該複数の動作条件のいずれを満たすかを判定し、当該判定の結果に応じて複数の電力制御レジスタのいずれかを選択するようにインデックス信号を供給するための条件判定器と、インデックス信号により選択された電力制御レジスタ中の電力制御情報に従って制御対象回路ブロックの消費電力を制御するための電圧・クロックコントローラとを有する装置がある（例えば、特許文献２参照。）。また、マイクロコンピュータの実使用状態に基づいた消費電力を予測する機能を有したソフトウエア開発支援装置が知られている。そのような装置の一つでは、例えば、デバッグ環境を提供するエミュレート部は、マイクロコントローラユニット（ＭＣＵ）を搭載したマイクロコントローラシステムに接続されプログラムの実行等を制御する。プログラムの実行中、ロギング部はＭＣＵの有する主要な機能（ＣＰＵ高速動作モード等）の動作開始時刻と動作終了時刻とを順次記録する。消費電力データテーブルには、ロギングされる機能の消費電力データが予め記憶されている。演算部は、マイクロコントローラシステムの動作終了後、ロギングデータを基に各機能が動作した積算時間を求め、各機能の消費電力データと掛け算することによりＭＣＵの消費電力を求める（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−７０７３７号公報
【特許文献２】特開２００２−１８２８０７号公報
【特許文献３】特開平１１−３３８７４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、ソフトウェアの開発段階において、集積回路装置でソフトウェアが実行されたときの集積回路装置の動作を、集積回路装置に含まれる機能ブロックごとに把握することは困難である。そのため、ソフトウェアの実行時に、集積回路装置に含まれる各機能ブロックの動作状態を好ましい状態に制御することは困難である。
【０００５】
ソフトウェアの実行時に、集積回路装置に含まれる各機能ブロックの動作状態を好ましい状態に制御することを可能とする集積回路装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この集積回路装置は、複数の機能ブロック、観測部およびカウンタ部を備える。各機能ブロックは、独立して電力状態を制御される。観測部は、各機能ブロックの動作状態を観測する。カウンタ部は、観測部から各機能ブロックの動作状態の情報を集約する。
【発明の効果】
【０００７】
この集積回路装置によれば、ソフトウェアの実行時に、集積回路装置に含まれる各機能ブロックの動作状態を好ましい状態に制御することを可能とすることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】実施例１にかかる集積回路装置を示すブロック図である。
【図２】実施例２にかかる集積回路装置を示すブロック図である。
【図３】実施例２にかかる観測部を示すブロック図である。
【図４】実施例２にかかる機能ブロックの一例を示すブロック図である。
【図５】実施例２にかかる有限状態遷移機械の一例を示す説明図である。
【図６】実施例２にかかる有限状態遷移機械の状態と機能ブロックの動作状態との関係の一例を示す説明図である。
【図７】実施例２にかかるコマンドの動きに対する動作の遷移の一例を示すタイムチャートである。
【図８】実施例２にかかるカウンタ部の一例を示すブロック図である。
【図９】実施例２にかかる集積回路装置を用いたソフトウェアの改変手順の一例を示すフローチャートである。
【図１０】実施例２にかかる改変対象のソフトウェアのアルゴリズムの一例を示すフローチャートである。
【図１１】実施例２にかかる動作情報の一例を示す説明図である。
【図１２】実施例２にかかる電力状態の一例を示す説明図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この集積回路装置の好適な実施の形態を詳細に説明する。
【００１０】
（実施例１）
図１は、実施例１にかかる集積回路装置を示すブロック図である。図１に示すように、集積回路装置１は、例えばＡ〜Ｆの複数の機能ブロック２、観測部３およびカウンタ部４を備えている。各機能ブロック２は、集積回路装置１がソフトウェアを実行する際に、独立して電力状態を制御される。観測部３は、各機能ブロック２の動作状態を観測する。カウンタ部４は、観測部３から各機能ブロック２の動作状態の情報を集約する。図１に示す例では、各機能ブロック２にそれぞれ観測部３が設けられているが、２個以上の機能ブロック２に対して１個の観測部３が共通に設けられていてもよい。なお、図１においては、観測部３とカウンタ部４との接続関係が実線で示されている（図２においても同じ）。機能ブロック２間の接続関係および機能ブロック２と集積回路装置１の外部との接続関係は破線で示されている（図２においても同じ）。
【００１１】
実施例１によれば、集積回路装置１でソフトウェアを実行すると、カウンタ部４に各機能ブロック２の動作状態が集約される。従って、カウンタ部４を参照することによって、集積回路装置１がソフトウェアを実行するときの各機能ブロック２の動作状態の情報が得られる。例えばソフトウェアの開発段階において、集積回路装置１で開発途中のソフトウェアを実行すると、各機能ブロック２の動作状態の情報が得られる。その情報には、例えば、ある処理を行う際に、ある機能ブロックが低電力状態ではないのに余り動作していない、というような情報が含まれることがある。ソフトウェアの開発者は、このような情報を得て、該情報に基づいてソフトウェアを改変することができる。例えば、ソフトウェアの開発者は、処理ごとに各機能ブロックの電力状態が当該機能ブロックの動作状態に適した状態になるように、開発途中のソフトウェアに電力状態を指示するコードを挿入することができる。従って、ソフトウェアの開発者は、集積回路装置１を用いて開発途中のソフトウェアを実行することによって、各機能ブロック２の電力状態を動作状態に適した好ましい状態に制御することが可能な最終的なソフトウェアを開発することができる。開発段階において各機能ブロックの動作状態の情報が得られない場合には、ソフトウェアの開発者は、各機能ブロックの電力状態を制御する情報を有していないため、各機能ブロックの動作状態に適した電力状態のソフトウェアを開発することは困難である。実施例１によれば、各機能ブロックの動作状態に適した電力状態のソフトウェアを開発することができる。このようにして開発したソフトウェアを汎用プロセッサや組み込み機器用のプロセッサで実行することにより、汎用プロセッサや組み込み機器用のプロセッサの消費電力を削減することができる。
【００１２】
（実施例２）
図２は、実施例２にかかる集積回路装置を示すブロック図である。図２に示すように、集積回路装置１１は、例えばＡ〜Ｅの複数の機能ブロック１２、観測部１３、カウンタ部１４および制御部（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５を備えている。制御部１５は、機能ブロックの一種である。制御部１５は、カウンタ部１４に対してカウントの開始および停止を制御する。制御部１５は、カウンタ部１４に対してカウント値の読み出しを制御する。また、集積回路装置１１は、機能ブロックの一種として、外部との入出力インタフェース（ＩＯ）を備えている。例えば、入出力インタフェースにも観測部１６が設けられている。
【００１３】
機能ブロック１２、制御部１５および入出力インタフェースは、ＣＰＵが実行するソフトウェアによって電力状態を制御される単位である。すなわち、各機能ブロック１２、制御部１５および各入出力インタフェースごとに電力状態が制御される。例えば、各機能ブロック１２、制御部１５および各入出力インタフェースには、クロックゲーティング技術やパワーゲーティング技術やＤＶＦＳ（Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ、動的電圧・周波数スケーリング）技術が適用されている。機能ブロック１２、機能ブロックとしての制御部１５、観測部１３，１６およびカウンタ部１４のその他については、実施例１と同様である。
【００１４】
図３は、実施例２にかかる観測部を示すブロック図である。図３に示すように、観測部１３は、解析部２１および検出部２２を備えている。解析部２１は、機能ブロック１２の有限状態遷移機械（ＦＳＭ：Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）２３の状態を解析する。解析部２１は、機能ブロック１２の動作状態として有限状態遷移機械２３の状態を出力する。検出部２２は、集積回路装置１１でソフトウェアを実行しているときの機能ブロック１２の電力状態を検出する。検出部２２は、低電力モードとして機能ブロック１２の電力状態を出力する。入出力インタフェースの観測部１６についても同様である。
【００１５】
図４は、実施例２にかかる機能ブロックの一例を示すブロック図である。機能ブロックの一例として、例えばバスブリッジ部が挙げられる。図４には、機能ブロックがバスブリッジ部である場合の例が示されている。バスブリッジ部３１は、モジュールＧ３２とモジュールＨ３３との間でバスの仲介（橋渡し）をする。図４に示すように、例えばバスブリッジ部３１は、モジュールＧ３２からデータのリード要求を受け付け、モジュールＨ３３へデータのリード要求を渡す。例えばバスブリッジ部３１は、モジュールＨ３３からデータの返送を受け付け、モジュールＧ３２へデータを返送する。
【００１６】
図５は、実施例２にかかる有限状態遷移機械の一例を示す説明図である。図５に示すように、例えばバスブリッジ部３１の場合、有限状態遷移機械２３の状態には、アイドル（Ｉｄｌｅ）、コマンド（Ｃｏｍｍａｎｄ）、ウェイト（Ｗａｉｔ）およびデータ（Ｄａｔａ）の状態がある。
【００１７】
図６は、実施例２にかかる有限状態遷移機械の状態と機能ブロックの動作状態との関係の一例を示す説明図である。図６の図表４１に示すように、例えばバスブリッジ部３１の場合、バスブリッジ部３１がアイドル状態にあるときに有限状態遷移機械２３はアイドル状態となる。バスブリッジ部３１が動作中の状態にあるときには、有限状態遷移機械２３はコマンド、ウェイトおよびデータのいずれかの状態となる。換言すれば、有限状態遷移機械２３がコマンド、ウェイトおよびデータのいずれかの状態にあるときには、バスブリッジ部３１は動作中である。
【００１８】
図７は、実施例２にかかるコマンドの動きに対する動作の遷移の一例を示すタイムチャートである。図７には、一例として、図４に示す構成においてモジュールＧ３２がモジュールＨ３３からデータを読み出す場合のタイムチャート４２が示されている。図７に示すように、モジュールＧ３２からのリード要求があるまで、有限状態遷移機械２３はアイドル状態にある。この状態では、バスブリッジ部３１はアイドル状態である。バスブリッジ部３１がモジュールＧ３２からのリード要求を受け付けると、有限状態遷移機械２３はコマンド状態となる。バスブリッジ部３１は動作中となる。バスブリッジ部３１がモジュールＨ３３へリード要求を渡すと、有限状態遷移機械２３はウェイト状態となる。バスブリッジ部３１は動作中のままである。バスブリッジ部３１がモジュールＨ３３からデータの返送を受け付けると、有限状態遷移機械２３はデータ状態となる。バスブリッジ部３１は動作中のままである。バスブリッジ部３１がモジュールＧ３２へデータを返送すると、有限状態遷移機械２３はアイドル状態となる。バスブリッジ部３１はアイドル状態となる。なお、有限状態遷移機械２３の状態の種類および状態が遷移する事象は、図５〜図８に示す例に限らない。
【００１９】
図８は、実施例２にかかるカウンタ部の一例を示すブロック図である。図８に示すように、カウンタ部１４は、カウンタ５１および電力モードの格納部５２を備えている。カウンタ５１および電力モードの格納部５２は、各観測部１３，１６ごと、すなわち観測対象の機能ブロックごとに設けられている。カウンタ５１は、ソフトウェアの実行中の機能ブロックの動作量をカウントする。カウンタ５１は、制御部１５の制御によって、カウントの開始および停止を行う。カウンタ５１のカウント値の読み出しは、制御部１５により制御される。カウンタ５１は、制御部１５の制御によって、カウント値を出力する。電力モードの格納部５２は、ソフトウェアの実行中の機能ブロックの電力状態を格納する。電力モードの格納部５２は、制御部１５の制御によって、格納している電力状態を出力する。
【００２０】
実施例２にかかる集積回路装置１１の適用例として、例えばソフトウェアの開発段階において、オリジナルのソフトウェアを実行させる装置が挙げられる。集積回路装置１１でオリジナルのソフトウェアを実行させることによって、集積回路装置１１が該ソフトウェアを実行したときの集積回路装置１１の各機能ブロック１２、制御部１５および入出力インタフェースの動作状態や電力状態の情報が得られる。ソフトウェアの開発者は、得られた情報に基づいて、オリジナルのソフトウェアを低電力版のソフトウェアに改変することができる。オリジナルのソフトウェアは、十分に低電力化されていない。以下に、ソフトウェアの改変手順について説明する。
【００２１】
図９は、実施例２にかかる集積回路装置を用いたソフトウェアの改変手順の一例を示すフローチャートである。図９に示すように、まず、ソフトウェアの開発者は、オリジナルのソフトウェア６１を用意する。そして、ソフトウェアの開発者は、オリジナルのソフトウェア６１に測定ポイントを埋め込む（ステップＳ１）。ソフトウェアの開発者は、ソフトウェア上意味のある単位ごとに測定ポイントを設定してもよい。ソフトウェア上意味のある単位の一例として、例えば関数の区切りが挙げられる。ソフトウェアの開発者は、例えばソフトウェア上意味のある単位の開始時点および終了時点にそれぞれ各カウンタ５１のカウントを開始させるコードおよび停止させるコードを埋め込む。このようにして、オリジナルのソフトウェア６１に測定ポイントが埋め込まれた測定用のソフトウェア６２が得られる。
【００２２】
次いで、ソフトウェアの開発者は、実施例２にかかる集積回路装置１１で測定用のソフトウェア６２を実行する。それによって、各カウンタ５１は、測定ポイントの開始時点でカウントを開始し、測定ポイントの終了時点でカウントを停止する。そして、当該測定ポイントにおける各機能ブロック１２、制御部１５および各入出力インタフェースの動作状態や電力状態の情報が得られる（ステップＳ２）。測定ポイントを複数設定する場合には、ステップＳ１に戻り、オリジナルのソフトウェア６１に別の測定ポイントが埋め込まれる。そして、測定用のソフトウェア６２の実行により、該別の測定ポイントにおける各機能ブロック１２、制御部１５および各入出力インタフェースの動作状態や電力状態の情報が得られる。
【００２３】
全ての測定ポイントについてステップＳ１およびステップＳ２を繰り返すことによって、各機能ブロックの動作情報６３が得られる。各機能ブロックの動作情報６３には、全ての測定ポイントについて、各機能ブロック１２、制御部１５および各入出力インタフェースの動作状態や電力状態の情報が含まれている。ソフトウェアの開発者は、各機能ブロックの動作情報６３に基づいて、オリジナルのソフトウェア６１のいずれの測定ポイントにおいていずれの機能ブロック１２、制御部１５および入出力インタフェースの電力状態を変更することができるかを判断することができる。従って、ソフトウェアの開発者は、その判断結果に基づいて、オリジナルのソフトウェア６１の適当な箇所に電力状態を制御するプログラムコードを挿入する処理を行い、ソフトウェアを改変する（ステップＳ３）。それによって、オリジナルのソフトウェア６１よりも消費電力の少ない低電力版のソフトウェア６４が得られる。
【００２４】
図１０は、実施例２にかかる改変対象のソフトウェアのアルゴリズムの一例を示すフローチャートである。図１０に示すように、このアルゴリズムの例では、例えばユーザーからの入力処理（ステップＳ１１）の後に、処理１（ステップＳ１２）、処理２（ステップＳ１３）、処理３（ステップＳ１４）および処理４（ステップＳ１５）が順次実施される。最後に入出力処理（ＩＯ処理）（ステップＳ１６）が実施されて、ステップＳ１１に戻る。測定用のソフトウェア６２においては、処理１、処理２、処理３および処理４のそれぞれについて、処理の先頭にカウント開始指示７１が埋め込まれ、処理の末尾にカウント停止指示７２が埋め込まれる。例えば、処理１から処理４までは、動画データを処理する。動画データの処理の一例として、例えば圧縮画像データを展開して表示する処理が挙げられる。
【００２５】
図１１は、実施例２にかかる動作情報の一例を示す説明図である。図１２は、実施例２にかかる電力状態の一例を示す説明図である。例えば図１０に示すソフトウェアを実施例２にかかる集積回路装置１１で実行した結果、図１１の図表８１に示す結果が得られたとする。図１１の図表８１には、「測定対象時間」というフィールドが設けられている。各処理における測定対象時間は、例えば集積回路装置１１の図示省略した時計機能やタイマー機能などにより計測される。図１１の図表８１における電力モードと具体的な動作状態との関係の一例が図１２の図表８２に示されている。モード１は、パワーゲーティングされた深い低電力状態である。モード２は、ＤＶＦＳにより電圧・周波数を落としたやや深い低電力状態である。モード３は、クロックを停止された浅い低電力状態である。モード４は、フルスピードの状態である。低電力状態が深くなるほど、より消費電力が少なくなり、低電力状態が浅くなるほど、より消費電力が多くなる。
【００２６】
図１１に示すように、処理４において機能Ａのカウント値は０である。従って、処理４において機能Ａは、何も処理を行っていない。それにもかかわらず、処理４において機能Ａは、低電力状態でない。従って、ソフトウェアの開発者は、図１１の図表８１に基づいて、処理４において機能Ａをパワーゲーティングなどの深い低電力状態にするのがよいと判断することができる。処理３において機能Ａは重い処理を行っているので、例えば処理３において機能Ａをモード４とし、処理４を実行する直前にモード１に遷移させるのがよいということがわかる。また、処理３および処理４において機能Ｂは、軽い処理を行っている。それにもかかわらず、処理３および処理４において機能Ｂは、低電力状態でない。従って、ソフトウェアの開発者は、図１１の図表８１に基づいて、処理３および処理４において機能Ｂを動作周波数の低減などのやや深い低電力状態にするのがよいと判断することができる。処理２において機能Ｂはやや重い処理を行っているので、例えば処理２において機能Ｂをモード３とし、処理３を実行する直前にモード２に遷移させるのがよいということがわかる。
【００２７】
実施例２によれば、実施例１と同様の効果が得られる。また、測定ポイントごとに測定対象時間の情報が得られるので、次のような効果が得られる。例えば、ある処理におけるある機能ブロックの電力状態をより深い低電力状態に設定し直すのがよいということと、測定対象時間の情報から該処理に要する時間が短いということがわかったとする。この場合、深い低電力状態への遷移および深い低電力状態からの復帰に時間がかかるため、ソフトウェアの開発者は、集積回路装置のパフォーマンスを低下させないようにするには、深い低電力状態に設定し直さない方が好ましい、という判断をすることができる。なお、実施例１および実施例２において、各機能ブロックおよび制御部をそれぞれ独立した半導体チップとし、該半導体チップを回路基板に実装した装置についても、本発明を適用することができる。
【符号の説明】
【００２８】
１，１１  集積回路装置
２，１２  機能ブロック
３，１３，１６  観測部
４，１４  カウンタ部
１５  制御部
２１  解析部
２２  検出部
２３  有限状態遷移機械
【図１】
2011096117.tif 000003
【図２】
2011096117.tif 000004
【図３】
2011096117.tif 000005
【図４】
2011096117.tif 000006
【図５】
2011096117.tif 000007
【図６】
2011096117.tif 000008
【図７】
2011096117.tif 000009
【図８】
2011096117.tif 000010
【図９】
2011096117.tif 000011
【図１０】
2011096117.tif 000012
【図１１】
2011096117.tif 000013
【図１２】
2011096117.tif 000014