(57)【要約】本発明のカスケードクロックリングネットワークは、ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードまで伝送するクロック信号経路と、伝送されたソースクロック信号に応答して、データ値を、複数の処理ノードを介して最初の処理ノードから最後の処理ノードまで伝送するデータ経路とを含む。最後の処理ノードは、伝送されたソースクロックをエンドクロック信号として提供し、伝送されたデータ値をエンドデータ値として提供する。エンドデータ値は、エンドクロック信号に応答して、ＦＩＦＯメモリに書き込まれ、その後、ソースクロック信号を用いてＦＩＦＯメモリから読み出されて最初の処理ノードに提供される。同期回路によって、エンドデータ値がＦＩＦＯメモリから読み出される前に、複数のエンドデータ値が最初にＦＩＦＯメモリに書き込まれることを確実にする。【選択図】図３
2021528881.tif 000002
【特許請求の範囲】
【請求項１】
カスケードクロックリングネットワークであって、
ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するクロック信号経路であって、前記最後の処理ノードが、伝送された前記ソースクロック信号をエンドクロック信号として提供する、該クロック信号経路と、
伝送された前記ソースクロック信号に応答して、データ値を、前記複数の処理ノードを介して、前記最初の処理ノードから前記最後の処理ノードへ伝送するデータ経路であって、前記最後の処理ノードが、伝送された前記データ値をエンドデータ値として提供する、該データ経路と、
前記エンドクロック信号に応答して前記エンドデータ値を書き込む読み出す先入れ先出し（ＦＩＦＯ）メモリであって、前記ソースクロック信号に応答して前記ＦＩＦＯメモリに以前に書き込まれた前記エンドデータ値を前記最初の処理ノードに読み出す、該ＦＩＦＯメモリと、
を備えることを特徴とするカスケードクロックリングネットワーク。
【請求項２】
請求項１に記載のカスケードクロックリングネットワークであって、
前記ＦＩＦＯメモリは、前記ソースクロック信号の複数のサイクルに等しい継続時間を有する有効データウィンドウ期間にわたって、前記各エンドデータ値を格納することを特徴とするカスケードクロックリングネットワーク。
【請求項３】
請求項２に記載のカスケードクロックリングネットワークであって、
前記ＦＩＦＯメモリは、複数のＦＩＦＯエントリを含み、
前記ＦＩＦＯエントリの数によって、前記有効データウィンドウ期間の前記継続時間が定義されることを特徴とするカスケードクロックリングネットワーク。
【請求項４】
請求項３に記載のカスケードクロックリングネットワークであって、
前記有効データウィンドウ期間は、前記ソースクロック信号の期間に前記ＦＩＦＯエントリの数を乗算した期間に相当することを特徴とするカスケードクロックリングネットワーク。
【請求項５】
請求項１に記載のカスケードクロックリングネットワークであって、
前記ＦＩＦＯメモリは、８以下のＦＩＦＯエントリを含むことを特徴とするカスケードクロックリングネットワーク。
【請求項６】
請求項１に記載のカスケードクロックリングネットワークであって、
前記エンドデータ値が前記ＦＩＦＯメモリから読み出される前に、複数の前記エンドデータ値が前記ＦＩＦＯメモリに最初に書き込まれることを確実にする同期回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項７】
請求項６に記載のカスケードクロックリングネットワークであって、
前記同期回路は、
前記エンドデータ値が前記ＦＩＦＯメモリに書き込まれたときにアサートされる有効ビットを受け取るように接続された入力を有する第１のフリップフロップと、
前記第１のフリップフロップと直列に接続された第２のフリップフロップであって、前記ソースクロック信号に応答して、前記有効ビットを前記第１のフリップフロップ及び前記第２のフリップフロップを介して伝送する、該第２のフリップフロップとを含むことを特徴とするカスケードクロックリングネットワーク。
【請求項８】
請求項７に記載のカスケードクロックリングネットワークであって、
前記第２のフリップフロップから提供されるアサートされた前記有効ビットを受信するように接続された読み出し制御回路をさらに備え、
前記読み出し制御回路は、アサートされた前記有効ビットに応答して、前記ＦＩＦＯメモリに対する読み出し動作を開始することを特徴とするカスケードクロックリングネットワーク。
【請求項９】
請求項８に記載のカスケードクロックリングネットワークであって、
前記読み出し制御回路は、アサートされた前記有効ビットを受信した後に、予め定められた数の１以上のサイクルを待機してから前記読み出し動作を開始することを特徴とするカスケードクロックリングネットワーク。
【請求項１０】
請求項９に記載のカスケードクロックリングネットワークであって、
前記予め定められた数の１以上のサイクルは、前記読み出し動作が、前記エンドデータ値を前記ＦＩＦＯメモリに格納する有効データウィンドウ期間の中央付近で開始されることを確実にするように選択されることを特徴とするカスケードクロックリングネットワーク。
【請求項１１】
請求項１に記載のカスケードクロックリングネットワークであって、
前記ＦＩＦＯメモリは、有効データウィンドウ期間にわたって、前記各エンドデータ値を格納し、
前記カスケードクロックリングネットワークは、前記ＦＩＦＯメモリに対する読み出し動作を前記各有効データウィンドウ期間の中央付近で開始するための手段をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項１２】
請求項１に記載のカスケードクロックリングネットワークであって、
前記クロック信号経路に関連する遅延を測定するための回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項１３】
請求項１２に記載のカスケードクロックリングネットワークであって、
前記クロック信号経路に関連する遅延を測定するための前記回路は、前記クロック信号経路と同一の設計を有する第２のクロック信号経路を含むことを特徴とするカスケードクロックリングネットワーク。
【請求項１４】
請求項１に記載のカスケードクロックリングネットワークであって、
前記データ経路に関連する遅延を測定するための回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項１５】
請求項１４に記載のカスケードクロックリングネットワークであって、
前記データ経路に関連する遅延を測定するための前記回路は、前記データ経路と同一の設計を有する第２のデータ経路を含むことを特徴とするカスケードクロックリングネットワーク。
【請求項１６】
請求項１に記載のカスケードクロックリングネットワークであって、
前記クロック信号経路または前記データ経路に関連する遅延を定期的に測定し、定期的に測定された前記遅延が予め定められた閾値を超えて変化したか否かを判定するための遅延制御回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項１７】
請求項１６に記載のカスケードクロックリングネットワークであって、
前記遅延制御回路は、前記遅延が前記閾値を超えて変化したと判定された場合には、前記ＦＩＦＯメモリをリセットするように構成されていることを特徴とするカスケードクロックリングネットワーク。
【請求項１８】
請求項１６に記載のカスケードクロックリングネットワークであって、
前記遅延制御回路は、前記遅延を定期的に測定する期間を選択するための調整可能なカウンタを含むことを特徴とするカスケードクロックリングネットワーク。
【請求項１９】
請求項１に記載のカスケードクロックリングネットワークであって、
前記ソースクロック信号の周波数を調整するクロック周波数制御回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項２０】
請求項１９に記載のカスケードクロックリングネットワークであって、
前記処理ノードを動作させるために使用される電源電圧を調整する電源電圧制御回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項２１】
請求項１９に記載のカスケードクロックリングネットワークであって、
前記ＦＩＦＯメモリからの読み出し動作を、前記ソースクロック信号のサイクル数だけ遅延させる読み出し制御回路と、
前記ソースクロック信号の前記サイクル数を、前記ソースクロック信号の周波数に基づいて調整するモード制御回路と、をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項２２】
カスケードクロックリングネットワークを動作させる方法であって、
クロック信号経路上で、ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するステップであって、前記最後の処理ノードが、伝送された前記ソースクロック信号をエンドクロック信号として提供する、該ステップと、
伝送された前記ソースクロック信号に応答して、データ経路上で、データ値を、前記複数の処理ノードを介して前記最初の処理ノードから前記最後の処理ノードへ伝送するステップであって、前記最後の処理ノードが、伝送された前記データ値をエンドデータ値として提供する、該ステップと、
前記エンドクロック信号に応答して、前記エンドデータ値を先入れ先出し（ＦＩＦＯ）メモリに書き込むステップと、
前記エンドクロック信号に応答して、前記ＦＩＦＯメモリに以前に書き込まれた前記エンドデータ値を前記最初の処理ノードに読み出すステップと、
を含むことを特徴とする方法。
【請求項２３】
請求項２２に記載の方法であって、
前記ソースクロック信号の複数のサイクルに等しい継続時間を有する有効データウィンドウ期間にわたって、前記各エンドデータ値を格納するステップをさらに含むことを特徴とする方法。
【請求項２４】
請求項２３に記載の方法であって、
前記エンドデータ値を前記ＦＩＦＯメモリにラップアラウンド方式で書き込むステップをさらに含み、
前記ＦＩＦＯメモリの数によって、前記有効データウィンドウ期間の前記継続時間が定義されることを特徴とする方法。
【請求項２５】
請求項２２に記載の方法であって、
前記エンドデータ値が前記ＦＩＦＯメモリから読み出される前に、複数の前記エンドデータ値が前記ＦＩＦＯメモリに最初に書き込まれることを確実にするために、前記エンドデータ値の書き込みと読み出しとを同期させるステップをさらに含むことを特徴とする方法。
【請求項２６】
請求項２５に記載の方法であって、
前記同期させるステップは、
前記エンドデータ値の１つを前記ＦＩＦＯメモリのエントリに書き込むときに、有効ビットをアクティブ化するステップと、
前記ソースクロック信号に応答して、アクティブ化された前記有効ビットを複数のフリップフロップを介して伝送し、それによって、再同期有効ビットを提供するステップと、を含むことを特徴とする方法。 
【請求項２７】
請求項２６に記載の方法であって、
前記再同期有効ビットに応答して、前記ＦＩＦＯメモリに対する読み出し動作を開始するステップをさらに含むことを特徴とする方法。
【請求項２８】
請求項２７に記載の方法であって、
前記再同期有効ビットを検出するステップと、
前記再同期有効ビットの検出時に、前記ＦＩＦＯメモリに対する読み出し動作の開始を、前記ソースクロック信号の１以上のサイクルだけ遅延させるステップと、
前記遅延させるステップの後に、前記ＦＩＦＯメモリに対する読み出し動作を開始するステップと、をさらに含むことを特徴とする方法。
【請求項２９】
請求項２８に記載の方法であって、
前記読み出し動作が、前記エンドデータ値を前記ＦＩＦＯメモリに格納する有効データウィンドウ期間の中央付近で開始されることを確実にするように、前記予め定められた数の１以上のサイクルを選択するステップをさらに含むことを特徴とする方法。
【請求項３０】
請求項２５に記載の方法であって、
前記クロック信号経路または前記データ経路に関連する遅延を定期的に測定するステップと、
前記遅延が予め定められた閾値を超えて変化するか否かを判定するステップと、
前記遅延が前記閾値を超えて変化したと判定された場合には、前記ＦＩＦＯメモリ内の前記エンドデータ値の書き込み及び読み出しを再同期させるステップと、をさらに含むことを特徴とする方法。
【請求項３１】
請求項３０に記載の方法であって、
前記遅延を定期的に測定する期間を変更するステップをさらに含むことを特徴とする方法。
【請求項３２】
請求項２５に記載の方法であって、
前記カスケードクロックリングネットワークの動作電圧及び／または前記ソースクロック信号の周波数を変更するステップと、
その後に、前記ＦＩＦＯメモリ内の前記エンドデータ値の書き込みと読み出しとを再同期化させるステップと、をさらに含むことを特徴とする方法。
【請求項３３】
請求項２２に記載の方法であって、
前記有効データウィンドウ期間の間、前記各エンドデータ値を前記ＦＩＦＯメモリに格納するステップと、
前記各有効データウィンドウ期間の中央付近で前記ＦＩＦＯメモリへの読み出し動作を開始するステップと、をさらに含むことを特徴とする方法。
【請求項３４】
複数の並列なカスケードクロックリングネットワークを有するリングネットワークを動作させる方法であって、
第１のカスケードクロックリングネットワークの最後の処理ノードからのデータの伝送を、前記第１のカスケードクロックリングネットワークの最初の処理ノードと同期させ、それと同時に、前記第１のカスケードクロックリングネットワークに対して並列な第２のカスケードクロックリングネットワーク上でデータを通常動作モードで伝送するステップを含むことを特徴とする方法。
【請求項３５】
請求項３４に記載の方法であって、
前記第２のカスケードクロックリングネットワークの最後の処理ノードからのデータの伝送を前記第２のカスケードクロックリングネットワークの最初の処理ノードと同期させ、それと同時に、前記第２のカスケードクロックリングネットワークに対して並列な前記第１のカスケードクロックリングネットワーク上でデータを通常動作モードで伝送するステップをさらに含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２０１８年５月１日出願の「カスケードクロックリングバスを完了させるためのシステム及び方法」と題する米国特許出願第１５／９６７、９９０号に基づく優先権を主張するものである。上記出願の開示内容は、参照により本明細書に援用される。
【０００２】
（技術分野）
本発明は、カスケードクロックリングネットワークで実行されるクロック動作に関する。より詳細には、本発明は、カスケードクロックリングネットワーク全体のラウンドトリップトラバースを完了したクロック信号の再同期化に関する。
【背景技術】
【０００３】
図１は、複数の処理ノード１０１〜１０８を備えた従来の同期リングネットワーク１００のブロック図である。処理ノード１０１〜１０８はそれぞれ、ノード処理ユニット１１１〜１１８と、マルチプレクサ１２１〜１２８と、フリップフロップ１３１〜１３８とを含む。処理ノード１０１〜１０８はリング状に接続されており、フリップフロップ１３１、１３２、１３３、１３４、１３５、１３６、１３７、１３８のデータ出力Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８はそれぞれ、データバス１４１、１４２、１４３、１４４、１４５、１４６、１４７、１４８によって、マルチプレクサ１２２、１２３、１２４、１２５、１２６、１２７、１２８、１２１の入力に与えられる。フリップフロップ１３１〜１３８の入力はそれぞれ、マルチプレクサ１２１〜１２８の出力を受信するように接続されている。マルチプレクサ１２１〜１２８はそれぞれ、ノード処理ユニット１１１〜１１８からのデータ入力も受信することに留意されたい。フリップフロップ１３１〜１３８の出力はそれぞれ、ノード処理ユニット１１１〜１１８にも提供される。
【０００４】
フリップフロップ１３１〜１３８は、クロックソース１５０及びクロックドライバ回路１５１〜１６５を含むバランスクロックツリーを用いてクロックされる。バランスクロックツリーは、クロックソース１５０から提供されるクロック信号Ｃ０を、図示のように様々なクロックドライバ１５１〜１６５を介して伝送することによって、クロック信号Ｃ１〜Ｃ８をそれぞれフリップフロップ１３１〜１３８に提供するように構成される。クロック信号Ｃ１〜Ｃ８は、同相で（すなわち、同時に）遷移する。バランスクロックツリーは、システムにおけるセットアップ時間及びホールド時間のスキューを最小限に抑えることによって、同期リングネットワーク１００の最大動作周波数を生成する。このバランスクロックツリーリングネットワーク１００では、リング上に、「スタート」クロック信号及び「エンド」クロック信号という概念は存在しない。
【０００５】
図２は、複数の処理ノード２０１〜２０８を備えた従来のカスケードクロックリングネットワーク２００のブロック図である。処理ノード２０１〜２０８はそれぞれ、図１の同期リングネットワーク１００に関連して上述したノード処理ユニット１１１〜１１８と、マルチプレクサ１２１〜１２８と、フリップフロップ１３１〜１３８とを含む。加えて、処理ノード２０１〜２０８はそれぞれ、クロックドライバ回路２１１〜２１８と、クロックドライバ回路２２１〜２２８とを含む。
【０００６】
処理ノード２０１〜２０８はリング状に接続されており、フリップフロップ１３１、１３２、１３３、１３４、１３５、１３６、１３７、１３８のデータ出力Ｄ１´、Ｄ２´、Ｄ３´、Ｄ４´、Ｄ５´、Ｄ６´、Ｄ７´、ＤＥＮＤはそれぞれ、データバス１４１、１４２、１４３、１４４、１４５、１４６、１４７、１４８によって、マルチプレクサ１２２、１２３、１２４、１２５、１２６、１２７、１２８、１２１の入力に与えられる。
【０００７】
クロックソース１５０は、入力クロック信号Ｃ０をクロックドライバ回路２１１及び２２１に提供する。クロックドライバ回路２１１は、クロック信号ＣＦＦ１をクロックフリップフロップ１３１に提供し、クロックドライバ回路２２１は、カスケードクロック信号Ｃ１´を下流の処理ノード２０１のクロックドライバ回路２１２及び２２２に提供する。カスケードクロック信号Ｃ１´は、クロックドライバ回路２２２〜２２８を介して、それぞれカスケードクロック信号Ｃ２´、Ｃ３´、Ｃ４´、Ｃ５´、Ｃ６´、Ｃ７´、ＣＥＮＤとして伝送される。クロックドライバ回路２１２〜２１８はそれぞれ、受信したカスケードクロック信号Ｃ１´〜Ｃ７´に応答して、クロック信号ＣＦＦ２〜ＣＦＦ８をフリップフロップ１３２〜１３８に提供する。上述の形態では、処理ノード２０１〜２０８は、データ信号及びクロック信号を或る処理ノードからその次の処理ノードに渡すデイジーチェーンとして構成されている。リングは、最後の処理ノード２０８から出力されたデータＤＥＮＤが最初の処理ノード２０１に与えられたときに完了する。隣接する処理ノード間の距離が長い場合、隣接する処理ノード間で送信されるデータ信号及びクロック信号は、データ／クロックの位相関係を保存し、高周波数動作を可能にするために、データ経路及びクロック信号経路の両方に沿って配置された同数のバッファステージによってバッファされ得る。
【０００８】
処理ノードが大きなダイ面積に及ぶ設計では、大きなダイ面積にわたって同期リングネットワーク２００のクロックツリーのバランスを取ることは非常に困難であるため、カスケードクロックリングネットワーク１００を使用することが有利であり得る。すなわち、データ及びクロックのスキューはクロックツリーによって管理することができないので、同期リングネットワーク１００の動作周波数が制限される。さらに、大きなクロックツリーでは、所要電力が過度に高くなる。カスケードクロックリングシステム２００では、データ及びクロックのスキューは、はるかに局在化され、管理可能である。大きなクロックツリーを必要としないカスケードクロックリングシステム２００では、動作周波数ははるかに高くなり、電力消費はより低くなるはずである。
【０００９】
しかしながら、カスケードクロックリングシステム２００では、最後の処理ノード２０８から最初の処理ノード２０１にデータが転送されるときに問題が存在する。最初の処理ノード２０１は、その入力クロック信号Ｃ０をその上流の処理ノード２０８からではなくクロックソース１５０から受信するので、他の処理ノード２０２〜２０８とは異なる。ソースクロック信号Ｃ０は、上述のように、ノードからノードへカスケード（転送）される。最後の処理ノード２０８から最初の処理ノード２０１に送られるデータＤＥＮＤは、最後の処理ノード２０８のクロックドメインに由来するが、最初の処理ノード２０１のフリップフロップ１３１にデータをラッチするために使用されるクロック信号ＣＦＦ１は、クロックソース１５０に由来する。ノードクロック信号Ｃ１´〜Ｃ７´は最初の処理ノード２０１からカスケードされるので、最初のノードクロック信号Ｃ０と最後のノードクロック信号ＣＥＮＤとの位相差は不明である。この位相差は、周波数、温度、電圧、電源ノイズ、クロックジッタ、及び他の環境要因によって変化する。結果として、最初の処理ノード２０１におけるフリップフロップ１３１のセットアップ時間及びホールド時間は不明となる。他の全ての処理ノード２０２〜２０８については、各処理ノードにおけるデータフリップフロップのためのクロックは、その上流の処理ノードから受け取るだけであり、既知の固定された位相関係を有するので、上記のようなコンフリクトは生じない。なお、ソースクロック信号Ｃ０と、最後の処理ノード２０８からのクロック信号ＣＥＮＤとが同位相であれば、問題はない。しかしながら、当然、そうではない。
【００１０】
１つの可能な解決策は、生成された周波数が、最後の処理ノード２０８から提供されるクロック信号ＣＥＮＤとソースクロック信号Ｃ０との間の位相遅延をほとんどまたは全く生成しないという制約の下で、位相ロックループ（ＰＬＬ）を使用してソースクロック信号Ｃ０を生成することである。一般に、ソースクロック信号Ｃ０の許容周波数は、クロックループの基本周波数の整数倍である。この解決策の欠点としては、設計が困難であること、設計が大きなレイアウト面積を必要とし、それは多くのリングバスを有するチップには適していないこと、ループ応答が電圧及び周波数のスケーリングを実施するのに適していないこと、及び、この解決策が粗い動作周波数分解能しか許容しないこと、が挙げられる。さらに、ＰＬＬを使用するためには、高密度のデジタル回路を含む領域にアナログ回路を実装する必要がある。デジタル回路は、敏感なアナログ回路に大きなノイズを注入し、ジッタを増加させる。これを最小限に抑えるために、アナログ回路とデジタル回路とには、別々の電圧供給源が設けられる。別々の電圧供給バスを追加すると、望ましくないことに、必要なチップレイアウト面積が増加し、配線が困難になるだけでなく、一方の電圧供給バスのロバスト性を損なう恐れがある。加えて、デジタル回路とアナログ回路とを、比較的大きな物理的距離を隔てて互いに離間させる必要があるので、より大きなレイアウト面積が必要となる。
【００１１】
別の可能な解決策は、ループのパス内に遅延線を有する遅延ロックループ（ＤＬＬ）を使用することである。この解決策では、最初の処理ノード２０１の入力が最後の処理ノード２０８の出力を受信したときに、位相検出器により、ソースクロック信号Ｃ０及びクロック信号ＣＥＮＤの位相がサンプリングする。可変遅延線は、ソースクロック信号Ｃ０とクロック信号ＣＥＮＤとの間の位相遅延がゼロになるように調節される。この解決策の欠点としては、設計が複雑であること、帯域内ジッタに対して敏感であること、電源ノイズに起因して追加ジッタが発生すること、及び、周波数及び電圧のスケーリングが困難であること（周波数範囲は、遅延線領域と追加される余分な遅延とによって制限されるため）が挙げられる。
【００１２】
このため、カスケードクロックリングバスを介してデータを確実に転送する方法が求められている。
【発明の概要】
【課題を解決するための手段】
【００１３】
したがって、本発明は、ソースクロック信号（Ｃ０）を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードまで伝送するクロック信号経路を含むカスケードクロックリングネットワークを提供する。最後の処理ノードは、伝送されたソースクロック信号をエンドクロック信号（ＣＥＮＤ）として提供する。カスケードクロックリングネットワークはまた、伝送されたソースクロック信号に応答して、データ値を、複数の処理ノードを介して最初の処理ノードから最後の処理ノードまで伝送するデータ経路を含む。最後の処理ノードは、伝送されたデータ値をエンドデータ値（ＤＥＮＤ）として提供する。先入れ先出し（ＦＩＦＯ）メモリが、最初の処理ノードと最後の処理ノードとの間に配置される。エンドデータ値ＤＥＮＤは、エンドクロック信号ＣＥＮＤに応答して、ＦＩＦＯメモリに書き込まれる。その後、ソースクロック信号Ｃ０に応答して、エンドデータ値ＤＥＮＤがＦＩＦＯメモリから読み出され、再同期データ値（Ｄ０´）として最初の処理ノードに提供される。
【００１４】
一実施形態では、ＦＩＦＯメモリは、ＦＩＦＯエントリの数にエンドクロック信号ＣＥＮＤの期間を乗じた期間に等しい継続時間を有する有効データウィンドウ期間（Ｗ１）にわたって、各エンドデータ値ＤＥＮＤを格納する。ＦＩＦＯエントリの数は、動作中のクロック電圧及び温度変化に起因するクロック信号Ｃ０及びＣＥＮＤの予想される位相ドリフト、並びに、２つのクロック信号Ｃ０及びＣＥＮＤの相対ジッタを考慮して選択される。
【００１５】
本発明の別の態様によれば、同期回路をさらに備え、同期回路によって、エンドデータ値がＦＩＦＯメモリから読み出される前に、複数のエンドデータ値ＤＥＮＤが最初にＦＩＦＯメモリに書き込まれることを確実にする。同期回路は、第１のエンドデータ値がＦＩＦＯメモリに書き込まれたときにアサートされる有効ビットを受け取るように接続された入力を有する第１のフリップフロップと、第１のフリップフロップと直列に接続された第２のフリップフロップであって、ソースクロック信号に応答して、アサートされた有効ビットを第１及び第２のフリップフロップを介して伝送する第２のフリップフロップとを含み得る。また、読み出し制御回路が、第２のフリップフロップによって提供されるアサートされた有効ビットを受信するように接続されており、読み出し制御回路は、アサートされた有効ビットを受信した後、ＦＩＦＯメモリに対する読み出し動作を開始する。一実施形態では、読み出し制御回路は、アサートされた有効ビットを受信した後、予め定められた数の１以上のサイクルを待機してから読み出し動作を開始する。予め定められたサイクル数は、読み出し動作が有効データウィンドウ期間Ｗ１の中央付近で開始されることを確実にするように選択される。 
【００１６】
別の実施形態によれば、カスケードクロックリングネットワークのクロック信号経路またはデータ経路に関連する遅延を周期的に測定するための制御回路がさらに設けられる。最初に測定された（基準）遅延とその後に測定された遅延との間の差が予め定められた閾値を超えた場合、制御回路は、ＦＩＦＯメモリ内のエンドデータ値の書き込みと読み出しとを再同期させる。
【００１７】
別の実施形態は、カスケードクロックリングネットワークを動作させる方法を含み、本方法は、（１）クロック信号経路上で、ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するステップであって、最後の処理ノードが、伝送されたソースクロック信号をエンドクロック信号として提供する、該ステップと、（２）伝送されたソースクロック信号に応答して、データ経路上で、データ値を、複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するステップであって、最後の処理ノードが、伝送されたデータ値をエンドデータ値として提供する、該ステップと、（３）エンドクロック信号に応答して、エンドデータ値を先入れ先出し（ＦＩＦＯ）メモリに書き込むステップと、（４）エンドクロック信号に応答して、ＦＩＦＯメモリに以前に書き込まれたエンドデータ値を最初の処理ノードに読み出すステップと、を含む。
【００１８】
本方法は、ＦＩＦＯメモリのエントリ数にソースクロック信号の期間を乗じた期間に等しい継続時間を有する有効データウィンドウ期間にわたって、各エンドデータ値を格納するステップをさらに含む。
【００１９】
本方法は、エンドデータ値がＦＩＦＯメモリから読み出される前に、複数のエンドデータ値が最初にＦＩＦＯメモリに書き込まれることを確実にするために、ＦＩＦＯメモリ内のエンドデータ値の書き込みと読み出しとを同期させるステップをさらに含み得る。この同期させるステップは、エンドデータ値の１つをＦＩＦＯメモリのエントリに書き込むときに、有効ビットをアクティブ化するステップと、ソースクロック信号に応答して、アクティブ化された有効ビットを複数のフリップフロップを介して伝送し、それによって、再同期有効ビットを提供するステップと、を含む。ＦＩＦＯメモリに対する読み出し動作は、再同期有効ビットに応答して開始され得る。これらの読み出し動作は、ソースクロック信号の１以上のサイクルだけ遅延させて行われ、それによって、読み出し動作が有効データウィンドウ期間の中央付近で行われることを確実にする。
【００２０】
別の実施形態によれば、本方法は、さらに、（１）クロック信号経路またはデータ経路に関連する遅延を定期的に測定するステップと、（２）定期的に測定された遅延が予め定められた閾値を超えて変化するか否かを判定するステップと、（３）遅延が閾値を超えて変化したと判定された場合には、ＦＩＦＯメモリ内のエンドデータ値の書き込み及び読み出しを再同期させるステップとを含み得る。
【００２１】
本発明は、以下の説明及び図面を参照することによって、より完全に理解されるであろう。
【図面の簡単な説明】
【００２２】
【図１】従来の同期リングネットワークのブロック図である。
【図２】従来のカスケードクロックリングネットワークのブロック図である。
【図３】本発明の一実施形態によるカスケードクロックリングネットワークのブロック図である。
【図４】本発明の一実施形態による、図３のカスケードクロックリングネットワークに含まれる再同期ＦＩＦＯ回路の概略的な構造を示すブロック図である。
【図５】本発明の一実施形態による、図４の再同期ＦＩＦＯ回路の動作を初期化する方法を示すフロー図である。
【図６】図５の初期化方法中の図４の再同期ＦＩＦＯ回路内の信号を示す波形図である。
【図７】本発明の一実施形態による、図３のカスケードクロックリングネットワークに関連するクロック遅延（ＤＲＥＦ）を推定するために使用されるシステムのブロック図である。
【図８】本発明の別の実施形態による、クロック遅延（ＤＲＥＦ）の推定を可能にする改変されたカスケードクロックリングネットワークのブロック図である。
【図９】本発明の別の実施形態による、図３のカスケードクロックリングネットワークと同様の複数の並列カスケードクロックリングネットワークを含む順列リングネットワークのブロック図である。
【図１０】通常動作中の温度及び／または電圧の変動によって引き起こされる、リングネットワークのクロック／データ経路に関連する遅延の変化を補償する方法のフロー図である。
【図１１】本発明の一実施形態による、図３のカスケードリングネットワークと組み合わせて使用される周波数−電圧スケーリングシステムのブロック図である。
【図１２】本発明の別の実施形態による、カスケードクロックリングネットワークのブロック図である。
【図１３】本発明の一実施形態による、図１２のカスケードクロックリングネットワークに含まれる再同期ＦＩＦＯ回路の概略的な構造を示すブロック図である。
【発明を実施するための形態】
【００２３】
概して、本発明は、カスケードクロックリングネットワークの最後の処理ノードのデータ経路と、カスケードクロックリングネットワークの最初の処理ノードとの間に、先入れ先出し（ＦＩＦＯ）メモリ構造を含む。ＦＩＦＯ書き込み回路及びデータ入力は、最後の処理ノードから提供された出力クロック信号（ＣＥＮＤ）によって駆動され、ＦＩＦＯ読み出し回路及びデータ出力は、ソースクロック信号（Ｃ０）によって駆動される。以下、本発明をさらに詳細に説明する。
【００２４】
図３は、本発明の一実施形態による、カスケードクロックリングネットワーク３００を示すブロック図である。このカスケードクロックリングネットワーク３００はカスケードクロックリングネットワーク２００（図２）と同様であるので、図２及び図３中の同様の要素には、同様の参照番号を付している。したがって、カスケードクロックリングネットワーク３００は、クロックソース１５０と、処理ノード２０１〜２０８とを備え、処理ノード２０１〜２０８はそれぞれ、ノード処理ユニット１１１〜１１８と、マルチプレクサ１２１〜１２８と、フリップフロップ１３１〜１３８と、クロックドライバ回路２１１〜２１８と、クロックドライバ回路２２１〜２２８とを含む。クロックドライバ回路２２１〜２２８はそれぞれ、クロックソース１５０から提供されるソースクロック信号Ｃ０に応答して、クロックバス１７１〜１７８上に、カスケードクロック信号Ｃ１´〜Ｃ７´及びＣＥＮＤを提供し、それによって、クロック信号経路を提供する。クロックソース１５０は、ソースクロック信号Ｃ０を調整するためのバッファまたは別の回路を有し得ることを理解されたい。クロックドライバ回路２１１〜２１８はそれぞれ、クロック信号Ｃ０及びＣ１´〜Ｃ７´に応答して、クロック信号ＣＦＦ１〜ＣＦＦ８をクロックフリップフロップ１３１〜１３８に提供する。フリップフロップ１３１〜１３８はそれぞれ、出力データ値Ｄ１´〜Ｄ７´及びＤＥＮＤをデータバス１４１〜１４８上に提供し、それによって、データ経路を提供する。
【００２５】
再同期ＦＩＦＯ回路３０１が、リング内の最後の処理ユニット２０８から提供されるデータ値ＤＥＮＤ及びクロック信号ＣＥＮＤを受け取るように接続されている。再同期ＦＩＦＯ回路３０１はまた、クロックソース１５０からソースクロック信号Ｃ０を受け取り、かつ、リング制御回路３５０からＲＥＳＥＴ制御信号を受け取るように接続されている。これに応答して、再同期ＦＩＦＯ回路３０１は、（データバス１４９上で）リングの最初の処理ノード２０１のマルチプレクサ１２１に、ソースクロック信号Ｃ０と再同期させたデータ値Ｄ０´を提供する。
【００２６】
図４は、本発明の一実施形態による再同期ＦＩＦＯ回路３０１の概略的な構造を示すブロック図である。再同期ＦＩＦＯ回路３０１は、Ｎ個のエントリＦＩＦＯメモリ４００と、有効ビットエントリ４０１と、書き込み制御回路４１０と、書き込みエントリセレクタ４１１と、書き込みアドレスカウンタ４１２と、読み出し制御回路４２０と、読み出しエントリセレクタ４２１と、読み出しアドレスカウンタ４２２と、遅延レジスタ４２５と、フリップフロップ４３１〜４３２を含む同期化回路４３０とを含む。
【００２７】
以下でより詳細に説明するように、再同期ＦＩＦＯ回路３０１は、最後の処理ノード２０８から受信したデータＤＥＮＤを２以上のクロックサイクルにわたって「有効」にして、エントリ有効データウィンドウを実質的に増大させることを可能にする。これにより、入力データ信号（ＤＥＮＤ）及びクロック信号（ＣＥＮＤ）に対する位相が不明な様々なソースクロックＣ０による、信頼性の高いサンプリングが容易になる。ＦＩＦＯ回路３０１内のエントリ数により、エントリ有効データウィンドウの継続時間が決定される。必要とされる継続時間は、動作中のクロック電圧及び温度変化に起因するクロック信号Ｃ０及びＣＥＮＤの予測される位相ドリフト、並びに、２つのクロック信号Ｃ０及びＣＥＮＤの相対ジッタによって決定される。遅延レジスタ４２５に格納された臨界可変遅延値（Ｊ）は、読み出し制御回路４２０が、エントリ有効データウィンドウに対する読み出しパルスの位置（理想的には中央付近）を制御することを可能にする。
【００２８】
図５は、本発明の一実施形態による、再同期ＦＩＦＯ回路３０１の動作を初期化する方法５００を示すフロー図である。
【００２９】
図６は、図５の初期化方法中の再同期ＦＩＦＯ回路３０１内の信号を示す波形図である。
【００３０】
ステップ５０１では、制御回路３５０は、リセット制御信号をアサートし（ＲＥＳＥＴ＝１）、それによって、再同期ＦＩＦＯ回路３０１の読み出しパルスアライメントモードを開始させ、再同期ＦＩＦＯ回路３０１からデータを読み取るために使用されるリードパルスをソースクロック信号Ｃ０とアライメントさせる。ＲＥＳＥＴ信号は、通信ノード（処理ノード）２０１〜２０８内のプロセッサノード１１１〜１１８に提供される。ＲＥＳＥＴ信号はまた、再同期ＦＩＦＯ回路３０１内の書き込み制御回路４１０及び読み出し制御回路４２０にも提供される。
【００３１】
そして、ＲＥＳＥＴ信号がすでにアサートされている場合（例えば、読み出しパルスアライメントモードがすでにアクティブ化されており、データが、以前の読出しパルスアライメントの結果を用いてリングネットワーク上ですでに送信されている場合）には（ステップ５０２：ＮＯ）、処理はステップ５１４に進む。ステップ５１４では、プロセッサノード１１１〜１１８は、リングネットワーク上での新しい有効データ値の送信を一時停止する。ステップ５１４に続くステップ５１５では、プロセッサノード１１１〜１１８、書き込み制御回路４１０、及び読み出し制御回路４２０は、Ｋサイクル待機する。Ｋの値は、リングネットワーク上で現在伝送されている全ての有効データ値がそれらの宛先ノードに伝送されることを可能にするように選択される。そして、Ｋサイクル経過後、ステップ５０３に進む。
【００３２】
一方、ＲＥＳＥＴ信号がすでにアサートされていない場合（すなわち、アサートされたＲＥＳＥＴ信号が、１回目の読み出しパルスアライメントモードのアクティブ化を示す場合）、処理はステップ５０２からステップ５０３に直接進む。
【００３３】
ステップ５０３では、書き込み制御回路４１０は、書き込みアドレスカウンタ４１２をリセットし、書き込みアドレスカウンタ４１２に格納されている書き込みアドレスによって、書き込みエントリセレクタ４１１がＮ個のエントリＦＩＦＯメモリ４００のエントリＥ１（及び有効ビット４０１）をポイントするようにする。加えて、読み出し制御回路４２０は、読み出しアドレスカウンタ４２２をリセットし、読み出しアドレスカウンタ４２２に格納されている読み出しアドレスによって、読み出しエントリセレクタ４２１がＮ個のエントリＦＩＦＯメモリ４００のエントリＥ１（及び有効ビット４０１）をポイントするようにする。
【００３４】
次に、書き込み制御回路４１０をイネーブルにし（ステップ５０４）、リングネットワークの最後の処理ノード２０８から再同期ＦＩＦＯ回路３０１に提供された有効な書き込みデータＤＥＮＤを、対応するクロック信号ＣＥＮＤに応答して、再同期ＦＩＦＯ回路３０１に書き込む（ステップ５０５）。書き込み制御回路４１０は、書き込みイネーブル信号ＷＥをアサートし、最初に受信した有効な書き込みデータ値（Ｄ１）をＦＩＦＯメモリ４００のエントリＥ１に書き込むとともに、論理値「１」を、エントリＥ１に関連する有効ビットメモリ４０１に書き込む（図６）。書き込みイネーブル信号ＷＥは、ＦＩＦＯメモリ４００への書き込み動作が最後の通信ノード２０８のクロックドメインで行われるように、受信したクロック信号ＣＥＮＤに同期してアサートされる。
【００３５】
ＣＥＮＤ信号の連続サイクル中に、その後に受信したデータ信号Ｄ２〜Ｄ１２は、ＦＩＦＯメモリ４００のエントリに順次書き込まれる。図６に示す実施形態では、ＦＩＦＯメモリ４００は、６つのエントリ（Ｅ１〜Ｅ６）を含み、データ値Ｄ２〜Ｄ６は、入力クロック信号ＣＥＮＤの次の５サイクルの間に、ＦＩＦＯエントリＥ２〜Ｅ６にそれぞれ書き込まれる。書き込み制御回路４１０は、書き込み動作のたびに、書き込みアドレスカウンタ４１２をインクリメントする。ＦＩＦＯメモリ４００の最後のエントリＥ６にデータ値Ｄ６を書き込んだ後、書き込みアドレスカウンタは値「１」に戻り、最初のエントリＥ１に対して次の（７番目の）書き込み動作を行う。このようにして、書き込みデータ値Ｄ７〜Ｄ１２が、エントリＥ１〜Ｅ６にそれぞれ書き込まれる（以前に書き込まれたデータ値Ｄ１〜Ｄ６を上書きする）。
【００３６】
データをこのようにして格納することにより、図６に示すように、書き込みデータ値Ｄ１〜Ｄ１２の各々を、入力クロック信号ＣＥＮＤの約Ｎサイクル（例えば、６サイクル）の期間にわたって、ＦＩＦＯメモリに格納することができる。第１のデータ値Ｄ１に対する拡張された有効データウィンドウ期間Ｗ１が、図６に示されている。本実施例では６個のエントリが説明されているが、別の実施例では別の個数のエントリを使用してもよいことを理解されたい。ＦＩＦＯメモリ４００のエントリ数を選択における考慮するべき事項については、以下でより詳細に説明する。特定の実施形態では、ＦＩＦＯメモリ４００は、８個以下のエントリを含む。
【００３７】
有効ビットメモリ４０１に格納されている有効ビットＶは、フリップフロップ４３１の入力端子に提供される。フリップフロップ４３１の出力端子は、フリップフロップ４３２の入力端子に接続されている。フリップフロップ４３２の出力端子は、読み出し制御回路４２０に接続されている。フリップフロップ４３２から読み出し制御回路４２０に提供される信号は、再同期有効信号ＲＳ＿ＶＡＬＩＤと符号が付されている。フリップフロップ４３１及びフリップフロップ４３２は、ソースクロック信号Ｃ０（入力クロック信号ＣＥＮＤと同一の周波数を有する）に応答して動作する。
【００３８】
論理値「１」の有効ビットＶが有効ビットメモリ４０１に書き込まれた後、ソースクロック信号Ｃ０の次の立ち上がりエッジによって、この論理値「１」の有効ビットＶがフリップフロップ４３１にラッチされる。そして、ソースクロック信号Ｃ０の次の立ち上がりエッジによって、この論理値「１」の有効ビットＶがフリップフロップ４３２にラッチされる。このとき、フリップフロップ４３２は、論理値「１」の有効ビットＶを、読み出し制御回路４２０に提供する（すなわち、ＲＳ＿ＶＡＬＩＤ＝１）。この遷移を図６に示す。
【００３９】
読み出し制御回路４２０は、ＲＳ＿ＶＡＬＩＤ信号が論理値「１」状態に遷移したことを検出すると（ステップ５０６：ＹＥＳ）、有効なリセット信号（Ｖ＿ＲＳＴ）をアサートし、書き込み制御回路４１０に提供する。書き込み制御回路４１０は、アサートされたＶ＿ＲＳＴ信号に応答して、有効ビットメモリ４０１に格納されている有効ビットＶを論理値「０」にリセットし、次回の読み出しパルスアライメントモードが開始されるまで、有効ビットメモリ４０１への書き込みをディスエーブルにする（ステップ５０７）。ＲＳ＿ＶＡＬＩＤ信号がアサートされるまでは（ステップ５０６：ＮＯ）、読み出し制御回路４２０は、ＲＳ＿ＶＡＬＩＤ信号のアサートを検出するために待機することに留意されたい。別の実施形態では、書き込み制御回路４１０は、対応するエントリＥ１への２回目の書き込み動作が行われたときに（すなわち、ＦＩＦＯメモリ４００への第７の書き込み動作中に）、有効ビットＶをリセットする。
【００４０】
読み出し制御回路４２０は、アサートされたＲＳ＿ＶＡＬＩＤ信号を受信した後、クロック信号Ｃ０（またはＣＥＮＤ）のＪサイクルが経過するまで待機する（ステップ５０８）。Ｊは、遅延レジスタ４２５に格納されている値である。制御回路３５０は、Ｊの値を決定し、決定したＪの値を遅延レジスタ４２５に書き込むことができることに留意されたい。一実施形態では、Ｊの値は、ＦＩＦＯメモリ４００のエントリ数（Ｎ）を２で割った数から、アサートされた有効ビットＶをソースクロック信号Ｃ０と再同期させるのに必要なクロックサイクル数を差し引いた数に等しい。図６の例では、Ｎ＝６であり、アサートされた有効ビットＶを再同期化するのに必要なＣ０クロックサイクルの数は２である（この再同期化では２つのフリップフロップ４３１、４３２を使用するため）。結果として、Ｊ＝１（すなわち、Ｊ＝（６／２）−２）となる。このＪの値は、図６に示されている。
【００４１】
Ｊサイクル待機した後、読み出し制御回路４２０をイネーブルにし（ステップ５０９）、ソースクロック信号Ｃ０に応答して、エントリＥ１から開始して、ＦＩＦＯメモリ４００からデータを読み出す（ステップ５１０）。読み出し制御回路４２０は、ＦＩＦＯメモリ４００のエントリＥ１から第１のデータ値（Ｄ１）を読み出すリードイネーブル信号ＲＥをアサートする。この読み出し動作を可能にする読み出しパルスは、図６において、Ｅ１＿ＲＤとして示されている。リードパルスＥ１＿ＲＤは、（ＦＩＦＯメモリ４００からの読み出し動作が最初の通信ノード２０１のクロックドメインで実行されるように）ソースクロック信号Ｃ０と同期して、時刻Ｓ１でアサートされる。エントリＥ１〜Ｅ６に対する読み出し動作のタイミングは、図６において、信号Ｅ１＿ＲＤ〜Ｅ６＿ＲＤによって示されている。
【００４２】
ソースクロック信号Ｃ０の連続サイクル中に、データ値Ｄ２〜Ｄ１２がＦＩＦＯメモリ４００のエントリから順次読み出される。読み出し制御回路４２０は、読み出し動作のたびに、読み出しアドレスカウンタ４２２をインクリメントする。ＦＩＦＯメモリ４００の最後のエントリＥ６からデータ値Ｄ６を読み出した後、読み出しアドレスカウンタは値「１」に戻り、最初のエントリＥ１に対して次の（７番目の）読み出し動作を行う。このようにして、ソースクロック信号Ｃ０の連続サイクル中に、データ値Ｄ１〜Ｄ１２がＦＩＦＯメモリ４００から順次読み出される。説明した実施例では、読み出しアドレスカウンタ４２２及び読み出しエントリセレクタ４２１を使用して、読み出す対象のＦＩＦＯメモリ４００のエントリを選択し、書き込みアドレスカウンタ４１２及び書き込みエントリセレクタ４１１を使用して、書き込む対象のＦＩＦＯメモリ４００のエントリを選択しているが、別の例では、ＦＩＦＯメモリ４００にアクセスするのに使用される読み出しアドレス及び書き込みアドレスを生成するために、当業者によく知られている別の回路を使用してもよいことを理解されたい。
【００４３】
Ｊの値は、ＦＩＦＯメモリ４００に格納されたデータ値Ｄ１〜Ｄ１２が、データ値に関連するデータウィンドウの中央付近のサンプリングポイントで読み出されることを確実にするために選択されることに留意されたい。図６は、ＦＩＦＯメモリ４００のエントリＥ１からデータ値Ｄ１が読み出されるサンプリングポイント（Ｓ１）が、このデータ値に関連するデータウィンドウＷ１の中央付近に位置することを示している。ＣＥＮＤクロックドメインからＣ０クロックドメインへの有効ビットＶの再同期化に起因して、データウィンドウＷ１の中央に対するサンプリングポイントＳ１の位置に関して１クロックサイクル分の不確定性が存在する。
【００４４】
有利なことに、クロックサイクル毎に書き込み動作及び読み出し動作を実行するので、ＦＩＦＯメモリ４００に関連して使用するための空フラグ及び完全フラグは不要となる。
【００４５】
上述した再同期化の完了後、制御ロジック３５０は、全ての通信ノード２０１〜２０８からの有効データの送信を可能にする（ステップ５１１）。
【００４６】
その後、制御回路３５０は、カスケードクロックリングネットワーク３００に関連するクロック／データ遅延（ＤＲＥＦ）を測定し、その測定結果を格納する（ステップ５１２）。制御回路３５０は、以下でより詳細に説明するように、別の方法を用いて、リングネットワーク３００のクロック／データ遅延ＤＲＥＦを測定してもよい。以下に提供される実施例では、単一のクロック遅延（ＤＲＥＦ）の測定について説明するが、複数のクロック遅延（ＤＲＥＦ）の測定を行い、その複数の測定結果の平均値を、クロック遅延（ＤＲＥＦ）値として使用してもよいことを理解されたい。このような平均化は、クロックジッタが測定の分解能よりも大きい場合に有用である。
【００４７】
図７は、本発明の一実施形態による、リングネットワーク３００に関連するクロック遅延（ＤＲＥＦ）を推定するシステム７００のブロック図である。システム７００は、モデルリングクロックバス７０１を含み、このモデルリングクロックバス７０１は、クロックドライバ２２１〜２２８及びクロックバス１７１〜１７８と同一に設計された（すなわち、同一の伝送特性を有する）クロックドライバ７２１〜７２８及びクロックバス７７１〜７７８を含む。制御回路３５０は、モデル遅延刺激回路７１１と、モデル遅延検出回路７１２とを含む。時刻Ｔ０において、モデル遅延刺激回路７１１は、テストパルス信号ＴＰをモデルリングクロックバス７０１上に送信する。このテストパルス信号は、モデルリングクロックバス７０１に伝送され、時間Ｔ１においてモデル遅延検出回路７１２によって受信される。制御回路３５０は、再同期ＦＩＦＯ回路３０１に近接して配置されており、リングネットワーク３００の推定遅延ＤＲＥＦを、Ｔ１からＴ０を差し引いた値と等しくなるように計算する。有利なことには、推定クロック遅延ＤＲＥＦは、リングネットワーク３００の動作を中断することなく、システム７００によって計算することができる。
【００４８】
図８は、本発明の別の実施形態による、リングネットワークに関連するクロック／データ遅延（ＤＲＥＦ）の推定を可能にする改変されたリングネットワーク８００のブロック図である。このリングネットワーク８００はリングネットワーク３００（図３）と同様であるので、図３及び図８中の同様の要素には、同様の参照番号を付している。リングネットワーク８００とリングネットワーク３００との主な違いは、リングネットワーク８００が追加のデータバスラインを含むように改変されていることである。したがって、各データバス８４１〜８４９は、リングネットワーク３００の対応するデータバス１４１〜１４９よりも１つ多いデータラインを有する。この追加データ線は、最初の処理ノード２０１からデータ経路に沿ってテストデータパルス（ＤＰ）を送信し、最後の処理ノード２０８を通って伝送するために使用される。なお、図８のデータ値は、テストデータパルスのデータバスへの追加を示すために、Ｄ０´´〜Ｄ７´´及びＤＥＮＤ´´として再符号付けされていることに留意されたい。制御回路３５０は、テストデータパルス（ＤＰ）の状態を制御する。通常動作中、テストデータパルス（ＤＰ）は、論理値「０」を有する。しかし、リングネットワーク８００に関連するクロック遅延（ＤＲＥＦ）を推定するために、制御回路３５０は、論理値「１」を再同期ＦＩＦＯ回路３０１に書き込むことによって、テストデータパルス（ＤＰ）を論理値「１」にアクティブ化する。時刻ＴＡにおいて、ソースクロック信号Ｃ０は、再同期ＦＩＦＯ回路３０１からテストデータパルス（ＤＰ）を読み出す。テストデータパルス（ＤＰ）は、最初の処理ノード２０１からデータ経路の追加データ線上に送信され、最終の処理ノード２０８を通って伝送され、時刻ＴＢにおいてデータバス８４８上の再同期ＦＩＦＯ３０１によって受信される。制御回路３５０は、再同期ＦＩＦＯ回路３１０に近接して配置され、カスケードクロックリングネットワーク８００の推定クロック遅延ＤＲＥＦを、時刻ＴＢから時刻ＴＡを差し引いた値と等しくなるように計算する。有利なことには、推定クロック遅延ＤＲＥＦは、カスケードクロックリングネットワーク８００の通常動作中に計算することができる。
【００４９】
図９は、通信ノードＮ０〜Ｎ７間でデータを送信するために使用される複数の並列リングネットワーク９０１〜９０３を含む順列リングネットワーク９００のブロック図である。各リングネットワーク９０１〜９０３は、各通信ノードＮ０〜Ｎ７間の通信チャネルとして機能する。リングネットワーク９０１はデータ転送ステーションＡ０〜Ａ７を含み、リングネットワーク９０２はデータ転送ステーションＢ０〜Ｂ７を含み、リングネットワーク９０３はデータ転送ステーションＣ０〜Ｃ７を含む。並列リングネットワーク９０１、９０２及び９０３はそれぞれ、対応するクロック信号ＣＫＡ、ＣＫＢ及びＣＫＣに応答して動作する。順列リングネットワーク９００は、その全体が参照により本明細書に組み込まれる、同一出願人よる同時係属米国特許出願第１５／８１６、３７４号により詳細に説明されている。
【００５０】
この順列リングネットワーク９００では、リングネットワーク９０１〜９０３に関連するクロック遅延ＤＲＥＦは、読み出しパルスアライメントモードのステップ５１２（図５）の間に決定することができる。データの送信は、並列リングネットワーク９０１〜９０３のうちの１以上で停止されるが、並列リングネットワーク９０１〜９０３のうちの１以上でデータの通常の送信を継続することができる。例えば、リングネットワーク９０１の動作を一時的に停止することができ、その後、停止中のリングネットワーク９０１上でテストパルスを送信することにより、このリングネットワーク９０１のクロック信号ＣＫＡに関連するクロック遅延ＤＲＥＦを決定することができる（図７または図８に関連して上述した教示にしたがって決定する）。それと同時に、別のリングネットワーク９０２〜９０３上でデータの送信を継続することができる。同様に、リングネットワーク９０２及び９０３の動作を一時的に停止することができ、その後、停止中のリングネットワーク９０２及び９０３上でテストパルスを送信することにより、これらのリングネットワーク９０２及び９０３のクロック信号ＣＫＢ及びＣＫＣに関連するクロック遅延ＤＲＥＦを決定することができる。それと同時に、別のリングネットワーク９０１上でデータの送信を継続することができる。有利なことには、別の並列リングネットワークでクロック遅延（ＤＲＥＦ）を計算している間、少なくとも１つのリングネットワークは動作を継続することができる。
【００５１】
カスケードクロックリングネットワーク３００のクロック／データ遅延ＤＲＥＦが上述した機構のいずれかを用いて決定された後、制御回路３５０は、読み出しパルスアライメントモードを終了する（図５のステップ５１３）。読み出しパルスアライメントモードの終了後、制御回路３５０は、カスケードクロックリングネットワーク３００に関連するクロック／データ遅延（ＤＲＥＦ）を定期的に測定して、この遅延が時間の経過とともに、（例えば、動作電圧及び／または温度の変動に起因して）著しく変化するか否かを判定する。カスケードクロックリングネットワークのクロック／データ経路に関連する遅延が時間の経過とともに著しく変化する場合、読み出しパルスアライメントモードを再び開始し、それによって、以下でより詳細に説明するように、遅延の変化を補償するために、再同期ＦＩＦＯ回路３０１の動作を再調整する。
【００５２】
図１０は、通常動作中の温度及び／または電圧の変化によって引き起こされる、カスケードクロックリングネットワーク３００のクロック／データ経路に関連するクロック／データ遅延（ＤＲＥＦ）の変化を補償する方法１０００のフロー図である。ステップ１００１では、リング伝搬遅延の補償処理を開始する（例えば、図５のステップ５１３から）。まず、制御回路３５０は、カウントダウンカウンタ３５１（図３）をカウント値Ｍに設定する（ステップ１００２）。次に、（例えば、ソースクロック信号Ｃ０に応答して）カウントダウンカウンタ３５１をデクリメントする（ステップ１００３）。カウントダウンカウンタ３５１が空でない場合（ステップ１００４：ＮＯ）、処理はステップ１００３に戻り、カウントダウンカウンタ３５１を再びデクリメントする。カウントダウンカウンタ３５１が空である場合（例えば、ソースクロック信号Ｃ０のＭサイクル後）（ステップ１００４：ＹＥＳ）、カスケードクロックリングネットワーク３００のクロック／データ経路に関連する遅延は、上述した方法のいずれかを用いて再測定し、それによって、再テストされた遅延値ＤＴＥＳＴＴを提供する（ステップ１００５）。Ｍの値は、再テスト間の期間を定義するために選択される。電圧スケーリングに起因する温度変化及び電圧変動は非常に遅いイベントであるため、再テスト間の期間は比較的長くなる（例えば、Ｍ＝２００、０００は、２ＧＨｚのソースクロック周波数に対して約０．１ｍｓの再テスト期間を提供する）。
【００５３】
Ｍの値は、リングネットワーク３００の１周のクロック／データ遅延のクロックサイクル数と同じくらいに小さくてもよい。この場合、クロック／データ遅延ＤＲＥＦは、ほぼ絶えず監視／再テストされる。あるいは、Ｍの値は、シリコンの温度がリングネットワーク３００の遅延を変化させるのに十分なほど変化するのに必要なクロックサイクルの数と同じくらいに小さくてもよい。Ｍの値は、以下でより詳細に説明するように、遅延値ＤＲＥＦが所定の閾値以上に変化するのに必要な最小クロックサイクル数よりも大きくすべきではない。順列リングネットワーク９００を使用する場合（図９）、Ｍの値は、カスケードクロックリングネットワーク９０１〜９０３の各々を連続的に監視／再テストしてもシステムが故障しないような値に選択される（すなわち、監視／再テストされるのを待っている間に、クロック／データ遅延が、カスケードクロックリングネットワーク９０１〜９０３のいずれかが故障することを可能にするくらいに速く変化しないような値に選択される）。同等のＭサイクル遅延を生成する別の方法を用いてもよいことに留意されたい。
【００５４】
Ｍの値は、リングネットワーク３００で消費される電力に影響を与え、Ｍの値が大きいほど消費電力が低くなる。
【００５５】
本明細書に提供される実施例では、単一のクロック遅延（ＤＴＥＳＴ）測定について説明したが、（特に、クロックジッタが測定の分解能よりも大きい場合には）複数のクロック遅延（ＤＴＥＳＴ）測定を行い、その複数の測定結果の平均値を、クロック遅延（ＤＴＥＳＴ）値として使用してもよいことを理解されたい。
【００５６】
上述のようにして決定されたクロック／データ遅延ＤＲＥＦを、再測定されたクロック／データ遅延ＤＴＥＳＴと比較する（ステップ１００６）。遅延ＤＲＥＦとＤＴＥＳＴとの差の大きさ（すなわち、｜ＤＴＥＳＴ−ＤＲＥＦ｜）が、所定の閾値より大きい場合（ステップ１００６：ＹＥＳ）、読み出しパルスアライメントモードを再び開始する（ステップ１００７）。すなわち、処理は、方法５００（図５）のステップ５０１に戻る。そうでない場合（ステップ１００６：ＮＯ）、処理はステップ１００２に戻り、カウントダウンカウンタをカウント値Ｍに設定し、それ以降の処理を繰り返す。
【００５７】
ソースクロック信号Ｃ０が高周波数を有し、かつデータ／クロックバスパスの長さがミリメートルのオーダーである場合、カスケードクロックリングネットワーク３００のクロック／データ経路に関連する遅延の変動は、数クロックサイクルよりも長くなることに留意されたい。この遅延変動により、読み出し動作は、再同期ＦＩＦＯ３０１によって定義される有効データウィンドウのエッジ付近で実行されることになる。制御回路３５０は、現在のクロック／データ経路遅延（ＤＴＥＳＴ）を、読み出しパルスアライメントモード（ＤＲＥＦ）の最新の実行中に測定されたクロック／データ経路遅延に対して監視及び比較する。これにより、制御回路３５０は、再同期ＦＩＦＯ３０１の読み出しパルスＥ１＿ＲＤ〜Ｅ６＿ＲＤのアクティブ化が有効データウィンドウ期間（例えば、有効データウィンドウ期間Ｗ１）のエッジに近づいている時点（例えば、図６のサンプルポイントＳ１）を判断し、その後、（図５の読み出しパルスアライメント方法５００を再び開始することにより）読み出しパルスが有効データウィンドウの中央付近でアクティブ化されるようにタイミングを調整することができる。図６の例では、有効データウィンドウＷ１は、ソースクロック信号Ｃ０の６サイクル分の幅を有し、読み出しパルスＳ１は、最初は、この有効データウィンドウＷ１の中央付近に位置している。一実施形態では、クロック／データ経路遅延ＤＴＥＳＴと、以前に決定されたクロック／データ経路遅延ＤＲＥＦとの差が、（クロックのジッタと共に）ソースクロック信号Ｃ０の少なくとも２サイクルの閾値に達した場合、サンプルポイントＳ１は、有効データウィンドウＷ１のエッジ付近にシフトされる。この場合、現在のクロック／データ経路遅延ＤＴＥＳＴを考慮して、読み出しパルスアライメントモード５００を再び開始することにより、サンプルポイントＳ１を有効データウィンドウＷ１の中央付近に再センタリングする。
【００５８】
上述したように、ＦＩＦＯメモリ４００のエントリ数Ｎは、ＦＩＦＯメモリ４００に書き込まれたデータ値が有効であり続ける間のデータウィンドウの幅を確立する。エントリ数Ｎ（すなわち、データウィンドウの幅）は、通常動作状態中に所定期間にわたって発生すると予想されるクロック電圧及び温度の変動に起因するクロック信号ＣＥＮＤ及びＣ０間の予測される最大の位相ドリフトと、２つのクロック信号ＣＥＮＤ及びＣ０の予測される相対ジッタ（すなわち、ソースクロック信号Ｃ０のＭサイクルにわたる｜ＤＴＥＳＴ−ＤＲＥＦ｜の最大期待値）とによって決定される。エントリ数Ｎは、ＦＩＦＯ４００の各読み出し動作の読み出しサンプルポイントが遅延テスト期間（Ｍサイクル）にわたって有効データウィンドウＷ１内に収まることを可能にする幅を有する有効データウィンドウＷ１を提供できるほど大きい。遅延補償方法１０００を用いることにより、広範囲の動作条件をカバーするためにＦＩＦＯ４００に必要とされるエントリ数をより少なくすることができる。ＦＩＦＯのエントリ数をより少なくすることにより、使用するチップレイアウト面積がより少なくなり、待ち時間がより短くなるという利点がある。
【００５９】
一般に、必要とされるエントリ数Ｎは、ソースクロック周波数、ソースクロック信号Ｃ０とエンドクロック信号ＣＥＮＤとの間のジッタ、及び、リングネットワーク３００のクロック／データ経路に沿って存在する可能性のある遅延の変動（例えば、温度、ソースクロック周波数、及びシステム供給電圧などの環境条件の変化に起因する遅延変動）に関係する。一実施形態では、各処理ノード２０１〜２０８は、クロック／データ経路遅延における可能性のある変動が比較的小さくなるように（全ての処理ノード２０１〜２０８は同様の環境条件下にあるため）、かつ、ＦＩＦＯメモリ４００のエントリ数が比較的小さくなるように（例えば、Ｎが８以下になるように）、同一の集積回路チップ上に配置される。別の実施形態では、処理ノード２０１〜２０８のうちの１以上を、別の集積回路チップ（及び／または別の集積回路基板）上に配置して、クロック／データ遅延パスにおけるジッタ及び可能性のある変動が比較的大きくなるようにしてもよい（別の処理ノードは、別の環境条件下に曝され得るため）。このような実施形態では、ＦＩＦＯメモリ４００は、比較的多数のエントリを必要とする。
【００６０】
再同期ＦＩＦＯメモリ３０１の使用によって提供される１つの利点は、限られた待ち時間ペナルティを提供するものの、周波数−電圧スケーリングシステムにおいてシームレスでロバストな動作を可能にすることである。図１１は、本発明の一実施形態による、カスケードクロックリングネットワーク３００（図３）と組み合わせて使用される周波数−電圧スケーリングシステム１１００のブロック図である。周波数−電圧スケーリングシステム１１００は、モード制御回路１１０１と、供給電圧制御回路１１０２と、クロック周波数制御回路１１０３とを含む。以下でより詳細に説明するように、モード制御回路１１０１は、カスケードクロックリングネットワーク３００内の様々な動作パラメータを制御することによって、カスケードクロックリングネットワーク３００の性能を調整することができる。より具体的には、モード制御回路１１０１は、電圧制御信号を供給電圧制御回路１１０２に送信し、それによって、供給電圧制御回路１１０２は、カスケードクロックリングネットワーク３００の上述の回路要素を動作させるために使用される供給電圧ＶＣＣを調整する。一実施形態では、電源電圧制御回路１１０２は、供給電圧ＶＣＣを、約０．５ボルトの低い値から約１．２ボルトの高い値まで調整することができる（カスケードクロックリングネットワーク３００が２０ｎｍ未満のアドバンスプロセスノードを使用して作製されると仮定する）。
【００６１】
モード制御回路１１０１はまた、周波数制御信号をクロック周波数制御回路１１０３に送信する。これに応答して、クロック周波数制御回路１１０３は、周波数調整信号ＦＡＤＪをクロックソース１５０に送信し、それによって、クロックソース１５０は、ソースクロック信号Ｃ０の周波数を調整する。一実施形態では、ソースクロック信号Ｃ０の周波数は、１００ＭＨｚ程度の低い周波数から数ＧＨｚ程度の高い周波数まで調整することができる。別の実施形態では、クロック周波数制御回路１１０３は、所望の周波数を有するソースクロック信号Ｃ０を生成するように（そして、このソースクロック信号Ｃ０をクロックソース１５０に送信して、クロックソース１５０から提供されるように）改変することができる。
【００６２】
周波数−電圧スケーリングの目的は、所与の作業負荷性能要求に対する電力要求を最小限に抑えることである。例えば、アイドル、スタンバイ、スリープ、ディープスリープ、公称、高性能、最大性能などの様々な動作モードが、様々な周波数及び電圧を使用して実施され得る。
【００６３】
一実施形態によれば、モード制御回路１１０１はまた、再同期ＦＩＦＯ回路３０１に提供されるＪ値調整メッセージ（Ｊ＿ＡＤＪＵＳＴ）を提供する。これに応答して、再同期ＦＩＦＯ回路３０１は、Ｊ値レジスタ４２５に格納されているＪ値を変更する。一実施形態では、Ｊ値は、周波数を関数としてＦＩＦＯ回路３０１の待ち時間を最小限に抑えるために、ソースクロック信号Ｃ０の周波数の関数として調整される。
【００６４】
別の実施形態によれば、モード制御回路１１０１はまた、制御回路３５０に提供されるＭ値調整メッセージ（Ｍ＿ＡＤＪＵＳＴ）を提供する。これに応答して、制御回路３５０は、カウントダウンカウンタ３５１に格納されているカウント値Ｍを調整する。一実施形態では、Ｍ値は、ソースクロック信号Ｃ０の周波数と電源電圧ＶＣＣの関数として調整され、それによって、有利なことに、クロック／データ経路遅延の変化をテストするための様々な期間を設定することを可能にする。
【００６５】
動作電圧及びソースクロック周波数が性能要件に適合するように変更されると、上述した読み出しパルスアライメントモード（図５）を再び開始することにより、最後の処理ノード２０８から最初の処理ノード２０１へのデータの転送を再同期させ、読み出しパルスを有効データウィンドウ内に再センタリングすることができる。再同期ＦＩＦＯ回路３０１が存在しない場合、このような広範囲の動作電圧及びソースクロック周波数にわたるカスケードクロックリングネットワークの再同期化を可能にするためには、（より多くのＦＩＦＯエントリを必要とする）はるかに複雑なシステムが必要となるであろう。
【００６６】
電圧／周波数調整のレートによって引き起こされる遅延デルタの変化率が、カスケードクロックリングネットワーク３００に関連するサンプリング及び応答率よりも小さい限り、モード制御回路１１０１は、カスケードリングネットワークを故障させることなく動作させることができる。電圧または周波数が急速に変化し、リング遅延変化により、読み出しクロック遷移及び書き込みデータ遷移がフリップフロップのセットアップ時間及びホールド時間が満たされない未知の領域にアラインされた場合、ＤＴＥＳＴ測定を行って閾値を超えたか否かを判定する前に、データバス上でデータ破損が生じるであろう。加えて、閾値を超えて検出されたが、電圧及び／または周波数が急速に変化し、読み出しパルスが再アラインされる前に、読み出しクロック遷移及び書き込みデータ遷移クロックが未知の領域に押し出された場合も、データバス上でデータ破損が生じるであろう。
【００６７】
図１２は、本発明の別の実施形態による、カスケードクロックリングネットワーク１２００のブロック図である。図１２のカスケードクロックリングネットワーク１２００は、図３のカスケードクロックリングネットワーク３００と同様であるので、図３及び図１２中の同様の要素には、同様の参照番号を付している。図３のカスケードクロックリングネットワーク３００では、再同期ＦＩＦＯ回路３０１及び最初の処理ノード２０１がソースクロック信号Ｃ０を著しい遅延なしに受信するように（すなわち、再同期ＦＩＦＯ回路３０１及び最初の処理ノード２０１が「同一の」ソースクロック信号Ｃ０を受信するように）、再同期ＦＩＦＯ回路３０１は最初の処理ノード２０１に極めて近接して配置されている。図１２のカスケードクロックリングネットワーク１２００では、再同期ＦＩＦＯ回路１２０１は、最初の処理ノード２０１に近接して配置する必要はない。図１２の例では、再同期ＦＩＦＯ回路１２０１から最初の処理ノード２０１への信号遅延はＴＣＯ−ＴＳＵ−ＴＣ２Ｏよりも大きくてもよい。ここで、ＴＣＯはソースクロック信号Ｃ０の期間であり、ＴＳＵはフリップフロップのセットアップ時間であり、ＴＣ２Ｏはフリップフロップのクロック・トゥ・アウト時間である。
【００６８】
図１３は、本発明の一実施形態による、図１２の再同期ＦＩＦＯ回路１２０１のブロック図である。図４の再同期ＦＩＦＯ回路３０１は、図１３の再同期ＦＩＦＯ回路１２０１と同様であるので、図４及び図１３の同様の要素には、同様の参照番号を付している。再同期ＦＩＦＯ回路１２０１は、上述した再同期ＦＩＦＯ回路３０１に加えて、（上述のクロックドライバ回路２１１〜２１８と同様の）クロックドライバ回路２１９と、（上述のクロックドライバ回路２２１〜２２８と同様の）クロックドライバ回路２２９とを含む。クロックドライバ回路２１９及び２２９の特性は、クロックドライバ回路２２９により提供される出力クロック信号Ｃ０´が、再同期ＦＩＦＯ１２０１から読み出されたデータ値Ｄ０´に対して所定の位相関係を有するように選択される。結果として、最初の処理ノード２０１は、別の処理ノード２０２〜２０８と同様に、（データバス１４９上で）データ値Ｄ０´と、（クロックバス１７９上で）対応するクロック信号Ｃ０´とを受信する。したがって、再同期ＦＩＦＯ回路１２００から最初の処理ノード２０１までの距離に起因してＤ０´及びＣ０´信号に導入される遅延はほぼ同じであり、それによって、処理ノード２０１におけるＤ０´及びＣ０´信号間の所望の位相関係が維持される。本発明をいくつかの実施形態に関連して説明してきたが、本発明は開示された実施形態に限定されるものではなく、当業者には明らかな様々な変更が可能であることを理解されたい。したがって、本発明は、特許請求の範囲によってのみ限定される。
【図１】
2021528881.tif 000003
【図２】
2021528881.tif 000004
【図３】
2021528881.tif 000005
【図４】
2021528881.tif 000006
【図５】
2021528881.tif 000007
【図６】
2021528881.tif 000008
【図７】
2021528881.tif 000009
【図８】
2021528881.tif 000010
【図９】
2021528881.tif 000011
【図１０】
2021528881.tif 000012
【図１１】
2021528881.tif 000013
【図１２】
2021528881.tif 000014
【図１３】
2021528881.tif 000015
【国際調査報告】
2021528881.tif 000016
2021528881.tif 000017