(57)【要約】【課題】消費エネルギーを最小化するDVFS制御を実行可能な半導体装置の設計方法を提供する。【解決手段】DVFS対象の論理回路に、既知の動作電圧と既知の周波数のクロックを与えて、DVFS対象の処理を実行させたときの、消費電力プロファイルP(t)を取得する。取得した電力プロファイルをクロックサイクルq(t)に関する関数に変換し、対象論理回路の負荷容量をクロックサイクルq(t)の関数として求める。負荷容量関数と前記クロックサイクルの時間微分の３乗との積（C(q)・(dq/dt)^3）を定数とする条件を満足するように、動作電圧と動作周波数を、それぞれクロックサイクルに対する関数（V(q), f(q)）として算出する。算出された動作電圧と動作周波数の関数は、変分法によるオイラー方程式の解であり、消費エネルギーは最小化される。【選択図】図１
2015109010.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって設計支援プログラムを実行することによって、動作電圧と動作周波数が与えられクロック信号に同期して所定の処理を実行する論理回路に対して、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを算出する、半導体装置の設計方法であって、
前記論理回路に第１動作電圧と第１動作周波数とを与えて前記処理を実行させたときの、前記処理の実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイルとして用意し、
前記電力プロファイルに基づいて、前記処理の実行に伴うクロックサイクルに対する、前記論理回路の負荷容量の関数を負荷容量関数として求め、
前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを、それぞれクロックサイクルに対する関数として算出する、半導体装置の設計方法。
【請求項２】
請求項１において、前記第１動作電圧と前記第１動作周波数は、前記処理を実行する期間を通してそれぞれ一定とされ、
前記負荷容量関数は、前記電力プロファイルと前記第１動作電圧と前記第１動作周波数とから算出される、半導体装置の設計方法。
【請求項３】
請求項１において、前記論理回路は、プログラムを実行可能であり、前記プログラムに含まれる命令によって動作電圧と動作周波数を設定可能なプロセッサを含んで構成され、
クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数とに基づいて、動作電圧と動作周波数を設定する命令を、前記処理を実行するプログラムに追加する、半導体装置の設計方法。
【請求項４】
請求項１において、前記論理回路には、前記論理回路に供給される動作電圧と動作周波数を設定可能な制御回路が接続され、
前記制御回路は、クロックカウンタを備え、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータと、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較して、一致したときに、対応する動作電圧と動作周波数とを、前記論理回路に供給される動作電圧と動作周波数として設定可能に構成され、
クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数とに基づいて、前記コントロールデータを生成する、半導体装置の設計方法。
【請求項５】
請求項４において、前記コントロールデータは、前記処理におけるすべてのクロックサイクルについて、設定されるべき動作電圧と動作周波数とを含む、半導体装置の設計方法。
【請求項６】
コンピュータによって実行されることによって、
請求項１に記載の半導体装置の設計方法を、前記コンピュータに実行させる、設計支援プログラム。
【請求項７】
請求項６において、前記電力プロファイルは、前記論理回路のネットリスト情報に基づいて、シミュレーションによって算出される、設計支援プログラム。
【請求項８】
請求項６に記載の設計支援プログラムを実行するコンピュータを備える、設計装置。
【請求項９】
プロセッサと、前記プロセッサに供給するプログラムを格納可能なメモリと、前記プロセッサにクロックを供給可能なクロック供給回路と、前記プロセッサに電源を供給可能な電源供給回路と、制御回路とを備える半導体装置であって、
前記制御回路は、前記クロック供給回路が前記プロセッサに供給する前記クロックの周波数を設定可能な周波数制御レジスタと、前記電源供給回路が前記プロセッサに供給する前記電源の電圧を設定可能な電圧制御レジスタとを備え、
前記プロセッサの命令セットは、前記周波数制御レジスタと前記電圧制御レジスタに値を設定可能な命令を含んで構成され、
前記プログラムは、所定の処理を前記プロセッサに実行させるルーチンを含み、前記ルーチンは、動作電圧と動作周波数を設定する命令を含み、
前記ルーチンにおいて設定される前記動作電圧と前記動作周波数は、前記ルーチンを実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数と動作周波数関数とに基づいて算出され、
前記動作電圧関数と前記動作周波数関数は、第１動作電圧と第１動作周波数とを与えて前記プロセッサに前記ルーチンを実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイルとして用意し、前記電力プロファイルに基づいて、前記クロックサイクルに対する前記プロセッサの負荷容量の関係を負荷容量関数として求め、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される、
半導体装置。
【請求項１０】
請求項９において、前記プロセッサは、複数のＣＰＵを含んで構成される、半導体装置。
【請求項１１】
請求項９において、単一半導体基板上に構成される、半導体装置。
【請求項１２】
クロックに同期して動作する論理回路と、前記論理回路に前記クロックを供給可能なクロック供給回路と、前記論理回路に電源を供給可能な電源供給回路と、制御回路とを備える半導体装置であって、
前記制御回路は、前記クロック供給回路が前記論理回路に供給する前記クロックの周波数を設定可能な周波数制御レジスタと、前記電源供給回路が前記論理回路に供給する前記電源の電圧を設定可能な電圧制御レジスタと、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータを保持可能なメモリとを備え、前記論理回路の動作におけるクロックサイクルが前記メモリに保持されるクロックサイクル値とが一致したときに、対応する動作電圧と動作周波数を、それぞれ、前記周波数制御レジスタと前記電圧制御レジスタにそれぞれ設定可能に構成され、
前記コントロールデータは、前記論理回路が前記処理を実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数と動作周波数関数とに基づいて算出され、
前記動作電圧関数と前記動作周波数関数は、第１動作電圧と第１動作周波数とを与えて前記論理回路に前記処理を実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイルとして用意し、前記電力プロファイルに基づいて、前記クロックサイクルに対する前記プロセッサの負荷容量の関係を負荷容量関数として求め、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される、
半導体装置。
【請求項１３】
請求項１２において、前記メモリは複数のデータレジスタを含んで構成され、前記制御回路はさらに、前記クロックをカウントするクロックカウンタと、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較する一致検出回路とを備え、
前記複数のデータレジスタには、前記コントロールデータに規定されるクロックサイクル値と対応する動作電圧と動作周波数を規定する設定データが保持され、
前記一致検出回路により、前記クロックカウンタによるカウント値と、前記データレジスタに保持されるクロックサイクル値とが一致したことが検出されたときに、対応する動作電圧と動作周波数とを規定する設定データが、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される、
半導体装置。
【請求項１４】
請求項１２において、前記制御回路は、前記クロックをカウントするクロックカウンタをさらに備え、前記メモリは、前記コントロールデータのクロックサイクル値に対応するアドレスに、対応する動作電圧と動作周波数を規定する設定データが格納され、
前記メモリは、前記クロックカウンタの出力するクロックサイクル値がアドレスとして入力され、対応する動作電圧と動作周波数を規定する設定データが読み出され、前記制御回路は、前記メモリから読み出された動作電圧と動作周波数を規定する設定データを、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される、
半導体装置。
【請求項１５】
請求項１４において、前記メモリが不揮発性メモリである、半導体装置。
【請求項１６】
請求項１２において、単一半導体基板上に構成される、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計方法、設計支援プログラム、設計装置、及び、半導体装置に関し、特に動作周波数と動作電圧を動的に制御することによって消費電力を低減することが可能な半導体装置に好適に利用できるものである。
【背景技術】
【０００２】
動作周波数と動作電圧を動的に制御すること（DVFS（Dynamic Voltage and Frequency Scaling）制御）によって、半導体装置、特にＣＭＯＳ（Complementary Metal Oxide Semiconductor）ディジタル回路の消費電力を低減する技術が知られている。
【０００３】
非特許文献１には、画像のフレーム単位で動作周波数と動作電圧を動的に制御するＭＰＥＧ（Moving Picture Experts Group）デコーダが開示されている。フレームに依存する処理と、フレーム処理から独立した処理に分けて、デコード処理に要する時間を予測して、最適な動作周波数と動作電圧を決める。
【０００４】
特許文献１には、プロセッサに供給する電源電圧とクロック周波数を制御して消費電力を低減する動的な電圧制御方法が開示されている。プロセッサのクロック周波数に対する要求を特定し、それに基づいて適切な電源電圧レベルを供給する、動的電力コントローラが示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−６４４５６号公報
【非特許文献】
【０００６】
【非特許文献１】Kihwan Choi他，"Frame-based dynamic voltage and frequency scaling for a MPEG decoder"，the Proceedings of the 2002 IEEE/ACM international conference on Computer-aided design，U.S.A.，IEEE，2002年発行、Pages 732-737
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１及び特許文献１について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００８】
従来のDVFS制御では、与えられた時間T内で完了させるべき一つの処理において、その処理を完了させるための最低動作周波数fと最低動作電圧Vに制御されることにより、消費電力を削減することが可能である。まず、その時間T内で当該処理を完了させるために必要な最低動作周波数fを求める。最低動作周波数fは、処理に必要なクロック数÷Tにより算出される。その周波数fでの回路動作を保証するためのできるだけ低い動作電圧をVとすると、この最低動作周波数fと最低動作電圧Vで回路を動作させる。すなわち、DVFS制御では、半導体回路における電力の下記の計算式における動作周波数fと動作電圧Vを低減することにより、電力Pの値を削減することができる。
【０００９】
【数１】
2015109010.tif 000003
【００１０】
ここで、Pは消費電力、fは動作周波数、Cは回路動作に寄与する分の総負荷容量、Vは動作電圧、Lはリーク電力である。
【００１１】
しかしながら、本発明者が検討した結果、従来の最低動作周波数と最低動作電圧では、真に必要最低限の消費電力にまで低減することができないことが見出された。従来のDVFS制御では、当該処理を実行する時間Tの間は、動作周波数は最低動作周波数fに、動作電圧は最低動作電圧Vに、それぞれ一定に保たれ、消費電力が削減される。当該処理をさらに細分化して、よりきめ細かい時間の単位でDVFS制御を行えば、消費電力をより低減することが期待される。しかし、この方法では、細分化された時間ごとに、それぞれ最低動作周波数と最低動作電圧を算出する必要があり、現実的に許される計算量に抑えるために細分化には限界がある。そのため、従来のDVFS制御によっては、真に必要最低限の消費電力に低減することができない。
【００１２】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施の形態によれば、下記の通りである。
【００１４】
すなわち、DVFS対象の論理回路に、既知の動作電圧と既知の周波数のクロックを与えて、DVFS対象の処理を実行させたときの電力プロファイルを用意する。電力プロファイルはクロックサイクルqに対する消費電力の関数P(q)で表される。対象論理回路の負荷容量をクロックサイクルqの関数として求める。この負荷容量の関数に基づき、消費電力Pとクロックサイクルqについてのオイラー方程式を満たすように動作電圧V(q)と動作周波数f(q)を算出する。その算出された動作電圧と動作周波数の関数に基づいて、対象論理回路に対してDVFS制御を行う。
【発明の効果】
【００１５】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１６】
すなわち、算出された動作電圧と動作周波数の関数（V(q), f(q)）は、オイラー方程式を満たすように決定されるので、消費エネルギーをより削減するDVFS制御を実行可能な半導体装置を設計することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施形態１に係る半導体装置の設計方法を表すフローチャートである。
【図２】図２は、DVFS制御において対象回路を一定周波数fで動作させたときの消費電力Pの時間変動を表すグラフ（消費電力プロファイル）である。
【図３】図３は、図２に示される消費電力Pの時間変動を表すグラフの横軸の変数を、q(t)に書き換えたグラフである。
【図４】図４は、クロックカウントq(t)の時間変動を表すグラフである。
【図５】図５は、本実施形態のアルゴリズムによる消費エネルギー削減の効果を、定量化するために仮定された電力プロファイルである。
【図６】図６は、本実施形態のアルゴリズムによる消費エネルギー削減の効果を定量化した、計算例を示す表である。
【図７】図７は、本実施形態のアルゴリズムを適用した半導体装置の設計方法の一例を表す説明図である。
【図８】図８は、実施形態２に係る半導体装置の設計方法を適用した適用例を表す説明図である。
【図９】図９は、コントロールデータ４を組み込む前のプログラムの例を表す説明図である。
【図１０】図１０は、取得した電力プロファイル２の例を表す模式的な波形図である。
【図１１】図１１は、算出されたコントロールデータ４の例を示す表である。
【図１２】図１２は、コントロールデータ４が組み込まれた後のプログラムの例を表す説明図である。
【図１３】図１３は、実施形態３に係る半導体装置の設計方法を適用した適用例を表す説明図である。
【図１４】図１４は、算出されたコントロールデータ４の例を示す表である。
【図１５】図１５は、実施形態４に係る半導体装置の設計方法を適用した適用例を表す説明図である。
【図１６】図１６は、DVFS制御対象回路（CPU等）８が実行するプログラムの例を表す説明図である。
【図１７】図１７は、算出されたコントロールデータ４の数値例と、それがメモリ９に格納された状態を例示する表である。
【図１８】図１８は、複数のIPを備えたDVFS制御対象回路８を含むマイコンの構成例を表すブロック図である。
【図１９】図１９は、ソフトウェア変更前の電力プロファイル２の例を表す、模式的な波形図である。
【図２０】図２０は、ソフトウェア変更後の電力プロファイル２の例を表す、模式的な波形図である。
【図２１】図２１は、並列度を調整した場合の消費電力削減効果の数値例を表す表である。
【図２２】図２２は、実施形態６に係るマイコンの構成例を表すブロック図である。
【図２３】図２３は、取得した電力プロファイル２の例を表す模式的な波形図である。
【図２４】図２４は、算出されたコントロールデータ４の例を示す表である。
【発明を実施するための形態】
【００１８】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１９】
〔１〕＜電力プロファイルから負荷容量をクロックサイクルの関数として算出＞
本願において開示される代表的な実施の形態は、コンピュータによって設計支援プログラムを実行することによって、動作電圧と動作周波数が与えられクロック信号に同期して所定の処理を実行する論理回路（８）に対して、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを算出する、半導体装置の設計方法であって、以下のように構成される。
【００２０】
前記論理回路に第１動作電圧（V0）と第１動作周波数（f0）とを与えて前記処理を実行させたときの、時間に対する消費電力の関係を、電力プロファイル（P(t)、２）として取得する（Ｓ１）。
【００２１】
前記電力プロファイルに基づいて、前記処理の実行に伴うクロックサイクル（q(t)）に対する、前記論理回路の負荷容量の関数を負荷容量関数（C(q)）として求める（Ｓ４）。
【００２２】
この負荷容量関数（C(q)）に基づいて電力とクロックサイクルについてのオイラー方程式を満たすように、前記処理が実行される期間の前記論理回路の動作電圧と動作周波数とを、それぞれクロックサイクルに対する理想的な関数（V(q), f(q)）として算出する（Ｓ５）。
【００２３】
これにより、消費エネルギーを削減するDVFS制御を実行可能な半導体装置を設計することができる。
【００２４】
オイラー方程式を満たす条件して、前記負荷容量関数と前記クロックサイクルの時間微分の３乗との積（C(q)・(dq/dt)^3）を定数とする場合が例示される。算出されたC(q)を用いてC(q)・(dq/dt)^3＝定数を満たすように動作電圧と動作周波数が算出されることになる。
【００２５】
〔２〕＜負荷容量関数の算出方法＞
項１において、前記第１動作電圧と前記第１動作周波数は、前記処理を実行する期間を通してそれぞれ一定とされ、前記負荷容量関数は、前記電力プロファイルを前記クロックサイクルに関する関数に変換し（P(q)、Ｓ３）、変換された前記電力プロファイルと前記第１動作電圧と前記第１動作周波数とから算出される（C(q)=(P(q)-L(q))/(f0・V02)、Ｓ４）。
【００２６】
これにより、クロックサイクルと負荷容量の関係（負荷容量関数C(q)）を、容易に算出することができる。
【００２７】
〔３〕＜動作電圧と動作周波数を設定する命令をプログラムに埋め込む＞
項１または項２において、前記論理回路は、プログラム（１５）を実行可能であり、前記プログラムに含まれる命令によって動作電圧と動作周波数を設定可能なプロセッサ（８、２１）を含んで構成される。
【００２８】
クロックサイクルに対する関数としてそれぞれ算出された動作電圧（V(q)）と動作周波数（f(q)）とに基づいて、動作電圧と動作周波数を設定する命令を、前記処理を実行するプログラムに追加する。
【００２９】
これにより、自身が実行するプログラムによって自らDVFS制御を実行するプロセッサにおいて、消費エネルギーを最小化するDVFS制御を実行させることが可能となる。当該命令によって設定すべき動作電圧と動作周波数は、クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数を、階段状の関数で近似することによって求めることができる。
【００３０】
〔４〕＜動作電圧と動作周波数を設定するコントロールデータ＞
項１または項２において、前記論理回路には、前記論理回路に供給される動作電圧と動作周波数を設定可能な制御回路（５）が接続される。
【００３１】
前記制御回路は、クロックカウンタ（１０）を備え、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータ（４）を保持可能に構成される（９、９０〜９ｎ）。前記制御回路は、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較して、一致したときに、対応する動作電圧と動作周波数とを、前記論理回路に供給される動作電圧と動作周波数として設定可能に構成される（１７）。
【００３２】
前記半導体装置の設計方法は、クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数とに基づいて、前記コントロールデータを生成する。
【００３３】
これにより、クロックサイクルに従って動作する論理回路において、消費エネルギーを最小化するDVFS制御を実行させることが可能となる。当該クロックサイクルにおいて設定すべき動作電圧と動作周波数は、クロックサイクルに対する関数としてそれぞれ算出された動作電圧と動作周波数を、階段状の関数で近似することによって求めることができる。
【００３４】
〔５〕＜全てのクロックサイクルの設定値を備えるコントロールデータ＞
項４において、前記コントロールデータは、前記処理におけるすべてのクロックサイクルについて、設定されるべき動作電圧と動作周波数とを含む。
【００３５】
これにより、消費エネルギーが理論的に最小化された、理想的なDVFS制御を実行可能な半導体装置を設計することができる。
【００３６】
〔６〕＜ＣＡＤ（Computer Aided Design）プログラム＞
本願において開示される代表的な実施の形態は、コンピュータによって実行されることによって、項１から項５のうちのいずれか１項に記載の半導体装置の設計方法を、前記コンピュータに実行させる、設計支援プログラムである。
【００３７】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能な半導体装置を設計するための、ＣＡＤプログラムを提供することができる。
【００３８】
〔７〕＜シミュレーションによる電力プロファイル取得＞
項６において、前記電力プロファイルは、前記論理回路のネットリスト情報に基づいて、シミュレーションによって算出される。
【００３９】
これにより、論理回路の消費電力を実機で測定することなく、容易にサイクルベースの電力プロファイルを取得することができる。
【００４０】
〔８〕＜ＣＡＤシステム＞
本願において開示される代表的な実施の形態は、項６または項７に記載の設計支援プログラムを実行するコンピュータを備える、設計装置である。
【００４１】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能な半導体装置を設計するための、ＣＡＤシステムを提供することができる。
【００４２】
〔９〕＜マイコン＞
本願において開示される代表的な実施の形態は、プロセッサ（２１）と、前記プロセッサに供給するプログラムを格納可能なメモリ（２２、２３）と、前記プロセッサにクロックを供給可能なクロック供給回路（６）と、前記プロセッサに電源を供給可能な電源供給回路（７）と、制御回路（５）とを備える半導体装置（２０）であって、以下のように構成される。
【００４３】
前記制御回路は、前記クロック供給回路が前記プロセッサに供給する前記クロックの周波数を設定可能な周波数制御レジスタ（１３）と、前記電源供給回路が前記プロセッサに供給する前記電源の電圧を設定可能な電圧制御レジスタ（１４）とを備える。
【００４４】
前記プロセッサの命令セットは、前記周波数制御レジスタと前記電圧制御レジスタに値を設定可能な命令を含んで構成される。
【００４５】
前記プログラムは、所定の処理を前記プロセッサに実行させるルーチンを含み、前記ルーチンは、動作電圧と動作周波数を設定する命令を含む。
【００４６】
前記ルーチンにおいて設定される前記動作電圧と前記動作周波数は、前記ルーチンを実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数（V(q)）と動作周波数関数（f(q)）とに基づいて、以下のように算出される。
【００４７】
第１動作電圧と第１動作周波数とを与えて前記プロセッサに前記ルーチンを実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイル（P(q)）として取得する。前記電力プロファイルに基づいて、クロックサイクル（q(t)）に対する、前記プロセッサの負荷容量の関係を負荷容量関数（C(q)）として求める（Ｓ４）。前記動作電圧関数と前記動作周波数関数（V(q), f(q)）は、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される（Ｓ５）。
【００４８】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能なプロセッサを含むマイコン等のＬＳＩ（Large Scale Integrated circuit）を提供することができる。
【００４９】
〔１０〕＜複数のＣＰＵを備えるマイコン＞
項９において、前記プロセッサは、複数のＣＰＵ（２１＿１〜２１＿４）を含んで構成される。
【００５０】
これにより、複数のＣＰＵを備えて並列処理を実行可能なマイコン等のＬＳＩにおいて、並列度を適宜調整しながら、消費エネルギーが最小化された、DVFS制御の実行を可能とすることができる。
【００５１】
〔１１〕＜シングルチップ＞
項９または項１０において、前記半導体装置は、単一半導体基板上に構成される。
【００５２】
これにより、シングルチップマイコン等のＬＳＩにおいて、消費エネルギーが最小化された、DVFS制御を実行可能とすることができる。
【００５３】
〔１２〕＜専用ハードウェア＞
本願において開示される代表的な実施の形態は、クロックに同期して動作する論理回路（８）と、前記論理回路に前記クロックを供給可能なクロック供給回路（６）と、前記論理回路に電源を供給可能な電源供給回路（７）と、制御回路（５）とを備える半導体装置であって、以下のように構成される。
【００５４】
前記制御回路は、前記クロック供給回路が前記論理回路に供給する前記クロックの周波数を設定可能な周波数制御レジスタ（１３）と、前記電源供給回路が前記論理回路に供給する前記電源の電圧を設定可能な電圧制御レジスタ（１４）と、動作電圧と動作周波数とがクロックサイクル値に対応付けて規定されたコントロールデータ（４）を保持可能なメモリ（９、９０〜９ｎ）とを備える。前記論理回路の動作におけるクロックサイクルが前記メモリに保持されるクロックサイクル値とが一致したときに、対応する動作電圧と動作周波数を、それぞれ、前記周波数制御レジスタと前記電圧制御レジスタにそれぞれ設定可能に構成される。
【００５５】
前記コントロールデータは、前記論理回路が前記処理を実行するときのクロックサイクルに対する関数としてそれぞれ算出された動作電圧関数（V(q)）と動作周波数関数（f(q)）とに基づいて、以下のように算出される。
【００５６】
第１動作電圧と第１動作周波数とを与えて前記論理回路に前記処理を実行させたときの、前記ルーチンの実行に伴うクロックサイクルに対する消費電力の関係を、電力プロファイル（P(q)）として取得する（Ｓ１）。前記電力プロファイルに基づいて、クロックサイクル（q(t)）に対する、前記論理回路の負荷容量の関係を負荷容量関数（C(q)）として求める（Ｓ４）。前記動作電圧関数と前記動作周波数関数（V(q), f(q)）は、前記負荷容量関数に基づき、電力とクロックサイクルについてのオイラー方程式を満たすように算出される（Ｓ５）。
【００５７】
これにより、消費エネルギーが最小化された、DVFS制御を実行可能な専用ハードウェアを含むＬＳＩを提供することができる。論理回路（８）は、プロセッサなどの汎用的な或いはプログラマブルな汎用ハードウェアであっても良く、または何らかの信号処理等に特化された専用ハードウェアであってもよい。論理回路（８）がプロセッサである場合、項９や項１０とは異なり、プログラムを改変する必要がない。
【００５８】
〔１３〕＜変化点の設定値を保持するデータレジスタ＞
項１２において、前記メモリは複数のデータレジスタ（９０〜９ｎ）を含んで構成され、前記制御回路はさらに、前記クロックをカウントするクロックカウンタ（１０）と、前記クロックカウンタによるカウント値と、前記コントロールデータに規定されるクロックサイクル値とを比較する一致検出回路（１７）とを備える。
【００５９】
前記複数のデータレジスタには、前記コントロールデータに規定されるクロックサイクル値と対応する動作電圧と動作周波数を規定する設定データが保持される。
【００６０】
前記一致検出回路により、前記クロックカウンタによるカウント値と、前記データレジスタに保持されるクロックサイクル値とが一致したことが検出されたときに、対応する動作電圧と動作周波数とを規定する設定データが、それぞれ、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される。
【００６１】
これにより、コントロールデータ４が階段状の制御で近似される場合に、変化点における動作電圧と動作周波数とを規定する設定データのみを、クロックサイクル値と対応付けて保持する、限られた数のデータレジスタを備えることにより、消費エネルギーが最小化された、DVFS制御を実行可能な専用ハードウェアを含むＬＳＩを提供することができる。論理回路（８）は、プロセッサなどの汎用的な或いはプログラマブルな汎用ハードウェアであっても良く、または何らかの信号処理等に特化された専用ハードウェアであってもよい。
【００６２】
〔１４〕＜１サイクル毎のコントロールデータを保持するメモリ＞
項１２において、前記制御回路は、前記クロックをカウントするクロックカウンタ（１０）をさらに備える。前記メモリは、前記コントロールデータのクロックサイクル値に対応するアドレスに、対応する動作電圧と動作周波数を規定する設定データが格納される。前記メモリは、前記クロックカウンタの出力するクロックサイクル値がアドレスとして入力され、対応する動作電圧と動作周波数を規定する設定データが読み出される。前記制御回路は、前記メモリから読み出された動作電圧と動作周波数を規定する設定データを、前記周波数制御レジスタと前記電圧制御レジスタとにそれぞれ設定可能に構成される。
【００６３】
これにより、メモリ（９）には変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ（４）を、近似することなく、１サイクル毎に全て格納することができるので、消費エネルギーが理論的に最小化された、理想的なDVFS制御を行うことができる。また、DVFS対象回路がプロセッサを備えない専用ハードウェア、或いはプログラムの改変を許容しない特殊なプロセッサである場合にも、同様に、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータに基づくDVFS制御を行うことができる。
【００６４】
〔１５〕＜コントロールデータを保持する不揮発性メモリ＞
項１４において、前記メモリは不揮発性メモリである。
【００６５】
これにより、算出したコントロールデータ（４）を出荷前に不揮発性メモリであるメモリ（９）に書き込むことができ、例えば、個体ごとに最適化されたコントロールデータを書き込んで出荷することができる。
【００６６】
〔１６〕＜シングルチップ＞
項１２または項１５において、前記半導体装置は、単一半導体基板上に構成される。
【００６７】
これにより、シングルチップＬＳＩにおいて、消費エネルギーが最小化された、DVFS制御を実行可能とすることができる。
【００６８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００６９】
〔実施形態１〕＜変分法によるオイラー方程式解に基づくDVFS制御＞
＜アルゴリズム＞
上述の代表的な実施の形態によって、消費エネルギーが理論的に最小化された、理想的なDVFS制御を実行可能とすることができる、原理について詳しく説明する。
【００７０】
一般に、消費電力をP、消費エネルギー（電力量）をE、時刻をtとすると、Eに関して以下の積分式が成り立つ。
【００７１】
【数２】
2015109010.tif 000004
【００７２】
図２は、DVFS制御においてDVFS制御の対象回路（論理回路）８を一定周波数fで動作させたときの消費電力Pの時間変動を表すグラフである。ここで、実際の論理回路８では、対象とする処理を実行する期間、動作周波数を一定に保って動作させた場合であっても、図２に示されるように、消費電力Pは時間と共に変動する。
【００７３】
DVFS制御において動作周波数fを一定としても、Pが時間変動する理由は、式１からわかるように、総負荷容量Cが時刻tの関数になっているからである。時刻tにおいて充放電される容量のみが消費電力Pに寄与するので、動作している全ての容量値の総和がCである。そして、式２からわかるように、図２にハッチングで示される、消費電力Pの面積値が消費エネルギーEの値となる。
【００７４】
ここで、対象の論理回路８に供給されるクロックが、時刻tにおいて、対象とする処理の開始時刻0から数えて何番目のクロックであるかを示す変数をq(t)として導入する。図３は、図２に示される消費電力Pの時間変動を表すグラフの横軸の変数を、q(t)に書き換えたグラフである。消費電力Pは、図２に示されるように時刻tの関数として観測されるが、本質的にはq(t)の関数と考えることができる。また、式１における総負荷容量Cとリーク電力Lについても、一般的にq(t)の関数と考えることができるので、それぞれ、C(q)、L(q)と表すことができる。対象の論理回路８がクロックに同期して動作する回路だからである。このとき、動作周波数fは、qの１階微分に等しいので、以下の式で記述できる。
【００７５】
【数３】
2015109010.tif 000005
【００７６】
また、DVFS制御では、動作電圧Vは、動作周波数fの関数V(f)として制御するので、V(dq/dt)と記述することができる。DVFS制御においては例えば、V(dq/dt) = a・dq/dt  （aは定数）等のように制御できる。
【００７７】
以上の変数定義を式１に代入すると以下の式４となり、さらに式２に代入すると式５のようになる。
【００７８】
【数４】
2015109010.tif 000006
【００７９】
【数５】
2015109010.tif 000007
【００８０】
この式５から、消費エネルギーEは、変数q(t)の汎関数となっており、q(t)の関数形に応じて、積分値Eの値が増減することがわかる。
【００８１】
式５によって算出される消費エネルギーEの値を最小化するq(t)を求めるために、式５に変分法の数学を適用する。このとき、式５の値を最小化する条件から、以下のオイラー方程式が成り立つことが示される。
【００８２】
【数６】
2015109010.tif 000008
【００８３】
変分法によれば、式６の解q(t)は、式５の積分の始点（開始時刻）と、終点（終了時刻）を固定させた拘束条件の元での、式５の値の最小値を与える。すなわち、式４で表される消費電力Pを、式６に代入して微分方程式を解けば、その解として算出されるq(t)が消費エネルギーEを最小化するための周波数・電圧制御の方式、即ち、時刻tにおける最適な動作周波数と動作電圧を与える関数f(t)とV(t)とが得られる。
【００８４】
図１は、実施形態１に係る半導体装置の設計方法を表すフローチャートである。
【００８５】
まず、DVFS制御の対象である論理回路８に、DVFS制御の対象の処理を実行させて、消費電力Pの時間変化を測定する（Ｓ１）。このときの動作周波数と動作電圧には特に制限はないが、適当な一定値、例えばf(t)=f0とV(t)=V0を与えるとよい。消費電力測定は、シミュレーションによって行っても、実機評価によって行ってもよい。この結果、電力プロファイルP(t)（２）が得られる。この電力プロファイルは、実際には、時刻ｔ＝t1, t2, t3, …tNのそれぞれに対する電力Ｐ=P1, P2, P3,…PNの離散値で取得される。ここで時刻tmはtm=ｍ/f0で表され、mは１からNまで整数を示している。すなわち(t, P)＝(t1, P1), (t2, P2), (t3, P3), …(tN, PN)からなるN個の組の電力プロファイルが得られる。
【００８６】
次に、得られた電力プロファイルP(t)（２）に基づいて、論理回路８の動作周波数及び動作電圧を算出する（Ｓ２）。後述するステップＳ３ないしＳ６を含めステップＳ２はコンピュータがプログラムを実行することにより実現される。
【００８７】
この動作周波数及び動作電圧の算出においては、電力及びクロックサイクルについてのオイラー方程式を利用することが特徴的である。よってステップＳ２はオイラー方程式解を計算するステップとも呼ぶ。
【００８８】
具体的には、まず変数変換を行う（Ｓ３）。即ち、上述のクロックサイクル関数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)の電力プロファイルが用意される。
【００８９】
負荷容量Cとリーク電力Lについても、同様に電力プロファイル情報P(t)=P(q)から、クロックサイクルq(t)に関する負荷容量関数C(q)とリーク電力関数L(q)を求めて、式４の関数形を決定する。式４において、以下の値は既知の値である。
【００９０】
Pは、電力プロファイルデータより、各qの値毎に値が決まる。
【００９１】
dq/dtは、電力プロファイル取得時の周波数値（例えばf(t) = f0）で与えられる。
【００９２】
V(dq/dt)は、電力プロファイル取得時の電圧値（例えばV(t) = V0）で与えられる。
【００９３】
L(q)は、リーク電力なので、一般的にはqによらず、ある一定値Lと規定できる。
【００９４】
式４においてC(q)以外は、定数の値が与えられるので、式４をC(q)について解いて、C(q)=(P(q)-L)/(f0・V02)が決定される（Ｓ４）。よって、クロックサイクルに関する負荷容量関数はq=1,2,3, …NにそれぞれC=C1, C2, C3, …CNが対応づけられた形で得られる。ここでCm=(Pm-L) /(f0・V02)である。
【００９５】
他方、オイラー方程式である式６に式４を代入して求められるq(t)がオイラー方程式解となる。このオイラー方程式解q(t)を満たす動作周波数及び動作電圧をそれぞれ求める。
【００９６】
ここで半導体装置の動作として現実的な近似として、式４においてC=C(q)、V=a・dq/dt、L=0と近似した場合、消費電力P(q)は以下の式で表される。aはある正の整数である。
【００９７】
【数７】
2015109010.tif 000009
【００９８】
この時、式７の関係のもと式６のオイラー方程式を満たす条件は、式６のオイラー方程式の第一積分より下式が与えられる。
【００９９】
【数８】
2015109010.tif 000010
【０１００】
よって、C=C(q)、V=a・dq/dt、L=0の場合は、処理すべき時間内で、消費電力P(t)が時刻tによらず一定となるようにDVFS制御することが、最小エネルギーを与えることがわかる。式８を解くと、以下の式９が得られ、オイラー方程式を満たすための条件となる。式９自身がオイラー方程式の解とも言える。
【０１０１】
【数９】
2015109010.tif 000011
【０１０２】
これから、最小エネルギーを与える動作周波数f(q)と動作電圧V(q)を得ることができる（Ｓ５）。
【０１０３】
具体的には式３の関係から、f=(k/C(q))1/3である。ここでC(q)として、ステップＳ４により得られた負荷容量関数(C1, C2, C3, …CN)が用いられる。よって動作周波数fはq=1, 2, 3,…Nに対するそれぞれf=f1, f2, f3,…fNの形で容易に求められる。ここでfm= (k/Cm)1/3＝{(k・f0・V02)/(Pm-L)} 1/3である。
【０１０４】
また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・V02)/(Pm-L)} 1/3である。kの求め方は次のとおりである。
【０１０５】
式９から∫k1/3dt=∫C(q)1/3dqが得られる。左辺はt=0〜tNの範囲で関数k1/3をtで積分することを意味し、ｋは定数であるため単純にk1/3・tNとなる。右辺はq=0〜Nの範囲で関数C(q)1/3をqで積分することを意味する。右辺はステップS４で得られた負荷容量関数(C1, C2, C3, …CN)を用いてΣCm1/3＝(C1)1/3＋(C2) 1/3＋(C3) 1/3＋…＋(CN) 1/3と計算される。従ってｋ＝[{(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))（４）となる。
【０１０６】
このコントロールデータはＳ４で導出された負荷容量関数に基づき、オイラー方程式を満たすよう算出されたので消費電力エネルギーをできる限り最小化するＤＶＦＳ制御を与える。これにより、消費エネルギーを削減できるDVFS制御を実行可能な半導体装置を設計することができる。
【０１０７】
図４は、クロックカウントq(t)の時間変動を表すグラフである。従来のDVFS制御においては、周波数が一定となるように制御するので、q(t)は、図４の破線のようにtの比例関数、すなわちq(t)=f0・tの関係となる。それに対し、上述のアルゴリズムを用いて最適化した場合、クロックカウントq(t)は、始点t=0におけるクロックカウントq(0)=0、終点t=Tにおけるクロックカウントq(T)が一致するものの、その軌跡は、図４に実線で示されるように、必ずしも直線とはならない。クロックカウントｑと時刻tとの関係を示すq(t)は、ステップＳ５で得られる(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の和であるが、定数ｋを上記のとおり決定したことによりtN’=tNとなる。q(t)として(q, t)=(1,t1’), (2, t2’), …(N, tN’)が得られる。
【０１０８】
ここで、上述のアルゴリズムを用いて最適化した場合の、消費エネルギー削減の効果を、定量化して示す。定量化の計算を簡略化するために、電力プロファイルP(t)を図５のように仮定する。DVFS制御の対象である処理が実行される時刻を、時刻0からnτまでとし、時刻0からτまでの消費電力P=P0一定、時刻τからnτまでの消費電力P=mP0一定とする。ここで、mとnは任意の正の実数である。
【０１０９】
この時、式８のオイラー方程式解に基づくDVFS制御による消費エネルギーをA、一定周波数でのDVFS制御による消費エネルギーをBと置くと、 消費エネルギーの比率は、以下の式１０を用いて算出される。
【０１１０】
【数１０】
2015109010.tif 000012
【０１１１】
式１０を用いて算出される、mとnの値ごとの比率A/Bの値を図６に示す。図６に示すように、式８のオイラー方程式解に基づくDVFS制御を実施すれば、従来の一定周波数で実行するDVFS制御の消費エネルギーに比べて、消費エネルギーを削減することができる。
【０１１２】
必須ではないが、図１に示す補正処理Ｓ６をステップＳ５の後に実行してもよい。クロック供給回路及び電源供給回路は、ハードウェアの設計上、サイクル毎に瞬時に（V(q), f(q)）を変化させることができない場合がありうる。その際には、ステップＳ５の後、コントロールデータの動作電圧及び／又は動作周波数の変化回数がより少なくなるように、当該コントロールデータを補正する補正処理Ｓ６を実施することが望ましい。ここでは、コントロールデータである関数（V(q), f(q)）に対する間引き処理Ｓ６を例示する。クロック供給回路及び電源供給回路の能力の制限により時間taが、例えば100μs間隔毎の変化しか許容できない場合は、関数（（V(q), f(q)）の値が時間100μs毎に変化するように関数（（V(q), f(q)）を修正する。
【０１１３】
具体的には、まずステップＳ５で求めた（q, f）からq(t)を算出する。上述したように(q, t)の関係を算出し、コントロールデータとしては、時刻が加えられた(q, f, V, t)=(1, f1, V1, t1’), (2, f2, V2, t2’), …(tN, fN, VN, tN’)のN個のデータが得られる。
【０１１４】
次いで、時刻tの情報に基づき、N個のデータを時間ta毎にサンプリングを行う。例えば始点である時刻0から時間taを超える最初の時刻に対するコントロールデータ(q, f, V)=(s1, fs1, Vs1)を抽出する。時刻0から時間2・taを超える最初の時刻に対するコントロールデータ(s2, fs2, Vs2)を抽出する。これを時刻3・ta, 時刻4・ta…毎に時刻ｔN’に到達するまで繰り返し、最終的にはステップS5で求めたN個コントロールデータを間引いて、(s1, fs1, Vs1), (s2, fs2, Vs2), (s3, fs3, Vs3), …・(sn, fsn, Vsn)のsn個のコントロールデータに削減する。snはtN/taを超えない最大の整数となる。sn個のコントロールデータが求めるべきコントロールデータ（４）として生成される。
【０１１５】
またコントロールデータ（４）を決定する前に、sn個のコントロールデータに基づいて消費電力を算出してもよい。算出された消費電力が、ステップＳ１で得られた電力プロファイル（２）による消費電力よりも大きくなった場合には、時間taよりも大きい時間毎のサンプリングで間引き処理を再度実行してもよい。再実行の結果のサンプリングデータに基づき算出された消費電力が、電力プロファイル（２）による消費電力よりも小さくなることを検証したとき、コントロールデータ（４）とする。
【０１１６】
＜半導体装置の設計方法＞
図７は、本実施形態のアルゴリズムを適用した半導体装置の設計方法の一例を表す説明図である。
【０１１７】
まず最初にDVFS対象回路８（CPU等の論理回路）に対するシミュレーションツールあるいは実機評価環境１により、電力プロファイル情報２を得る。電力プロファイル情報２は、例えば、DVFS対象回路８に、周波数一定のクロックと一定電圧の動作電圧を与え、DVFS対象の処理を実行させた場合の、消費電力の時間変動データP(t)である。アルゴリズム上、周波数と動作電圧は既知であれば良く、必ずしも一定とする必要はないが、一定とすることにより、後段の計算を不必要に複雑化させないのが好適である。
【０１１８】
そして、得られた電力プロファイル情報２のデータを用いて、オイラー方程式解の計算ツール３により、変分法のオイラー方程式解に基づく周波数・電圧コントロールデータ４を得る。このコントロールデータ４の値に従って、DVFS制御回路５は、クロック供給回路６と電源供給回路７を制御する。クロック供給回路６は、DVFS制御回路５からの周波数コントロール指示に従って、指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、制御回路５からの電圧コントロール指示に従って、指定された電圧の電源を、DVFS対象回路８に供給する。
【０１１９】
オイラー方程式解の計算ツール３は、コンピュータがプラグラムを実行することにより実現されるものであり、図１を引用して説明したアルゴリズムのように動作する。得られた電力プロファイル情報２から、電力プロファイルP(t)をクロックサイクルq(t)に関する関数P(q)に書き換え、負荷容量Cとリーク電力Lについても、式４を使って、電力プロファイル情報P(q)から、クロックサイクルq(t)に関する負荷容量関数C(q)とリーク電力関数L(q)を求める。次にオイラー方程式である式６に、式４を代入して、変分法のオイラー方程式解としてのq(t)を求め、求めたq(t)から動作周波数f(q)及び動作電圧V(q)のコントロールデータ４を求めることができる。
【０１２０】
コントロールデータ４では、クロック１サイクル毎に、最適の動作周波数と動作電圧を規定することができる。動作周波数と動作電圧を１サイクル毎に細かく制御することにより、DVFS制御の対象である処理に必要な消費エネルギーE（消費電力Pの積分値）を、理論的に最小の値に抑えることができる。実用上は、１サイクル毎の細かい制御に替え、適当なサイクル毎に動作周波数と動作電圧を階段状に変化させることにより、理想状態に近似する低い消費エネルギーで、当該処理を実行させることができる。上記「適当なサイクル毎」は、コントロールデータ４の理想的な曲線を、階段状の制御で近似するときに、当該対象処理を完了すべき時刻の制約を満たしながら、できる限り誤差を小さくするために、適切なタイミングで切り替えればよい。従来のDVFS制御を実施する場合には、設計者が適当な処理の単位で段階的に切替える方法が採用されるが、これが消費エネルギーを最小化するために適切な区切りの単位である保証は全くない。これに対して、実際に取得した消費電力プロファイルに基づいて区切りの単位を決めることにより、消費エネルギーを最小限とするために最適の制御が可能となる。
【０１２１】
〔実施形態２〕＜コントロールデータをプログラムに埋め込むプロセッサ＞
図８は、実施形態２に係る、半導体装置の設計方法を適用した適用例を表す説明図である。
【０１２２】
半導体装置１００は、DVFS制御対象回路８とDVFS制御回路５とクロック供給回路６と、電源供給回路７とを備えて構成される。DVFS制御回路５は、周波数制御レジスタ１３と電圧制御レジスタ１４を備える。DVFS制御対象回路８に対して、クロック供給回路６は周波数制御レジスタ１３によって指定される周波数の動作クロックを供給し、電源供給回路７は電圧制御レジスタ１４によって指定される動作電圧の電源を供給する。DVFS制御対象回路８は、プログラムが格納されたコードメモリ１６を有するCPU（Central Processing Unit）などのプロセッサを備え、周波数制御レジスタ１３と電圧制御レジスタ１４にデータを書き込むことができる。例えば、DVFS制御回路５は、DVFS制御対象回路８に内蔵されるプロセッサのバスに接続される周辺回路モジュールの１つとされ、周波数制御レジスタ１３と電圧制御レジスタ１４はプロセッサのメモリ空間にアドレスマッピングされる。プロセッサは、メモリに対するロード／ストア命令によって周波数制御レジスタ１３と電圧制御レジスタ１４にアクセスすることができる。また、特に制限されないが、半導体装置１００は、例えば、公知のＣＭＯＳＬＳＩ（Large Scale Integrated circuit）の製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【０１２３】
本実施形態２に係る半導体装置１００の設計方法では、図７に示した実施形態と同様に、DVFS対象回路８に対するシミュレーションツールあるいは実機評価環境１により、電力プロファイル情報２を得る。このとき、コードメモリ１６に格納されるプログラムを、一定のクロック周波数でDVFS対象回路８が備えるプロセッサで実行する。得られた電力プロファイル情報２のデータを用いて、オイラー方程式解の計算ツール３により、オイラー方程式解に基づく周波数・電圧コントロールデータ４を得る。本実施形態では、さらに、コントロールデータ４から、変分法のオイラー方程式解に基づくプログラムコード１５を生成する。
【０１２４】
周波数・電圧コントロールデータ４には、各クロックサイクルに対して最適の動作周波数と動作電圧が規定されているので、これを適当な階段状の制御によって近似し、動作周波数と動作電圧を変更するクロックサイクルを求める。DVFS対象の処理を実行するためプログラムコードにおいて、上記で算出されたクロックサイクルを実行するプログラムステップに、周波数制御レジスタ１３と電圧制御レジスタ１４にコントロールデータ４から求めた動作周波数と動作電圧を指定するデータを書き込む命令を追加する。生成されたプログラムコード１５は、コードメモリ１６に格納される。コードメモリ１６は、例えば、DVFS対象回路８に内蔵され、予めプログラムコード１５が格納される不揮発性メモリ（ROM：Read Only Memory）として構成されてもよい。または、コードメモリ１６は、DVFS対象回路８に内蔵される揮発性のRAM（Random Access Memory）として構成されて、ブート処理などによって外部からプログラムコード１５が転送され、書き込まれるように構成されてもよい。
【０１２５】
本実施形態２の実施手順について説明する。
【０１２６】
図９は、コントロールデータ４を組み込む前のプログラムの例を表す説明図である。DVFS制御対象回路８に含まれるプロセッサによって実行されるプログラムを模式的に示したもので、命令8〜命令2000が、DVFS制御対象の処理であるとする。このプログラムを、DVFS制御対象回路８のプロセッサが実行したときの消費電力プロファイルを、シミュレーションツールまたは実機評価環境１を使って取得する。
【０１２７】
図１０は、取得した電力プロファイル２の例を表す、模式的な波形図である。時刻t0、t1、t2が、それぞれ命令8、命令1026、命令2001が実行される時刻とする。時刻t0〜t2が図９に示されるプログラムの中でDVFS対象処理が実行される期間である。図１０に示される電力プロファイル２では、時刻t0〜t1の消費電力をP0とし、時刻t1〜t2の消費電力をP1として示される。このように、図１０の電力プロファイル例においては、DVFS対象処理の期間の中で、電力が変化する時刻は、t1だけであると仮定して説明する。
【０１２８】
図８に示される手順に従って、図１０で示される電力プロファイルデータ２から、オイラー方程式解の計算ツール３を利用することにより、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４が得られる。図１１は、算出されたコントロールデータ４の例を示す表である。アドレスのカラムに記載されるアドレスは、DVFS対象処理が開始されてからの、クロックサイクル数を表す。各データ末尾の文字「H」は１６進数であることを示している。アドレス0000Hが、命令8の実行クロックサイクルに対応する。同様に、アドレス0233Hが、命令1026の実行クロックサイクルに対応する。また、アドレス0385Hが、命令2001の実行クロックサイクルに対応する。周波数と電圧のカラムには、各アドレス、即ちDVFS対象処理が開始されてからのクロックサイクル数の実行サイクルにおいて、それぞれ、周波数制御レジスタ１３と電圧制御レジスタ１４に設定されるべきデータが表記されている。周波数制御レジスタ１３と電圧制御レジスタ１４に、アドレス0000H〜0232Hの期間にはデータ60Hと50Hがそれぞれ設定され、アドレス0233H〜0384Hの期間にはデータ80Hと74Hがそれぞれ設定されることにより、動作周波数と動作電圧がオイラー方程式解に基づいて制御され、DVFS対象処理に要する消費エネルギーEが最小化される。
【０１２９】
周波数及び電圧コントロールデータ４に基づいて作成される変分法のオイラー方程式解に基づくプログラムコード１５について説明する。図１２は、コントロールデータ４が組み込まれた後のプログラムの例を表す説明図である。図９に示されるコントロールデータ４が組み込まれる前のプログラムに対して、DVFS制御に必要な命令を挿入する。まず、DVFS制御が開始される命令8の直前に、命令Aを挿入する。命令Aは、周波数制御レジスタ１３と電圧制御レジスタ１４への書きこみ命令であり、書き込み内容は、図１１のアドレス0000Hのデータの60Hと50Hである。次に、図１１のコントロールデータによれば、アドレス0233Hで周波数と電圧を変更する必要があるので、アドレス0233Hで実行される命令を求める。アドレス0233Hで実行される命令が、命令1026であることが求められ、命令1026の直前に命令Bを挿入する。命令Bは、周波数制御レジスタ１３と電圧制御レジスタ１４への書きこみ命令であり、書き込み内容は、図１１のアドレス0233Hのデータの80Hと74Hである。最後に、DVFS制御が終了する命令2000の直後に命令Cを挿入する。命令Cは、周波数制御レジスタ１３と電圧制御レジスタ１４への書きこみ命令であり、書き込み内容は、図１１のアドレス0385Hのデータの40Hと30Hである。ここで、DVFS制御を行わない時の、周波数制御レジスタ１３と電圧制御レジスタ１４に書き込むべき初期値をそれぞれ40Hと30Hと仮定している。
【０１３０】
以上のように、変分法のオイラー方程式解に基づくDVFS制御を行うために、コントロールデータ４が組み込まれた後のプログラムコード１５は、コードメモリ１６に格納される。
【０１３１】
DVFS対象回路８が、コードメモリ１６の内容を実行する際の動作を説明する。最初、周波数制御レジスタ１３には初期値40Hが書かれており、電圧制御レジスタ１４には初期値30Hが書かれているとする。この状態で、DVFS対象回路８は、図１２に示されるプログラムの命令を命令１から順番に実行していく。そして、DVFS対象回路８は、命令7の後に、上述のように挿入された命令Aを実行する。この命令Aの実行により、周波数制御レジスタ１３と電圧制御レジスタ１４には、それぞれ60Hと50Hが書き込まれる。それに応じて、クロック供給回路６は、周波数制御レジスタ１３の値によって指定された周波数のクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値によって指定された電圧の電源を、DVFS対象回路８に供給する。
【０１３２】
その後、DVFS対象回路８は、命令8以降の命令を順次実行していき、命令1025の後に、命令Bを実行する。この命令Bの実行により、周波数制御レジスタ１３と電圧制御レジスタ１４には、それぞれ80Hと74Hが書き込まれる。それに応じて、クロック供給回路６は、周波数制御レジスタ１３の値によって指定された周波数のクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値によって指定された電圧の電源を、DVFS対象回路８に供給する。
【０１３３】
その後、DVFS対象回路８は、命令1026以降の命令を順次実行していき、命令2000の後に、命令Cを実行する。この命令Cの実行により、周波数制御レジスタ１３と電圧制御レジスタ１４には、それぞれ40Hと30Hが書き込まれる。それに応じて、クロック供給回路６は、周波数制御レジスタ１３の値によって指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値によって指定された電圧の電源を、DVFS対象回路８に供給する。
【０１３４】
以上のように、DVFS制御において、周波数及び電圧を変化させる頻度が低い場合には、DVFS対象回路８の中のプロセッサ（CPU）によって直接、周波数制御レジスタ１３と電圧制御レジスタ１４を制御できる構成にすることにより、DVFS制御回路５を構成するハードウェアの回路量を削減することができる。
【０１３５】
〔実施形態３〕＜コントロールデータを記憶装置に保持する専用ハードウェア＞
図１３は、実施形態３に係る半導体装置の設計方法を適用した適用例を表す説明図である。
【０１３６】
本実施形態３に係る半導体装置１００の設計方法では、図７に示した実施形態と同様に、DVFS対象回路８に対するシミュレーションツールあるいは実機評価環境１により、電力プロファイル情報２を得る。このとき、コードメモリ１６に格納されるプログラムを、一定のクロック周波数でDVFS対象回路８が備えるプロセッサで実行する。得られた電力プロファイル情報２のデータを用いて、オイラー方程式解の計算ツール３により、オイラー方程式解に基づく周波数・電圧コントロールデータ４を得る。周波数・電圧コントロールデータ４には、各クロックサイクルに対して最適の動作周波数と動作電圧が規定されているので、これを適当な階段状の制御によって近似し、動作周波数と動作電圧が変化するクロック数を求める。
【０１３７】
半導体装置１００は、DVFS制御対象回路８とDVFS制御回路５とクロック供給回路６と、電源供給回路７とを備えて構成される。DVFS制御回路５は、周波数制御レジスタ１３と電圧制御レジスタ１４と制御回路１２とDVFS制御レジスタ１１とクロック数カウンタ１０とデータレジスタ９０〜９ｎとクロック数一致検出／データ出力回路１７とを備える。DVFS制御対象回路８に対して、クロック供給回路６は周波数制御レジスタ１３によって指定される周波数の動作クロックを供給し、電源供給回路７は電圧制御レジスタ１４によって指定される動作電圧の電源を供給する。
【０１３８】
DVFS制御回路５において、データレジスタ９０〜９ｎには、コントロールデータ４のうちの主なデータが、クロックカウント値とそのときの動作周波数と動作電圧とを組にして格納される。クロック供給回路６からDVFS制御対象回路８に供給されるクロック信号は、クロック数カウンタ１０によってカウントされる。図示が省略されるが、クロック数カウンタ１０はDVFS対象処理が開始される時点で初期化（リセット）される。クロック数一致検出／データ出力回路１７は、クロック数カウンタ１０から出力されるクロック数と、データレジスタ９０〜９ｎに格納されるクロックカウント値とを比較して、一致したときに、対応する動作周波数と動作電圧を制御回路１２に出力し、制御回路１２を介して、周波数制御レジスタ１３と電圧制御レジスタ１４とにそれぞれ書き込む。DVFS制御レジスタ１１は、DVFS制御を開始するためのスタートビットを格納するレジスタである。DVFS対象回路８がこのスタートビットをセットすると、制御回路１２は、DVFS制御を開始する。
【０１３９】
本実施形態３の実施手順について、説明する。
【０１４０】
図１３に示される手順に従って、電力プロファイルデータ２から、オイラー方程式解の計算ツール３を利用することにより、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４が得られる。図１４は、算出されたコントロールデータ４の例を示す表である。アドレスのカラムに記載されるアドレスは、DVFS対象処理が開始されてからの、クロックサイクル数を表す。ここでは、説明を簡略化するために、コントロールデータ４がクロック数に対して階段状に変化するとした一例が示される。図１４に示されるコントロールデータ４が、オイラー方程式解の計算ツール３により得られたオイラー方程式解に基づく周波数・電圧コントロールデータから、階段状に近似して求められた、クロック数に対する動作周波数と動作電圧の関係を規定するものであってもよい。
【０１４１】
クロック数0000HはDVFS制御の開始時刻に対応する。そして、クロック数0000Hから0232Hまでは、周波数と電圧のデータはそれぞれ60Hと50Hで変わらない。クロック数0233Hで周波数と電圧データがそれぞれ80Hと74Hに変化して、その後0384Hまでは変わらない。クロック数0385Hで周波数と電圧データがそれぞれ90Hと86Hに変化して、その後04A0Hまでは変わらない。また、クロック数04A1Hで周波数と電圧データがそれぞれ70Hと66Hに変化して、その後0600Ｈまでは変わらない。そして、クロック数0601HでDVFS制御は終了する。
【０１４２】
図１４の表に示される、コントロールデータ４の変化ポイントのデータは、DVFS対象回路８に対するDVFS制御を始める以前の動作により、データレジスタ９０〜９４に順に格納される。例えば、コントロールデータ４の変化ポイントのデータを不揮発性メモリに格納しておき、パワーオンリセットや電源投入時の初期化ルーチンによって、データレジスタ９０〜９４に順次転送することができる。具体的には、図１４の（クロック数/周波数/電圧）＝（0000H、60H、50H）のデータを、データレジスタ９０に格納する。（クロック数/周波数/電圧）＝（0233H、80H、74H）のデータを、データレジスタ９１に格納する。（クロック数/周波数/電圧）＝（0385H、90H、86H）のデータを、データレジスタ９２に格納する。（クロック数/周波数/電圧）＝（04A1H、70H、66H）のデータを、データレジスタ９３に格納する。最後に、DVFS制御終了ポイントである（クロック数/周波数/電圧）＝（0601H、00H、00H）のデータを、データレジスタ９４に格納する。
【０１４３】
次に、図１３を参照して、本実施形態３に係る半導体装置１００の動作について説明する。
【０１４４】
最初は、DVFS制御が開始されていないので、周波数制御レジスタ１３と電圧制御レジスタ１４にはある標準的な初期値が設定されており、その値に従って、クロック供給回路６と電源供給回路７は、クロック及び電源電圧をDVFS対象回路８に供給する。そして、DVFS対象回路８が、DVFS制御レジスタ１１のスタートビットをセットすると、制御回路１２が動作を開始する。制御回路１２はクロック数カウンタ１０のクロック数カウント動作を開始させる。この後DVFS制御が開始されると、クロック数カウンタ１０の初期値が0000Hになるので、クロック数一致検出/データ出力回路１７が、データレジスタ９０に格納されているクロック数の0000Hとクロック数カウンタ１０のクロックカウント値の一致を検出して、データレジスタ９０に格納されている、対応する周波数と電圧のデータを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、DVFS対象回路８に供給する。
【０１４５】
この後、クロック数カウンタ１０の値は、0000Hから順に進んでいき、クロック数カウンタ１０の値が0233Hになると、クロック数一致検出/データ出力回路１７が、データレジスタ９１に格納されるクロック数の0233Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９１に格納されている、対応する周波数と電圧のデータを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、DVFS対象回路８に供給する。
【０１４６】
この後、クロック数カウンタ１０の値は、更に進んでいき、クロック数カウンタ１０の値が0385Hになると、クロック数一致検出/データ出力回路１７が、データレジスタ９２に格納されるクロック数の0385Ｈとクロック数カウンタ１０の値の一致を検出して、データレジスタ９２に格納されている対応する周波数と電圧のデータを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、DVFS対象回路８に供給する。
【０１４７】
この後、クロック数カウンタ１０の値は、更に進んでいき、クロック数カウンタ１０の値が04A1Hになると、クロック数一致検出/データ出力回路１７が、データレジスタ９３に格納されるクロック数の04A1Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９３に格納されている対応する周波数と電圧のデータを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、DVFS対象回路８に供給する。
【０１４８】
この後、クロック数カウンタ１０の値は、更に進んでいき、クロック数カウンタ１０の値が0601Hになると、クロック数一致検出/データ出力回路１７が、データレジスタ９４に格納されるクロック数の0601Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９４に格納されている対応する周波数と電圧のデータを制御回路１２に転送する。ただし、この時の周波数と電圧のデータデータは0000Hである。制御回路１２は、0000Hデータを受け取ると、DVFS制御が終了したことを検知して、周波数制御レジスタ１３及び、電圧制御レジスタ１４に、標準的な初期値を設定する。同時に、制御回路１２は、DVFS制御レジスタ１１のスタートビット及び、クロック数カウンタ１０の値をクリアする。
【０１４９】
以上のように、DVFS制御回路５にクロック数カウンタ１０とデータレジスタ９０〜９ｎとクロック数一致検出/データ出力回路１７と制御回路１２を設けることにより、DVFS対象回路８が備えるプロセッサ（CPU）に与えるプログラムを改変することなく、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４に基づくDVFS制御を行うことができる。さらには、DVFS対象回路８がプロセッサを備えない専用ハードウェア、或いはプログラムの改変を許容しない特殊なプロセッサである場合にも、同様に、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４に基づくDVFS制御を行うことができる。
【０１５０】
〔実施形態４〕＜１サイクル毎のコントロールデータ＞
図１５は、実施形態４に係る、半導体装置の設計方法を適用した適用例を表す説明図である。
【０１５１】
本実施形態４に係る半導体装置１００の設計方法では、図７に示した実施形態と同様に、DVFS対象回路８に対するシミュレーションツールあるいは実機評価環境１により、電力プロファイル情報２を得る。このとき、コードメモリ１６に格納されるプログラムを、一定のクロック周波数でDVFS対象回路８が備えるプロセッサで実行する。得られた電力プロファイル情報２のデータを用いて、オイラー方程式解の計算ツール３により、オイラー方程式解に基づく周波数・電圧コントロールデータ４を得る。周波数・電圧コントロールデータ４には、各クロックサイクルに対して最適の動作周波数と動作電圧が規定されている。実施形態２と３においては、これを階段状の制御に近似する例を示したが、本実施形態においては１サイクル毎のコントロールデータ４を使って、１サイクル毎に動作周波数と動作電圧を制御することにより、最適なDVFS制御を実現する。
【０１５２】
半導体装置１００は、DVFS制御対象回路８とDVFS制御回路５とクロック供給回路６と、電源供給回路７とを備えて構成される。DVFS制御回路５は、周波数制御レジスタ１３と電圧制御レジスタ１４と制御回路１２とDVFS制御レジスタ１１とクロック数カウンタ１０とメモリ９とを備える。DVFS制御対象回路８に対して、クロック供給回路６は周波数制御レジスタ１３によって指定される周波数の動作クロックを供給し、電源供給回路７は電圧制御レジスタ１４によって指定される動作電圧の電源を供給する。
【０１５３】
DVFS制御回路５において、コントロールデータ４はメモリ９に格納される。例えば、オイラー方程式解によって得られた各サイクルをメモリ９のアドレスとし、そのアドレスに対応する周波数・電圧のコントロールデータ４を格納する。クロック数カウンタ１０は、クロック供給回路６から、DVFS対象回路８に供給されるクロック数をカウントするカウンタである。このクロック数カウンタ１０の値は、メモリ９のアドレスに入力され、対応する周波数・電圧のコントロールデータ４が読み出される。読み出された周波数・電圧コントロールデータ４は、制御回路１２を介して、周波数制御レジスタ１３と電圧制御レジスタ１４とにそれぞれ書き込まれる。DVFS制御レジスタ１１は、DVFS制御を開始するためのスタートビットを格納するレジスタである。DVFS対象回路８がこのスタートビットをセットすると、制御回路１２は、DVFS制御を開始する。
【０１５４】
本実施形態４の実施手順について説明する。
【０１５５】
図１５に示される手順に従って、電力プロファイルデータ２から、オイラー方程式解の計算ツール３を利用することにより、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４が得られる。
【０１５６】
図１６は、DVFS制御対象回路（CPU等）８が実行するプログラムの例を表す説明図である。命令7〜命令99がDVFS対象処理であり、命令６を実行することにより、DVFS対象回路８がこのスタートビットをセットする。図１５に示される、DVFS対象回路８に対するシミュレーションツールあるいは実機評価環境１では、DVFS対象処理である命令7〜命令99を実行することにより、電力プロファイル情報２を得る。得られた電力プロファイル情報２のデータを用いて、オイラー方程式解の計算ツール３により、オイラー方程式解に基づく周波数・電圧コントロールデータ４を得る。
【０１５７】
図１７は、算出されたコントロールデータ４の数値例と、それがメモリ９に格納された状態を例示する表である。DVFS対象処理である命令7〜命令99が実行されることによって、クロックサイクルは0000Hから0299Hまで進み、029AHでDVFS対象外の処理に戻る。クロックサイクルは0000Hから0299Hに対応して得られた周波数・電圧コントロールデータ４は、メモリ９のアドレス0000Hから0299Hに格納される。クロックサイクル0000H〜0102Hに対応する周波数・電圧コントロールデータ４がそれぞれ80Hと80Hであり、その値がメモリ９のアドレス0000H〜0102Hに格納されている。また、クロックサイクル0103H〜0299Hに対応する周波数・電圧コントロールデータ４がそれぞれ82Hと84Hであり、その値がメモリ９のアドレス0103H〜0299Hに格納され、アドレス029AH以降にはそれぞれ00Hと00Hが格納されている。メモリ９は例えば16ビット幅であり、上位に動作周波数を指定する8ビットが格納され、下位に動作電圧を指定する8ビットが格納される。これにより、メモリ９にアドレスが指定されると周波数と電圧を指定するコントロールデータ４が同時に読み出される。ここに示される数値は一例に過ぎず、ビット数を含めて取り得る値は任意である。特に、図１７には、周波数と電圧があるクロックサイクルの範囲で一定の例を示したが、毎サイクル変化してもよい。メモリ９は、例えば不揮発性メモリとして実装され、出荷時に周波数・電圧コントロールデータ４が書き込まれる。コントロールデータ４は、製品の個体ごとに個別に算出されてもよい。これにより、個体ごとに最適化されたDVFS制御を行うことができる。
【０１５８】
次に、実際のDVFS制御動作について説明する。
【０１５９】
まず、DVFS対象回路８を動作させて、図１６に示されるプログラムの命令を命令１から順次実行させる。最初は、DVFS制御は開始されていないので、周波数制御レジスタ１３と電圧制御レジスタ１４にはある標準的な初期値が設定されており、その値に従って、クロック供給回路６と電源供給回路７は、クロック及び電源電圧をDVFS対象回路８に供給する。その後、命令が順次実行されていき、命令６が実行されると、DVFS制御レジスタ１１のスタートビットがセットされる。スタートビットが設定されると、制御回路１２が動作を開始する。
【０１６０】
この時、制御回路１２はクロック数カウンタ１０のクロック数カウント動作を開始させる。クロック数カウンタ１０は、クロック供給回路６から供給されるクロックの数を順次カウントしていく。そして、制御回路１２は、クロック数カウンタ１０の値で指定されるアドレスに対応するメモリ９の内容を、順次受け取って、周波数制御レジスタ１３と電圧制御レジスタ１４の値を順次更新していく。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、DVFS対象回路８に供給する。
【０１６１】
このように、クロック数カウンタ１０の値は、0000Hから順に進んでいくが、DVFS対象処理が完了して、クロックカウントが029AHになり、メモリ９の029AH番地がアクセスされると、メモリ９からはデータ0000Hが、制御回路１２に供給される。制御回路１２は、データ0000Hを受け取ると、DVFS制御が完了したことを検知して、周波数制御レジスタ１３と電圧制御レジスタ１４に、標準的な初期値を設定する。同時に、制御回路１２は、DVFS制御レジスタ１１のスタートビット及び、クロック数カウンタ１０の値をクリアする。
【０１６２】
以上のように、DVFS制御回路５にクロック数カウンタ１０とメモリ９と制御回路１２を設けることにより、DVFS対象回路８が備えるプロセッサ（CPU）に与えるプログラムを改変することなく、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４に基づくDVFS制御を行うことができる。このとき、メモリ９には、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４を、近似することなく、１サイクル毎に全て格納することができるので、消費エネルギーが理論的に最小化された、理想的なDVFS制御を行うことができる。また、DVFS対象回路８がプロセッサを備えない専用ハードウェア、或いはプログラムの改変を許容しない特殊なプロセッサである場合にも、同様に、変分法のオイラー方程式解に基づく周波数及び電圧コントロールデータ４に基づくDVFS制御を行うことができる。
【０１６３】
〔実施形態５〕＜複数ＣＰＵ＞
本実施形態５においては、図７に示したDVFS対象回路８の中に、並列動作可能な複数のIP（Intellectual Property）が存在する場合を考える。図１８は複数のIPを備えたDVFS制御対象回路８を含むマイコン２０の構成例を表すブロック図である。図７に示される半導体装置の設計方法は、このDVFS制御対象回路８にも適用可能であり、例えば、オイラー方程式解の計算ツール３は、オイラー方程式解に基づくDVFS制御を実施した際の消費エネルギーを出力する機能を備えている。
【０１６４】
マイコン２０は、DVFS制御回路５と、クロック供給回路６と、電源供給回路７と、DVFS対象回路８とを含んで構成される。複数のIPは、例えば、ローカルメモリ（LM）２６＿１〜２６＿４を備えたCPU２１＿１〜２１＿４によって構成される。マイコン２０は、さらに、RAM２２、ROM２３、DMA制御回路３２、割り込み制御回路３３、バスブリッジ３１、周辺回路２５＿１〜２５＿４等を含んで構成される。複数のCPU２１＿１〜２１＿４は、RAM２２、ROM２３、DMA制御回路３２、割り込み制御回路３３等と、バス３０＿１を介して接続されている。バス３０＿１はバス３０＿２とバスブリッジ３１を介して接続され、バス３０＿２には周辺回路２５＿１〜２５＿４等が接続される。DVFS制御回路５は、例えばバス３０＿１に接続される。周辺回路２５＿１〜２５＿４等と同様にバス３０＿２に接続されてもよい。クロック供給回路６と電源供給回路７は、DVFS対象回路８にそれぞれクロック信号と電源を供給する。マイコン２０全体をDVFS対象回路８としても、またはCPU２１＿１〜２１＿４とローカルメモリ（LM）２６＿１〜２６＿４のみをDVFS対象回路８としてもよい。ROM２３にはCPU２１＿１〜２１＿４によって実行されるプログラムが格納されており、CPU２１＿１〜２１＿４は、それぞれ割り当てられた処理に必要なプログラムコードを自身のローカルメモリ（LM）２６＿１〜２６＿４にキャッシュして実行する。
【０１６５】
図１８に示される構成は、単なる一例に過ぎず、CPUがローカルメモリを備えず、共通のROM２３から順次命令コードをフェッチして動作するように構成されても、あるいは個々にプログラムROMを備えて構成されてもよい。また、バスやメモリの階層構造も任意である。IPはCPUによって構成されるものには限られず、DSP（Digital Signal Processor）など他の命令セットによってプログラミングされたプログラムを実行可能なプロセッサを含んで構成され、或いは、単純なシーケンサによって構成された専用ハードウェアであってもよい。ただし、以下の説明は、図１８に示される構成のように、DVFS対象回路８における複数のIPが複数のCPUによって構成され、ROM２３に格納されるプログラムをそれぞれ分担して実行することができる構成であることを前提としている。
【０１６６】
本実施形態５の実施手順について説明する。まず、所定のソフトウェアを、DVFS制御対象回路８が実行したときの消費電力プロファイルを、シミュレーションツールまたは実機評価環境１を使って取得する。図１９は、ソフトウェア変更前の電力プロファイル２の例を表す、模式的な波形図である。時刻0からτまで消費電力はP0一定である。DVFS対象回路８は、並列動作可能な複数のIP（例えば、CPU等）で構成されているので、ソフトウェアを変更して、並列処理を増加させることにより、図２０のような電力プロファイルデータ２に変更できたとする。ここでα、β及びγは正の実数であり、処理の並列度に対応して変化する。図２０では、時刻0からατまでは、並列度を落として処理を実行し、消費電力をP0よりも低いβP0に抑え、時刻ατからτまでは、並列度を上げて処理を実行し、消費電力をP0よりも大きいγP0とすることにより、図１９に示したのと同じ時刻0からτまで期間に、同じソフトウェアの実行を完了する。
【０１６７】
この時、ソフトウェアの変更前後で、消費エネルギーは不変とすると、以下の関係式が成り立つ。
【０１６８】
【数１１】
2015109010.tif 000013
【０１６９】
上式を変形すると、α、β、γの間には、以下の関係が成り立つ。
【０１７０】
【数１２】
2015109010.tif 000014
【０１７１】
ソフトウェア変更後の図２０に示される電力プロファイルデータ２に対してオイラー方程式解に基づくDVFS制御を実行した場合の消費エネルギーをA1とし、ソフトウェア変更前の図１９に示される電力プロファイルデータ２に対してDVFS制御を実行した場合の消費エネルギーをB1とすると、A1/B1の値は以下のようになる。
【０１７２】
【数１３】
2015109010.tif 000015
【０１７３】
図２１は、並列度を調整した場合の消費電力削減効果の数値例を表す表である。式１３に適当なα、β、γの値を代入して算出した、A1/B1の値が示される。並列処理が増加するほど、オイラー方程式に従うDVFS制御による消費電力量（エネルギー）が小さくなることがわかる。
【０１７４】
よって、DVFS対象回路が、並列動作可能な複数の回路（CPU等）で構成されている場合は、オイラー方程式解の計算ツール３を活用して得られる電力や消費エネルギー情報をフィードバックしながら、ソフトウェアを変更することにより、できる限り並列処理を増加させた上で、オイラー方程式に従うDVFS制御を行えば、効果的に消費電力量（エネルギー）を低減できる。
【０１７５】
〔実施形態６〕＜応用例＞
本実施形態６では、実施形態１に示した半導体装置の設計方法を、回路・制御方式をセンサー・マイコンシステムに適用した、応用例について説明する。
【０１７６】
図２２は、本実施形態６に係るマイコン２０の構成例を表すブロック図である。マイコン２０には、CPU２１、RAM２２、ROM２３、AD変換器２４、周辺回路２５＿１〜２５＿ｎ、通信回路２７、DVFS制御回路５、クロック供給回路６、電源供給回路７を搭載され、センサ１８が接続され、外部のデータセンター１９とデータ通信路で接続可能に構成される。CPU２１、RAM２２、ROM２３、AD変換器２４、周辺回路２５＿１〜２５＿ｎ、通信回路２７、DVFS制御回路５は、バス３０にそれぞれ接続されている。ここで、DVFS制御回路５、クロック供給回路６、電源供給回路７は、例えば、実施形態２において図８を引用して説明した回路である。図示は省略されているが、DVFS制御回路５は、DVFS制御レジスタ１１と周波数制御レジスタ１３と電圧制御レジスタ１４とを含んで構成される。DVFS制御レジスタ１１は、DVFS制御を開始するためのスタートビットを格納するレジスタである。クロック供給回路６は周波数制御レジスタ１３によって指定される周波数の動作クロックを供給し、電源供給回路７は電圧制御レジスタ１４によって指定される動作電圧の電源を供給する。周波数制御レジスタ１３と電圧制御レジスタ１４はプロセッサのメモリ空間にアドレスマッピングされ、CPU２１は、メモリに対するロード／ストア命令によって周波数制御レジスタ１３と電圧制御レジスタ１４にアクセスすることができる。また、特に制限されないが、マイコン２０は、例えば、公知のＣＭＯＳＬＳＩの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【０１７７】
マイコン２０は、センサー１８から入力されるアナログデータをサンプリングした後、そのデータをAD変換器２４でディジタルデータに変換し、その後、CPU２１で平均化処理・有意性判定等の演算処理をした後に、そのディジタルデータを外部のデータセンター１９に送信するまでの処理を、ある決められた一定時間内に行う。
【０１７８】
本実施形態６の実施手順について説明する。
【０１７９】
上述の処理のうちDVFS制御対象の処理のためのプログラムを、DVFS制御対象回路８のプロセッサが実行したときの消費電力プロファイル２を、シミュレーションツールまたは実機評価環境１を使って取得する。図２３は、取得した電力プロファイル２の例を表す模式的な波形図である。マイコン２０が、センサー１８から受け取ったデータを、外部のデータセンター１９に送信するまでの動作を一定のクロック周波数で実行した場合の、消費電力プロファイル２である。時刻0から時刻T１までの間は、センサー１８から入力されるアナログデータを、AD変換器２４でサンプリングして、ディジタルデータに変換した後に、RAM２２に転送するまでの期間である。ここで、時刻0から時刻T１までの間の電力値をP0とする。また、時刻T1から時刻T２までの間は、RAM２２に格納されたデータをCPU２１が読み出して、平均化処理・有意性判定等の演算処理を行った後に、データセンター１９への送信データとして、送信レジスタ２９に格納するまでの期間である。ここで、時刻T1から時刻T２までの間の電力値を3P0とする。時刻T２から時刻T３までの間は、送信レジスタ２９に格納された送信データを、通信回路２７から、外部のデータセンター１９に送信するまでの期間である。時刻T２から時刻Tまでの間の電力値を2P0とする。
【０１８０】
次に、取得した電力プロファイル２を元にしてオイラー方程式解の計算ツール３が、周波数及び電圧コントロールデータ４を出力する。図２４は、算出されたコントロールデータ４の例を示す表である。図２３の時刻0、T1、T2、Tは、それぞれクロック数0000H、0155H、0347H、0520Hに対応する。算出されたコントロールデータ４に従って、クロック数0000Hから0154Hまでの期間は、周波数制御レジスタ１３と電圧制御レジスタ１４とにそれぞれ60Hと50Hを格納する。その後クロック数0155Hから0346Hまでの期間は、周波数と電圧としてそれぞれ42Hと37Hを格納し、クロック数0347Hから051FHまでの期間は、周波数と電圧としてそれぞれ4CHと3FHを格納する。DVFS制御対象の処理が完了する時刻Tに対応する、クロック数0520Hには、周波数制御レジスタ１３と電圧制御レジスタ１４に、標準的な初期値を設定する。
【０１８１】
算出されたコントロールデータ４に基づくDVFS制御の方法は、実施形態２で説明したように、周波数制御レジスタ１３と電圧制御レジスタ１４に対するデータ書き込み命令、例えば、マッピングされているアドレスへのストア命令を、周波数と電圧を変更させるべきポイントに追加することにより、実現することができる。以下により詳しく説明する。
【０１８２】
図２４におけるクロック数と、CPU２１によってDVFS制御対象の処理を実行するプログラムの、命令コードとの対応付けを行う。クロック数0000Hを実行する命令コードの直前に、周波数制御レジスタ１３と電圧制御レジスタ１４に、それぞれコントロールデータ４に従った周波数と電圧のデータ60Hと50Hをそれぞれ設定する命令を挿入する。さらに、クロック数0155Hを実行する命令コードの直前に、周波数制御レジスタ１３と電圧制御レジスタ１４に、コントロールデータ４に従った周波数と電圧のデータ42Hと37Hをそれぞれ設定する命令を挿入する。さらに、クロック数0347Hを実行する命令コードの直前に、周波数制御レジスタ１３と電圧制御レジスタ１４に、コントロールデータ４に従った周波数と電圧のデータ4CHと3FHをそれぞれ設定する命令を挿入する。最後に、クロック数0520Hを実行する命令コードの直前に、周波数制御レジスタ１３と電圧制御レジスタ１４に、周波数と電圧の規定の初期データをそれぞれ設定する命令を挿入する。
【０１８３】
DVFS制御の開始に当たって、まず、CPU２１が周波数制御レジスタ１３と電圧制御レジスタ１４へのデータ書き込み命令を実行することにより、周波数制御レジスタ１３にデータ60Hが設定され、電圧制御レジスタ１４にデータ50Hが設定される。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８であるCPU２１等に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、マイコン２０全体に供給する。
【０１８４】
この状態でまず、AD変換器２４が、センサー１８から入力されるアナログ信号をサンプリングして、ディジタルデータに変換する。変換されたディジタルデータは、CPU２１を介して、RAM２２に転送される。そして、このセンサー１８のデータのサンプリングからディジタルデータのRAM２２への格納までの処理が、規定回数分完了するとクロック数は0154Hになる。
【０１８５】
次に、クロック数0155Hを実行する命令コードの直前に追加された、周波数制御レジスタ１３と電圧制御レジスタ１４に、コントロールデータ４に従った周波数と電圧のデータ42Hと37Hをそれぞれ設定する命令が実行される。追加された周波数制御レジスタ１３と電圧制御レジスタ１４へのデータ書き込み命令により、周波数制御レジスタ１３にデータ42Hが設定され、電圧制御レジスタ１４にデータ37Hが設定される。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８であるCPU２１等に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、マイコン２０全体に供給する。この状態でCPU２１は、RAM２２に格納されたデータの演算処理を開始する。例えば、CPU２１はRAM２２から、サンプリングされたディジタルデータ群を読み出して、平均化処理や、有意性判定等の演算処理を行い、その演算結果を、外部のデータセンター１９に送るための送信データとして、通信回路２７の送信レジスタ２９に格納する。この一連の処理が終わった時点で、クロック数は0346Hになる。
【０１８６】
次に、クロック数0347Hを実行する命令コードの直前に追加された、周波数制御レジスタ１３と電圧制御レジスタ１４に、コントロールデータ４に従った周波数と電圧のデータ4CHと3FHをそれぞれ設定する命令が実行される。追加された周波数制御レジスタ１３と電圧制御レジスタ１４へのデータ書き込み命令により、周波数制御レジスタ１３にデータ4CHが設定され、電圧制御レジスタ１４にデータ3FHが設定される。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８であるCPU２１等に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、マイコン２０全体に供給する。
【０１８７】
次に、この状態でCPU２１は、通信回路２７の中の通信スタートビット２８をセットする。それを受けて、通信回路２７は、通信回路２７の中の送信レジスタ２９に格納されている送信データを、外部のデータセンター１９に対して、送信し始める。その後、通信回路２７が、送信レジスタ２９内の全てのデータを送信し終わった時点で、クロック数は051FHになる。
【０１８８】
次に、クロック数0520Hを実行する命令コードの直前に追加された、周波数制御レジスタ１３と電圧制御レジスタ１４に、コントロールデータ４に従った周波数と電圧の規定の初期データをそれぞれ設定する命令が実行されて、制御回路１２は、DVFS動作を完了する。
【０１８９】
以上、DVFS制御回路５を実施形態２と同様に構成し、コントロールデータ４の変化点に対応付けて、周波数制御レジスタ１３と電圧制御レジスタ１４に対するデータ書き込み命令を、プログラムに追加する実施形態について説明したが、これに対して、実施形態３で説明したように構成しても良い。即ち、図１３と同様に、DVFS制御回路５は、さらにクロック数カウンタ１０とデータレジスタ９０〜９ｎとクロック数一致検出／データ出力回路１７とを備え、データレジスタ９０〜９ｎに、上記の各変化点のデータを格納しておく。クロック数カウンタ１０がカウントするクロック数と一致したときに、周波数制御レジスタ１３と電圧制御レジスタ１４に対応するデータを転送する。図２２〜図２４に加えて図１３を併せて引用しながら、以下により詳しく説明する。
【０１９０】
図２４における（クロック数、周波数、電圧）＝（0000H、60H、50H）、（0155H、42H、37H）、（0347H、4CH、3FH）、（0520H、00H、00H）のデータは、予め図２２のROM２３内に格納されているものとする。そして、CPU２１は、DVFS制御を開始する前に、ROM２３からそれぞれのデータを読み出して、順番に、データレジスタ９０〜９３に格納する。具体的には、（クロック数、周波数、電圧）＝（0000H、60H、50H）のデータを、データレジスタ９０に格納する。（クロック数、周波数、電圧）＝（0155H、42H、037H）のデータを、データレジスタ９１に格納する。（クロック数、周波数、電圧）＝（0347H、4CH、3FH）のデータを、データレジスタ９２に格納する。（クロック数、周波数、電圧）＝（0520H、00H、00H）のデータを、データレジスタ９３に格納する。
【０１９１】
DVFS制御の開始に当たって、まず、CPU２１がDVFS制御レジスタ１１のスタートビットをセットする命令を実行すると、DVFS制御回路５内の制御回路１２が動作を開始する。
【０１９２】
そして、制御回路１２はクロック数カウンタ１０のクロック数カウント動作を開始させる。この時、クロック数カウンタ１０の初期値は0000Hであるので、クロック数一致検出/データ出力回路１７が、データレジスタ９０のクロック数の0000Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９０に格納されている周波数と電圧のデータ60Hと50Hを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８であるCPU21等に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、マイコン２０全体に供給する。
【０１９３】
この状態でまず、AD変換器２４が、センサー１８から入力されるアナログ信号をサンプリングして、ディジタルデータに変換する。変換されたディジタルデータは、CPU２１を介して、RAM２２に転送される。そして、このセンサー１８のデータのサンプリングからディジタルデータのRAM２２への格納までの処理が、規定回数分完了すると、クロック数カウンタ１０の値が、0155Hになる。
【０１９４】
この時、クロック数一致検出/データ出力回路１７が、データレジスタ９１のクロック数の0155Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９１に格納されている、周波数と電圧のデータ42Hと37Hを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータ42Hと37Hを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８であるCPU21等に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、マイコン２０全体に供給する。
【０１９５】
次に、この状態でCPU２１は、RAM２２に格納されたデータの演算処理を開始する。例えば、CPU２１はRAM２２から、サンプリングされたディジタルデータ群を読み出して、平均化処理や、有意性判定等の演算処理を行い、その演算結果を、外部のデータセンター１９に送るための送信データとして、通信回路２７の送信レジスタ２９に格納する。この時点で、クロック数カウンタ１０の値が、0347Hになる。
【０１９６】
この時、クロック数一致検出/データ出力回路１７が、データレジスタ９２のクロック数の0347Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９２に格納されている、周波数と電圧のデータ4CHと3FHを制御回路１２に転送する。制御回路１２は、受け取った周波数と電圧のデータ4CHと3FHを、周波数制御レジスタ１３と電圧制御レジスタ１４にそれぞれ設定する。クロック供給回路６は、周波数制御レジスタ１３の値に従って、指定された周波数を持つクロックを、DVFS対象回路８であるCPU21等に供給する。また、電源供給回路７は、電圧制御レジスタ１４の値に従って、指定された電圧の電源を、マイコン２０全体に供給する。
【０１９７】
次に、この状態でCPU２１は、通信回路２７の中の通信スタートビット２８をセットする。それを受けて、通信回路２７は、通信回路２７の中の送信レジスタ２９に格納されている送信データを、外部のデータセンター１９に対して、送信し始める。その後、通信回路２７が、送信レジスタ２９内の全てのデータを送信し終わった時点で、クロック数カウンタ１０の値が、0520Hになる。
【０１９８】
この時、クロック数一致検出/データ出力回路１７が、データレジスタ９３のクロック数の0520Hとクロック数カウンタ１０の値の一致を検出して、データレジスタ９３に格納されている周波数と電圧のデータ00Hと00Hを制御回路12に転送する。この時の周波数と電圧のデータは0000Hである。制御回路１２は、0000Hデータを受け取ると、DVFS制御が終了したことを検知して、周波数制御レジスタ１３及び、電圧制御レジスタ１４に、規定の初期値を設定する。同時に、制御回路１２は、DVFS制御レジスタ１１のスタートビット及び、クロック数カウンタ１０の値をクリアして、DVFS動作が完了する。
【０１９９】
以上、DVFS制御回路５を実施形態３と同様に構成する場合について説明したが、これに対して、算出されたコントロールデータ４が滑らかに変化するもので、特徴的な変化点が特定できない場合には、実施形態４で説明したように構成しても良い。DVFS制御回路５にさらにクロック数カウンタ１０とメモリ９とを備え、クロック数に対応するメモリ９のアドレスに、対応する周波数と電圧のデータを格納しておく。クロック数カウンタ１０がカウントするクロック数をアドレスとして、メモリ９がアクセスされ、周波数制御レジスタ１３と電圧制御レジスタ１４に対応するデータが転送される。
【０２００】
このように、センサー・マイコンシステムにおけるセンサーデータサンプリングからデータセンターへの通信までの一連の処理に対して、実施形態２、３又は４に示したDVFS制御を行って、消費エネルギーが最小となるマイコン動作を実現できる。
【０２０１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０２０２】
例えば、１個のLSIまたは１個のシステムが、DVFS制御される対象の論理回路を、複数個含んで構成されてもよい。CPUが実施形態２に示されるような態様でDVFS制御され、同一チップに集積され当該CPUの制御対象であるアクセラレータや周辺回路モジュールが、実施形態３または４に示されるような態様で、CPUに対する制御とは独立にDVFS制御されてもよい。
【符号の説明】
【０２０３】
１  消費電力シミュレーションツールまたは実機評価環境
２  電力プロファイル情報P(t)
３  オイラー方程式解の計算ツール
４  周波数・電圧コントロールデータ
５  DVFS制御回路
６  クロック供給回路
７  電源供給回路
８  DVFS対象回路
９  メモリ
１０  クロック数カウンタ
１１  DVFS制御レジスタ
１２  制御回路
１３  周波数制御レジスタ
１４  電圧制御レジスタ
１５  プログラム
１６  コードメモリ
１７  クロック数一致検出／データ出力回路
１８  センサ
１９  データセンタ
２０  マイコン
２１  ＣＰＵ
２２  ＲＡＭ
２３  ＲＯＭ
２４  ＡＤ変換器
２５  周辺回路
２６  ローカルメモリ（ＬＭ）
２７  通信回路
２８  通信スタートビット
２９  送信レジスタ
３０  バス
３１  バスブリッジ
３２  ＤＭＡ制御回路（ＤＭＡＣ）
３３  割り込み制御回路（ＩＮＴＣ）
９０〜９ｎ  データレジスタ
１００  半導体装置
Ｓ１  消費電力測定（シミュレーションまたは実機評価）
Ｓ２  変分法によるオイラー方程式解の計算
Ｓ３  変数変換（時刻tからクロックサイクルq(t)への変換）
Ｓ４  負荷容量関数C(q)の導出
Ｓ５  周波数関数f(q)と電圧関数V(q)の導出
【図１】
2015109010.tif 000016
【図２】
2015109010.tif 000017
【図３】
2015109010.tif 000018
【図４】
2015109010.tif 000019
【図５】
2015109010.tif 000020
【図６】
2015109010.tif 000021
【図７】
2015109010.tif 000022
【図８】
2015109010.tif 000023
【図９】
2015109010.tif 000024
【図１０】
2015109010.tif 000025
【図１１】
2015109010.tif 000026
【図１２】
2015109010.tif 000027
【図１３】
2015109010.tif 000028
【図１４】
2015109010.tif 000029
【図１５】
2015109010.tif 000030
【図１６】
2015109010.tif 000031
【図１７】
2015109010.tif 000032
【図１８】
2015109010.tif 000033
【図１９】
2015109010.tif 000034
【図２０】
2015109010.tif 000035
【図２１】
2015109010.tif 000036
【図２２】
2015109010.tif 000037
【図２３】
2015109010.tif 000038
【図２４】
2015109010.tif 000039