(57)【要約】プロセッサ（１００）は、クロックドメイン（１０２，１０３）間で転送されるデータの最小セットアップ時間を維持し、少なくとも１つのクロックドメインのクロック信号の周波数の変更に応じて最小セットアップ時間を維持することを備える。プロセッサは、１つ以上の制御モジュール（１２２，１２４）を用いて各クロックドメインのクロックエッジを監視し、データを記憶場所に書き込んだ後に、転送クロックドメインにおいて最小位相数が経過するまで、受信クロックドメインによって記憶場所からデータにアクセスされないことを確実にする。さらに、制御モジュールは、クロックドメインの一方又は両方におけるクロック周波数の変更に応じて最小セットアップ時間を維持する。【選択図】図１
2019522858.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１００）の第１クロックドメイン（１０２）において、第１クロック信号（２４０）の第１エッジに基づいてバッファ（１３０）の第１エントリにアクセスすることと、
前記プロセッサの第２クロックドメイン（１０３）において、
前記バッファの前記第１エントリから読み出すために、最小セットアップ時間に基づいて第２クロック信号（２４１）の第２エッジを選択することであって、前記第２クロック信号は前記第１クロック信号と非同期である、ことと、
選択された第２エッジに応じて前記バッファの前記第１エントリにアクセスすることと、
前記第１クロック信号に対する第１周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第３エッジを選択することと、
選択された第２エッジに応じて前記バッファにアクセスすることと、を含む、
方法。
【請求項２】
前記第２クロック信号に対する第２周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第４エッジを選択することと、
選択された第２エッジに応じて前記バッファにアクセスすることと、をさらに含む、
請求項１の方法。
【請求項３】
前記第２エッジを選択することは、前記第２クロックドメインにおいて前記バッファの第１の以前のアクセスの後の前記第２クロック信号の第１位相数の満了に基づいて前記第２エッジを選択することを含み、
前記第３エッジを選択することは、前記第２クロックドメインにおいて前記バッファの第２の以前のアクセスの後の前記第２クロック信号の第３位相数の満了に基づいて前記第３エッジを選択することを含む、
請求項１の方法。
【請求項４】
前記第１クロック信号は第１周波数であり、前記第２クロック信号は前記第１クロック周波数と異なる第２クロック周波数である、
請求項１の方法。
【請求項５】
前記プロセッサにおける電圧ドループを検出したことに応じて前記第１周波数の変更を要求すること（１０８）をさらに含む、
請求項１の方法。
【請求項６】
前記プロセッサの電力モードの変更に応じて前記第１周波数の変更を要求すること（１０７）をさらに含む、
請求項１の方法。
【請求項７】
前記第２エッジを選択することは、
第１調整値に基づいて第３クロック信号の第１位相数をカウントすることと（４４８）、
前記第１位相数に基づいて前記第２エッジを選択することと（４４６）、を含む、
請求項１の方法。
【請求項８】
前記第３エッジを選択することは、
第２調整値に基づいて第３クロック信号の第２位相数をカウントすることであって、前記第２調整値は前記第１調整値と異なる、ことと、
前記第２調整値に基づいて前記第３エッジを選択することと、を含む、
請求項７の方法。
【請求項９】
前記第１周波数についての前記要求に応じて、前記第１調整値から前記第２調整値に変更することをさらに含む、
請求項８の方法。
【請求項１０】
前記第３クロック信号に基づいて前記第１クロック信号及び前記第２クロック信号を生成することをさらに含む、
請求項８の方法。
【請求項１１】
プロセッサ（１００）の第１クロックドメイン（１０２）から先入れ先出し（ＦＩＦＯ）バッファ（１３０）のデータにアクセスすることと、
前記プロセッサの第２クロックドメイン（１０３）から前記ＦＩＦＯバッファの前記データにアクセスするために、複数のクロックサイクルから第１クロックサイクルを選択することであって、前記第１クロックサイクルは、前記データを書き込んだ後に最小セットアップ時間を維持するように選択される、ことと、を含む、
方法。
【請求項１２】
先入れ先出し（ＦＩＦＯ）バッファ（１３０）と、
第１クロック信号（２４０）の第１エッジに基づいて前記ＦＩＦＯにアクセスする第１クロックドメイン（１０２）と、
読み出しモジュール（１２４）を含む第２クロックドメイン（１０３）と、を備え、
前記読み出しモジュールは、
前記ＦＩＦＯの第１エントリにアクセスするために、最小セットアップ時間に基づいて第２クロック信号（２４１）の第２エッジを選択することであって、前記第２クロック信号は前記第１クロック信号と非同期である、ことと、
選択された第２エッジに応じて前記ＦＩＦＯの前記第１エントリにアクセスすることと、
前記第１クロック信号に対する第１周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第３エッジを選択することと、
選択された第２エッジに応じて前記ＦＩＦＯにアクセスすることと、
を行うように構成されている、
プロセッサ（１００）。
【請求項１３】
前記読み出しモジュールは、
前記第２クロック信号に対する第２周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第４エッジを選択することと、
選択された第２エッジに応じて前記ＦＩＦＯにアクセスすることと、
を行うように構成されている、
請求項１２のプロセッサ。
【請求項１４】
前記第２エッジを選択することは、前記第２クロックドメインにおいて前記ＦＩＦＯの第１の以前のアクセスの後の前記第２クロック信号の第１位相数の満了に基づいて前記第２エッジを選択することを含み、
前記第３エッジを選択することは、前記第２クロックドメインにおいて前記ＦＩＦＯの第２の以前のアクセスの後の前記第２クロック信号の第２位相数の満了に基づいて前記第３エッジを選択することを含む、
請求項１２のプロセッサ。
【請求項１５】
前記第１クロック信号は第１周波数であり、前記第２クロック信号は前記第１クロック周波数と異なる第２クロック周波数である、
請求項１２のプロセッサ。
【請求項１６】
前記プロセッサにおける電圧ドループを検出したことに応じて前記第１周波数の変更を要求する電圧ドループモジュール（１０８）をさらに備える、
請求項１２のプロセッサ。
【請求項１７】
前記プロセッサの電力モードの変更に応じて前記第１周波数の変更を要求するように構成された電力制御モジュール（１０７）をさらに備える、
請求項１２のプロセッサ。
【請求項１８】
前記読み出しモジュールは、
第１調整値に基づいて第３クロック信号の第１位相数をカウントすることと、
前記第１位相数に基づいて前記第２エッジを選択することと、
によって前記第２エッジを選択するように構成されている、
請求項１２のプロセッサ。
【請求項１９】
前記読み出しモジュールは、
第２調整値に基づいて第３クロック信号の第２位相数をカウントすることであって、前記第２調整値は前記第１調整値と異なる、ことと、
前記第２調整値に基づいて前記第３エッジを選択することと、
によって前記第３エッジを選択するように構成されている、
請求項１８のプロセッサ。
【請求項２０】
前記読み出しモジュールは、
前記第１周波数についての前記要求に応じて、前記第１調整値から前記第２調整値に変更するように構成されている、
請求項１９のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッサは、通常、１つ以上のクロック信号を用いて、プロセッサのモジュールでの論理動作を同期させることによって、セットアップエラー、競合状態等のエラーを防止する。典型的なプロセッサは、プロセッサの異なる部分に対して異なるクロック信号を用いており、各プロセッサ部分はクロックドメインと呼ばれる。異なるクロックドメインを用いることによって、プロセッサは、異なる部分を異なる周波数で動作させ、論理動作のタイミングに対して異なる部分を相対的に独立して動作させる。例えば、プロセッサは、異なるクロックドメインを異なる周波数のクロック信号と同期させることによって、処理効率を向上させることができる。さらに、プロセッサは、異なるクロック信号を同期させることなく、異なるクロック信号を異なるクロックドメインに提供することによって、プロセッサにおけるクロック管理及び信号ルーティングを単純化することができる。しかしながら、データがプロセッサのクロックドメイン間で通信される場合に、メタスタビリティエラーが発生する可能性がある。かかるエラーは、フリップフロップのセット等のメタスタビリティ回路をクロックドメイン間に含むことによって改善され、データ転送を実施することが可能である。しかしながら、このようなメタスタビリティ回路は、レイテンシが加わるだけでなく、制御信号遅延に対処するための追加の回路（追加のバッファエントリ等）を必要とする場合がある。また、かかるエラーは、先入れ先出し（ＦＩＦＯ）バッファを用いてクロックドメイン間でデータを転送することによって減らすことができるが、従来のＦＩＦＯでは、１つ以上のクロックドメインの電圧ドループ又は電力モードの変更のために、１つのタイムドメインに対するクロック周波数が変更されると、データ転送においてエラーがもたらされる可能性がある。
【０００２】
添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、１つのクロックドメインでのクロック周波数の変更に応じて、クロックドメイン間のデータ転送の最小セットアップ時間を維持するプロセッサのブロック図である。
【図２】いくつかの実施形態による、図１のプロセッサのクロックドメイン間のデータ転送の最小セットアップ時間を維持するＦＩＦＯ読み出し／書き込み制御モジュールを示す図である。
【図３】いくつかの実施形態による、図１のプロセッサのクロックドメインでの周波数変更に応じて、最小セットアップ時間を維持する図２のＦＩＦＯ読み出し／書き込み制御モジュールを示す図である。
【図４】いくつかの実施形態による、図１のプロセッサの先入れ先出し（ＦＩＦＯ）読み出し／書き込み制御モジュールのブロック図である。
【図５】いくつかの実施形態による、１つのクロックドメインでのクロック信号の周波数変更に応じて、プロセッサのクロックドメイン間のデータ転送の最小セットアップ時間を維持する方法のフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図５は、プロセッサのクロックドメイン間で転送されるデータの最小セットアップ時間を維持するための技術を示し、少なくとも１つのクロックドメインのクロック信号の周波数変更に応じて最小セットアップ時間を維持することを含む。プロセッサは、各クロックドメインにおいてクロックエッジを監視する１つ以上の制御モジュールを使用して、データが記憶場所に書き込まれた後に転送クロックドメイン内で最小数の位相が経過するまで、当該データが受信クロックドメインによって記憶場所から読み出されないことを確実にすることによって、当該データが記憶場所に正確に記憶されるのに十分なセットアップ時間があることを確実にし、データ転送エラーを減らす。さらに、制御モジュールは、クロック周波数の変更が１つのクロックドメインでの電力モードの変更の結果であるか、電圧ドループの結果であるか、これらの組み合わせであるかどうかにかかわらず、一方又は両方のクロックドメインでのクロック周波数の変更に応じて、最小セットアップ時間を維持する。１つ以上の制御モジュールを用いて最小セットアップ時間を維持することによって、プロセッサは、特に何れかのクロックドメインで転送プロセスを再開することなく、クロック周波数の変更に応じてデータを正確に転送し続ける。プロセッサは、クロックドメイン間の正確なデータ転送をサポートしながら、処理効率を高め、消費電力を削減する。
【０００５】
いくつかの実施形態では、データを転送するためにプロセッサによって使用される記憶場所は、複数のエントリを有する先入れ先出し（ＦＩＦＯ）キューである。各クロックドメインは、ＦＩＦＯにアクセスするためのポインタのセットを管理し、制御モジュールは、各ポインタ値を調整してＦＩＦＯに提供するときを管理することによって、ＦＩＦＯがいつ書き込まれ、いつ読み出されるかを制御する。これにより、制御モジュールは、データを読み出す前に、ＦＩＦＯに書き込まれたデータについての最小セットアップ時間を確立することを確実にする。例えば、いくつかの実施形態において、制御モジュールは、２つのクロックドメインの「より遅い」クロック信号（つまり、より低い周波数を有する２つのクロックドメインのクロック信号）の１サイクル（１回の完了期間）の最小セットアップ時間を実施する。制御モジュールは、最小セットアップ時間を実施するために、２つのクロック信号のクロックエッジを追跡し、転送クロックドメインにおいて所定の記憶場所に書き込むための書き込みポインタを供給した後に最小セットアップ時間が経過したときにのみ、受信クロックドメインにおいてＦＩＦＯの前記所定の記憶場所を読み出すための読み出しポインタをＦＩＦＯに提供することを確実にする。最小セットアップ時間の実施は、場合によって、受信クロックドメインの個々のクロックサイクルに対するＦＩＦＯからの読み出しを選択的にスキップ又は省略することを制御モジュールに要求する。本明細書でさらに説明するように、制御モジュールを用いて最小セットアップ時間を実施することによって、プロセッサは、クロックドメイン間でデータフローを維持しながら、少なくとも１つのクロックドメインに供給されるクロック信号の周波数を調整する。対照的に、従来のクロックドメイン同期回路は、通常、１つのクロックドメインでのクロック周波数の変更に応じてリセットプロセスを受けることによって、さらなる電力を消費し、データ転送の速度及び効率を低下させる。
【０００６】
図１は、いくつかの実施形態による、クロックドメイン間で転送されるデータを記憶するための最小セットアップ時間を維持するプロセッサ１００を示す図である。プロセッサ１００は、計算可能な様々な電子デバイス（例えば、サーバ、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、計算可能な携帯電話（例えば、「スマートフォン」）、計算可能な時計又は他のウェアラブルアイテム、パーソナルデジタルアシスタント（ＰＤＡ）、ゲーム機等）に実装されている。図示した例では、プロセッサ１００は、コアクロックドメイン１０２及びＬ３クロックドメイン１０３と示された２つのクロックドメインを備える。コアクロックドメイン１０２は、プロセッサコア（図示省略）の動作に関連するモジュールを含み、このプロセッサコアによるアクセスのためにデータを記憶するレベル２（Ｌ２）キャッシュ１２０を含む。本明細書でさらに説明するように、Ｌ３クロックドメイン１０３は、Ｌ２キャッシュ１２０によるアクセスのためにデータを記憶するレベル３（Ｌ３）キャッシュを含む。
【０００７】
いくつかの実施形態において、Ｌ３キャッシュ１２６は、コアクロックドメイン１０２のプロセッサコア用のＬ２キャッシュ１２０とメモリ階層を形成する。また、メモリ階層は、プロセッサコア用のＬ１キャッシュ（図示省略）と、メインメモリ（図示省略）と、を含む。プロセッサ１００は、メモリ管理スキームに基づいて異なるレベルのメモリ階層間でデータを転送することによって、プロセッサコアによってアクセスされる可能性の高いデータを、メモリ階層において当該プロセッサコアの近くに移動させ、プロセッサコアによってアクセスされる可能性の低いデータを、メモリ階層において当該プロセッサコアから遠くに移動させる。いくつかの実施形態において、プロセッサ１００は、異なるプロセッサコア及び対応するＬ２キャッシュをサポートするために、コアクロックドメイン１０２と同様の追加のコアクロックドメイン（図示省略）を含む。各コアクロックドメインは、自身のＬ１キャッシュ及びＬ２キャッシュを含む自身のメモリ階層を有するが、プロセッサ１００の複数のメモリ階層は、Ｌ３キャッシュ１２６を共有する。
【０００８】
プロセッサ１００は、コアクロックドメイン１０２での処理効率を維持しながらＬ３キャッシュ１２６の共有を容易にするために、異なるクロック信号をコアクロックドメイン１０２及びＬ３クロックドメイン１０３に供給して、各ドメインの動作を同期させる。図示した例では、コアクロックドメイン１０２に供給されるクロック信号は「ＣＣＬＫ」と示されており、Ｌ３クロックドメイン１０３に供給されるクロック信号は「Ｌ３ＣＬＫ」と示されている。本明細書でさらに説明するように、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫは非同期であるため、異なる周波数を有することができるが、クロック信号が共通のＰＬＬソースから得られることから、追跡可能な位相関係を有する。
【０００９】
特に、プロセッサ１００は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫを生成するために、位相同期ループ（ＰＬＬ）１０５及びクロックジェネレータ１０６を用いる。ＰＬＬ１０５は、一般的に、基準水晶等のクロック源（図示省略）によって供給される安定した発振信号と位相が同期した「ＶＣＯ＿ＣＬＫ」と示されるクロック信号を生成するように構成された電圧制御発振回路である。いくつかの実施形態において、ＰＬＬ１０５は、互いに位相がずれた複数のクロック信号を供給し、複数のクロック信号のうち選択されたクロック信号を組み合わせることによって、異なる周波数でのクロック信号の生成をサポートする。例えば、いくつかの実施形態において、ＰＬＬ１０５は、他のクロック信号と位相が少なくとも４５度ずれている８つのクロック信号を供給し、クロック信号の生成に関して１／８整数分周ステップをサポートする。
【００１０】
クロックジェネレータ１０６は、ＶＣＯ＿ＣＬＫ信号に基づいてクロック信号ＣＣＬＫ，Ｌ３ＣＬＫ信号を生成するように構成されたモジュールである。いくつかの実施形態において、上述したように、ＰＬＬ１０５は、互いに位相がずれた複数のクロック信号を供給し、クロックジェネレータ１０６は、クロック信号毎にクロック周波数を独立して確立する制御シグナリングに基づいて複数のクロック信号を選択的に組み合わせることによって、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫ信号を生成する。図示した例において、制御シグナリングは、動的電圧及び周波数スケーリング（ＤＶＦＳ）モジュール１０７及び電圧ドループモジュール１０８と示された２つのモジュールによって提供される。
【００１１】
ＤＶＦＳモジュール１０７は、概して、コアクロックドメイン１０２及びＬ３クロックドメイン１０３の各々の電力モードを決定し、各々の電力モードに基づいてクロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々の周波数を示す、図１において「ＦＲＥＱ」と示された信号として表された制御シグナリングを提供するように構成されている。いくつかの実施形態において、ＤＶＦＳモジュール１０７は、クロック信号毎の周波数を除数値として示し、説明のために「ｆＶＣＯ」と示されたＶＣＯ＿ＣＬＫクロック信号の周波数は、この除数値によって除算される。したがって、例えば、ＤＶＦＳモジュール１０７は、クロック信号ＣＣＬＫの周波数を、ｆＶＣＯを２．５で除算したものとして示し、クロック信号Ｌ３ＣＬＫの周波数を、ｆＶＣＯを１．７５で除算したものとして示す。例によって示すように、ＤＶＦＳモジュール１０７は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの周波数を、各々の電力モードに基づいて独立して設定する。
【００１２】
電圧ドループモジュール１０８は、コアクロックドメイン１０２及びクロックドメイン１０３の一方又は両方において基準電圧に対する電圧ドループを検出し、これに応じて、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの一方又は両方の周波数の調整を示す、図１において「ＤＲＯＯＰ」と示された信号として表された制御シグナリングを提供する。電圧ドループモジュール１０８は、電圧ドループが停止した（すなわち、基準電圧が公称レベルに戻った）のを検出したことに応じて、ＤＲＯＯＰ信号を介して制御シグナリングを提供し、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの一方又は両方の調整を終了させる。
【００１３】
クロックジェネレータ１０６は、ＤＲＯＯＰ及びＦＲＥＱ信号に基づいて、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々の周波数を識別する。いくつかの実施形態において、クロックジェネレータ１０６は、ＦＲＥＱ信号によって示されるクロック信号毎の公称周波数を識別することによって周波数を識別し、次いで、ＤＲＯＯＰ信号に基づいてクロック信号の周波数を調整する。例えば、クロックジェネレータ１０６は、ＦＲＥＱ信号に基づいて、ｆＶＣＯであるクロック信号ＣＣＬＫの公称クロック周波数を２で除算するように決定する。さらに、クロックジェネレータ１０６は、ＤＲＯＯＰ信号がコアクロックドメイン１０２における電圧ドループを示すことを判別する。これに応じて、クロックジェネレータ１０６は、ｆＶＣＯであるクロック信号ＣＣＬＫの周波数を２で除算するように調整して、電圧ドループがプロセッサコア又は他のモジュールの誤動作を引き起こさないことを確実にする。また、クロックジェネレータ１０６は、ＦＲＥＱ信号に基づいて、ｆＶＣＯであるクロック信号Ｌ３ＣＬＫの公称周波数を１．７５で除算するように決定する。さらに、クロックジェネレータ１０６は、ＤＲＯＯＰ信号がＬ３クロックドメイン１０３において電圧ドループがないことを示していると判別し、クロック信号Ｌ３ＣＬＫの周波数を公称周波数に維持する。
【００１４】
クロックジェネレータ１０６は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫを各々の決定された周波数で生成する。いくつかの実施形態において、クロックジェネレータ１０６は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々の周波数で各クロック信号を生成するようにＶＣＯ＿ＣＬＫ信号の位相シフトバージョンを独立して組み合わせることによって、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々を生成する。上述したように、クロックジェネレータ１０６は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫが非同期になるように、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々の周波数を他から独立して設定及び変更する。
【００１５】
コアクロックドメイン１０２及びＬ３クロックドメイン１０３は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの非同期性のために、それらの対応するクロック信号のうち１つのみに基づいてデータを直接確実に通信することができない。したがって、コアクロックドメイン１０２とＬ３クロックドメイン１０３との間のデータ通信を容易にするために、プロセッサ１００は、複数のエントリを有するＦＩＦＯ１３０を含み、各エントリは、コアクロックドメイン１０２及びＬ３クロックドメイン１０３の両方によってアクセスされる、個別にアドレス指定可能な記憶場所に存在する。例えば、いくつかの実施形態において、ＦＩＦＯ１３０は、３つのエントリを含む。説明を容易にするために、ＦＩＦＯ１３０は、データをコアクロックドメイン１０２からＬ３クロックドメイン１０３に転送するために用いられ、プロセッサ１００は、本明細書で説明する技術に従って、データをＬ３クロックドメイン１０３からコアクロックドメイン１０２に転送するために用いられる他のＦＩＦＯ（図示省略）を備えると想定する。
【００１６】
コアクロックドメイン１０２及びＬ３クロックドメイン１０３の各々は、ＦＩＦＯ１３０にアクセスするために、読み出し／書き込みモジュール１２２及び読み出し／書き込みモジュール１２４と示された読み出し／書き込みモジュールを含む。読み出し／書き込みモジュール１２２，１２４の各々は、ＦＩＦＯ１３０にアクセスするためのポインタのセットを独立して管理する。特に、読み出し／書き込みモジュール１２２は、書き込みポインタを用いて、書き込まれるＦＩＦＯ１３０の次のエントリを示す。読み出し／書き込みモジュール１２２は、Ｌ３クロックドメイン１０３への転送用のデータをＬ２キャッシュ１２０から受信したことに応じて、当該データをＦＩＦＯ１３０のエントリに書き込み、次いで、ＦＩＦＯ１３０の次のエントリを指すように書き込みポインタを調整する。書き込まれたエントリがＦＩＦＯ１３０の最後のエントリである場合、読み出し／書き込みモジュール１２２は、ＦＩＦＯ１３０の最初のエントリを指すように書き込みポインタを調整する。したがって、ＦＩＦＯ１３０が３つのエントリを有すると仮定すると、書き込みポインタは、最初にエントリ０を指し、次にエントリ１を指し、その次にエントリ２を指し、そしてエントリ０に戻る。
【００１７】
読み出し／書き込みモジュール１２４は、読み出しポインタを用いて、読み出されるＦＩＦＯ１３０の次のエントリを示す。読み出し／書き込みモジュール１２４は、読み出しポインタによって示されるエントリから読み出しを行い、次に、ＦＩＦＯ１３０の次のエントリを指すように読み出しポインタを調整する。上述した書き込みポインタと同様に読み出しエントリがＦＩＦＯ１３０の最後のエントリである場合、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０の最初のエントリを指すように読み出しポインタを調整する。
【００１８】
読み出し／書き込みモジュール１２２，１２４の各々は、これらのクロックドメインに対応するクロック信号（すなわち、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々）によって同期される。上記で説明したように、これらのクロック信号は非同期である。書き込まれたデータが読み出される前に、書き込まれたデータがＦＩＦＯ１３０のエントリに適切に記憶されたことを確実にするために、読み出し／書き込みモジュール１２４は、クロック信号のエッジを追跡し、ＦＩＦＯ１３０のエントリに書き込まれたデータの最小セットアップ時間を維持する。読み出し側（データが読み出されているクロックドメイン）のクロック信号がより高い周波数を有するいくつかの実施形態では、読み出し／書き込みモジュール１２４は、読み出し／書き込みモジュール１２２によってエントリが書き込まれた後のＣＣＬＫクロック信号の少なくとも１クロックサイクルの間、ＦＩＦＯ１３０のエントリを読み出さないことを確実にする。書き込み側（データをＦＩＦＯ１３０に書き込むクロックドメイン）のクロック信号がより高い周波数を有するいくつかの実施形態では、読み出し／書き込みモジュール１２４は、以前に書き込まれたデータの最小セットアップ時間に達するまでデータを書き込まないことを確実にする。これにより、読み出し／書き込みモジュール１２２，１２４は、データが他の読み出し／書き込みモジュールによって読み出される場合に、エントリにおいて当該データが遷移中ではない（すなわち、書き込まれていない）ことを確実にする。さらに、読み出し／書き込みモジュール１２２，１２４は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの何れか一方に周波数の変更に応じて最小セットアップ時間を維持することを確実にすることによって、データの再転送又はデータ転送回路のリセットを必要とせずに、クロック周波数の変更に応じた適切なデータ転送を確実にする。
【００１９】
いくつかの実施形態において、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫのエッジを直接追跡しない。代わりに、図４に関してさらに後述するように、読み出し／書き込みモジュール１２４は、クロック信号Ｌ３ＣＬＫとクロック信号ＶＣＯ＿ＣＬＫとの間で経過した位相の追跡を続けることによって、又は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫ信号の何れか一方の周波数における変更の指示を監視することによって、クロック信号ＣＣＬＫのエッジを間接的に追跡する。読み出し／書き込みモジュール１２４は、クロック信号の経過した位相及び周波数の両方を監視することによって、最小セットアップ時間の維持を確実にする。特に、クロック信号ＣＣＬＫのエッジの正確なタイミングは、読み出し／書き込みモジュール１２４によって直接観測することができないが、読み出し／書き込みモジュール１２４は、さらに後述するように、経過した位相及び周波数変更の両方の監視によって、少なくとも最小セットアップ時間を実施することができる。
【００２０】
図２は、いくつかの実施形態による、エントリをＦＩＦＯ１３０から読み出すための最小セットアップ時間を維持する読み出し／書き込みモジュール１２４の一例を示す図である。特に、図２は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫ信号の各々の例に対応する波形２４０，２４１を示している。波形２４０，２４１の各々は、ＣＣＬＫのサイクル２５０〜２５５（波形２４０）、Ｌ３ＣＬＫのサイクル２６０〜２６７（波形２４１）に分割されている。また、図２は、サイクル２５０〜２５５毎に、読み出し／書き込みモジュール１２２によって書き込まれるＦＩＦＯ１３０の位置を示しており、サイクル２６０〜２６７毎に、読み出し／書き込みモジュール１２４によって読み出されるＦＩＦＯ１３０の位置を示している。したがって、図示した例では、読み出し／書き込みモジュール１２２は、サイクル２５０中、及び、サイクル２５３中に再度、ＦＩＦＯ１３０の位置０に書き込みを行い、読み出し／書き込みモジュールは、サイクル２６２中、及び、サイクル２６６中に再度、ＦＩＦＯ１３０の位置０の読み出しを行う。
【００２１】
図２の例では、ＣＣＬＫの各サイクルがクロック信号の立ち上がりエッジ上で開始すると想定する。したがって、読み出し／書き込みモジュール１２２は、クロック信号ＣＣＬＫの立ち上がりエッジの各々に応じて、ＦＩＦＯ１３０の対応する位置への書き込みを開始する。同様に、Ｌ３ＣＬＫの各サイクルは、クロック信号の立ち上がりエッジで開始するので、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０から読み出す場合に、クロック信号Ｌ３ＣＬＫの立ち上がりエッジに応じて、対応する位置の読み出しを開始する。しかしながら、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０への書き込みのための最小セットアップ時間の維持を確実にするために、選択されたサイクル（かかるサイクルは、図２において「ＮＯ  ＲＥＡＤ」と示されている）中にＦＩＦＯ１３０からの読み出しを行わない。
【００２２】
図示した例では、クロック信号ＣＣＬＫは、クロック信号Ｌ３ＣＬＫよりも遅い周波数であることから、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫの各サイクル中にＦＩＦＯ１３０のエントリにデータを書き込む。読み出し／書き込みモジュール１２４は、書き込み毎に１つのＣＣＬＫサイクルの最小セットアップ時間を維持するために、クロック信号ＣＣＬＫのエッジを監視し、最小セットアップ時間を満たさないクロック信号Ｌ３ＣＬＫのサイクルについてのＦＩＦＯ１３０からの読み出しを抑制する。したがって、クロック信号Ｌ３ＣＬＫのサイクル２６１では、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０の位置０から読み出す準備ができている。しかしながら、読み出し／書き込みモジュール１２４は、サイクル２６１の開始時に、読み出し／書き込みモジュール１２２がサイクル２５０の開始時に位置０への書き込みを開始してからＣＣＬＫのフルサイクルが経過していないと判別する。したがって、読み出し／書き込みモジュール１２４は、例えば、サイクル２６１中に読み出しポインタをＦＩＦＯ１３０に提供しないことによって、サイクル２６１中でのＦＩＦＯ１３０からの読み出しを抑制する。サイクル２６２では、読み出し／書き込みモジュール１２４は、読み出し／書き込みモジュール１２２による位置０への書き込みが開始されてからＣＣＬＫのフルサイクルが経過したと判別する。これに応じて、読み出し／書き込みモジュール１２４は、サイクル２６２の開始時に（すなわち、立ち上がりエッジに応じて）位置０の読み出しを開始する。
【００２３】
サイクル２６３では、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０の位置１から読み出す準備ができている。読み出し／書き込みモジュール１２４は、サイクル２５１中に位置１が書き込まれてからＣＣＬＫのフルサイクルが経過したと判別し、これにより、サイクル２６３中に位置１を読み出す。サイクル２６４では、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０の位置０から読み出す準備ができている。しかしながら、読み出し／書き込みモジュール１２４は、サイクル２６４の開始時に、読み出し／書き込みモジュール１２２がサイクル２５２の開始時に位置２への書き込みが開始されてからＣＣＬＫのフルサイクルが経過していないと判別する。したがって、読み出し／書き込みモジュール１２４は、サイクル２６４中でのＦＩＦＯ１３０からの読み出しを抑制する。次のサイクル２６５では、読み出し／書き込みモジュール１２４は、読み出し／書き込みモジュール１２２が位置２への書き込みを開始してからＣＣＬＫのフルサイクルが経過したと判別する。これに応じて、読み出し／書き込みモジュール１２４は、サイクル２６４の開始時に（すなわち、立ち上がりエッジに応じて）位置２の読み出しを開始する。したがって、図２に示す例では、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫが非同期であっても、データが読み出される前にＦＩＦＯ１３０に書き込まれるデータの最小セットアップ時間を維持する。
【００２４】
図２が、ＦＩＦＯ１３０からの読み出しを行う読み出し／書き込みモジュール１２４の一例を示していることを理解するであろう。いくつかの実施形態において、読み出し／書き込みモジュール１２４は、書き込まれたデータの最小セットアップ時間を維持するために、同様にＦＩＦＯ１３０への書き込みを行う。特に、読み出し／書き込みモジュール１２４は、クロック信号Ｌ３ＣＬＫのサイクルの選択中にデータを書き込むための書き込みポインタをＦＩＦＯ１３０に提供する。このサイクルは、以前にエントリに書き込まれたデータの最小セットアップ時間に達した後にデータが読み出し／書き込みモジュール１２２によって読み出されるまで、データがエントリに書き込まれないことを確実にするように選択される。したがって、読み出し／書き込みモジュールがデータをエントリに書き込む準備ができている所定のクロックサイクルでは、読み出し／書き込みモジュール１２４は、エントリに書き込まれたデータの最小セットアップ時間に達していないと判別したことに応じて、次のクロックサイクルまでＦＩＦＯ１３０への書き込みポインタの供給を抑制することによって、書き込まれたデータの最小セットアップ時間を満たすことを確実にする。
【００２５】
いくつかの実施形態において、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫのうち１つ以上が周波数変更を受けた場合であっても最小セットアップ時間を維持するように構成されている。いくつかの実施形態による一例を図３に示す。図２と同様に、図３は、クロック信号ＣＣＬＫ，Ｌ３ＣＬＫの各々の例に対応する波形３４０，３４１を示している。波形３４０，３４１の各々は、ＣＣＬＫのサイクル３５０〜３５４（波形３４０）、Ｌ３ＣＬＫのサイクル３６０〜３６７（波形２４１）に分割されている。図３は、サイクル３５０〜３５４毎に、読み出し／書き込みモジュール１２２によって書き込まれるＦＩＦＯ１３０の位置を示しており、サイクル３６０〜３６７毎に、読み出し／書き込みモジュール１２４によって読み出されるＦＩＦＯ１３０の位置を示している。
【００２６】
図２の例と同様に、図３の例において、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０への書き込み毎に１つのＣＣＬＫサイクルの最小セットアップ時間を維持する。しかしながら、図３の例において、クロック信号ＣＣＬＫは、時間３７１で周波数を変更する。周波数の変更は、コアクロックドメイン１０２の電力モードの変更、電圧ドループモジュール１０８によって検出されたコアクロックドメイン１０２における電圧ドループ、又は、これらの組み合わせの結果であってもよい。読み出し／書き込みモジュール１２４は、周波数の変更に応じて、１つのＣＣＬＫクロックサイクルの最小セットアップ時間を維持するように、ＦＩＦＯ１３０のエントリが読み出されるタイミングを調整する。例えば、Ｌ３ＣＬＫのサイクル３６４では、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０の位置２から読み出す準備ができている。しかしながら、読み出し／書き込みモジュール１２４は、時間３７１でのクロック信号ＣＣＬＫの周波数の低下によってサイクルが長くなったので、クロック信号ＣＣＬＫのサイクル３５２中に位置２に書き込まれたデータの最小セットアップ時間に達していないと判別する。読み出し／書き込みモジュール１２４は、最小セットアップ時間に達していないと判別したことに応じて、サイクル３６４中でのＦＩＦＯ１３０からの読み出しを抑制する。次のサイクル３６５では、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫの調整された周波数の下で、データを位置２へ書き込むための最小セットアップ時間に達したと判別し、これに応じて、位置２から読み出すための読み出しポインタをＦＩＦＯ１３０に提供する。したがって、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫのエッジの追跡を続けることによって、クロック信号ＣＣＬＫの周波数が変更された場合であっても最小セットアップ時間を維持するように、ＦＩＦＯ１３０のエントリを読み出すタイミングを調整する。
【００２７】
図４は、いくつかの実施形態による、読み出し／書き込みモジュール１２４のブロック図である。図示した例では、読み出し／書き込みモジュール１２４は、さらに後述するように、ＶＣＯ＿ＣＬＫ信号の経過した位相を追跡することによって、クロック信号ＣＣＬＫのエッジを追跡する。特に、クロック信号ＣＣＬＫがＶＣＯ＿ＣＬＫ信号に基づいているので、ＶＣＯ＿ＣＬＫ信号の経過した位相は、クロック信号ＣＣＬＫのエッジの時間的位置を相対的に示している。したがって、読み出し／書き込みモジュール１２４は、ＶＣＯ＿ＣＬＫ信号の経過した位相を追跡することによって、クロック信号ＣＣＬＫのエッジを直接検知することなく、ＦＩＦＯ１３０に書き込まれたデータの最小セットアップ時間に達したか否かを識別することができる。
【００２８】
図４の例において、読み出し／書き込みモジュール１２４は、制御モジュール４４０と、読み出しポインタモジュール４４２と、書き込みポインタモジュール４４４と、ＶＣＯ＿ＣＬＫ位相カウンタ４４６と、位相カウンタ調整モジュール４４８と、を備える。読み出しポインタモジュール４４２は、読み出し／書き込みモジュール１２４用の読み出しポインタを記憶するように構成されている。読み出しポインタモジュールは、「ＲＤ」と示された信号のアサートに応じて、ＦＩＦＯ１３０の次の位置を指すように読み出しポインタを調整し、読み出しポインタをＦＩＦＯ１３０に提供する。これに応じて、ＦＩＦＯ１３０は、読み出しポインタによって示される位置を読み出し、読み出しデータを、Ｌ３キャッシュ１２６に転送するために読み出し／書き込みモジュール１２４に提供する。
【００２９】
書き込みポインタモジュール４４４は、読み出しポインタモジュール４４２と同様に、データをＦＩＦＯ１３０に書き込むように構成されている。特に、書き込みポインタモジュール４４４は、ＦＩＦＯ１３０に書き込まれるデータと、読み出し／書き込みモジュール１２４用の書き込みポインタと、を記憶する。読み出しポインタモジュールは、「ＷＲＴ」と示された信号のアサートに応じて、ＦＩＦＯ１３０の次の位置を指すように書き込みポインタを調整し、この位置に書き込まれるデータと書き込みポインタとをＦＩＦＯ１３０に提供する。これに応じて、ＦＩＦＯ１３０は、書き込みポインタによって示されたデータ位置に書き込みを行う。
【００３０】
制御モジュール４４０は、図２及び図３に関して上述したように、最小セットアップ時間を維持するために、ＦＩＦＯ１３０との間でデータを読み書きするためのＲＤ及びＷＲＴ信号を生成するように構成されている。特に、ＦＩＦＯ１３０からの読み出しに関して、制御モジュール４４０は、本明細書でさらに説明するようにクロック信号ＣＣＬＫのエッジを識別し、クロック信号Ｌ３ＣＬＫの立ち上がりエッジと、読み出し／書き込みモジュール１２２が、読み出されるデータをＦＩＦＯ１３０の次のエントリに書き込んでからＣＣＬＫの少なくとも１つのクロックサイクルの最小セットアップ時間が経過したと判別したことと、の両方に応じてＲＤ信号をアサートする。制御モジュール４４０は、クロック信号Ｌ３ＣＬＫの立ち上がりエッジに応じて、読み出し／書き込みモジュール１２２が読み出されるデータをＦＩＦＯ１３０の次にエントリに書き込んでから少なくとも１つのクロック信号の最小セットアップ時間が経過していないと判別した場合に、ＲＤ信号をネゲート状態に維持することによって、ＦＩＦＯ１３０からの読み出しを抑制する。
【００３１】
制御モジュール４４０は、クロック信号ＣＣＬＫのエッジを監視するために、ＶＣＯ＿ＣＬＫ位相カウンタ４４６及び位相カウンタ調整モジュール４４８を用いる。ＶＣＯ＿ＣＬＫ位相カウンタ４４６は、所定値から０までカウントダウンし、次に当該所定値にリセットするカウンタである。ＶＣＯ＿ＣＬＫ位相カウンタは、所定値からカウントダウンするために、クロック信号Ｌ３ＣＬＫの各立ち上がりエッジに応じて、位相カウンタ調整モジュール４４８によって記憶された調整量だけ、記憶した値を減らす。調整値は、クロック信号ＣＣＬＫの位相毎のＶＣＯ＿ＣＬＫ信号の位相数を反映する。制御モジュール４４０は、クロック信号ＣＣＬＫの周波数に基づいて調整量を設定する。特に、クロックジェネレータ１０６（図１）は、クロック信号ＣＣＬＫの周波数の変更に応じて、Ｆ＿ＣＨＮＧ信号を介して変更の指示を提供する。これに応じて、制御モジュール４４０は、位相カウンタ調整モジュール４４８において調整値を調整して、新たな周波数でのクロック信号ＣＣＬＫの位相毎のＶＣＯ＿ＣＬＫ信号の新たな位相数を反映させる。
【００３２】
ＶＣＯ＿ＣＬＫ位相カウンタ４４６は、０に達すると、信号を制御モジュール４４０にアサートする。信号のアサートは、クロック信号ＣＣＬＫに対するＶＣＯ＿ＣＬＫ信号の位相の関係に基づいているので、クロック信号Ｌ３ＣＬＫに対するクロック信号ＣＣＬＫのエッジの相対位置を制御モジュール４４０に示す。したがって、制御モジュール４４０は、ＶＣＯ＿ＣＬＫ位相カウンタ４４６による信号のアサートに基づいて、読み出し／書き込みモジュール１２２がデータをＦＩＦＯ１３０のエントリへ書き込んだ後に最小セットアップ時間に達したか否かを判別する。さらに、位相カウンタ調整モジュール４４８がクロック信号ＣＣＬＫの周波数の変更に基づいて更新されるので、制御モジュール４４０は、かかる周波数の変更に応じて最小セットアップ時間を維持する。いくつかの実施形態において、読み出し／書き込みモジュール１２４は、カウンタ４４６及び調整モジュール４４８と同様にカウンタ及び調整値を使用して、また、クロック信号ＣＣＬＫとクロック信号Ｌ３ＣＬＫとの間の位相及び周波数関係を反映する調整値を使用して、クロック信号ＣＣＬＫの位相を追跡する。これにより、制御モジュール４４０は、ＦＩＦＯ１３０への読み書き毎に、対応するメモリアクセス動作の最小セットアップ時間に達したか否か、したがって、ＦＩＦＯ１３０の位置にアクセス可能か否かを識別することができる。
【００３３】
図５は、いくつかの実施形態による、プロセッサクロックドメイン間でＦＩＦＯからデータを読み出すための最小セットアップ時間を維持する方法５００のフロー図である。説明のために、方法５００は、図１のプロセッサ１００における例示的な実装に関して説明される。ブロック５０２において、Ｌ３クロックドメイン１０３の読み出し／書き込みモジュール１２４は、コアクロックドメイン１０２のクロック信号ＣＣＬＫのエッジを監視する。ブロック５０４において、読み出し／書き込みモジュールは、クロック信号Ｌ３ＣＬＫの次の立ち上がりエッジを受信したか否かを識別する。そうでなければ、方法は、ブロック５０２に戻る。
【００３４】
ブロック５０４に戻り、クロック信号Ｌ３ＣＬＫの立ち上がりエッジを受信したことに応じて方法フローがブロック５０６に移行し、読み出し／書き込みモジュール１２４は、クロック信号ＣＣＬＫの監視されたエッジに基づいて、読み出されるデータがＦＩＦＯ１３０の次のエントリに書き込まれてから最小セットアップ時間に達したか否かを判別する。達している場合、方法フローがブロック５０８に移行し、読み出し／書き込みモジュール１２４は、ＦＩＦＯ１３０の次のエントリを読み出すための読み出しポインタを発行し、読み出しデータをＬ３キャッシュ１２６に提供する。方法フローは、ブロック５０２に戻る。ブロック５０６に戻ると、最小セットアップ時間に達していない場合には、方法フローがブロック５１０に移行し、読み出し／書き込みモジュール１２４は、クロック信号Ｌ３ＣＬＫの現在のサイクルについて読み出しポインタを発行しないことによって、ＦＩＦＯ１３０の読み出しを抑制する。
【００３５】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３６】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019522858.tif 000003
【図２】
2019522858.tif 000004
【図３】
2019522858.tif 000005
【図４】
2019522858.tif 000006
【図５】
2019522858.tif 000007
【手続補正書】
【提出日】平成31年4月11日(2019.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ（１００）の第１クロックドメイン（１０２）において、第１クロック信号（２４０）の第１エッジに基づいてバッファ（１３０）の第１エントリにアクセスすることと、
前記プロセッサの第２クロックドメイン（１０３）において、
前記バッファの前記第１エントリから読み出すために、最小セットアップ時間に基づいて第２クロック信号（２４１）の第２エッジを選択することであって、前記第２クロック信号は前記第１クロック信号と非同期である、ことと、
選択された第２エッジに応じて前記バッファの前記第１エントリにアクセスすることと、
前記第１クロック信号に対する第１周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第３エッジを選択することと、
選択された第２エッジに応じて前記バッファにアクセスすることと、を含む、
方法。
【請求項２】
前記第２クロック信号に対する第２周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第４エッジを選択することと、
選択された第２エッジに応じて前記バッファにアクセスすることと、をさらに含む、
請求項１の方法。
【請求項３】
前記第２エッジを選択することは、前記第２クロックドメインにおいて前記バッファの第１の以前のアクセスの後の前記第２クロック信号の第１位相数の満了に基づいて前記第２エッジを選択することを含み、
前記第３エッジを選択することは、前記第２クロックドメインにおいて前記バッファの第２の以前のアクセスの後の前記第２クロック信号の第３位相数の満了に基づいて前記第３エッジを選択することを含む、
請求項１の方法。
【請求項４】
前記第１クロック信号は第１クロック周波数であり、前記第２クロック信号は前記第１クロック周波数と異なる第２クロック周波数である、
請求項１の方法。
【請求項５】
前記プロセッサ（１０８）における電圧ドループを検出したこと、及び、前記プロセッサ（１０７）の電力モードを変更したことの何れかに応じて前記第１周波数の変更を要求することをさらに含む、
請求項１の方法。
【請求項６】
前記第２エッジを選択することは、
第１調整値に基づいて第３クロック信号の第１位相数をカウントすることと（４４８）、
前記第１位相数に基づいて前記第２エッジを選択することと（４４６）、を含み、
前記第３エッジを選択することは、
第２調整値に基づいて第３クロック信号の第２位相数をカウントすることであって、前記第２調整値は前記第１調整値と異なる、ことと、
前記第２調整値に基づいて前記第３エッジを選択することと、を含む、
請求項１の方法。
【請求項７】
前記第１周波数の変更についての要求に応じて、前記第１調整値から前記第２調整値に変更することをさらに含む、
請求項６の方法。
【請求項８】
前記第３クロック信号に基づいて前記第１クロック信号及び前記第２クロック信号を生成することをさらに含む、
請求項６の方法。
【請求項９】
先入れ先出し（ＦＩＦＯ）バッファ（１３０）と、
第１クロック信号（２４０）の第１エッジに基づいて前記ＦＩＦＯにアクセスする第１クロックドメイン（１０２）と、
読み出しモジュール（１２４）を含む第２クロックドメイン（１０３）と、を備え、
前記読み出しモジュールは、
前記ＦＩＦＯの第１エントリにアクセスするために、最小セットアップ時間に基づいて第２クロック信号（２４１）の第２エッジを選択することであって、前記第２クロック信号は前記第１クロック信号と非同期である、ことと、
選択された第２エッジに応じて前記ＦＩＦＯの前記第１エントリにアクセスすることと、
前記第１クロック信号に対する第１周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第３エッジを選択することと、
選択された第２エッジに応じて前記ＦＩＦＯにアクセスすることと、
を行うように構成されている、
プロセッサ（１００）。
【請求項１０】
前記読み出しモジュールは、
前記第２クロック信号に対する第２周波数の変更についての要求に応じて、前記最小セットアップ時間を維持するように前記第２クロック信号の第４エッジを選択することと、
選択された第２エッジに応じて前記ＦＩＦＯにアクセスすることと、
を行うように構成されている、
請求項９のプロセッサ。
【請求項１１】
前記第２エッジを選択することは、前記第２クロックドメインにおいて前記ＦＩＦＯの第１の以前のアクセスの後の前記第２クロック信号の第１位相数の満了に基づいて前記第２エッジを選択することを含み、
前記第３エッジを選択することは、前記第２クロックドメインにおいて前記ＦＩＦＯの第２の以前のアクセスの後の前記第２クロック信号の第２位相数の満了に基づいて前記第３エッジを選択することを含む、
請求項９のプロセッサ。
【請求項１２】
前記第１クロック信号は第１クロック周波数であり、前記第２クロック信号は前記第１クロック周波数と異なる第２クロック周波数である、
請求項９のプロセッサ。
【請求項１３】
前記プロセッサにおける電圧ドループを検出したこと、及び、前記プロセッサの電力モードを変更したことの何れかに応じて前記第１周波数の変更を要求する電圧ドループモジュール（１０８）をさらに備える、
請求項９のプロセッサ。
【請求項１４】
前記読み出しモジュールは、
第１調整値に基づいて第３クロック信号の第１位相数をカウントすることと、
前記第１位相数に基づいて前記第２エッジを選択することと、
によって前記第２エッジを選択するように構成されている、
請求項９のプロセッサ。
【請求項１５】
前記読み出しモジュールは、
第２調整値に基づいて第３クロック信号の第２位相数をカウントすることであって、前記第２調整値は前記第１調整値と異なる、ことと、
前記第２調整値に基づいて前記第３エッジを選択することと、
によって前記第３エッジを選択するように構成されており、
前記読み出しモジュールは、
前記第１周波数の変更についての要求に応じて、前記第１調整値から前記第２調整値に変更するようにさらに構成されている、
請求項１４のプロセッサ。
【国際調査報告】
2019522858.tif 000008
2019522858.tif 000009