(第1の実施形態)
図1は、第1の実施形態による半導体装置の構成例を示す図である。半導体装置は、位相ロックループ回路制御装置であり、演算処理装置101、電圧レギュレータ103及びメモリ105を有する。演算処理装置101は、例えばプロセッサであり、位相ロックループ(PLL:Phase Locked Loop)回路102、実行部104、要求レベルレジスタ111、目標レベルレジスタ112、現在レベルレジスタ113、速度レベルテーブル114、不揮発性メモリ115、速度レベルセレクタ116、比較器117、制御部118、周波数比較器119、電圧比較器120、判定部121、周波数カウンタ122、電圧カウンタ123、周波数テーブル124、周波数セレクタ125、電圧テーブル126、電圧セレクタ127、フラグセレクタ128及びフラグチェック部129を有する。演算処理装置101には、メモリ105及び電圧レギュレータ103が接続される。
演算処理装置101の高性能化と高集積化に伴い、演算処理装置101が消費する電力を低減する必要がある。演算処理装置101の消費電力は、電源電圧V1の2乗とクロック信号CKの周波数との積に比例する。したがって、演算処理装置101の消費電力を低減するため、周波数及び電圧を適切に制御することが望まれる。しかし、演算処理装置101の種類及び演算処理装置101を製造する半導体プロセスのばらつきにより生じる個体差により、演算処理装置101毎に適切な周波数パラメータ及び電圧パラメータが異なる。そのため、周波数パラメータ及び電圧パラメータを適切に制御するためには、演算処理装置101の種類及び半導体プロセスのばらつきを吸収するような制御が必要になる。
演算処理装置101は、周波数パラメータ(周波数情報)を位相ロックループ回路102に入力して周波数の設定を行うとともに、電圧パラメータ(電圧情報)を電圧レギュレータ103に入力して電圧の設定を行う。位相ロックループ回路102は、入力した周波数パラメータに応じた周波数のクロック信号CKを生成し、実行部104に出力する。実行部104は、クロック信号CKに同期し、メモリ105に記憶されているプログラム(オペレーティングシステム(OS:Operating System)を含む)を実行し、種々の処理を行う。電圧レギュレータ103は、入力した電圧パラメータに応じた大きさの電圧V1を生成し、実行部104に出力する電源部である。実行部104は、電圧V1の供給を受けて動作する。演算処理装置101は、周波数パラメータによりクロック信号CKの周波数を制御し、電圧パラメータにより電圧V1の大きさを制御することができる。
ここで、仮に、実行部104がプログラムの実行により、位相ロックループ回路102の周波数パラメータ及び電圧レギュレータ103の電圧パラメータを制御する場合における課題を説明する。
近年、プロセッサやASIC(Application Specific Integrated Circuit)を含むSoC(System on Chip)等の半導体装置の分野においては、半導体を企画・設計するユーザーメーカーと半導体を製造する半導体ファウンドリとの分業体制により、半導体装置を協働して製造することが行われている。ユーザーメーカーと半導体ファウンドリとの分業体制により半導体装置を製造する場合には、位相ロックループ回路102は、演算処理装置101に内蔵され、半導体ファウンドリからユーザーメーカーに提供されるが、標準化されたインターフェースが無く、半導体ファウンドリ毎に周波数パラメータの種類及び値が異なる。また、同一半導体ファウンドリでも位相ロックループ回路102の種類及び半導体プロセスの世代によって、周波数パラメータの種類及び値が異なっているため、新しい位相ロックループ回路102を採用した演算処理装置101を提供する場合には、まず、プログラムによって位相ロックループ回路102の対応を行う必要があり、新しい演算処理装置101を容易に提供できなくなる。
また、電圧V1の変更は、業界標準のインターフェース(VID)を用いて行われる。電圧レギュレータ103は、演算処理装置101がクロック信号CKの周波数で動作するために適切な電圧V1を生成する必要がある。その適切な電圧V1の設定値は、演算処理装置101の製造時に各種試験において決定される演算処理装置101のチップ個体毎に異なる値のため、プログラムはチップ毎の適切な電圧パラメータを知り、チップ毎に電圧パラメータを変える必要がある。
また、演算処理装置101の動作中に、クロック信号CKの周波数を段階的ではなく大きく変更すると、負荷が大きく変動する結果、大きな電源ノイズとなる。また、電圧V1を段階的ではなく大きく変更すると、電源が不安定となり、演算処理装置101内部の回路の動作が安定しなくなる。そのため、周波数及び電圧を変更する場合には、目標となる値に一気に変更するのではなく、段階的に変更していき、目標の値になるように制御する必要がある。
また、周波数及び電圧の変更は、1回の変更にμsからmsオーダーの時間が必要となる。この処理を演算処理装置101上で動作するプログラムで行った場合には、周波数又は電圧の変更、そして変更の完了待ちの操作を繰り返し行うことになり、演算処理装置101の処理能力を無駄に消費する。また、1回にどの程度変更して良いかは、演算処理装置101と電源の設計に依存するため、変更対象である演算処理装置101のハードウェアに依存したプログラムになってしまう。
以下、上記の課題を解決するための実施形態を説明する。図2(A)は、図1の周波数テーブル124の例を示す図であり、16ステップで0.1GHz単位の周波数を制御可能である。周波数テーブル124は、「0」〜「15」の周波数識別子(周波数ID:Identification)と「0.1」GHz〜「1.6」GHzの周波数パラメータ(周波数情報)とフラグとの複数の組みを周波数順かつ周波数識別子順に記憶する。周波数パラメータは、位相ロックループ回路102により生成されるクロック信号CKの周波数を制御するためのデジタルコードである。例えば、周波数識別子の「0」は、0.1GHzの周波数の周波数パラメータ及び「0」のフラグに対応付けられて記憶され、周波数識別子の「1」は、0.2GHzの周波数の周波数パラメータ及び「1」のフラグに対応付けられて記憶される。以下同様に、周波数テーブル124の周波数パラメータは、「0」〜「15」の周波数識別子順、かつ「0.1」GHz〜「1.6」GHzの周波数順に記憶されている。その順番は、昇順でも降順でもよい。
図2(B)は、図1の電圧テーブル126の例を示す図であり、32ステップで0.05V単位の電圧を制御可能である。電圧テーブル126は、「0」〜「31」の電圧識別子(電圧ID:Identification)及び「0.20」V〜「1.75」Vの電圧パラメータの複数の組みを電圧順かつ電圧識別子順に記憶する。電圧パラメータは、電圧レギュレータ103により生成される電圧V1の値を制御するためのデジタルコードである。例えば、電圧識別子の「0」は、0.20Vの電圧の電圧パラメータに対応付けられて記憶され、電圧識別子の「1」は、0.25Vの電圧の電圧パラメータに対応付けられて記憶される。以下同様に、電圧テーブル126の電圧パラメータは、「0」〜「31」の電圧識別子順、かつ「0.20」V〜「1.75」Vの電圧順に記憶されている。その順番は、昇順でも降順でもよい。
上記の周波数テーブル124及び電圧テーブル126は、一部を変更可能なレジスタで構成し、その他の部分を電源電位ノード又はグランド電位ノード(接地ノード)への単純な接続による固定値になるように構成してもよい。変更することがない周波数テーブル124及び電圧テーブル126の一部の固定値を簡単な構成で実現でき、周波数及び電圧の変更範囲を広くしても、回路規模を小さくすることができる。
すなわち、周波数テーブル124の周波数識別子と周波数パラメータの関係及び電圧テーブル126の電圧識別子と電圧パラメータの関係は、演算処理装置101の設計段階で決定しており、位相ロックループ回路102に対する各周波数パラメータの具体的な値及び電圧レギュレータ103に対する各電圧パラメータの具体的な値に関しても設計段階で確定するものが多い。したがって、各周波数パラメータと各電圧パラメータの大部分を更新可能なレジスタでなく、電源電位ノード又はグランド電位ノードへの単純な接続によって構成し、製造後に調整が必要なパラメータのみを更新可能なレジスタで構成することによって、回路面積を削減することができる。
図1において、実行部104は、メモリ105に記憶されているプログラムを実行することにより、システム動作時における標準の動作周波数を100%とした場合における周波数の増減率である速度レベルについて、要求する速度レベルを要求レベルレジスタ111に書き込む。実行部104は、要求レベルレジスタ111に速度レベルを書き込むだけで、位相ロックループ回路102の周波数パラメータ及び電圧レギュレータ103の電圧パラメータの制御が可能になる。
要求レベルレジスタ111は、実行部104により要求された速度レベルを記憶する。目標レベルレジスタ112は、制御部118がアイドル状態で、且つ要求レベルレジスタ111と現在レベルレジスタ113を比較器117で比較した結果、要求レベルレジスタ111に保持された速度レベルと現在レベルレジスタ113に保持された速度レベルが異なる場合に、制御部118をアイドル状態から制御状態に遷移させ、制御状態中の目標の速度レベルとして、制御を開始した時点の要求レベルレジスタ111の速度レベルを記憶する。制御部118がアイドル状態のとき、現在レベルレジスタ113は、現在の速度レベルを記憶する。
目標レベルレジスタ112は、現在、制御状態中の目標の速度レベルを記憶するので、制御途中であっても、実行部104は、制御部118による制御の完了を待つことなく、次の速度レベルを要求レベルレジスタ111に書き込むことができる。この書き込みがされても、制御部118による上記の制御は継続され、実行部104からの要求は要求レベルレジスタ111に保持される。制御部118による制御が完了すると現在レベルレジスタ113は目標レベルレジスタ112の速度レベルを記憶し、要求レベルレジスタ111に保持された要求レベルレジスタ111の速度レベルと現在レベルレジスタ113を比較器117で比較し、速度レベルが異なる場合には、要求レベルレジスタ111に保持した新たな速度レベルが目標レベルレジスタ112に書き込まれ、次の目標の速度レベルに向けた制御が開始される。この制御は、制御部118が行うため、実行部104が行わなくてよい。実行部104は、速度レベルを要求レベルレジスタ111に書き込むという簡単な処理で、周波数パラメータ及び電圧パラメータの制御を可能にする。
図3(A)及び(B)は、図1の要求レベルレジスタ111を説明するための図である。図3(A)は、要求レベルレジスタ111のビットフォーマット例を示す図である。要求レベルレジスタ111は、3ビットのレジスタであり、1ビットのエラー情報301及び2ビットの速度レベル302を記憶する。エラー情報301は、「0」がエラーなしを示し、「1」がエラーありを示す。エラーの内容は、後に図6を参照しながら説明する。速度レベル302は、図3(B)を参照しながら説明する。
図3(B)は、図3(A)の速度レベル302を説明するための図である。速度レベル302は、例えば「0」〜「3」の4レベルであり、演算処理装置101の速度を示す。「1」の速度レベル302は、演算処理装置101のシステム動作時における標準の速度レベルであり、例えば、このレベルの周波数(処理性能)を100%とする。「0」の速度レベル302は、「1」の速度レベル302よりも速い速度レベルであり、例えば、このレベルの周波数(処理性能)は120%である。「2」の速度レベル302は、「1」の速度レベル302よりも遅い速度レベルであり、例えば、このレベルの周波数(処理性能)は60%である。「3」の速度レベル302は、「2」の速度レベル302よりも遅い速度レベルであり、例えば、このレベルの周波数(処理性能)は20%である。図3(B)の例では、速度レベル302は、周波数を下げる(性能低下)方向に40%刻みで2段階、周波数を上げる(性能向上)方向に20%で1段階と定義している。実行部104は、高速処理モード、低速処理モード及びスリープモード等、処理内容に応じて、速度レベル302を要求レベルレジスタ111に書き込むことができる。
図4(A)〜(C)は、図1の速度レベルテーブル114の例を示す図である。速度レベルテーブル114は、速度レベルに対応する周波数識別子及び電圧識別子の組みを複数記憶する。速度レベルは図3(B)の速度レベルに対応し、周波数識別子は図2(A)の周波数識別子に対応し、電圧識別子は図2(B)の電圧識別子に対応する。
まず、図4(A)の速度レベルテーブル114を説明する。速度レベルテーブル114においては、半導体回路の周波数が高くなるに従い、半導体回路が要求する電圧も高くなるという、半導体回路における周波数と電圧間の関係が規定される。「1」の速度レベルは、周波数識別子「9」及び電圧識別子「18」に対応付けられている。周波数識別子「9」は、図2(A)に示すように、例えば、「1.0」GHzの周波数パラメータに対応する。電圧識別子「18」は、図2(B)に示すように、例えば、「1.10」Vの電圧パラメータに対応する。このように、「1」の速度レベルは周波数が「1.0」GHzであり、この「1.0」GHzの周波数は、図3(B)に示すように、100%の周波数(処理性能)を意味する。この演算処理装置101は、「1.0」GHzの周波数のクロック信号CKで動作するには、「1.10」Vの電圧V1が必要であることを意味する。
「0」の速度レベルは、周波数識別子「11」及び電圧識別子「28」に対応付けられている。周波数識別子「11」は、図2(A)に示すように、例えば、「1.2」GHzの周波数パラメータに対応する。電圧識別子「28」は、図2(B)に示すように、例えば、「1.60」Vの電圧パラメータに対応する。このように、「0」の速度レベルは周波数が「1.2」GHzであり、この「1.2」GHzの周波数は、図3(B)に示すように、120%の周波数(処理性能)を意味する。この演算処理装置101は、「1.2」GHzの周波数のクロック信号CKで動作するには、「1.60」Vの電圧V1が必要であることを意味する。
「2」の速度レベルは、周波数識別子「5」及び電圧識別子「15」に対応付けられている。周波数識別子「5」は、図2(A)に示すように、例えば、「0.6」GHzの周波数パラメータに対応する。電圧識別子「15」は、図2(B)に示すように、例えば、「0.95」Vの電圧パラメータに対応する。このように、「2」の速度レベルは周波数が「0.6」GHzであり、この「0.6」GHzの周波数は、図3(B)に示すように、60%の周波数(処理性能)を意味する。この演算処理装置101は、「0.6」GHzの周波数のクロック信号CKで動作するには、「0.95」Vの電圧V1が必要であることを意味する。
「3」の速度レベルは、周波数識別子「1」及び電圧識別子「2」に対応付けられている。周波数識別子「1」は、図2(A)に示すように、例えば、「0.2」GHzの周波数パラメータに対応する。電圧識別子「2」は、図2(B)に示すように、例えば、「0.30」Vの電圧パラメータに対応する。このように、「3」の速度レベルは周波数が「0.2」GHzであり、この「0.2」GHzの周波数は、図3(B)に示すように、20%の周波数(処理性能)を意味する。この演算処理装置101は、「0.2」GHzの周波数のクロック信号CKで動作するには、「0.30」Vの電圧V1が必要であることを意味する。
以上のように、速度レベルテーブル114では、速度レベルを大きくすれば、周波数も高くなる。その周波数のクロック信号CKで動作させるためには、低消費電力の観点から、速度レベルテーブル114では、半導体回路が要求する最低限必要な適切な電圧が設定される。
図4(B)は、図4(A)の演算処理装置101とは異なる演算処理装置101の速度レベルテーブル114の例を示す図である。図4(B)の演算処理装置101は、図4(A)の演算処理装置101と同種類の演算処理装置である。したがって、図4(B)の速度レベルテーブル114は、図4(A)の速度レベルテーブル114に対して、速度レベル及び周波数識別子が同様であり、電圧識別子が異なる。各周波数のクロック信号CKで動作させるためには、演算処理装置101のチップ個体毎に適切な電圧が異なる。したがって、同種類の演算処理装置101であっても、チップ個体差により、演算処理装置101毎に、速度レベルテーブル114には異なる電圧識別子が記憶される。
図4(C)は、図4(A)及び図4(B)の演算処理装置101とはさらに異なる演算処理装置101の速度レベルテーブル114の例を示す図である。図4(C)の演算処理装置101は、図4(A)及び図4(B)の演算処理装置101に対して高性能の次世代の演算処理装置である。したがって、図4(C)の速度レベルテーブル114は、図4(A)及び図4(B)の速度レベルテーブル114に対して、システム動作時における標準の周波数(速度レベル「1」)の設定値が高くなるため、速度テーブル全体の周波数識別子及び電圧識別子の対応関係が異なる。次世代の演算処理装置であるため製造ルール、製造過程などの差によって、その周波数に必要な電圧も異なる。その結果、速度レベルテーブル114は、同じ速度レベルであっても、周波数識別子及び電圧識別子が変わる。
図1において、不揮発性メモリ115は、例えばROM(リードオンリーメモリ:Read Only Memory)やフラッシュメモリであり、図4(A)〜(C)に示すような速度レベルテーブル114を記憶する。演算処理装置101の電源をオンにすると、初期化処理により、速度レベルテーブル114の記憶内容は、不揮発性メモリ115に記憶されている速度レベルテーブルの内容に初期化される。不揮発性メモリ115には、演算処理装置101毎に異なる速度レベルテーブルを記憶させることにより、速度レベルテーブル114を演算処理装置101毎に適した記憶内容に初期化することができる。これにより、試験結果により得られた演算処理装置101の個別の電圧に速度レベルテーブル114を初期化することができ、各速度レベルに対する周波数と電圧の関係を容易に変更することができる。また、不揮発性メモリ115は、図2(A)の周波数テーブル124のフラグを記憶し、初期化処理により、周波数テーブル124のフラグは、不揮発性メモリ115に記憶されている周波数テーブルのフラグに初期化される。
制御部118は、ステートマシンを有し、ステートマシンにより状態遷移を制御する。制御部118のステートマシンの詳細を、後に図5を参照しながら説明する。再び図1を参照すると、比較器117は、要求レベルレジスタ111に記憶されている速度レベルと現在レベルレジスタ113に記憶されている速度レベルとを比較し、その比較結果を制御部118に出力する。具体的には、実行部104が要求レベルレジスタ111に速度レベルを書き込むことにより、要求レベルレジスタ111の速度レベルが現在レベルレジスタ113の速度レベルと異なるレベルになると、制御部118は周波数パラメータ及び電圧パラメータの制御を開始する。目標レベルレジスタ112には、要求レベルレジスタ111に記憶されている速度レベルが書き込まれる。
速度レベルセレクタ116は、速度レベルテーブル114の中で、目標レベルレジスタ112に記憶されている速度レベルに対応する周波数識別子及び電圧識別子を選択してそれぞれ周波数比較器119及び電圧比較器120に出力する。
周波数カウンタ122は、判定部121の制御により、目標の速度レベルに対応する速度レベルテーブル114の周波数識別子まで周波数識別子の値をカウントする。電圧カウンタ123は、判定部121の制御により、目標の速度レベルに対応する速度レベルテーブル114の電圧識別子まで電圧識別子の値をカウントする。
周波数比較器119は、周波数カウンタ122によりカウントされた周波数識別子が速度レベルセレクタ116により出力された周波数識別子より小さいときにはアップ信号UPを判定部121に出力し、周波数カウンタ122によりカウントされた周波数識別子が速度レベルセレクタ116により出力された周波数識別子より大きいときにはダウン信号DNを判定部121に出力する。
電圧比較器120は、電圧カウンタ123によりカウントされた電圧識別子が速度レベルセレクタ116により出力された電圧識別子より小さいときにはアップ信号UPを判定部121に出力し、電圧カウンタ123によりカウントされた電圧識別子が速度レベルセレクタ116により出力された電圧識別子より大きいときにはダウン信号DNを判定部121に出力する。
判定部121は、上記のアップ信号UP及びダウン信号DNに応じて、周波数カウンタ122又は電圧カウンタ123にインクリメント信号INC又はデクリメント信号DECを出力する。その詳細は、後に図6を参照しながら説明する。周波数カウンタ122は、インクリメント信号INCを入力すると周波数識別子をインクリメントし、デクリメント信号DECを入力すると周波数識別子をデクリメントする。電圧カウンタ123は、インクリメント信号INCを入力すると電圧識別子をインクリメントし、デクリメント信号DECを入力すると電圧識別子をデクリメントする。
電圧セレクタ127は、電圧カウンタ123によりカウントされた電圧識別子に対応する電圧テーブル126の電圧パラメータを選択し、電圧レギュレータ103に出力する。電圧レギュレータ103は、電圧セレクタ127により出力された電圧パラメータを入力し、その入力した電圧パラメータに応じた大きさの電圧V1を生成し、実行部104に出力する。
フラグセレクタ128は、周波数カウンタ122によりカウントされた周波数識別子に対応する周波数テーブル124のフラグを選択し、フラグチェック部129を介して制御部118に出力する。
周波数セレクタ125は、制御部118の制御の下、フラグチェック部129に入力されたフラグが「1」の場合、周波数カウンタ122によりカウントされた周波数識別子に対応する周波数テーブル124の周波数パラメータを選択し、位相ロックループ回路102に出力する。位相ロックループ回路102は、周波数セレクタ125により出力された周波数パラメータを入力し、その入力した周波数パラメータに応じた周波数のクロック信号CKを生成し、クロック信号CKを実行部104に出力する。
図5は、図1の制御部118が制御する状態遷移を示す図である。制御部118の状態遷移は、アイドル状態S1と、アイドル状態S1以外の制御状態とに分けることができる。初期時は、アイドル状態S1である。実行部104が要求レベルレジスタ111に速度レベルを書き込み、比較器117が要求レベルレジスタ111の速度レベルと現在レベルレジスタ113の速度レベルが異なる旨を制御部118に出力すると、制御部118は、アイドル状態S1から比較状態S2に遷移する。比較状態S2からは、アイドル状態S1、エラー状態S3、周波数カウント状態S4又は電圧カウント状態S5に遷移する。その詳細は、図6を参照しながら説明する。
図6は、図5の比較状態S2から次の状態への遷移を説明するための図である。比較状態S2では、周波数比較器119及び電圧比較器120が比較を行う。周波数比較器119は、周波数カウンタ122によりカウントされた周波数識別子が速度レベルセレクタ116により出力された周波数識別子と同じときには、「0」のアップ信号UP及び「0」のダウン信号DNを出力する。また、周波数比較器119は、周波数カウンタ122によりカウントされた周波数識別子が速度レベルセレクタ116により出力された周波数識別子より小さいときには、「1」のアップ信号UP及び「0」のダウン信号DNを出力する。また、周波数比較器119は、周波数カウンタ122によりカウントされた周波数識別子が速度レベルセレクタ116により出力された周波数識別子より大きいときには、「0」のアップ信号UP及び「1」のダウン信号DNを出力する。
電圧比較器120は、電圧カウンタ123によりカウントされた電圧識別子が速度レベルセレクタ116により出力された電圧識別子と同じときには、「0」のアップ信号UP及び「0」のダウン信号DNを出力する。また、電圧比較器120は、電圧カウンタ123によりカウントされた電圧識別子が速度レベルセレクタ116により出力された電圧識別子より小さいときには、「1」のアップ信号UP及び「0」のダウン信号DNを出力する。また、電圧比較器120は、電圧カウンタ123によりカウントされた電圧識別子が速度レベルセレクタ116により出力された電圧識別子より大きいときには、「0」のアップ信号UP及び「1」のダウン信号DNを出力する。
判定部121は、周波数比較器119のアップ信号UP及びダウン信号DN並びに電圧比較器120のアップ信号UP及びダウン信号DNに応じて、次の状態への遷移を制御部118に指示する。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「0」であるときには、制御が終了し、目標の速度レベルに到達したので、比較状態S2からアイドル状態S1に遷移する。アイドル状態S1では、現在レベルレジスタ113に、目標レベルレジスタ112に記憶されている速度レベルが書き込まれる。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「1」であるときには、電圧を1段階下げるため、比較状態S2から電圧カウント状態S5に遷移する。判定部121は、デクリメント信号DECを電圧カウンタ123に出力し、電圧カウンタ123は電圧識別子をデクリメントする。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「0」であるときには、電圧を1段階上げるため、比較状態S2から電圧カウント状態S5に遷移する。判定部121は、インクリメント信号INCを電圧カウンタ123に出力し、電圧カウンタ123は電圧識別子をインクリメントする。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「1」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「0」であるときには、周波数を1段階下げるため、比較状態S2から周波数カウント状態S4に遷移する。判定部121は、デクリメント信号DECを周波数カウンタ122に出力し、周波数カウンタ122は周波数識別子をデクリメントする。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「1」であるときには、周波数のみを1段階下げるため、比較状態S2から周波数カウント状態S4に遷移する。判定部121は、デクリメント信号DECを周波数カウンタ122に出力し、周波数カウンタ122は周波数識別子をデクリメントする。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「0」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「0」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「1」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「0」であるときには、周波数を1段階上げるため、比較状態S2から周波数カウント状態S4に遷移する。判定部121は、インクリメント信号INCを周波数カウンタ122に出力し、周波数カウンタ122は周波数識別子をインクリメントする。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「1」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「0」であるときには、電圧を1段階上げるため、比較状態S2から電圧カウント状態S5に遷移する。判定部121は、インクリメント信号INCを電圧カウンタ123に出力し、電圧カウンタ123は電圧識別子をインクリメントする。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「0」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「1」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「0」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「0」、ダウン信号DNが「1」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「0」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
周波数比較器119のアップ信号UPが「1」、ダウン信号DNが「1」、電圧比較器120のアップ信号UPが「1」、ダウン信号DNが「1」であるときには、矛盾する状態であるので、比較状態S2からエラー状態S3に遷移する。
図5において、エラー状態S3では、ハードウェアにエラーが発生したとして、図3(A)の要求レベルレジスタ111に、エラー情報301として「1」のエラーありの情報が書き込まれる。実行部104は、要求レベルレジスタ111に書き込まれたエラー情報301の内容を確認することによって制御回路にエラーが発生した旨を知ることができる。
電圧カウント状態S5では、次に電圧制御状態S8に遷移する。電圧制御状態S8では、電圧セレクタ127は、電圧カウンタ123によりカウントされた電圧識別子に対応する電圧テーブル126の電圧パラメータを選択し、電圧レギュレータ103に出力する。電圧レギュレータ103は、入力した電圧パラメータに応じた大きさの電圧V1を生成する。電圧制御状態S8の制御が終了すると、次に上記の比較状態S2に戻る。
周波数カウント状態S4では、次にフラグチェック状態S6に遷移する。フラグチェック状態S6では、フラグセレクタ128は、周波数カウンタ122によりカウントされた周波数識別子に対応する周波数テーブル124のフラグを選択し、フラグチェック部129を介して制御部118に出力する。制御部118が「0」のフラグを入力した場合には、フラグチェック状態S6から比較状態S2に戻る。制御部118が「1」のフラグを入力した場合には、フラグチェック状態S6から周波数制御状態S7に遷移する。
周波数制御状態S7では、周波数セレクタ125は、周波数カウンタ122によりカウントされた周波数識別子に対応する周波数テーブル124の周波数パラメータを選択し、位相ロックループ回路102に出力する。位相ロックループ回路102は、入力した周波数パラメータに応じた周波数のクロック信号CKを生成する。周波数制御状態S7の制御が終了すると、次に上記の比較状態S2に戻る。
図7は、図1の演算処理装置101の制御例を示すタイムチャートである。周波数識別子701は、時間経過に対する周波数識別子の変化を示す。電圧識別子702は、時間経過に対する電圧識別子の変化を示す。周波数テーブル124は図2(A)の内容を記憶し、電圧テーブル126は図2(B)の内容を記憶し、速度レベルテーブル114は図4(A)の内容を記憶する例を説明する。
時刻「1」では、要求レベルレジスタ111、目標レベルレジスタ112及び現在レベルレジスタ113は、「2」の速度レベルに設定されている。図4(A)に示すように、「2」の速度レベルは、「5」の周波数識別子及び「15」の電圧識別子に対応する。したがって、周波数カウンタ122はカウント値の周波数識別子701が「5」であり、電圧カウンタ123はカウント値の電圧識別子702が「15」である。位相ロックループ回路102は、「5」の周波数識別子に対応する周波数パラメータを入力し、図2(A)に示すように、「0.6」GHzの周波数のクロック信号CKを生成する。電圧レギュレータ103は、「15」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「0.95」Vの電圧V1を生成する。
次に、時刻「3」では、実行部104が要求レベルレジスタ111に、「3」の速度レベルを書き込む。すると、目標レベルレジスタ112には、「3」の速度レベルが書き込まれる。すなわち、要求レベルレジスタ111に記憶されている速度レベルと現在レベルレジスタ113に記憶されている速度レベルとが同じである状態において、要求レベルレジスタ111に現在レベルレジスタ113に記憶されている速度レベルと異なる速度レベルが書き込まれると、要求レベルレジスタ111に書き込まれた速度レベルが目標の速度レベルとして目標レベルレジスタ112に書き込まれる。
以下、「2」の速度レベルから「3」の速度レベルへの変更制御を行う。速度レベルセレクタ116は、図4(A)の速度レベルテーブル114を参照し、「3」の速度レベルに対応する「1」の周波数識別子及び「2」の電圧識別子を選択してそれぞれ周波数比較器119及び電圧比較器120に出力する。周波数比較器119は、周波数カウンタ122が出力する「5」の周波数識別子と速度レベルセレクタ116が出力する「1」の周波数識別子を比較し、「0」のアップ信号UP及び「1」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「15」の電圧識別子と速度レベルセレクタ116が出力する「2」の電圧識別子を比較し、「0」のアップ信号UP及び「1」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にデクリメント信号DECを出力する。
次に、周波数カウンタ122は、周波数識別子701を「5」から「4」にデクリメントする。フラグセレクタ128は、「4」の周波数識別子701に対応する「0」のフラグを出力する。そのフラグは「0」であるので、比較状態S2に戻る。周波数比較器119は、周波数カウンタ122が出力する「4」の周波数識別子と速度レベルセレクタ116が出力する「1」の周波数識別子を比較し、「0」のアップ信号UP及び「1」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「15」の電圧識別子と速度レベルセレクタ116が出力する「2」の電圧識別子を比較し、「0」のアップ信号UP及び「1」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にデクリメント信号DECを出力する。次に、周波数カウンタ122は、周波数識別子701を「4」から「3」にデクリメントする。フラグセレクタ128は、「3」の周波数識別子701に対応する「0」のフラグを出力する。そのフラグは「0」であるので、比較状態S2に戻る。上記と同様の処理を繰り返し、周波数識別子701が順次デクリメントされ、周波数識別子701が「1」になる。
次に、時刻「4」では、フラグセレクタ128は、「1」の周波数識別子701に対応する「1」のフラグを出力する。そのフラグは「1」であるので、周波数セレクタ125は、「1」の周波数識別子701に対応する周波数パラメータを位相ロックループ回路102に出力する。位相ロックループ回路102は、「1」の周波数識別子に対応する周波数パラメータを入力し、図2(A)に示すように、「0.2」GHzの周波数のクロック信号CKを生成する。クロック信号CKは、「5」の周波数識別子701の周波数から「1」の周波数識別子701の周波数に変化したことになる。
次に、周波数比較器119は、周波数カウンタ122が出力する「1」の周波数識別子と速度レベルセレクタ116が出力する「1」の周波数識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「15」の電圧識別子と速度レベルセレクタ116が出力する「2」の電圧識別子を比較し、「0」のアップ信号UP及び「1」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、電圧カウンタ123にデクリメント信号DECを出力する。
次に、時刻「5」では、電圧カウンタ123は、電圧識別子702を「15」から「14」にデクリメントする。電圧レギュレータ103は、「14」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「0.90」Vの電圧V1を生成する。
次に、周波数比較器119は、周波数カウンタ122が出力する「1」の周波数識別子と速度レベルセレクタ116が出力する「1」の周波数識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「14」の電圧識別子と速度レベルセレクタ116が出力する「2」の電圧識別子を比較し、「0」のアップ信号UP及び「1」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、電圧カウンタ123にデクリメント信号DECを出力する。
次に、時刻「6」では、電圧カウンタ123は、電圧識別子702を「14」から「13」にデクリメントする。電圧レギュレータ103は、「13」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「0.85」Vの電圧V1を生成する。
上記と同様の処理を繰り返し、電圧識別子702が順次デクリメントされる。時刻「17」では、周波数カウンタ122の周波数識別子701が「1」になり、電圧カウンタ123の電圧識別子702が「2」になる。電圧レギュレータ103は、「2」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「0.30」Vの電圧V1を生成する。
次に、周波数比較器119は、周波数カウンタ122が出力する「1」の周波数識別子と速度レベルセレクタ116が出力する「1」の周波数識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「2」の電圧識別子と速度レベルセレクタ116が出力する「2」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、アイドル状態S1に遷移する。アイドル状態S1では、現在レベルレジスタ113に、「3」の速度レベルが書き込まれる。
以上で、「2」の速度レベルから「3」の速度レベルへの変更制御が終了する。速度レベルを「2」から「3」に遅くする場合には、上記のように、まず、周波数識別子701により周波数のみを0.6GHzから0.2GHzまで下げる。その後、電圧識別子702により電圧のみを0.95Vから0.30Vまで、0.05Vずつ段階的に下げる。以上のように、速度レベルを遅くする場合には、まず、周波数識別子701による周波数を下げ、電圧を下げることが可能な状態にしてから、その後に、電圧識別子702による電圧を下げる必要がある。
具体的には、図6に示すように、周波数比較器119が、周波数カウンタ122によりカウントされた周波数識別子701の周波数が速度レベルセレクタ116により出力された周波数識別子の周波数より高い旨の比較結果を出力し、かつ、電圧比較器120が、電圧カウンタ123によりカウントされた電圧識別子702の電圧が速度レベルセレクタ116により出力された電圧識別子の電圧より高い旨の比較結果を出力した場合には、周波数カウンタ122は、周波数が低くなる方向に周波数識別子701をカウントし、電圧カウンタ123は、電圧識別子702のカウントを停止する。
また、周波数比較器119が、周波数カウンタ122によりカウントされた周波数識別子701が速度レベルセレクタ116により出力された周波数識別子と同じである旨の比較結果を出力し、かつ、電圧比較器120が、電圧カウンタ123によりカウントされた電圧識別子702の電圧が速度レベルセレクタ116により出力された電圧識別子の電圧より高い旨の比較結果を出力した場合には、周波数カウンタ122は、周波数識別子701のカウントを停止し、電圧カウンタ123は、電圧が低くなる方向に電圧識別子702をカウントする。
また、周波数比較器119が、周波数カウンタ122によりカウントされた周波数識別子701が速度レベルセレクタ116により出力された周波数識別子と同じである旨の比較結果を出力し、かつ、電圧比較器120が、電圧カウンタ123によりカウントされた電圧識別子702が速度レベルセレクタ116により出力された電圧識別子と同じである旨の比較結果を出力した場合には、周波数カウンタ122は、周波数識別子701のカウントを停止し、電圧カウンタ123は、電圧識別子702のカウントを停止する。
次に、速度レベルを「3」から「0」に速くする変更制御を説明する。時刻「22」では、実行部104が要求レベルレジスタ111に「0」の速度レベルを書き込む。すると、目標レベルレジスタ112には、「0」の速度レベルが書き込まれる。速度レベルセレクタ116は、図4(A)の速度レベルテーブル114を参照し、「0」の速度レベルに対応する「11」の周波数識別子及び「28」の電圧識別子を選択してそれぞれ周波数比較器119及び電圧比較器120に出力する。周波数比較器119は、周波数カウンタ122が出力する「1」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「2」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、電圧カウンタ123にインクリメント信号INCを出力する。
次に、時刻「23」では、電圧カウンタ123は、電圧識別子702を「2」から「3」にインクリメントする。電圧レギュレータ103は、「3」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「0.35」Vの電圧V1を生成する。
次に、周波数比較器119は、周波数カウンタ122が出力する「1」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「3」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、電圧カウンタ123にインクリメント信号INCを出力する。
次に、時刻「24」では、電圧カウンタ123は、電圧識別子702を「3」から「4」にインクリメントする。電圧レギュレータ103は、「4」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「0.40」Vの電圧V1を生成する。
上記と同様の処理を繰り返し、電圧識別子702が順次インクリメントされる。時刻「48」では、周波数カウンタ122の周波数識別子701が「1」になり、電圧カウンタ123の電圧識別子702が「28」になる。電圧レギュレータ103は、「28」の電圧識別子に対応する電圧パラメータを入力し、図2(B)に示すように、「1.60」Vの電圧V1を生成する。
次に、周波数比較器119は、周波数カウンタ122が出力する「1」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にインクリメント信号INCを出力する。
次に、周波数カウンタ122は、周波数識別子701を「1」から「2」にインクリメントする。フラグセレクタ128は、「2」の周波数識別子701に対応する「0」のフラグを出力する。そのフラグは「0」であるので、比較状態S2に戻る。周波数比較器119は、周波数カウンタ122が出力する「2」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にインクリメント信号INCを出力する。次に、周波数カウンタ122は、周波数識別子701を「2」から「3」にインクリメントする。フラグセレクタ128は、「3」の周波数識別子701に対応する「0」のフラグを出力する。そのフラグは「0」であるので、比較状態S2に戻る。上記と同様の処理を繰り返し、周波数識別子701が順次インクリメントされ、周波数識別子701が「5」になる。
次に、時刻「49」では、フラグセレクタ128は、「5」の周波数識別子701に対応する「1」のフラグを出力する。そのフラグは「1」であるので、周波数セレクタ125は、「5」の周波数識別子701に対応する周波数パラメータを位相ロックループ回路102に出力する。位相ロックループ回路102は、「5」の周波数識別子に対応する周波数パラメータを入力し、図2(A)に示すように、「0.6」GHzの周波数のクロック信号CKを生成する。クロック信号CKは、「1」の周波数識別子701の周波数から「5」の周波数識別子701の周波数に変化したことになる。
次に、周波数比較器119は、周波数カウンタ122が出力する「5」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にインクリメント信号INCを出力する。
次に、周波数カウンタ122は、周波数識別子701を「5」から「6」にインクリメントする。フラグセレクタ128は、「6」の周波数識別子701に対応する「0」のフラグを出力する。そのフラグは「0」であるので、比較状態S2に戻る。周波数比較器119は、周波数カウンタ122が出力する「6」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にインクリメント信号INCを出力する。次に、周波数カウンタ122は、周波数識別子701を「6」から「7」にインクリメントする。フラグセレクタ128は、「7」の周波数識別子701に対応する「0」のフラグを出力する。そのフラグは「0」であるので、比較状態S2に戻る。上記と同様の処理を繰り返し、周波数識別子701が順次インクリメントされ、周波数識別子701が「9」になる。
次に、時刻「50」では、フラグセレクタ128は、「9」の周波数識別子701に対応する「1」のフラグを出力する。そのフラグは「1」であるので、周波数セレクタ125は、「9」の周波数識別子701に対応する周波数パラメータを位相ロックループ回路102に出力する。位相ロックループ回路102は、「9」の周波数識別子に対応する周波数パラメータを入力し、図2(A)に示すように、「1.0」GHzの周波数のクロック信号CKを生成する。クロック信号CKは、「5」の周波数識別子701の周波数から「9」の周波数識別子701の周波数に変化したことになる。
次に、周波数比較器119は、周波数カウンタ122が出力する「9」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にインクリメント信号INCを出力する。
次に、時刻「51」では、周波数カウンタ122は、周波数識別子701を「9」から「10」にインクリメントする。フラグセレクタ128は、「10」の周波数識別子701に対応する「1」のフラグを出力する。そのフラグは「1」であるので、周波数セレクタ125は、「10」の周波数識別子701に対応する周波数パラメータを位相ロックループ回路102に出力する。位相ロックループ回路102は、「10」の周波数識別子に対応する周波数パラメータを入力し、図2(A)に示すように、「1.1」GHzの周波数のクロック信号CKを生成する。クロック信号CKは、「9」の周波数識別子701の周波数から「10」の周波数識別子701の周波数に変化したことになる。
次に、周波数比較器119は、周波数カウンタ122が出力する「10」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「1」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、周波数カウンタ122にインクリメント信号INCを出力する。
次に、時刻「52」では、周波数カウンタ122は、周波数識別子701を「10」から「11」にインクリメントする。フラグセレクタ128は、「11」の周波数識別子701に対応する「1」のフラグを出力する。そのフラグは「1」であるので、周波数セレクタ125は、「11」の周波数識別子701に対応する周波数パラメータを位相ロックループ回路102に出力する。位相ロックループ回路102は、「11」の周波数識別子に対応する周波数パラメータを入力し、図2(A)に示すように、「1.2」GHzの周波数のクロック信号CKを生成する。クロック信号CKは、「10」の周波数識別子701の周波数から「11」の周波数識別子701の周波数に変化したことになる。
次に、周波数比較器119は、周波数カウンタ122が出力する「11」の周波数識別子と速度レベルセレクタ116が出力する「11」の周波数識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。電圧比較器120は、電圧カウンタ123が出力する「28」の電圧識別子と速度レベルセレクタ116が出力する「28」の電圧識別子を比較し、「0」のアップ信号UP及び「0」のダウン信号DNを判定部121に出力する。判定部121は、図6に示すように、アイドル状態S1に遷移する。アイドル状態S1では、現在レベルレジスタ113に、「0」の速度レベルが書き込まれる。
以上で、「3」の速度レベルから「0」の速度レベルへの変更制御が終了する。速度レベルを「3」から「0」に速くする場合には、上記のように、まず、電圧識別子702により電圧のみを0.30Vから1.60Vまで、0.05Vずつ段階的に上げる。その後、周波数識別子701により周波数のみを0.2GHzから1.2GHzまで段階的に上げる。以上のように、速度レベルを速くする場合には、まず、電圧識別子702による電圧を上げ、周波数を上げることが可能な状態にしてから、その後に、周波数識別子701による周波数を上げる必要がある。
具体的には、図6に示すように、周波数比較器119が、周波数カウンタ122によりカウントされた周波数識別子701の周波数が速度レベルセレクタ116により出力された周波数識別子の周波数より低い旨の比較結果を出力し、かつ、電圧比較器120が、電圧カウンタ123によりカウントされた電圧識別子702の電圧が速度レベルセレクタ116により出力された電圧識別子の電圧より低い旨の比較結果を出力した場合には、電圧カウンタ123は、電圧が高くなる方向に電圧識別子702をカウントし、周波数カウンタ122は、周波数識別子701のカウントを停止する。
また、周波数比較器119が、周波数カウンタ122によりカウントされた周波数識別子701の周波数が速度レベルセレクタ116により出力された周波数識別子の周波数より低い旨の比較結果を出力し、かつ、電圧比較器120が、電圧カウンタ123によりカウントされた電圧識別子が速度レベルセレクタ116により出力された電圧識別子と同じである旨の比較結果を出力した場合には、周波数カウンタ122は、周波数が高くなる方向に周波数識別子701をカウントし、電圧カウンタ123は、電圧識別子702のカウントを停止する。
また、周波数比較器119が、周波数カウンタ122によりカウントされた周波数識別子701が速度レベルセレクタ116により出力された周波数識別子と同じである旨の比較結果を出力し、かつ、電圧比較器120が、電圧カウンタ123によりカウントされた電圧識別子702が速度レベルセレクタ116により出力された電圧識別子と同じである旨の比較結果を出力した場合には、周波数カウンタ122は、周波数識別子701のカウントを停止し、電圧カウンタ123は、電圧識別子702のカウントを停止する。
本実施形態によれば、演算処理装置101毎に、周波数パラメータの種類及び値並びに電圧パラメータの種類及び値が異なっても、周波数テーブル124及び電圧テーブル126の内容を変えることで対応することができ、実行部104が速度レベルを要求レベルレジスタ111に書き込むプログラムの内容を変える必要がない。したがって、種々の演算処理装置101に対して、簡単に周波数パラメータ及び電圧パラメータの制御を行うことができる。
図4(A)〜(C)に示すように、速度レベルが遅くなるように速度レベルの変更が指示されると、クロック信号CKの周波数が低くなるように制御され、その後に、電圧レギュレータ103が生成する電圧V1が低くなるように制御される。これに対し、速度レベルが速くなるように速度レベルの変更が指示されると、電圧レギュレータ103が生成する電圧V1が高くなるように制御され、その後に、クロック信号CKの周波数が高くなるように制御される。
上記の時刻「3」〜「4」では、現在の「5」の周波数識別子701から目標の「1」の周波数識別子701への低い周波数範囲で周波数識別子701が変更されるので、電源ノイズの影響は小さい。そこで、時刻「3」〜「4」では、周波数識別子701を「5」から「1」に一気に変更する。この場合、電源ノイズはほとんど発生しない。
また、上記の時刻「48」〜「52」では、周波数識別子701が「1」から「11」へ段階的に変更される。その際、現在の「1」の周波数識別子701から目標の「11」の周波数識別子701までのうちの「1」の周波数識別子701から「9」の周波数識別子701までの第1の周波数範囲では、「0.4GHz」の第1の変化量でクロック信号CKの周波数を変化させる。これに対し、現在の「1」の周波数識別子701から目標の「11」の周波数識別子701までのうちの「9」の周波数識別子701から「11」の周波数識別子701までの第2の周波数範囲では、「0.1GHz」の第2の変化量でクロック信号CKの周波数を変化させる。
第1の周波数範囲は、第2の周波数範囲に対して低い周波数の範囲であるので、電源ノイズの影響が小さい。そこで、「1」の周波数識別子701から「9」の周波数識別子701までの第1の周波数範囲では、「0.4GHz」の大きい変化量でクロック信号CKの周波数を変化させる。この場合、電源ノイズはほとんど発生しない。
第2の周波数範囲は、第1の周波数範囲に対して高い周波数の範囲であるので、電源ノイズの影響が大きい。そこで、「9」の周波数識別子701から「11」の周波数識別子701までの第2の周波数範囲では、「0.1GHz」の小さい変化量でクロック信号CKの周波数を変化させる。これにより、電源ノイズを低減することができる。
これに対し、電圧レギュレータ103の現在の電圧識別子702から電圧レギュレータ103の目標の電圧識別子702まで同じ変化量で、電圧レギュレータ103の電圧識別子702は段階的に変化する。
次に、周波数識別子を「11」から「1」に下げる場合を説明する。現在、位相ロックループ回路102は、「11」の周波数識別子に対応する周波数のクロック信号CKを生成している。次に、「10」の周波数識別子に対応するフラグは「1」であるので、位相ロックループ回路102は、「10」の周波数識別子に対応する周波数のクロック信号CKを生成する。次に、「9」の周波数識別子に対応するフラグは「1」であるので、位相ロックループ回路102は、「9」の周波数識別子に対応する周波数のクロック信号CKを生成する。次に、「8」〜「6」の周波数識別子に対応するフラグは「0」であり、「5」の周波数識別子に対応するフラグは「1」であるので、位相ロックループ回路102は、「5」の周波数識別子に対応する周波数のクロック信号CKを生成する。次に、「4」〜「2」の周波数識別に対応するフラグは「0」であり、「1」の周波数識別子に対応するフラグは「1」であるので、位相ロックループ回路102は、「1」の周波数識別子に対応する周波数のクロック信号CKを生成する。
次に、図7の本実施形態は、高速に周波数の変更及び速度レベルの変更を行うことができることを、図8と比較しながら説明する。
図8は、図2(A)の周波数テーブル124のフラグがすべて「1」である場合の演算処理装置101の制御例を示すタイムチャートである。時刻「3」〜「20」では、速度レベルが「2」から「3」に変更される。まず、時刻「3」〜「7」では、周波数識別子801は、「5」から「1」まで、「1」ずつ変更される。次に、時刻「7」〜「20」では、電圧識別子802は、「15」から「2」まで、「1」ずつ変更される。この場合、図7の速度レベルを「2」から「3」に変更するための時間703は、図8の速度レベルを「2」から「3」に変更するための時間803より短いことが分かる。すなわち、図7の本実施形態は、周波数識別子701を「5」から「1」に変更する時の変動量を大きくすることにより、速度レベルの変更時間703を短くすることができる。その結果、図7では、速度レベルを「3」に下げるまでの時間を短くすることができるので、早期に、演算処理装置101の消費電力を低減することができる利点がある。
また、時刻「22」〜「58」では、速度レベルが「3」から「0」に変更される。まず、時刻「22」〜「48」では、電圧識別子802は、「2」から「28」まで、「1」ずつ変更される。次に、時刻「48」〜「58」では、周波数識別子801は、「1」から「11」まで、「1」ずつ変更される。この場合、図7の速度レベルを「3」から「0」に変更するための時間704は、図8の速度レベルを「3」から「0」に変更するための時間804より短いことが分かる。すなわち、図7の本実施形態は、周波数識別子701を「1」から「9」に変更する時の変動量を「9」から「11」に変更する時の変動量より大きくすることにより、速度レベルの変更時間704を短くすることができる。その結果、図7では、速度レベルを「0」に上げるまでの時間を短くことができるので、早期に、演算処理装置101の高速演算が可能になる利点がある。
以上のように、クロック信号CKの周波数を高周波数範囲で急激に大きく変更すると、急激な負荷変動となり、大きな電源ノイズとなる。また、急激な大きな電圧の変更は、電源が不安定となり、動作が安定しなくなる。本実施形態によれば、高周波数範囲ではクロック信号CKの周波数を0.1GHzずつ小さい変動量で変更し、低周波数範囲ではクロック信号CKの周波数を0.4GHzずつ大きい変動量で変更する。また、電圧V1は、現在の電圧から目標の電圧まで0.05Vずつ段階的に変更する。これにより、電源ノイズを防止し、動作を安定化させることができ、高速に速度レベルを変更することができる。
また、目標レベルレジスタ112は、現在、制御中の目標の速度レベルを記憶するので、制御途中であっても、実行部104は、制御の完了を待つことなく、次の速度レベルを要求レベルレジスタ111に書き込むことができる。この書き込みがされても、制御部118による制御が継続され、実行部104からの要求は要求レベルレジスタ111に保持される。制御部118による制御が完了すると現在レベルレジスタ113は目標レベルレジスタ112の速度レベルを保持し、先ほど保持した要求レベルレジスタ111の速度レベルと現在レベルレジスタ113を比較器117で比較し、要求レベルレジスタ111に保持された速度レベルの値と現在レベルレジスタ113に保持された速度レベルの値とが異なる場合には、要求レベルレジスタ111に保持した新たな速度レベルが目標レベルレジスタ112に書き込まれ、次の目標の速度レベルに向けた制御が開始される。この制御は、制御部118が行うため、実行部104が行わなくてよい。実行部104は、速度レベルを要求レベルレジスタ111に書き込むという簡単な処理で、周波数パラメータ及び電圧パラメータの制御を可能にする。本実施形態によれば、目標の速度レベルを与えるだけで、周波数パラメータ及び電圧パラメータを制御することができるので、周波数パラメータ及び電圧パラメータの制御を簡単に行うことができる。
(第2の実施形態)
図9は、第2の実施形態による半導体装置の構成例を示す図である。図9は、図1に対して、セッティング部901を追加したものである。以下、本実施形態が第1の実施形態と異なる点を説明する。セッティング部901は、速度レベルセレクタ116が出力する周波数識別子及び周波数カウンタ122が出力する周波数識別子に応じて、周波数テーブル124のフラグを変更する。具体的には、セッティング部901は、速度レベルセレクタ116が出力する周波数識別子及び周波数カウンタ122が出力する周波数識別子に応じて、周波数テーブル124にフラグを設定する。
図10は、本実施形態による図9の制御部118が制御する状態遷移を示す図である。図10は、図5に対し、セッティング状態S9を追加したものである。初期時は、アイドル状態S1である。実行部104が要求レベルレジスタ111に速度レベルを書き込み、比較器117が要求レベルレジスタ111の速度レベルと現在レベルレジスタ113の速度レベルが異なる旨を制御部118に出力すると、制御部118は、アイドル状態S1からセッティング状態S9に遷移する。セッティング状態S9では、セッティング部901は、速度レベルセレクタ116が出力する周波数識別子及び周波数カウンタ122が出力する周波数識別子に応じて、周波数テーブル124にフラグを設定する。その後、制御部118は、セッティング状態S9から比較状態S2に遷移する。
図11は、セッティング部901が設定する周波数テーブル124のフラグを示す図である。セッティング部901は、周波数カウンタ122が出力する現在の周波数識別子と、速度レベルセレクタ116が出力する目標の周波数識別子に応じて、周波数テーブル124の適切なフラグを設定する。位相ロックループ回路102は、第1の実施形態と同様に、周波数テーブル124のフラグが「1」である周波数識別子の周波数のクロック信号CKを生成する。
まず、現在の周波数識別子が「11」であり、目標の周波数識別子が「9」である場合を説明する。その場合、現在、位相ロックループ回路102は、「11」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「10」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「11」であり、目標の周波数識別子が「5」である場合を説明する。その場合、現在、位相ロックループ回路102は、「11」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「10」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「5」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「11」であり、目標の周波数識別子が「1」である場合を説明する。その場合、現在、位相ロックループ回路102は、「11」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「10」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「1」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「9」であり、目標の周波数識別子が「11」である場合を説明する。その場合、現在、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「10」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「11」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「9」であり、目標の周波数識別子が「5」である場合を説明する。その場合、現在、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「8」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「7」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「5」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「9」であり、目標の周波数識別子が「1」である場合を説明する。その場合、現在、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「8」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「7」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「1」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「5」であり、目標の周波数識別子が「11」である場合を説明する。その場合、現在、位相ロックループ回路102は、「5」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「10」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「11」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「5」であり、目標の周波数識別子が「9」である場合を説明する。その場合、現在、位相ロックループ回路102は、「5」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「7」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「8」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「5」であり、目標の周波数識別子が「1」である場合を説明する。その場合、現在、位相ロックループ回路102は、「5」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「4」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「3」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「1」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「1」であり、目標の周波数識別子が「11」である場合を説明する。その場合、現在、位相ロックループ回路102は、「1」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「10」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「11」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「1」であり、目標の周波数識別子が「9」である場合を説明する。その場合、現在、位相ロックループ回路102は、「1」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「7」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「8」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「9」の周波数識別子の周波数のクロック信号CKを生成する。
次に、現在の周波数識別子が「1」であり、目標の周波数識別子が「5」である場合を説明する。その場合、現在、位相ロックループ回路102は、「1」の周波数識別子の周波数のクロック信号CKを生成している。次に、位相ロックループ回路102は、「3」の周波数識別子の周波数のクロック信号CKを生成する。次に、位相ロックループ回路102は、「4」の周波数識別子の周波数のクロック信号CKを生成する。最後に、位相ロックループ回路102は、「5」の周波数識別子の周波数のクロック信号CKを生成する。
以上のように、目標の周波数識別子が現在の周波数識別子より大きい場合、現在の周波数識別子から目標の周波数識別子までのうちの高周波数側の3個の周波数識別子のフラグを「1」にし、それ以外の周波数識別子のフラグを「0」にする。また、目標の周波数識別子が現在の周波数識別子より小さい場合、現在の周波数識別子から目標の周波数識別子までのうちの高周波数側の3個の周波数識別子のフラグを「1」にし、目標の周波数識別子のフラグを「1」にし、それ以外の周波数識別子のフラグを「0」にする。
また、現在の周波数識別子から目標の周波数識別子までのうちの低周波数範囲では第1の変化量でクロック信号CKの周波数を変化させ、現在の周波数識別子から目標の周波数識別子までのうちの高周波数範囲では第2の変化量でクロック信号CKの周波数を変化させる。低周波数範囲は高周波数範囲に比べて電源ノイズの影響が小さいので、第1の変化量は第2の変化量より大きくする。これにより、周波数の変更及び速度レベルの変更を高速に行うことができる。上記の低周波数範囲及び高周波数範囲は、現在の周波数識別子及び目標の周波数識別子に応じて変化する。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。