(57)【要約】【課題】本発明の課題は、組み込みシステムのアーキテクチャに左右されることなく、ＤＶＦＳの実行に必要なサイクル数を容易に取得することである。【解決手段】ファームウェア（２１）は、サイクル数概算ルーチン（２１３）と、動作電圧・周波数算出ルーチン（２１３）とを有する。サイクル数概算ルーチンは、サイクル数概算関数を備える。サイクル数概算関数は、ユーザ回路（６）の処理内容を決定づける属性パラメータの入力でタスクのサイクル数を概算する。動作電圧・周波数算出ルーチンは、サイクル数概算ルーチンの実行によって得られたサイクル数に基づいて、ユーザ回路（６）の目標動作電圧・周波数を算出する。【選択図】図４
2013088892.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路と、
前記半導体集積回路の動作電圧・周波数を動的に制御する制御部と、
ファームウェアを格納している記憶部と、
前記制御部の目標値となる前記半導体集積回路の目標動作電圧・周波数を前記記憶部の前記ファームウェアに従って算出し、当該算出した目標動作電圧・周波数を前記制御部に与える演算部と
を有し、
前記ファームウェアは、
前記半導体集積回路の処理内容を決定づける属性パラメータの入力で処理単位のサイクル数を概算するサイクル数概算関数を備えるサイクル数概算ルーチンと、
前記サイクル数概算ルーチンの実行によって得られた前記サイクル数に基づいて、前記目標動作電圧・周波数を算出する動作電圧・周波数算出ルーチンと
を有する
半導体装置。
【請求項２】
前記サイクル数概算関数は、
前記属性パラメータを含むＮ個の属性パラメータを備え、前記Ｎ個の属性パラメータの内、ｉ（＝１，２，・・・，Ｎ）個目の属性パラメータを「ｐａｒａｍ  ｉ」と表し、前記サイクル数概算関数を「Ｃｙｃｌｅｃａｌ」と表すとき、次式で表される
請求項１に記載の半導体装置。
【数１】
2013088892.tif 000008
（ただし、「Ｌ」は、１以上の正の整数であって、次数を表す。「Ｃ０」は定数項を表す。「Ｃ１，１」および「Ｃ２，ｉ」はそれぞれ係数を表す。）
【請求項３】
前記次数Ｌは、Ｌ＝２である
請求項２に記載の半導体装置。
【請求項４】
前記ファームウェアは、
前記半導体集積回路のエラーを検出する検出処理を行い、前記検出処理で前記エラーを検出した場合には、前記サイクル数概算関数の前記定数項を調整することで前記サイクル数を補正するサイクル数補正ルーチンを更に有する
請求項１から３のいずれか一に記載の半導体装置。
【請求項５】
請求項１から４のいずれか一に記載の半導体装置の制御方法であって、
前記演算部が前記サイクル数概算ルーチンを実行するステップと、
前記演算部が前記動作電圧算出ルーチンを実行するステップと
を有する半導体装置の制御方法。
【請求項６】
請求項１から４のいずれか一に記載の半導体装置の設計支援方法であって、
前記サイクル数と前記属性パラメータとの対応関係を示すデータベースを作製するステップと、
前記データベースを用いて前記サイクル数概算関数を作製するステップと
を有する半導体装置の設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置および半導体装置の制御方法並びに半導体装置の設計支援方法に関し、特に、ＤＶＦＳ（Dynamic Voltage and Frequency Scaling：動的電圧周波数制御）技術に関する。
【背景技術】
【０００２】
組み込みシステムは、電子機器、携帯電話機、精密機器、自動車、産業用機械など、電子制御を必要とする種々の機器に搭載されている。多くの組み込みシステムは、ファームウェアおよびハードウェアで構成されている。ハードウェアは、例えば、マイクロコンピュータを備える。マイクロコンピュータは、組み込みシステムのメインコントローラーとしての役割を持つ。
【０００３】
組み込みシステムの低消費電力化は、近年の重要な課題の一つである。ハードウェアを構成するマイクロコンピュータは、組み込みシステムの中でも多くの電力を消費する。そのため、マイクロコンピュータの低消費電力化を図る意義は大きい。その方法の一つに、ＤＶＦＳ技術がある。組み込みシステムにＤＶＦＳが用いられた場合、マイクロコンピュータの処理内容に応じて、その動作電圧および動作周波数がそれぞれ動的に制御される。デッドライン（制限時間）までにマイクロコンピュータが実行すべき処理が少ない場合には、マイクロコンピュータの動作電圧および動作周波数を極力下げることにより、マイクロコンピュータの低消費電力化を図ることができる。
【０００４】
ＤＶＦＳを実行するためには、タスクの実行に要するサイクル数を動的に見積もる必要がある。この見積もりには、様々な手法が提案されている。特許文献１に開示される画像復号装置は、ビットストリームメモリに残っているデータの残量からタスクのサイクル数を概算する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−３０２５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術は、サイクル数の算出にビットストリームを用いるため、組み込みシステムのアーキテクチャに依存しやすい。そのため、特許文献１の技術では、組み込みシステムのアーキテクチャに左右されずに、ＤＶＦＳの実行に必要なサイクル数を容易に取得することができるとは言い難い。
【課題を解決するための手段】
【０００７】
以下、［発明を実施するための形態］で使用される符号を括弧内に付記し、［課題を解決するための手段］を説明する。この符号は、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために付加されたものである。この符号は、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に使用してはならない。
【０００８】
本発明の半導体装置（１）は、半導体集積回路（６）と、前記半導体集積回路の動作電圧・周波数を動的に制御する制御部（５）と、ファームウェア（２１）を格納している記憶部（２）と、前記制御部の目標値となる前記半導体集積回路の目標動作電圧・周波数を前記記憶部の前記ファームウェアに従って算出し、当該算出した目標動作電圧・周波数を前記制御部に与える演算部（４）とを有する。前記ファームウェアは、前記半導体集積回路の処理内容を決定づける属性パラメータの入力で処理単位のサイクル数（“Cycle”）を概算するサイクル数概算関数（“CycleCal”）を備えるサイクル数概算ルーチン（２１１）と、前記サイクル数概算ルーチンの実行によって得られた前記サイクル数に基づいて、前記目標動作電圧・周波数を算出する動作電圧・周波数算出ルーチン（２１３）とを有する。
【０００９】
本発明の半導体装置の制御方法は、前記演算部（４）が前記サイクル数概算ルーチン（２１１）を実行するステップ（Ｓ１１）と、前記演算部が前記動作電圧算出ルーチン（Ｓ１３）を実行するステップとを有する。
【００１０】
本発明の半導体装置の設計支援方法は、前記サイクル数と前記属性パラメータとの対応関係を示すデータベース（１２１）を作製するステップ（Ｓ２２）と、前記データベースを用いて前記サイクル数概算関数を作製するステップ（Ｓ２３）とを有する。
【発明の効果】
【００１１】
組み込みシステムのアーキテクチャに左右されることなく、ＤＶＦＳの実行に必要なサイクル数を容易に取得することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態に係るマイクロコンピュータ１の構成例を示すブロック図である。
【図２】図２は、図１に示すマイクロコンピュータ１を搭載した組み込みシステムＡの構成例を示すブロック図である。
【図３】図３は、実施の形態に係るＤＶＦＳの説明図である。
【図４】図４は、図１に示すファームウェア２１の構成例を示す機能ブロック図である。
【図５】図５は、サイクル数”Cycle”とＮ個の属性パラメータ”Param iとの関係を示す図である。
【図６】図６は、実施の形態に係る動作電圧・周波数制御関数”VoltageCntl”の一例を示すプログラムリストである。
【図７】図７は、実施の形態に係る半導体装置１の制御方法を示すフローチャートである。
【図８】図８は、実施の形態に係る設計支援装置１００の概略構成図である。
【図９】図９は、図８に示す設計支援装置１００を用いた設計支援方法の一例を示すフローチャートである。
【図１０】図１０は、実施の形態に係る計測ルーチンの一例を示すプログラムリストである。
【図１１】図１１は、実施の形態に係るデータベース１２１の一例を示す図である。
【図１２】図１２は、図９に示すステップＳ２２の詳細なフローチャートである。
【図１３】図１３は、図９に示すステップＳ２３の詳細なフローチャートである。
【図１４】図１４は、第１の変形例に係るマイクロコンピュータ１ａの構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面に関連づけて説明する。
【００１４】
１．マイクロコンピュータの構成例
図１は、実施の形態に係るマイクロコンピュータ１の構成例を示すブロック図である。マイクロコンピュータ１は、組み込みシステムのメインコントローラーとしての役割を持つ。
【００１５】
マイクロコンピュータ１は、以下の構成をとる。マイクロコンピュータ１は、ＲＯＭ２と、ＲＡＭ３と、ＣＰＵ４と、制御コア５と、ユーザ回路６と、Ｉ／Ｏポート７とを有する。ＲＯＭ２は、ファームウェア（ＦＷ）２１を格納している。ＣＰＵ４は、演算部とも呼ばれる。マイクロコンピュータ１は、ファームウェア２１の制御に従って、ＤＶＦＳを実行する。ＤＶＦＳの実行により、ユーザ回路６の動作電圧および動作周波数（「動作電圧・周波数」）が動的に制御される。
【００１６】
ＲＯＭ２は、不揮発性の記憶装置であって、例えば、フラッシュメモリである。ＲＯＭ２をマイクロコンピュータ１の外部に設けることができる。
【００１７】
ファームウェア２１は、マイクロコンピュータ１のハードウェアを制御するためのプログラムである。ここで言う、「ハードウェア」とは、ＲＯＭ２と、ＲＡＭ３と、ＣＰＵ４と、制御コア５と、ユーザ回路６と、Ｉ／Ｏポート７とを指す。ファームウェア２１のプログラムには、ＤＶＦＳを実行するための複数のルーチンがプログラム言語で記述されている。
【００１８】
ＲＡＭ３は、揮発性の記憶装置であって、例えば、ＤＲＡＭ（Dynamic Random Access Memory）である。ＲＡＭ３は、ＣＰＵ４の演算処理の過程で発生したデータを一時的に展開するためのワークエリアである。
【００１９】
ＣＰＵ４は、中央演算処理装置である。ＣＰＵ４は、ファームウェア２１をＲＯＭ２から読み出し、読み出したファームウェア２１をＲＡＭ３に展開する。ＣＰＵ４は、ファームウェア２１に従って、目標動作電圧および目標動作周波数（「目標動作電圧・周波数」）をそれぞれ算出する。目標動作電圧・周波数は、制御コア５の目標値となるユーザ回路６の動作電圧・周波数を指す。そして、ＣＰＵ４は、それぞれ算出した目標動作電圧・周波数を制御コア５に与える。
【００２０】
制御コア５は、例えば、ＤＣ／ＤＣ変換器およびＰＬＬ回路（位相同期回路）で構成されている。ＤＣ／ＤＣ変換器は、ユーザ回路６の動作電圧を可変する。ＰＬＬ回路は、ユーザ回路６の動作周波数を可変する。制御コア５は、ユーザ回路６の現在の動作電圧がＣＰＵ４から与えられた目標動作電圧となるように、現在の動作電圧を制御する。これと共に、制御コア５は、ユーザ回路６の現在の動作周波数がＣＰＵ４から与えられた目標動作周波数となるように、現在の動作周波数を制御する。
【００２１】
ユーザ回路６は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）などの半導体集積回路である。本実施の形態では、ユーザ回路６は、入力画像データＤＩＮに種々の画像処理を施す。画像処理後、ユーザ回路６は、出力画像データＤＯＵＴをマイクロコンピュータ１の外部に出力する。ユーザ回路６の構成および処理内容は、一例であって、特に限定されるものではない。処理内容は、例えば、音声データの処理に関するものでもよい。
【００２２】
Ｉ／Ｏポート７は、マイクロコンピュータ１と、その外部との間でデータの送受信を行う。本実施の形態では、Ｉ／Ｏポート７は、入力画像データＤＩＮをマイクロコンピュータ１の外部から入力する。また、Ｉ／Ｏポート７は、出力画像データＤＯＵＴをマイクロコンピュータ１の外部に出力する。なお、マイクロコンピュータ１の内部で処理される画像データは、デジタルデータである。画像データは、ビットストリームであるか否かを問わない。
【００２３】
２．組み込みシステムの構成例
図１に示すマイクロコンピュータ１は、電子機器、携帯電話機、自動車など、電子制御を必要とする種々の機器に搭載可能である。その一例について説明する。図２は、図１に示すマイクロコンピュータ１を搭載した組み込みシステムＡの構成例を示すブロック図である。
【００２４】
組み込みシステムＡは、図１に示すマイクロコンピュータ１に加え、記憶装置８と、周辺機器９とを有する。この他、組み込みシステムＡが複数の操作キーなどを備えていてもよい。組み込みシステムＡは、マイクロコンピュータ１がオペレーティングシステム８１に従って周辺機器９を制御するシステムである。組み込みシステムＡの各構成要素は、同一の基板上または筐体内にあってもよいし、それぞれが異なる基板上または筐体内にあってもよい。
【００２５】
記憶装置８は、ＲＡＭなどの記憶装置でもよいし、ハードディスクでもよい。記憶装置８は、オペレーティングシステム（ＯＳ）８１を格納している。オペレーティングシステム８１は、組み込みシステムＡのハードウェアと、組み込みシステムで使用されるアプリケーションソフトウェアとを統合的に管理する。ここで言う、「ハードウェア」とは、マイクロコンピュータ１、記憶装置８および周辺機器９を指す。アプリケーションソフトウェアは、例えば、画像処理のソフトウェアである。
【００２６】
周辺機器９は、マイクロコンピュータ１の制御対象である。周辺機器９は、例えば、表示装置、データ処理装置、駆動装置などの機器である。表示装置は、例えば、制御パネルや液晶ディスプレイを含む。データ処理装置は、例えば、プロセッサやＤＳＰ（Digital Signal Processing)で構成されている。駆動装置は、例えば、モータを含む。
【００２７】
ここで、組み込みシステムＡの動作例を挙げる。以下、周辺機器９が表示装置であると仮定する。また、アプリケーションソフトウェアが画像処理のソフトウェアであると仮定する。この場合、オペレーティングシステム８１上でアプリケーションソフトウェアが実行されると、マイクロコンピュータ１は、オペレーティングシステム８１の指示に従って、画像データＤＩＮに画像処理を施す。この画像処理は、例えば、拡大／縮小処理やコピーである。そして、マイクロコンピュータ１は、画像処理を施した画像データＤＯＵＴを周辺機器９に表示させる。
【００２８】
３．ＤＶＦＳ
図３は、実施の形態に係るＤＶＦＳの説明図である。オペレーティングシステム８１でアプリケーションソフトウェアが実行される場合、オペレーティングシステム８１は、タスクを作成する。「タスク」は、オペレーティングシステム８１の処理単位である。例えば、オペレーティングシステム８１は、拡大／縮小という画像処理で１つのタスクを作成する。そのタスクは、複数の命令で構成される。図３（Ａ）−（Ｃ）にそれぞれ示す例では、タスクは、例えば、３つの命令Ａ−Ｃで構成されている。本実施の形態では、マイクロコンピュータ１は、複数の命令を逐次（ＦＩＦＯ：First-In First Out）方式で処理する。逐次方式の代りに、先行制御方式、パイプライン方式またはその他の方式を用いることができる。なお、処理単位は、例えば、プロセスであってもよい。
【００２９】
図３（Ａ）に示すように、命令Ａ−Ｃの実行は、デッドラインｔＤ＝ｔＤ１までに完了されている必要がある。なお、「デッドライン」は、制限時間とも呼ばれる。「デッドライン」は、タスク、即ち、命令Ａ−Ｃの全てが完了されるべき時間の限界を示す。
【００３０】
当然ながら、タスクに応じて、同じ命令Ａ−Ｃであっても、デッドラインｔＤが異なる。例えば、マイクロコンピュータ１にさほど高速な処理が要求されていない場合、命令Ａ−Ｃは、相対的にゆっくりと実行される。例えば、図３（Ｂ）に示すデッドラインｔＤ＝ｔＤ２は、図３（Ａ）に示すデッドラインｔＤ＝ｔＤ１よりも遅く設定されている。ここで、図３（Ａ）に示す命令Ａ−Ｃの実行に要した処理時間がΔＴ＝ΔＴ１であったとする。この場合、ユーザ回路６が命令Ａ−ＣをデッドラインｔＤ２までに同じ処理時間ΔＴ＝ΔＴ１で実行すると、図３（Ｂ）に示すように、スラックタイムｔＳが発生する。「スラックタイム」は、余裕時間とも呼ばれる。「スラックタイム」は、あるタスクにおいて、最後に実行される命令の完了からデッドラインｔＤまでの期間である。
【００３１】
ＤＶＦＳでは、スラックタイムｔＳが発生した場合、以下の処理が行われる。制御コア５は、スラックタイムｔＳが０になるように、現在の動作電圧・周波数を更に下げる。図３（Ｃ）に示すように、ユーザ回路６は、処理時間ΔＴ＝ΔＴ１よりも遅い処理時間ΔＴ＝ΔＴ２で命令Ａ−Ｃを実行する。以下、スラックタイムｔＳの発生を前提として、本実施の形態を説明する。
【００３２】
ＤＶＦＳを実行するためには、スラックタイムｔＳを求める必要がある。スラックタイムｔＳは、デッドラインｔＤから現在の処理時間ΔＴを減算することで求められる。したがって、スラックタイムｔＳを求めるためには、デッドラインｔＤおよび現在の処理時間ΔＴが分かればよい。現在の処理時間ΔＴは、現在のサイクル数を現在の動作周波数（ＤＶＦＳ実行前の動作周波数）で除算することで求められる。ここで、「処理時間」は、あるタスクにおいて、始めの命令の実行開始から最後の命令の実行終了までの期間である。「サイクル数」は、タスクの開始から終了までに要するクロック数である。
【００３３】
サイクル数は、後述の属性パラメータに大きく左右される。そのため、サイクル数を直接算出することは容易ではない。それは、組み込みシステムＡを搭載すべき機器の種類（型番、メーカなど）や仕様ごとに、処理内容だけではなく、アーキテクチャも異なるためである。そこで、ファームウェア２１は、アーキテクチャに依存することなく、サイクル数を概算することができる関数「サイクル数概算関数“CycleCal”」を備えている。
【００３４】
ここで、「属性パラメータ」は、ユーザ回路６の処理内容を決定づけるものである。本実施の形態では、複数の属性パラメータがある。ユーザ回路６の処理内容が画像処理である場合、複数の属性パラメータには、例えば、入力画像のサイズ、出力画像のサイズ、演算精度、処理モード（拡大／縮小処理など）、（ディジタル）フィルタ係数がある。
【００３５】
４．ファームウェアの構成例
図４は、図１に示すファームウェア２１の構成例を示す機能ブロック図である。ファームウェア２１は、サイクル数概算ルーチン２１１と、スケジューラ２１２と、動作電圧・周波数算出ルーチン２１３と、サイクル数補正ルーチン２１４とを有する。図４には、ハードウェア（ＨＷ）として、制御コア５およびユーザ回路６が示されている。ＣＰＵ４がファームウェア２１を実行することにより、ファームウェア２１が持つ各構成要素の機能が実現される。
【００３６】
サイクル数概算ルーチン２１１は、サイクル数概算関数“CycleCal”を備えている。サイクル数概算関数“CycleCal”は、例えば、ファームウェア２１のライブラリに登録されていてもよい。サイクル数概算ルーチン２１１は、サイクル数概算関数“CycleCal”にＮ個の属性パラメータ“Param 1”、“Param 2”、・・・、“Param N”を入力して、サイクル数“Cycle”を概算する。なお、属性パラメータは、１個であってもよい。Ｎ個の属性パラメータ“Param 1”−“Param N”は、ＣＰＵ４によって、入力画像データＤＩＮから抽出されたものである。サイクル数概算ルーチン２１１は、概算したサイクル数”Cycle”を動作電圧・周波数算出ルーチン２１３に出力する。
【００３７】
サイクル数概算関数“CycleCal”は、サイクル数”Cycle”がパラメータのＬ次式（“Ｌ”は次数を表し、１以上の整数）で近似できると予想される場合、（１）式で示される。
【００３８】
【数１】
2013088892.tif 000003
【００３９】
ここで、“Param i”は、Ｎ個の属性パラメータ“Param 1”−“Param N”の内、ｉ（＝１，２，・・・，Ｎ）番目の属性パラメータを表す。“C 0”は、予め決められている定数項であって、Ｎ個の属性パラメータ“Param 1”−“Param N”の影響を受けない独立変数である。“C L,i ” は、“ParamL i”の係数であり、“C L-1,i”は、“ParamL-1
i”の係数であり、“C 1,i”は、“Param i”の係数である。
【００４０】
なお、（１）式は、パラメータを一般化して表したものである。処理のアルゴリズムに応じて、適宜、（１）式の次数Ｌを設定することができる。
【００４１】
たとえば、実際のＤＶＦＳを適用する半導体装置の処理内容が、画像処理におけるモザイク処理であると言った場合がある。モザイク処理は、例えば、２次元（縦Ｖと横Ｈの２次元）の画像範囲の色素を平均化する処理である。この場合、処理サイクル数は、パラメータがＶ，Ｈの２つで表される。そのため、処理サイクル数を２次式で見積もることが可能である。このように、処理のアルゴリズムから、処理サイクルがパラメータの２次式であることが推定される場合、（１）式において、次数ＬをＬ＝２とすることができる。
【００４２】
後述の（２）式に示すサイクル数概算関数“CycleCal”は、Ｎ個の属性パラメータ“Param 1”−“Param N”を備え、属性パラメータ“Param i”の２次式で近似的に示したものである。多くの場合、（１）式をＬ＝２として近似した（２）式に示す演算を行うことで、タスクに対応したサイクル数“Cycle”を概算することができる。
【００４３】
なお、ファームウェアあるいはシステムにおいて、後にユーザが次数Ｌを好適に変更できるように、サイクル数概算関数“CycleCal”を式（１）により構成しておくことができる。この場合、ユーザによって設定された次数Ｌに対応して、ファームウェアあるいはシステムを再構成できるようにしておけばよい。また、次数Ｌの上限を予め決めた上で、システムが計算を開始した後、寄与度の低いパラメータが減るように、次数Ｌの最適化を行うこともできる。
【００４４】
【数２】
2013088892.tif 000004
【００４５】
（１）式と同様に、（２）式において、“Param i”は、Ｎ個の属性パラメータ“Param 1”−“Param N”の内、ｉ（＝１，２，・・・，Ｎ）番目の属性パラメータを表す。“C 0”は、予め決められている定数項であって、Ｎ個の属性パラメータ“Param 1”−“Param N”の影響を受けない独立変数である。“C 2,i”は、“Param2 i”の係数である。“C 1,i”は、“Param i”の係数である。
【００４６】
以下、パラメータ数がＮ＝３個で、（１）式をＬ＝２次式で計算する場合の具体例について説明する。
【００４７】
Param 1：入力画像サイズ
Param 2：出力画像サイズ
Param 3：演算精度ビット数
【００４８】
なお、入力画像は、ユーザ回路６が処理すべき入力画像データＤＩＮのものである。出力画像は、ユーザ回路６によって処理された出力画像データＤＯＵＴのものである。演算精度は、ユーザ回路６のものである。
【００４９】
図５は、サイクル数“Cycle”とＮ個の属性パラメータ“Param 1”−“Param N”との関係を示す図である。図５では、Ｎ個の属性パラメータ“Param 1”−“Param N”の内、Ｎ＝３個の属性パラメータ“Param 1”−“Param 3”が示されている。
【００５０】
サイクル数“Cycle”は、サイクル数概算関数“CycleCal”にそれぞれ入力するＮ個の属性パラメータ“Param 1”−“Param N”によって一義的に決定される。図５の番号１に示すように、“Param 1 = 4”、“Param 2 = 4”および“Param 3 = 32”の場合、サイクル数概算関数“CycleCal”によって概算されるサイクル数は、“Cycle = 80”である。番号１に示す処理内容は、３２ビットの演算精度で４バイトの入力画像に画像処理（例えば、画像のコピー）を施して４バイトの出力画像を生成することを表している。
【００５１】
サイクル数概算関数”CycleCal”は、マイクロコンピュータ１の設計段階で作製される。本実施の形態では、予めユーザ回路６の処理内容が画像処理であると想定した上で、ファームウェア２１が作製されている。マイクロコンピュータ１の設計段階でサイクル数概算関数”CycleCal”が作製されているので、組み込みシステムＡのアーキテクチャに依存することなく、サイクル数を概算することができる。
【００５２】
スケジューラ２１２は、タスクのデッドラインＴＤを算出する。デッドラインＴＤは、タスクに応じて決まる。スケジューラ２１２は、算出したデッドラインＴＤを動作電圧・周波数算出ルーチン２１３に出力する。
【００５３】
動作電圧・周波数算出ルーチン２１３は、動作電圧・周波数制御関数“VoltageCntl”を備える。動作電圧・周波数算出ルーチン２１３は、サイクル数概算ルーチン２１１によって得られたサイクル数“Cycle”と、スケジューラ２１２によって得られたデッドラインＴＤとを動作電圧・周波数制御関数“VoltageCntl”にそれぞれ代入することで、制御コア５の目標値となるユーザ回路６の目標動作電圧・周波数をそれぞれ算出する。以下、動作電圧・周波数制御関数“VoltageCntl”について説明する。
【００５４】
図６は、実施の形態に係る動作電圧・周波数制御関数“VoltageCntl”の一例を示すプログラムリストである
【００５５】
（サイクル数“Cycle”の入力）
先ず、動作電圧・周波数算出ルーチン２１３は、２行目に示すように、サイクル数概算ルーチン２１１からサイクル数“Cycle”を入力する（呼出す）。
【００５６】
（現在の動作周波数“Frequency”の算出）
次いで、動作電圧・周波数算出ルーチン２１３は、３行目に示すように、現在の動作周波数“Frequency”を算出する。動作周波数“Frequency”自体は、動作電圧“VoltageCntl”と比例の関係がある（Frequency ∝ Voltage）。現在の動作周波数“Frequency”は、定数“Constant”に現在の動作電圧”Voltage”を乗じた値（Constant × Voltage）に等しい。定数“Constant”は、マイクロコンピュータ１のハードウェア構成（例えばユーザ回路６）などで一義的に決定される。
【００５７】
（スラックタイム“slacktime”の算出）
次いで、動作電圧・周波数算出ルーチン２１３は、４行目に示すように、スラックタイム“slacktime（ｔＳに対応）”を算出する。上述したように、スラックタイム“slacktime”は、スケジューラ２１２によって算出されたデッドライン“Deadline（ｔＤ２に対応）”から現在の処理時間ΔＴ（ΔＴ１に対応）を減算することで求められる（図３参照）。現在の処理時間ΔＴは、先に算出されたサイクル数“Cycle”を現在の動作周波数“Frequency”で除算した値である。即ち、スラックタイム“slacktime”は、４行目に示す関係式Deadline−Cycle／Frequencyで表される。
【００５８】
（目標動作周波数“Frequency*”の算出）
次いで、動作電圧・周波数算出ルーチン２１３は、５行目に示すように、制御コア５の目標値となる目標動作周波数“Frequency* ”を算出する。スラックタイム“slacktime”が０であるためには、現在の処理時間ΔＴ（ΔＴ１に対応）とスラックタイム“slacktime”（ｔＳに対応）との合計が、目標とする処理時間ΔＴ*（ΔＴ２に対応）になればよい（図３参照）。即ち、目標とする処理時間ΔＴ*は、ΔＴ* = ΔＴ＋slacktimeで表される。また、処理時間ΔＴ自体は、上述したように、ΔＴ= Cycle／Frequencyで表される。このことから、目標動作周波数“Frequency* ”は、５行目に示す関係式Cycle × Frequency ／
(Cycle ＋ slacktime × Frequency )で表される。なお、記号「*（アスタリスク）」は、目標動作電圧を動作電圧と区別するための便宜上の記号である。目標動作周波数についてもこれと同様である。
【００５９】
（目標動作電圧“Voltage* ”の算出）
次いで、動作電圧・周波数算出ルーチン２１３は、６行目に示すように、制御コア５の目標値となる目標動作電圧“Voltage* ”を算出する。目標動作電圧” Voltage* ” は、関係式Frequency* ／Constant で表される。
【００６０】
上述したように、サイクル数概算ルーチン２１１は、サイクル数“Cycle”を正確に算出するのではなく、概算している。そのため、概算されたサイクル数“Cycle”が実際のサイクル数よりも大きい場合、処理時間ΔＴがデッドラインｔＤを超える恐れがある。このことは、ユーザ回路６でエラーを引き起こす。そこで、サイクル数補正ルーチン２１４は、処理時間ΔＴがデッドラインｔＤを超えるというエラーを防止すべく、サイクル数概算ルーチン２１１によって得られるサイクル数“Cycle”を補正する。その詳細は、以下の通りである。
【００６１】
サイクル数補正ルーチン２１４は、サイクル数概算ルーチン２１１、スケジューラ２１２および動作電圧・周波数算出ルーチン２１３の実行後に実行される。先ず、サイクル数補正ルーチン２１４は、上述のエラーを検出する検出処理を行う。サイクル数補正ルーチン２１４は、検出処理でエラーを検出した場合、サイクル数概算関数“CycleCal”の定数項“C 0”が現在の値よりも大きくなるように、定数項“C 0”を調整する。上述したように、定数項“C 0”は、係数“C 2 ,i”、“C 1 , i”とは異なり、Ｎ個の属性パラメータ“Param 1”−“Param N”の影響を受けない独立変数である。そこで、定数項“C 0”を増加させることにより、Ｎ個の属性パラメータ“Param 1”−“Param N”に影響を与えることなく、サイクル数“Cycle”を大きく見積もることができる。
【００６２】
サイクル数“Cycle”が補正されると、当然ながら、サイクル数“Cycle”を用いて算出される目標動作電圧・周波数も補正される。その結果、エラーの発生を防止することができる。なお、サイクル数補正ルーチン２１４は、エラーを検出しなかった場合、定数項“C 0”を調整しない。
【００６３】
エラーを検出する代りにエラー率を検出することもできる。「エラー率」は、単位時間に発生したエラーの個数で表される。この場合、サイクル数補正ルーチン２１４は、エラー率が規定値を超えた場合に、定数項“C 0”を上述のように調整する。規定値は、ユーザ回路６の動作に支障がある程度のエラー率であればよい。
【００６４】
５．半導体装置の制御方法
図７は、実施の形態に係る半導体装置１の制御方法を示すフローチャートである。
【００６５】
ステップＳ１１：
ＣＰＵ４は、サイクル数概算ルーチン２１１を実行する。その際に、サイクル数概算ルーチン２１１は、タスクのサイクル数“Cycle”を概算する。
【００６６】
ステップＳ１２：
ＣＰＵ４は、スケジューラ２１２を実行する。その際に、スケジューラ２１２は、デッドライン“Deadline”を算出する。なお、ステップＳ１２の実行後にステップＳ１１を実行することもできる。
【００６７】
ステップＳ１３：
ＣＰＵ４は、動作電圧・周波数算出ルーチン２１３を実行する。その際に、動作電圧・周波数算出ルーチン２１３は、サイクル数“Cycle”と、デッドラインＴＤとを動作電圧制御関数“VoltageCntl”にそれぞれ代入することで、制御コア５の目標値となるユーザ回路６の目標動作電圧・周波数をそれぞれ算出する。
【００６８】
ステップＳ１４：
制御コア５は、ユーザ回路６の現在の動作電圧・周波数が動作電圧・周波数算出ルーチン２１３によって算出された目標動作電圧・周波数となるように、ユーザ回路６の動作電圧・周波数を制御する。
【００６９】
ステップＳ１５：
ＣＰＵ４は、サイクル数補正ルーチン２１４を実行する。その際に、サイクル数補正ルーチン２１４は、エラーを検出した場合、サイクル数概算関数“CycleCal”の定数項“C 0”を調整する。一方、サイクル数補正ルーチン２１４は、エラーを検出しなかった場合、サイクル数概算関数“CycleCal”の定数項“C 0”を調整しない。
【００７０】
以上述べたように、ＣＰＵ４は、サイクル数概算ルーチン２１１、スケジューラ２１２動作電圧・周波数算出ルーチン２１３をそれぞれ実行することで、ユーザ回路６の現在の動作電圧・周波数が属性パラメータに基づいて動的に制御される。その結果、マイクロコンピュータ１全体の消費電力が削減される。その上、ＣＰＵ４は、サイクル数補正ルーチン２１４を実行する。そのため、処理時間ΔＴがデッドラインｔＤを超えるというエラーを防止することができる。
【００７１】
６．設計支援装置
サイクル数概算関数”CycleCal”は、マイクロコンピュータ１の設計段階で、設計支援装置によって作製される。以下、設計支援装置について説明する。
【００７２】
図８は、実施の形態に係る設計支援装置１００の概略構成図である。設計支援装置１００は、ハードウェア（ＨＷ）モデル１１１を格納している記憶装置１１０と、ＲＡＭ１２０と、入力装置１３０と、ＣＰＵ１４０と、表示装置１５０とを有する。設計支援装置１００は、ハードウェアモデル１１１を用いてシミュレーションを行うことにより、サイクル数概算関数“CycleCal”を作製する。ハードウェアモデル１１１は、マイクロコンピュータ１のハードウェアを、例えば、高級言語を用いてＲＴＬ（Register Transfer Level）でモデル化したデータである。
【００７３】
記憶装置１１０は、例えば、ハードディスクである。記憶装置１１０は、ハードウェアモデル１１１に加え、シミュレーションソフトウェア１１２を格納している。
【００７４】
シミュレーションソフトウェア１１２は、ＲＴＬでのマイクロコンピュータ１の設計およびＲＴＬでのシミュレーションを行うためのソフトウェアである。シミュレーションソフトウェア１１２は、高級言語でのソースファイルの作成、コンパイル、デバッグといった一連の作業環境をＧＵＩ（Graphical User Interface）で提供している。
【００７５】
ＲＡＭ１２０は、揮発性の記憶装置であって、例えば、ＤＲＡＭ（Dynamic Random Access Memory）である。ＲＡＭ１２０は、ＣＰＵ１４０のワークスペースである。ＲＡＭ１２０は、シミュレーションの過程で作製されたデータベース１２１を格納する。
【００７６】
入力装置１３０は、例えば、キーボードおよびマウスを備える。入力装置１３０は、使用者の操作を受け付け、その操作内容に対応した信号をＣＰＵ１４０に出力する。
【００７７】
ＣＰＵ１４０は、中央演算処理装置である。ＣＰＵ１４０は、サイクル数概算関数“CycleCal”の作製に関する種々の処理を行う。また、ＣＰＵ１４０は、シミュレーションソフトウェア１１２上でハードウェアモデル１１１を用いたシミュレーションを実行する。
【００７８】
表示装置１５０は、例えば、液晶ディスプレイである。表示装置１５０は、シミュレーションソフトウェア１１２の実行に伴う操作画面やシミュレーション結果などを表示する。
【００７９】
７．半導体装置の設計支援方法
図９は、図８に示す設計支援装置１００を用いた半導体装置の設計支援方法の一例を示すフローチャートである。
【００８０】
ステップＳ２１：
本実施の形態では、予め、使用者がシミュレーションソフトウェア１１２上でハードウェアモデル１１１を作製しているものとする。この段階では、ハードウェアモデル１１１は、後述の計測ルーチンを含んでいない。
【００８１】
使用者は、入力装置１３０を用いて、計測ルーチンをハードウェアモデル１１１に追記する。計測ルーチンは、あるタスクにおけるサイクル数“Cycle”およびデッドライン“Deadline”をそれぞれ計測するルーチンである。
【００８２】
図１０は、実施の形態に係る計測ルーチンの一例を示すプログラムリストである。図１０には、サイクル数“Cycle”の計測に関する部分が示されている。タスクの状態には、以下の３つの状態がある。
【００８３】
state=IDLE：タスクがアイドル（スタンバイ）中である。
state=DOING：タスクが動作中である。
state=END：タスクが完了した。
【００８４】
計測ルーチンの概要を以下に示す。３行目に示すように、タスクの状態が“state=IDLE”の場合、サイクル数が“Cycle = 0”にセットされる。６行目に示すように、タスクの状態が“state=DOING”の場合、クロック“clock”の立ち上がりで（１１行目）、変数“i”がインクリメントされる（１２行目）。８行目に示すように、タスクの状態が“state=END”の場合、現段階での変数“i”の値がサイクル数“Cycle”にセットされる（１０行目）。この場合、変数“i”のインクリメントは行われない（９行目）。
【００８５】
ステップＳ２２：
ＣＰＵ１４０は、シミュレーションソフトウェア１１２を実行することで、データベース１２１を作製する。シミュレーションの際に、ＣＰＵ１４０は、ステップＳ２１で計測ルーチンを追記したハードウェアモデル１１１を用いる。なお、このシミュレーションは、予めユーザ回路６の処理内容が画像処理であると想定した上で行われる。
【００８６】
データベース１２１は、図１１に示すように、サイクル数“Cycle”とＮ個の属性パラメータ“Param 1”−“Param N”との対応関係を示すデータである。ＣＰＵ１４０は、作製したデータベース１２１をＲＡＭ１２０に格納する。無論、データベース１２１をＲＡＭ１２０の代りに記憶装置１１０に格納することもできる。
【００８７】
ステップＳ２３：
ＣＰＵ１４０は、作製したデータベース１２１を用いて、サイクル数概算関数“CycleCal”を作製する。
【００８８】
ステップＳ２４：
使用者は、入力装置１３０を用いて、作製されたサイクル数概算関数“CycleCal”をファームウェア２１のサイクル数概算ルーチン２１１に実装する。その際に、使用者は、入力装置１３０を用いて、サイクル数概算関数“CycleCal”をファームウェア２１に直接記述する。
【００８９】
ステップＳ２４では、以下の方法を用いることもできる。使用者は、高位検証を行うツールにサイクル数概算関数“CycleCal”を登録しておく。使用者は、そのツールを用いて、サイクル数概算関数“CycleCal”をサイクル数概算ルーチン２１１に自動合成する。
【００９０】
８．ステップＳ２２の詳細
図１２は、図９に示すステップＳ２２の詳細なフローチャートである。
【００９１】
ステップＳ２２１：
シミュレーションにあたって、ＣＰＵ１４０は、Ｎ個の属性パラメータ”Param 1”−”Param N”の各々に想定範囲内で値を割り振る。ここで、Ｎ＝３の場合を例に挙げる。この場合、３個の属性パラメータの各々は、例えば、“Param 1 = 1（入力画像サイズ）”、“Param 2 = 1（出力画像サイズ）”、“Param 3 = 32（演算精度）”である。
【００９２】
なお、「想定範囲」とは、ユーザ回路６の処理内容（例えば、画像処理）で取り得る値の範囲を予め想定したものである。属性パラメータ“Param 1”が入力画像サイズである場合、その想定範囲は、例えば、１バイトから１ギガバイトに設定される。
【００９３】
ステップＳ２２２：
ＣＰＵ１４０は、ステップＳ２２１で値をそれぞれ割り振ったＮ個の属性パラメータ“Param 1”−“Param N”を用いて、サイクル数“Cycle”を算出する。その際に、ＣＰＵ１４０は、ステップＳ２１で計測ルーチンを追記したハードウェアモデル１１１を用いる。そして、ＣＰＵ１４０は、データベース１２１を作製するため、Ｎ個の属性パラメータ“Param 1”−“Param N”と共に、算出したサイクル数“Cycle”をＲＡＭ１２０に格納する。
【００９４】
ステップＳ２２３：
ステップＳ２２１およびＳ２２２の各処理は、Ｍ回繰り返される。この繰り返しを「試行」と呼ぶ。試行回数がＭ回に達していない場合（ＮＯ）、ＣＰＵ１４０は、ステップＳ２２１の処理を再び実行する。この場合、ＣＰＵ１４０は、例えば、先のステップＳ２２１でＮ個の属性パラメータの各々に割り振った値よりも大きな値（または小さな値）を、Ｎ個の属性パラメータ“Param 1”−“Param N”の各々に割り振る。Ｎ個の属性パラメータの各増加分（刻み幅）は、例えば、Ｎ個の属性パラメータの各々に対応する想定範囲を試行回数Ｍで除した値である。試行回数Ｍは、できるだけ多いことが望ましい。
【００９５】
一方、試行回数がＭ回に達した場合（ＹＥＳ）、ＣＰＵ１４０は、ステップＳ２２１およびＳ２２２の各処理、即ち、シミュレーションを終了する。
【００９６】
図１１に示すデータベース１２１では、Ｍ回の試行の内、ｊ回目の試行でそれぞれ得られたＮ個の属性パラメータ“Param 1”−“Param N”が、“Param 1 , j”−“Param N , j”とそれぞれ表記されている。また、ｊ回目の試行で得られたサイクル数“Cycle”が“Cycle j”と表記されている。以後、これらの表記を適宜用いる。
【００９７】
以上述べたように、ＣＰＵ１４０は、Ｎ個の属性パラメータ“Param 1”−“Param N”の各々を想定範囲内で連続的にＭ回試行して、Ｍ個のサイクル数“Cycle”を算出する。この算出には、ハードウェアモデル１１１が用いられる。ＣＰＵ１４０は、これらの算出結果を基に、データベース１２１を作製する。
【００９８】
９．ステップＳ２３の詳細
図１３は、図９に示すステップＳ２３の詳細なフローチャートである。
【００９９】
ステップＳ２３では、（１）式に示すように、サイクル数概算関数“CycleCal”が属性パラメータ“Param i,j”の２次式で近似的に表される場合を例に挙げる。上述のステップＳ２２３におけるＭ回の試行の内、ｊ回目の試行で得られたサイクル数“Cycle j”は、（３）式で表される。
【０１００】
【数３】
2013088892.tif 000005
【０１０１】
ここで、“ε（エプシロン）j”は、実際のサイクル数とｊ回目の試行で得られたサイクル数“Cycle j”との誤差である。誤差“εj”は、両者の大小関係によって、正または負の値をとる。なお、“C 2,i”は、属性パラメータ“Param２ i,j”の係数である。“C 1,i”は、属性パラメータ“Param i,j”の係数である。設計支援装置１００は、最小２乗法を用いたシミュレーションを実行することにより、定数項“C 0”、係数“C 2,1”−“C 2 , N”、“C 1,1”−“C 1,N”をそれぞれ決定する。
【０１０２】
ステップＳ２３１：
ＣＰＵ１４０は、全ての属性パラメータおよび全てのサイクル数をＲＡＭ１２０に格納されているデータベース１２１から読み出す。
【０１０３】
ステップＳ２３２：
ＣＰＵ１４０は、全ての属性パラメータおよび全てのサイクル数を（３）式に示す算出式にそれぞれ代入する。この代入により、（４）式に示す関係式が得られる。
【０１０４】
【数４】
2013088892.tif 000006
【０１０５】
ステップＳ２３３：
ＣＰＵ８４は、誤差“ε1”−“εM”の各々の２乗値の総和Ｓを算出する。２乗値の総和Ｓは、（５）式で表される。
【０１０６】
【数５】
2013088892.tif 000007
【０１０７】
定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”の算出方法は、２つある。
【０１０８】
算出方法Ａ：
１つ目の算出方法Ａについて説明する。ＣＰＵ１４０は、２乗値の総和Ｓが最小となるように、定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”を最小２乗法によりそれぞれ決定する。そのため、算出方法Ａは、上述のエラーの防止よりも組み込みシステムＡの低消費電力化を優先する場合に有効である。なお、ステップＳ２３３で決定された定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”が、それぞれ（２）式に示すサイクル数概算関数”CycleCal”の定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”となる。
【０１０９】
算出方法Ｂ：
２つ目の算出方法Ｂについて説明する。先ず、ＣＰＵ１４０は、誤差“ε1”−“εM”の中から最も絶対値の大きい誤差εmaxを抽出する。これは、実際のサイクル数と最も誤差の大きいサイクル数“Cycle j”を抽出することを意味する。そして、ＣＰＵ１４０は、その抽出した誤差εmaxが最小となるように、定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”を最小２乗法によりそれぞれ決定する。そのため、算出方法Ｂは、算出方法Ａとは逆に、エラーの防止を最優先させたい場合に有効である。
【０１１０】
本実施の形態では、一例として、算出方法Ａが採用されている。２つの算出方法Ａ、Ｂのいずれを採用するかは、マイクロコンピュータ１の仕様または組み込みシステムＡの仕様に応じて決定される。
【０１１１】
ステップＳ２３４：
サイクル数概算関数“CycleCal”は、Ｎ個の属性パラメータ“Param 1”−“Param N”を持つ。その中のある属性パラメータ“Param k”の係数“C 1,k”または“C 2,k”が他の属性パラメータの係数よりも無視できる程度に小さい場合がある。この場合、属性パラメータ“Param k”は、サイクル数“Cycle”への影響が極めて小さいと言える。
【０１１２】
そこで、上述の場合には、属性パラメータ“Param k”を無視することにより、属性パラメータの数を減らす処理が行われる。属性パラメータ“Param k”をサイクル数概算関数“CycleCal”に組み込まないことで、マイクロコンピュータ１がサイクル数“Cycle”の概算に要する処理を低減することができる。
【０１１３】
具体的には、ＣＰＵ１４０は、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”の中から最小の値を持つ最小係数“C min”を抽出する。そして、ＣＰＵ１４０は、最小係数“C min”を他の係数と比較する。
【０１１４】
最小係数“C min”が他の係数よりも十分に小さい、例えば、最小係数“C min”が他の係数の１／１００程度の場合（ＹＥＳ）、ＣＰＵ１４０は、最小係数“C min”を持つ属性パラメータを０にセットする。そして、ＣＰＵ８４は、ステップＳ２３１を再び実行する。一方、最小係数“C min”が他の係数よりも十分に小さいという場合がない（ＮＯ）、ＣＰＵ１４０は、処理を終了する。
【０１１５】
本実施の形態によれば、サイクル数概算関数“CycleCal”によって、サイクル数が概算される。サイクル数は、ビットストリームなどのデータそのものではなく、ユーザ回路６の処理内容を決定づけるＮ個の属性パラメータ”Param i”で決まる。ユーザ回路６の動作電圧・周波数が属性パラメータ”Param i”に基づいて動的に制御されることで、マイクロコンピュータ１全体の消費電力が削減される。
【０１１６】
その上、サイクル数概算関数“CycleCal”は、予めユーザ回路６の処理内容に合わせて作製されている。そのため、組み込みシステムＡはおろか、マイクロコンピュータ１自体のアーキテクチャに左右されることなく、タスクのサイクル数を得ることができる。組み込みシステムＡの設計者は、そのアーキテクチャを熟知していなくても、サイクル数概算関数“CycleCal”を作製することができる。
【０１１７】
［第１の変形例］
図１４は、第１の変形例に係るマイクロコンピュータ１ａの構成例を示すブロック図である。
【０１１８】
本変形例では、サイクル数概算ルーチン２１１および動作電圧・周波数算出ルーチン２１３が、それぞれサイクル数概算部２１１ａおよび動作電圧・周波数算出部２１３ａとしてマイクロコンピュータ１ａに搭載されている。サイクル数概算部２１１ａおよび動作電圧・周波数算出部２１３ａは、それぞれサイクル数概算ルーチン２１１および動作電圧・周波数算出ルーチン２１３と同等の機能を持つハードウェアで構成されている。
【０１１９】
設計者は、例えば、ＲＴＬの設計段階で、サイクル数概算ルーチン２１１および動作電圧・周波数算出ルーチン２１３がそれぞれ持つ機能をマイクロコンピュータ１ａのハードウェアに組み込めばよい。
【０１２０】
本変形例のように、サイクル数概算ルーチン２１１および動作電圧・周波数算出ルーチン２１３をハードウェアとして構成しても、実施の形態と同等の効果を得ることができる。
【０１２１】
［第２の変形例］
図１３に示すステップＳ２３３では、２つの算出方法ＡおよびＢを説明した。基本的に、算出方法Ａによって求まる各係数は、算出方法Ｂによって求まる各係数と若干異なる。これは、算出方法の違いに起因する。
【０１２２】
本変形例では、サイクル数概算ルーチン２１１が、算出方法ＡおよびＢによってそれぞれ得られた２種類のサイクル数概算関数”CycleCal A”および”CycleCal B”を備えている。サイクル数概算ルーチン２１１は、マイクロコンピュータ１の処理内容に動的に対応して、使用するサイクル数概算関数を”CycleCal A”または”CycleCal B”に切り替える。
【０１２３】
また、サイクル数補正ルーチン２１４は、動作電圧”voltage”の誤差を補正する際に、サイクル数概算関数”CycleCal B”の係数”C0”を調整する。
【０１２４】
本変形例では、サイクル数概算ルーチン２１１が２種類のサイクル数概算関数”CycleCal A”および”CycleCal B”を備えているため、より正確なサイクル数を得ることができる。
【０１２５】
第１および第２の変形例を実施の形態と自由に組み合わせることができる。
【符号の説明】
【０１２６】
１  ：マイクロコンピュータ
２  ：ＲＯＭ
３  ：ＲＡＭ
４  ：ＣＰＵ
５  ：制御コア
６  ：ユーザ回路
７  ：Ｉ／Ｏポート
２１：ファームウェア（ＦＷ）
１００：設計支援装置
１１０：記憶装置
１１１：ハードウェアモデル
１１２：シミュレーションソフトウェア
１２０：設計支援装置のＲＡＭ
１２１：データベース
１３０：入力装置
１４０：設計支援装置のＣＰＵ
１５０：表示装置
２１１：サイクル数概算ルーチン
２１２：スケジューラ
２１３：動作電圧・周波数算出ルーチン
２１４：サイクル数補正ルーチン
【図１】
2013088892.tif 000009
【図２】
2013088892.tif 000010
【図３】
2013088892.tif 000011
【図４】
2013088892.tif 000012
【図５】
2013088892.tif 000013
【図６】
2013088892.tif 000014
【図７】
2013088892.tif 000015
【図８】
2013088892.tif 000016
【図９】
2013088892.tif 000017
【図１０】
2013088892.tif 000018
【図１１】
2013088892.tif 000019
【図１２】
2013088892.tif 000020
【図１３】
2013088892.tif 000021
【図１４】
2013088892.tif 000022