(58)【調査した分野】(Int.Cl.,DB名)
コンピュータによって設計支援プログラムを実行することによって、動作電圧と動作周波数が与えられクロック信号に同期して所定の処理を実行する論理回路に対して、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを算出する、半導体装置の設計方法であって、
前記論理回路に第1動作電圧と第1動作周波数とを与えて前記処理を実行させたときの、前記処理の実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイルとして用意し、
前記電力プロファイルに基づいて、前記処理の実行に伴うクロックサイクルに対する、前記論理回路の負荷容量の関数を負荷容量関数として求め、
前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを、それぞれクロックサイクルに対する関数として算出する、半導体装置の設計方法。
請求項1において、前記論理回路は、プログラムを実行可能であり、前記プログラムに含まれる命令によって動作電圧と動作周波数を設定可能なプロセッサを含んで構成され、
クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数とに基づいて、動作電圧と動作周波数を設定する命令を、前記処理を実行するプログラムに追加する、半導体装置の設計方法。
請求項4において、前記コントロールデータは、前記処理におけるすべてのクロックサイクルについて、設定されるべき動作電圧と動作周波数とを含む、半導体装置の設計方法。
プロセッサと、前記プロセッサに供給するプログラムを格納可能なメモリと、前記プロセッサにクロックを供給可能なクロック供給回路と、前記プロセッサに電源を供給可能な電源供給回路と、制御回路とを備える半導体装置であって、
前記制御回路は、前記クロック供給回路が前記プロセッサに供給する前記クロックの周波数を設定可能な周波数制御レジスタと、前記電源供給回路が前記プロセッサに供給する前記電源の電圧を設定可能な電圧制御レジスタとを備え、
前記プロセッサの命令セットは、前記周波数制御レジスタと前記電圧制御レジスタに値を設定可能な命令を含んで構成され、
前記プログラムは、所定の処理を前記プロセッサに実行させるルーチンを含み、前記ルーチンは、動作電圧と動作周波数を設定する命令を含み、
前記ルーチンにおいて設定される前記動作電圧と前記動作周波数は、前記ルーチンを実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数と動作周波数関数とに基づいて算出され、
前記動作電圧関数と前記動作周波数関数は、第1動作電圧と第1動作周波数とを与えて前記プロセッサに前記ルーチンを実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイルとして用意し、前記電力プロファイルに基づいて、前記クロックサイクルに対する前記プロセッサの負荷容量の関係を負荷容量関数として求め、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される、
半導体装置。
クロックに同期して動作する論理回路と、前記論理回路に前記クロックを供給可能なクロック供給回路と、前記論理回路に電源を供給可能な電源供給回路と、制御回路とを備える半導体装置であって、
前記制御回路は、前記クロック供給回路が前記論理回路に供給する前記クロックの周波数を設定可能な周波数制御レジスタと、前記電源供給回路が前記論理回路に供給する前記電源の電圧を設定可能な電圧制御レジスタと、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータを保持可能なメモリとを備え、前記論理回路の動作におけるクロックサイクルと前記メモリに保持されるクロックサイクル値とが一致したときに、対応する動作電圧と動作周波数を、前記周波数制御レジスタと前記電圧制御レジスタにそれぞれ設定可能に構成され、
前記コントロールデータは、前記論理回路が前記処理を実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数と動作周波数関数とに基づいて算出され、
前記動作電圧関数と前記動作周波数関数は、第1動作電圧と第1動作周波数とを与えて前記論理回路に前記処理を実行させたときの、ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイルとして用意し、前記電力プロファイルに基づいて、前記クロックサイクルに対するプロセッサの負荷容量の関係を負荷容量関数として求め、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される、
半導体装置。
請求項12において、前記メモリは複数のデータレジスタを含んで構成され、前記制御回路はさらに、前記クロックをカウントするクロックカウンタと、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較する一致検出回路とを備え、
前記複数のデータレジスタには、前記コントロールデータに規定されるクロックサイクル値と対応する動作電圧と動作周波数を規定する設定データが保持され、
前記一致検出回路により、前記クロックカウンタによるカウント値と、前記データレジスタに保持されるクロックサイクル値とが一致したことが検出されたときに、対応する動作電圧と動作周波数とを規定する設定データが、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される、
半導体装置。
請求項12において、前記制御回路は、前記クロックをカウントするクロックカウンタをさらに備え、前記メモリは、前記コントロールデータのクロックサイクル値に対応するアドレスに、対応する動作電圧と動作周波数を規定する設定データが格納され、
前記メモリは、前記クロックカウンタの出力するクロックサイクル値がアドレスとして入力され、対応する動作電圧と動作周波数を規定する設定データが読み出され、前記制御回路は、前記メモリから読み出された動作電圧と動作周波数を規定する設定データを、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される、
半導体装置。
【発明を実施するための形態】
【0018】
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0019】
〔1〕<電力プロファイルから負荷容量をクロックサイクルの関数として算出>
本願において開示される代表的な実施の形態は、コンピュータによって設計支援プログラムを実行することによって、動作電圧と動作周波数が与えられクロック信号に同期して所定の処理を実行する論理回路(8)に対して、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを算出する、半導体装置の設計方法であって、以下のように構成される。
【0020】
前記論理回路に第1動作電圧(V0)と第1動作周波数(f0)とを与えて前記処理を実行させたときの、時間に対する消費電力の関係を、電力プロファイル(P(t)、2)として取得する(S1)。
【0021】
前記電力プロファイルに基づいて、前記処理の実行に伴うクロックサイクル(q(t))に対する、前記論理回路の負荷容量の関数を負荷容量関数(C(q))として求める(S4)。
【0022】
この負荷容量関数(C(q))に基づいて電力とクロックサイクルについてのオイラー方程式を満たすように、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを、それぞれクロックサイクルに対する理想的な関数(V(q), f(q))として算出する(S5)。
【0023】
これにより、消費エネルギーを削減するDVFS制御を実行可能な半導体装置を設計することができる。
【0024】
オイラー方程式を満たす条件して、前記負荷容量関数と前記クロックサイクルの時間微分の3乗との積(C(q)・(dq/dt)^3)を定数とする場合が例示される。算出されたC(q)を用いてC(q)・(dq/dt)^3=定数を満たすように動作電圧と動作周波数が算出されることになる。
【0025】
〔2〕<負荷容量関数の算出方法>
項1において、前記第1動作電圧と前記第1動作周波数は、前記処理を実行する期間を通してそれぞれ一定とされ、前記負荷容量関数は、前記電力プロファイルを前記クロックサイクルに関する関数に変換し(P(q)、S3)、変換された前記電力プロファイルと前記第1動作電圧と前記第1動作周波数とから算出される(C(q)=(P(q)-L(q))/(f0・V0
2)、S4)。
【0026】
これにより、クロックサイクルと負荷容量の関係(負荷容量関数C(q))を、容易に算出することができる。
【0027】
〔3〕<動作電圧と動作周波数を設定する命令をプログラムに埋め込む>
項1または項2において、前記論理回路は、プログラム(15)を実行可能であり、前記プログラムに含まれる命令によって動作電圧と動作周波数を設定可能なプロセッサ(8、21)を含んで構成される。
【0028】
クロックサイクルに対する関数としてそれぞれ算出された動作電圧(V(q))と動作周波数(f(q))とに基づいて、動作電圧と動作周波数を設定する命令を、前記処理を実行するプログラムに追加する。
【0029】
これにより、自身が実行するプログラムによって自らDVFS制御を実行するプロセッサにおいて、消費エネルギーを最小化するDVFS制御を実行させることが可能となる。当該命令によって設定すべき動作電圧と動作周波数は、クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数を、階段状の関数で近似することによって求めることができる。
【0030】
〔4〕<動作電圧と動作周波数を設定するコントロールデータ>
項1または項2において、前記論理回路には、前記論理回路に供給される動作電圧と動作周波数を設定可能な制御回路(5)が接続される。
【0031】
前記制御回路は、クロックカウンタ(10)を備え、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータ(4)を保持可能に構成される(9、90〜9n)。前記制御回路は、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較して、一致したときに、対応する動作電圧と動作周波数とを、前記論理回路に供給される動作電圧と動作周波数として設定可能に構成される(17)。
【0032】
前記半導体装置の設計方法は、クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数とに基づいて、前記コントロールデータを生成する。
【0033】
これにより、クロックサイクルに従って動作する論理回路において、消費エネルギーを最小化するDVFS制御を実行させることが可能となる。当該クロックサイクルにおいて設定すべき動作電圧と動作周波数は、クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数を、階段状の関数で近似することによって求めることができる。
【0034】
〔5〕<全てのクロックサイクルの設定値を備えるコントロールデータ>
項4において、前記コントロールデータは、前記処理におけるすべてのクロックサイクルについて、設定されるべき動作電圧と動作周波数とを含む。
【0035】
これにより、消費エネルギーが理論的に最小化された、理想的なDVFS制御を実行可能な半導体装置を設計することができる。
【0036】
〔6〕<CAD(Computer Aided Design)プログラム>
本願において開示される代表的な実施の形態は、コンピュータによって実行されることによって、項1から項5のうちのいずれか1項に記載の半導体装置の設計方法を、前記コンピュータに実行させる、設計支援プログラムである。
【0037】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能な半導体装置を設計するための、CADプログラムを提供することができる。
【0038】
〔7〕<シミュレーションによる電力プロファイル取得>
項6において、前記電力プロファイルは、前記論理回路のネットリスト情報に基づいて、シミュレーションによって算出される。
【0039】
これにより、論理回路の消費電力を実機で測定することなく、容易にサイクルベースの電力プロファイルを取得することができる。
【0040】
〔8〕<CADシステム>
本願において開示される代表的な実施の形態は、項6または項7に記載の設計支援プログラムを実行するコンピュータを備える、設計装置である。
【0041】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能な半導体装置を設計するための、CADシステムを提供することができる。
【0042】
〔9〕<マイコン>
本願において開示される代表的な実施の形態は、プロセッサ(21)と、前記プロセッサに供給するプログラムを格納可能なメモリ(22、23)と、前記プロセッサにクロックを供給可能なクロック供給回路(6)と、前記プロセッサに電源を供給可能な電源供給回路(7)と、制御回路(5)とを備える半導体装置(20)であって、以下のように構成される。
【0043】
前記制御回路は、前記クロック供給回路が前記プロセッサに供給する前記クロックの周波数を設定可能な周波数制御レジスタ(13)と、前記電源供給回路が前記プロセッサに供給する前記電源の電圧を設定可能な電圧制御レジスタ(14)とを備える。
【0044】
前記プロセッサの命令セットは、前記周波数制御レジスタと前記電圧制御レジスタに値を設定可能な命令を含んで構成される。
【0045】
前記プログラムは、所定の処理を前記プロセッサに実行させるルーチンを含み、前記ルーチンは、動作電圧と動作周波数を設定する命令を含む。
【0046】
前記ルーチンにおいて設定される前記動作電圧と前記動作周波数は、前記ルーチンを実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数(V(q))と動作周波数関数(f(q))とに基づいて、以下のように算出される。
【0047】
第1動作電圧と第1動作周波数とを与えて前記プロセッサに前記ルーチンを実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイル(P(q))として取得する。前記電力プロファイルに基づいて、クロックサイクル(q(t))に対する、前記プロセッサの負荷容量の関係を負荷容量関数(C(q))として求める(S4)。前記動作電圧関数と前記動作周波数関数(V(q), f(q))は、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される(S5)。
【0048】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能なプロセッサを含むマイコン等のLSI(Large Scale Integrated circuit)を提供することができる。
【0049】
〔10〕<複数のCPUを備えるマイコン>
項9において、前記プロセッサは、複数のCPU(21_1〜21_4)を含んで構成される。
【0050】
これにより、複数のCPUを備えて並列処理を実行可能なマイコン等のLSIにおいて、並列度を適宜調整しながら、消費エネルギーが最小化された、DVFS制御の実行を可能とすることができる。
【0051】
〔11〕<シングルチップ>
項9または項10において、前記半導体装置は、単一半導体基板上に構成される。
【0052】
これにより、シングルチップマイコン等のLSIにおいて、消費エネルギーが最小化された、DVFS制御を実行可能とすることができる。
【0053】
〔12〕<専用ハードウェア>
本願において開示される代表的な実施の形態は、クロックに同期して動作する論理回路(8)と、前記論理回路に前記クロックを供給可能なクロック供給回路(6)と、前記論理回路に電源を供給可能な電源供給回路(7)と、制御回路(5)とを備える半導体装置であって、以下のように構成される。
【0054】
前記制御回路は、前記クロック供給回路が前記論理回路に供給する前記クロックの周波数を設定可能な周波数制御レジスタ(13)と、前記電源供給回路が前記論理回路に供給する前記電源の電圧を設定可能な電圧制御レジスタ(14)と、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータ(4)を保持可能なメモリ(9、90〜9n)とを備える。前記論理回路の動作におけるクロックサイクルが前記メモリに保持されるクロックサイクル値とが一致したときに、対応する動作電圧と動作周波数を、それぞれ、前記周波数制御レジスタと前記電圧制御レジスタにそれぞれ設定可能に構成される。
【0055】
前記コントロールデータは、前記論理回路が前記処理を実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数(V(q))と動作周波数関数(f(q))とに基づいて、以下のように算出される。
【0056】
第1動作電圧と第1動作周波数とを与えて前記論理回路に前記処理を実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイル(P(q))として取得する(S1)。前記電力プロファイルに基づいて、クロックサイクル(q(t))に対する、前記論理回路の負荷容量の関係を負荷容量関数(C(q))として求める(S4)。前記動作電圧関数と前記動作周波数関数(V(q), f(q))は、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される(S5)。
【0057】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能な専用ハードウェアを含むLSIを提供することができる。論理回路(8)は、プロセッサなどの汎用的な或いはプログラマブルな汎用ハードウェアであっても良く、または何らかの信号処理等に特化された専用ハードウェアであってもよい。論理回路(8)がプロセッサである場合、項9や項10とは異なり、プログラムを改変する必要がない。
【0058】
〔13〕<変化点の設定値を保持するデータレジスタ>
項12において、前記メモリは複数のデータレジスタ(90〜9n)を含んで構成され、前記制御回路はさらに、前記クロックをカウントするクロックカウンタ(10)と、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較する一致検出回路(17)とを備える。
【0059】
前記複数のデータレジスタには、前記コントロールデータに規定されるクロックサイクル値と対応する動作電圧と動作周波数を規定する設定データが保持される。
【0060】
前記一致検出回路により、前記クロックカウンタによるカウント値と、前記データレジスタに保持されるクロックサイクル値とが一致したことが検出されたときに、対応する動作電圧と動作周波数とを規定する設定データが、それぞれ、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される。
【0061】
これにより、コントロールデータ4が階段状の制御で近似される場合に、変化点における動作電圧と動作周波数とを規定する設定データのみを、クロックサイクル値と対応付けて保持する、限られた数のデータレジスタを備えることにより、消費エネルギーが最小化された、DVFS制御を実行可能な専用ハードウェアを含むLSIを提供することができる。論理回路(8)は、プロセッサなどの汎用的な或いはプログラマブルな汎用ハードウェアであっても良く、または何らかの信号処理等に特化された専用ハードウェアであってもよい。
【0062】
〔14〕<1サイクル毎のコントロールデータを保持するメモリ>
項12において、前記制御回路は、前記クロックをカウントするクロックカウンタ(10)をさらに備える。前記メモリは、前記コントロールデータのクロックサイクル値に対応するアドレスに、対応する動作電圧と動作周波数を規定する設定データが格納される。前記メモリは、前記クロックカウンタの出力するクロックサイクル値がアドレスとして入力され、対応する動作電圧と動作周波数を規定する設定データが読み出される。前記制御回路は、前記メモリから読み出された動作電圧と動作周波数を規定する設定データを、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される。
【0063】
これにより、メモリ(9)には変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ(4)を、近似することなく、1サイクル毎に全て格納することができるので、消費エネルギーが理論的に最小化された、理想的なDVFS制御を行うことができる。また、DVFS対象回路がプロセッサを備えない専用ハードウェア、或いはプログラムの改変を許容しない特殊なプロセッサである場合にも、同様に、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータに基づくDVFS制御を行うことができる。
【0064】
〔15〕<コントロールデータを保持する不揮発性メモリ>
項14において、前記メモリは不揮発性メモリである。
【0065】
これにより、算出したコントロールデータ(4)を出荷前に不揮発性メモリであるメモリ(9)に書き込むことができ、例えば、個体ごとに最適化されたコントロールデータを書き込んで出荷することができる。
【0066】
〔16〕<シングルチップ>
項12または項15において、前記半導体装置は、単一半導体基板上に構成される。
【0067】
これにより、シングルチップLSIにおいて、消費エネルギーが最小化された、DVFS制御を実行可能とすることができる。
【0068】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0069】
〔実施形態1〕<変分法によるオイラー方程式解に基づくDVFS制御>
<アルゴリズム>
上述の代表的な実施の形態によって、消費エネルギーが理論的に最小化された、理想的なDVFS制御を実行可能とすることができる、原理について詳しく説明する。
【0070】
一般に、消費電力をP、消費エネルギー(電力量)をE、時刻をtとすると、Eに関して以下の積分式が成り立つ。
【0072】
図2は、DVFS制御においてDVFS制御の対象回路(論理回路)8を一定周波数fで動作させたときの消費電力Pの時間変動を表すグラフである。ここで、実際の論理回路8では、対象とする処理を実行する期間、動作周波数を一定に保って動作させた場合であっても、
図2に示されるように、消費電力Pは時間と共に変動する。
【0073】
DVFS制御において動作周波数fを一定としても、Pが時間変動する理由は、式1からわかるように、総負荷容量Cが時刻tの関数になっているからである。時刻tにおいて充放電される容量のみが消費電力Pに寄与するので、動作している全ての容量値の総和がCである。そして、式2からわかるように、
図2にハッチングで示される、消費電力Pの面積値が消費エネルギーEの値となる。
【0074】
ここで、対象の論理回路8に供給されるクロックが、時刻tにおいて、対象とする処理の開始時刻0から数えて何番目のクロックであるかを示す変数をq(t)として導入する。
図3は、
図2に示される消費電力Pの時間変動を表すグラフの横軸の変数を、q(t)に書き換えたグラフである。消費電力Pは、
図2に示されるように時刻tの関数として観測されるが、本質的にはq(t)の関数と考えることができる。また、式1における総負荷容量Cとリーク電力Lについても、一般的にq(t)の関数と考えることができるので、それぞれ、C(q)、L(q)と表すことができる。対象の論理回路8がクロックに同期して動作する回路だからである。このとき、動作周波数fは、qの1階微分に等しいので、以下の式で記述できる。
【0076】
また、DVFS制御では、動作電圧Vは、動作周波数fの関数V(f)として制御するので、V(dq/dt)と記述することができる。DVFS制御においては例えば、V(dq/dt) = a・dq/dt (aは定数)等のように制御できる。
【0077】
以上の変数定義を式1に代入すると以下の式4となり、さらに式2に代入すると式5のようになる。
【0080】
この式5から、消費エネルギーEは、変数q(t)の汎関数となっており、q(t)の関数形に応じて、積分値Eの値が増減することがわかる。
【0081】
式5によって算出される消費エネルギーEの値を最小化するq(t)を求めるために、式5に変分法の数学を適用する。このとき、式5の値を最小化する条件から、以下のオイラー方程式が成り立つことが示される。
【0083】
変分法によれば、式6の解q(t)は、式5の積分の始点(開始時刻)と、終点(終了時刻)を固定させた拘束条件の元での、式5の値の最小値を与える。すなわち、式4で表される消費電力Pを、式6に代入して微分方程式を解けば、その解として算出されるq(t)が消費エネルギーEを最小化するための周波数・電圧制御の方式、即ち、時刻tにおける最適な動作周波数と動作電圧を与える関数f(t)とV(t)とが得られる。
【0084】
図1は、実施形態1に係る半導体装置の設計方法を表すフローチャートである。
【0085】
まず、DVFS制御の対象である論理回路8に、DVFS制御の対象の処理を実行させて、消費電力Pの時間変化を測定する(S1)。このときの動作周波数と動作電圧には特に制限はないが、適当な一定値、例えばf(t)=f0とV(t)=V0を与えるとよい。消費電力測定は、シミュレーションによって行っても、実機評価によって行ってもよい。この結果、電力プロファイルP(t)(2)が得られる。この電力プロファイルは、実際には、時刻t=t1, t2, t3, …tNのそれぞれに対する電力P=P1, P2, P3,…PNの離散値で取得される。ここで時刻tmはtm=m/f0で表され、mは1からNまで整数を示している。すなわち(t, P)=(t1, P1), (t2, P2), (t3, P3), …(tN, PN)からなるN個の組の電力プロファイルが得られる。
【0086】
次に、得られた電力プロファイルP(t)(2)に基づいて、論理回路8の動作周波数及び動作電圧を算出する(S2)。後述するステップS3ないしS6を含めステップS2はコンピュータがプログラムを実行することにより実現される。
【0087】
この動作周波数及び動作電圧の算出においては、電力及びクロックサイクルについてのオイラー方程式を利用することが特徴的である。よってステップS2はオイラー方程式解を計算するステップとも呼ぶ。
【0088】
具体的には、まず変数変換を行う(S3)。即ち、上述のクロックサイクル関数q(t)を導入し、時刻t=t1, t2,…tNがq=q1, q2, …qNに変換される。ただし時刻はtm=m/f0としている場合にはクロックサイクルは単にq=1, 2, 3, …Nの整数で表される。つまりクロックサイクルq(t)は始点t=0からの時間tまでのクロックカウント数を示す。電力プロファイルP(t)はクロックサイクルq(t)に関する関数P(q)に書き換えられ、クロックサイクルq=1, 2, 3, …Nにそれぞれ電力P=P1, P2. P3, …PNの対応づけられた電力プロファイルが生成される。すなわち(t,P)から(q, P)に変数変換された (1, P1), (2, P2), (t3, P3), …(N, PN)の電力プロファイルが用意される。
【0089】
負荷容量Cとリーク電力Lについても、同様に電力プロファイル情報P(t)=P(q)から、クロックサイクルq(t)に関する負荷容量関数C(q)とリーク電力関数L(q)を求めて、式4の関数形を決定する。式4において、以下の値は既知の値である。
【0090】
Pは、電力プロファイルデータより、各qの値毎に値が決まる。
【0091】
dq/dtは、電力プロファイル取得時の周波数値(例えばf(t) = f0)で与えられる。
【0092】
V(dq/dt)は、電力プロファイル取得時の電圧値(例えばV(t) = V0)で与えられる。
【0093】
L(q)は、リーク電力なので、一般的にはqによらず、ある一定値Lと規定できる。
【0094】
式4においてC(q)以外は、定数の値が与えられるので、式4をC(q)について解いて、C(q)=(P(q)-L)/(f0・V0
2)が決定される(S4)。よって、クロックサイクルに関する負荷容量関数はq=1,2,3, …NにそれぞれC=C1, C2, C3, …CNが対応づけられた形で得られる。ここでCm=(Pm-L) /(f0・V0
2)である。
【0095】
他方、オイラー方程式である式6に式4を代入して求められるq(t)がオイラー方程式解となる。このオイラー方程式解q(t)を満たす動作周波数及び動作電圧をそれぞれ求める。
【0096】
ここで半導体装置の動作として現実的な近似として、式4においてC=C(q)、V=a・dq/dt、L=0と近似した場合、消費電力P(q)は以下の式で表される。aはある正の整数である。
【0098】
この時、式7の関係のもと式6のオイラー方程式を満たす条件は、式6のオイラー方程式の第一積分より下式が与えられる。
【0100】
よって、C=C(q)、V=a・dq/dt、L=0の場合は、処理すべき時間内で、消費電力P(t)が時刻tによらず一定となるようにDVFS制御することが、最小エネルギーを与えることがわかる。式8を解くと、以下の式9が得られ、オイラー方程式を満たすための条件となる。式9自身がオイラー方程式の解とも言える。
【0102】
これから、最小エネルギーを与える動作周波数f(q)と動作電圧V(q)を得ることができる(S5)。
【0103】
具体的には式3の関係から、f=(k/C(q))
1/3である。ここでC(q)として、ステップS4により得られた負荷容量関数(C1, C2, C3, …CN)が用いられる。よって動作周波数fはq=1, 2, 3,…Nに対するそれぞれf=f1, f2, f3,…fNの形で容易に求められる。ここでfm= (k/Cm)
1/3={(k・f0・V0
2)/(Pm-L)}
1/3である。
【0104】
またV=a・dq/dt= a・fの関係から、動作電圧Vはq=1, 2, 3, …Nそれぞれに対するV=V1, V2, V3, …VNの形で求められる。ここでVm=a・fm= a・(k/Cm)
1/3=a・{(k・f0・V0
2)/(Pm-L)}
1/3である。kの求め方は次のとおりである。
【0105】
式9から∫k
1/3dt=∫C(q)
1/3dqが得られる。左辺はt=0〜tNの範囲で関数k
1/3をtで積分することを意味し、kは定数であるため単純にk
1/3・tNとなる。右辺はq=0〜Nの範囲で関数C(q)
1/3をqで積分することを意味する。右辺はステップS4で得られた負荷容量関数(C1, C2, C3, …CN)を用いてΣCm
1/3=(C1)
1/3+(C2)
1/3+(C3)
1/3+…+(CN)
1/3と計算される。従ってk=[{(C1)
1/3+(C2)
1/3+(C3)
1/3+…+(CN)
1/3}/tN]
3と求めることができる。このようにして、(q, f, V)=(1, f1, V1), (2, f2, V2), (3, f3, V3), …(N, fN, VN)が、クロックサイクル数に対する動作周波数及び動作電圧のコントロールデータ(f(q), V(q))(4)となる。
【0106】
このコントロールデータはS4で導出された負荷容量関数に基づき、オイラー方程式を満たすよう算出されたので消費電力エネルギーをできる限り最小化するDVFS制御を与える。これにより、消費エネルギーを削減できるDVFS制御を実行可能な半導体装置を設計することができる。
【0107】
図4は、クロックカウントq(t)の時間変動を表すグラフである。従来のDVFS制御においては、周波数が一定となるように制御するので、q(t)は、
図4の破線のようにtの比例関数、すなわちq(t)=f0・tの関係となる。それに対し、上述のアルゴリズムを用いて最適化した場合、クロックカウントq(t)は、始点t=0におけるクロックカウントq(0)=0、終点t=Tにおけるクロックカウントq(T)が一致するものの、その軌跡は、
図4に実線で示されるように、必ずしも直線とはならない。クロックカウントqと時刻tとの関係を示すq(t)は、ステップS5で得られる(q, f)から理解される。すなわちq=1のときはt=1/f1であり、q=2のときはt=1/f1+1/f2である。q=jのときの時刻tj’はtj’=Σ(1/fm)、すなわちm=1からjまでの1/fmの和である。終点であるq=N、すなわちj=Nのときはm=1からNまでの1/fmの和であるが、定数kを上記のとおり決定したことによりtN’=tNとなる。q(t)として(q, t)=(1,t1’), (2, t2’), …(N, tN’)が得られる。
【0108】
ここで、上述のアルゴリズムを用いて最適化した場合の、消費エネルギー削減の効果を、定量化して示す。定量化の計算を簡略化するために、電力プロファイルP(t)を
図5のように仮定する。DVFS制御の対象である処理が実行される時刻を、時刻0からnτまでとし、時刻0からτまでの消費電力P=P0一定、時刻τからnτまでの消費電力P=mP0一定とする。ここで、mとnは任意の正の実数である。
【0109】
この時、式8のオイラー方程式解に基づくDVFS制御による消費エネルギーをA、一定周波数でのDVFS制御による消費エネルギーをBと置くと、 消費エネルギーの比率は、以下の式10を用いて算出される。
【0111】
式10を用いて算出される、mとnの値ごとの比率A/Bの値を
図6に示す。
図6に示すように、式8のオイラー方程式解に基づくDVFS制御を実施すれば、従来の一定周波数で実行するDVFS制御の消費エネルギーに比べて、消費エネルギーを削減することができる。
【0112】
必須ではないが、
図1に示す補正処理S6をステップS5の後に実行してもよい。クロック供給回路及び電源供給回路は、ハードウェアの設計上、サイクル毎に瞬時に(V(q), f(q))を変化させることができない場合がありうる。その際には、ステップS5の後、コントロールデータの動作電圧及び/又は動作周波数の変化回数がより少なくなるように、当該コントロールデータを補正する補正処理S6を実施することが望ましい。ここでは、コントロールデータである関数(V(q), f(q))に対する間引き処理S6を例示する。クロック供給回路及び電源供給回路の能力の制限により時間taが、例えば100μs間隔毎の変化しか許容できない場合は、関数((V(q), f(q))の値が時間100μs毎に変化するように関数((V(q), f(q))を修正する。
【0113】
具体的には、まずステップS5で求めた(q, f)からq(t)を算出する。上述したように(q, t)の関係を算出し、コントロールデータとしては、時刻が加えられた(q, f, V, t)=(1, f1, V1, t1’), (2, f2, V2, t2’), …(tN, fN, VN, tN’)のN個のデータが得られる。
【0114】
次いで、時刻tの情報に基づき、N個のデータを時間ta毎にサンプリングを行う。例えば始点である時刻0から時間taを超える最初の時刻に対するコントロールデータ(q, f, V)=(s1, fs1, Vs1)を抽出する。時刻0から時間2・taを超える最初の時刻に対するコントロールデータ(s2, fs2, Vs2)を抽出する。これを時刻3・ta, 時刻4・ta…毎に時刻tN’に到達するまで繰り返し、最終的にはステップS5で求めたN個コントロールデータを間引いて、(s1, fs1, Vs1), (s2, fs2, Vs2), (s3, fs3, Vs3), …・(sn, fsn, Vsn)のsn個のコントロールデータに削減する。snはtN/taを超えない最大の整数となる。sn個のコントロールデータが求めるべきコントロールデータ(4)として生成される。
【0115】
またコントロールデータ(4)を決定する前に、sn個のコントロールデータに基づいて消費電力を算出してもよい。算出された消費電力が、ステップS1で得られた電力プロファイル(2)による消費電力よりも大きくなった場合には、時間taよりも大きい時間毎のサンプリングで間引き処理を再度実行してもよい。再実行の結果のサンプリングデータに基づき算出された消費電力が、電力プロファイル(2)による消費電力よりも小さくなることを検証したとき、コントロールデータ(4)とする。
【0116】
<半導体装置の設計方法>
図7は、本実施形態のアルゴリズムを適用した半導体装置の設計方法の一例を表す説明図である。
【0117】
まず最初にDVFS対象回路8(CPU等の論理回路)に対するシミュレーションツールあるいは実機評価環境1により、電力プロファイル情報2を得る。電力プロファイル情報2は、例えば、DVFS対象回路8に、周波数一定のクロックと一定電圧の動作電圧を与え、DVFS対象の処理を実行させた場合の、消費電力の時間変動データP(t)である。アルゴリズム上、周波数と動作電圧は既知であれば良く、必ずしも一定とする必要はないが、一定とすることにより、後段の計算を不必要に複雑化させないのが好適である。
【0118】
そして、得られた電力プロファイル情報2のデータを用いて、オイラー方程式解の計算ツール3により、変分法のオイラー方程式解に基づく周波数・電圧コントロールデータ4を得る。このコントロールデータ4の値に従って、DVFS制御回路5は、クロック供給回路6と電源供給回路7を制御する。クロック供給回路6は、DVFS制御回路5からの周波数コントロール指示に従って、指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、制御回路5からの電圧コントロール指示に従って、指定された電圧の電源を、DVFS対象回路8に供給する。
【0119】
オイラー方程式解の計算ツール3は、コンピュータがプラグラムを実行することにより実現されるものであり、
図1を引用して説明したアルゴリズムのように動作する。得られた電力プロファイル情報2から、電力プロファイルP(t)をクロックサイクルq(t)に関する関数P(q)に書き換え、負荷容量Cとリーク電力Lについても、式4を使って、電力プロファイル情報P(q)から、クロックサイクルq(t)に関する負荷容量関数C(q)とリーク電力関数L(q)を求める。次にオイラー方程式である式6に、式4を代入して、変分法のオイラー方程式解としてのq(t)を求め、求めたq(t)から動作周波数f(q)及び動作電圧V(q)のコントロールデータ4を求めることができる。
【0120】
コントロールデータ4では、クロック1サイクル毎に、最適の動作周波数と動作電圧を規定することができる。動作周波数と動作電圧を1サイクル毎に細かく制御することにより、DVFS制御の対象である処理に必要な消費エネルギーE(消費電力Pの積分値)を、理論的に最小の値に抑えることができる。実用上は、1サイクル毎の細かい制御に替え、適当なサイクル毎に動作周波数と動作電圧を階段状に変化させることにより、理想状態に近似する低い消費エネルギーで、当該処理を実行させることができる。上記「適当なサイクル毎」は、コントロールデータ4の理想的な曲線を、階段状の制御で近似するときに、当該対象処理を完了すべき時刻の制約を満たしながら、できる限り誤差を小さくするために、適切なタイミングで切り替えればよい。従来のDVFS制御を実施する場合には、設計者が適当な処理の単位で段階的に切替える方法が採用されるが、これが消費エネルギーを最小化するために適切な区切りの単位である保証は全くない。これに対して、実際に取得した消費電力プロファイルに基づいて区切りの単位を決めることにより、消費エネルギーを最小限とするために最適の制御が可能となる。
【0121】
〔実施形態2〕<コントロールデータをプログラムに埋め込むプロセッサ>
図8は、実施形態2に係る、半導体装置の設計方法を適用した適用例を表す説明図である。
【0122】
半導体装置100は、DVFS制御対象回路8とDVFS制御回路5とクロック供給回路6と、電源供給回路7とを備えて構成される。DVFS制御回路5は、周波数制御レジスタ13と電圧制御レジスタ14を備える。DVFS制御対象回路8に対して、クロック供給回路6は周波数制御レジスタ13によって指定される周波数の動作クロックを供給し、電源供給回路7は電圧制御レジスタ14によって指定される動作電圧の電源を供給する。DVFS制御対象回路8は、プログラムが格納されたコードメモリ16を有するCPU(Central Processing Unit)などのプロセッサを備え、周波数制御レジスタ13と電圧制御レジスタ14にデータを書き込むことができる。例えば、DVFS制御回路5は、DVFS制御対象回路8に内蔵されるプロセッサのバスに接続される周辺回路モジュールの1つとされ、周波数制御レジスタ13と電圧制御レジスタ14はプロセッサのメモリ空間にアドレスマッピングされる。プロセッサは、メモリに対するロード/ストア命令によって周波数制御レジスタ13と電圧制御レジスタ14にアクセスすることができる。また、特に制限されないが、半導体装置100は、例えば、公知のCMOSLSI(Large Scale Integrated circuit)の製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【0123】
本実施形態2に係る半導体装置100の設計方法では、
図7に示した実施形態と同様に、DVFS対象回路8に対するシミュレーションツールあるいは実機評価環境1により、電力プロファイル情報2を得る。このとき、コードメモリ16に格納されるプログラムを、一定のクロック周波数でDVFS対象回路8が備えるプロセッサで実行する。得られた電力プロファイル情報2のデータを用いて、オイラー方程式解の計算ツール3により、オイラー方程式解に基づく周波数・電圧コントロールデータ4を得る。本実施形態では、さらに、コントロールデータ4から、変分法のオイラー方程式解に基づくプログラムコード15を生成する。
【0124】
周波数・電圧コントロールデータ4には、各クロックサイクルに対して最適の動作周波数と動作電圧が規定されているので、これを適当な階段状の制御によって近似し、動作周波数と動作電圧を変更するクロックサイクルを求める。DVFS対象の処理を実行するためプログラムコードにおいて、上記で算出されたクロックサイクルを実行するプログラムステップに、周波数制御レジスタ13と電圧制御レジスタ14にコントロールデータ4から求めた動作周波数と動作電圧を指定するデータを書き込む命令を追加する。生成されたプログラムコード15は、コードメモリ16に格納される。コードメモリ16は、例えば、DVFS対象回路8に内蔵され、予めプログラムコード15が格納される不揮発性メモリ(ROM:Read Only Memory)として構成されてもよい。または、コードメモリ16は、DVFS対象回路8に内蔵される揮発性のRAM(Random Access Memory)として構成されて、ブート処理などによって外部からプログラムコード15が転送され、書き込まれるように構成されてもよい。
【0125】
本実施形態2の実施手順について説明する。
【0126】
図9は、コントロールデータ4を組み込む前のプログラムの例を表す説明図である。DVFS制御対象回路8に含まれるプロセッサによって実行されるプログラムを模式的に示したもので、命令8〜命令2000が、DVFS制御対象の処理であるとする。このプログラムを、DVFS制御対象回路8のプロセッサが実行したときの消費電力プロファイルを、シミュレーションツールまたは実機評価環境1を使って取得する。
【0127】
図10は、取得した電力プロファイル2の例を表す、模式的な波形図である。時刻t0、t1、t2が、それぞれ命令8、命令1026、命令2001が実行される時刻とする。時刻t0〜t2が
図9に示されるプログラムの中でDVFS対象処理が実行される期間である。
図10に示される電力プロファイル2では、時刻t0〜t1の消費電力をP0とし、時刻t1〜t2の消費電力をP1として示される。このように、
図10の電力プロファイル例においては、DVFS対象処理の期間の中で、電力が変化する時刻は、t1だけであると仮定して説明する。
【0128】
図8に示される手順に従って、
図10で示される電力プロファイルデータ2から、オイラー方程式解の計算ツール3を利用することにより、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4が得られる。
図11は、算出されたコントロールデータ4の例を示す表である。アドレスのカラムに記載されるアドレスは、DVFS対象処理が開始されてからの、クロックサイクル数を表す。各データ末尾の文字「H」は16進数であることを示している。アドレス0000Hが、命令8の実行クロックサイクルに対応する。同様に、アドレス0233Hが、命令1026の実行クロックサイクルに対応する。また、アドレス0385Hが、命令2001の実行クロックサイクルに対応する。周波数と電圧のカラムには、各アドレス、即ちDVFS対象処理が開始されてからのクロックサイクル数の実行サイクルにおいて、それぞれ、周波数制御レジスタ13と電圧制御レジスタ14に設定されるべきデータが表記されている。周波数制御レジスタ13と電圧制御レジスタ14に、アドレス0000H〜0232Hの期間にはデータ60Hと50Hがそれぞれ設定され、アドレス0233H〜0384Hの期間にはデータ80Hと74Hがそれぞれ設定されることにより、動作周波数と動作電圧がオイラー方程式解に基づいて制御され、DVFS対象処理に要する消費エネルギーEが最小化される。
【0129】
周波数及び電圧コントロールデータ4に基づいて作成される変分法のオイラー方程式解に基づくプログラムコード15について説明する。
図12は、コントロールデータ4が組み込まれた後のプログラムの例を表す説明図である。
図9に示されるコントロールデータ4が組み込まれる前のプログラムに対して、DVFS制御に必要な命令を挿入する。まず、DVFS制御が開始される命令8の直前に、命令Aを挿入する。命令Aは、周波数制御レジスタ13と電圧制御レジスタ14への書きこみ命令であり、書き込み内容は、
図11のアドレス0000Hのデータの60Hと50Hである。次に、
図11のコントロールデータによれば、アドレス0233Hで周波数と電圧を変更する必要があるので、アドレス0233Hで実行される命令を求める。アドレス0233Hで実行される命令が、命令1026であることが求められ、命令1026の直前に命令Bを挿入する。命令Bは、周波数制御レジスタ13と電圧制御レジスタ14への書きこみ命令であり、書き込み内容は、
図11のアドレス0233Hのデータの80Hと74Hである。最後に、DVFS制御が終了する命令2000の直後に命令Cを挿入する。命令Cは、周波数制御レジスタ13と電圧制御レジスタ14への書きこみ命令であり、書き込み内容は、
図11のアドレス0385Hのデータの40Hと30Hである。ここで、DVFS制御を行わない時の、周波数制御レジスタ13と電圧制御レジスタ14に書き込むべき初期値をそれぞれ40Hと30Hと仮定している。
【0130】
以上のように、変分法のオイラー方程式解に基づくDVFS制御を行うために、コントロールデータ4が組み込まれた後のプログラムコード15は、コードメモリ16に格納される。
【0131】
DVFS対象回路8が、コードメモリ16の内容を実行する際の動作を説明する。最初、周波数制御レジスタ13には初期値40Hが書かれており、電圧制御レジスタ14には初期値30Hが書かれているとする。この状態で、DVFS対象回路8は、
図12に示されるプログラムの命令を命令1から順番に実行していく。そして、DVFS対象回路8は、命令7の後に、上述のように挿入された命令Aを実行する。この命令Aの実行により、周波数制御レジスタ13と電圧制御レジスタ14には、それぞれ60Hと50Hが書き込まれる。それに応じて、クロック供給回路6は、周波数制御レジスタ13の値によって指定された周波数のクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値によって指定された電圧の電源を、DVFS対象回路8に供給する。
【0132】
その後、DVFS対象回路8は、命令8以降の命令を順次実行していき、命令1025の後に、命令Bを実行する。この命令Bの実行により、周波数制御レジスタ13と電圧制御レジスタ14には、それぞれ80Hと74Hが書き込まれる。それに応じて、クロック供給回路6は、周波数制御レジスタ13の値によって指定された周波数のクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値によって指定された電圧の電源を、DVFS対象回路8に供給する。
【0133】
その後、DVFS対象回路8は、命令1026以降の命令を順次実行していき、命令2000の後に、命令Cを実行する。この命令Cの実行により、周波数制御レジスタ13と電圧制御レジスタ14には、それぞれ40Hと30Hが書き込まれる。それに応じて、クロック供給回路6は、周波数制御レジスタ13の値によって指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値によって指定された電圧の電源を、DVFS対象回路8に供給する。
【0134】
以上のように、DVFS制御において、周波数及び電圧を変化させる頻度が低い場合には、DVFS対象回路8の中のプロセッサ(CPU)によって直接、周波数制御レジスタ13と電圧制御レジスタ14を制御できる構成にすることにより、DVFS制御回路5を構成するハードウェアの回路量を削減することができる。
【0135】
〔実施形態3〕<コントロールデータを記憶装置に保持する専用ハードウェア>
図13は、実施形態3に係る半導体装置の設計方法を適用した適用例を表す説明図である。
【0136】
本実施形態3に係る半導体装置100の設計方法では、
図7に示した実施形態と同様に、DVFS対象回路8に対するシミュレーションツールあるいは実機評価環境1により、電力プロファイル情報2を得る。このとき、コードメモリ16に格納されるプログラムを、一定のクロック周波数でDVFS対象回路8が備えるプロセッサで実行する。得られた電力プロファイル情報2のデータを用いて、オイラー方程式解の計算ツール3により、オイラー方程式解に基づく周波数・電圧コントロールデータ4を得る。周波数・電圧コントロールデータ4には、各クロックサイクルに対して最適の動作周波数と動作電圧が規定されているので、これを適当な階段状の制御によって近似し、動作周波数と動作電圧が変化するクロック数を求める。
【0137】
半導体装置100は、DVFS制御対象回路8とDVFS制御回路5とクロック供給回路6と、電源供給回路7とを備えて構成される。DVFS制御回路5は、周波数制御レジスタ13と電圧制御レジスタ14と制御回路12とDVFS制御レジスタ11とクロック数カウンタ10とデータレジスタ90〜9nとクロック数一致検出/データ出力回路17とを備える。DVFS制御対象回路8に対して、クロック供給回路6は周波数制御レジスタ13によって指定される周波数の動作クロックを供給し、電源供給回路7は電圧制御レジスタ14によって指定される動作電圧の電源を供給する。
【0138】
DVFS制御回路5において、データレジスタ90〜9nには、コントロールデータ4のうちの主なデータが、クロックカウント値とそのときの動作周波数と動作電圧とを組にして格納される。クロック供給回路6からDVFS制御対象回路8に供給されるクロック信号は、クロック数カウンタ10によってカウントされる。図示が省略されるが、クロック数カウンタ10はDVFS対象処理が開始される時点で初期化(リセット)される。クロック数一致検出/データ出力回路17は、クロック数カウンタ10から出力されるクロック数と、データレジスタ90〜9nに格納されるクロックカウント値とを比較して、一致したときに、対応する動作周波数と動作電圧を制御回路12に出力し、制御回路12を介して、周波数制御レジスタ13と電圧制御レジスタ14とにそれぞれ書き込む。DVFS制御レジスタ11は、DVFS制御を開始するためのスタートビットを格納するレジスタである。DVFS対象回路8がこのスタートビットをセットすると、制御回路12は、DVFS制御を開始する。
【0139】
本実施形態3の実施手順について、説明する。
【0140】
図13に示される手順に従って、電力プロファイルデータ2から、オイラー方程式解の計算ツール3を利用することにより、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4が得られる。
図14は、算出されたコントロールデータ4の例を示す表である。アドレスのカラムに記載されるアドレスは、DVFS対象処理が開始されてからの、クロックサイクル数を表す。ここでは、説明を簡略化するために、コントロールデータ4がクロック数に対して階段状に変化するとした一例が示される。
図14に示されるコントロールデータ4が、オイラー方程式解の計算ツール3により得られたオイラー方程式解に基づく周波数・電圧コントロールデータから、階段状に近似して求められた、クロック数に対する動作周波数と動作電圧の関係を規定するものであってもよい。
【0141】
クロック数0000HはDVFS制御の開始時刻に対応する。そして、クロック数0000Hから0232Hまでは、周波数と電圧のデータはそれぞれ60Hと50Hで変わらない。クロック数0233Hで周波数と電圧データがそれぞれ80Hと74Hに変化して、その後0384Hまでは変わらない。クロック数0385Hで周波数と電圧データがそれぞれ90Hと86Hに変化して、その後04A0Hまでは変わらない。また、クロック数04A1Hで周波数と電圧データがそれぞれ70Hと66Hに変化して、その後0600Hまでは変わらない。そして、クロック数0601HでDVFS制御は終了する。
【0142】
図14の表に示される、コントロールデータ4の変化ポイントのデータは、DVFS対象回路8に対するDVFS制御を始める以前の動作により、データレジスタ90〜94に順に格納される。例えば、コントロールデータ4の変化ポイントのデータを不揮発性メモリに格納しておき、パワーオンリセットや電源投入時の初期化ルーチンによって、データレジスタ90〜94に順次転送することができる。具体的には、
図14の(クロック数/周波数/電圧)=(0000H、60H、50H)のデータを、データレジスタ90に格納する。(クロック数/周波数/電圧)=(0233H、80H、74H)のデータを、データレジスタ91に格納する。(クロック数/周波数/電圧)=(0385H、90H、86H)のデータを、データレジスタ92に格納する。(クロック数/周波数/電圧)=(04A1H、70H、66H)のデータを、データレジスタ93に格納する。最後に、DVFS制御終了ポイントである(クロック数/周波数/電圧)=(0601H、00H、00H)のデータを、データレジスタ94に格納する。
【0143】
次に、
図13を参照して、本実施形態3に係る半導体装置100の動作について説明する。
【0144】
最初は、DVFS制御が開始されていないので、周波数制御レジスタ13と電圧制御レジスタ14にはある標準的な初期値が設定されており、その値に従って、クロック供給回路6と電源供給回路7は、クロック及び電源電圧をDVFS対象回路8に供給する。そして、DVFS対象回路8が、DVFS制御レジスタ11のスタートビットをセットすると、制御回路12が動作を開始する。制御回路12はクロック数カウンタ10のクロック数カウント動作を開始させる。この後DVFS制御が開始されると、クロック数カウンタ10の初期値が0000Hになるので、クロック数一致検出/データ出力回路17が、データレジスタ90に格納されているクロック数の0000Hとクロック数カウンタ10のクロックカウント値の一致を検出して、データレジスタ90に格納されている、対応する周波数と電圧のデータを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、DVFS対象回路8に供給する。
【0145】
この後、クロック数カウンタ10の値は、0000Hから順に進んでいき、クロック数カウンタ10の値が0233Hになると、クロック数一致検出/データ出力回路17が、データレジスタ91に格納されるクロック数の0233Hとクロック数カウンタ10の値の一致を検出して、データレジスタ91に格納されている、対応する周波数と電圧のデータを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、DVFS対象回路8に供給する。
【0146】
この後、クロック数カウンタ10の値は、更に進んでいき、クロック数カウンタ10の値が0385Hになると、クロック数一致検出/データ出力回路17が、データレジスタ92に格納されるクロック数の0385Hとクロック数カウンタ10の値の一致を検出して、データレジスタ92に格納されている対応する周波数と電圧のデータを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、DVFS対象回路8に供給する。
【0147】
この後、クロック数カウンタ10の値は、更に進んでいき、クロック数カウンタ10の値が04A1Hになると、クロック数一致検出/データ出力回路17が、データレジスタ93に格納されるクロック数の04A1Hとクロック数カウンタ10の値の一致を検出して、データレジスタ93に格納されている対応する周波数と電圧のデータを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、DVFS対象回路8に供給する。
【0148】
この後、クロック数カウンタ10の値は、更に進んでいき、クロック数カウンタ10の値が0601Hになると、クロック数一致検出/データ出力回路17が、データレジスタ94に格納されるクロック数の0601Hとクロック数カウンタ10の値の一致を検出して、データレジスタ94に格納されている対応する周波数と電圧のデータを制御回路12に転送する。ただし、この時の周波数と電圧のデータデータは0000Hである。制御回路12は、0000Hデータを受け取ると、DVFS制御が終了したことを検知して、周波数制御レジスタ13及び、電圧制御レジスタ14に、標準的な初期値を設定する。同時に、制御回路12は、DVFS制御レジスタ11のスタートビット及び、クロック数カウンタ10の値をクリアする。
【0149】
以上のように、DVFS制御回路5にクロック数カウンタ10とデータレジスタ90〜9nとクロック数一致検出/データ出力回路17と制御回路12を設けることにより、DVFS対象回路8が備えるプロセッサ(CPU)に与えるプログラムを改変することなく、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4に基づくDVFS制御を行うことができる。さらには、DVFS対象回路8がプロセッサを備えない専用ハードウェア、或いはプログラムの改変を許容しない特殊なプロセッサである場合にも、同様に、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4に基づくDVFS制御を行うことができる。
【0150】
〔実施形態4〕<1サイクル毎のコントロールデータ>
図15は、実施形態4に係る、半導体装置の設計方法を適用した適用例を表す説明図である。
【0151】
本実施形態4に係る半導体装置100の設計方法では、
図7に示した実施形態と同様に、DVFS対象回路8に対するシミュレーションツールあるいは実機評価環境1により、電力プロファイル情報2を得る。このとき、コードメモリ16に格納されるプログラムを、一定のクロック周波数でDVFS対象回路8が備えるプロセッサで実行する。得られた電力プロファイル情報2のデータを用いて、オイラー方程式解の計算ツール3により、オイラー方程式解に基づく周波数・電圧コントロールデータ4を得る。周波数・電圧コントロールデータ4には、各クロックサイクルに対して最適の動作周波数と動作電圧が規定されている。実施形態2と3においては、これを階段状の制御に近似する例を示したが、本実施形態においては1サイクル毎のコントロールデータ4を使って、1サイクル毎に動作周波数と動作電圧を制御することにより、最適なDVFS制御を実現する。
【0152】
半導体装置100は、DVFS制御対象回路8とDVFS制御回路5とクロック供給回路6と、電源供給回路7とを備えて構成される。DVFS制御回路5は、周波数制御レジスタ13と電圧制御レジスタ14と制御回路12とDVFS制御レジスタ11とクロック数カウンタ10とメモリ9とを備える。DVFS制御対象回路8に対して、クロック供給回路6は周波数制御レジスタ13によって指定される周波数の動作クロックを供給し、電源供給回路7は電圧制御レジスタ14によって指定される動作電圧の電源を供給する。
【0153】
DVFS制御回路5において、コントロールデータ4はメモリ9に格納される。例えば、オイラー方程式解によって得られた各サイクルをメモリ9のアドレスとし、そのアドレスに対応する周波数・電圧のコントロールデータ4を格納する。クロック数カウンタ10は、クロック供給回路6から、DVFS対象回路8に供給されるクロック数をカウントするカウンタである。このクロック数カウンタ10の値は、メモリ9のアドレスに入力され、対応する周波数・電圧のコントロールデータ4が読み出される。読み出された周波数・電圧コントロールデータ4は、制御回路12を介して、周波数制御レジスタ13と電圧制御レジスタ14とにそれぞれ書き込まれる。DVFS制御レジスタ11は、DVFS制御を開始するためのスタートビットを格納するレジスタである。DVFS対象回路8がこのスタートビットをセットすると、制御回路12は、DVFS制御を開始する。
【0154】
本実施形態4の実施手順について説明する。
【0155】
図15に示される手順に従って、電力プロファイルデータ2から、オイラー方程式解の計算ツール3を利用することにより、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4が得られる。
【0156】
図16は、DVFS制御対象回路(CPU等)8が実行するプログラムの例を表す説明図である。命令7〜命令99がDVFS対象処理であり、命令6を実行することにより、DVFS対象回路8がこのスタートビットをセットする。
図15に示される、DVFS対象回路8に対するシミュレーションツールあるいは実機評価環境1では、DVFS対象処理である命令7〜命令99を実行することにより、電力プロファイル情報2を得る。得られた電力プロファイル情報2のデータを用いて、オイラー方程式解の計算ツール3により、オイラー方程式解に基づく周波数・電圧コントロールデータ4を得る。
【0157】
図17は、算出されたコントロールデータ4の数値例と、それがメモリ9に格納された状態を例示する表である。DVFS対象処理である命令7〜命令99が実行されることによって、クロックサイクルは0000Hから0299Hまで進み、029AHでDVFS対象外の処理に戻る。クロックサイクルは0000Hから0299Hに対応して得られた周波数・電圧コントロールデータ4は、メモリ9のアドレス0000Hから0299Hに格納される。クロックサイクル0000H〜0102Hに対応する周波数・電圧コントロールデータ4がそれぞれ80Hと80Hであり、その値がメモリ9のアドレス0000H〜0102Hに格納されている。また、クロックサイクル0103H〜0299Hに対応する周波数・電圧コントロールデータ4がそれぞれ82Hと84Hであり、その値がメモリ9のアドレス0103H〜0299Hに格納され、アドレス029AH以降にはそれぞれ00Hと00Hが格納されている。メモリ9は例えば16ビット幅であり、上位に動作周波数を指定する8ビットが格納され、下位に動作電圧を指定する8ビットが格納される。これにより、メモリ9にアドレスが指定されると周波数と電圧を指定するコントロールデータ4が同時に読み出される。ここに示される数値は一例に過ぎず、ビット数を含めて取り得る値は任意である。特に、
図17には、周波数と電圧があるクロックサイクルの範囲で一定の例を示したが、毎サイクル変化してもよい。メモリ9は、例えば不揮発性メモリとして実装され、出荷時に周波数・電圧コントロールデータ4が書き込まれる。コントロールデータ4は、製品の個体ごとに個別に算出されてもよい。これにより、個体ごとに最適化されたDVFS制御を行うことができる。
【0158】
次に、実際のDVFS制御動作について説明する。
【0159】
まず、DVFS対象回路8を動作させて、
図16に示されるプログラムの命令を命令1から順次実行させる。最初は、DVFS制御は開始されていないので、周波数制御レジスタ13と電圧制御レジスタ14にはある標準的な初期値が設定されており、その値に従って、クロック供給回路6と電源供給回路7は、クロック及び電源電圧をDVFS対象回路8に供給する。その後、命令が順次実行されていき、命令6が実行されると、DVFS制御レジスタ11のスタートビットがセットされる。スタートビットが設定されると、制御回路12が動作を開始する。
【0160】
この時、制御回路12はクロック数カウンタ10のクロック数カウント動作を開始させる。クロック数カウンタ10は、クロック供給回路6から供給されるクロックの数を順次カウントしていく。そして、制御回路12は、クロック数カウンタ10の値で指定されるアドレスに対応するメモリ9の内容を、順次受け取って、周波数制御レジスタ13と電圧制御レジスタ14の値を順次更新していく。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、DVFS対象回路8に供給する。
【0161】
このように、クロック数カウンタ10の値は、0000Hから順に進んでいくが、DVFS対象処理が完了して、クロックカウントが029AHになり、メモリ9の029AH番地がアクセスされると、メモリ9からはデータ0000Hが、制御回路12に供給される。制御回路12は、データ0000Hを受け取ると、DVFS制御が完了したことを検知して、周波数制御レジスタ13と電圧制御レジスタ14に、標準的な初期値を設定する。同時に、制御回路12は、DVFS制御レジスタ11のスタートビット及び、クロック数カウンタ10の値をクリアする。
【0162】
以上のように、DVFS制御回路5にクロック数カウンタ10とメモリ9と制御回路12を設けることにより、DVFS対象回路8が備えるプロセッサ(CPU)に与えるプログラムを改変することなく、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4に基づくDVFS制御を行うことができる。このとき、メモリ9には、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4を、近似することなく、1サイクル毎に全て格納することができるので、消費エネルギーが理論的に最小化された、理想的なDVFS制御を行うことができる。また、DVFS対象回路8がプロセッサを備えない専用ハードウェア、或いはプログラムの改変を許容しない特殊なプロセッサである場合にも、同様に、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ4に基づくDVFS制御を行うことができる。
【0163】
〔実施形態5〕<複数CPU>
本実施形態5においては、
図7に示したDVFS対象回路8の中に、並列動作可能な複数のIP(Intellectual Property)が存在する場合を考える。
図18は複数のIPを備えたDVFS制御対象回路8を含むマイコン20の構成例を表すブロック図である。
図7に示される半導体装置の設計方法は、このDVFS制御対象回路8にも適用可能であり、例えば、オイラー方程式解の計算ツール3は、オイラー方程式解に基づくDVFS制御を実施した際の消費エネルギーを出力する機能を備えている。
【0164】
マイコン20は、DVFS制御回路5と、クロック供給回路6と、電源供給回路7と、DVFS対象回路8とを含んで構成される。複数のIPは、例えば、ローカルメモリ(LM)26_1〜26_4を備えたCPU21_1〜21_4によって構成される。マイコン20は、さらに、RAM22、ROM23、DMA制御回路32、割り込み制御回路33、バスブリッジ31、周辺回路25_1〜25_4等を含んで構成される。複数のCPU21_1〜21_4は、RAM22、ROM23、DMA制御回路32、割り込み制御回路33等と、バス30_1を介して接続されている。バス30_1はバス30_2とバスブリッジ31を介して接続され、バス30_2には周辺回路25_1〜25_4等が接続される。DVFS制御回路5は、例えばバス30_1に接続される。周辺回路25_1〜25_4等と同様にバス30_2に接続されてもよい。クロック供給回路6と電源供給回路7は、DVFS対象回路8にそれぞれクロック信号と電源を供給する。マイコン20全体をDVFS対象回路8としても、またはCPU21_1〜21_4とローカルメモリ(LM)26_1〜26_4のみをDVFS対象回路8としてもよい。ROM23にはCPU21_1〜21_4によって実行されるプログラムが格納されており、CPU21_1〜21_4は、それぞれ割り当てられた処理に必要なプログラムコードを自身のローカルメモリ(LM)26_1〜26_4にキャッシュして実行する。
【0165】
図18に示される構成は、単なる一例に過ぎず、CPUがローカルメモリを備えず、共通のROM23から順次命令コードをフェッチして動作するように構成されても、あるいは個々にプログラムROMを備えて構成されてもよい。また、バスやメモリの階層構造も任意である。IPはCPUによって構成されるものには限られず、DSP(Digital Signal Processor)など他の命令セットによってプログラミングされたプログラムを実行可能なプロセッサを含んで構成され、或いは、単純なシーケンサによって構成された専用ハードウェアであってもよい。ただし、以下の説明は、
図18に示される構成のように、DVFS対象回路8における複数のIPが複数のCPUによって構成され、ROM23に格納されるプログラムをそれぞれ分担して実行することができる構成であることを前提としている。
【0166】
本実施形態5の実施手順について説明する。まず、所定のソフトウェアを、DVFS制御対象回路8が実行したときの消費電力プロファイルを、シミュレーションツールまたは実機評価環境1を使って取得する。
図19は、ソフトウェア変更前の電力プロファイル2の例を表す、模式的な波形図である。時刻0からτまで消費電力はP0一定である。DVFS対象回路8は、並列動作可能な複数のIP(例えば、CPU等)で構成されているので、ソフトウェアを変更して、並列処理を増加させることにより、
図20のような電力プロファイルデータ2に変更できたとする。ここでα、β及びγは正の実数であり、処理の並列度に対応して変化する。
図20では、時刻0からατまでは、並列度を落として処理を実行し、消費電力をP0よりも低いβP0に抑え、時刻ατからτまでは、並列度を上げて処理を実行し、消費電力をP0よりも大きいγP0とすることにより、
図19に示したのと同じ時刻0からτまで期間に、同じソフトウェアの実行を完了する。
【0167】
この時、ソフトウェアの変更前後で、消費エネルギーは不変とすると、以下の関係式が成り立つ。
【0169】
上式を変形すると、α、β、γの間には、以下の関係が成り立つ。
【0171】
ソフトウェア変更後の
図20に示される電力プロファイルデータ2に対してオイラー方程式解に基づくDVFS制御を実行した場合の消費エネルギーをA1とし、ソフトウェア変更前の
図19に示される電力プロファイルデータ2に対してDVFS制御を実行した場合の消費エネルギーをB1とすると、A1/B1の値は以下のようになる。
【0173】
図21は、並列度を調整した場合の消費電力削減効果の数値例を表す表である。式13に適当なα、β、γの値を代入して算出した、A1/B1の値が示される。並列処理が増加するほど、オイラー方程式に従うDVFS制御による消費電力量(エネルギー)が小さくなることがわかる。
【0174】
よって、DVFS対象回路が、並列動作可能な複数の回路(CPU等)で構成されている場合は、オイラー方程式解の計算ツール3を活用して得られる電力や消費エネルギー情報をフィードバックしながら、ソフトウェアを変更することにより、できる限り並列処理を増加させた上で、オイラー方程式に従うDVFS制御を行えば、効果的に消費電力量(エネルギー)を低減できる。
【0175】
〔実施形態6〕<応用例>
本実施形態6では、実施形態1に示した半導体装置の設計方法を、回路・制御方式をセンサー・マイコンシステムに適用した、応用例について説明する。
【0176】
図22は、本実施形態6に係るマイコン20の構成例を表すブロック図である。マイコン20には、CPU21、RAM22、ROM23、AD変換器24、周辺回路25_1〜25_n、通信回路27、DVFS制御回路5、クロック供給回路6、電源供給回路7を搭載され、センサ18が接続され、外部のデータセンター19とデータ通信路で接続可能に構成される。CPU21、RAM22、ROM23、AD変換器24、周辺回路25_1〜25_n、通信回路27、DVFS制御回路5は、バス30にそれぞれ接続されている。ここで、DVFS制御回路5、クロック供給回路6、電源供給回路7は、例えば、実施形態2において
図8を引用して説明した回路である。図示は省略されているが、DVFS制御回路5は、DVFS制御レジスタ11と周波数制御レジスタ13と電圧制御レジスタ14とを含んで構成される。DVFS制御レジスタ11は、DVFS制御を開始するためのスタートビットを格納するレジスタである。クロック供給回路6は周波数制御レジスタ13によって指定される周波数の動作クロックを供給し、電源供給回路7は電圧制御レジスタ14によって指定される動作電圧の電源を供給する。周波数制御レジスタ13と電圧制御レジスタ14はプロセッサのメモリ空間にアドレスマッピングされ、CPU21は、メモリに対するロード/ストア命令によって周波数制御レジスタ13と電圧制御レジスタ14にアクセスすることができる。また、特に制限されないが、マイコン20は、例えば、公知のCMOSLSIの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【0177】
マイコン20は、センサー18から入力されるアナログデータをサンプリングした後、そのデータをAD変換器24でディジタルデータに変換し、その後、CPU21で平均化処理・有意性判定等の演算処理をした後に、そのディジタルデータを外部のデータセンター19に送信するまでの処理を、ある決められた一定時間内に行う。
【0178】
本実施形態6の実施手順について説明する。
【0179】
上述の処理のうちDVFS制御対象の処理のためのプログラムを、DVFS制御対象回路8のプロセッサが実行したときの消費電力プロファイル2を、シミュレーションツールまたは実機評価環境1を使って取得する。
図23は、取得した電力プロファイル2の例を表す模式的な波形図である。マイコン20が、センサー18から受け取ったデータを、外部のデータセンター19に送信するまでの動作を一定のクロック周波数で実行した場合の、消費電力プロファイル2である。時刻0から時刻T1までの間は、センサー18から入力されるアナログデータを、AD変換器24でサンプリングして、ディジタルデータに変換した後に、RAM22に転送するまでの期間である。ここで、時刻0から時刻T1までの間の電力値をP0とする。また、時刻T1から時刻T2までの間は、RAM22に格納されたデータをCPU21が読み出して、平均化処理・有意性判定等の演算処理を行った後に、データセンター19への送信データとして、送信レジスタ29に格納するまでの期間である。ここで、時刻T1から時刻T2までの間の電力値を3P0とする。時刻T2から時刻T3までの間は、送信レジスタ29に格納された送信データを、通信回路27から、外部のデータセンター19に送信するまでの期間である。時刻T2から時刻Tまでの間の電力値を2P0とする。
【0180】
次に、取得した電力プロファイル2を元にしてオイラー方程式解の計算ツール3が、周波数及び電圧コントロールデータ4を出力する。
図24は、算出されたコントロールデータ4の例を示す表である。
図23の時刻0、T1、T2、Tは、それぞれクロック数0000H、0155H、0347H、0520Hに対応する。算出されたコントロールデータ4に従って、クロック数0000Hから0154Hまでの期間は、周波数制御レジスタ13と電圧制御レジスタ14とにそれぞれ60Hと50Hを格納する。その後クロック数0155Hから0346Hまでの期間は、周波数と電圧としてそれぞれ42Hと37Hを格納し、クロック数0347Hから051FHまでの期間は、周波数と電圧としてそれぞれ4CHと3FHを格納する。DVFS制御対象の処理が完了する時刻Tに対応する、クロック数0520Hには、周波数制御レジスタ13と電圧制御レジスタ14に、標準的な初期値を設定する。
【0181】
算出されたコントロールデータ4に基づくDVFS制御の方法は、実施形態2で説明したように、周波数制御レジスタ13と電圧制御レジスタ14に対するデータ書き込み命令、例えば、マッピングされているアドレスへのストア命令を、周波数と電圧を変更させるべきポイントに追加することにより、実現することができる。以下により詳しく説明する。
【0182】
図24におけるクロック数と、CPU21によってDVFS制御対象の処理を実行するプログラムの、命令コードとの対応付けを行う。クロック数0000Hを実行する命令コードの直前に、周波数制御レジスタ13と電圧制御レジスタ14に、それぞれコントロールデータ4に従った周波数と電圧のデータ60Hと50Hをそれぞれ設定する命令を挿入する。さらに、クロック数0155Hを実行する命令コードの直前に、周波数制御レジスタ13と電圧制御レジスタ14に、コントロールデータ4に従った周波数と電圧のデータ42Hと37Hをそれぞれ設定する命令を挿入する。さらに、クロック数0347Hを実行する命令コードの直前に、周波数制御レジスタ13と電圧制御レジスタ14に、コントロールデータ4に従った周波数と電圧のデータ4CHと3FHをそれぞれ設定する命令を挿入する。最後に、クロック数0520Hを実行する命令コードの直前に、周波数制御レジスタ13と電圧制御レジスタ14に、周波数と電圧の規定の初期データをそれぞれ設定する命令を挿入する。
【0183】
DVFS制御の開始に当たって、まず、CPU21が周波数制御レジスタ13と電圧制御レジスタ14へのデータ書き込み命令を実行することにより、周波数制御レジスタ13にデータ60Hが設定され、電圧制御レジスタ14にデータ50Hが設定される。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8であるCPU21等に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、マイコン20全体に供給する。
【0184】
この状態でまず、AD変換器24が、センサー18から入力されるアナログ信号をサンプリングして、ディジタルデータに変換する。変換されたディジタルデータは、CPU21を介して、RAM22に転送される。そして、このセンサー18のデータのサンプリングからディジタルデータのRAM22への格納までの処理が、規定回数分完了するとクロック数は0154Hになる。
【0185】
次に、クロック数0155Hを実行する命令コードの直前に追加された、周波数制御レジスタ13と電圧制御レジスタ14に、コントロールデータ4に従った周波数と電圧のデータ42Hと37Hをそれぞれ設定する命令が実行される。追加された周波数制御レジスタ13と電圧制御レジスタ14へのデータ書き込み命令により、周波数制御レジスタ13にデータ42Hが設定され、電圧制御レジスタ14にデータ37Hが設定される。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8であるCPU21等に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、マイコン20全体に供給する。この状態でCPU21は、RAM22に格納されたデータの演算処理を開始する。例えば、CPU21はRAM22から、サンプリングされたディジタルデータ群を読み出して、平均化処理や、有意性判定等の演算処理を行い、その演算結果を、外部のデータセンター19に送るための送信データとして、通信回路27の送信レジスタ29に格納する。この一連の処理が終わった時点で、クロック数は0346Hになる。
【0186】
次に、クロック数0347Hを実行する命令コードの直前に追加された、周波数制御レジスタ13と電圧制御レジスタ14に、コントロールデータ4に従った周波数と電圧のデータ4CHと3FHをそれぞれ設定する命令が実行される。追加された周波数制御レジスタ13と電圧制御レジスタ14へのデータ書き込み命令により、周波数制御レジスタ13にデータ4CHが設定され、電圧制御レジスタ14にデータ3FHが設定される。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8であるCPU21等に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、マイコン20全体に供給する。
【0187】
次に、この状態でCPU21は、通信回路27の中の通信スタートビット28をセットする。それを受けて、通信回路27は、通信回路27の中の送信レジスタ29に格納されている送信データを、外部のデータセンター19に対して、送信し始める。その後、通信回路27が、送信レジスタ29内の全てのデータを送信し終わった時点で、クロック数は051FHになる。
【0188】
次に、クロック数0520Hを実行する命令コードの直前に追加された、周波数制御レジスタ13と電圧制御レジスタ14に、コントロールデータ4に従った周波数と電圧の規定の初期データをそれぞれ設定する命令が実行されて、制御回路12は、DVFS動作を完了する。
【0189】
以上、DVFS制御回路5を実施形態2と同様に構成し、コントロールデータ4の変化点に対応付けて、周波数制御レジスタ13と電圧制御レジスタ14に対するデータ書き込み命令を、プログラムに追加する実施形態について説明したが、これに対して、実施形態3で説明したように構成しても良い。即ち、
図13と同様に、DVFS制御回路5は、さらにクロック数カウンタ10とデータレジスタ90〜9nとクロック数一致検出/データ出力回路17とを備え、データレジスタ90〜9nに、上記の各変化点のデータを格納しておく。クロック数カウンタ10がカウントするクロック数と一致したときに、周波数制御レジスタ13と電圧制御レジスタ14に対応するデータを転送する。
図22〜
図24に加えて
図13を併せて引用しながら、以下により詳しく説明する。
【0190】
図24における(クロック数、周波数、電圧)=(0000H、60H、50H)、(0155H、42H、37H)、(0347H、4CH、3FH)、(0520H、00H、00H)のデータは、予め
図22のROM23内に格納されているものとする。そして、CPU21は、DVFS制御を開始する前に、ROM23からそれぞれのデータを読み出して、順番に、データレジスタ90〜93に格納する。具体的には、(クロック数、周波数、電圧)=(0000H、60H、50H)のデータを、データレジスタ90に格納する。(クロック数、周波数、電圧)=(0155H、42H、037H)のデータを、データレジスタ91に格納する。(クロック数、周波数、電圧)=(0347H、4CH、3FH)のデータを、データレジスタ92に格納する。(クロック数、周波数、電圧)=(0520H、00H、00H)のデータを、データレジスタ93に格納する。
【0191】
DVFS制御の開始に当たって、まず、CPU21がDVFS制御レジスタ11のスタートビットをセットする命令を実行すると、DVFS制御回路5内の制御回路12が動作を開始する。
【0192】
そして、制御回路12はクロック数カウンタ10のクロック数カウント動作を開始させる。この時、クロック数カウンタ10の初期値は0000Hであるので、クロック数一致検出/データ出力回路17が、データレジスタ90のクロック数の0000Hとクロック数カウンタ10の値の一致を検出して、データレジスタ90に格納されている周波数と電圧のデータ60Hと50Hを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8であるCPU21等に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、マイコン20全体に供給する。
【0193】
この状態でまず、AD変換器24が、センサー18から入力されるアナログ信号をサンプリングして、ディジタルデータに変換する。変換されたディジタルデータは、CPU21を介して、RAM22に転送される。そして、このセンサー18のデータのサンプリングからディジタルデータのRAM22への格納までの処理が、規定回数分完了すると、クロック数カウンタ10の値が、0155Hになる。
【0194】
この時、クロック数一致検出/データ出力回路17が、データレジスタ91のクロック数の0155Hとクロック数カウンタ10の値の一致を検出して、データレジスタ91に格納されている、周波数と電圧のデータ42Hと37Hを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータ42Hと37Hを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8であるCPU21等に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、マイコン20全体に供給する。
【0195】
次に、この状態でCPU21は、RAM22に格納されたデータの演算処理を開始する。例えば、CPU21はRAM22から、サンプリングされたディジタルデータ群を読み出して、平均化処理や、有意性判定等の演算処理を行い、その演算結果を、外部のデータセンター19に送るための送信データとして、通信回路27の送信レジスタ29に格納する。この時点で、クロック数カウンタ10の値が、0347Hになる。
【0196】
この時、クロック数一致検出/データ出力回路17が、データレジスタ92のクロック数の0347Hとクロック数カウンタ10の値の一致を検出して、データレジスタ92に格納されている、周波数と電圧のデータ4CHと3FHを制御回路12に転送する。制御回路12は、受け取った周波数と電圧のデータ4CHと3FHを、周波数制御レジスタ13と電圧制御レジスタ14にそれぞれ設定する。クロック供給回路6は、周波数制御レジスタ13の値に従って、指定された周波数を持つクロックを、DVFS対象回路8であるCPU21等に供給する。また、電源供給回路7は、電圧制御レジスタ14の値に従って、指定された電圧の電源を、マイコン20全体に供給する。
【0197】
次に、この状態でCPU21は、通信回路27の中の通信スタートビット28をセットする。それを受けて、通信回路27は、通信回路27の中の送信レジスタ29に格納されている送信データを、外部のデータセンター19に対して、送信し始める。その後、通信回路27が、送信レジスタ29内の全てのデータを送信し終わった時点で、クロック数カウンタ10の値が、0520Hになる。
【0198】
この時、クロック数一致検出/データ出力回路17が、データレジスタ93のクロック数の0520Hとクロック数カウンタ10の値の一致を検出して、データレジスタ93に格納されている周波数と電圧のデータ00Hと00Hを制御回路12に転送する。この時の周波数と電圧のデータは0000Hである。制御回路12は、0000Hデータを受け取ると、DVFS制御が終了したことを検知して、周波数制御レジスタ13及び、電圧制御レジスタ14に、規定の初期値を設定する。同時に、制御回路12は、DVFS制御レジスタ11のスタートビット及び、クロック数カウンタ10の値をクリアして、DVFS動作が完了する。
【0199】
以上、DVFS制御回路5を実施形態3と同様に構成する場合について説明したが、これに対して、算出されたコントロールデータ4が滑らかに変化するもので、特徴的な変化点が特定できない場合には、実施形態4で説明したように構成しても良い。DVFS制御回路5にさらにクロック数カウンタ10とメモリ9とを備え、クロック数に対応するメモリ9のアドレスに、対応する周波数と電圧のデータを格納しておく。クロック数カウンタ10がカウントするクロック数をアドレスとして、メモリ9がアクセスされ、周波数制御レジスタ13と電圧制御レジスタ14に対応するデータが転送される。
【0200】
このように、センサー・マイコンシステムにおけるセンサーデータサンプリングからデータセンターへの通信までの一連の処理に対して、実施形態2、3又は4に示したDVFS制御を行って、消費エネルギーが最小となるマイコン動作を実現できる。
【0201】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0202】
例えば、1個のLSIまたは1個のシステムが、DVFS制御される対象の論理回路を、複数個含んで構成されてもよい。CPUが実施形態2に示されるような態様でDVFS制御され、同一チップに集積され当該CPUの制御対象であるアクセラレータや周辺回路モジュールが、実施形態3または4に示されるような態様で、CPUに対する制御とは独立にDVFS制御されてもよい。