動作電圧を可変とする複数の処理ユニットと、これら処理ユニットを制御するコントローラを有するLSIと、前記LSIからの前記処理ユニット毎に対応した電源供給の要求に応じて電源電圧を前記処理ユニットに供給する電源制御ユニットと、前記処理ユニット毎に前記電源制御ユニットに指示する電源電圧指示値を保持する書き換え可能な不揮発メモリと、を備え、前記コントローラは、前記処理ユニット毎に前記不揮発メモリに保持された電源電圧指示値を取得し、取得した電源電圧指示値を前記電源制御ユニットに転送する半導体装置。所定の電源電圧指示値が、実際に前記処理ユニットでアプリケーションを実行可能な最下限の電源電圧指示値か否かを判定する動作判定プログラムを、前記不揮発メモリに保持する請求項1記載の半導体装置。前記処理ユニットは、前記動作判定プログラムを実行し、予め設定された電源電圧指示値では、正常に動作しないと判定されれば当該電源電圧指示値を上げ、正常に動作すると判定されるまで繰り返し、電源制御ユニット指示値テーブルを正常に動作すると判定されたときの電源電圧指示値に更新する請求項2記載の半導体装置。前記処理ユニットが対応する動作周波数と前記処理ユニットの動作条件毎に、前記電源制御ユニット指示値テーブル内の電源電圧指示値が関連付けられている請求項1記載の半導体装置。前記処理ユニットにおいて前記処理ユニットの有する特定の機能ブロックのON/OFFを制限する動作条件を定義し、それぞれの動作条件に対応する動作判定プログラムを備えた請求項1記載の半導体装置。動作電圧を可変とする複数の処理ユニットと、これら処理ユニットを制御するコントローラを有するLSIと、前記LSIからの前記処理ユニット毎に対応した電源供給の要求に応じて電源電圧を前記処理ユニットに供給する電源制御ユニットと、前記処理ユニット毎に前記電源制御ユニットに指示する電源電圧指示値を保存する書き換え可能な不揮発メモリと、を備える半導体装置の動作電源電圧制御方法であって、前記コントローラは、前記処理ユニットの識別情報を読み出すとともに、前記電源電圧指示値が保持されたテーブルの参照を要求し、前記コントローラは、前記処理ユニットの識別情報をキーとして前記テーブルから前記電源電圧指示値を取得し、前記コントローラは、前記電源制御ユニットに前記電源電圧指示値を転送し、前記電源制御ユニットは、前記電源電圧指示値に基づいて電源電圧を前記処理ユニットに供給する、半導体装置の動作電源電圧制御方法。本発明が解決しようとする課題は、半導体装置の処理動作時に最適な電源電圧を付与することができる半導体装置及びその動作電源電圧制御方法を提供することにある。実施形態の半導体装置は、動作電圧を可変とする複数の処理ユニットと、これら処理ユニットを制御するコントローラを有するLSIと、前記LSIからの前記処理ユニット毎に対応した電源供給の要求に応じて電源電圧を前記処理ユニットに供給する電源制御ユニットと、前記処理ユニット毎に前記電源制御ユニットに指示する電源電圧指示値を保持する書き換え可能な不揮発メモリと、を備え、前記コントローラは、前記処理ユニット毎に前記不揮発メモリに保持された電源電圧指示値を取得し、取得した電源電圧指示値を前記電源制御ユニットに転送する。以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。図1は、本実施形態に係る半導体装置の構成を示す図である。本実施形態に係る半導体装置100は、LSI10と、電源制御ユニット20と、不揮発メモリ30で構成されている。LSI10は、複数の処理ユニット11と、コントローラ12を有している。不揮発メモリ30は、電源制御ユニット指示値データベース31と、動作判定プログラム32を格納している。不揮発メモリ30としては、例えばNAND型フラッシュメモリが好適である。各処理ユニット11は、半導体装置100を搭載したセット製品にインストールされるアプリケーションを分担して実行するものである。アプリケーションには、処理ユニット11が実行する際の負荷が低負荷のものもあれば、高負荷のものもあり、一律ではない。低負荷のものは、低周波数で作動電圧が制御され、高負荷のものは高周波数で作動電圧が制御される。LSI10の評価時に、周波数毎の最適な電源電圧値を決定するプロセスは、作業量も多く、対応できる周波数にも限りがある。本実施形態において、各処理ユニット11の動作する電源電圧値は一定値ではなく、正常な動作を行う範囲内において可変となっている。各処理ユニット11では、アプリケーションの他に、後述する動作判定プログラムを実行する。各処理ユニット11での該プログラムによる判定結果は、コントローラ12に送られる。コントローラ12は、各処理ユニット11と不揮発メモリ30を以下のように制御する。コントローラ12は、LSI10の起動時には、不揮発メモリ30に保持されている電源制御ユニット指示値データベース31から指示値後述するを各処理ユニット11毎に設定する。また、コントローラ12は、不揮発メモリ30から動作判定プログラム32をロードする。この動作判定プログラム32は、動作可能な最下限の指示値を各処理ユニット11毎に設定した場合、各処理ユニット11が、問題なく動作するか否かを判定するものである。動作可能な最下限の指示値は、電源電圧の最適化の観点から、いわゆるマージンを過大には含まないものである。ここで、動作可能な最下限の指示値であるかどうかの判定は、例えば、次のように行うことができる。まず、コントローラ12が主体となって、電源制御ユニット20に電圧指示値を、処理ユニット11に動作判定プログラム32の実行を命令する。動作判定プログラム32の実行結果が所望の期待値と一致すれば正常動作として、さらに低い電圧指示値を設定して判定プログラムの実行を命令する。これを続けて、期待値と一致しないとき、その時の電圧指示値は使えないことになり、直前の正常動作のときの電圧指示値が最下限指示値と判定することができる。図2は、処理ユニット11における最下限電圧指示値の探索の流れを示すフローチャートである。まず、コントローラ12が処理ユニット11に動作判定プログラム32をロードするように指示するステップS201。次に、コントローラ12が電源制御ユニット20に不揮発メモリ30に保存された電圧指示値を処理ユニット11に供給するよう指示するステップS202。次いで、コントローラ12が処理ユニット11に動作判定プログラム32の実行を指示するステップS203。処理ユニット11が動作判定プログラム32を実行後、所定時間経過を待つステップS204。次に、処理ユニット11が動作判定プログラム32の実行を終了したか否かを判定するステップS205。動作判定プログラム32の実行が終了していればステップS205でYes、処理ユニット11の演算結果は期待値と一致するか否かを判定するステップS206。期待値と一致すれば、コントローラ12が電源制御ユニット20に電圧指示値を所定の単位分下げて処理ユニット11に供給するよう指示するステップS207。そして、ステップS203以降の処理を繰り返す。ステップS205で、動作判定プログラム32の実行が終了しなければステップS205でNo、処理ユニット11が正常状態でないため最下限の指示値を下回ったことになり、直前の正常状態のときにステップS207で供給した電圧指示値を、不揮発メモリ30に保存するステップS208。また、ステップS206で、処理ユニット11の演算結果が期待値と一致しない場合ステップS206でNoも、ステップS208の処理を行う。尚、動作可能な最下限の指示値の判定手法は、これに限らない。コントローラ12は、各処理ユニット11からアプリケーションを実行した場合の動作判定プログラム32の実行結果を受け取り、当該指示値で正常動作するか否かの判定を行う。例えば、演算後に期待値比較を行うプログラムを実行させ、期待値と一致すれば正常動作、期待値と一致しない場合や所定のルーチンに戻らない場合に、正常動作でないと判定することができる。ある処理ユニット11において実際にアプリケーションを実行し、正常動作でないとの判定の場合には、当該処理ユニット11に対して設定する最下限電圧指示値のデータは低すぎることになるので、後述する電源制御ユニット指示値のテーブル31の値を書き換える処理がなされる。電源制御ユニット20は、LSI10から各処理ユニット11毎に所定の電源供給の要求を受けて、LSI10の各部に電源電圧を供給する。以下に、電源電圧の供給の流れを詳述する。コントローラ12がLSI10の各処理ユニット11の識別情報を読み出すとともに、電源制御ユニット指示値データベース31の参照を要求する。コントローラ12は、処理ユニット11の識別情報をキーとして電源制御ユニット指示値データベース31から指示値を取得する。コントローラ12は、電源制御ユニット20に指示値を転送する。電源制御ユニット20は、指示値に基づいて電源電圧を各処理ユニット11に供給する。ここで、指示値に基づく電源電圧について説明する。一般的なVID対応の電源制御ユニットでは、指示値に対応する電圧値が定義される。しかし、電源公差があるため、安価なものでは10mVほど誤差がある場合もある。そのため、期待する電圧値より低い電圧が出てくることを前提に、上乗せして初期値を設定するのが好適である。そこで、動作判定で正常動作となったときの電源指示値で保存しておけば、電源公差に影響されることなく正常動作する絶対値として規定する。なお、ここでは電源制御ユニット20は、LSI10に対して外付けとなっている。不揮発メモリ30に格納される動作判定プログラム32は、書き換え可能となっている。動作判定プログラム32の書き換えについては後述する。尚、不揮発メモリ30は、LSI10の外部に設ける構成に限られることはなく、LSI10に内蔵させてもよい。電源制御ユニット指示値は、電源制御ユニット20からLSI10に供給する電圧値Vではなく、LSI10と電源制御ユニット20を合わせたものに対する指示値である。本実施形態においては、電源電圧の規定は電圧値Vではなく、電源制御ユニット20が識別できる電源制御ユニット指示値で表す。この電源制御ユニット指示値は、プロセッサ内部のコントローラから設定されるもので、例えば、8bit~10bitで表され、各値毎に対応する電圧値が規定される。電源制御ユニット指示値は、各サンプルの製造時に、LSIテスタにてシリコンの特性を測定し、それに対応付けた動作電圧値として、フューズに焼き込む。シリコンの特性と動作電圧値の対応付けは、設計時のシミュレーションや評価、顧客が使う電源を考慮して決定されるが、その全てに誤差が含まれるため、結果として過大なマージンが上乗せされて電源制御ユニット指示値となる。LSI10側に対して電圧値Vで規定し、電源制御ユニット20に対しても電圧値Vで設定すると、LSI10を評価するLSIテスタには公差が存在し、システムとして組み上げた製品における電源制御ユニット20にも公差が存在する。このように、所定の電圧値V自体に不確定要素を取り除くことが出来ないため、LSI10単体で動作電圧を規定しない。本実施形態では、電源制御ユニット指示値は、図1において、電源制御ユニット指示値データベース31に保持している。電源制御ユニット指示値は、例えば、16進数のレジスタ値として表す。電源制御ユニット指示値は、データベースとして不揮発メモリ30に保持される。不揮発メモリ30に格納される電源制御ユニット指示値のテーブル31は書き換え可能となっている。一旦、電源制御ユニット指示値のテーブル31を構築しても、長年の使用により、経年劣化し、初期に設定したテーブル値では正常動作しないことがある。そのような場合には、経年劣化への対応として、電源制御ユニット指示値データベーステーブル31の再構築を行う。図3は、電源制御ユニット指示値のデータベースを構築後の定期的な経年劣化への対応として、再構築処理の流れを示すフローチャートである。まず、コントローラ12が処理ユニット11に動作判定プログラム32をロードするように指示するステップS301。次に、コントローラ12が電源制御ユニット20に不揮発メモリ30に保存された電圧指示値を処理ユニット11に供給するよう指示するステップS302。次いで、コントローラ12が処理ユニット11に動作判定プログラム32の実行を指示するステップS303。処理ユニット11が動作判定プログラム32を実行後、所定時間経過を待つステップS304。次に、処理ユニット11が動作判定プログラム32の実行を終了したか否かを判定するステップS305。動作判定プログラム32の実行が終了していればステップS305でYes、処理ユニット11の演算結果は期待値と一致するか否かを判定するステップS306。期待値と一致すれば、直前の正常状態のときにステップS308で供給した電圧指示値を、不揮発メモリに保存するステップS307。ステップS305で、動作判定プログラム32の実行が終了しなければステップS305でNo、処理ユニット11が、正常状態でないため最下限の指示値を下回ったことになり、コントローラ12が電源制御ユニット20に電圧指示値を所定の単位分下げて処理ユニット11に供給するよう指示するステップS308。また、ステップS306で、処理ユニット11の演算結果が期待値と一致しない場合ステップS306でNoも、ステップS308の処理を行う。そして、ステップS303以降の処理を繰り返す。本実施形態によれば、実際にアプリケーションを実行可能な最下限の電源電圧を電圧値Vではなく電源制御ユニット20への電源制御ユニット指示値を保存することで、電源制御ユニット20とLSI10それぞれが持つ電圧公差を隠蔽することができる。また、電源制御ユニット指示値を書き換え可能とすることにより信頼性経時劣化分を予めマージンとして持たせる必要がなく、常に最適な電源制御ユニット指示値を得ることができる。第2の実施形態次に、第2の実施形態について説明する。第2の実施形態では、半導体装置100を組み込んだセット製品にアプリケーションがインストールされ、実行された以降においても、動作電源電圧を最適化するものである。図4は、電源制御ユニット指示値テーブル31の設定更新の流れを示すフローチャートである。セット製品の組み立てが完了ステップS401すると、セット製品の検査が行われるステップS402。セット製品の検査時には、まず、電源制御ユニット指示値テーブル31を初期化するステップS403。電圧指示値の初期値は、例えば、予めセット製品の量産設計時に設定した指示値である。次いで、セット製品が動作可能な最下限の指示値となっているか否かの判定を行うステップS404。当初の指示値に基づいて、動作判定プログラム32を実行する。ここでの動作判定は、第1の実施形態における動作判定処理と基本的に同じでよい。当初の指示値では、正常動作しないとの判定であればステップS405でNO、その指示値を所定単位分上げるステップS406。次いで、上げた指示値で動作判定プログラム32を実行する。ここで、指示値の上げ方は、電源制御ユニット製品の設定単位に依存するので、例えば、10mV単位や、1mV単位で上げていく。当初の指示値で正常動作する、あるいは上げた指示値で正常動作するとの判定の場合ステップS405でYES、電源制御ユニット指示値テーブル31を上げた指示値に更新するステップS407。そして、セット製品が動作可能な最下限の指示値を更新するステップS404。これによりLSIテスタの電圧ばらつき、セット製品の電源制御ユニット公差の不確定値マージンをなくすことができる。例えば、絶対値1000Vが必要なサンプルがあった場合、LSIテスタは0995Vで動作したと判定しても、実際は1000Vを印加していた可能性がある。その場合、VID0995Vとして客先セットに実装され、丁度0995Vを印加されると動作しないことになる。そのため、LSIテスタでの設定測定誤差を上乗せしてVIDを設定する必要がある。また、LSIテスタの誤差がmax0005Vであった場合、VID1005Vとして客先セットに実装され、今度は客先セットの電源公差によってVID1005Vを設定しても0995Vを印加されると動作しない。客先セットの電源公差がmax0010Vであった場合、VID1005Vのときに1015Vを設定すれば良いことになる。この場合、最高品ではない通常のサンプルでは実力1000Vに対して1015Vと、0015V余分なマージンを常に持たされ、余計な電力消費となる。本実施形態において、動作判定プログラムと電源制御ユニット指示値の保存を利用した場合、まずはLSIテスタでの設定あるいは測定は無しとする。電源公差がmax0010Vの客先セットに実装された場合、1000Vの設定値のときに0990Vが印加されても、動作しない。しかし、設定値を上げて1010Vの設定値にして1000Vが印加されれば、動作する。本実施形態では、このときの電源制御ユニット指示値を保存しておくので、実力1000V、実際の印加も1000Vとなり、不確定値マージンをなくすことができるのである。尚、電源制御ユニット指示値テーブル31の値は、動作可能な最下限の指示値に一定のマージン値を上乗せした値でもよい。動作可能な最下限の指示値は、上述した図2に示すフローで決定することができる。また、マージン値とは、次のように考えることができる。上述した実力1000Vのサンプルを例にとって、説明する。客先セットの出荷後、実力1000Vで実際の印加が1000Vであった場合、経年劣化で実力1001Vとなったときには、動作しなくなる。これに備えて、電源制御ユニット指示値の更新タイミング間に劣化すると予想される電圧分は、最低でもマージンとして見積もっておく必要がある。この例で言えば、実力1001Vとして見ておけばよいことになる。このように、動作可能な最下限の指示値に、LSIやセット機器の電源回路における一定の電圧低下マージンを加えた分を標準時の指示値とする。指示値に全くマージンを持たせないことも可能である。しかし、更新タイミング間に徐々に劣化することで、ある日まで動作していたが翌日には動作するか微妙な電圧差は、最低限マージンとしてもたせることが望ましい。次に、セット製品の市場への出荷ステップS408後、アプリケーションがインストールされユーザによる使用が開始された後ステップS409にも、電源制御ユニット指示値を評価する。具体的には、ユーザによる使用が開始されてから一定のタイミング毎、もしくは特定のイベント発生時ステップS410に、動作可能な最下限の指示値となっているかの判定を行うステップS411。尚、動作可能な最下限の指示値の判定は、上述のS405からS407の通りである。ユーザによる使用後の信頼性経時劣化による電圧の上昇によって、動作可能な最下限の指示値では作動しないとの判定となった場合には、電源制御ユニット指示値テーブル31に保持している動作可能な最下限の指示値を更新する。一定のタイミング毎とは、例えば、24時間経過毎であり、特定のイベント発生時とは、例えば、複雑で重い負荷のアプリケーションが出現した場合である。電源制御ユニット指示値テーブル31の更新処理の管理のタイミングイベント処理は、例えば組み込みシステムのOSOperatingSystemで行い、処理ユニット11を解放後にコントローラ12からの制御に移り、組み込みシステムのOSに復帰するのが好適である。OSは、特定のアプリケーションが作動するためにリソースを割り振る役割を司っている。同様に、動作判定プログラム32の更新処理管理も組み込みシステムのOSで行う。動作判定プログラム32は、LSI10設計時と評価時の結果から、最もトランジスタの電圧マージンが少なく、高い電源電圧を要求するものとなっている。動作判定プログラム32を実行することによって、LSI10毎にどれだけ低い電圧で動かせるかの限界電圧が求められる。限界電圧は経年劣化で徐々に悪化するので、セット製品のアプリケーションが許容するタイミングで実行して更新する。動作判定プログラム32自体を更新できるようにするのは、最もトランジスタの電圧マージンが少なくなるポイントを設計段階や評価段階では発見できないことがあるからである。従前の動作判定プログラム32で電圧指示値を決定し、新たにユーザやサードパーティーが作成したアプリケーションがより悪いマージンのポイントを通ったときにシステム不具合が発生する。LSIの市場出荷後にも動作判定プログラムを更新できるようにすることで、例えばプラットフォームベンダが認証を行うときに、複雑で重い負荷のアプリケーションを発見でき、そのアプリケーションを実行する前に動作判定プログラムの更新を強制することが好適である。動作判定プログラムの更新は、例えば、ユーザがセット製品を使用していない夜中や、電源オフの直前のタイミングで行う。更新する内容は電圧指示値で、定期的に動作判定プログラムを実行して、電圧指示値がゆっくり上昇していく方向になる。LSI10やセット機器の設計時あるいは評価時の想定を超えるようなアプリケーションが発見された場合、組み込みシステムのOSからファームウェアアップデートを行うことで市場出荷後に電源制御ユニット指示値の更新を行う。電源制御ユニット指示値テーブル31の更新処理がセット製品の負担にならないよう、例えば、常時ONのセット製品であれば夜間に更新処理を実行し、ON/OFFするセット製品であれば、OFFの直前に更新処理を実行させるのが好適である。図4に示すフローチャートでは、ステップS405~ステップS407の処理を詳細に説明したが、ステップS411以降に、ステップS405~ステップS407と同様の処理を実行することもできる。第2の実施形態によれば、実際に処理ユニット11でアプリケーションを実行することにより、精度の高い本来の最適値を求められるだけでなく、設計時等の想定を超えるようなアプリケーションが発見されたときにも対応することができる。また、量産時に対応できない多量の動作条件毎の電圧指示値を持たせることができる。第3の実施形態次に、第3の実施形態について説明する。図5は、不揮発メモリ30内に設けられる電源制御ユニット指示値テーブル31の一例である。電源制御ユニット指示値テーブル31の指示値は、コントローラ12から読み書きが可能となっている。図5に示すように、動作可能電圧を可変とする処理ユニット11毎に、電源制御ユニット指示値テーブル31が用意されている。例えば、電源制御ユニット指示値テーブル31には、処理ユニット11が対応する動作周波数と、処理ユニット11の動作条件毎に、電源制御ユニット指示値が関連付けられている。図6は、処理ユニット11の動作条件のパターン例を示す図である。例えば、動作条件Aは、処理ユニット11の持つ機能ブロックA、機能ブロックB、機能ブロックCがいずれもONの場合である。動作条件Bは、処理ユニット11の持つ機能ブロックAがON、機能ブロックBもON、機能ブロックCがOFFの場合である。同様に、動作条件Cは、処理ユニット11の持つ機能ブロックAのみがON、機能ブロックB及び機能ブロックCがOFFの場合である。当然のことながら、多くの機能ブロックがONの場合には、高めの電源制御ユニット指示値が必要であり、一部の機能ブロックのみがONの場合には、低めの電源制御ユニット指示値で十分となる。このように、各処理ユニット11において特定の機能ブロックのON/OFFを制限する動作条件を定義し、それぞれの動作条件に対応する動作判定プログラム32を用意することで、動作条件毎に最適な電源制御ユニット指示値を用意することができる。尚、セット機器の周辺温度が著しく変動した場合にも、最適な電源制御ユニット指示値に対応させるのが好適である。すなわち、セット機器の周辺温度が著しく変動した場合の最低動作指示値の差分を評価時に求めておき、コントローラ12が電源制御ユニット指示値テーブル31から参照した後に温度変化分を補償する。上述したように、電源制御ユニット指示値テーブル31を更新するときは、各動作条件周波数毎に動作判定プログラム32を実行し、コントローラ12から書き換える。第3の実施形態によれば、処理ユニット11から得られるアウトプットに適した動作条件を複数用意することにより、想定される最悪の負荷に対応できる電圧を常に印加する必要がなく、動作条件毎に最適な電圧指示値を持ち、動作条件によってはより低消費電力にすることができる。以上説明したように、本実施形態によれば、半導体装置の製造時の電圧バラツキあるいは信頼性の経時劣化分を予め過大なマージンとして持たせる必要がなく、半導体装置毎に常に最適な動作電圧を設定することができる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。