(57)【要約】プロセッサ（１００）は、クロックドメイン（１０２，１０４）間で転送されるデータに関する先入れ先出しバッファ（ＦＩＦＯ）（１１０）への読み出し及び書き込みポインタ（１２５，１１５）にオフセット値（１５５、１５０）を適用する。ポインタオフセットは、クロックドメイン間の周波数比に基づいており、データがＦＩＦＯのエントリに書き込まれるまで受信クロックドメインによって当該エントリからデータが読み込まれないことを保証しつつ、レイテンシを低減し、これにより、データ転送エラーを低減する。プロセッサは、クロックドメインの一方又は両方におけるクロック周波数の変化に応じて、ポインタオフセット値をリセットし、クロック周波数の変化に応じてプロセッサが正確にデータを転送し続けることを可能にする。【選択図】図１
2021506027.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの第１クロックドメインにおいて、バッファの複数のエントリに対する書き込みポインタの位置を、前記バッファの深度及び第１オフセット値に基づいてインクリメントすることと、
前記プロセッサの書き込みモジュールにおいて、前記書き込みポインタが前記バッファの前記複数のエントリのうち第１エントリを示したことに応じて、前記第１エントリにアクセスすることと、
前記プロセッサの第２クロックドメインにおいて、前記バッファの前記複数のエントリに対する読み出しポインタの位置を、前記書き込みポインタの位置及び第２オフセット値に基づいてインクリメントすることであって、前記第２オフセット値は、前記第１クロックドメインの第１クロック信号の第１周波数と、前記第２クロックドメインの第２クロック信号の第２周波数との比に基づいており、前記第２クロック信号は、前記第１クロック信号と非同期である、ことと、
前記プロセッサの読み出しモジュールにおいて、前記読み出しポインタが前記バッファの前記複数のエントリのうち前記第１エントリを示したことに応じて、前記第１エントリにアクセスすることと、を含む、
方法。
【請求項２】
前記第１オフセット値は、前記第１周波数と前記第２周波数との比に基づいている、
請求項１の方法。
【請求項３】
前記第１オフセット値は、前記第１クロックドメインと前記第２クロックドメインとの間のシンクロナイザの深度に基づいている、
請求項１の方法。
【請求項４】
前記書き込みモジュールが前記バッファにアクセスすることを示す信号をアサートすることをさらに含み、前記第１オフセット値は、前記信号のアサートと、前記バッファへの前記書き込みモジュールのアクセスと、の間の前記第１クロック信号のクロックサイクル数に基づいている、
請求項３の方法。
【請求項５】
前記第２オフセット値は、前記第１クロックドメインと前記第２クロックドメインとの間のシンクロナイザの深度に基づいている、
請求項１〜４の何れかの方法。
【請求項６】
前記第１周波数を第１の調整された周波数に調整し、又は、前記第２周波数を第２の調整された周波数に調整するための要求に応じて、前記第１オフセット値及び前記第２オフセット値をリセットすることをさらに含む、
請求項１〜５の何れかの方法。
【請求項７】
前記第１オフセット値及び前記第２オフセット値をリセットすることは、
前記第１の調整された周波数が前記第２の調整された周波数よりも高いことに応じて、前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記書き込みポインタの第１の調整されたオフセット値を決定することと、
前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記読み出しポインタの第２の調整されたオフセット値を決定することと、
前記読み出しモジュールによってアクセスされていないデータを含む前記バッファの前記エントリを空にすることと、
前記バッファの共通エントリにおいて前記書き込みポインタ及び前記読み出しポインタを停止させることと、
前記第１の調整されたオフセット値に基づいて、前記書き込みポインタの位置をインクリメントすることと、
前記第２の調整されたオフセット値に基づいて、前記読み出しポインタの位置をインクリメントすることと、を含む、
請求項６の方法。
【請求項８】
プロセッサの第１クロックドメインにおいて、第１オフセット値に基づいて、深度を有する先入れ先出しバッファ（ＦＩＦＯ）に対する書き込みポインタの位置をオフセットすることと、
前記プロセッサの第２クロックドメインにおいて、第２オフセット値に基づいて、前記ＦＩＦＯに対する読み出しポインタの位置をオフセットすることであって、前記第２オフセット値は、前記第１クロックドメインの第１クロック信号の第１周期と、前記第２クロックドメインの第２クロック信号の第２周期との比に基づいている、ことと、
前記プロセッサの書き込みモジュールにおいて、前記書き込みポインタの位置に基づいて、前記ＦＩＦＯの第１エントリにアクセスすることと、
前記第１エントリにアクセスしたことに応じて、前記ＦＩＦＯに対する前記書き込みポインタをインクリメントすることと、
前記プロセッサの読み出しモジュールにおいて、前記ＦＩＦＯに対する前記読み出しポインタの位置に基づいて、前記ＦＩＦＯの前記第１エントリから読み出すことと、
前記第１エントリから読み出したことに応じて、前記ＦＩＦＯに対する前記読み出しポインタをインクリメントすることと、を含む、
方法。
【請求項９】
前記第１オフセット値は、前記第１周期と前記第２周期との比に基づいている、
請求項８の方法。
【請求項１０】
前記第１オフセット値は、前記第１クロックドメインと前記第２クロックドメインとの間のシンクロナイザの深度に基づいている、
請求項８の方法。
【請求項１１】
前記書き込みモジュールが前記バッファにアクセスすることを示す信号をアサートすることをさらに含み、前記第１オフセット値は、前記信号のアサートと、前記バッファへの前記書き込みモジュールのアクセスと、の間の前記第１クロック信号のクロックサイクル数に基づいている、
請求項１０の方法。
【請求項１２】
前記第１周期を第１の調整された周期に調整し、又は、前記第２周期を第２の調整された周期に調整するための要求に応じて、前記第１オフセット値及び前記第２オフセット値をリセットすることをさらに含む、
請求項８〜１１の何れかの方法。
【請求項１３】
前記第１オフセット値及び前記第２オフセット値をリセットすることは、
前記第１の調整された周波数が前記第２の調整された周波数よりも高いことに応じて、前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記書き込みポインタの第１の調整されたオフセット値を決定することと、
前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記読み出しポインタの第２の調整されたオフセット値を決定することと、
前記読み出しモジュールによってアクセスされていないデータを含む前記バッファの前記エントリを空にすることと、
前記バッファの共通エントリにおいて前記書き込みポインタ及び前記読み出しポインタを停止させることと、
前記第１の調整されたオフセット値に基づいて、前記書き込みポインタの位置をインクリメントすることと、
前記第２の調整されたオフセット値に基づいて、前記読み出しポインタの位置をインクリメントすることと、を含む、
請求項１２の方法。
【請求項１４】
先入れ先出しバッファ（ＦＩＦＯ）と、
第１クロックドメインであって、
書き込みポインタと、
第１シンクロナイザと、
前記ＦＩＦＯに対する前記書き込みポインタの位置に応じて前記ＦＩＦＯの第１エントリにアクセスするように構成された書き込みモジュールであって、前記書き込みポインタの位置が前記ＦＩＦＯの深度及び第１オフセット値に基づいている、書き込みモジュールと、を含む第１クロックドメインと、
第２クロックドメインであって、
読み出しポインタと、
第２シンクロナイザと、
前記ＦＩＦＯに対する前記読み出しポインタの位置に応じて前記ＦＩＦＯの前記第１エントリにアクセスするように構成された読み出しモジュールであって、前記読み出しポインタの位置が前記書き込みポインタの位置及び第２オフセット値に基づいている、読み出しモジュールと、を含む第２のクロックドメインと、
前記第１オフセット値及び前記第２オフセット値を決定するように構成されたコントローラと、を備える、
プロセッサ。
【請求項１５】
前記コントローラは、前記第１クロックドメインの第１クロック信号の第１周波数と、前記第２クロックドメインの第２クロック信号の第２周波数との比に基づいて、前記第１オフセット値を決定するように構成されており、前記第２クロック信号は、前記第１クロック信号と非同期である、
請求項１４のプロセッサ。
【請求項１６】
前記コントローラは、前記第１シンクロナイザの深度に基づいて、前記第１オフセット値を決定するように構成されている、
請求項１４のプロセッサ。
【請求項１７】
前記書き込みモジュールは、前記書き込みモジュールが前記バッファにアクセスすることを示す信号をアサートするように構成されており、前記コントローラは、前記信号のアサートと、前記バッファへの前記書き込みモジュールのアクセスと、の間の前記第１クロック信号のクロックサイクル数に基づいて、前記第１オフセット値を決定するように構成されている、
請求項１４のプロセッサ。
【請求項１８】
前記コントローラは、前記第１クロックドメインの第１クロック信号の第１周波数と、前記第２クロックドメインの第２クロック信号の第２周波数との比に基づいて、前記第２オフセット値を決定するように構成されており、前記第２クロック信号は、前記第１クロック信号と非同期である、
請求項１４のプロセッサ。
【請求項１９】
前記コントローラは、前記第１周波数を第１の調整された周波数に調整し、又は、前記第２周波数を第２の調整された周波数に調整するための要求に応じて、前記第１オフセット値及び前記第２オフセット値をリセットするように構成されている、
請求項１４〜１８の何れかのプロセッサ。
【請求項２０】
前記コントローラは、
前記第１の調整された周波数が前記第２の調整された周波数よりも高いことに応じて、前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記書き込みポインタの第１の調整されたオフセット値を決定することと、
前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記読み出しポインタの第２の調整されたオフセット値を決定することと、
前記読み出しモジュールによってアクセスされていないデータを含む前記ＦＩＦＯの前記エントリを空にすることと、
前記ＦＩＦＯの共通エントリにおいて前記書き込みポインタ及び前記読み出しポインタを停止させることと、
前記ＦＩＦＯの深度及び前記第１の調整されたオフセット値に基づいて、前記書き込みポインタの位置をインクリメントすることと、
前記書き込みポインタの位置及び前記第２の調整されたオフセット値に基づいて、前記読み出しポインタの位置をインクリメントすることと、
を行うように構成されている、
請求項１９のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッサは、通常、１つ以上のクロック信号を利用して、プロセッサのモジュールにおけるロジック動作を同期させることによって、セットアップエラー及び競合状態等のエラーを防止する。通常のプロセッサは、プロセッサの異なる部分に対して異なるクロック信号を利用する。各プロセッサ部分は、クロックドメインと呼ばれる。異なるクロックドメインのクロック信号は、互いに相対的に独立しており、異なるクロックドメインのロジック動作を他のクロックドメインから独立して同期させることができる。例えば、プロセッサは、異なるクロックドメインを異なる周波数のクロック信号を用いて同期させることができ、それによって処理効率を向上させる。さらに、クロック信号が独立していることは、プロセッサにおけるクロック管理及び信号のルーティングの簡略化に役立つ。しかしながら、多くの場合において、異なるクロックドメインのモジュール間でデータを通信する必要がある。これにより、このような通信によってデータにメタスタビリティエラー（meta-stability errors）が生じ得る。これらのエラーは、フリップフロップのセット等のメタスタビリティ回路（シンクロナイザと呼ばれる）を、データ転送を実現するためにクロックドメイン間に含むことによって改善することができる。しかしながら、このようなメタスタビリティ回路によって、レイテンシが増加する場合があり、したがって処理効率に悪影響を及ぼす場合がある。クロックドメイン間でデータを転送するために先入れ先出しバッファ（ＦＩＦＯ）を利用することによってエラーを低減することもできるが、非同期ＦＩＦＯは、帯域幅が低く、レイテンシが大きいことが欠点である。
【０００２】
添付の図面を参照することにより、本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面での同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、クロックドメイン間のデータ転送をサポートするＦＩＦＯの読み出しポインタ及び書き込みポインタにオフセット値を適用するプロセッサのブロック図である。
【図２】いくつかの実施形態による、ＦＩＦＯにおける等しいクロック周波数を有するクロックドメイン間のデータ転送について、書き込みポインタのオフセットも読み出しポインタのオフセットも適用しない図１のＦＩＦＯコントローラを示す図である。
【図３】いくつかの実施形態による、ＦＩＦＯにおける等しいクロック周波数を有するクロックドメイン間のデータ転送について、書き込みオフセット及び読み出しオフセットを適用する図１のＦＩＦＯコントローラを示す図である。
【図４】いくつかの実施形態による、書き込みクロックが読み出しクロックよりも５０％高い周波数を有する場合に、ＦＩＦＯにおける書き込みクロックドメインと読み出しクロックドメインとの間のデータ転送について、書き込みポインタのオフセットも読み出しポインタのオフセットも適用しない図１のＦＩＦＯコントローラを示す図である。
【図５】いくつかの実施形態による、書き込みクロックが読み出しクロックよりも５０％高い周波数を有する場合に、ＦＩＦＯにおける書き込みクロックドメインと読み出しクロックドメインとの間のデータ転送について、書き込みオフセット及び読み出しオフセットを適用する図１のＦＩＦＯコントローラを示す図である。
【図６】いくつかの実施形態による、図１のプロセッサのＦＩＦＯコントローラのブロック図である。
【図７】いくつかの実施形態による、クロックドメインの一方又は両方のクロック信号の周波数の変化に応じて、ＦＩＦＯにおいてクロックドメイン間でデータを転送するために書き込みポインタオフセット及び読み出しポインタオフセットを設定する方法のフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図７は、クロックドメイン間の周波数比に基づいて、プロセッサのクロックドメイン間で転送されるデータのためのＦＩＦＯへの読み出しポインタ及び書き込みポインタにオフセット値を適用して、読み出しポインタ及び書き込みポインタに関連するメタスタビリティ回路によって支配される速度よりも速い速度でデータをＦＩＦＯに書き込み、又は、ＦＩＦＯから読み出すことを可能にする技術を示す。プロセッサは、各クロックドメインでポインタオフセットを設定及び適用する１つ以上のコントローラを使用して、レイテンシを短縮する一方で、データがＦＩＦＯのエントリに書き込まれるまで受信クロックドメインによって当該エントリからデータが読み出されないようにし、それによってデータ転送エラーを低減する。さらに、コントローラは、クロックドメインの一方又は両方におけるクロック周波数の変化に応じて、ポインタオフセット値をリセットする。１つ以上のコントローラを使用してポインタオフセット値を設定及び適用することにより、プロセッサは、レイテンシを低減し、帯域幅を最大化しながら、クロック周波数の変化に応じてデータを正確に転送し続ける。プロセッサは、クロックドメイン間の正確なデータ転送をサポートしながら、処理効率を向上させる。
【０００５】
例示のために、プロセッサは、２つの異なるクロックドメイン間で転送されたデータを記憶するための複数のエントリを有する先入れ先出しキュー（ＦＩＦＯ）を含む。各クロックドメインは、ＦＩＦＯにアクセスするためにポインタのセットを管理するコントローラを含む。従来、ＦＩＦＯエントリの読み出し又は書き込みが完了するまでデータを当該エントリに書き込まないか、当該エントリから読み出さないことを保証するために、読み出しポインタ及び書き込みポインタが、メタスタビリティ回路を介してクロックドメイン間で転送される。しかしながら、メタスタビリティ回路のタイミング及び構成は、異なるクロックドメインのクロック信号間の想定上の「ワーストケース」関係に基づいている。さらに、異なるクロック信号の周波数は、プロセッサの動作要件の変更に基づいて経時的に変化するため、想定されるワーストケース関係は、多くの場合、過度に保守的であり、処理効率に悪影響を及ぼす。本明細書で説明する技術を使用して、ＦＩＦＯコントローラは、異なるクロックドメインのクロック信号の周波数に基づいて、０以外のオフセット値を、１つ以上の読み出し及び書き込みポインタに適用し、それによって、ＦＩＦＯをより高速に読み出し又は書き込むことを可能にする。これにより、コントローラは、ＦＩＦＯに書き込まれたデータが読み出される前に、より低いレイテンシが確立されることを保証する。例えば、クロックドメインの周波数が等しいいくつかの実施形態の場合、コントローラは、ＦＩＦＯのレイテンシを数クロックサイクルだけ短縮する正の書き込みポインタオフセット値及び正の読み出しポインタオフセット値を設定する。いくつかの実施形態では、書き込みクロックの周波数は、読み出しクロックの周波数よりも高く、コントローラは、負のオフセット値を書き込みポインタに設定して、エントリがＦＩＦＯ内に留まる時間を減少させ、正のオフセット値を読み出しポインタに設定して、ポインタが同期するのを待つ間に読み出し側がストールするのを防止し、これにより、レイテンシが低減し、帯域幅を増加させる。ＦＩＦＯの両方のクロックドメインは、転送するデータがない場合でも、既知の周波数（又は周期）の比に基づいて、読み出しポインタ及び書き込みポインタを一定の速度で移動させる。転送速度が一定であることにより、周波数が未知であったり、マージンをとった限界を超えて変化している場合、通常であれば安全ではない妥当なオフセットを適用することができる。オフセット値を決定するために、コントローラは、ＦＩＦＯ深度、シンクロナイザ深度、ＦＩＦＯに書き込むように書き込みモジュールの準備が完了していること及びＦＩＦＯから読み出すように読み出しモジュールの準備が完了していることを示す信号による遅延（レディ及びヘッドアップ深度）、並びに、必要なマージンを考慮して、クロックドメインの周波数を比較する。本明細書でさらに説明するように、コントローラを利用して書き込み及び読み出しポインタの位置をオフセットすることによって、プロセッサは、クロックドメインにわたるデータフローのレイテンシを低減する。
【０００６】
図１は、いくつかの実施形態による、クロックドメイン間の周波数比に基づいて、プロセッサのクロックドメイン間で転送されるデータのためのＦＩＦＯへの読み出し及び書き込みポインタにオフセット値を適用して、少なくとも１つのクロックドメインのクロック信号の周波数の変化に応じてオフセット値をリセットするプロセッサ１００を示す図である。プロセッサ１００は、サーバ、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、計算可能なポータブル携帯電話（例えば、「スマートフォン」）、計算可能な腕時計又は他のウェアラブル製品、パーソナルデジタルアシスタント（ＰＤＡ）、ゲーム機等の様々な計算可能な何れかの電子デバイスに実装される。図示した例では、プロセッサ１００は、書き込みクロックドメイン１０２及び読み出しクロックドメイン１０４と呼ばれる２つのクロックドメインを含む。書き込みクロックドメイン１０２は、プロセッサコア（図示省略）の動作に関連する書き込みモジュール１４０を含む。読み出しクロックドメイン１０４は、プロセッサコア（図示省略）の動作に関連する読み出しモジュール１４５を含む。いくつかの実施形態では、プロセッサ１００は、異なるプロセッサコア及び対応するキャッシュをサポートするために、書き込みクロックドメイン１０２及び読み出しクロックドメイン１０４と同様の追加のクロックドメイン（図示省略）を含み、各クロックドメインは、自身のキャッシュを含む自身のメモリ階層を有する。
【０００７】
処理効率を維持するために、プロセッサ１００は、書き込みクロックドメイン１０２及び読み出しクロックドメイン１０４に異なるクロック信号を供給して、これらの各々の動作を同期させる。図示した例では、書き込みクロックドメイン１０２に供給されるクロック信号は「ＷＲＩＴＥ  ＣＬＯＣＫ」と指定され、読み出しクロックドメイン１０４に供給されるクロック信号は「ＲＥＡＤ  ＣＬＯＣＫ」と指定される。本明細書でさらに説明するように、ＷＲＩＴＥ  ＣＬＯＣＫ信号とＲＥＡＤ  ＣＬＯＣＫ信号とは非同期であり、したがって、異なる周波数及び位相を有し得る。
【０００８】
特に、プロセッサ１００は、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号を生成するために、クロックジェネレータ１０８を使用する。クロックジェネレータ１０８は、基準水晶等のクロック供給源（図示省略）によって供給された安定した発振信号に位相ロックされたタイミング信号（図示省略）に基づいてＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号を生成するように構成されたモジュールである。いくつかの実施形態では、クロックジェネレータ１０８は、各クロック信号のクロック周波数を独立に確立する制御信号に基づいて複数のクロック信号を選択的に組み合わせることによって、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号を生成する。図示した例では、制御信号は、コントローラ１０６によって供給される。
【０００９】
クロックジェネレータ１０８は、コントローラ１０６からの制御信号に基づいて、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号の周波数を識別する。クロックジェネレータ１０８は、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号を、各々の決定された周波数で生成する。いくつかの実施形態では、クロックジェネレータ１０８は、位相シフトされたバージョンのタイミング信号を独立に組み合わせて各クロック信号を各々の周波数で生成することによって、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号の各々を生成する。クロックジェネレータ１０８は、クロック信号ＷＲＩＴＥ  ＣＬＯＣＫ及びＲＥＡＤ  ＣＬＯＣＫの周波数を互いに独立に設定し、変更する。これにより、ＷＲＩＴＥ  ＣＬＯＣＫ信号とＲＥＡＤ  ＣＬＯＣＫ信号とが非同期になる。
【００１０】
クロック信号ＷＲＩＴＥ  ＣＬＯＣＫとクロック信号ＲＥＡＤ  ＣＬＯＣＫとが非同期であるため、書き込みクロックドメイン１０２及び読み出しクロックドメイン１０４は、これらの対応するクロック信号のうち１つのみに基づいて、確実にデータを同期させて通信することができない。したがって、書き込みクロックドメイン１０２と読み出しクロックドメイン１０４との間のデータ通信を容易にするために、プロセッサ１００は、複数のエントリを有するＦＩＦＯ１１０を含む。ここで、各エントリは、書き込みクロックドメイン１０２と読み出しクロックドメイン１０４との両方によってアクセスされる、個別にアドレス可能な記憶位置である。例えば、いくつかの実施形態では、ＦＩＦＯ１１０は、８つのエントリを含む（すなわち、このＦＩＦＯは、８の深度を有する）。本明細書で使用する場合、ＦＩＦＯ１１０の深度とは、ＦＩＦＯ１１０のエントリ数を指す。したがって、いくつかの実施形態では、ＦＩＦＯ１１０は、４、６、８、１０、１２、１４又は１６の深度を有する。説明を容易にするために、本明細書で説明する技術に従って、書き込みクロックドメイン１０２から読み出しクロックドメイン１０４にデータを転送するためにＦＩＦＯ１１０を利用すると仮定する。
【００１１】
ＦＩＦＯ１１０にアクセスするために、書き込みクロックドメイン１０２は、書き込みモジュール１４０を含み、読み出しクロックドメイン１０４は、読み出しモジュール１４５を含む。読み出し／書き込みモジュール１４０，１４５の各々は、ＦＩＦＯ１１０にアクセスするためのポインタのセットを独立に管理する。特に、書き込みモジュール１４０は、書き込みポインタ１１５を使用して、ＦＩＦＯ１１０の書き込まれる次のエントリを示す。書き込みモジュール１４０は、読み出しクロックドメイン１０４にデータを転送するためのＦＩＦＯ１１０内の利用可能なスロットを検出したことに応じて、１クロックサイクルのレディ信号１６５をアサートして、空いたＦＩＦＯエントリが、書き込みクロックドメイン１０２内の構成されたクロック数で利用可能であることを、プロセッサ１００のコンポーネントと通信する外部ロジックに示す。書き込みクロックドメイン１０２内の構成されたクロック数の後に、書き込みモジュール１４０は、データをＦＩＦＯ１１０のエントリに書き込み、次いで、ＦＩＦＯ１１０の次のエントリを指すように書き込みポインタ１１５を調整する。書き込みモジュール１４０は、必要なケイデンス（cadence）を維持するために、有効なデータの有無を問わずにＦＩＦＯ１１０への書き込みを実行する。書き込まれたエントリがＦＩＦＯ１１０の最後のエントリである場合、書き込みモジュール１４０は、ＦＩＦＯ１１０の最初のエントリを指すように書き込みポインタ１１５を調整する。したがって、ＦＩＦＯ１１０が８つのエントリを有すると仮定すると、書き込みポインタ１１５は、最初にエントリ０を指し、次にエントリ１を指し、次にエントリ２を指し、次にエントリ３を指し、次にエントリ４を指し、次にエントリ５を指し、次にエントリ６を指し、次にエントリ７を指し、次にエントリ０に戻る。
【００１２】
読み出しモジュール１４５は、読み出しポインタ１２５を使用して、ＦＩＦＯ１１０の次のエントリが読み出されることを示す。読み出しモジュール１４５は、ＦＩＦＯ１１０からエントリが読み出し可能であることを検出したことに応じて、構成された数の読み出しクロックドメイン１０４サイクルを経てＦＩＦＯ１１０からの読み出しが行われることを表す１クロックサイクル分のヘッドアップ信号１６０を、外部ロジックにアサートする。構成された数の読み出しクロックドメイン１０４サイクルが経過した後、読み出しモジュール１４５は、読み出しポインタ１２５によって示されたエントリを読み出し、次いで、ＦＩＦＯ１１０の次のエントリを指すように読み出しポインタ１２５を調整する。読み出しモジュール１４５は、適切なケイデンスを維持するために、転送される有効なデータの有無を問わずに転送を実行する。上記の書き込みポインタ１１５と同様に、読み出しエントリがＦＩＦＯ１１０の最後のエントリである場合、読み出しモジュール１４５は、ＦＩＦＯ１１０の最初のエントリを指すように読み出しポインタ１２５を調整する。
【００１３】
リセット中、書き込みポインタ１１５と読み出しポインタ１２５との両方が、ＦＩＦＯ１１０の初期エントリに対応する初期値に設定される。書き込みポインタ１１５と読み出しポインタ１２５とが等しい場合、ＦＩＦＯ１１０は空になる。書き込みポインタ１１５と読み出しポインタ１２５との間で最上位ビット（ＭＳＢ）が異なるが残りのビットが等しい場合、ＦＩＦＯ１１０は満杯になる。いくつかの実施形態では、書き込みポインタ１１５及び読み出しポインタ１２５は、グレイコード（Gray code）を使用して符号化される。任意の２つの隣接するグレイコード間のコード距離は、１である。したがって、１つのグレイカウントから次のグレイカウントまでに１ビットのみが変化する。グレイコードを使用して書き込みポインタ１１５及び読み出しポインタ１２５を符号化することによって、クロックエッジ上の複数の変化するビットを同期させる必要がない。
【００１４】
書き込みモジュール１４０及び読み出しモジュール１４５の各々は、これらのクロックドメインに対応するクロック信号（すなわち、クロック信号ＷＲＩＴＥ  ＣＬＯＣＫ及びＲＥＡＤ  ＣＬＯＣＫの各々）によって同期される。読み出しポインタ１２５を書き込みクロックドメイン１０２と同期させ、メタスタビリティエラーを防止するために、ＦＩＦＯ１１０のエントリに対する書き込みポインタ１１５の位置が、書き込みポインタ同期１３５を介して読み出しポインタ１２５に送信される。同様に、書き込みポインタ１１５を読み出しクロックドメインと同期させる、メタスタビリティエラーを防止するために、ＦＩＦＯ１１０のエントリに対する読み出しポインタ１２５の位置が、読み出しポインタ同期１３０を介して書き込みポインタ１１５に送信される。書き込みポインタ同期１３５及び読み出しポインタ同期１３０の各々は、複数のフリップフロップ（図示省略）（「同期深度」と呼ばれる複数のフリップフロップ）を含み、ＦＩＦＯ１１０のエントリに書き込まれるか、当該エントリから読み出されるデータの遅延を維持する。
【００１５】
いくつかの実施形態では、書き込みモジュール１４０は、書き込みモジュール１４０がＦＩＦＯ１１０にデータを出力する準備ができていることを示すレディ信号１６５をアサートする。いくつかの実施形態では、書き込みモジュール１４０は、書き込みモジュール１４０がＦＩＦＯ１１０にデータを出力する前に、所定数の書き込みクロックサイクルでレディ信号１６５をアサートする。いくつかの実施形態では、書き込みクロックサイクルの所定数はプログラム可能である。いくつかの実施形態では、読み出しモジュール１４５は、読み出しモジュール１４５がＦＩＦＯ１１０からデータを読み出す準備ができる前に、所定数の読み出しクロックサイクルでヘッドアップ信号１６０をアサートする。いくつかの実施形態では、読み出しクロックサイクルの所定数はプログラム可能である。ヘッドアップ信号１６０及びレディ信号１６５によって、ＦＩＦＯ１１０の両側のインタフェースロジックは、データを効率的に送受信し、レイテンシを低減し、クリティカルタイミングパスを緩和することが可能になる。しかしながら、読み出しポインタ同期１３０、書き込みポインタ同期１３５、ヘッドアップ信号１６０及びレディ信号１６５によって遅延が蓄積されることにより、ＦＩＦＯ１１０におけるレイテンシが増大する。いくつかの実施形態では、書き込みモジュール１４０は、レディ信号１６５及びヘッドアップ信号１６０を遅延させるための状態素子（図示省略）のパイプラインを含む。
【００１６】
いくつかの実施形態では、書き込みモジュール１４０は、コミット書き込みポインタ１７０を使用し、読み出しモジュール１４５は、コミット読み出しポインタ１８０を使用して、追加の書き込みポインタの状態及び読み出しポインタの状態をそれぞれ追跡する。追加の書き込みポインタの状態及び読み出しポインタの状態は、外部ロジックにとって未処理であるが、ＦＩＦＯ１１０に未だコミットされていないレディ信号１６５及びヘッドアップ信号１６０のアサートを伴うサイクル数（それぞれ、レディ信号１６５の遅延及びヘッドアップ信号１６０の遅延と呼ばれる）を反映したものである。コミット書き込みポインタ１７０のレディ信号１６５の遅延と、コミット読み出しポインタ１８０のヘッドアップ信号１６０の遅延と、が独立して構成可能であることにより、外部ロジック時間を、書き込みクロックドメイン１０２と読み出しクロックドメイン１０４との比によって制御されるように、転送されるデータをＦＩＦＯ１１０内の利用可能な転送スロットのケイデンスで整合することができる。非同期モードでは、レディ信号１６５の遅延及びヘッドアップ信号１６０の遅延は、データ転送のレイテンシを直接増大させる。しかしながら、適切に計算された書き込みオフセット１５０及び読み出しオフセット１５５の値を用いることによって、レディ信号１６５及びヘッドアップ信号１６０がプロセッサ１００の動作内で吸収されるため、システムクロックドメインの転送レイテンシを全体的に減少させることができる。いくつかの実施形態では、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０は、フリップフロップのチェーンを使用して、レディ信号１６５及びヘッドアップ信号１６０をアサートしたクロックサイクルから、書き込みモジュール１４０及び読み出しモジュール１４５が書き込み動作又は読み出し動作を実行する時間までに必要な遅延を生成する。
【００１７】
レイテンシの低減及び帯域幅の増大を容易にするために、コントローラ１０６は、書き込みクロックと読み出しクロックとの周波数（又は、周期）の比に基づいて、書き込みオフセット１５０を書き込みポインタ１１５に適用する。また、コントローラ１０６は、書き込みクロックと読み出しクロックとの周波数（又は、周期）の比に基づいて、読み出しオフセット１５５を読み出しポインタ１２５に適用する。いくつかの実施形態では、書き込みオフセット１５０と読み出しオフセット１５５との両方は、正の整数である。いくつかの実施形態では、書き込みオフセット１５０及び読み出しオフセット１５５の一方又は両方は、負の整数である。書き込みオフセット１５０及び読み出しオフセット１５５の各々は、書き込みポインタ１１５及び読み出しポインタ１２５のリミットを前進（正のオフセットの場合）又は後退（負のオフセットの場合）させて、書き込みポインタ１１５及び読み出しポインタ１２５が書き込みクロックドメイン１０２及び読み出しクロックドメイン１０４間で同期するまでＦＩＦＯ１１０が待機する場合にストールしないことによって、ＦＩＦＯ１１０が全帯域幅を維持することを可能にする。
【００１８】
いくつかの実施形態では、コントローラ１０６は、以下の表１に示す変数に基づいて、書き込みオフセット１５０及び読み出しオフセット１５５を計算する。
【表１】
2021506027.tif 000003
【００１９】
いくつかの実施形態では、コントローラは、読み出しオフセット１５５を以下のように計算する。
読み出しオフセット＝（ＲｅａｄＰｅｒｉｏｄ×（ＳｙｎｃＤｅｐｔｈ＋ＨｅａｄｓＵｐ＿ｍ−２．７５））／ＬｏｎｇＰｅｒｉｏｄ
【００２０】
いくつかの実施形態では、コントローラ１０６は、最後の除算を除き、全ての計算を整数で実行する。最後の除算では、最も近い整数まで剰余が丸められる。
【００２１】
いくつかの実施形態では、ＷｒｉｔｅＰｅｒｉｏｄがＲｅａｄＰｅｒｉｏｄ以下である場合、コントローラは、書き込みオフセット１５０を以下のように計算する。
書き込みオフセット＝（ＷｒｉｔｅＰｅｒｉｏｄ×（ＳｙｎｃＤｅｐｔｈ＋Ｒｄｙ＿ｍ＋１）＋２×ＲｅａｄＰｅｒｉｏｄ−ＬｏｎｇＰｅｒｉｏｄ×ＦｉｆｏＤｅｐｔｈ）／ＬｏｎｇＰｅｒｉｏｄ
【００２２】
いくつかの実施形態では、ＷｒｉｔｅＰｅｒｉｏｄがＲｅａｄＰｅｒｉｏｄよりも大きい場合、コントローラは、書き込みオフセット１５０を以下のように計算する。
書き込みオフセット＝ＳｙｎｃＤｅｐｔｈ＋Ｒｄｙ＿ｍ−２
【００２３】
いくつかの実施形態では、これらの式は、ＷＲＩＴＥ  ＣＬＯＣＫの周波数とＲＥＡＤ  ＣＬＯＣＫの周波数との比が、１０対１及び１対１０である場合のみに利用される。いくつかの実施形態では、コントローラ１０６は、書き込みオフセット１５０及び読み出しオフセット１５５を２回、すなわち、ＦＩＦＯ１１０を通る各方向について１回ずつ計算する。
【００２４】
ＷＲＩＴＥ  ＣＬＯＣＫまたはＲＥＡＤ  ＣＬＯＣＫの何れかの周波数の変化に応じて、コントローラ１０６は、制御された方法で、書き込みオフセット１５０及び読み出しオフセット１５５の値をリセットする。いくつかの実施形態では、周波数を変更するための要求を受信したことに応じて、コントローラ１０６は、書き込みオフセット１５０及び読み出しオフセット１５５との両方を０に設定して、ＦＩＦＯ１１０を単純な非同期モードにする。次に、コントローラ１０６は、要求された周波数に一致するようにＷＲＩＴＥ  ＣＬＯＣＫ及び／又はＲＥＡＤ  ＣＬＯＣＫを調整し、ＷＲＩＴＥ  ＣＬＯＣＫ及びＲＥＡＤ  ＣＬＯＣＫの調整された周波数の比に基づいて、調整された書き込みオフセット１５０及び読み出しオフセット１５５を決定する。
【００２５】
図２は、いくつかの実施形態による、ＦＩＦＯ１１０への書き込み及びこのＦＩＦＯからの読み出しを行うために、０の書き込みオフセット１５０を書き込みポインタ１１５に適用し、０の読み出しオフセット１５５を読み出しポインタ１２５に適用する図１のコントローラ１０６の例を示す図である。特に、図２は、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号の例に対応する波形２４０，２４１を示している。図２の例では、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号は、同じ周波数を有する。波形２４０，２４１の各々は、複数のサイクル、すなわち、ＷＲＩＴＥ  ＣＬＯＣＫ（波形２４０）のサイクル２５０〜２５９及びＲＥＡＤ  ＣＬＯＣＫ（波形２４１）のサイクル２６０〜２６９に分けられる。また、各サイクル２５０〜２５９について、図２は、書き込みモジュール１４０によって書き込まれるデータに関して書き込みポインタ１１５によって示されるＦＩＦＯ１１０の位置を示し、各サイクル２６０〜２６９について、図２は、読み出しモジュール１４５によって読み出されるデータに関して読み出しポインタ１２５によって示されるＦＩＦＯ１１０の位置を示す。
【００２６】
図２の例では、ＦＩＦＯ１１０は、８つのエントリの深度を有し、読み出しポインタ同期１３０及び書き込みポインタ同期１３５の各々は、４つのフリップフロップの深度を有し、ヘッドアップ信号１６０は、１サイクルの遅延を指定し、レディ信号１６５は、２サイクルの遅延を指定する。書き込みポインタ１１５と読み出しポインタ１２５とが等しい場合、ＦＩＦＯ１１０は空である。書き込みポインタ１１５と読み出しポインタ１２５との最上位ビット（ＭＳＢ）が異なる（Ａ又はＢの何れかの値を有するものとして図２に示した）が、残りのビットが等しい場合、ＦＩＦＯ１１０は満杯である。したがって、図示した例では、書き込みモジュール１４０は、サイクル２５０の間にＦＩＦＯ１１０の位置０に書き込み、サイクル２５１の間にＦＩＦＯ１１０の位置１に書き込み、同じようにサイクル２５７まで書き込む。このとき、書き込みモジュール１４０はＦＩＦＯ１１０の位置７に書き込む。その後、書き込みモジュール１４０は、位置０の読み出しが書き込みモジュール１４０に未だ伝達されていないため、位置０でストールする。図示した例では、読み出しモジュール１４５は、ＲＥＡＤ  ＣＬＯＣＫのサイクル２６６の間にＦＩＦＯ１１０の位置１からデータを読み出す。この読み出しは、データがＦＩＦＯ１１０の位置１に書き込まれてから５サイクル後である。
【００２７】
図２の例と同様に、図３の例では、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号は、同じ周波数を有する。図３は、いくつかの実施形態による、ＦＩＦＯ１１０への書き込み及びこのＦＩＦＯからの読み出しを行うために、２の書き込みオフセット１５０を書き込みポインタ１１５に適用し、２の読み出しオフセット１５５を読み出しポインタ１２５に適用する図１のコントローラ１０６の例を示す図である。図２と同様に、図３は、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号の例に対応する波形３４０，３４１を示す。波形３４０，３４１の各々は、複数のサイクル、すなわち、ＷＲＩＴＥ  ＣＬＯＣＫ（波形３４０）のサイクル３５０〜３５９及びＲＥＡＤ  ＣＬＯＣＫ（波形３４１）のサイクル３６０〜３６９に分けられる。また、各サイクル３５０〜３５９について、図３は、書き込みモジュール１４０によって書き込まれるデータに関して書き込みポインタ１１５によって示されるＦＩＦＯ１１０の位置を示し、各サイクル３６０〜３６９について、図３は、読み出しモジュール１４５によって読み出されるデータに関して読み出しポインタ１２５によって示されるＦＩＦＯ１１０の位置を示す。
【００２８】
図２と同様に、図３の例では、ＦＩＦＯ１１０は、８つのエントリの深度を有し、読み出しポインタ同期１３０及び書き込みポインタ同期１３５の各々は、４つのフリップフロップの深度を有し、ヘッドアップ信号１６０は、１サイクルの遅延を指定し、レディ信号１６５は、２サイクルの遅延を指定する。書き込みポインタ１１５及び読み出しポインタ１２５の最上位ビット（ＭＳＢ）は、Ａ又はＢの何れかの値を有するものとして図３に示されている。図示した例では、２の書き込みオフセット１５０を書き込みポインタ１１５に適用し、２の読み出しオフセット１５５を読み出しポインタ１２５に適用すると、書き込みモジュール１４０は、サイクル３５０の間にＦＩＦＯ１１０の位置３に書き込み、サイクル３５１の間にＦＩＦＯ１１０の位置４に書き込み、同じようにサイクル３５４まで書き込む。このとき、書き込みモジュール１４０は、ＦＩＦＯ１１０の位置７に書き込む。その後、書き込みモジュール１４０は、位置０に書き込む。図示した例では、読み出しモジュール１４５は、ＲＥＡＤ  ＣＬＯＣＫのサイクル３６３の間にＦＩＦＯ１１０の位置３からデータを読み出す。この読み出しは、データがＦＩＦＯ１１０の位置３に書き込まれてから３サイクル後である。したがって、２の書き込みオフセット１５０を書き込みポインタ１１５に適用し、２の読み出しオフセット１５５を読み出しポインタ１２５に適用することにより、コントローラ１０６は、ＦＩＦＯ１１０のレイテンシを、図２に示した５サイクルから図３に示した３サイクルに短縮する。
【００２９】
図４は、いくつかの実施形態による、ＦＩＦＯ１１０への書き込み及びこのＦＩＦＯからの読み出しを行うために、０の書き込みオフセット１５０を書き込みポインタ１１５に適用し、０の読み出しオフセット１５５を読み出しポインタ１２５に適用する図１のコントローラ１０６の例を示す図である。図４は、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号の例に対応する波形４４０，４４１を示す。図４の例において、ＲＥＡＤ  ＣＬＯＣＫ信号は、ＷＲＩＴＥ  ＣＬＯＣＫ信号よりも５０％遅い。波形４４０，４４１の各々は、複数のサイクル、すなわち、ＷＲＩＴＥ  ＣＬＯＣＫ（波形４４０）のサイクル４５０〜４５９及びＲＥＡＤ  ＣＬＯＣＫ（波形４４１）のサイクル４６０〜４６９に分けられる。また、各サイクル４５０〜４５９について、図４は、書き込みモジュール１４０によって書き込まれるデータに関して書き込みポインタ１１５によって示されるＦＩＦＯ１１０の位置を示し、各サイクル４６０〜４６９について、図４は、読み出しモジュール１４５によって読み出されるデータに関して読み出しポインタ１２５によって示されるＦＩＦＯ１１０の位置を示す。
【００３０】
図２及び図３の例と同様に、図４の例では、ＦＩＦＯ１１０は、８つのエントリの深度を有し、読み出しポインタ同期１３０及び書き込みポインタ同期１３５の各々は、４つのフリップフロップの深度を有し、ヘッドアップ信号１６０は、１サイクルの遅延を指定し、レディ信号１６５は、２サイクルの遅延を指定する。書き込みポインタ１１５及び読み出しポインタ１２５の最上位ビット（ＭＳＢ）は、Ａ又はＢの何れかの値を有するものとして図４に示されている。したがって、図示した例では、書き込みモジュール１４０は、サイクル４５０の間にＦＩＦＯ１１０の位置３に書き込み、サイクル４５１の間にＦＩＦＯ１１０の位置４に書き込み、サイクル４５２の間にＦＩＦＯ１１０の位置５に書き込み、同じようにサイクル４５６まで書き込む。このとき、書き込みモジュール１４０は、ＦＩＦＯ１１０の位置７に書き込む。その後、書き込みモジュール１４０は、位置０に書き込む。図示した例では、読み出しモジュール１４５は、ＲＥＡＤ  ＣＬＯＣＫのサイクル４６６の間にＦＩＦＯ１１０の位置５からデータを読み出す。この読み出しは、最初のデータ値ＡがＦＩＦＯ１１０の位置５に書き込まれてから、ＷＲＩＴＥ  ＣＬＯＣＫの７サイクル後であってＲＥＡＤ  ＣＬＯＣＫの５サイクル後である。
【００３１】
図４の例と同様に、図５の例では、ＲＥＡＤ  ＣＬＯＣＫ信号は、ＷＲＩＴＥ  ＣＬＯＣＫ信号よりも５０％遅い。図５は、いくつかの実施形態による、ＦＩＦＯ１１０への書き込み及びこのＦＩＦＯからの読み出しを行うために、−１の書き込みオフセット１５０を書き込みポインタ１１５に適用し、２の読み出しオフセット１５５を読み出しポインタ１２５に適用する図１のコントローラ１０６の例を示す図である。図４と同様に、図５は、ＷＲＩＴＥ  ＣＬＯＣＫ信号及びＲＥＡＤ  ＣＬＯＣＫ信号の例に対応する波形５４０，５４１を示す。波形５４０，５４１の各々は、複数のサイクル、すなわち、ＷＲＩＴＥ  ＣＬＯＣＫ（波形５４０）のサイクル５５０〜５５９及びＲＥＡＤ  ＣＬＯＣＫ（波形５４１）のサイクル５６０〜５６９に分けられる。また、各サイクル５５０〜５５９について、図５は、書き込みモジュール１４０によって書き込まれるデータに関して書き込みポインタ１１５によって示されるＦＩＦＯ１１０の位置を示し、各サイクル５６０〜５６９について、図５は、読み出しモジュール１４５によって読み出されるデータに関して読み出しポインタ１２５によって示されるＦＩＦＯ１１０の位置を示す。
【００３２】
図４の例と同様に、図５の例では、ＦＩＦＯ１１０は、８つのエントリの深度を有し、読み出しポインタ同期１３０及び書き込みポインタ同期１３５の各々は、４つのフリップフロップの深度を有し、ヘッドアップ信号１６０は、１サイクルの遅延を指定し、レディ信号１６５は２サイクルの遅延を指定する。書き込みポインタ１１５及び読み出しポインタ１２５の最上位ビット（ＭＳＢ）は、Ａ又はＢの何れかの値を有するものとして図５に示されている。図示した例では、−１の書き込みオフセット１５０を書き込みポインタ１１５に適用し、２の読み出しオフセット１５５を読み出しポインタ１２５に適用すると、書き込みモジュール１４０は、サイクル５５０の間にＦＩＦＯ１１０の位置２に書き込み、サイクル５５１の間にＦＩＦＯ１１０の位置３に書き込み、サイクル５５３の間にＦＩＦＯの位置４に書き込み、サイクル５５４の間に位置５に書き込み、同じようにサイクル５５７まで書き込む。このとき、書き込みモジュール１４０は、ＦＩＦＯ１１０の位置７に書き込む。その後、書き込みモジュール１４０は、サイクル５５９で位置０に書き込む。図示した例では、読み出しモジュール１４５は、ＲＥＡＤ  ＣＬＯＣＫのサイクル５６５の間にＦＩＦＯ１１０の位置５からデータを読み出す。この読み出しは、データがＦＩＦＯ１１０の位置５に書き込まれてから、ＷＲＩＴＥ  ＣＬＯＣＫの４サイクル後であってＲＥＡＤ  ＣＬＯＣＫの３サイクル後である。したがって、−１の書き込みオフセット１５０を書き込みポインタ１１５に適用し、２の読み出しオフセット１５５を読み出しポインタ１２５に適用することにより、コントローラ１０６は、ＦＩＦＯ１１０のレイテンシを、図４に図示したＷＲＩＴＥ  ＣＬＯＣＫの７サイクル及びＲＥＡＤ  ＣＬＯＣＫの５サイクルから、図５に図示したＷＲＩＴＥ  ＣＬＯＣＫの４サイクル及びＲＥＡＤ  ＣＬＯＣＫの３サイクルに短縮する。
【００３３】
図６は、いくつかの実施形態による、図１のコントローラ１０６のブロック図である。図示した例では、以下でさらに説明するように、コントローラ１０６は、書き込みオフセット１５０及び読み出しオフセット１５５を計算し、これらをコミット書き込みポインタ１７０及びコミット読み出しポインタ１８０に適用する。次に、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０は、フリップフロップのパイプラインを介して、書き込みポインタ１１５及び読み出しポインタ１２５をそれぞれ直接制御する。いくつかの実施形態では、フリップフロップのパイプラインの深度は、読み出し信号及びヘッドアップ信号の遅延（図示省略）に依存する。例えば、レディの深度が０であり、ヘッドアップの深度が０である場合、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０は、効果的に除去される。
【００３４】
ＷＲＩＴＥ  ＣＬＯＣＫ及びＲＥＡＤ  ＣＬＯＣＫの相対的な周波数と、ＦＩＦＯ１１０の深度と、読み出しポインタ同期１３０及び書き込みポインタ同期１３５の深度と、ヘッドアップ信号１６０及びレディ信号１６５のサイクル数と、等の他のパラメータを考慮することによって、コントローラ１０６は、ＦＩＦＯ１１０の位置に書き込みモジュール１４０によって書き込まれる時間と、ＦＩＦＯ１１０の当該位置から読み出しモジュール１４５によって読み出される時間と、の間の遅延中に行われるＦＩＦＯ１１０の両側に出入りする転送の数を予測することが可能になる。コントローラ１０６は、書き込みオフセット１５０及び読み出しオフセット１５５のオフセット値を適用して、コミット読み出しポインタ１８０によって示されたＦＩＦＯ１１０の位置から読み出しモジュール１４５が正しい値を読み出すことと、読み出しモジュール１４５によって未だ読み出されていないＦＩＦＯ１１０の位置に書き込みモジュール１４０が値を上書きしないことと、を保証するのに十分なマージンを維持しつつ、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０が、これらが示した生の値（raw values）を超えて移動することができるようにする。
【００３５】
図６の例では、プロセッサ１００は、クロックジェネレータ１０８と、コントローラ１０６と、読み出しオフセット１５５と、コミット読み出しポインタ１８０と、読み出しポインタモジュール１２５と、書き込みオフセット１５０と、コミット書き込みポインタ１７０と、書き込みポインタモジュール１１５と、ＦＩＦＯ１１０と、を含む。読み出しポインタモジュール１２５は、読み出しモジュール（図示省略）の読み出しポインタを記憶するように構成されている。「ＲＤ」と示された信号のアサートに応じて、コミット読み出しポインタ１８０は、ＦＩＦＯ１１０の次の位置を指すように読み出しポインタモジュール１２５を調整し、読み出しポインタモジュール１２５は、読み出しポインタをＦＩＦＯ１１０に提供する。これに応じて、ＦＩＦＯ１１０は、読み出しポインタによって示された位置を読み出し、読み出したデータを読み出しモジュールに提供する。
【００３６】
書き込みポインタモジュール１１５は、読み出しポインタモジュール１２５と同様に構成されており、ＦＩＦＯ１１０にデータを書き込む。特に、書き込みポインタモジュール１１５は、書き込みモジュール（図示省略）の書き込みポインタを記憶する。「ＷＲＴ」と示された信号のアサートに応じて、コミット書き込みポインタ１７０は、ＦＩＦＯ１１０の次の位置を指すように書き込みポインタモジュール１１５を調整し、書き込みポインタモジュール１１５は、書き込みモジュール（図示省略）によって提供されたデータと共に、書き込みポインタをＦＩＦＯ１１０に提供する。これに応じて、ＦＩＦＯ１１０は、書き込みポインタによって示されたデータ位置に書き込む。
【００３７】
コントローラ１０６は、図１、図３及び図５に関して上述したように、書き込みオフセット１５０及び読み出しオフセット１５５を計算し、適用するために、ＦＩＦＯ１１０からデータを読み出し、このＦＩＦＯにデータを書き込むためのＲＤ信号及びＷＲＴ信号を生成するように構成されている。特に、図６の例では、コントローラ１０６は、クロックジェネレータ１０８から周波数変更要求６１０を受信する。周波数変更要求６１０は、クロックジェネレータ１０８がＷＲＩＴＥ  ＣＬＫ及びＲＥＡＤ  ＣＬＫの一方又は両方の周波数を変更することを示す。コントローラ１０６は、ＷＲＩＴＥ  ＣＬＫ及びＲＥＡＤ  ＣＬＫの調整された周波数に基づいて、新たな書き込みオフセット１５０及び読み出しオフセット１５５を計算する。次に、コントローラ１０６は、書き込みポインタ１１５及び読み出しポインタ１２５がＦＩＦＯ１１０の第１共通エントリを通過するまで待機し、次いで、プロセッサ１００のコンポーネントからのデータの転送を一時的に停止し、読み出しモジュールによってアクセスされていないデータを含むＦＩＦＯ１１０のエントリを空にする。コントローラ１０６は、ＦＩＦＯ１１０の第２共通エントリで書き込みポインタ１１５及び読み出しポインタ１２５を停止させ、新たな書き込みオフセット１５０及び新たな読み出しオフセット１５５を適用する。次に、コントローラ１０６は、書き込みポインタ１１５及び読み出しポインタ１５０を再開し、プロセッサ１００のコンポーネントからのデータ転送を再度有効にする。
【００３８】
図７は、いくつかの実施形態による、クロックドメインの一方又は両方のクロック信号の周波数の変化に応じて、ＦＩＦＯにおいてクロックドメイン間でデータを転送するために書き込みオフセット１５０及び読み出しオフセット１５５を設定する方法７００のフロー図である。方法７００は、図１に示すプロセッサ１００のいくつかの実施形態において実施される。コントローラ１０６は、ＷＲＩＴＥ  ＣＬＫ及びＲＥＡＤ  ＣＬＫの一方又は両方が周波数を変更する前後で新たな書き込みオフセット１５０又は新たな読み出しオフセット１５５が必要になる毎に、方法７００を実行する。方法７００は、ＦＩＦＯ１１０を介した転送を停止することと、全ての保留エントリをＦＩＦＯ１１０からフラッシュすることと、書き込みポインタ１１５及び読み出しポインタ１２５を一定の位置で停止することと、新たな書き込みオフセット１５０及び読み出しオフセット１５５の値を適用することと、書き込みポインタ１１５及び読み出しポインタ１２５を制御された方法で再開することと、最終的に、ＦＩＦＯ１１０を介したデータ転送を再開することと、によって、書き込みオフセット１５０及び読み出しオフセット１５５が変化した場合にデータが失われたり複製されたりしないことを保証する。
【００３９】
いくつかの実施形態では、コントローラ１０６は、方法７００の２つの並列インスタンスを動作させ、すなわち、一方を書き込みクロックドメイン１０２のために動作させ、他方を読み出しクロックドメイン１０４のために動作させる。方法７００のいくつかの点で、書き込みポインタ１１５及び読み出しポインタ１２５は、方法７００の読み出しクロックドメイン１０２及び書き込みクロックドメイン１０４の並列バージョンが、適切な動作に必要とされるのと同時に又はほぼ同時に同じブロック７０２〜７２４にあるように、協調して動作する必要がある。
【００４０】
ブロック７０２において、コントローラ１０６は、周波数の変化が途中であるかどうか、及び、新たな書き込みオフセット１５０及び読み出しオフセット１５５が必要であるかどうかを判別する。必要でない場合、方法フローは、ブロック７０２に戻る。新たな書き込みオフセット１５０及び読み出しオフセット１５５が必要である場合、ブロック７０４において、コントローラ１０６は、新たな書き込みオフセット１５０及び読み出しオフセット１５５を計算する。ブロック７０６において、コントローラ１０６は、読み出しポインタ１１５及び書き込みポインタ１２５が第１共通基準点を通過するまで待機する。共通基準点は、書き込みクロックドメイン１０２及び読み出しクロックドメイン１０４内の方法７００の各インスタンスが定めた（agree upon）ＦＩＦＯ１１０内の既定の位置である。いくつかの実施形態では、共通基準点は、ＦＩＦＯ１１０のエントリ０Ａである。いくつかの実施形態では、共通基準点は、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０によって追跡されるＦＩＦＯ１１０のエントリである。コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０を使用することにより、レディ信号１６５の全てのパルスが、対応するヘッドアップ信号１６０を有することと、ブロック７０８に進むときに未だＦＩＦＯ１１０内にあるエントリが読み出しモジュール１４５によって依然として読み出され、ヘッドアップ信号１６０の対応するパルスを有することと、が保証される。
【００４１】
ブロック７０８において、書き込みポインタ１２５及び読み出しポインタ１１５が第１共通基準点を通過した後、コントローラ１０６は、レディ信号１６５及びヘッドアップ信号１６０の値を強制的にローにして、転送が利用可能でないことを、プロセッサ１００に接続されたコンポーネントに通知する。しかしながら、プロセッサ１００の外部のコンポーネントがストールされている間、書き込みポインタ１１５及び読み出しポインタ１２５は、方法７００を実行するためにプロセッサ１００内で動作し続ける。ブロック７１０において、コントローラ１０６は、読み出しモジュール１４５によって読み出されるのを待機しているＦＩＦＯ１１０内の任意のデータを排出する。いくつかの実施形態では、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０を介してレディ信号１６５及びヘッドアップ信号１６０を強制的にローにすることにより、方法７００がブロック７０８に到達したときにＦＩＦＯ１１０を介した任意の転送が、依然として適切なヘッドアップ信号１６０を有することが保証される。これは、データの消失を防ぐために、コミット書き込みポインタ１７０及びコミット読み出しポインタ１８０内で使用されるフリップフロップパイプラインが、書き込みポインタ１１５及び読み出しポインタ１２５をそれぞれ動作させるための適切な値を含むためである。
【００４２】
ブロック７１２において、第２共通基準点にて、先ず、コミット書き込みポインタ１７０が停止し、次に、書き込みポインタ１１５が停止する。次に、コミット読み出しポインタ１８０及び読み出しポインタ１２５は、第２共通基準点で停止する。いくつかの実施形態では、第２共通基準点は、ＦＩＦＯ１１０のエントリ０Ｂである。書き込みポインタ１１５及び読み出しポインタ１２５が停止すると、コントローラ１０６は、ブロック７１４において、新たな読み出し書き込みオフセット１５０及び新たな読み出しオフセット１５５を適用する。ブロック７１６において、コントローラ１０６は、読み出しポインタ同期１３０が第２共通基準点に到達したことを検出すると、書き込みポインタ１１５を再開する。ブロック７１８において、読み出しポインタ１２５は、書き込みポインタ同期１３６が第２共通基準点を通過したことを検出する。コミット読み出しポインタ１８０は、内部フリップフロップパイプラインをバイパスし、読み出しポインタ１２５及びコミット読み出しポインタ１８０の移動を同時に開始し、コミット読み出しポインタ１８０及び読み出しポインタ１２５間のパイプラインのフリップフロップの数だけコミット読み出しポインタ１８０を進める。コミット読み出しポインタ１８０を用いた実施形態では、ブロック７１８は、書き込みポインタ１１５と読み出しポインタ１２５との時間差が、コミット読み出しポインタ１８０のパイプラインの深度に基づいてスキューされないことを保証する。
【００４３】
ブロック７２０において、コントローラ１０６は、書き込みポインタ１１５及び読み出しポインタ１２５が第１共通基準点に戻るまで待機し、書き込みポインタ１１５及び読み出しポインタ１２５が適切な時間差になるまでの時間を与える。ブロック７２２において、コントローラ１０６は、レディ信号１６５及びヘッドアップ信号１６０を新たなプロセッサ１００の構成のための適切な値に戻すことによって、通常のトラフィックを有効にする。ブロック７２４において、コントローラ１０６は、方法７００が完了したことを示す信号をクロックジェネレータ１０８に送信する。
【００４４】
いくつかの実施形態では、方法は、プロセッサの第１クロックドメインにおいて、バッファの複数のエントリに対する書き込みポインタの位置を、バッファの深度及び第１オフセット値に基づいてインクリメントすることと、プロセッサの書き込みモジュールにおいて、書き込みポインタがバッファの複数のエントリのうち第１エントリを示したことに応じて、第１エントリにアクセスすることと、プロセッサの第２クロックドメインにおいて、バッファの複数のエントリに対する読み出しポインタの位置を、書き込みポインタの位置及び第２オフセット値に基づいてインクリメントすることであって、第２オフセット値は、第１クロックドメインの第１クロック信号の第１周波数と、第２クロックドメインの第２クロック信号の第２周波数との比に基づいており、第２クロック信号は、第１クロック信号と非同期である、ことと、プロセッサの読み出しモジュールにおいて、読み出しポインタがバッファの複数のエントリのうち第１エントリを示したことに応じて、第１エントリにアクセスすることと、を含む。一態様では、第１オフセット値は、第１周波数と第２周波数との比に基づいている。別の態様では、第１オフセット値は、第１クロックドメインと第２クロックドメインとの間のシンクロナイザの深度に基づいている。
【００４５】
一態様では、方法は、書き込みモジュールがバッファにアクセスすることを示す信号をアサートすることを含み、第１オフセット値は、信号のアサートと、バッファへの書き込みモジュールのアクセスと、の間の第１クロック信号のクロックサイクル数に基づいている。別の態様では、第２オフセット値は、第１クロックドメインと第２クロックドメインとの間のシンクロナイザの深度に基づいている。さらに別の態様では、方法は、第１周波数を第１の調整された周波数に調整し、又は、第２周波数を第２の調整された周波数に調整するための要求に応じて、第１オフセット値及び第２オフセット値をリセットすることを含む。一態様では、第１オフセット値及び第２オフセット値をリセットすることは、第１の調整された周波数が第２の調整された周波数よりも高いことに応じて、第１の調整された周波数と第２の調整された周波数との比に基づいて、書き込みポインタの第１の調整されたオフセット値を決定することと、第１の調整された周波数と第２の調整された周波数との比に基づいて、読み出しポインタの第２の調整されたオフセット値を決定することと、読み出しモジュールによってアクセスされていないデータを含むバッファのエントリを空にすることと、バッファの共通エントリにおいて書き込みポインタ及び読み出しポインタを停止させることと、第１の調整されたオフセット値に基づいて、書き込みポインタの位置をインクリメントすることと、第２の調整されたオフセット値に基づいて、読み出しポインタの位置をインクリメントすることと、を含む。
【００４６】
いくつかの実施形態では、方法は、プロセッサの第１クロックドメインにおいて、第１オフセット値に基づいて、深度を有する先入れ先出しバッファ（ＦＩＦＯ）に対する書き込みポインタの位置をオフセットすることと、プロセッサの第２クロックドメインにおいて、第２オフセット値に基づいて、ＦＩＦＯに対する読み出しポインタの位置をオフセットすることであって、第２オフセット値は、第１クロックドメインの第１クロック信号の第１周期と、第２クロックドメインの第２クロック信号の第２周期と、の比に基づいている、ことと、プロセッサの書き込みモジュールにおいて、書き込みポインタの位置に基づいて、ＦＩＦＯの第１エントリにアクセスすることと、第１エントリにアクセスしたことに応じて、ＦＩＦＯに対する書き込みポインタをインクリメントすることと、プロセッサの読み出しモジュールにおいて、ＦＩＦＯに対する読み出しポインタの位置に基づいて、ＦＩＦＯの第１エントリから読み出すことと、第１エントリから読み出したことに応じて、ＦＩＦＯに対する読み出しポインタをインクリメントすることと、を含む。一態様では、第１オフセット値は、第１周期と第２周期との比に基づいている。別の態様では、第１オフセット値は、第１クロックドメインと第２クロックドメインとの間のシンクロナイザの深度に基づいている。
【００４７】
さらに別の態様では、方法は、書き込みモジュールがバッファにアクセスすることを示す信号をアサートすることを含み、第１オフセット値は、信号のアサートと、バッファへの書き込みモジュールのアクセスと、の間の第１クロック信号のクロックサイクル数に基づいている。さらに別の態様では、方法は、第１周期を第１の調整された周期に調整し、又は、第２周期を第２の調整された周期に調整するための要求に応じて、第１オフセット値及び第２オフセット値をリセットすることを含む。別の態様では、第１オフセット値及び第２オフセット値をリセットすることは、第１の調整された周波数が第２の調整された周波数よりも高いことに応じて、第１の調整された周波数と第２の調整された周波数との比に基づいて、書き込みポインタの第１の調整されたオフセット値を決定することと、第１の調整された周波数と第２の調整された周波数との比に基づいて、読み出しポインタの第２の調整されたオフセット値を決定することと、読み出しモジュールによってアクセスされていないデータを含むバッファのエントリを空にすることと、バッファの共通エントリにおいて書き込みポインタ及び読み出しポインタを停止させることと、第１の調整されたオフセット値に基づいて、書き込みポインタの位置をインクリメントすることと、第２の調整されたオフセット値に基づいて、読み出しポインタの位置をインクリメントすることと、を含む。
【００４８】
いくつかの実施形態では、プロセッサは、先入れ先出しバッファ（ＦＩＦＯ）と、第１クロックドメインであって、書き込みポインタと、第１シンクロナイザと、ＦＩＦＯに対する書き込みポインタの位置に応じてＦＩＦＯの第１エントリにアクセスするように構成された書き込みモジュールであって、書き込みポインタの位置がＦＩＦＯの深度及び第１オフセット値に基づいている、書き込みモジュールと、を含む第１クロックドメインと、第２クロックドメインであって、読み出しポインタと、第２シンクロナイザと、ＦＩＦＯに対する読み出しポインタの位置に応じてＦＩＦＯの第１エントリにアクセスするように構成された読み出しモジュールであって、読み出しポインタの位置が書き込みポインタの位置及び第２オフセット値に基づいている、読み出しモジュールと、を含む第２クロックドメインと、第１オフセット値及び第２オフセット値を決定するように構成されたコントローラと、を含む。一態様では、コントローラは、第１クロックドメインの第１クロック信号の第１周波数と、第２クロックドメインの第２クロック信号の第２周波数との比に基づいて、第１オフセット値を決定するように構成されており、第２クロック信号は、第１クロック信号と非同期である。
【００４９】
別の態様では、コントローラは、第１シンクロナイザの深度に基づいて、第１オフセット値を決定するように構成されている。さらに別の態様では、書き込みモジュールは、書き込みモジュールがバッファにアクセスすることを示す信号をアサートするように構成されており、コントローラは、信号のアサートと、バッファへの書き込みモジュールのアクセスと、の間の第１クロック信号のクロックサイクル数に基づいて、第１オフセット値を決定するように構成されている。さらに別の態様では、コントローラは、第１クロックドメインの第１クロック信号の第１周波数と、第２クロックドメインの第２クロック信号の第２周波数との比に基づいて、第２オフセット値を決定するように構成されており、第２クロック信号は、第１クロック信号と非同期である。別の態様では、コントローラは、第１周波数を第１の調整された周波数に調整し、又は、第２周波数を第２の調整された周波数に調整するための要求に応じて、第１オフセット値及び第２オフセット値をリセットするように構成されている。さらに別の態様では、コントローラは、第１の調整された周波数が第２の調整された周波数よりも高いことに応じて、第１の調整された周波数と第２の調整された周波数との比に基づいて、書き込みポインタの第１の調整されたオフセット値を決定することと、第１の調整された周波数と第２の調整された周波数との比に基づいて、読み出しポインタの第２の調整されたオフセット値を決定することと、読み出しモジュールによってアクセスされていないデータを含むＦＩＦＯのエントリを空にすることと、ＦＩＦＯの共通エントリにおいて書き込みポインタ及び読み出しポインタを停止させることと、ＦＩＦＯの深度及び第１の調整されたオフセット値に基づいて、書き込みポインタの位置をインクリメントすることと、書き込みポインタの位置及び第２の調整されたオフセット値に基づいて、読み出しポインタの位置をインクリメントすることと、を行うように構成されている。
【００５０】
いくつかの実施形態では、上記の装置及び技術は、図１〜図７を参照して上述したマルチメディアシステム等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムに実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５１】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００５２】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００５３】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００５４】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021506027.tif 000004
【図２】
2021506027.tif 000005
【図３】
2021506027.tif 000006
【図４】
2021506027.tif 000007
【図５】
2021506027.tif 000008
【図６】
2021506027.tif 000009
【図７】
2021506027.tif 000010
【手続補正書】
【提出日】令和2年8月18日(2020.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサの第１クロックドメインにおいて、バッファの複数のエントリに対する書き込みポインタの位置を、前記バッファの深度及び第１オフセット値に基づいてインクリメントすることと、
前記プロセッサの書き込みモジュールにおいて、前記書き込みポインタが前記バッファの前記複数のエントリのうち第１エントリを示したことに応じて、前記第１エントリにアクセスすることと、
前記プロセッサの第２クロックドメインにおいて、前記バッファの前記複数のエントリに対する読み出しポインタの位置を、前記書き込みポインタの位置及び第２オフセット値に基づいてインクリメントすることであって、前記第２オフセット値は、前記第１クロックドメインの第１クロック信号の第１周波数と、前記第２クロックドメインの第２クロック信号の第２周波数との比に基づいており、前記第２クロック信号は、前記第１クロック信号と非同期である、ことと、
前記プロセッサの読み出しモジュールにおいて、前記読み出しポインタが前記バッファの前記複数のエントリのうち前記第１エントリを示したことに応じて、前記第１エントリにアクセスすることと、を含む、
方法。
【請求項２】
前記第１オフセット値は、前記第１周波数と前記第２周波数との比に基づいている、
請求項１の方法。
【請求項３】
前記第１オフセット値は、前記第１クロックドメインと前記第２クロックドメインとの間のシンクロナイザの深度に基づいている、
請求項１の方法。
【請求項４】
前記書き込みモジュールが前記バッファにアクセスすることを示す信号をアサートすることをさらに含み、前記第１オフセット値は、前記信号のアサートと、前記バッファへの前記書き込みモジュールのアクセスと、の間の前記第１クロック信号のクロックサイクル数に基づいている、
請求項３の方法。
【請求項５】
前記第２オフセット値は、前記第１クロックドメインと前記第２クロックドメインとの間のシンクロナイザの深度に基づいている、
請求項１〜４の何れかの方法。
【請求項６】
前記第１周波数を第１の調整された周波数に調整し、又は、前記第２周波数を第２の調整された周波数に調整するための要求に応じて、前記第１オフセット値及び前記第２オフセット値をリセットすることをさらに含む、
請求項１〜５の何れかの方法。
【請求項７】
前記第１オフセット値及び前記第２オフセット値をリセットすることは、
前記第１の調整された周波数が前記第２の調整された周波数よりも高いことに応じて、前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記書き込みポインタの第１の調整されたオフセット値を決定することと、
前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記読み出しポインタの第２の調整されたオフセット値を決定することと、
前記読み出しモジュールによってアクセスされていないデータを含む前記バッファの前記エントリを空にすることと、
前記バッファの共通エントリにおいて前記書き込みポインタ及び前記読み出しポインタを停止させることと、
前記第１の調整されたオフセット値に基づいて、前記書き込みポインタの位置をインクリメントすることと、
前記第２の調整されたオフセット値に基づいて、前記読み出しポインタの位置をインクリメントすることと、を含む、
請求項６の方法。
【請求項８】
先入れ先出しバッファ（ＦＩＦＯ）と、
第１クロックドメインであって、
書き込みポインタと、
第１シンクロナイザと、
前記ＦＩＦＯに対する前記書き込みポインタの位置に応じて前記ＦＩＦＯの第１エントリにアクセスするように構成された書き込みモジュールであって、前記書き込みポインタの位置が前記ＦＩＦＯの深度及び第１オフセット値に基づいている、書き込みモジュールと、を含む第１クロックドメインと、
第２クロックドメインであって、
読み出しポインタと、
第２シンクロナイザと、
前記ＦＩＦＯに対する前記読み出しポインタの位置に応じて前記ＦＩＦＯの前記第１エントリにアクセスするように構成された読み出しモジュールであって、前記読み出しポインタの位置が前記書き込みポインタの位置及び第２オフセット値に基づいている、読み出しモジュールと、を含む第２のクロックドメインと、
前記第１オフセット値及び前記第２オフセット値を決定するように構成されたコントローラと、を備える、
プロセッサ。
【請求項９】
前記コントローラは、前記第１クロックドメインの第１クロック信号の第１周波数と、前記第２クロックドメインの第２クロック信号の第２周波数との比に基づいて、前記第１オフセット値を決定するように構成されており、前記第２クロック信号は、前記第１クロック信号と非同期である、
請求項８のプロセッサ。
【請求項１０】
前記コントローラは、前記第１シンクロナイザの深度に基づいて、前記第１オフセット値を決定するように構成されている、
請求項８又は９のプロセッサ。
【請求項１１】
前記書き込みモジュールは、前記書き込みモジュールが前記バッファにアクセスすることを示す信号をアサートするように構成されており、前記コントローラは、前記信号のアサートと、前記バッファへの前記書き込みモジュールのアクセスと、の間の前記第１クロック信号のクロックサイクル数に基づいて、前記第１オフセット値を決定するように構成されている、
請求項１０のプロセッサ。
【請求項１２】
前記コントローラは、前記第１クロックドメインの第１クロック信号の第１周波数と、前記第２クロックドメインの第２クロック信号の第２周波数との比に基づいて、前記第２オフセット値を決定するように構成されており、前記第２クロック信号は、前記第１クロック信号と非同期である、
請求項８〜１１の何れかのプロセッサ。
【請求項１３】
前記コントローラは、前記第１周波数を第１の調整された周波数に調整し、又は、前記第２周波数を第２の調整された周波数に調整するための要求に応じて、前記第１オフセット値及び前記第２オフセット値をリセットするように構成されている、
請求項８〜１２の何れかのプロセッサ。
【請求項１４】
前記コントローラは、
前記第１の調整された周波数が前記第２の調整された周波数よりも高いことに応じて、前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記書き込みポインタの第１の調整されたオフセット値を決定することと、
前記第１の調整された周波数と前記第２の調整された周波数との比に基づいて、前記読み出しポインタの第２の調整されたオフセット値を決定することと、
前記読み出しモジュールによってアクセスされていないデータを含む前記ＦＩＦＯの前記エントリを空にすることと、
前記ＦＩＦＯの共通エントリにおいて前記書き込みポインタ及び前記読み出しポインタを停止させることと、
前記ＦＩＦＯの深度及び前記第１の調整されたオフセット値に基づいて、前記書き込みポインタの位置をインクリメントすることと、
前記書き込みポインタの位置及び前記第２の調整されたオフセット値に基づいて、前記読み出しポインタの位置をインクリメントすることと、
を行うように構成されている、
請求項８〜１３の何れかのプロセッサ。
【国際調査報告】
2021506027.tif 000011
2021506027.tif 000012
2021506027.tif 000013