(57)【要約】【課題】電子システムの駆動電圧や周波数といった動作パラメータを動的に制御するための手段を提供する。【解決手段】少なくとも１つの実施形態において、システムは、クロック信号を利用して動作を実行するための手段(111)を備える。システムはさらに、その実行手段に変動する動作電圧を供給するための手段(101)と、その変動する動作電圧の観察された変化に応答してクロック信号の周波数を動的に変更するための手段(104)を備える。【選択図】図１
2005141757.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号を利用して動作を実行する手段（１１１）と、
前記実行する手段に変動動作電圧を供給する手段（１０１）と、
観察された前記変動動作電圧の変化に応答して前記クロック信号の周波数を動的に変化させる手段（１０４）
とを有するシステム。
【請求項２】
動的に変化させる前記手段が、
前記クロック信号の最初の位相を受け取り、前記クロック信号の前記受け取った最初の位相に対してある遅延を有する遅延クロック信号を生成する手段（１０７）と、
前記生成された遅延クロック信号を前記クロック信号の第２の位相と比較する手段（１０９）とを有することからなる、請求項１に記載のシステム。
【請求項３】
前記動作電圧のある値に対して前記遅延クロック信号に生成される遅延の量をプログラムするための手段（１０５）をさらに有する、請求項２に記載のシステム。
【請求項４】
前記比較する手段に少なくとも部分的に基づいて前記クロック信号を制御するための手段（１１０）をさらに有し、前記生成された遅延クロック信号が前記クロック信号の前記第２の位相よりも進んでいる場合には、前記制御する手段が前記クロック周波数を高くし、前記生成された遅延クロック信号が前記クロック信号の前記第２の位相より遅れている場合には、前記制御する手段が前記クロック周波数を下げることからなる、請求項２に記載のシステム。
【請求項５】
電圧−周波数変換回路であって、
クロック信号を受け取り、受け取ったクロック信号に対してある遅延量を有する遅延クロック信号を出力する少なくとも１つの遅延要素（３０１Ａ）を有し、前記少なくとも１つの遅延要素が、トラック信号（ＴＲＡＣＫ）の値に基づいて一定供給電圧（V_fixed）と変動供給電圧（variable_supply）のいずれかが提供される伝達ゲート（５０５）を有し、前記変動供給電圧が前記伝達ゲートに提供された場合には、前記伝達ゲートは、前記変動供給電圧の変化に応答して前記遅延クロック信号の前記遅延量を変化させることからなる、電圧−周波数変換回路。
【請求項６】
前記遅延クロック信号を生成するために、前記受け取ったクロック信号に遅延を与えるようにそれぞれが動作可能な複数の遅延要素（３０１Ａ−Ｄ、３０２Ａ−Ｄ、３０３Ａ−Ｄ、３０５Ａ−Ｄ）をさらに備える、請求項５に記載の電圧−周波数変換回路。
【請求項７】
前記遅延クロック信号を生成するために、前記複数の遅延要素のうち、前記受け取ったクロック信号に遅延を与える際に使用される所望の数の遅延要素を選択するための遅延制御回路（１０８）をさらに備える、請求項６に記載の電圧−周波数変換回路。
【請求項８】
前記複数の遅延要素のそれぞれにトラック信号を入力して、各遅延要素の前記伝達ゲートが、前記受け取ったクロック信号に前記遅延要素によって与えられる前記遅延量を前記変動供給電圧の変化に応答して変化させるかどうかを制御するためのトラック制御回路（１０５）をさらに備える、請求項６に記載の電圧−周波数変換回路。
【請求項９】
チップのクロック信号の最初の位相を前記チップの遅延線回路で受け取るステップ（６０１）と、
前記遅延線回路の少なくとも１つの遅延要素によって、前記受け取ったクロック信号の前記最初の位相に対して遅れた位相を有する遅延クロック信号を生成するステップ（６０２）と、
前記チップ上の比較回路によって、前記生成された遅延クロック信号を前記チップのクロック信号の後の方の位相と比較するステップ（６０３）であって、前記チップのクロック信号の前記後の方の位相が、前記チップのクロック信号の前記最初の位相よりも遅れていることからなる、ステップと、
前記チップ上のクロック制御回路によって、前記生成された遅延クロック信号と前記チップのクロック信号の前記後の方の位相との比較に少なくとも部分的に基づいて、前記チップのクロック信号の周波数を変化させるかどうかを決定するステップ（６０４）
とを含む、方法。
【請求項１０】
オンチップ回路によって、チップの動作電圧を観察するステップ（７０１）と、  
クロック信号を受け取り（７０２）、オンチップ回路により前記受け取ったクロック信号に対してある遅延量を有する遅延クロック信号を生成する（７０３）ステップ
とを含み、前記遅延量が、前記観察された動作電圧の変化に応じて変更するためにプログラム的に選択可能である、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子システムの制御に関し、特に、電子システムの動作電圧や周波数といった動作パラメータを制御することに関する。
【背景技術】
【０００２】
集積回路（一般に「チップ」とも呼ばれる）などの回路が利用される用途はますます増え続けている。例えば、マイクロプロセッサなどのチップは、一般に、パーソナル・コンピュータ（ＰＣ）やラップトップ・コンピュータだけでなく、一般に、携帯情報端末（ＰＤＡ）、携帯電話、ページャ、および他の様々なタイプの装置のようなさらに小さい（かつより持ち運びしやすい）装置に実装されている。チップの性能が常に進歩し続けているので、チップ設計者には消費電力が益々大きな問題になってきている。例えば、消費電力は、高速マイクロプロセッサの性能を制限する大きな要素になっている。ほとんどのマイクロプロセッサ・システムの設計目的は、多くの演算を必要とするコード用にできるだけ最高の性能を提供し、同時にマイクロプロセッサ・システムの消費電力を削減することである。特にそのようなマイクロプロセッサ・システムが携帯型電子装置に実装されたときの装置のバッテリ寿命を最大にするには、（少なくとも低活動期間に）消費電力を少なくすることが望ましい。チップの消費電力は、一般に、Ｐ＝Ｃ＊Ｖ２＊Ｆの式を使用して計算することができ、ここで、Ｐは消費電力を表し、Ｃはスイッチング・キャパシタンスを表し、Ｖは動作電圧を表し、Ｆはチップのクロック周波数を表す。この式から、スイッチング・キャパシタンス（Ｃ）、電圧（Ｖ）および周波数（Ｆ）がすべて、チップの消費電力（Ｐ）を決定する要素であることがわかる。多くの場合、プロセッサのクロック周波数（Ｆ）は、チップの消費電力（Ｐ）を所与のシステム（例えば、デスクトップ装置や携帯型装置内）で使用できる所定のレベルよりも低く保持するように制限される。
【０００３】
マイクロプロセッサ・チップは、一般に、その電圧と周波数が、チップが特定の量よりも多く電力を消費するのを防ぐために決定された一定のものにされた状態で実装されている。通常、マイクロプロセッサ・チップを設計する際に、設計者は、チップに重い計算負荷を作り出すソフトウェア・コードでチップを試験して、チップが重い演算負荷を受けたときに消費電力が特定の量を超えないようにチップに実施できる適切な電圧と周波数を決定する。しかしながら、実施された後、そのような重い演算負荷は、比較的まれにしか遭遇することがなく、多くの時間、マイクロプロセッサにかかっている演算負荷は低い（または、負荷がない）。したがって、最悪の場合の計算負荷によってチップの電圧と周波数が決定され、それによりチップの性能が損なわれる（例えば、最悪の場合に必要とされる低減された周波数のために）。
【０００４】
１つの電力節約方法は、演算の集中していない活動中にクロック周波数（Ｆ）だけを低くしようとするものである。これは電力を減少させるが、１処理当たりに消費される全エネルギーには影響を及ぼさない。すなわち、周波数（Ｆ）が下がるととそれに比例して消費電力が減少するが、これに比例してタスク実行時間も長くなり、これにより、１タスク当たりのエネルギーが一定に維持される。一方、プロセッサの電圧（Ｖ）だけを低くすると、エネルギー効率は高くなるが、その最大性能が損なわれる。
【０００５】
演算負荷の需要に応じてクロック周波数（Ｆ）と電源電圧（Ｖ）を動的に変化させると、演算の少ない期間に１処理当たりに消費されるエネルギーを少なくすることができ、同時に、必要なとき（すなわち、演算の多い期間）に最大性能が維持されることが分かっている。そのような演算負荷に基づいたクロック周波数（Ｆ）と電源電圧（Ｖ）の動的変更を利用しようとする設計戦略は、一般に、動的電圧スケーリング（ＤＶＳ）と呼ばれる。そのようなＤＶＳ技術の例には、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＳｐｅｅｄＳｔｅｐ（商標）技術と、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．から入手可能なＰｏｗｅｒＮＯＷ技術が含まれる。従来の実施は、オペレーティング・システム（ＯＳ）の直接制御によってマイクロプロセッサ上でＤＶＳを使用する。そのような実施では、ＤＶＳシステムのＯＳに、マイクロプロセッサの実行時にプロセッサ速度と電圧を動的に調整するために利用される１つまたは複数の電圧スケジューラ・アルゴリズムが含まれる。電圧スケジューラは、コプロセッサ・レジスタに所望の周波数（ＭＨｚ単位）を書き込むことによってマイクロプロセッサのクロック周波数（Ｆ）と電源電圧（Ｖ）を制御する。電圧スケジューラは、システムの現在と過去の状態を解析して、プロセッサの将来の作業負荷を予測する。例えば、個別のアプリケーションが完了期限を提供し、電圧スケジューラは、アプリケーションの前の実行履歴を使用して必要なプロセッサ・サイクル数を決定し、それに従ってクロック周波数（Ｆ）を設定する。
【０００６】
ＤＶＳ技術は、従来から、システム利用率を定期的に解析して周波数と電圧を制御する期間ベースの電圧スケジューラを利用している。例えば、電圧スケジューラが、前の期間が５０％を超えてアクティブであったと判定した場合は、次の期間の周波数と電圧を高めることができる。したがって、システムは、ＯＳにクロック周波数（Ｆ）を現在アクティブなプロセスに必要な最低レベルに動的に調整させることによって、マイクロプロセッサが消費する電力量を節約しようとする。クロック周波数（Ｆ）をそのようなレベルに調整するために、ＯＳは、Ｆを高くしたり低くしたりすることがある。Ｆを高くするとき、ＯＳは、まずチップの動作電圧（Ｖ）を所望のＦをサポートするのに適した値まで高め、次にＦが高められ、またＦを所望のレベルまで下げるときは、まずＦをそのレベルまで下げ、次にチップの動作電圧を、下げたＦをサポートするのに十分な値まで下げる。
【０００７】
しかしながら、ＯＳを利用してマイクロプロセッサの電圧と周波数を動的に制御するこの手法は、問題があったり不適切であったりする場合が多い。まず、一般に、この手法を実施するようにシステムのＯＳを変更するには、きわめて時間がかかりかつ／またはコストがかかる。システム管理者は、一般に、使用しているハードウェアを改善するためにＯＳをアップグレードすることを嫌がる。さらに、チップが実際にどれだけ電力を消費しておりまたその演算の需要が何であるかの情報が不完全であるため、ＯＳを利用する手法は、あまり信頼できるものではない。より正確に言うと、ＯＳは、チップ・レベルで必要なものを推定／推測することを試みることしかできない。さらに、ＯＳがチップの消費電力および／または演算需要を知的に推定するために必要なデータは、一般にチップに固有なものであり、したがって、そのようなＯＳを利用する手法の実施やアップグレードはより困難になる（ＯＳの実装を、実装する特定のチップ技術に合わせなければならないため）。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的の１つは、電子システムの駆動電圧や周波数といった動作パラメータを動的に制御する手段を提供することである。
【課題を解決するための手段】
【０００９】
少なくとも１つの実施形態によれば、システムは、クロック信号を利用して動作（演算）を実行する手段を含む。システムは、さらに、その実行する手段に変動動作電圧を供給する手段と、観察された変動動作電圧の変化に応じてクロック信号の周波数を動的に変化させる手段とを含む。
【実施例】
【００１０】
図１には、クロック信号を動的に変化させるための回路の１実施形態の実装例を含むシステム１００の一部分を示す。図示したように、電源１０１が、チップ１０３に電力を供給する。より具体的には、電圧信号とアースが、電源１０１によって供給され、一般にある程度のパッケージ寄生容量１０２を介してチップ１０３に送られる。そのようなパッケージ寄生容量１０２は、電子回路技術分野の当業者には周知であり、したがって、ここでは詳しく説明しない。このように、得られた電圧信号Ｖ１とアースＧ１が、チップ１０３によって受け取られる。チップ１０３は、後でさらに説明するように、チップの変動しうる電源電圧（または変動供給電圧または可変供給電圧。以下同じ）Ｖ１の変化に応じて、チップのクロック「ＣＬＫ」（コア・チップ回路１１１のクロック信号として利用される）を動的に変化させるように動作可能な電圧−周波数変換回路（本明細書では、「クロック最適化回路」または「クロック管理回路」と呼ぶことがある）１０４を含む。チップ１０３は、マイクロプロセッサを含むがそれに限定されない任意のタイプの集積回路でよい。コア・チップ回路１１１は、マイクロプロセッサ内で命令を実行するロジック、チップが動作を実行するために利用できる情報のための記憶要素、演算処理ロジックなど、チップ１０３の任意のクロック駆動される（例えばクロックに同期して動作する）回路構成要素を含むことができる。
【００１１】
図１のこの例示的な実施形態において、電圧−周波数変換回路１０４は、電圧追跡制御部１０５、電圧スイッチ１０６、プログラム可能遅延線路１０７、遅延制御部１０８、位相比較器１０９、およびクロック・コントローラ１１０を含み、これらについては後でさらに詳しく説明する。図示したように、この例示的な実施形態において、クロック・コントローラ１１０は、コア・チップ回路１１１によって使用されるチップ・クロック「ＣＬＫ」を出力する。また、クロック「ＣＬＫ」は、プログラム可能遅延線路１０７と位相比較器１０９によって受け取られる。プログラム可能遅延線路１０７は、電圧Ｖ１に基づいて、「遅延ＣＬＫ（遅延クロック）」として示した遅延されたクロック信号を生成する。位相比較器１０９は、クロック「ＣＬＫ」を「遅延ＣＬＫ」と比較して、クロック・コントローラ１１０に指示してクロック「ＣＬＫ」の周波数を変化させる（例えば、クロック「ＣＬＫ」の周波数を増減する）かどうかを決定する。より具体的には、位相比較器１０９は、クロック「ＣＬＫ」の位相を「遅延ＣＬＫ」と比較した結果を示すクロック制御信号を出力する。このクロック制御信号に基づいて、クロック・コントローラ１１０は、クロック「ＣＬＫ」の周波数を変化させるかどうかを決定する。
【００１２】
これにより、プログラム可能遅延線路１０７は、チップの電源電圧（供給電圧）Ｖ１に応じて変化するＣＬＫに対する遅延を有する「遅延ＣＬＫ」を所定の方法で生成する。後で図３と関連して考察するように、特定の実施形態において、遅延線路は、作成時に回路に整合させるために電源電圧Ｖ１の変化に対する感度を増減（すなわち、プログラム）できるように「プログラム可能」である。実際に回路を作成する前に、様々な電源電圧に対してその回路がどのように挙動するかを予測することは困難である。（例えば、シリコン内に）回路が実際に作成された後で、特定の実施形態は、（シリコン内に）作成した回路の特性を正確に考慮するように遅延線路１０７をプログラムして、電圧−周波数変換回路１０４が、変動電源電圧Ｖ１の変化に応じてチップのクロック周波数「ＣＬＫ」を適切に変化させることができる。後述する図２Ａ〜図２Ｃに示したような例示的な実施形態において、「遅延ＣＬＫ」信号は、１クロック・サイクル長になるように構成される。チップのクロック信号「ＣＬＫ」は遅延線回路１０７に入力され、遅延線回路１０７は、正確に１クロック・サイクル遅れることが予想される「遅延ＣＬＫ」を出力する。これにより、チップの動作電圧が与えられた場合に、位相比較器１０９は、「遅延ＣＬＫ」をチップのクロック「ＣＬＫ」の次のサイクルと比較して、「ＣＬＫ」の周波数が適切かどうかを決定することができる。
【００１３】
図１に示したように、この例示的な実施形態では、受け取った電圧信号Ｖ１とアース信号Ｇ１が、コア・チップ回路１１１と電圧−周波数変換回路１０４の両方に送られる。この実施形態において、電圧−周波数変換回路１０４は、生成されたクロック「ＣＬＫ」の周波数を、電圧Ｖ１の値に少なくとも部分的に基づいて調整する。より具体的には、Ｖ１は、チップ１０３に供給される変動電源電圧（variable_supply。本明細書では、変動供給電圧または変動電源とも呼ぶ）であり、電源１１２は、図１に示したようにチップ１０３に一定電圧信号「V_fixed」を供給する。図示したように、変動電源電圧Ｖ１と一定電源電圧V_fixedは両方とも電圧−周波数変換回路１０４に供給され、後で図５でさらに考察するように、そのＶ１とV_fixed信号は、チップのクロック信号ＣＬＫを管理するためにプログラム可能遅延線路１０７の遅延要素によって使用される。
【００１４】
電圧スイッチ１０６は、プログラム可能遅延線回路１０７の感度をチップの電源電圧Ｖ１の変動に合わせるために、プログラミングによって（例えば、電圧追跡制御部１０５によって）制御されるスイッチである。そのような電圧スイッチ１０６は、実際上は、アナログ・マルチプレクサ（ＭＵＸ）である。動作において、電圧スイッチ１０６は、プログラム可能遅延線路１０７に、固定電圧V_fixedを送るか（生成された「遅延ＣＬＫ」の遅延が、チップの変動電源電圧Ｖ１の変化に影響を受けないように）、またはチップの変動電圧Ｖ１を送る。このように、チップの変動電源電圧Ｖ１が、プログラム可能遅延線路１０７に送られた場合（例えば、図５と関連して後で考察するように、遅延線回路１０７の遅延要素の伝達ゲートに送られた場合）、その電源電圧Ｖ１が変化するので、生成される「遅延ＣＬＫ」の遅延は増減する。したがって、電圧の低下が起きた場合、生成される「遅延ＣＬＫ」は、「ＣＬＫ」信号のちょうど１クロック・サイクル後ではなく、もう少し後で生じる。その場合、位相比較器１０９は、「遅延ＣＬＫ」が「ＣＬＫ」のクロック・サイクルよりも長いことを検出し、「ＣＬＫ」の周波数を低くするためにクロック・コントローラ１１０に信号を送る。
【００１５】
前述の位相比較器１０９による「遅延ＣＬＫ」と「ＣＬＫ」の比較と、クロック・コントローラ１１０による「ＣＬＫ」の周波数の変更は、きわめて迅速に行われることが好ましい（例えば、約３００ピコ秒で）。その時間中（例えば、３００ピコ秒）にチップの電源電圧が変動する量はきわめて小さい。したがって、電圧−周波数変換回路１０４は、このような電源電圧によってサポートされるクロック周波数が下がるよりも速く電源電圧が下がることに起因する故障状態にチップが陥いらないようにする。より適切に言うと、電圧−周波数変換回路１０４は、チップの電源電圧Ｖ１の変化をきわめて迅速に認識し、それに従ってチップのクロック「ＣＬＫ」の周波数を調整することができる。したがって、きわめて小さなガードバンド機能（guard banding）をチップ１０３のために実施することができる。
【００１６】
換言すると、チップの電源電圧Ｖ１は、電圧−周波数変換回路１０４が電源電圧Ｖ１の変化を検出しそれに応答する速さによりもゆっくり変化する（例えば、「ＣＬＫ」の周波数を適切に調整することにより）。したがって、チップの電源電圧Ｖ１によって支援される周波数にクロック「ＣＬＫ」を維持するために、電圧−周波数変換回路１０４は、チップの電源電圧Ｖ１の変化に応じて「ＣＬＫ」の周波数を迅速に調整することによって、チップ１０３に対して安全な動作範囲を維持することができる。
【００１７】
このようにして、電圧−周波数変換回路１０４は、変動電源電圧Ｖ１に基づいてクロック「ＣＬＫ」の周波数を動的に調整するように動作可能である。例えば、負荷の変化（寄生容量の低下（parasitic drop）の結果としてまたはチップまたはシステム・コントローラから、チップの動作中に電源電圧Ｖ１に変化が生じることがある。例えば、電圧Ｖ１が低下したとき、電圧−周波数変換回路１０４から出力される「ＣＬＫ」の周波数が下がり（それにより、クロック周波数は、下がった電源電圧によって支援され）、電圧Ｖ１が上昇したとき、電圧−周波数変換回路１０４から出力される「ＣＬＫ」の周波数が上昇する（その結果、クロック周波数は、高くなった電源電圧を利用する）。
【００１８】
その結果、この例示的な実施形態のオンチップ回路１０４は、チップ１０３がその消費電力を自動調節することを可能にする。チップ１０３の消費電力は式Ｐ＝Ｃ＊Ｖ２＊Ｆを利用して計算することができ、ここでＰは消費電力を表し、Ｃはスイッチング・キャパシタンスを表し、Ｖは動作電圧（例えば、電圧Ｖ１）を表し、Ｆはチップ１０３のクロック周波数を表す（例えば、ＣＬＫの周波数）。したがって、電圧−周波数変換回路１０４が、変動電源電圧Ｖ１の変化に応じてチップ１０３のクロック周波数（すなわち、「ＣＬＫ」の周波数）を動的に調整することによって、チップは、その消費電力を自動調整することができる。
【００１９】
図１の例示的な実施形態の動作において、システム・クロック（または、「チップ・クロック」）「ＣＬＫ」は、電圧−周波数変換回路１０４から（および、より具体的にはクロック・コントローラ１１０から）出力され、コア・チップ回路１１１に入力され、それにより実行されるクロック駆動される動作（例えばクロックに同期した動作）のために使用される。さらに、クロック「ＣＬＫ」は、電圧−周波数変換回路１０４に入力される。より具体的には、クロック「ＣＬＫ」は、プログラム可能遅延線路１０７と位相比較器１０９に入力される。図３〜図５と関連して後で説明するように、特定の実施形態において、プログラム可能遅延線路１０７は、バイパス可能な遅延要素を含むことができ、遅延を、ターゲット電圧Ｖ１においてクロック「ＣＬＫ」のターゲット期間になるようにプログラムすることができる。ターゲット電圧およびクロック周波数は、例えばチップ仕様から得ることができる。
【００２０】
電圧Ｖ１がターゲット（目標値）にあり、クロック「ＣＬＫ」のクロック周期がターゲット（目標値）にある場合、図１に「遅延ＣＬＫ」と示した遅延線路１０７から出力される遅延クロックは、次のクロック・サイクルのシステム・クロック「ＣＬＫ」の立ち上がりエッジと一致する立ち上がりエッジを有する。したがって、位相比較器１０９は、「遅延ＣＬＫ」とクロック「ＣＬＫ」の次のクロック・サイクルの一致を検出し、システム・クロック・コントローラ１１０は、（位相比較器１０９から出力されたクロック制御信号によって）何もしない（すなわち、クロック「ＣＬＫ」の周波数を変化させない）ように指示される。変動電源電圧Ｖ１がターゲットより高い場合、遅延されたクロック「遅延ＣＬＫ」は、システム・クロック「ＣＬＫ」の次のサイクルより前に位相比較器１０９に到達し、クロック・コントローラ１１０は、（位相比較器１０９から出力されるクロック制御信号によって）クロック「ＣＬＫ」の周波数を高くするように信号を送られる。電圧Ｖ１がターゲットよりも低い場合、遅延されたクロック「遅延ＣＬＫ」は、システム・クロック「ＣＬＫ」の次のサイクルよりも後に位相比較器１０９に到達し、クロック・コントローラ１１０は、（位相比較器１０９から出力されるクロック制御信号によって）クロック「ＣＬＫ」の周波数を下げるように信号を送られる。観察された動作電圧Ｖ１に応じて「遅延ＣＬＫ」をこのように変化させるようにプログラム可能な遅延要素の例については、図３〜図５と関連して後でさらに詳しく説明する。
【００２１】
電圧スイッチ１０６は、プログラム可能遅延線路１０７が、電圧の変化に対して異なる応答を有することを可能にする。後で図３と図５でさらに詳しく説明するように、一定電源電圧V_fixedをプログラム可能遅延線路１０７のいくつかの遅延要素に効果的に多重化することによって、遅延線路１０７は、電圧の変化に対する応答性が低くなる。そのような電圧スイッチ１０６を使用することによって、電圧Ｖ１の変化に対する遅延線路１０７の応答の大きさは、例えば、チップ１０３のダイ上のクリティカル・パスのものと一致するように設定される。
【００２２】
図２Ａ〜図２Ｃは、クロック「ＣＬＫ」を「遅延ＣＬＫ」と比較する際に位相比較器１０９が遭遇する可能性のあるシナリオの例を示す。例えば、図２Ａは、「遅延ＣＬＫ」の位相「遅延１」がクロック「ＣＬＫ」の位相「クロック２」と一致する例を示す。例えば、クロック「ＣＬＫ」の位相「クロック１」は、クロック制御部（クロックコントローラ）１１０から出力される第１のクロック・サイクルである。この「クロック１」は、プログラム可能遅延線路１０７によって受け取られ、プログラム可能遅延線路１０７は、「遅延ＣＬＫ」の位相「遅延１」を出力する。次に、クロック制御部１１０は、クロック「ＣＬＫ」の第２のクロック・サイクル「クロック２」を出力する。位相比較器１０９は、「ＣＬＫ」と「遅延ＣＬＫ」を受け取り、「遅延ＣＬＫ」の位相「遅延１」を「ＣＬＫ」の位相「クロック２」と比較する。図２Ａの例では、位相比較器１０９から出力されたクロック制御信号は、「遅延ＣＬＫ」と「ＣＬＫ」が一致していることを示し、従ってクロック・コントローラ１１０は、システム・クロック「ＣＬＫ」が適正な速さであり、その周波数を変化させないことを決定する。すなわち、チップのコア回路１１１に電源電圧Ｖ１が提供された場合に、チップのクロック「ＣＬＫ」が適正（または「最適」）な周波数で動作していることが決定される。
【００２３】
図２Ｂは、「遅延ＣＬＫ」の位相「遅延１」が、クロック「ＣＬＫ」の位相「クロック２」から遅れている例を示す。例えば、最初に、クロック制御部１１０から「ＣＬＫ」のクロックサイクル「クロック１」のクロックが出力される。この「クロック１」は、プログラム可能遅延線路１０７によって受け取られ、プログラム可能遅延線路１０７は、「遅延ＣＬＫ」の位相「遅延１」を出力する。次に、クロック制御部１１０は、「ＣＬＫ」の第２のクロック・サイクル「クロック２」を出力する。位相比較器１０９は、「ＣＬＫ」と「遅延ＣＬＫ」を受け取り、「遅延ＣＬＫ」の位相「遅延１」を「ＣＬＫ」の第２のクロック・サイクルの位相「クロック２」と比較する。図２Ｂの例において、位相比較器１０９から出力されたクロック制御信号は、「遅延ＣＬＫ」の位相が「ＣＬＫ」の位相の後にある（すなわち、「遅延ＣＬＫ」の位相「遅延１」が「ＣＬＫ」の位相「クロック２」の後に生じる）ことを示し、したがってクロック・コントローラ１１０は、システム・クロック「ＣＬＫ」が早すぎると決定し、その結果その周波数を低くすることができる。
【００２４】
図２Ｃは、「遅延ＣＬＫ」の位相「遅延１」が「ＣＬＫ」の第２のクロック・サイクルの位相「クロック２」の前に生じる例を示す。例えば、最初に、「ＣＬＫ」の第１のクロック・サイクル「クロック１」がクロック制御部１１０から出力される。この「クロック１」は、プログラム可能遅延線路１０７によって受け取られ、プログラム可能遅延線路１０７は、「遅延ＣＬＫ」の位相「遅延１」を出力する。次に、クロック制御部１１０は、「ＣＬＫ」の第２のクロック・サイクル「クロック２」を出力する。位相比較器１０９は、「ＣＬＫ」と「遅延ＣＬＫ」を受け取り、「遅延ＣＬＫ」の位相「遅延１」を「ＣＬＫ」の第２のクロック・サイクルの位相「クロック２」と比較する。図２Ｃの例では、位相比較器１０９から出力されたクロック制御信号は、「遅延ＣＬＫ」の位相が「ＣＬＫ」の位相よりも進んでいる（すなわち、「遅延ＣＬＫ」の位相「遅延１」が「ＣＬＫ」の位相「クロック２」よりも前に生じる）ことを示し、したがって、クロック・コントローラ１１０は、システム・クロック「ＣＬＫ」が遅過ぎると決定し、その結果その周波数を高くすることができる。
【００２５】
以上の点から、位相比較器１０９は、１）「ＣＬＫ」の立ち上がりエッジが「遅延ＣＬＫ」の立ち上がりエッジにある量を加えたものよりも後にくる場合（第１の条件）、２）「遅延ＣＬＫ」の立ち上がりエッジが「ＣＬＫ」の立ち上がりエッジにある量を加えたものよりも後にくる場合（第２の条件）、３）これら２つの条件がどちらも真でない場合（すなわち、「遅延ＣＬＫ」と「ＣＬＫ」の立ち上がりエッジが、指定された量内で一致する場合）（第３の条件）を決定するように実施されることができる。第１の条件が満された場合、位相比較器１０９は、クロック制御回路１１０に「ＣＬＫ」を速くさせる信号を出力する。第２の条件が満たされた場合、位相比較器１０９は、クロック制御回路１１０に「ＣＬＫ」を遅くさせる信号を出力する。また、第３の条件が検出された場合（すなわち、最初の２つの条件のどちらも真でない場合）、位相比較器１０９は、クロック制御回路１１０に「ＣＬＫ」をまったく変化させない。
【００２６】
位相比較器１０９の１つの例示的な実施形態として、位相比較器１０９は、上記第１の条件が真であるかどうか（すなわち、「ＣＬＫ」の立ち上がりエッジが「遅延ＣＬＫ」の立ち上がりエッジにある量を加えたものよりも後にくるかどうか）を決定するために使用されるセット−リセット（Ｓ−Ｒ）ラッチ回路を含むことができる。同様に、位相比較器１０９は、上記第２の条件が真であるかどうか（すなわち、「遅延ＣＬＫ」の立ち上がりエッジが「ＣＬＫ」の立ち上がりエッジにある量を加えたものよりも後にくるかどうか）を決定するために使用されるＳ−Ｒラッチ回路を含むことができる。また、位相比較器１０９は、上記第３の条件（すなわち、「遅延ＣＬＫ」と「ＣＬＫ」の立ち上がりエッジが指定された量内で一致する場合）を検出するための組合せゲートを含むことができる。当然ながら、代替実施形態において位相比較器１０９を実施する際に、位相比較器１０９の前述の機能を実行するために現在既知のまたは今後開発される任意の他の回路を使用することができる。
【００２７】
図３は、１つの実施形態による図１の電圧−周波数変換器１０４の一部分の例示的な実施形態を示す。この例示的な実施形態では、図１のプログラム可能遅延線路１０７を構成するために、複数の遅延要素が配列されている。より具体的には、図３に、遅延要素３０１Ａ−Ｄ、３０２Ａ−Ｄ、３０３Ａ−Ｄ、および３０５Ａ−Ｄを示す。また、図３の例には、それぞれ粗遅延制御（Ｃｏａｒｓｅ  Ｄｅｌａｙ  Ｃｏｎｔｒｏｌ）信号と精密遅延制御（Ｆｉｎｅ  Ｄｅｌａｙ  Ｃｏｎｔｒｏｌ）信号を介して遅延制御回路１０８によって制御されるマルチプレクサ（ＭＵＸ）３０４および３０６が含まれている。この例示的な実施形態は、生成される遅延クロック信号に粗制御を行う第１の部分３０７（本明細書では粗遅延段と呼ぶ）と、生成される遅延クロック信号に精密制御を行う第２の部分３０８（本明細書では精密遅延段と呼ぶ）を有する。図３のこの例において、遅延要素３０１Ａ−Ｄ、３０２Ａ−Ｄおよび３０３Ａ−Ｄは、ＭＵＸ３０４と共に、粗遅延段３０７を構成し、遅延要素３０５Ａ−ＤとＭＵＸ３０６は、精密遅延段３０８を構成する。
【００２８】
さらに図３に示したように、この例では、電圧追跡制御部１０５は、８ビットのトラック信号（トラック［７：０］）を出力し、その各ビットが、１つまたは複数の遅延要素に入力される。より具体的には、トラック［７］（すなわち、トラック信号の最上位ビット）が、粗遅延段３０７の遅延要素３０１Ａ、３０２Ａおよび３０３Ａに入力され、トラック［６］が、粗遅延段３０７の遅延要素３０１Ｂ、３０２Ｂおよび３０３Ｂに入力され、トラック［５］が、粗遅延段３０７の遅延要素３０１Ｃ、３０２Ｃおよび３０３Ｃに入力され、トラック［４］が、粗遅延段３０７の遅延要素３０１Ｄ、３０２Ｄおよび３０３Ｄに入力される。トラック［３］が、精密遅延段３０８の遅延要素３０５Ａに入力され、トラック［２］が、精密遅延段３０８の遅延要素３０５Ｂに入力され、トラック［１］が、精密遅延段３０８の遅延要素３０５Ｃに入力され、トラック［０］（すなわち、トラック信号の最下位ビット）が、精密遅延段３０８の遅延要素３０５Ｄに入力される。
【００２９】
後で図５によりさらに詳しく説明するように、トラック信号が、ある遅延要素に対してハイ（論理１）に設定され、これによりその遅延要素が追跡モードになった場合、その遅延要素から出力される信号の遅延の量は、チップの変動電圧Ｖ１に応じて変化する。一方、トラック信号が、ある遅延要素に対してロー（論理０）に設定された場合は、遅延要素から出力される信号の遅延の量は、チップの変動電圧Ｖ１に応じて変化しない。その結果、電圧追跡制御部１０５は、トラック信号の各ビットごとに適切な値を出力して、遅延要素のいくつかを選択的に追跡モードにして、チップの変動電源電圧Ｖ１に対する「遅延ＣＬＫ」信号の所望の感度レベルを達成することができる。
【００３０】
図３の例示的な実施形態に示したように、チップのクロック信号「ＣＬＫ」は、第１の遅延要素３０１Ａに入力され、第１の遅延要素３０１Ａは、それが生成する出力信号の「ＣＬＫ」信号にある量の遅延（すなわち、ゲート遅延）を与える。すなわち、第１の遅延要素３０１Ａは、「ＣＬＫ」信号に対してある量の遅延を有する出力信号を生成する。第１の遅延要素３０１Ａの出力は、第２の遅延要素３０１Ｂに入力され、第２の遅延要素３０１Ｂは、「ＣＬＫ」信号に対してさらに遅れた出力を生成する。第２の遅延要素３０１Ｂの出力は、第３の遅延要素３０１Ｃに入力され、第３の遅延要素３０１Ｃは、「ＣＬＫ」信号に対してさらに遅れた出力を生成し、第３の遅延要素３０１Ｃの出力は、第４の遅延要素３０１Ｄに入力され、第４の遅延要素３０１Ｄは、「ＣＬＫ」信号に対してさらに遅れた出力を生成する。第４の遅延要素３０１Ｄからの出力は、ＭＵＸ３０４に第１の入力「Ａ」として入力され、遅延要素３０２Ａにも入力される。したがって、「ＣＬＫ」信号は、第１の直列の遅延要素（要素３０１Ａ〜３０１Ｄ）に入力され、第１の直列の遅延要素は、「ＣＬＫ」信号に対して第１の遅延を有する第１の出力信号を生成する。
【００３１】
遅延要素３０１Ｄからの出力信号は、第２の直列の遅延要素３０２Ａ〜３０２Ｄに入力され、第２の直列の遅延要素３０２Ａ〜３０２Ｄは、「ＣＬＫ」信号に対して遅延要素３０１Ｄからの出力信号よりも大きい遅延を有する第２の出力信号を（遅延要素３０２Ｄから）生成する。遅延要素３０２Ｄによって生成された出力信号は、ＭＵＸ３０４に第２の入力「Ｂ」として入力され、遅延要素３０３Ａにも入力される。
【００３２】
遅延要素３０２Ｄからの出力信号は、第３の直列の遅延要素３０３Ａ〜３０３Ｄに入力され、第３の直列の遅延要素３０３Ａ〜３０３Ｄは、「ＣＬＫ」信号に対して遅延要素３０２Ｄからの出力信号よりも大きい遅延を有する第３の出力信号を（遅延要素３０３Ｄから）生成する。遅延要素３０３Ｄによって生成された出力信号は、ＭＵＸ３０４に第３の入力「Ｃ」として入力される。
【００３３】
その結果、「ＣＬＫ」信号は、第１の直列の遅延要素（要素３０１Ａ〜３０１Ｄ）に入力され、第１の直列の遅延要素は、「ＣＬＫ」信号に対して第１の遅延を有する第１の出力信号を生成する。第１の出力信号は、ＭＵＸ３０４に入力Ａとして入力され、第２の直列の遅延要素（要素３０２Ａ〜３０２Ｄ）にも入力され、第２の直列の遅延要素は、「ＣＬＫ」信号に対して第２の遅延を有する第２の出力信号を生成する。第２の出力信号は、ＭＵＸ３０４に入力Ｂとして入力され、第３の直列の遅延要素（要素３０３Ａ〜３０３Ｄ）にも入力され、第３の直列の遅延要素は、「ＣＬＫ」信号に対して第３の遅延を有する第３の出力信号を生成する。第３の出力信号は、ＭＵＸ３０４に入力Ｃとして入力される。第１の出力信号、第２の出力信号および第３の出力信号はいずれも、粗遅延制御信号により、粗遅延段３０７のＭＵＸ３０４によって出力される信号として選択することができる。
【００３４】
粗遅延段３０７からの出力は、精密遅延段３０８に入力される。より具体的には、粗遅延段３０７のＭＵＸ３０４からの出力信号が、精密遅延段３０８の第１の遅延要素３０５Ａに入力される。遅延要素３０５Ａは、「ＣＬＫ」信号に対してある量の遅延を有する出力信号を生成する。遅延要素３０５Ａの出力は、ＭＵＸ３０６に入力「Ｄ」として入力され、また精密遅延段３０８の第２の遅延要素３０５Ｂに入力される。遅延要素３０５Ｂは、「ＣＬＫ」信号に対してさらに大きな遅延を有する出力信号を生成し、この出力信号は、ＭＵＸ３０６に入力「Ｃ」として入力され、精密遅延段３０８の第３の遅延要素３０５Ｃにも入力される。遅延要素３０５Ｃは、「ＣＬＫ」信号に対してさらに大きな遅延を有する出力信号を生成し、この出力信号は、ＭＵＸ３０６に入力「Ｂ」として入力され、精密遅延段３０８の第４の遅延要素３０５Ｄにも入力される。遅延要素３０５Ｄは、「ＣＬＫ」信号に対してさらに大きな遅延を有する出力信号を生成し、この出力信号は、ＭＵＸ３０６に入力「Ａ」として入力される。ＭＵＸ３０６の入力信号Ａ、Ｂ、ＣおよびＤはいずれも、精密遅延制御信号により、「遅延ＣＬＫ」信号としてＭＵＸ３０６によって出力される信号として選択することができる。
【００３５】
この例示的な実施形態では、粗遅延段３０７にそれぞれ直列をなす４つの遅延要素を示し、精密遅延段３０８に４つの遅延要素を示したが、他の実施形態では、各段に、様々な量の遅延を提供するために必要な任意の数の遅延要素を実装することができる。さらに、粗遅延段３０７に３つの直列の遅延要素を示しているが、他の実施形態では、この粗遅延段３０７に、様々な量の遅延を提供するために必要な任意の数の直列の遅延要素を実装することができる。
【００３６】
さらに、この実施形態により、選択した遅延要素によって生成される「遅延ＣＬＫ」信号を、チップの動作電圧Ｖ１に基づいて動的に変化させることができる。例えば、粗遅延制御部による出力にＭＵＸ３０４からの出力Ｂが選択され、精密遅延制御部による出力にＭＵＸ３０６から出力Ａが選択されるとすると、「遅延ＣＬＫ」信号は、１２個の遅延要素（すなわち、遅延要素３０１Ａ−Ｄ、３０２Ａ−Ｄ、および３０５Ａ−Ｄ）から生じる遅延を有する。この例の場合、１２個の遅延要素からの遅延は、「ＣＬＫ」のターゲット・クロック・サイクルの位相（例えば、２ＧＨｚクロック信号の位相）と一致するように選択される。遅延要素から出力されるこの「遅延ＣＬＫ」信号は、チップの動作電圧Ｖ１に基づいて動的に変化させることができる。より具体的には、チップの動作電圧Ｖ１の変化に応じるか（感度を有するか）どうかを各遅延要素ごとにプログラムによって制御するために、電圧追跡制御部１０５から出力される追跡信号が使用される。後で示す図４のグラフに例示するように、チップの動作電圧Ｖ１に応じて動的に変化させるように「遅延ＣＬＫ」信号の生成に関係するより多くの遅延要素をプログラムすることによって、チップの動作電圧の変化に対する「遅延ＣＬＫ」信号の感度を制御することができる。
【００３７】
図４は、１つの実施形態について、様々な異なるトラック信号設定値に関して図３の例示的な回路によって作成される遅延の感度を示すグラフを示す。より具体的には、図４は、異なるトラック信号設定値にそれぞれ対応する５つの曲線を示す。曲線は、５つの異なるトラック信号設定値に関して、チップの様々な異なる動作電圧（Ｖ１）値にわたって図３の例示的な遅延線回路により「遅延ＣＬＫ」信号に生成される遅延の量をプロットしている。この例では、チップのV_fixed（固定電圧）は１．１ボルトである。トラック信号設定値の設定に応じて、遅延された「ＣＬＫ」信号に生成される遅延の量は、チップの動作電圧Ｖ１がほぼV_fixedである値（この例では１．１ボルト）よりも低下または上昇したときに変化することができる。曲線はすべて、チップの動作電圧Ｖ１が１．１ボルト（V_fixed）のときに同じ遅延を提供する。
【００３８】
トラック信号の適切なビットを選択的に設定することによって、チップの動作電圧Ｖ１の特定の値に対して図３の回路によって生成される遅延の量を調整することができる。例えば、図４のグラフの曲線の１つによって示したように、トラック信号のすべてのビットを０に設定すると（すなわち、トラック［７：０］＝００００００００）、様々な異なるＶ１にわたって遅延「ＣＬＫ」に一定の遅延が提供される。したがって、図３の回路のすべての遅延要素に関して追跡モードが無効にされると、遅延線回路は、チップの動作電圧Ｖ１の変化に応答せず、図示の様々な動作電圧にわたって遅延「ＣＬＫ」に一定の遅延を生成する。
【００３９】
図４のグラフに示した第２の曲線は、トラック信号の最上位ビットが設定されたとき（すなわち、トラック［７：０］＝１０００００００）に様々な動作電圧にわたって生成される遅延の量に対応する。図３の回路では、これにより、遅延要素３０１Ａ、３０２Ａおよび３０３Ａが追跡モードになる。この場合、図４の対応する曲線で示したように、遅延は、チップの動作電圧の変化にある程度敏感である（すなわちある程度応答する）。
【００４０】
図４のグラフに示した第３の曲線は、トラック［７：０］＝１１００００００のときに様々な動作電圧にわたって生成される遅延の量に対応する。図３の回路では、これにより、遅延要素３０１Ａ、３０２Ａ、３０３Ａ、３０１Ｂ、３０２Ｂおよび３０３Ｂが追跡モードになる。この場合、遅延は、図４の対応する曲線で示したように、トラック［７：０］＝１０００００００のときよりもチップの動作電圧の変化に敏感である。
【００４１】
図４のグラフに示した第４の曲線は、トラック［７：０］＝１１００１０００のときに様々な動作電圧にわたって生成される遅延の量に対応する。図３の回路では、これにより、粗遅延段３０７の遅延要素３０１Ａ、３０２Ａ、３０３Ａ、３０１Ｂ、３０２Ｂ、３０３Ｂが追跡モードになり、精密遅延段３０８の遅延要素３０５Ａが追跡モードになる。この場合、図４の対応する曲線によって示したように、遅延は、トラック［７：０］＝１１００００００のときよりもチップの動作電圧の変化にさらに敏感になる。
【００４２】
図４のグラフに示した第５の曲線は、トラック信号のすべてのビットが１（すなわち、トラック［７：０］＝１１１１１１１１）に設定されたときに様々な動作電圧にわたって生成される遅延の量に対応する。図３の回路では、これにより、遅延要素３０１Ａ−Ｄ、３０２Ａ−Ｄ、３０３Ａ−Ｄ、および３０５Ａ−Ｄのすべてが追跡モードになる。この場合、図４の対応する曲線で示したように、遅延は、チップの動作電圧の変化にきわめて敏感である。
【００４３】
図５に移り、１つの実施形態による図３の単一遅延要素のような遅延回路の例示的な実施形態を示す。より具体的には、図５は、遅延要素３０１Ａの例示的な実施形態を示しており、図３の他の遅延要素３０１Ｂ−Ｄ、３０２Ａ−Ｄ、３０３Ａ−Ｄ、３０５Ａ−Ｄはそれぞれ同じように実施されることができる。後でさらに詳しく説明するように、遅延要素３０１Ａのこの例示的な実施形態は、反転器５０１および５０４、ｐＦＥＴ（ｐ形電界効果トランジスタ）５０２、５０３、５０７、５０８、５１０および５１２、ならびにｎＦＥＴ（ｎ形電界効果トランジスタ）５０６、５０９、５１１、および５１３を含む。このような反転器、ｐＦＥＴおよびｎＦＥＴは、当技術分野において周知である。一般に、ＦＥＴにおいて、電流は、チャネルと呼ばれる半導体経路に沿って流れる。チャネルの一端に、ソースと呼ばれる電極がある。チャネルの他端に、ドレインと呼ばれる電極がある。チャネルの物理的直径は一定であるが、ゲートと呼ばれる制御電極に電圧を印加することによって実際上の電気的直径を変化させることができる。ＦＥＴの導電性は、任意の所定の瞬間において、チャネルの電気的直径に依存する。ゲート電圧を少し変化させると、ソースからドレインへの電流を大きく変化させることができる。換言すると、ゲートに印加する電圧を変化させることによって、ＦＥＴの抵抗を変化させることができる。
【００４４】
反転器５０１は、入力として「トラック」信号を受け取り、信号「トラックＢ」を出力する。「トラック」信号は、図３に関して説明したように、この遅延要素３０１Ａに入力されるトラック信号のビットに対応する（すなわち、この例では、トラック［７］が、遅延要素３０１Ａに入力されるように示されている）。前述のように、遅延要素が受け取った「トラック」ビットは、必要に応じて、遅延要素を追跡モードにするために使用される。
【００４５】
反転器５０４は、図３に示したようなチップのクロック信号「ＣＬＫ」である信号「入力」を受け取る。すなわち、遅延要素３０１Ａの反転器５０４への「入力」信号は、チップのクロック信号「ＣＬＫ」である。当然ながら、図３に示したように、他の遅延要素への入力は、前の遅延要素の出力である。例えば、図３の遅延要素３０１Ｂの反転器５０４は、遅延要素３０１Ａから「出力」信号（すなわち、図５において遅延要素３０１Ａの「出力」と表示された信号）を受け取る。
【００４６】
さらに、ｐＦＥＴ５０２および５０３が、信号「変動供給電圧（variable_supply）」（本明細書では「Ｖ１」とも呼ぶ）を受け取って「反転変動供給電圧（variable_supply_inv）」を出力するアナログ反転器を提供する。「変動供給電圧（すなわち「Ｖ１」）」は、図１に関して考察したように、チップのコア回路に供給される変動電源電圧である。また、図示したように、一定電源電圧は、本明細書では基準電源と呼ばれ、図５で「V_fixed」と示されており、遅延要素３０１Ａの一部分に供給される。１つの例示的な実施形態において、図４に関して説明したように、「V_fixed」の電圧は１．１ボルトであり、アース（「ＧＮＤ」）は０ボルトであり、変動供給電圧は、０．７５ボルト〜１．２ボルトの間で変化することができる。当然ながら、他の実施形態において、「V_fixed」とＧＮＤの値を、回路に適した任意の値に設定することができる。ｎＦＥＴ５０２とｐＦＥＴ５０３の構成は、例えば「変動供給電圧」が一定供給電圧「V_fixed」よりも２００ミリボルト低い場合に、「反転変動供給電圧」がＧＮＤよりも２００ミリボルト高くなるようにアナログ反転器を提供する。より詳細には、ゲート接地ｐＦＥＴ５０３が抵抗器のように働き、ｐＦＥＴ５０２が通常のｐＦＥＴのように働き、その結果、「変動供給電圧」の値が「V_fixed」より低くとき、「反転変動供給電圧」はＧＮＤよりも高くなる。したがって、ｐＦＥＴ５０２および５０３はアナログ反転を行い、出力「反転変動供給電圧」の変化は、入力「変動供給電圧」の変化に比例する。
【００４７】
また、ｎＦＥＴ５０６およびｐＦＥＴ５０７は、伝達ゲート５０５を提供するように構成されている。後でさらに詳しく説明するように、伝達ゲート５０５の両端間の実効抵抗が、出力信号に与えられる遅延の量を制御する。伝達ゲート５０５の両端間の実効抵抗は、ｎＦＥＴ５０６とｐＦＥＴ５０７のゲートへの入力によって制御される。
【００４８】
後でさらに詳しく説明するように、遅延要素３０１Ａは、その遅延要素３０１Ａが追跡モードとしてアクティブであるかどうかによって（すなわち、遅延要素に入力される「トラック」信号ビットの値によって）２つの異なる方式の一方の方式で動作する。この例において、遅延要素のトラック・ビットがロー（すなわち、論理０）に設定されている場合、その遅延要素３０１Ａは追跡モードとしてアクティブではない。この事例では、伝達ゲート５０５のｎＦＥＴ５０６のゲートに「一定電圧」が提供され、伝達ゲート５０５のｐＦＥＴ５０７のゲートにアース（「ＧＮＤ」）が提供されている。一方、遅延要素のトラック・ビットがハイ（すなわち、論理１）に設定された場合は、この遅延要素３０１Ａが追跡モードであり、伝達ゲート５０５のｎＦＥＴ５０６のゲートに「変動供給電圧」が提供され、伝達ゲート５０５のｐＦＥＴ５０７のゲートに「反転変動供給電圧」が提供される。ｎＦＥＴ５０６とｐＦＥＴ５０７のゲートへの入力に応じて、通過ゲート５０５の両端間の抵抗が変化する。したがって、追跡モードがアクティブなとき、「変動供給電圧」信号と「反転変動供給電圧」信号が、伝達ゲート５０５の抵抗を制御し、したがって出力信号の遅延の量を制御する。より具体的には、この構成において、「変動供給電圧」信号が低くなるほど、出力信号が遅延される量が多くなる。別の状況において、追跡モードがアクティブでないとき、「V_fixed」とＧＮＤが、伝達ゲート５０５の抵抗を制御してその抵抗が一定のままになるようにし、それによりその遅延要素３０１Ａの出力信号の遅延が変化しないようにする。
【００４９】
遅延要素３０１Ａのこの例示的な実施形態の動作をさらに検討するために、トラック・ビットがロー（すなわち、論理０）に設定され、それによりこの遅延要素３０１Ａが追跡モードでないと想定する。この場合、反転器５０１から出力されるトラックＢ信号はハイ（すなわち、論理１）である。ローのトラック・ビット信号は、ｐＦＥＴ５１０のゲートに提供され、それによりこのｐＦＥＴ５１０を効果的にオンにし（すなわち、スイッチを閉じ）、トラックＢ信号は、ｐＦＥＴ５０８のゲートに提供され、それによりそのｐＦＥＴ５０８を効果的にオフにする（すなわち、スイッチを開く）。このように、「V_fixed」が、ｐＦＥＴ５１０を介して、伝達ゲート５０５のｎＦＥＴ５０６のゲートに提供される。さらに、トラック・ビット信号が、ｎＦＥＴ５０９のゲートに提供され、それによりこのｎＦＥＴ５０９に流れる電流が効果的に遮断され、トラックＢ信号が、ｎＦＥＴ５１１のゲートに提供され、それによりそのｐＦＥＴ５１１に効果的に電流が流れる。これにより、アース「ＧＮＤ」は、ｎＦＥＴ５１１を介して、伝達ゲート５０５のｐＦＥＴ５０７のゲートに提供される。したがって、追跡モードがアクティブでないとき、「V_fixed」とＧＮＤは、伝達ゲート５０５の抵抗を制御して、抵抗を一定ままにし、それにより遅延要素３０１Ａの出力信号の遅延が変化しないようにする。
【００５０】
次に、トラック・ビットがハイ（すなわち、論理１）に設定され、それにより遅延要素３０１Ａが追跡モードになると仮定する。この場合、反転器５０１から出力されるトラックＢ信号はロー（すなわち、論理０）である。ハイのトラック・ビット信号が、ｐＦＥＴ５１０のゲートに提供され、それによりそのｐＦＥＴ５１０は有効にオフになり、トラックＢ信号がｐＦＥＴ５０８のゲートに提供され、それによりそのｐＦＥＴ５０８が有効にオンになる。これにより、「変動供給電圧」が、ｐＦＥＴ５０８を介して、伝達ゲート５０５のｎＦＥＴ５０６のゲートに提供される。さらに、トラック・ビット信号が、ｎＦＥＴ５０９のゲートに提供され、それによりそのｎＦＥＴ５０９が有効にオンになり、トラックＢ信号がｎＦＥＴ５１１のゲートに提供され、それにより、そのｐＦＥＴ５１１が有効にオフになる。これにより、「反転変動供給電圧」が、ｎＦＥＴ５０９を介して伝達ゲート５０５のｐＦＥＴ５０７のゲートに提供される。前述のように、この構成において、伝達ゲート５０５によって出力信号に与えられる遅延は、変動供給電圧が減少するほど長くなる。より具体的には、ｎＦＥＴ５０６のゲートへの供給電圧が低くなり、ｐＦＥＴ５０７のゲートへの負の（またはアース）供給電圧が高くなるほど、遅延要素３０１Ａの「入力」から「出力」に送られるデータは遅くなる（すなわち、伝達ゲート５０５の実効抵抗が大きくなる）。
【００５１】
この例示的な実施形態は、さらにｐＦＥＴ５１２とｎＦＥＴ５１３を含み、このｐＦＥＴ５１２とｎＦＥＴ５１３は、反転器５０４の出力と駆動的に競合することによって伝達ゲート５０５の出力をさらに遅延させるように動作する。例えば、遅延要素３０１Ａが追跡モードでないとき、トラックＢ信号はハイ（すなわち、論理１）であり、これにより、前述のように、ｎＦＥＴ５１１がオンになってｐＦＥＴ５０７のゲートにＧＮＤが供給される。また、これにより、ＧＮＤがｎＦＥＴ５１１を介してｎＦＥＴ５１３のゲートに供給され、これにより、ｎＦＥＴ５１３が有効にオフになり（すなわち、スイッチが開かれ）、その結果それは出力には影響を与えない。また、追跡モードでないときは、前述のように、トラック・ビット信号はロー（すなわち、論理０）であり、これによりｐＦＥＴ５１０がオンになってｎＦＥＴ５０６のゲートに「V_fixed」が供給される。また、これにより、「V_fixed」がｐＦＥＴ５１０を介してｐＦＥＴ５１２のゲートに供給され、ｐＦＥＴ５１２が有効にオフになり（すなわち、スイッチが開かれ）、それは出力には影響を与えない。
【００５２】
一方、遅延要素３０１Ａが追跡モードの場合、トラックＢ信号はロー（すなわち、論理０）であり、これによりｎＦＥＴ５１１がオフになる（すなわち、スイッチが開かれる）。トラック・ビット信号がハイであり、これによりｎＦＥＴ５０９がオンにされ（すなわち、スイッチが閉じられ）、上述のように、ｐＦＥＴ５０７のゲートに「反転変動供給電圧」が供給される。また、これにより、「反転変動供給電圧」が、ｎＦＥＴ５０９を介してｎＦＥＴ５１３のゲートに供給される。前述のように、「変動供給電圧」が「V_fixed」よりも低いとき、「反転変動供給電圧」はＧＮＤよりも高く、「反転変動電源」がＧＮＤよりも高くなると、その「反転変動供給電圧」によってｎＦＥＴ５１３が部分的にオンになりえる。同様に、トラック・ビット信号がハイであるため、前述のように、トラックＢ信号がローであり、これによりｐＦＥＴ５０８がオンになりｎＦＥＴ５０６のゲートに「変動供給電圧」が供給される。またこれにより、「変動供給電圧」がｐＦＥＴ５０８を介してｐＦＥＴ５１２のゲートに供給され、それによりそのｐＦＥＴ５１２が部分的にオンになる。したがって、追跡モードのとき、伝達ゲート５０５からの出力信号は、その出力信号と駆動的に競合するｐＦＥＴ５１２とｎＦＥＴ５１３によってさらに遅延される。
【００５３】
図６は、１つの実施形態による図１の電圧−周波数変換回路１０４のようなオンチップ・クロック管理回路の動作流れ図を示す。動作ブロック６０１で、チップの遅延線回路１０７が、チップのクロック信号「ＣＬＫ」の最初の位相を受け取る。動作ブロック６０２で、遅延線回路１０７の図３と図５の遅延要素３０１Ａのような少なくとも１つの遅延要素が、受け取った「ＣＬＫ」信号の最初の位相に対して遅れた位相を有する遅延クロック信号（「遅延ＣＬＫ」）を生成する。動作ブロック６０３で、チップの比較回路１０９は、生成した「遅延ＣＬＫ」信号を、チップの「ＣＬＫ」信号の後の方の位相（すなわち、受け取った「ＣＬＫ」信号の最初の位相よりも時間的に遅い「ＣＬＫ」の位相）と比較する。動作ブロック６０４で、チップのクロック制御回路１１０は、生成した「遅延ＣＬＫ」信号とチップの「ＣＬＫ」信号の上記後の方の位相との比較に少なくとも部分的に基づいて、チップの「ＣＬＫ」信号の周波数を変更すべきかどうか決定する。
【００５４】
図７は、少なくとも１つの実施形態に従って、観察されたチップの動作電圧の変化に応じてチップの「ＣＬＫ」信号に対する遅延量を変化させることができる遅延「ＣＬＫ」信号を生成するように動作可能な、図３の回路例と同じようなオンチップ回路の動作流れ図を示す。ここでさらに説明するように、かかる遅延信号は、例えば、チップの「ＣＬＫ」信号の周波数を動的に管理する際に使用することができる。動作ブロック７０１で、オンチップ回路は、チップの動作電圧を観察する。例えば、図５に関して説明したように、遅延要素３０１Ａは、チップの動作電圧を受け取ることができる。動作ブロック７０２で、オンチップ回路は、クロック信号を受け取る。例えば、図５に関して説明したように、遅延要素３０１Ａは、入力としてチップの「ＣＬＫ」信号を受け取ることができる。動作ブロック７０３で、オンチップ回路は、受け取ったクロック信号に対してある遅延量を有する遅延クロック信号を生成する。この遅延量は、観察された動作電圧の変化に応じて変化するようにプログラム的に選択可能である。例えば、「遅延ＣＬＫ」信号を生成する際に遅延要素３０１Ａによって与えられる遅延の量を観察された動作電圧の変化に応じて変化させるべきかどうかを、図５に関して説明したように、その遅延要素に供給されるトラック信号によってプログラム的に設定することができる。
【００５５】
図８は、チップの製造後にクロック管理回路を特にチップに合わせ、それにより製造されたときのチップの特定の特性（例えば、電気的特性など）を考慮できるようにクロック管理回路をチップ上に実装するための動作流れ図を示す。動作ブロック８０１で、図１の回路例１０４のように、観察されたチップの変動動作供給電圧の変化に応じてチップのクロック信号を動的に管理するためのクロック管理回路を含むチップを作成する。動作ブロック８０２で、例えば図３〜図５に関して前述したトラック信号を使用して、作成したチップ上のクロック管理回路の感度を、観察されたチップの変動動作電圧の変化に合わせるようにプログラムする。例えば、図３〜図５のトラック信号を使用して、（すべての遅延要素ついて追跡モードをディスエーブルにすることによって）クロック管理回路を観察されたチップの変動動作電圧の変化に応答しない（すなわち、感度を有しない）ようにすることができ、または、そのようなトラック信号をある値に設定して、チップの変動動作電圧に対するクロック管理回路の感度を任意の所望の大きさに調整することができる。
【００５６】
前述の実施形態は、クロック信号を動的に変化させるシステムおよび方法を提供する。より具体的には、特定の実施形態は、回路（例えば、チップ）のクロック信号の周波数を、観察された回路の動作電圧の変化に応じて動的に変化させるシステムおよび方法を提供する。特定の実施形態において、クロック信号を受け取り、回路の動作電圧に少なくとも部分的に基づいた量だけクロック信号から遅延した遅延クロック信号を生成するように動作可能な遅延線回路が提供される。例えば、チップのクロック信号「ＣＬＫ」は、クロック駆動による動作（たとえば、クロック同期動作）の実行に使用するためにチップのコア回路１１１に供給され、また変動動作電圧Ｖ１は、チップのコア回路１１１に供給される。遅延線回路１０７は、クロック信号「ＣＬＫ」を受け取り、チップのコア回路１１１の観察された動作電圧Ｖ１に少なくとも部分的に基づいて遅延クロック信号「遅延ＣＬＫ」を生成することができる。例えば、変動動作電圧が低いほど、チップのクロック信号に対する遅延クロック信号の遅延の量が大きくなる。次に、遅延クロック信号をクロック信号と比較して（例えば、遅延クロック信号の位相をクロック信号の位相と比較して）、チップのクロック信号の周波数を調整する（例えば、増減する）べきかどうかを決定することができる。こうして、観察された動作電圧に基づいてチップのクロック周波数を動的に変化させることができる。
【００５７】
前述のように、特定の実施形態は、マイクロプロセッサなどの、チップ１０３のためのプログラム可能遅延線回路１０７を実装する。このプログラム可能遅延線回路１０７は、図３と図５に関して上述した遅延要素３０１Ａのように、チップの変動動作電圧Ｖ１に基づいて遅延クロック信号に遅延を与えるために各々を選択的にアクティブにすることができる複数の遅延回路（または、「要素」）を含むことができる。したがって、受け取ったクロック信号に遅延を与えるように選択された遅延要素が多いほど、生じる遅延クロック信号に与えることができる遅延の量が多くなる。複数の遅延要素のうちの任意の１つまたは複数がチップの動作電圧Ｖ１の変動に応じて変化する遅延を与えるかどうを選択的に制御するために、制御信号（または、「トラック」信号）を使用することができる。チップの動作電圧に応じて遅延量を変化させるために遅延要素が選択されているとき、それは、本明細書では「追跡モード」で動作していると呼ばれる。
【００５８】
デジタル回路の速さは、動作供給電圧（動作電源電圧）、動作温度、およびその製造において生じた処理効果を含む様々な因子に依存する。例えば、デジタル回路は、一般に、電源電圧が高くなるほど動作が早くなり、電源電圧が低くなるほど動作が遅くなる。したがって、任意の所与の時間におけるチップの動作電圧に対してチップのクロック信号の周波数を動的に最適化するのが望ましい場合がある。前述のように、いくつかの実施形態は、それを行うためだけ、すなわち、任意の所与の時間に観察されたチップの動作電圧（または、「変動供給電圧」）に対してチップのクロック信号の周波数を動的に最適化するために、チップ上にクロック最適化回路（または、「電圧−周波数変換回路」または「クロック管理回路」）を設ける。
【００５９】
いくつかの実施形態によれば、デジタル回路の速さを測定するためにプログラム可能遅延線路が実装される。前述のように、いくつかの実施形態において、そのようなプログラム可能遅延線路１０７は、チップの電流動作電圧Ｖ１に基づいてチップのクロック速度を最適化するためにチップに実装されたクロック最適化回路１０４に含まれてもよい。例えば、１つの例示的な実施形態において、プログラム可能遅延線路１０７は、位相比較器１０９と共にチップ上に実装され、そのような回路は、チップについて観察された所与の動作電圧Ｖ１に対してチップのクロック周波数を最適化するために、システム・クロック・コントローラ１１０への信号を生成するために使用される。デジタル回路の速さを測定することが望ましい様々なタイプのシステムにおいて、このプログラム可能遅延線路１０７は、デジタル回路の速さを効果的に測定するためにデジタル回路と同じダイ上に実装されてもよく、その測定結果を利用して、例えばデジタル回路の速さ（すなわち、クロック周波数）を所望の方式（例えば、消費電力の制御のためにクロック周波数を最適化する方式）で動的に変化させることができる。
【００６０】
クロック最適化回路の一実施形態の動作において、チップのコア回路１１１に供給される変動動作電圧Ｖ１に少なくとも部分的に基づいて遅延クロック信号を生成するために、チップ上にプログラム可能遅延線路１０７が実装される。例えば、クロック信号「ＣＬＫ」が、クロック制御回路１１０によって生成され、このクロック信号「ＣＬＫ」は、クロック駆動動作（例えば、クロックに同期した動作）の実行に使用するためにチップのコア回路１１１に提供される。また、クロック信号「ＣＬＫ」は、プログラム可能遅延線回路１０７に入力され、プログラム可能遅延線回路１０７は、チップの変動動作電圧Ｖ１（チップのコア回路に供給される）に基づいて、遅延クロック信号（「遅延ＣＬＫ」）を生成する。例えば、動作電圧Ｖ１が低くなるほど、プログラム可能遅延線回路１０７によって生成される遅延クロック信号の遅延が長くなる。
【００６１】
位相比較器１０９を利用して、生成された遅延クロック信号をクロック信号の次の位相と比較して、クロック信号の周波数を調整する（例えば、増減する）べきかどうかを決定することができ、クロック信号コントローラ１１０は、それに従ってクロック信号の周波数を調整することができる。したがって、一般に、動作電圧Ｖ１が低くなると、遅延クロック信号の遅延が大きくなるが、これは、チップのクロック信号の周波数と比較したときにクロック信号が速すぎ、それにより（低くなった動作電圧Ｖ１がクロック信号の周波数をサポートできるように）クロック信号を遅くしなければならないこと示す。一方、動作電圧Ｖ１が高くなると、遅延クロック信号の遅延が小さくなるが、これは、チップのクロック信号の周波数と比較したときにクロック信号が遅すぎ、これにより（チップのクロックが高くなった動作電圧Ｖ１がサポートする最適な周波数で動作するように）クロック信号を速くしなければならないことを示す。
【００６２】
前述のように、いくつかの実施形態において、「トラック」信号を使用して遅延線回路１０７をプログラムすることができる。例えば、図３〜図５に関して上述したように、複数の遅延要素を実装し、必要に応じてその遅延要素のうちのどれを「追跡モード」動作にするかを指定するためにトラック信号を使用することができる。追跡モードにされた遅延要素が多いほど、変動動作電圧Ｖ１の変動に対する遅延線回路１０７の感度が高くなる。例えば、１つの遅延要素が追跡モードの場合、遅延クロック信号の遅延は、動作電圧Ｖ１が低くなるほど大きくなり、２つの遅延要素が追跡モードの場合、遅延クロック信号の遅延は、動作電圧Ｖ１の変化により敏感になる（例えば、動作電圧Ｖ１が所与の大きさだけ低下した場合に遅延クロック信号の遅延が大きくなる）。したがって、かかるプログラム可能遅延線回路１０７を、チップ１０３を製造した後で、特にそのチップ１０３に遅延を合わせるようにプログラムすることができ、それによりチップの真の特性が考慮される。すなわち、チップの動作電圧Ｖ１の変化に対するチップのクロック信号の感度は、その特定のチップ１０３に合わせるようにプログラムすることができる。
【００６３】
前に図５によって説明したように、特定の実施形態において、チップ上に実装された各遅延要素は、トラック信号の値に依存して一定の供給電圧と変動供給（動作）電圧のどちらかが提供される伝達ゲートを含む。例えば、ある遅延要素と関連したトラック信号が１に設定された場合は（追跡モードにするため）、その遅延要素の伝達ゲートに変動動作電圧が提供され、トラック信号が０に設定された場合は（追跡モードを解除するため）、その遅延要素の伝達ゲートに一定の供給電圧が提供される。入力信号（例えば、チップのクロック信号）の遅延の量を制御して遅延されたクロック信号を生成するために、伝達ゲートに提供される供給電圧によって伝達ゲートの抵抗が効果的に制御される。例えば、伝達ゲートに変動動作電圧が提供される場合（すなわち、遅延要素が追跡モードのとき）、その遅延要素が入力クロック信号を遅延させる量は、動作電圧が低くなるほど大きくなり、またその逆も成り立つ。
【００６４】
本発明による少なくとも１つの実施形態において、システムは、クロック信号を利用して動作を実行するための手段(111)を備える。システムはさらに、その実行手段に変動する動作電圧を供給するための手段(101)と、その変動する動作電圧の観察された変化に応答してクロック信号の周波数を動的に変更するための手段(104)を備える。
【図面の簡単な説明】
【００６５】
【図１】チップのクロック信号を動的に変化させるための１実施形態の実施例を含むシステムの一部分を示す図である。
【図２Ａ】チップのクロック信号を管理するために電圧−周波数変換器の１実施形態における、チップのクロック信号を遅延クロック信号と比較するときに遭遇する可能性のある例示的なシナリオを示す図である。
【図２Ｂ】チップのクロック信号を管理するために電圧−周波数変換器の１実施形態における、チップのクロック信号を遅延クロック信号と比較するときに遭遇する可能性のある例示的なシナリオを示す図である。
【図２Ｃ】チップのクロック信号を管理するために電圧−周波数変換器の１実施形態における、チップのクロック信号を遅延クロック信号と比較するときに遭遇する可能性のある例示的なシナリオを示す図である。
【図３】１実施形態による、図１の電圧−周波数変換器の一部分の実施例を示す図である。
【図４】１実施形態による、様々な異なるトラック信号設定値に対して図３の回路例によって生成される遅延の感度を示すグラフである。
【図５】１実施形態による図３の電圧−周波数変換器の遅延要素の実施例を示す図である。
【図６】１実施形態の例示的な動作流れ図である。
【図７】１実施形態によるもう１つの例示的な動作流れ図である。
【図８】１実施形態によるプログラム可能なオンチップ・クロック管理回路を実施するための例示的な動作流れ図である。
【符号の説明】
【００６６】
１００  システム
１０１  電源（供給電圧）
１０３  チップ
１０４  電圧−周波数変換回路
１０５  電圧追跡制御部
１０７  プログラム可能遅延線路
１１１  コア回路
【図１】
2005141757.tif 000003
【図２Ａ】
2005141757.tif 000004
【図２Ｂ】
2005141757.tif 000005
【図２Ｃ】
2005141757.tif 000006
【図３】
2005141757.tif 000007
【図４】
2005141757.tif 000008
【図５】
2005141757.tif 000009
【図６】
2005141757.tif 000010
【図７】
2005141757.tif 000011
【図８】
2005141757.tif 000012