説明

半導体装置および半導体装置の制御方法並びに半導体装置の設計支援方法

【課題】本発明の課題は、組み込みシステムのアーキテクチャに左右されることなく、DVFSの実行に必要なサイクル数を容易に取得することである。
【解決手段】ファームウェア(21)は、サイクル数概算ルーチン(213)と、動作電圧・周波数算出ルーチン(213)とを有する。サイクル数概算ルーチンは、サイクル数概算関数を備える。サイクル数概算関数は、ユーザ回路(6)の処理内容を決定づける属性パラメータの入力でタスクのサイクル数を概算する。動作電圧・周波数算出ルーチンは、サイクル数概算ルーチンの実行によって得られたサイクル数に基づいて、ユーザ回路(6)の目標動作電圧・周波数を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置および半導体装置の制御方法並びに半導体装置の設計支援方法に関し、特に、DVFS(Dynamic Voltage and Frequency Scaling:動的電圧周波数制御)技術に関する。
【背景技術】
【0002】
組み込みシステムは、電子機器、携帯電話機、精密機器、自動車、産業用機械など、電子制御を必要とする種々の機器に搭載されている。多くの組み込みシステムは、ファームウェアおよびハードウェアで構成されている。ハードウェアは、例えば、マイクロコンピュータを備える。マイクロコンピュータは、組み込みシステムのメインコントローラーとしての役割を持つ。
【0003】
組み込みシステムの低消費電力化は、近年の重要な課題の一つである。ハードウェアを構成するマイクロコンピュータは、組み込みシステムの中でも多くの電力を消費する。そのため、マイクロコンピュータの低消費電力化を図る意義は大きい。その方法の一つに、DVFS技術がある。組み込みシステムにDVFSが用いられた場合、マイクロコンピュータの処理内容に応じて、その動作電圧および動作周波数がそれぞれ動的に制御される。デッドライン(制限時間)までにマイクロコンピュータが実行すべき処理が少ない場合には、マイクロコンピュータの動作電圧および動作周波数を極力下げることにより、マイクロコンピュータの低消費電力化を図ることができる。
【0004】
DVFSを実行するためには、タスクの実行に要するサイクル数を動的に見積もる必要がある。この見積もりには、様々な手法が提案されている。特許文献1に開示される画像復号装置は、ビットストリームメモリに残っているデータの残量からタスクのサイクル数を概算する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−302597号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1の技術は、サイクル数の算出にビットストリームを用いるため、組み込みシステムのアーキテクチャに依存しやすい。そのため、特許文献1の技術では、組み込みシステムのアーキテクチャに左右されずに、DVFSの実行に必要なサイクル数を容易に取得することができるとは言い難い。
【課題を解決するための手段】
【0007】
以下、[発明を実施するための形態]で使用される符号を括弧内に付記し、[課題を解決するための手段]を説明する。この符号は、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために付加されたものである。この符号は、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に使用してはならない。
【0008】
本発明の半導体装置(1)は、半導体集積回路(6)と、前記半導体集積回路の動作電圧・周波数を動的に制御する制御部(5)と、ファームウェア(21)を格納している記憶部(2)と、前記制御部の目標値となる前記半導体集積回路の目標動作電圧・周波数を前記記憶部の前記ファームウェアに従って算出し、当該算出した目標動作電圧・周波数を前記制御部に与える演算部(4)とを有する。前記ファームウェアは、前記半導体集積回路の処理内容を決定づける属性パラメータの入力で処理単位のサイクル数(“Cycle”)を概算するサイクル数概算関数(“CycleCal”)を備えるサイクル数概算ルーチン(211)と、前記サイクル数概算ルーチンの実行によって得られた前記サイクル数に基づいて、前記目標動作電圧・周波数を算出する動作電圧・周波数算出ルーチン(213)とを有する。
【0009】
本発明の半導体装置の制御方法は、前記演算部(4)が前記サイクル数概算ルーチン(211)を実行するステップ(S11)と、前記演算部が前記動作電圧算出ルーチン(S13)を実行するステップとを有する。
【0010】
本発明の半導体装置の設計支援方法は、前記サイクル数と前記属性パラメータとの対応関係を示すデータベース(121)を作製するステップ(S22)と、前記データベースを用いて前記サイクル数概算関数を作製するステップ(S23)とを有する。
【発明の効果】
【0011】
組み込みシステムのアーキテクチャに左右されることなく、DVFSの実行に必要なサイクル数を容易に取得することができる。
【図面の簡単な説明】
【0012】
【図1】図1は、実施の形態に係るマイクロコンピュータ1の構成例を示すブロック図である。
【図2】図2は、図1に示すマイクロコンピュータ1を搭載した組み込みシステムAの構成例を示すブロック図である。
【図3】図3は、実施の形態に係るDVFSの説明図である。
【図4】図4は、図1に示すファームウェア21の構成例を示す機能ブロック図である。
【図5】図5は、サイクル数”Cycle”とN個の属性パラメータ”Param iとの関係を示す図である。
【図6】図6は、実施の形態に係る動作電圧・周波数制御関数”VoltageCntl”の一例を示すプログラムリストである。
【図7】図7は、実施の形態に係る半導体装置1の制御方法を示すフローチャートである。
【図8】図8は、実施の形態に係る設計支援装置100の概略構成図である。
【図9】図9は、図8に示す設計支援装置100を用いた設計支援方法の一例を示すフローチャートである。
【図10】図10は、実施の形態に係る計測ルーチンの一例を示すプログラムリストである。
【図11】図11は、実施の形態に係るデータベース121の一例を示す図である。
【図12】図12は、図9に示すステップS22の詳細なフローチャートである。
【図13】図13は、図9に示すステップS23の詳細なフローチャートである。
【図14】図14は、第1の変形例に係るマイクロコンピュータ1aの構成例を示すブロック図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態を図面に関連づけて説明する。
【0014】
1.マイクロコンピュータの構成例
図1は、実施の形態に係るマイクロコンピュータ1の構成例を示すブロック図である。マイクロコンピュータ1は、組み込みシステムのメインコントローラーとしての役割を持つ。
【0015】
マイクロコンピュータ1は、以下の構成をとる。マイクロコンピュータ1は、ROM2と、RAM3と、CPU4と、制御コア5と、ユーザ回路6と、I/Oポート7とを有する。ROM2は、ファームウェア(FW)21を格納している。CPU4は、演算部とも呼ばれる。マイクロコンピュータ1は、ファームウェア21の制御に従って、DVFSを実行する。DVFSの実行により、ユーザ回路6の動作電圧および動作周波数(「動作電圧・周波数」)が動的に制御される。
【0016】
ROM2は、不揮発性の記憶装置であって、例えば、フラッシュメモリである。ROM2をマイクロコンピュータ1の外部に設けることができる。
【0017】
ファームウェア21は、マイクロコンピュータ1のハードウェアを制御するためのプログラムである。ここで言う、「ハードウェア」とは、ROM2と、RAM3と、CPU4と、制御コア5と、ユーザ回路6と、I/Oポート7とを指す。ファームウェア21のプログラムには、DVFSを実行するための複数のルーチンがプログラム言語で記述されている。
【0018】
RAM3は、揮発性の記憶装置であって、例えば、DRAM(Dynamic Random Access Memory)である。RAM3は、CPU4の演算処理の過程で発生したデータを一時的に展開するためのワークエリアである。
【0019】
CPU4は、中央演算処理装置である。CPU4は、ファームウェア21をROM2から読み出し、読み出したファームウェア21をRAM3に展開する。CPU4は、ファームウェア21に従って、目標動作電圧および目標動作周波数(「目標動作電圧・周波数」)をそれぞれ算出する。目標動作電圧・周波数は、制御コア5の目標値となるユーザ回路6の動作電圧・周波数を指す。そして、CPU4は、それぞれ算出した目標動作電圧・周波数を制御コア5に与える。
【0020】
制御コア5は、例えば、DC/DC変換器およびPLL回路(位相同期回路)で構成されている。DC/DC変換器は、ユーザ回路6の動作電圧を可変する。PLL回路は、ユーザ回路6の動作周波数を可変する。制御コア5は、ユーザ回路6の現在の動作電圧がCPU4から与えられた目標動作電圧となるように、現在の動作電圧を制御する。これと共に、制御コア5は、ユーザ回路6の現在の動作周波数がCPU4から与えられた目標動作周波数となるように、現在の動作周波数を制御する。
【0021】
ユーザ回路6は、例えば、ASIC(Application Specific Integrated Circuit)などの半導体集積回路である。本実施の形態では、ユーザ回路6は、入力画像データDINに種々の画像処理を施す。画像処理後、ユーザ回路6は、出力画像データDOUTをマイクロコンピュータ1の外部に出力する。ユーザ回路6の構成および処理内容は、一例であって、特に限定されるものではない。処理内容は、例えば、音声データの処理に関するものでもよい。
【0022】
I/Oポート7は、マイクロコンピュータ1と、その外部との間でデータの送受信を行う。本実施の形態では、I/Oポート7は、入力画像データDINをマイクロコンピュータ1の外部から入力する。また、I/Oポート7は、出力画像データDOUTをマイクロコンピュータ1の外部に出力する。なお、マイクロコンピュータ1の内部で処理される画像データは、デジタルデータである。画像データは、ビットストリームであるか否かを問わない。
【0023】
2.組み込みシステムの構成例
図1に示すマイクロコンピュータ1は、電子機器、携帯電話機、自動車など、電子制御を必要とする種々の機器に搭載可能である。その一例について説明する。図2は、図1に示すマイクロコンピュータ1を搭載した組み込みシステムAの構成例を示すブロック図である。
【0024】
組み込みシステムAは、図1に示すマイクロコンピュータ1に加え、記憶装置8と、周辺機器9とを有する。この他、組み込みシステムAが複数の操作キーなどを備えていてもよい。組み込みシステムAは、マイクロコンピュータ1がオペレーティングシステム81に従って周辺機器9を制御するシステムである。組み込みシステムAの各構成要素は、同一の基板上または筐体内にあってもよいし、それぞれが異なる基板上または筐体内にあってもよい。
【0025】
記憶装置8は、RAMなどの記憶装置でもよいし、ハードディスクでもよい。記憶装置8は、オペレーティングシステム(OS)81を格納している。オペレーティングシステム81は、組み込みシステムAのハードウェアと、組み込みシステムで使用されるアプリケーションソフトウェアとを統合的に管理する。ここで言う、「ハードウェア」とは、マイクロコンピュータ1、記憶装置8および周辺機器9を指す。アプリケーションソフトウェアは、例えば、画像処理のソフトウェアである。
【0026】
周辺機器9は、マイクロコンピュータ1の制御対象である。周辺機器9は、例えば、表示装置、データ処理装置、駆動装置などの機器である。表示装置は、例えば、制御パネルや液晶ディスプレイを含む。データ処理装置は、例えば、プロセッサやDSP(Digital Signal Processing)で構成されている。駆動装置は、例えば、モータを含む。
【0027】
ここで、組み込みシステムAの動作例を挙げる。以下、周辺機器9が表示装置であると仮定する。また、アプリケーションソフトウェアが画像処理のソフトウェアであると仮定する。この場合、オペレーティングシステム81上でアプリケーションソフトウェアが実行されると、マイクロコンピュータ1は、オペレーティングシステム81の指示に従って、画像データDINに画像処理を施す。この画像処理は、例えば、拡大/縮小処理やコピーである。そして、マイクロコンピュータ1は、画像処理を施した画像データDOUTを周辺機器9に表示させる。
【0028】
3.DVFS
図3は、実施の形態に係るDVFSの説明図である。オペレーティングシステム81でアプリケーションソフトウェアが実行される場合、オペレーティングシステム81は、タスクを作成する。「タスク」は、オペレーティングシステム81の処理単位である。例えば、オペレーティングシステム81は、拡大/縮小という画像処理で1つのタスクを作成する。そのタスクは、複数の命令で構成される。図3(A)−(C)にそれぞれ示す例では、タスクは、例えば、3つの命令A−Cで構成されている。本実施の形態では、マイクロコンピュータ1は、複数の命令を逐次(FIFO:First-In First Out)方式で処理する。逐次方式の代りに、先行制御方式、パイプライン方式またはその他の方式を用いることができる。なお、処理単位は、例えば、プロセスであってもよい。
【0029】
図3(A)に示すように、命令A−Cの実行は、デッドラインt=tD1までに完了されている必要がある。なお、「デッドライン」は、制限時間とも呼ばれる。「デッドライン」は、タスク、即ち、命令A−Cの全てが完了されるべき時間の限界を示す。
【0030】
当然ながら、タスクに応じて、同じ命令A−Cであっても、デッドラインtが異なる。例えば、マイクロコンピュータ1にさほど高速な処理が要求されていない場合、命令A−Cは、相対的にゆっくりと実行される。例えば、図3(B)に示すデッドラインt=tD2は、図3(A)に示すデッドラインt=tD1よりも遅く設定されている。ここで、図3(A)に示す命令A−Cの実行に要した処理時間がΔT=ΔTであったとする。この場合、ユーザ回路6が命令A−CをデッドラインtD2までに同じ処理時間ΔT=ΔTで実行すると、図3(B)に示すように、スラックタイムtが発生する。「スラックタイム」は、余裕時間とも呼ばれる。「スラックタイム」は、あるタスクにおいて、最後に実行される命令の完了からデッドラインtまでの期間である。
【0031】
DVFSでは、スラックタイムtが発生した場合、以下の処理が行われる。制御コア5は、スラックタイムtが0になるように、現在の動作電圧・周波数を更に下げる。図3(C)に示すように、ユーザ回路6は、処理時間ΔT=ΔTよりも遅い処理時間ΔT=ΔTで命令A−Cを実行する。以下、スラックタイムtの発生を前提として、本実施の形態を説明する。
【0032】
DVFSを実行するためには、スラックタイムtを求める必要がある。スラックタイムtは、デッドラインtから現在の処理時間ΔTを減算することで求められる。したがって、スラックタイムtを求めるためには、デッドラインtおよび現在の処理時間ΔTが分かればよい。現在の処理時間ΔTは、現在のサイクル数を現在の動作周波数(DVFS実行前の動作周波数)で除算することで求められる。ここで、「処理時間」は、あるタスクにおいて、始めの命令の実行開始から最後の命令の実行終了までの期間である。「サイクル数」は、タスクの開始から終了までに要するクロック数である。
【0033】
サイクル数は、後述の属性パラメータに大きく左右される。そのため、サイクル数を直接算出することは容易ではない。それは、組み込みシステムAを搭載すべき機器の種類(型番、メーカなど)や仕様ごとに、処理内容だけではなく、アーキテクチャも異なるためである。そこで、ファームウェア21は、アーキテクチャに依存することなく、サイクル数を概算することができる関数「サイクル数概算関数“CycleCal”」を備えている。
【0034】
ここで、「属性パラメータ」は、ユーザ回路6の処理内容を決定づけるものである。本実施の形態では、複数の属性パラメータがある。ユーザ回路6の処理内容が画像処理である場合、複数の属性パラメータには、例えば、入力画像のサイズ、出力画像のサイズ、演算精度、処理モード(拡大/縮小処理など)、(ディジタル)フィルタ係数がある。
【0035】
4.ファームウェアの構成例
図4は、図1に示すファームウェア21の構成例を示す機能ブロック図である。ファームウェア21は、サイクル数概算ルーチン211と、スケジューラ212と、動作電圧・周波数算出ルーチン213と、サイクル数補正ルーチン214とを有する。図4には、ハードウェア(HW)として、制御コア5およびユーザ回路6が示されている。CPU4がファームウェア21を実行することにより、ファームウェア21が持つ各構成要素の機能が実現される。
【0036】
サイクル数概算ルーチン211は、サイクル数概算関数“CycleCal”を備えている。サイクル数概算関数“CycleCal”は、例えば、ファームウェア21のライブラリに登録されていてもよい。サイクル数概算ルーチン211は、サイクル数概算関数“CycleCal”にN個の属性パラメータ“Param 1”、“Param 2”、・・・、“Param N”を入力して、サイクル数“Cycle”を概算する。なお、属性パラメータは、1個であってもよい。N個の属性パラメータ“Param 1”−“Param N”は、CPU4によって、入力画像データDINから抽出されたものである。サイクル数概算ルーチン211は、概算したサイクル数”Cycle”を動作電圧・周波数算出ルーチン213に出力する。
【0037】
サイクル数概算関数“CycleCal”は、サイクル数”Cycle”がパラメータのL次式(“L”は次数を表し、1以上の整数)で近似できると予想される場合、(1)式で示される。
【0038】
【数1】

【0039】
ここで、“Param i”は、N個の属性パラメータ“Param 1”−“Param N”の内、i(=1,2,・・・,N)番目の属性パラメータを表す。“C 0”は、予め決められている定数項であって、N個の属性パラメータ“Param 1”−“Param N”の影響を受けない独立変数である。“C L,i ” は、“ParamL i”の係数であり、“C L-1,i”は、“ParamL-1
i”の係数であり、“C 1,i”は、“Param i”の係数である。
【0040】
なお、(1)式は、パラメータを一般化して表したものである。処理のアルゴリズムに応じて、適宜、(1)式の次数Lを設定することができる。
【0041】
たとえば、実際のDVFSを適用する半導体装置の処理内容が、画像処理におけるモザイク処理であると言った場合がある。モザイク処理は、例えば、2次元(縦Vと横Hの2次元)の画像範囲の色素を平均化する処理である。この場合、処理サイクル数は、パラメータがV,Hの2つで表される。そのため、処理サイクル数を2次式で見積もることが可能である。このように、処理のアルゴリズムから、処理サイクルがパラメータの2次式であることが推定される場合、(1)式において、次数LをL=2とすることができる。
【0042】
後述の(2)式に示すサイクル数概算関数“CycleCal”は、N個の属性パラメータ“Param 1”−“Param N”を備え、属性パラメータ“Param i”の2次式で近似的に示したものである。多くの場合、(1)式をL=2として近似した(2)式に示す演算を行うことで、タスクに対応したサイクル数“Cycle”を概算することができる。
【0043】
なお、ファームウェアあるいはシステムにおいて、後にユーザが次数Lを好適に変更できるように、サイクル数概算関数“CycleCal”を式(1)により構成しておくことができる。この場合、ユーザによって設定された次数Lに対応して、ファームウェアあるいはシステムを再構成できるようにしておけばよい。また、次数Lの上限を予め決めた上で、システムが計算を開始した後、寄与度の低いパラメータが減るように、次数Lの最適化を行うこともできる。
【0044】
【数2】

【0045】
(1)式と同様に、(2)式において、“Param i”は、N個の属性パラメータ“Param 1”−“Param N”の内、i(=1,2,・・・,N)番目の属性パラメータを表す。“C 0”は、予め決められている定数項であって、N個の属性パラメータ“Param 1”−“Param N”の影響を受けない独立変数である。“C 2,i”は、“Param2 i”の係数である。“C 1,i”は、“Param i”の係数である。
【0046】
以下、パラメータ数がN=3個で、(1)式をL=2次式で計算する場合の具体例について説明する。
【0047】
Param 1:入力画像サイズ
Param 2:出力画像サイズ
Param 3:演算精度ビット数
【0048】
なお、入力画像は、ユーザ回路6が処理すべき入力画像データDINのものである。出力画像は、ユーザ回路6によって処理された出力画像データDOUTのものである。演算精度は、ユーザ回路6のものである。
【0049】
図5は、サイクル数“Cycle”とN個の属性パラメータ“Param 1”−“Param N”との関係を示す図である。図5では、N個の属性パラメータ“Param 1”−“Param N”の内、N=3個の属性パラメータ“Param 1”−“Param 3”が示されている。
【0050】
サイクル数“Cycle”は、サイクル数概算関数“CycleCal”にそれぞれ入力するN個の属性パラメータ“Param 1”−“Param N”によって一義的に決定される。図5の番号1に示すように、“Param 1 = 4”、“Param 2 = 4”および“Param 3 = 32”の場合、サイクル数概算関数“CycleCal”によって概算されるサイクル数は、“Cycle = 80”である。番号1に示す処理内容は、32ビットの演算精度で4バイトの入力画像に画像処理(例えば、画像のコピー)を施して4バイトの出力画像を生成することを表している。
【0051】
サイクル数概算関数”CycleCal”は、マイクロコンピュータ1の設計段階で作製される。本実施の形態では、予めユーザ回路6の処理内容が画像処理であると想定した上で、ファームウェア21が作製されている。マイクロコンピュータ1の設計段階でサイクル数概算関数”CycleCal”が作製されているので、組み込みシステムAのアーキテクチャに依存することなく、サイクル数を概算することができる。
【0052】
スケジューラ212は、タスクのデッドラインTを算出する。デッドラインTは、タスクに応じて決まる。スケジューラ212は、算出したデッドラインTを動作電圧・周波数算出ルーチン213に出力する。
【0053】
動作電圧・周波数算出ルーチン213は、動作電圧・周波数制御関数“VoltageCntl”を備える。動作電圧・周波数算出ルーチン213は、サイクル数概算ルーチン211によって得られたサイクル数“Cycle”と、スケジューラ212によって得られたデッドラインTとを動作電圧・周波数制御関数“VoltageCntl”にそれぞれ代入することで、制御コア5の目標値となるユーザ回路6の目標動作電圧・周波数をそれぞれ算出する。以下、動作電圧・周波数制御関数“VoltageCntl”について説明する。
【0054】
図6は、実施の形態に係る動作電圧・周波数制御関数“VoltageCntl”の一例を示すプログラムリストである
【0055】
(サイクル数“Cycle”の入力)
先ず、動作電圧・周波数算出ルーチン213は、2行目に示すように、サイクル数概算ルーチン211からサイクル数“Cycle”を入力する(呼出す)。
【0056】
(現在の動作周波数“Frequency”の算出)
次いで、動作電圧・周波数算出ルーチン213は、3行目に示すように、現在の動作周波数“Frequency”を算出する。動作周波数“Frequency”自体は、動作電圧“VoltageCntl”と比例の関係がある(Frequency ∝ Voltage)。現在の動作周波数“Frequency”は、定数“Constant”に現在の動作電圧”Voltage”を乗じた値(Constant × Voltage)に等しい。定数“Constant”は、マイクロコンピュータ1のハードウェア構成(例えばユーザ回路6)などで一義的に決定される。
【0057】
(スラックタイム“slacktime”の算出)
次いで、動作電圧・周波数算出ルーチン213は、4行目に示すように、スラックタイム“slacktime(tに対応)”を算出する。上述したように、スラックタイム“slacktime”は、スケジューラ212によって算出されたデッドライン“Deadline(tD2に対応)”から現在の処理時間ΔT(ΔTに対応)を減算することで求められる(図3参照)。現在の処理時間ΔTは、先に算出されたサイクル数“Cycle”を現在の動作周波数“Frequency”で除算した値である。即ち、スラックタイム“slacktime”は、4行目に示す関係式Deadline−Cycle/Frequencyで表される。
【0058】
(目標動作周波数“Frequency*”の算出)
次いで、動作電圧・周波数算出ルーチン213は、5行目に示すように、制御コア5の目標値となる目標動作周波数“Frequency* ”を算出する。スラックタイム“slacktime”が0であるためには、現在の処理時間ΔT(ΔTに対応)とスラックタイム“slacktime”(tに対応)との合計が、目標とする処理時間ΔT*(ΔTに対応)になればよい(図3参照)。即ち、目標とする処理時間ΔT*は、ΔT* = ΔT+slacktimeで表される。また、処理時間ΔT自体は、上述したように、ΔT= Cycle/Frequencyで表される。このことから、目標動作周波数“Frequency* ”は、5行目に示す関係式Cycle × Frequency /
(Cycle + slacktime × Frequency )で表される。なお、記号「*(アスタリスク)」は、目標動作電圧を動作電圧と区別するための便宜上の記号である。目標動作周波数についてもこれと同様である。
【0059】
(目標動作電圧“Voltage* ”の算出)
次いで、動作電圧・周波数算出ルーチン213は、6行目に示すように、制御コア5の目標値となる目標動作電圧“Voltage* ”を算出する。目標動作電圧” Voltage* ” は、関係式Frequency* /Constant で表される。
【0060】
上述したように、サイクル数概算ルーチン211は、サイクル数“Cycle”を正確に算出するのではなく、概算している。そのため、概算されたサイクル数“Cycle”が実際のサイクル数よりも大きい場合、処理時間ΔTがデッドラインtを超える恐れがある。このことは、ユーザ回路6でエラーを引き起こす。そこで、サイクル数補正ルーチン214は、処理時間ΔTがデッドラインtを超えるというエラーを防止すべく、サイクル数概算ルーチン211によって得られるサイクル数“Cycle”を補正する。その詳細は、以下の通りである。
【0061】
サイクル数補正ルーチン214は、サイクル数概算ルーチン211、スケジューラ212および動作電圧・周波数算出ルーチン213の実行後に実行される。先ず、サイクル数補正ルーチン214は、上述のエラーを検出する検出処理を行う。サイクル数補正ルーチン214は、検出処理でエラーを検出した場合、サイクル数概算関数“CycleCal”の定数項“C 0”が現在の値よりも大きくなるように、定数項“C 0”を調整する。上述したように、定数項“C 0”は、係数“C 2 ,i”、“C 1 , i”とは異なり、N個の属性パラメータ“Param 1”−“Param N”の影響を受けない独立変数である。そこで、定数項“C 0”を増加させることにより、N個の属性パラメータ“Param 1”−“Param N”に影響を与えることなく、サイクル数“Cycle”を大きく見積もることができる。
【0062】
サイクル数“Cycle”が補正されると、当然ながら、サイクル数“Cycle”を用いて算出される目標動作電圧・周波数も補正される。その結果、エラーの発生を防止することができる。なお、サイクル数補正ルーチン214は、エラーを検出しなかった場合、定数項“C 0”を調整しない。
【0063】
エラーを検出する代りにエラー率を検出することもできる。「エラー率」は、単位時間に発生したエラーの個数で表される。この場合、サイクル数補正ルーチン214は、エラー率が規定値を超えた場合に、定数項“C 0”を上述のように調整する。規定値は、ユーザ回路6の動作に支障がある程度のエラー率であればよい。
【0064】
5.半導体装置の制御方法
図7は、実施の形態に係る半導体装置1の制御方法を示すフローチャートである。
【0065】
ステップS11:
CPU4は、サイクル数概算ルーチン211を実行する。その際に、サイクル数概算ルーチン211は、タスクのサイクル数“Cycle”を概算する。
【0066】
ステップS12:
CPU4は、スケジューラ212を実行する。その際に、スケジューラ212は、デッドライン“Deadline”を算出する。なお、ステップS12の実行後にステップS11を実行することもできる。
【0067】
ステップS13:
CPU4は、動作電圧・周波数算出ルーチン213を実行する。その際に、動作電圧・周波数算出ルーチン213は、サイクル数“Cycle”と、デッドラインTとを動作電圧制御関数“VoltageCntl”にそれぞれ代入することで、制御コア5の目標値となるユーザ回路6の目標動作電圧・周波数をそれぞれ算出する。
【0068】
ステップS14:
制御コア5は、ユーザ回路6の現在の動作電圧・周波数が動作電圧・周波数算出ルーチン213によって算出された目標動作電圧・周波数となるように、ユーザ回路6の動作電圧・周波数を制御する。
【0069】
ステップS15:
CPU4は、サイクル数補正ルーチン214を実行する。その際に、サイクル数補正ルーチン214は、エラーを検出した場合、サイクル数概算関数“CycleCal”の定数項“C 0”を調整する。一方、サイクル数補正ルーチン214は、エラーを検出しなかった場合、サイクル数概算関数“CycleCal”の定数項“C 0”を調整しない。
【0070】
以上述べたように、CPU4は、サイクル数概算ルーチン211、スケジューラ212動作電圧・周波数算出ルーチン213をそれぞれ実行することで、ユーザ回路6の現在の動作電圧・周波数が属性パラメータに基づいて動的に制御される。その結果、マイクロコンピュータ1全体の消費電力が削減される。その上、CPU4は、サイクル数補正ルーチン214を実行する。そのため、処理時間ΔTがデッドラインtを超えるというエラーを防止することができる。
【0071】
6.設計支援装置
サイクル数概算関数”CycleCal”は、マイクロコンピュータ1の設計段階で、設計支援装置によって作製される。以下、設計支援装置について説明する。
【0072】
図8は、実施の形態に係る設計支援装置100の概略構成図である。設計支援装置100は、ハードウェア(HW)モデル111を格納している記憶装置110と、RAM120と、入力装置130と、CPU140と、表示装置150とを有する。設計支援装置100は、ハードウェアモデル111を用いてシミュレーションを行うことにより、サイクル数概算関数“CycleCal”を作製する。ハードウェアモデル111は、マイクロコンピュータ1のハードウェアを、例えば、高級言語を用いてRTL(Register Transfer Level)でモデル化したデータである。
【0073】
記憶装置110は、例えば、ハードディスクである。記憶装置110は、ハードウェアモデル111に加え、シミュレーションソフトウェア112を格納している。
【0074】
シミュレーションソフトウェア112は、RTLでのマイクロコンピュータ1の設計およびRTLでのシミュレーションを行うためのソフトウェアである。シミュレーションソフトウェア112は、高級言語でのソースファイルの作成、コンパイル、デバッグといった一連の作業環境をGUI(Graphical User Interface)で提供している。
【0075】
RAM120は、揮発性の記憶装置であって、例えば、DRAM(Dynamic Random Access Memory)である。RAM120は、CPU140のワークスペースである。RAM120は、シミュレーションの過程で作製されたデータベース121を格納する。
【0076】
入力装置130は、例えば、キーボードおよびマウスを備える。入力装置130は、使用者の操作を受け付け、その操作内容に対応した信号をCPU140に出力する。
【0077】
CPU140は、中央演算処理装置である。CPU140は、サイクル数概算関数“CycleCal”の作製に関する種々の処理を行う。また、CPU140は、シミュレーションソフトウェア112上でハードウェアモデル111を用いたシミュレーションを実行する。
【0078】
表示装置150は、例えば、液晶ディスプレイである。表示装置150は、シミュレーションソフトウェア112の実行に伴う操作画面やシミュレーション結果などを表示する。
【0079】
7.半導体装置の設計支援方法
図9は、図8に示す設計支援装置100を用いた半導体装置の設計支援方法の一例を示すフローチャートである。
【0080】
ステップS21:
本実施の形態では、予め、使用者がシミュレーションソフトウェア112上でハードウェアモデル111を作製しているものとする。この段階では、ハードウェアモデル111は、後述の計測ルーチンを含んでいない。
【0081】
使用者は、入力装置130を用いて、計測ルーチンをハードウェアモデル111に追記する。計測ルーチンは、あるタスクにおけるサイクル数“Cycle”およびデッドライン“Deadline”をそれぞれ計測するルーチンである。
【0082】
図10は、実施の形態に係る計測ルーチンの一例を示すプログラムリストである。図10には、サイクル数“Cycle”の計測に関する部分が示されている。タスクの状態には、以下の3つの状態がある。
【0083】
state=IDLE:タスクがアイドル(スタンバイ)中である。
state=DOING:タスクが動作中である。
state=END:タスクが完了した。
【0084】
計測ルーチンの概要を以下に示す。3行目に示すように、タスクの状態が“state=IDLE”の場合、サイクル数が“Cycle = 0”にセットされる。6行目に示すように、タスクの状態が“state=DOING”の場合、クロック“clock”の立ち上がりで(11行目)、変数“i”がインクリメントされる(12行目)。8行目に示すように、タスクの状態が“state=END”の場合、現段階での変数“i”の値がサイクル数“Cycle”にセットされる(10行目)。この場合、変数“i”のインクリメントは行われない(9行目)。
【0085】
ステップS22:
CPU140は、シミュレーションソフトウェア112を実行することで、データベース121を作製する。シミュレーションの際に、CPU140は、ステップS21で計測ルーチンを追記したハードウェアモデル111を用いる。なお、このシミュレーションは、予めユーザ回路6の処理内容が画像処理であると想定した上で行われる。
【0086】
データベース121は、図11に示すように、サイクル数“Cycle”とN個の属性パラメータ“Param 1”−“Param N”との対応関係を示すデータである。CPU140は、作製したデータベース121をRAM120に格納する。無論、データベース121をRAM120の代りに記憶装置110に格納することもできる。
【0087】
ステップS23:
CPU140は、作製したデータベース121を用いて、サイクル数概算関数“CycleCal”を作製する。
【0088】
ステップS24:
使用者は、入力装置130を用いて、作製されたサイクル数概算関数“CycleCal”をファームウェア21のサイクル数概算ルーチン211に実装する。その際に、使用者は、入力装置130を用いて、サイクル数概算関数“CycleCal”をファームウェア21に直接記述する。
【0089】
ステップS24では、以下の方法を用いることもできる。使用者は、高位検証を行うツールにサイクル数概算関数“CycleCal”を登録しておく。使用者は、そのツールを用いて、サイクル数概算関数“CycleCal”をサイクル数概算ルーチン211に自動合成する。
【0090】
8.ステップS22の詳細
図12は、図9に示すステップS22の詳細なフローチャートである。
【0091】
ステップS221:
シミュレーションにあたって、CPU140は、N個の属性パラメータ”Param 1”−”Param N”の各々に想定範囲内で値を割り振る。ここで、N=3の場合を例に挙げる。この場合、3個の属性パラメータの各々は、例えば、“Param 1 = 1(入力画像サイズ)”、“Param 2 = 1(出力画像サイズ)”、“Param 3 = 32(演算精度)”である。
【0092】
なお、「想定範囲」とは、ユーザ回路6の処理内容(例えば、画像処理)で取り得る値の範囲を予め想定したものである。属性パラメータ“Param 1”が入力画像サイズである場合、その想定範囲は、例えば、1バイトから1ギガバイトに設定される。
【0093】
ステップS222:
CPU140は、ステップS221で値をそれぞれ割り振ったN個の属性パラメータ“Param 1”−“Param N”を用いて、サイクル数“Cycle”を算出する。その際に、CPU140は、ステップS21で計測ルーチンを追記したハードウェアモデル111を用いる。そして、CPU140は、データベース121を作製するため、N個の属性パラメータ“Param 1”−“Param N”と共に、算出したサイクル数“Cycle”をRAM120に格納する。
【0094】
ステップS223:
ステップS221およびS222の各処理は、M回繰り返される。この繰り返しを「試行」と呼ぶ。試行回数がM回に達していない場合(NO)、CPU140は、ステップS221の処理を再び実行する。この場合、CPU140は、例えば、先のステップS221でN個の属性パラメータの各々に割り振った値よりも大きな値(または小さな値)を、N個の属性パラメータ“Param 1”−“Param N”の各々に割り振る。N個の属性パラメータの各増加分(刻み幅)は、例えば、N個の属性パラメータの各々に対応する想定範囲を試行回数Mで除した値である。試行回数Mは、できるだけ多いことが望ましい。
【0095】
一方、試行回数がM回に達した場合(YES)、CPU140は、ステップS221およびS222の各処理、即ち、シミュレーションを終了する。
【0096】
図11に示すデータベース121では、M回の試行の内、j回目の試行でそれぞれ得られたN個の属性パラメータ“Param 1”−“Param N”が、“Param 1 , j”−“Param N , j”とそれぞれ表記されている。また、j回目の試行で得られたサイクル数“Cycle”が“Cycle j”と表記されている。以後、これらの表記を適宜用いる。
【0097】
以上述べたように、CPU140は、N個の属性パラメータ“Param 1”−“Param N”の各々を想定範囲内で連続的にM回試行して、M個のサイクル数“Cycle”を算出する。この算出には、ハードウェアモデル111が用いられる。CPU140は、これらの算出結果を基に、データベース121を作製する。
【0098】
9.ステップS23の詳細
図13は、図9に示すステップS23の詳細なフローチャートである。
【0099】
ステップS23では、(1)式に示すように、サイクル数概算関数“CycleCal”が属性パラメータ“Param i,j”の2次式で近似的に表される場合を例に挙げる。上述のステップS223におけるM回の試行の内、j回目の試行で得られたサイクル数“Cycle j”は、(3)式で表される。
【0100】
【数3】

【0101】
ここで、“ε(エプシロン)j”は、実際のサイクル数とj回目の試行で得られたサイクル数“Cycle j”との誤差である。誤差“εj”は、両者の大小関係によって、正または負の値をとる。なお、“C 2,i”は、属性パラメータ“Param i,j”の係数である。“C 1,i”は、属性パラメータ“Param i,j”の係数である。設計支援装置100は、最小2乗法を用いたシミュレーションを実行することにより、定数項“C 0”、係数“C 2,1”−“C 2 , N”、“C 1,1”−“C 1,N”をそれぞれ決定する。
【0102】
ステップS231:
CPU140は、全ての属性パラメータおよび全てのサイクル数をRAM120に格納されているデータベース121から読み出す。
【0103】
ステップS232:
CPU140は、全ての属性パラメータおよび全てのサイクル数を(3)式に示す算出式にそれぞれ代入する。この代入により、(4)式に示す関係式が得られる。
【0104】
【数4】

【0105】
ステップS233:
CPU84は、誤差“ε1”−“εM”の各々の2乗値の総和Sを算出する。2乗値の総和Sは、(5)式で表される。
【0106】
【数5】

【0107】
定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”の算出方法は、2つある。
【0108】
算出方法A:
1つ目の算出方法Aについて説明する。CPU140は、2乗値の総和Sが最小となるように、定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”を最小2乗法によりそれぞれ決定する。そのため、算出方法Aは、上述のエラーの防止よりも組み込みシステムAの低消費電力化を優先する場合に有効である。なお、ステップS233で決定された定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”が、それぞれ(2)式に示すサイクル数概算関数”CycleCal”の定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”となる。
【0109】
算出方法B:
2つ目の算出方法Bについて説明する。先ず、CPU140は、誤差“ε1”−“εM”の中から最も絶対値の大きい誤差εmaxを抽出する。これは、実際のサイクル数と最も誤差の大きいサイクル数“Cycle j”を抽出することを意味する。そして、CPU140は、その抽出した誤差εmaxが最小となるように、定数項“C 0”、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”を最小2乗法によりそれぞれ決定する。そのため、算出方法Bは、算出方法Aとは逆に、エラーの防止を最優先させたい場合に有効である。
【0110】
本実施の形態では、一例として、算出方法Aが採用されている。2つの算出方法A、Bのいずれを採用するかは、マイクロコンピュータ1の仕様または組み込みシステムAの仕様に応じて決定される。
【0111】
ステップS234:
サイクル数概算関数“CycleCal”は、N個の属性パラメータ“Param 1”−“Param N”を持つ。その中のある属性パラメータ“Param k”の係数“C 1,k”または“C 2,k”が他の属性パラメータの係数よりも無視できる程度に小さい場合がある。この場合、属性パラメータ“Param k”は、サイクル数“Cycle”への影響が極めて小さいと言える。
【0112】
そこで、上述の場合には、属性パラメータ“Param k”を無視することにより、属性パラメータの数を減らす処理が行われる。属性パラメータ“Param k”をサイクル数概算関数“CycleCal”に組み込まないことで、マイクロコンピュータ1がサイクル数“Cycle”の概算に要する処理を低減することができる。
【0113】
具体的には、CPU140は、係数“C 2,1”−“C 2,N”、“C 1,1”−“C 1,N”の中から最小の値を持つ最小係数“C min”を抽出する。そして、CPU140は、最小係数“C min”を他の係数と比較する。
【0114】
最小係数“C min”が他の係数よりも十分に小さい、例えば、最小係数“C min”が他の係数の1/100程度の場合(YES)、CPU140は、最小係数“C min”を持つ属性パラメータを0にセットする。そして、CPU84は、ステップS231を再び実行する。一方、最小係数“C min”が他の係数よりも十分に小さいという場合がない(NO)、CPU140は、処理を終了する。
【0115】
本実施の形態によれば、サイクル数概算関数“CycleCal”によって、サイクル数が概算される。サイクル数は、ビットストリームなどのデータそのものではなく、ユーザ回路6の処理内容を決定づけるN個の属性パラメータ”Param i”で決まる。ユーザ回路6の動作電圧・周波数が属性パラメータ”Param i”に基づいて動的に制御されることで、マイクロコンピュータ1全体の消費電力が削減される。
【0116】
その上、サイクル数概算関数“CycleCal”は、予めユーザ回路6の処理内容に合わせて作製されている。そのため、組み込みシステムAはおろか、マイクロコンピュータ1自体のアーキテクチャに左右されることなく、タスクのサイクル数を得ることができる。組み込みシステムAの設計者は、そのアーキテクチャを熟知していなくても、サイクル数概算関数“CycleCal”を作製することができる。
【0117】
[第1の変形例]
図14は、第1の変形例に係るマイクロコンピュータ1aの構成例を示すブロック図である。
【0118】
本変形例では、サイクル数概算ルーチン211および動作電圧・周波数算出ルーチン213が、それぞれサイクル数概算部211aおよび動作電圧・周波数算出部213aとしてマイクロコンピュータ1aに搭載されている。サイクル数概算部211aおよび動作電圧・周波数算出部213aは、それぞれサイクル数概算ルーチン211および動作電圧・周波数算出ルーチン213と同等の機能を持つハードウェアで構成されている。
【0119】
設計者は、例えば、RTLの設計段階で、サイクル数概算ルーチン211および動作電圧・周波数算出ルーチン213がそれぞれ持つ機能をマイクロコンピュータ1aのハードウェアに組み込めばよい。
【0120】
本変形例のように、サイクル数概算ルーチン211および動作電圧・周波数算出ルーチン213をハードウェアとして構成しても、実施の形態と同等の効果を得ることができる。
【0121】
[第2の変形例]
図13に示すステップS233では、2つの算出方法AおよびBを説明した。基本的に、算出方法Aによって求まる各係数は、算出方法Bによって求まる各係数と若干異なる。これは、算出方法の違いに起因する。
【0122】
本変形例では、サイクル数概算ルーチン211が、算出方法AおよびBによってそれぞれ得られた2種類のサイクル数概算関数”CycleCal A”および”CycleCal B”を備えている。サイクル数概算ルーチン211は、マイクロコンピュータ1の処理内容に動的に対応して、使用するサイクル数概算関数を”CycleCal A”または”CycleCal B”に切り替える。
【0123】
また、サイクル数補正ルーチン214は、動作電圧”voltage”の誤差を補正する際に、サイクル数概算関数”CycleCal B”の係数”C0”を調整する。
【0124】
本変形例では、サイクル数概算ルーチン211が2種類のサイクル数概算関数”CycleCal A”および”CycleCal B”を備えているため、より正確なサイクル数を得ることができる。
【0125】
第1および第2の変形例を実施の形態と自由に組み合わせることができる。
【符号の説明】
【0126】
1 :マイクロコンピュータ
2 :ROM
3 :RAM
4 :CPU
5 :制御コア
6 :ユーザ回路
7 :I/Oポート
21:ファームウェア(FW)
100:設計支援装置
110:記憶装置
111:ハードウェアモデル
112:シミュレーションソフトウェア
120:設計支援装置のRAM
121:データベース
130:入力装置
140:設計支援装置のCPU
150:表示装置
211:サイクル数概算ルーチン
212:スケジューラ
213:動作電圧・周波数算出ルーチン
214:サイクル数補正ルーチン

【特許請求の範囲】
【請求項1】
半導体集積回路と、
前記半導体集積回路の動作電圧・周波数を動的に制御する制御部と、
ファームウェアを格納している記憶部と、
前記制御部の目標値となる前記半導体集積回路の目標動作電圧・周波数を前記記憶部の前記ファームウェアに従って算出し、当該算出した目標動作電圧・周波数を前記制御部に与える演算部と
を有し、
前記ファームウェアは、
前記半導体集積回路の処理内容を決定づける属性パラメータの入力で処理単位のサイクル数を概算するサイクル数概算関数を備えるサイクル数概算ルーチンと、
前記サイクル数概算ルーチンの実行によって得られた前記サイクル数に基づいて、前記目標動作電圧・周波数を算出する動作電圧・周波数算出ルーチンと
を有する
半導体装置。
【請求項2】
前記サイクル数概算関数は、
前記属性パラメータを含むN個の属性パラメータを備え、前記N個の属性パラメータの内、i(=1,2,・・・,N)個目の属性パラメータを「param i」と表し、前記サイクル数概算関数を「Cyclecal」と表すとき、次式で表される
請求項1に記載の半導体装置。
【数1】

(ただし、「L」は、1以上の正の整数であって、次数を表す。「C0」は定数項を表す。「C1,1」および「C2,i」はそれぞれ係数を表す。)
【請求項3】
前記次数Lは、L=2である
請求項2に記載の半導体装置。
【請求項4】
前記ファームウェアは、
前記半導体集積回路のエラーを検出する検出処理を行い、前記検出処理で前記エラーを検出した場合には、前記サイクル数概算関数の前記定数項を調整することで前記サイクル数を補正するサイクル数補正ルーチンを更に有する
請求項1から3のいずれか一に記載の半導体装置。
【請求項5】
請求項1から4のいずれか一に記載の半導体装置の制御方法であって、
前記演算部が前記サイクル数概算ルーチンを実行するステップと、
前記演算部が前記動作電圧算出ルーチンを実行するステップと
を有する半導体装置の制御方法。
【請求項6】
請求項1から4のいずれか一に記載の半導体装置の設計支援方法であって、
前記サイクル数と前記属性パラメータとの対応関係を示すデータベースを作製するステップと、
前記データベースを用いて前記サイクル数概算関数を作製するステップと
を有する半導体装置の設計支援方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2013−88892(P2013−88892A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−226532(P2011−226532)
【出願日】平成23年10月14日(2011.10.14)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】