(57)【特許請求の範囲】
【請求項１】
コアクロックイネーブル信号のセットをクロック分周器回路に入力し、クロック信号を前記クロック分周器回路のトランスミッションゲートマルチプレクサに入力することと、
プロセッサコアでの電圧降下を検出したことに応じて、２つのストレッチイネーブル信号のうち何れかを選択するための選択信号として機能するように、入力クロック信号を送るストレッチアサート信号を前記クロック分周器回路に提供することと、
選択されたストレッチイネーブル信号に基づいて出力クロック信号を生成することであって、前記選択されたストレッチイネーブル信号は、前記コアクロックイネーブル信号のセットをオーバーライドして、前記出力クロック信号のクロック周波数のストレッチを強制する、ことと、を含む、
方法。
【請求項２】
前記コアクロックイネーブル信号のセットを変更して前記ストレッチイネーブル信号を生成することを含む、
請求項１の方法。
【請求項３】
前記コアクロックイネーブル信号のセットを変更することは、
前記コアクロックイネーブル信号のセットを前記クロック分周器回路内で論理的に組み合わせて前記ストレッチイネーブル信号を生成することを含む、
請求項２の方法。
【請求項４】
前記プロセッサコアでの電圧降下を検出した後に、前記プロセッサコアでの電圧上昇を検出したことに応じて、前記ストレッチアサート信号をデアサートして、前記コアクロックイネーブル信号のセットに基づいて前記出力クロック信号を生成することを含む、
請求項２の方法。
【請求項５】
前記出力クロック信号を生成することは、
前記出力クロック信号の周波数を、第１周波数から前記第１周波数よりも小さい第２周波数に変更することを含む、
請求項１の方法。
【請求項６】
前記プロセッサコアでの電圧降下を検出した後に、前記プロセッサコアでの電圧上昇を検出したことに応じて、前記出力クロック信号を、前記第２周波数から前記第２周波数よりも大きい第３周波数に変更することを含む、
請求項５の方法。
【請求項７】
コアクロックイネーブル信号のセットを生成することと、
前記コアクロックイネーブル信号のセットをクロック分周器回路に入力することと、
前記コアクロックイネーブル信号のセットに基づいて第１周波数の第１出力クロック信号を生成することと、
プロセッサコアでの電圧降下を検出したことに応じて、２つのストレッチイネーブル信号のうち何れかを選択するための選択信号として機能するように、トランスミッションゲートマルチプレクサに入力クロック信号を送るストレッチアサート信号を提供することと、
選択されたストレッチイネーブル信号に基づいて第２出力クロック信号を生成することであって、前記選択されたストレッチイネーブル信号は、前記コアクロックイネーブル信号のセットをオーバーライドして、前記第２出力クロック信号のクロック周波数のストレッチを強制する、ことと、を含む、
方法。
【請求項８】
前記コアクロックイネーブル信号のセットを変更してストレッチイネーブル信号を生成することを含む、
請求項７の方法。
【請求項９】
前記プロセッサコアでの電圧降下を検出したことに応じて、前記第２出力クロック信号の周波数を前記第１周波数から前記第１周波数よりも小さい第２周波数に変更することを含む、
請求項７の方法。
【請求項１０】
前記電圧降下の後に、前記プロセッサコアでの電圧上昇を検出したことに応じて、前記第２出力クロック信号の周波数を前記第２周波数から前記第２周波数よりも大きい第３周波数に変更することを含む、
請求項９の方法。
【請求項１１】
前記プロセッサコアでの電圧降下を検出した後に、前記プロセッサコアでの電圧上昇を検出したことに応じて、前記ストレッチアサート信号をデアサートして、前記コアクロックイネーブル信号のセットに基づいて前記第２出力クロック信号を生成することを含む、
請求項７の方法。
【請求項１２】
プロセッサコアと、
前記プロセッサコアでの電圧降下を検出するドループ検出器回路と、
コアクロックイネーブル信号のセットと入力クロック信号とを受信するクロック分周器回路であって、電圧降下を検出したことに応じて、２つのストレッチイネーブル信号のうち何れかを選択するための選択信号として機能するように、入力クロック信号を送るストレッチアサート信号を受信し、前記コアクロックイネーブル信号のセットをオーバーライドしてクロック周波数のストレッチを強制することによって、選択されたストレッチイネーブル信号に基づいて出力クロック信号を生成するクロック分周器回路と、を備える、
プロセッサ。
【請求項１３】
前記クロック分周器回路は、前記２つのストレッチイネーブル信号のうち何れかを選択するためのトランスミッションゲートマルチプレクサを含む、
請求項１２のプロセッサ。
【請求項１４】
前記クロック分周器回路は、前記コアクロックイネーブル信号のセットを前記クロック分周器回路内で論理的に組み合わせて前記２つのストレッチイネーブル信号を生成する、
請求項１３のプロセッサ。
【請求項１５】
前記クロック分周器回路は、前記ドループ検出器回路が前記プロセッサコアでの電圧降下を検出したことに応じて、前記出力クロック信号の周波数を、第１周波数から前記第１周波数よりも小さい第２周波数に変更する、
請求項１２のプロセッサ。
【請求項１６】
前記クロック分周器回路は、前記ドループ検出器回路が電圧降下を検出した後に、前記プロセッサコアでの電圧上昇を検出したことに応じて、前記出力クロック信号を、前記第２周波数から前記第２周波数よりも大きい第３周波数に変更する、
請求項１５のプロセッサ。
【請求項１７】
前記クロック分周器回路は、
前記出力クロック信号の立ち上がりエッジレート又は立ち下りエッジレートのうち少なくとも一方を変更するように構成されたデューティサイクル調整器を含む、
請求項１２のプロセッサ。
【請求項１８】
前記デューティサイクル調整器は、少なくとも１つの強度制御インバータ（strength-controller inverter）を含む、
請求項１７のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
集積回路（ＩＣ）マイクロプロセッサデバイス等のデータ処理デバイスは、単一の半導体ダイに製造された多数のデータサブシステムを含むことができる。例えば、ＩＣマイクロプロセッサデバイスは、中央処理装置に加えて、メモリインタフェースサブシステムとグラフィックスアクセラレーションサブシステムとを含むことができる。各データサブシステムは、データプロセッサとして動作することができ、異なる動作周波数の制限を含むことができる。したがって、各データサブシステムが、別のデータサブシステムの周波数と異なり得る各々の周波数で動作するように構成されている場合には、マイクロプロセッサデバイスの計算性能は、通常、改善される。さらに、特定のデータサブシステムが動作を継続している間に当該特定のデータサブシステムの動作周波数を効率的に変更することができると有利である。例えば、マイクロプロセッサは、データサブシステムに提供されるクロック信号の周波数を変更することによって、アクティブ又は公称電力動作モードと低電力動作モードとの間でデータサブシステムを移行させることができる。
【０００２】
添付図面を参照することによって、本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同一の符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】少なくともいくつかの実施形態による、クロック分周器を利用する処理システムのブロック図である。
【図２】いくつかの実施形態による、図１のプロセッサコアの一部のブロック図である。
【図３】いくつかの実施形態による、様々なクロック信号の波形図である。
【図４】いくつかの実施形態による、クロック信号を生成するために使用されるイネーブル信号を調整することによって、電圧ドループに応じてプロセッサでクロック信号を調整する方法のフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図４は、例えば、プロセッサでの電力モードの変化に関連するクロックのランプアップ（ramp ups）及びダウンをサポートするためのクロック分周器を実装する技術を開示している。クロック分周器は、クロックのランプアップ／ダウン用の分周クロックを制御するマルチプレクサを備えたカスケードフリップフロップを使用して構成することができる。しかしながら、クロックパスにフロップを追加するとジッタが増大し、プロセッサの少なくとも１つのモジュールに適用され得る最大クロック周波数（Ｆｍａｘ）に影響が及ぶ。したがって、いくつかの実施形態では、クロック分周器回路は、クロック信号（ＣｌｋＩｎ）が２つのイネーブル（ＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢ）入力の何れかを選択する選択信号として機能するトランスミッションゲートマルチプレクサ（ｍｕｘ）を含む。クロック除数は、例えば、イネーブル入力に加えられるＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢビットを変調することによって、０．５の除数増分（例えば、１．０、１．５、２．０、２．５等）で調整することができる。閾値粒度（例えば、０．５の除数増分）でクロック分周を行うことによって、クロック分周器は、ＣＣ６のエントリ／イグジット及びスキャンシフトリセットのエントリ／イグジットの間、より遅いクロックのランプアップ／ダウンをサポートする。クロック分周器によってイネーブルされるクロック周波数の遅いランプアップ／ダウンによって、本明細書でｄｉ／ｄｔと呼ばれる場合がある電源電流の急速な変化に関連する問題の緩和を提供する。
【０００５】
クロック分周器は、電源ドループを検出することによってトリガされるストレッチアサート信号（例えば、ＳｔｒｅｔｃｈＥｎ）を受信すると、コアクロックイネーブル信号の既存の有効なストリームを変更することによって、レイテンシを減少させたクロックストレッチを可能にする。動作中に、ＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢビットは、クロック周波数のストレッチを強制するために、ＳｔｒＥｎアサート（電源ドループによってトリガされる）によって上書きされてもよい。さらに、いくつかの実施形態では、クロック分周器は、デューティサイクルの調整を可能にするデューティサイクル調整器をマルチプレクサ内に含む。クロック分周器内にデューティサイクル調整器を設けることによって、デューティサイクルの調整をサポートするためのさらなるステージを追加することを回避し、これによってジッタが減少する。
【０００６】
図１は、少なくともいくつかの実施形態による、クロック分周器を利用する処理システム１００のブロック図である。図示した例では、処理システム１００は、コンピュートコンプレックス１０２（「コアコンプレックス」としても知られている）と、キャッシュ階層１０４と、メモリコントローラ１０６と、サウスブリッジ１０８と、を含む。コンピュートコンプレックス１０２は、図１の例に示す４つのプロセッサコア１１１，１１２，１１３，１１４等の複数のプロセッサコアを含む。プロセッサコアは、中央処理装置（ＣＰＵ）コア、グラフィックス処理装置（ＧＰＵ）コア、デジタル信号プロセッサ（ＤＳＰ）コア、又は、これらの組み合わせを含むことができる。コンピュートコンプレックス１０２のプロセッサコアの数は、４つ未満であってもよいし、４つより多くてもよいことが理解されるであろう。
【０００７】
メモリコントローラ１０６は、キャッシュ階層１０４とシステムメモリ１１０との間のインタフェースとして動作する。したがって、キャッシュ階層１０４にキャッシュされるデータは、通常、「キャッシュライン」と呼ばれるデータのブロックとして操作され、システムメモリ１１０の物理アドレスを使用してメモリ階層にアドレス指定されるか配置される。キャッシュラインは、キャッシュ階層１０４からのメモリ要求に応じて、メモリコントローラ１０６によってシステムメモリ１１０からアクセスされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層１０４からエビクトされ、システムメモリ１１０で更新される必要がある場合に、メモリコントローラ１０６は、このライトバックプロセスを管理する。サウスブリッジ１０８は、キャッシュ階層１０４と、メモリコントローラ１０６と、処理システム１００の１つ以上の周辺機器（図示省略）（例えば、ネットワークインタフェース、キーボード、マウス、ディスプレイ、及び、他の入出力デバイス）との間のインタフェースとして動作する。
【０００８】
キャッシュ階層１０４は、２つ以上のレベルのキャッシュを含む。図示した例では、キャッシュ階層１０４は、３つのキャッシュレベル（すなわち、レベル１（Ｌ１）、レベル２（Ｌ２）及びレベル３（Ｌ３））を含む。Ｌ１に関して、コアコンプレックス１０２は、プロセッサコア毎に小さなプライベートキャッシュを実装しており、これらは、Ｌ１キャッシュ１２１，１２２，１２３，１２４として示されており、図１に示すように、対応するプロセッサコア１１１〜１１４に関連付けられている。Ｌ２に関して、コアコンプレックス１０２は、プロセッサコア毎により大きなプライベートキャッシュを実装しており、これらは、図１に同様に示すように、プロセッサコア１１１〜１１４にそれぞれ対応するＬ２キャッシュ１３１，１３２，１３３，１３４として示されている。Ｌ２キャッシュ１３１〜１３４の各々は、対応するプロセッサコアにとってプライベートであるが、キャッシュ階層１０４は、Ｌ２キャッシュ１３１〜１３４間のコヒーレンシを維持するように動作する。いくつかの実施形態では、Ｌ２キャッシュ１３１〜１３４は、ダイレクトマッピングされてもよいし、ｎウェイセットアソシアティブキャッシュであってもよい。Ｌ３キャッシュレベルに関して、キャッシュ階層１０４は、コアコンプレックス１０２のプロセッサコアによって共有され、これにより、少なくともＬ２キャッシュ１３１〜１３４によって共有されるＬ３キャッシュ１４０を実装する。Ｌ３キャッシュ１４０のコンポーネントは、少なくとも１つのレベルシフタ１４２を含むが、これに限定されない。図３に示すようないくつかの実施形態では、Ｌ３キャッシュ１４０は、プロセッサコア１１１〜１１４が異なる周波数及び／又は電圧を有する場合等に、プロセッサコア毎に１つのレベルシフタ１４２を含む。
【０００９】
図１に示すように、４つのプロセッサコア１１１，１１２，１１３，１１４の各々（例えば、プロセッサコア１１４）は、クロックメッシュ１５４（「メッシュクロック」又は「クロックツリー」としても知られる）と、デジタル周波数合成ロジック（ＤＦＳ）１６４と、ＣＫＧＥＮロジック１７４と、離散フーリエ変換（ＤＦＴ）ロジック１８４と、を含む。プロセッサコア１１４は、一般に、命令セット（例えば、コンピュータプログラム）を実行して、電子デバイスのために動作を行うように構成されている。プロセッサコアは、命令セットを実行するために、フェッチステート、ディスパッチステージ、実行ユニット、メモリコントローラ、入出力インタフェース、キャッシュ等の１つ以上のモジュールを含む。これらのモジュールの各々は、同期ロジック素子、ロジックゲート及び他のコンポーネントから構成されている。プロセッサコア１１４は、１つ以上のクロック信号を用いて、これらのコンポーネントの動作を同期させる。いくつかの実施形態では、プロセッサコア１１４は、同期バージョンのクロック信号をＬ３キャッシュから受信し、クロックメッシュ１５４は、様々なバージョンのクロック信号をプロセッサコア１１４の様々なコンポーネントに分配する。
【００１０】
Ｌ３キャッシュ１４０のレベルシフタ１４２は、ＰステートクロックをＣＫＧＥＮロジック１７４に提供する。ＣＫＧＥＮロジック１７４は、プロセッサコア１１４のクロックスピード及び電力モードの変化（例えば、Ｃステートの変化）に起因する電源電流の変化（すなわち、ｄｉ／ｄｔイベント）に関連する問題を管理する。いくつかの実施形態では、ＤＦＳ１６４は、Ｃステート及びスキャンシフトリセットの挙動を管理するための２相ＤＦＳである。ＤＦＳ１６４は、プロセッサコア１１４の様々なモジュールに対してクロック分周（Ｃステートのエントリ及びイグジットのためのクロックのランプアップ又はダウン、スキャンシフトリセットのためのクロック分周及びドループに対する２相ストレッチ等の動作を含む）を実行する。図２に関してさらに説明するように、各ＤＦＳ１６４は、クロックのランプ、分周及びストレッチの個別制御を各プロセッサコアに提供するクロック分周器回路及びデューティサイクル調整器を含む。
【００１１】
少なくとも１つの実施形態では、プロセッサコア１１１，１１２，１１３，１１４は、クロック周波数を緩やかにランプさせて、スキャンシフトリセット中やＣステートのエントリ及びイグジットの場合のｄｉ／ｄｔ問題を抑制する。高周波に直接切り替えると、消費電力の変化が大きくなり、関連するｄｉ／ｄｔの問題が生じる。特に、プロセッサコア１１４を起動する場合、スキャンシフト周波数電力は、電力接続が緩やかになる（例えば、オフから最大電力まで１００ｎｓ以上）ようにすべきである。例えば、ＣＣ６のイグジット（すなわち、所定の低電力モードからのイグジット）の間、コアクロックは、オフステートから最大周波数に切り替わる。ＤＦＳ１６４内のクロック分周器回路は、大きな除数から開始し、除数を徐々に減少させることにより、クロック周波数を徐々にランプアップさせる。したがって、出力クロック信号の周波数は、除数によって変化する。同様に、ＣＣ６のエントリの間、ＤＦＳ１６４は、小さい除数から開始し、除数を徐々にランプアップさせることにより、同様にコアクロックをランプさせる。他の実施形態では、スキャンシフトリセットへの切り替えは、ＣＣ６のエントリ及びイグジットと同様の方法でコアクロックをランプダウン／アップさせる。
【００１２】
いくつかの実施形態では、電源からの消費電力の変化によって生じる電源ドループによって、最大クロック周波数（Ｆｍａｘ）が低下し、又は、特定の周波数に必要なプロセッサ１１１，１１２，１１３，１１４を動作させるのに必要な電圧（例えば、電圧識別Ｖｉｄ）の上昇をもたらす。電源ドループの影響は、電源ドループの検出時にクロックをストレッチすることによって低減することができる。したがって、ストレッチ制御モジュール（図示省略）は、プロセッサコア１１４内の１つ以上の位置での電源電圧が指定された閾値量だけ低下したのを検出したことに応じて、クロック信号が「ストレッチされる」べきか（すなわち、電圧ドループに応じてクロック信号の周波数を減少させるべきか）を知らせるために、ストレッチ信号を生成する。例えば、ドループ検出器回路からストレッチアサート信号（すなわち、ＳｔｒｅｔｃｈＥｎ）を受信すると、ＤＦＳ１６４は、クロック信号をストレッチし、これにより、検出された電圧ドループに応じてクロック信号の周波数を変化させる。クロックの伸長を実行することによって消費電力が減少し、これにより、ドループが低減し、プロセッサ内のロジックを次のクロックエッジの前に安定させるための時間を長くかけることができる。クロックパス上のプロセス変動によって発生するデューティサイクルの圧縮は、Ｆｍａｘに影響を与える。したがって、位相タイミングパスは、クロックのデューティサイクルに影響される。いくつかの実施形態では、ＤＦＳ１６４は、シリコン内のデューティサイクルを変調するヒューズ制御デューティサイクル調整器をさらに含む。
【００１３】
図２は、いくつかの実施形態による、図１のプロセッサコア１１４の一部２００のブロック図である。この一部２００は、クロック分周器回路２０２を含む。この回路は、デューティサイクル調整器２０４と、クロック信号（ＣｌｋＩｎ）が２つのイネーブル入力のうち何れかを選択する選択信号として作用するトランスミッションゲートマルチプレクサ（ｍｕｘ）２１０と、を含む。クロック分周器回路２０２は、ラッチ２１２，２２２，２３２と、ＯＲゲート２４２，２５２と、ＡＮＤゲート２６２，２７２と、デューティサイクル調整器２０４と、トランスミッションゲートマルチプレクサ（ｍｕｘ）２１０と、を含む。図１に関して上述したように、プロセッサコア１１４は、Ｌ３キャッシュ１４０のレベルシフタ１４２からＰステートクロック周波数（例えば、ＣｌｋＩｎ及びＣｌｋＸ）を受信する。コアクロック（ＣＣＬＫ）イネーブル信号（ＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢ）は、ＤＦＳ１６４内の立ち上がりエッジフロップへのセットアップ時間を満たすように、ＣＫＧＥＮ（例えば、図１のＣＫＧＥＮ１７４）内の立ち上がりエッジフロップから駆動される。ＤＦＳ１６４のラッチ２０６，２０８の各々は、ＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢ信号を受信し、これらに対して動作する。ラッチ２０６は、イネーブル信号ＣＫＧＥＮ＿ＥｎａｂｌｅＡを受信するためのデータ入力と、クロック信号ＣｌｋＸを受信するためのクロック入力と、出力と、を含む。ラッチ２０８は、イネーブル信号ＣＫＧＥＮ＿ＥｎａｂｌｅＢを受信するためのデータ入力と、クロック信号ＣｌｋＸを受信するためのクロック入力と、出力と、を含む。
【００１４】
動作中、２つのストレッチイネーブルＥＮ信号（すなわち、Ｓｔｒ＿ＥＮＡ、Ｓｔｒ＿ＥＮＢ）のうち何れかを選択するクロックストレッチを可能にするために、電源ドループが検出されるとストレッチアサート信号（すなわち、ＳｔｒｅｔｃｈＥｎ）がアサートされる。０．５の増分（例えば、１．０、１．５、２．０、２．５等）でクロックを任意に分周することは、ＥＮビットを変調することによって実施することができる。ＳｔｒｅｔｃｈＥｎ信号を受信すると、ＳｔｒＥｎのアサートによって、ＣＫＧＥＮ＿ＥｎａｂｌｅＡビット及びＣＫＧＥＮ＿ＥｎａｂｌｅＢビットがオーバーライドされ、単一サイクルの１００％ストレッチが強制的に行われる。システムは、ＳｔｒｅｔｃｈＥｎがハイになる場合、ＣＫＧＥＮ＿ＥｎａｂｌｅＡ＝１及びＣＫＧＥＮ＿ＥｎａｂｌｅＢ＝０となるように設計されている。クロック分周器回路２０２は、０．５の粒度（１．０、１．５、２．０、２．５等）でクロック分周を行うことによって、ＣＣ６のエントリ／イグジット及びスキャンシフトのエントリ／イグジットの間、クロックのランプアップ／ランプダウンをサポートする。したがって、クロック分周器回路２０２は、クロック（すなわち、ＣｌｋＸ）が２つのＥＮ入力（及び、２つのＥＮ入力を制御する関連ロジック）のうち何れかを選択するセレクト（select）として作用するトランスミッションゲートマルチプレクサ２１０を構成する。クロック分周器回路２０２によって可能になるクロック周波数の遅いランプアップ／ダウンによって、ｄｉ／ｄｔの緩和が提供される。
【００１５】
また、クロック分周器回路２０２は、最終的なＥＮ入力をマルチプレクサ２１０に提供するデューティサイクル調整器２０４を含む。送信ゲートを駆動するインバータのｐチャネル電界効果トランジスタ（ｐＦＥＴ）及びｎチャネル電界効果トランジスタ（ｎＦＥＴ）の強度を個別に変化させることによって、出力（すなわち、ＣｌｋＯｕｔＸ）における立ち上がり及び立ち下がりエッジレートを動作中に調整することができる。Ｆｕｓｅ／ＪＴＡＧビット（すなわち、ＥＮＮ［６：０］、ＥＮＰ［６：０］）を使用してｐＦＥＴ及びｎＦＥＴの強度を個別に制御することによって、シリコン周波数を改善するためのデューティサイクル変調、又は、シリコンにおける位相パスマージンをテストすることができる。デューティサイクル調整器２０４をクロック分周器回路２０２内に配置することによって、デューティサイクルの調整をサポートするためにステージを追加することが回避され、これによりジッタが減少する。
【００１６】
図３は、いくつかの実施形態による、様々なクロック信号の波形図３００である。特に、波形図３００は、１で分周された後にストレッチされたクロックの波形を示している。図示した例において、時間３０２と次の時間３０４との間でＳｔｒＥｎ信号がネゲート状態にある。これは、プロセッサコア１１４で電圧ドループが検出されなかったことを示している。したがって、時間３０２と時間３０４との間では、クロック信号出力ＣｌｋＯｕｔＸの周波数は、クロック分周器回路２０２のみによって決定される。この場合、クロック分周器回路は、入力クロック信号（すなわち、ＣＬＫ）の周波数を１で分周した周波数と等しい周波数を有するＣｌｋＯｕｔＸを生成する。
【００１７】
時間３０４において、プロセッサコア１１４での電圧ドループを示すＳｔｒＥｎ信号がアサートされる。これに応じて、ＣｌｋＯｕｔＸの周波数が、２つのイネーブル（ＥＮ）入力（すなわち、Ｓｔｒ＿ＥＮＡ、Ｓｔｒ＿ＥＮＢ）によって制御される。クロック分周器回路２０２は、ＣｌｋＯｕｔＸの周波数を、時間３０４の前のその周波数と比較して１００％減少させ、これにより電圧ドループに対して調整する。図３に示すＣｌｋＯｕｔＸの減少した単一クロック周期の後、ＣｌｋＯｕｔＸは、ＳｔｒＥｎがハイのままであっても、ＣＬＫと同じの周波数に戻る。いくつかの実施形態では、ＳｔｒＥｎがハイのままである場合、本開示に含まれない他の手段によってＣＬＫ入力がストレッチされる。このようにして、ＣｌｋＯｕｔＸは、ＣＬＫをストレッチするシステムにおいて提供される場合よりも高速にストレッチされる。
【００１８】
図４は、少なくとも１つの実施形態による、プロセッサコアで電圧ドループを検出したことに応じてクロック信号の周波数を調整する方法４００のフロー図である。説明のために、方法４００は、図１のプロセッサコア１１４及び図２のクロック分周器回路２０２における例示的な実施態様に関して説明される。ブロック４０２において、Ｌ３キャッシュ１４０のレベルシフタ１４２は、公称周波数設定をクロック信号ＣｌｋＸに適用する。ブロック４０４において、ＣＫＧＥＮ１７４は、ＤＦＳ１６４内の立ち上がりエッジフロップへのセットアップ時間を満たすように、ＣＣＬＫイネーブル信号（ＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢ）を駆動する。ブロック４０６において、ドループ検出器回路は、ＣｌｋＸクロック信号を、その公称周波数と比較してより低い周波数に設定するように、ストレッチアサート信号ＳｔｒｅｔｃｈＥｎを生成する。
【００１９】
ブロック４０８において、ドループ検出器回路は、電圧ドループが存在するかどうかを識別するために、プロセッサコア１１４の１つ以上の位置で電圧を監視する。検出されない場合、ドループ検出器回路は、ＳｔｒｅｔｃｈＥｎ信号をネゲート状態に維持する。これに応じて、方法フローはブロック４１０に進み、ＤＦＳ１６４は、ＣＣＬＫイネーブル信号（すなわち、ＣＫＧＥＮ＿ＥｎａｂｌｅＡ及びＣＫＧＥＮ＿ＥｎａｂｌｅＢ）に基づいて、出力クロック信号を生成する。次に、方法フローは、ドループ検出器回路がプロセッサコア１１４における電圧を継続して監視するように、ブロック４０８に戻る。
【００２０】
ブロック４０８に戻ると、電圧ドループを検出したことに応じて、ドループ検出器回路は、ＳｔｒｅｔｃｈＥｎ信号をアサートする。これに応じて、方法フローはブロック４１２に進み、クロック分周器回路２０２は、２つのストレッチイネーブルＥＮ信号（すなわち、Ｓｔｒ＿ＥＮＡ、Ｓｔｒ＿ＥＮＢ）に基づいて出力クロック信号を生成し、これにより、より遅い周波数で出力クロック信号を生成する。ＥＮビットを変調することによって、入力クロック信号を０．５の増分（例えば、１．０、１．５、２．０、２．５等）の粒度で分周することができる。一例では、ＳｔｒｅｔｃｈＥｎのアサートによって、ＥＮビットがオーバーライドされ、単一のサイクルの１００％ストレッチが強制的に行われる。したがって、クロック分周器回路２０２は、クロック（すなわち、ＣｌｋＸ）が２つのＥＮ入力（及び、２つのＥＮ入力を制御する関連ロジック）のうち何れかを選択するセレクトとして作用するトランスミッションゲートマルチプレクサとして動作する。クロック分周器回路２０２によって可能になるクロック周波数の遅いランプアップ／ダウンによって、ｄＩ／ｄＴの緩和が提供される。
【００２１】
方法フローはブロック４１４，４１６に進み、ドループ検出器回路は、プロセッサコア１１４での電圧がその公称レベル又は範囲に戻ったかどうかを監視する。戻っていない場合、方法はブロック４１４に戻る。この場合、クロック分周器回路２０２は、出力クロック信号ＣｌｋＯｕｔをＣｌｋＩｎの周波数（ＣｌｋＩｎは、ブロック４１２からの最初のクロックストレッチが有効になった後に、クロック分周器回路２０２の外部のメカニズムによってストレッチされてもよい）に維持する。ブロック４１６で、ドループ検出器回路が、その公称レベル又は範囲に監視電圧が戻ったことを識別した場合、方法フローはブロック４１０に進む。ここで、ドループ検出器回路は、ＳｔｒｅｔｃｈＥｎ信号をネゲートして、ＤＦＳ１６４を、その公称入力周波数で出力クロック信号を生成するように戻す。
【００２２】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００２３】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００２４】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
0006905596.tif 000002
【図２】
0006905596.tif 000003
【図３】
0006905596.tif 000004
【図４】
0006905596.tif 000005