(57)【要約】プロセッサ（１００）は、プロセッサにおける電圧降下に応じて、１つ以上のクロック信号（２３０）の周波数を調整する。プロセッサは、複数のベースクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）を生成することによって少なくとも１つのクロック信号を生成し、ベースクロック信号の各々は、共通の周波数を有するが異なる位相を有する。また、プロセッサは、複数のイネーブル信号を生成し、各イネーブル信号は、対応する１つのベースクロック信号がクロック信号を生成するために使用されるか否かを統制する。したがって、イネーブル信号は、クロック信号の周波数を決定する。プロセッサは、電圧降下を検出したことに応じて、クロック信号を生成するのに使用されるイネーブル信号を調整することによって、クロック信号の周波数を減少させる。【選択図】図１
2019527884.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１００）における電圧降下を検出したこと（４０８）に応じて、イネーブル信号の第１セットを変更して、変更されたイネーブル信号の第１セットを生成することと、
変更されたイネーブル信号の第１セットに基づいて、第１クロック信号（２３０）を生成すること（４１２）と、を含む、
方法。
【請求項２】
イネーブル信号の第１セットを変更することは、
前記第１クロック信号の周波数を第１周波数から第２周波数に変更するように、イネーブル信号の第１セットを変更することを含む、
請求項１の方法。
【請求項３】
前記第２周波数は前記第１周波数未満である、
請求項２の方法。
【請求項４】
前記プロセッサにおける電圧降下を検出した後に、前記プロセッサにおける電圧の増大を検出したこと（４１４）に応じて、変更されたイネーブル信号の第１セットを変更して、変更されたイネーブル信号の第２セットを生成することと、
変更されたイネーブル信号の第２セットに基づいて、前記第１クロック信号を生成すること（４１０）と、をさらに含む、
請求項１の方法。
【請求項５】
前記第１クロック信号を生成することは、
変更されたイネーブル信号の第１セットに基づいて、複数のクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）を選択することと、
前記選択された複数のクロック信号を論理的に組み合わせて（３５５，３５６）、前記第１クロック信号を生成することと、を含む、
請求項１の方法。
【請求項６】
前記プロセッサにおける電圧降下を検出したことに応じて、イネーブル信号の第２セットを変更して、変更されたイネーブル信号の第２セットを生成することと、
変更されたイネーブル信号の第２セットに基づいて、第２クロック信号を生成することと、を含む、
請求項１の方法。
【請求項７】
前記第１クロック信号を生成することは、第１周波数を有するように前記第１クロック信号を生成することを含み、
前記第２クロック信号を生成することは、前記第１周波数とは異なる第２周波数を有するように前記第２クロック信号を生成することを含む、
請求項６の方法。
【請求項８】
イネーブル信号の第１セットを生成すること（４０４）と、
イネーブル信号の第１セットに基づいて、第１周波数において第１クロック信号（２３０）を生成することと、
前記第１周波数における前記第１クロック信号をプロセッサ（１００）に供給することと、
前記プロセッサにおける電圧降下を検出したこと（４０８）に応じて、前記第１クロック信号の周波数を前記第１周波数から第２周波数に変更するようにイネーブル信号の第１セットを変更すること（４１２）であって、前記第２周波数は前記第１周波数と異なる、ことと、を含む、
方法。
【請求項９】
前記電圧降下の後に前記プロセッサにおける電圧の増大を検出したこと（４１４）に応じて、前記第１クロック信号の周波数を前記第２周波数から前記第１周波数に変更するようにイネーブル信号の第１セットを変更すること（４１０）を含む、
請求項８の方法。
【請求項１０】
前記電圧降下の後に前記プロセッサにおける電圧の増大を検出したことに応じて、前記第１クロック信号の周波数を前記第２周波数から第３周波数に変更するようにイネーブル信号の第１セットを変更することを含み、
前記第３周波数は、前記第１周波数及び前記第２周波数と異なる、
請求項８の方法。
【請求項１１】
前記第１クロック信号を、前記プロセッサに関連するキャッシュに供給することを含む、
請求項８の方法。
【請求項１２】
イネーブル信号の第２セットを生成することと、
イネーブル信号の第２セットに基づいて、第３周波数において第２クロック信号を生成することと、
前記第２周波数における前記第２クロック信号を前記プロセッサに供給することと、
前記プロセッサにおける電圧降下を検出したことに応じて、前記第２クロック信号の周波数を前記第３周波数から第４周波数に変更するようにイネーブル信号の第１セットを変更することであって、前記第４周波数は前記第３周波数と異なる、ことと、を含む、
請求項８の方法。
【請求項１３】
前記第１クロック信号を生成することは、
イネーブル信号の第１セットに基づいて、複数のクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）からクロック信号のサブセットを選択することと、
前記選択された複数のクロック信号を組み合わせて（３５５，３５６）、前記第１クロック信号を生成することと、を含む、
請求項８の方法。
【請求項１４】
プロセッサ（１００）であって、
前記プロセッサにおける電圧降下を検出するための電圧検出モジュール（１０３）と、
イネーブル信号の第１セット及び第１の複数のクロック信号を受信するための第１クロックモジュール（１１２）であって、イネーブル信号の第１セット及び複数のクロック信号に基づいて第１のクロック信号を生成する、第１クロックモジュールと、
前記電圧検出モジュールが電圧降下を示したことに応じて、イネーブル信号の第１セットを変更するためのストレッチ制御モジュール（１０７）と、を備える、
プロセッサ。
【請求項１５】
前記ストレッチ制御モジュールは、
前記第１クロック信号の周波数を第１周波数から第２周波数に変更するようにイネーブル信号の第１セットを変更する、
請求項１４のプロセッサ。
【請求項１６】
前記第２周波数は前記第１周波数未満である、
請求項１５のプロセッサ。
【請求項１７】
前記ストレッチ制御モジュールは、
前記電圧検出モジュールが前記プロセッサにおける電圧の増大を示したことに応じて、変更されたイネーブル信号の第１セットを変更して、変更されたイネーブル信号の第２セットを生成する、
請求項１４のプロセッサ。
【請求項１８】
前記第１クロックモジュールは、
イネーブル信号の第１セットに基づいて、前記複数のクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）のサブセットを選択し、
前記選択された複数のクロック信号を論理的に組み合わせて（３５５，３５６）、前記第１クロック信号を生成する、
請求項１４のプロセッサ。
【請求項１９】
イネーブル信号の第２セット及び前記第１の複数のクロック信号を受信するための第２クロックモジュール（１１０）であって、前記第１クロックモジュールは、イネーブル信号の第２セット及び前記複数のクロック信号に基づいて第２クロック信号を生成する、第２クロックモジュールを備え、
前記ストレッチ制御モジュールは、前記電圧検出モジュールが電圧降下を示したことに応じて、イネーブル信号の第２セットを変更する、
請求項１４のプロセッサ。
【請求項２０】
前記第１クロックモジュールは、第１周波数を有するように前記第１クロック信号を生成し、
前記第２クロックモジュールは、前記第１周波数とは異なる第２周波数を有するように前記第２クロック信号を生成する、
請求項１９のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッサは、通常、プロセッサのモジュールにおいて論理演算を同期させるために１つ以上のクロック信号を使用し、それによって、セットアップエラーや競合状態等のエラーを防止する。モジュールに印加することの可能な最大クロック周波数は、モジュールのトランジスタの電圧閾値を統制するモジュールに供給される供給電圧に少なくとも部分的に依存する。しかしながら、プロセッサモジュールは、供給電圧の一時的な低下（電圧降下と呼ばれる）に遭うことがある。モジュールのクロック周波数を調整しないと、プロセッサ全体の動作にエラーが発生する可能性がある。一部のプロセッサは、モジュールクロック信号の公称クロック周波数に対して低い周波数で「予備」クロック信号を生成することによって電圧降下に対応し、電圧降下を検出したことに応じて、モジュールクロック信号を予備クロック信号に一時的に置き換える。しかしながら、クロック信号を置き換えることは、置き換え中に動作エラーが生じる場合があり、実行するための複雑な回路を必要とする場合がある。
【０００２】
添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者には明らかとなるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、クロック信号を生成するのに使用されるイネーブル信号を調整することによって、電圧降下に応じてクロック信号を調整するプロセッサのブロック図である。
【図２】いくつかの実施形態による、クロック信号を生成するのに使用されるイネーブル信号を調整することによって、図１のプロセッサにおいてクロック信号を調整する場合の一例を示す図である。
【図３】いくつかの実施形態による、図１のプロセッサのクロックジェネレータの一部を示すブロック図である。
【図４】いくつかの実施形態による、クロック信号を生成するのに使用されるイネーブル信号を調整することによって、電圧降下に応じてプロセッサでクロック信号を調整する方法のフローチャートである。
【発明を実施するための形態】
【０００４】
図１〜図４は、プロセッサでの電圧降下に応じて、プロセッサで１つ以上のクロック信号の周波数を調整する技術を示す図である。プロセッサは、複数のベースクロック信号を生成することによって少なくとも１つのクロック信号を生成し、ベースクロック信号の各々は、共通の周波数を有するが異なる位相を有している。また、プロセッサは、複数のイネーブル信号を生成し、イネーブル信号の各々は、対応する１つのベースクロック信号がクロック信号を生成するために使用されているかどうかを統制する。したがって、イネーブル信号は、クロック信号の周波数を決定する。プロセッサは、電圧降下の検出に応じて、クロック信号を生成するのに使用されるイネーブル信号を調整し、これにより、クロック信号の周波数を「ストレッチ」又は減少させて、電圧降下から生じるエラーを減らす。
【０００５】
図１は、いくつかの実施形態による、電圧降下に応じてクロック信号を調整するプロセッサ１００を示す図である。プロセッサ１００は、サーバ、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、計算可能な携帯電話（例えば、「スマートフォン」）、計算可能な時計や他のウェアラブルアイテム、携帯情報端末（ＰＤＡ）、ゲーム機等のように、様々な計算可能な電子デバイスの何れかによって実装されてもよい。図示した例では、プロセッサ１００は、プロセッサコア１０２と、電圧検出器１０３と、クロック制御モジュール１０４と、位相ロックループ（ＰＬＬ）１０５と、ストレッチ制御モジュール１０７と、クロックジェネレータ１１０，１１２と、デジタル電圧・周波数スケーリング（ＤＶＦＳ）モジュール１１５と、を含む。
【０００６】
プロセッサコア１０２は、一般に、電子デバイスの代わりに動作を実行するために、命令セット（例えば、コンピュータプログラム）を実行するように構成されている。プロセッサコアは、命令セットを実行するために、フェッチステージ、ディスパッチステージ、実行ユニット、メモリコントローラ、入力／出力インタフェース、キャッシュ等の１つ以上のモジュールを含み、これらの各々のモジュールは、同期論理要素、論理ゲート、及び、他のコンポーネントから構成されている。プロセッサコア１０２は、これらのコンポーネントの動作を同期させるために、１つ以上のクロック信号を使用する。図示した例では、プロセッサコア１０２は、その動作を同期させるために「ＣＫ１」，「ＣＫ２」と示された２つの異なるクロック信号を使用する。いくつかの実施形態では、クロック信号ＣＫ１，ＣＫ２は、同時に異なる周波数であってもよく、プロセッサコア１０２の異なるモジュール、又は、モジュールの異なる動作を同期させるために使用されてもよい。
【０００７】
プロセッサ１００は、クロック信号ＣＫ１，ＣＫ２を生成するために、クロック制御モジュール１０４及びクロックジェネレータ１１０，１１２と共にＰＬＬ１０５を使用する。クロック制御モジュール１０４は、一般に、任意の数の基準に基づいてクロック信号ＣＫ１，ＣＫ２の周波数を識別するように構成されている。プロセッサ１００の例では、ＤＶＦＳモジュール１１５は、プロセッサ１００の動作条件に基づいてクロック信号ＣＫ１，ＣＫ２の周波数情報を供給するように構成されている。例えば、いくつかの実施形態では、ＤＶＦＳモジュール１１５は、プロセッサ１００の電力モード情報を受信する。この電力モード情報は、複数の電力状態のうち１つの電力状態の選択を示す。電力モード情報は、例えば、プロセッサコア１０２の性能特性等に基づいてプロセッサ１００の性能モニタ（図示省略）によって供給される情報に基づいて、プロセッサコア１０２で実行されるオペレーティングシステムによって供給されてもよい。ＤＶＦＳモジュール１１５は、電力モード情報に基づいて、プロセッサコア１０２の１つ以上のモジュールの基準電圧として使用されるように、プロセッサコア１０２に供給される電圧を選択する。また、ＤＶＦＳモジュール１１５は、電力モードに基づいて、選択された電力状態に対応するクロック信号ＣＫ１，ＣＫ２の周波数を示す周波数情報をクロック制御モジュール１０４に供給する。クロック制御モジュール１０４は、周波数情報に基づいて、本明細書でさらに説明するように、クロック信号ＣＫ１，ＣＫ２の周波数を設定するために、Ｅ１［７：０］，Ｅ２［７：０］と示されたイネーブル信号を生成する。
【０００８】
ＰＬＬ１０５は、水晶発振器（図示省略）又は他のクロックソースから基準クロック信号（図示省略）を受信し、基準クロック信号に基づいて複数のベースクロック信号を生成するように構成されている。各ベースクロック信号は、他のベースクロック信号と位相がずれている。プロセッサ１００の例では、ＰＬＬ１０５は、Ｃ０，Ｃ４５，Ｃ９０，Ｃ１３５，Ｃ１８０，Ｃ２２５，Ｃ２７０，Ｃ３１５と示され、まとめてＣ０〜Ｃ３１５と呼ばれる８つのベースクロック信号を生成すると仮定する。ベースクロック信号Ｃ０〜Ｃ３１５の各々は、他のベースクロック信号と位相が少なくとも４５度ずれている。特に、ベースクロック信号Ｃ４５は、ベースクロック信号Ｃ０と位相が４５度ずれており、ベースクロック信号Ｃ９０は、ベースクロック信号Ｃ０と位相が９０度ずれており、ベースクロック信号Ｃ１３５は、ベースクロック信号Ｃ０と位相が１３５度ずれている等である。クロック信号を示す数字は、クロック信号Ｃ０との位相のずれ度を示している。
【０００９】
クロックジェネレータ１１０，１１２の各々は、イネーブル信号のセット及びベース信号Ｃ０〜Ｃ３１５を受信し、受信したイネーブル信号に基づいてベース信号Ｃ０〜Ｃ３１５を組み合わせて、イネーブル信号に基づく周波数で各々の出力クロック信号を生成するように構成されている。よって、例えば、クロックジェネレータ１１２は、イネーブル信号Ｅ１［７：０］を受信し、イネーブル信号に基づいてベースクロック信号Ｃ０〜Ｃ３１５を組み合わせて、イネーブル信号Ｅ１［７：０］に基づく周波数でクロック信号ＣＫ１を生成するように構成されている。いくつかの実施形態では、イネーブル信号Ｅ１［７：０］の各々は、クロック信号Ｃ０〜Ｃ３１５のうち異なる１つのクロック信号に対応しており、イネーブル信号の状態は、対応するクロック信号が、クロックを生成するために出力が使用される１つ以上の論理ゲートに印加されるか否かを示している。これにより、クロックジェネレータ１１２は、ベースクロック信号Ｃ０〜Ｃ３１５の周波数（ベース周波数と呼ばれる）に対する分周器を実装している。分周器は、ベース周波数の分数である周波数を有するようにクロック信号Ｃ１を生成する。ここで、分数は、イネーブル信号Ｅ１［７：０］によって少なくとも部分的に制御される。クロックジェネレータ１１０は、同様に、ベースクロック信号Ｃ０〜Ｃ３１５に基づいてクロック信号ＣＫ２を生成するように構成されているが、クロック信号の周波数は、イネーブル信号Ｅ２［７：０］によって部分的に制御される。
【００１０】
プロセッサ１００は、プロセッサコア１０２における電圧降下によるエラーを低減するために、電圧検出器１０３と、ストレッチ制御モジュール１０７と、を使用する。電圧検出器１０３は、プロセッサコア１０２内の１つ以上の位置で供給電圧を監視するように構成されている。電圧検出器１０３は、監視された電圧が指定された閾値量だけ低下したのを検出したことに応じて、「ＤＲＯＯＰ」と示された出力信号をアサートすることによって、プロセッサコア１０２で電圧降下が検出されたことを示す。
【００１１】
ストレッチ制御モジュール１０７は、ＤＲＯＯＰ信号のアサートに応じて、２セットの信号を生成するように構成されている。特に、ストレッチ制御モジュール１０７は、ＤＲＯＯＰ信号のアサートに応じて、「ＳＴＲＥＴＣＨ」と示された信号をアサートして、電圧降下に応じてクロック信号ＣＫ１，ＣＫ２の一方又は両方を「ストレッチする」べきか、又は、これらの周波数を減少すべきかを示す。また、ストレッチ制御モジュール１０７は、Ｓ［７：０］で示される拡大イネーブル信号のセットを生成する。いくつかの実施形態では、ストレッチイネーブル信号の各々は、イネーブル信号Ｅ２［７：０］又はイネーブル信号Ｅ１［７：０］の何れかに対応する。クロックジェネレータ１１２は、ＳＴＲＥＴＣＨ信号のアサートに応じて、イネーブル信号Ｅ１［７：０］をストレッチイネーブル信号Ｓ［７：０］に置き換えることによって、検出された電圧降下に応じてクロック信号ＣＫ１の周波数を変更する。同様に、クロックジェネレータ１１０は、ＳＴＲＥＴＣＨ信号のアサートに応じて、イネーブル信号Ｅ２［７：０］をストレッチイネーブル信号Ｓ［７：０］に置き換えることによって、クロック信号ＣＫ２の周波数を変更する。
【００１２】
少なくとも１つの実施形態では、ストレッチ制御モジュール１０７は、イネーブル信号Ｅ２［７：０］を監視し、ストレッチイネーブル信号Ｓ［７：０］を生成して、クロック信号ＣＫ１の周波数を所定量だけ変更するように構成されている。したがって、例えば、ストレッチ制御モジュール１０７は、電圧降下に応じて、イネーブル信号Ｅ２［７：０］によって設定されるクロック信号の公称周波数に対してクロック信号ＣＫ１の周波数を２で除算するように、ストレッチイネーブル信号を生成することができる。いくつかの実施形態では、ストレッチ制御モジュールは、信号ＤＲＯＯＰによって（又は、信号ＤＲＯＯＰによって表される複数の制御信号によって）示される電圧降下のサイズに応じて、クロック信号ＣＫ１の周波数を可変量だけ変更する。したがって、例えば、プロセッサコア１０２における電圧降下が第１閾値を超える場合、ストレッチ制御モジュール１０７は、イネーブル信号Ｅ１［７：０］によって設定された公称周波数に対してクロック信号ＣＫ１の周波数を１．２５で除算するように、ストレッチ制御信号Ｓ［７：０］を設定することができる。プロセッサコア１０２における電圧降下が第２閾値を超える場合、ストレッチ制御モジュール１０７は、公称周波数に対してクロック信号ＣＫ１の周波数を１．２５で除算するように、ストレッチ制御信号Ｓ［７：０］を設定することができる。
【００１３】
電圧検出器１０３は、電圧降下の後、プロセッサコア１０２の電圧を監視し続ける。電圧検出器１０３は、監視された電圧が降下前のレベルに戻るか、閾値レベルを超えて変化したことに応じて、ＤＲＯＯＰ信号をネゲートする。これに応じて、ストレッチ制御モジュール１０７は、ＳＴＲＥＴＣＨ信号をネゲートして、クロックジェネレータ１１２を、イネーブル信号Ｅ１［７：０］のみに基づくクロック信号ＣＫ１の生成に戻らせ、クロックジェネレータ１１０を、イネーブル信号Ｅ２［７：０］のみに基づくクロック信号ＣＫ２の生成に戻らせる。すなわち、クロック信号ＣＫ１，ＣＫ２は、クロック制御モジュール１０４によって設定されたように、電圧降下前の周波数に戻される。
【００１４】
上述したように、プロセッサ１００は、プロセッサコア１０２における電圧降下に応じて、クロック信号を生成するのに使用されるイネーブル信号を変更することによって、プロセッサコアに印加されるクロック信号のクロック周波数を低減する。これにより、プロセッサ１００は、元のクロック信号を生成するのに使用されるのと同じ回路を使用して、電圧降下に応じてクロック周波数を適応させることができ、これにより、電圧降下に適応するのに必要な回路の数を減らす。また、プロセッサ１００は、元のクロック信号を生成するのに使用されるのと同じ回路を使用することによって、クロック周波数の変更が元のクロック信号の位相と同期するのを保証することができ、プロセッサコア１０２での動作の中断を必要とせずにクロック周波数を変更することを可能にする。
【００１５】
いくつかの実施形態では、ストレッチ制御モジュール１０７は、一方のクロック信号を非ストレッチ状態に維持しながら他方のクロック信号をストレッチすることを含めて、クロック信号ＣＫ１，ＣＫ２の周波数を異なる周波数に調整・設定可能であることが認識されるであろう。例えば、ストレッチ制御モジュール１０７は、２セットの制御可能なストレッチ制御信号Ｓ１［７：０］，Ｓ２［７：０］を個々に且つ別々に生成することができる。さらに、いくつかの実施形態では、プロセッサ１００は、例えば、プロセッサコアにおける電圧降下を検出するための１つの電圧検出器、及び、キャッシュにおける電圧降下を検出するための異なる電圧検出器等のように、プロセッサ１００の異なるモジュールにおける電圧降下を検出するための複数の電圧検出器を含むことができる。拡大制御モジュール１０７は、異なる電圧検出器によって提供される信号に基づいて、異なるクロック信号の周波数を個々に且つ選択的に調整することができる。例えば、対応する電圧検出器がキャッシュにおける電圧降下を検出したことに応じてキャッシュに供給されるクロック信号をストレッチする一方で、プロセッサコアに供給されるクロック信号は、プロセッサにおける電圧降下が検出されなかったことを理由として、非ストレッチ状態が維持される。
【００１６】
図２は、いくつかの実施形態による、クロックジェネレータ１１０の例示的な動作を示す図２００である。図示した例では、図２００は、波形２２０〜２２７を示しており、各波形は、ベースクロック信号Ｃ０〜Ｃ３１５の異なる１つに対応している。したがって、例えば、波形２２０はベースクロック信号Ｃ０を表し、波形２２１はベースクロック信号Ｃ４５を表している。また、図２００は、クロック信号ＣＫ１を表す波形２３０と、ＳＴＲＥＴＣＨ信号を表す波形２３５と、を示している。
【００１７】
図示した例では、時間２４０から後の時間２４３までの間、ＳＴＲＥＴＣＨ信号がネゲート状態にあり、プロセッサコア１０２における電圧降下が検出されなかったことを示している。したがって、時間２４０から時間２４４までの間、クロック信号ＣＫ１の周波数は、クロック制御モジュール１０４によって生成されたイネーブル信号Ｅ１［７：０］によって制御されている。特に、時間２４０と時間２４１との間のベースクロック信号ＣＫ１８０の第１期間では、クロック制御モジュール１０４は、イネーブル信号Ｅ１［７：０］を値０００００１１１に設定する。これに応じて、時間２４０と時間２４１との間、クロックジェネレータ１１０は、クロック信号ＣＫ１を、ベースクロック信号ＣＫ０，ＣＫ４５，ＣＫ９０の論理「ＯＲ」の組み合わせとして生成する。時間２４１と時間２４３との間のベースクロック信号ＣＫ１８０の次の期間では、クロック制御モジュール１０４は、イネーブル信号Ｅ１［７：０］を値１１１０００００に設定する。これに応じて、クロックジェネレータ１１０は、クロック信号ＣＫ１を、ベースクロック信号ＣＫ１８０，ＣＫ２２５，ＣＫ２７０の論理「ＯＲ」の組み合わせとして生成する。時間２４２と時間２４４との間のベースクロック信号ＣＫ１８０の次の期間では、クロック制御モジュール１０４は、イネーブル信号Ｅ１［７：０］を値００００００００に設定し、それによってクロック信号ＣＫ１がネゲートされる。
【００１８】
時間２４０と時間２４４との間にクロック制御モジュール１０４によって生成されるようなイネーブル信号Ｅ１［７：０］の正味の影響は、１．７５で除算されたベースクロック信号の周波数と等しい周波数を有するように、クロック信号ＣＫ１をクロックジェネレータ１１０に生成させることである。したがって、ＳＴＲＥＴＣＨ信号がネゲートされると、クロックジェネレータ１１０は、分周器として動作し、ベースクロック信号の周波数を除数で除算したものと等しい周波数を有するようにクロック信号ＣＫ１を生成する。除数は、クロックジェネレータ１１０によって生成されたイネーブル信号のシーケンスによって設定される。クロックジェネレータ１１０は、クロック信号ＣＫ１をＤＶＦＳモジュール１１５（図１）によって示される周波数に設定するために、イネーブル信号のシーケンスを調整することによって除数を調整することができる。
【００１９】
図２に示す例では、時間２４３においてＳＴＲＥＴＣＨ信号がアサートされ、電圧検出器１０３（図１）が、プロセッサコア１０２における電圧降下を検出したことを示している。これに応じて、ベースクロック信号ＣＫ１８０の次の期間の開始時（すなわち、時間２４４）に、クロックジェネレータ１１０は、クロック信号ＣＫ１を生成するためのイネーブル信号Ｅ１［７：０］の使用を停止し、ストレッチイネーブル信号Ｓ［７：０］の使用を開始する。さらに、ストレッチ制御モジュール１０７は、時間２４４の前に、クロック信号ＣＫ１の周波数を低減するためのストレッチイネーブル信号Ｓ［７：０］を生成することによって、電圧降下に対する調整を行う。
【００２０】
例示すると、時間２４４と時間２４５との間のベースクロック信号ＣＫ１８０の期間中に、ストレッチ制御モジュール１０７は、０００１１１１１の値を有するようにストレッチイネーブル信号Ｓ［７：０］を生成する。これに応じて、時間２４４と時間２４５との間に、クロックジェネレータ１１０は、クロック信号ＣＫ１を、ベースクロック信号ＣＫ０，ＣＫ４５，ＣＫ９０，ＣＫ１３５，ＣＫ１８０の論理「ＯＲ」の組み合わせとして生成する。時間２４５に続くベースクロック信号ＣＫ１８０の次の期間の間、ストレッチ制御モジュール１０７は、００００００００の値を有するようにストレッチイネーブル信号Ｓ［７：０］を生成することによって、ベースクロック信号１８０のこの期間の間、クロックジェネレータ１１０にクロック信号ＣＫ１をネゲートさせる。ＳＴＲＥＴＣＨ信号がアサートされている間のベースクロック信号ＣＫ１８０（図２には示されていない）の後続の期間の間、ストレッチ制御モジュール１０７は、ストレッチイネーブル信号Ｓ［７：０］の値を、０００１１１１１と０００００００との間で交互に入れ替える。ストレッチイネーブル信号の値のシーケンスによって、クロックジェネレータ１１０は、ベースクロック信号の周波数の半分の周波数を有するようにクロック信号ＣＫ１を生成することになる。すなわち、ストレッチイネーブル信号Ｓ［７：０］の値のシーケンスは、クロックジェネレータ１１０に対する除数が２の値を有するように設定する。
【００２１】
図示した例では、クロック制御モジュール１０４は、ＳＴＲＥＴＣＨ信号がアサートされている間、イネーブル信号Ｅ１［７：０］の値を生成し続ける。すなわち、クロック制御モジュール１０４は、ＳＴＲＥＴＣＨ信号の状態とは独立してイネーブル信号Ｅ１［７：０］を生成する。これにより、プロセッサ１００は、クロック信号ＣＫ１を生成するために何れのイネーブル信号がクロックジェネレータ１１０によって使用されるのかを切り替えることによって、電圧降下の開始又は停止に応じてクロック周波数間を即時に切り替えることができる。さらに、それは、クロックジェネレータ１１０が、周波数の変化をクロック信号ＣＫ１の周期と同期させることを可能にし、これにより、プロセッサコア１０２が、周波数の変化の間に動作を継続することを可能にする。これは、そのクロック信号の周波数が電圧降下の開始又は停止に応じて変更される間にプロセッサコア１０２の動作の中断を必要とする従来の設計と比較して、処理及び電力効率を改善する。
【００２２】
いくつかの実施形態では、クロックジェネレータ１１０は、ＳＴＲＥＴＣＨ信号のアサートに応じてクロック信号の立ち上がりエッジでクロック信号ＣＫ１の周期を変更するのではなく、クロック信号ＣＫ１の立ち下がりエッジで周期を変更することができる。これにより、クロック信号ＣＫ１の最初のストレッチされた位相は、ネゲートされた位相の間にある。プロセッサによっては、立ち下がりエッジの間にクロック信号の周期を変更することによって、クロックジェネレータ１１０が、クロック信号ＣＫ１のストレッチされた周期をより早く開始することを可能にし、これにより、追加の電力を節約することができる。
【００２３】
また、いくつかの実施形態では、ＳＴＲＥＴＣＨ信号がネゲートされると、ストレッチ制御モジュール１０７は、クロック信号ＣＫ１と位相が合わせられた信号Ｓ［７：０］を供給する。同様に、ＳＴＲＥＴＣＨ信号がアサートされると、クロック制御モジュール１０４は、信号Ｅ１［７：０］を、ストレッチされたクロック信号ＣＫ１に位相が合わせられた信号として供給する。信号Ｓ［７：０］，信号Ｅ１［７：０］の位相を（ストレッチされているとき及びストレッチされていないときの各々の）クロック信号ＣＫ１と合わせることによって、クロック信号ＣＫ１の周期をクロックエッジで遷移させることができ、これにより、クロック信号ＣＫ１の変更から生じるエラーを減らすことができる。
【００２４】
図３は、いくつかの実施形態による、クロックジェネレータ１１０の一部３００のブロック図である。一部３００は、クロックサブ回路３５０と、ＮＡＮＤゲート３５５，３５６と、ＮＯＲゲート３５７と、を含む。サブ回路３５０は、ラッチ３５１と、マルチプレクサ３５２と、ラッチ３５３と、ＮＡＮＤゲート３５４と、を含む。ラッチ３５１は、イネーブル信号Ｅ１［１］を受信するためのデータ入力と、ベースクロック信号Ｃ１８０を受信するためのクロック入力と、出力と、を含む。マルチプレクサ３５２は、ラッチ３５１の出力に接続されたデータ入力と、ストレッチイネーブル信号Ｓ［１］を受信するためのデータ入力と、ＳＴＲＥＴＣＨ信号を受信するための制御入力と、出力と、を含む。ラッチ３５３は、マルチプレクサ３５２の出力に接続されたデータ入力と、ベースクロック信号Ｃ２２５を受信するためのイネーブル入力と、出力と、を含む。ＮＡＮＤゲート３５４は、ラッチ３５３の出力に接続された入力と、クロック信号Ｃ４５を受信するための入力と、出力と、を含む。
【００２５】
動作中、サブ回路３５０は、概して、イネーブル信号Ｅ１［１］又はストレッチイネーブル信号Ｓ［１］の一方をサブ回路３５０に対して印加可能なイネーブル信号として選択し、ベースクロック信号Ｃ４５がクロック信号ＣＫ１のベースの１つとして使用されることになるか否かを選択するように構成されている。例示すると、ラッチ３５１は、概して、ベースクロック信号Ｃ１８０のアサートに応じて、イネーブル信号Ｅ１［１］の値をラッチするように構成されている。マルチプレクサ３５２は、ＳＴＲＥＴＣＨ信号の状態に基づいて、印加可能なイネーブル信号を選択するように構成されている。特に、マルチプレクサ３５２は、ＳＴＲＥＴＣＨ信号がネゲートされたことに応じて、その出力においてラッチ３５１の出力を印加する。したがって、ＳＴＲＥＴＣＨ信号がネゲートされた場合、イネーブル信号Ｅ１［１］のラッチされた値がラッチ３５３の入力に印加される。一方、マルチプレクサ３５２は、ＳＴＲＥＴＣＨ信号がアサートされた場合、ストレッチイネーブル信号Ｓ［１］をラッチ３５３の入力に印加する。
【００２６】
ＮＡＮＤゲート３５４は、ラッチ３５３でラッチされた印加可能なイネーブル信号の状態に基づいて、その出力においてベースクロック信号Ｃ４５を選択的に印加するように構成されている。したがって、ラッチされた印加可能なイネーブル信号の値がネゲートされ、ベースクロック信号Ｃ４５がクロック信号ＣＫ１のベースとして使用されないことを示す場合には、ＮＡＮＤゲート３５４は、その出力をアサートされた状態に維持する。ラッチされた印加可能なイネーブル信号の値がアサートされると、ＮＡＮＤゲートの出力は、ベースクロック信号Ｃ４５の反転表示となる。
【００２７】
クロックジェネレータ１１０は、サブ回路３５０と同様の追加のサブ回路を含み、明確にするために一部３００に示されていない。特に、クロックジェネレータ１１０は、ベースクロック信号Ｃ０〜Ｃ３１５の各々に対応するサブ回路を含み、各サブ回路は、イネーブル信号Ｅ１［７：０］のうち異なる１つと、ストレッチイネーブル信号Ｓ［７：０］のうち異なる対応する１つと、を受信する。各サブ回路は、ＳＴＲＥＴＣＨ信号の状態に基づいて、印加可能なイネーブル信号を選択し、対応する印加可能なイネーブル信号の状態に基づいて、対応するクロック信号がクロック信号ＣＫ１のベースの１つとして使用されることになるか否かを選択することによって、サブ回路３５０と同様に動作する。
【００２８】
ＮＡＮＤゲート３５５は、ベースクロック信号Ｃ０，Ｃ４５，Ｃ９０，Ｃ１３５についてのサブ回路のうち異なる１つにそれぞれ接続された複数の入力と、出力と、を含む。ＮＡＮＤゲート３５６は、ベースクロック信号Ｃ１８０，Ｃ２２５，Ｃ２７０，Ｃ３１５についてのサブ回路のうち異なる１つにそれぞれ接続された複数の入力を含む。ＮＯＲゲート３５７は、ＮＡＮＤゲート３５５の出力に接続された入力と、ＮＡＮＤゲート３５６の出力に接続された入力と、クロック信号ＣＫ１を供給するための出力と、を含む。クロック信号ＣＫ１は、サブ回路（例えば、サブ回路３５０）、ＮＡＮＤゲート３５５，３５６、ＮＯＲゲート３５７の構成及び接続に基づいて、ＳＴＲＥＴＣＨ信号の状態によって示されるように、印加可能なイネーブル信号の状態に基づいて、及び、印加可能なイネーブル信号によって選択されたベースクロック信号に基づいて、生成される。
【００２９】
図４は、少なくとも１つの実施形態による、プロセッサコアにおける電圧降下を検出したことに応じてクロック信号の周波数を調整する方法４００のフローチャートである。説明目的で、方法４００を、図１のプロセッサ１００における例示的な実装態様に関して説明する。ブロック４０２において、クロック制御モジュール１０４は、ＤＶＦＳモジュール１１５から受信した情報に基づいて、クロック信号ＣＫ１，ＣＫ２の公称周波数設定を識別する。ブロック４０４において、クロック制御モジュール１０４は、イネーブル信号Ｅ２［７：０］，Ｅ１［７：０］を生成して、クロック信号ＣＫ２，ＣＫ１をこれらの公称周波数設定に設定する。ブロック４０６において、ストレッチ制御モジュール１０７は、ストレッチイネーブル信号Ｓ［７：０］を生成して、クロック信号ＣＫ１，ＣＫ２をこれらの公称周波数に対して低い周波数に設定する。
【００３０】
ブロック４０８において、電圧検出器１０３は、電圧降下が存在するか否かを識別するために、プロセッサコア１０２の１つ以上のポイントにおいて電圧を監視する。存在しない場合、電圧検出器１０３は、ＤＲＯＯＰ信号をネゲート状態に維持し、次いで、ストレッチ制御モジュール１０７は、ＳＴＲＥＴＣＨ信号をネゲート状態に維持する。これに応じて、方法のフローはブロック４１０に移行し、クロックジェネレータ１１０，１１２は、イネーブル信号Ｅ２［７：０］，Ｅ１［７：０］に基づいてクロック信号ＣＫ２，ＣＫ１を生成し、これにより、各々の公称周波数でクロック信号を生成する。次に、方法のフローは、電圧検出器１０３がプロセッサコア１０２において電圧を監視し続けるように、ブロック４０８に戻る。
【００３１】
ブロック４０８に戻り、電圧検出器１０３は、電圧降下を検出したことに応じてＤＲＯＯＰ信号をアサートすることによって、拡大制御モジュール１０７にＳＴＲＥＴＣＨ信号をアサートさせる。これに応じて、方法のフローはブロック４１２に移行し、クロックジェネレータ１１０，１１２は、ストレッチイネーブル信号Ｓ［７：０］に基づいてクロック信号ＣＫ２，ＣＫ１を生成することによって、これらのより遅い周波数でクロック信号を生成する。方法のフローはブロック４１４に移行し、電圧検出器１０３は、プロセッサコア１０２における電圧がその公称レベル又は範囲に戻ったか否かを監視する。戻っていない場合、方法は、クロックジェネレータ１１０，１１２が、これらのより遅い周波数でクロック信号ＣＫ２，ＣＫ１を維持するように、ブロック４１２に戻る。ブロック４１４において、方法のフローは、電圧検出器１０３が、監視された電圧がその公称レベル又は範囲に戻ったと識別した場合、ブロック４１０に移行する。ここで、ストレッチ制御モジュール１０７は、ＳＴＲＥＴＣＨ信号をネゲートして、クロックジェネレータ１１０，１１２に対し、イネーブル信号Ｅ２［７：０］，Ｅ１［７：０］に基づくクロック信号ＣＫ２，ＣＫ１の生成に戻らせる。
【００３２】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３３】
概略的な説明において上述した全ての動作又は要素が必要とされるわけではなく、特定の動作又はデバイスの一部が必要とされなくてもよいし、上記の説明に加えて、１つ以上のさらなる動作が実行されてもよいし、１つ以上のさらなる要素が含まれてもよいことに留意されたい。さらにまた、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているように本発明の範囲から逸脱することなく様々な変更及び変形が可能であることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で見なされるべきであり、かかる変更の全ては本発明の範囲に含まれることが意図される。
【００３４】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上記のように説明した。しかしながら、利益、利点、問題に対する解決手段、及び、利益、利点、解決手段を生じさせるか明確にする可能性のある特徴は、特許請求の範囲の何れか又は全ての重要な、必須の、本質的な特徴として解釈されるべきではない。さらに、開示された発明は、異なってはいるが、本明細書における教示の恩恵を受ける当業者には明らかな同等の方式で変更及び実施することができるので、上記の開示された特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されているもの以外に、本明細書に示す構造又は設計の詳細に限定することを意図していない。したがって、上記の開示された特定の実施形態が変更又は修正されてもよく、そのような変更の全ては、開示された発明の範囲内にあると見なされることが明らかである。したがって、本明細書で求められる保護は、添付の特許請求の範囲に記載された通りである。
【図１】
2019527884.tif 000003
【図２】
2019527884.tif 000004
【図３】
2019527884.tif 000005
【図４】
2019527884.tif 000006
【手続補正書】
【提出日】平成31年4月11日(2019.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ（１００）における電圧降下を検出したこと（４０８）に応じて、イネーブル信号の第１セットを変更して、変更されたイネーブル信号の第１セットを生成することと、
変更されたイネーブル信号の第１セットに基づいて、第１クロック信号（２３０）を生成すること（４１２）と、を含む、
方法。
【請求項２】
イネーブル信号の第１セットを変更することは、
前記第１クロック信号の周波数を第１周波数から第２周波数に変更するように、イネーブル信号の第１セットを変更することを含む、
請求項１の方法。
【請求項３】
前記第２周波数は前記第１周波数未満である、
請求項２の方法。
【請求項４】
前記プロセッサにおける電圧降下を検出した後に、前記プロセッサにおける電圧の増大を検出したこと（４１４）に応じて、変更されたイネーブル信号の第１セットを変更して、変更されたイネーブル信号の第２セットを生成することと、
変更されたイネーブル信号の第２セットに基づいて、前記第１クロック信号を生成すること（４１０）と、をさらに含み、
及び／又は、
前記第１クロック信号を生成すること（４１２）は、
変更されたイネーブル信号の第１セットに基づいて、複数のクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）を選択することと、
前記選択された複数のクロック信号を論理的に組み合わせて（３５５，３５６）、前記第１クロック信号を生成することと、を含む、
請求項１の方法。
【請求項５】
前記プロセッサにおける電圧降下を検出したことに応じて、イネーブル信号の第２セットを変更して、変更されたイネーブル信号の第２セットを生成することと、
変更されたイネーブル信号の第２セットに基づいて、第２クロック信号を生成することと、を含む、
請求項１の方法。
【請求項６】
前記第１クロック信号を生成することは、第１周波数を有するように前記第１クロック信号を生成することを含み、
前記第２クロック信号を生成することは、前記第１周波数とは異なる第２周波数を有するように前記第２クロック信号を生成することを含む、
請求項５の方法。
【請求項７】
イネーブル信号の第１セットを生成すること（４０４）と、
イネーブル信号の第１セットに基づいて、第１周波数において第１クロック信号（２３０）を生成することと、
前記第１周波数における前記第１クロック信号をプロセッサ（１００）に供給することと、
前記プロセッサにおける電圧降下を検出したこと（４０８）に応じて、前記第１クロック信号の周波数を前記第１周波数から第２周波数に変更するようにイネーブル信号の第１セットを変更すること（４１２）であって、前記第２周波数は前記第１周波数と異なる、ことと、を含む、
方法。
【請求項８】
前記電圧降下の後に前記プロセッサにおける電圧の増大を検出したこと（４１４）に応じて、前記第１クロック信号の周波数を前記第２周波数から前記第１周波数又は第３周波数に変更するようにイネーブル信号の第１セットを変更すること（４１０）を含み、
前記第３周波数は、前記第１周波数及び前記第２周波数と異なる、
請求項７の方法。
【請求項９】
前記第１クロック信号を、前記プロセッサに関連するキャッシュに供給することを含み、
及び／又は、
イネーブル信号の第２セットを生成することと、
イネーブル信号の第２セットに基づいて、第３周波数において第２クロック信号を生成することと、
前記第２周波数における前記第２クロック信号を前記プロセッサに供給することと、
前記プロセッサにおける電圧降下を検出したことに応じて、前記第２クロック信号の周波数を前記第３周波数から第４周波数に変更するようにイネーブル信号の第１セットを変更することであって、前記第４周波数は前記第３周波数と異なる、ことと、を含む、
請求項７の方法。
【請求項１０】
前記第１クロック信号を生成することは、
イネーブル信号の第１セットに基づいて、複数のクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）からクロック信号のサブセットを選択することと、
前記選択された複数のクロック信号を組み合わせて（３５５，３５６）、前記第１クロック信号を生成することと、を含む、
請求項７の方法。
【請求項１１】
プロセッサ（１００）であって、
前記プロセッサにおける電圧降下を検出するための電圧検出モジュール（１０３）と、
イネーブル信号の第１セット及び第１の複数のクロック信号を受信するための第１クロックモジュール（１１２）であって、イネーブル信号の第１セット及び複数のクロック信号に基づいて第１のクロック信号を生成する、第１クロックモジュールと、
前記電圧検出モジュールが電圧降下を示したことに応じて、イネーブル信号の第１セットを変更するためのストレッチ制御モジュール（１０７）と、を備える、
プロセッサ。
【請求項１２】
前記ストレッチ制御モジュールは、
前記第１クロック信号の周波数を第１周波数から第２周波数に変更するようにイネーブル信号の第１セットを変更する、
請求項１１のプロセッサ。
【請求項１３】
前記第２周波数は前記第１周波数未満である、
請求項１２のプロセッサ。
【請求項１４】
前記ストレッチ制御モジュールは、
前記電圧検出モジュールが前記プロセッサにおける電圧の増大を示したことに応じて、変更されたイネーブル信号の第１セットを変更して、変更されたイネーブル信号の第２セットを生成し、
及び／又は、
前記第１クロックモジュールは、
イネーブル信号の第１セットに基づいて、前記複数のクロック信号（２２０，２２１，２２２，２２３，２２４，２２５，２２６，２２７）のサブセットを選択し、
前記選択された複数のクロック信号を論理的に組み合わせて（３５５，３５６）、前記第１クロック信号を生成する、
請求項１１のプロセッサ。
【請求項１５】
イネーブル信号の第２セット及び前記第１の複数のクロック信号を受信するための第２クロックモジュール（１１０）であって、前記第１クロックモジュールは、イネーブル信号の第２セット及び前記複数のクロック信号に基づいて第２クロック信号を生成する、第２クロックモジュールを備え、
前記ストレッチ制御モジュールは、前記電圧検出モジュールが電圧降下を示したことに応じて、イネーブル信号の第２セットを変更する、
請求項１１のプロセッサ。
【請求項１６】
前記第１クロックモジュールは、第１周波数を有するように前記第１クロック信号を生成し、
前記第２クロックモジュールは、前記第１周波数とは異なる第２周波数を有するように前記第２クロック信号を生成する、
請求項１５のプロセッサ。
【国際調査報告】
2019527884.tif 000007
2019527884.tif 000008