IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ デジラム コーポレーションの特許一覧

特許7187577カスケードクロックリングバスを完了させるためのシステム及び方法
<>
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図1
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図2
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図3
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図4
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図5
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図6
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図7
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図8
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図9
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図10
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図11
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図12
  • 特許-カスケードクロックリングバスを完了させるためのシステム及び方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-02
(45)【発行日】2022-12-12
(54)【発明の名称】カスケードクロックリングバスを完了させるためのシステム及び方法
(51)【国際特許分類】
   H04L 7/00 20060101AFI20221205BHJP
【FI】
H04L7/00 500
【請求項の数】 30
(21)【出願番号】P 2020560810
(86)(22)【出願日】2019-03-29
(65)【公表番号】
(43)【公表日】2021-10-21
(86)【国際出願番号】 US2019024799
(87)【国際公開番号】W WO2019212664
(87)【国際公開日】2019-11-07
【審査請求日】2021-04-16
(31)【優先権主張番号】15/967,990
(32)【優先日】2018-05-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519182279
【氏名又は名称】デジラム コーポレーション
(74)【代理人】
【識別番号】110001379
【氏名又は名称】特許業務法人 大島特許事務所
(72)【発明者】
【氏名】リー、ウィンストン
【審査官】谷岡 佳彦
(56)【参考文献】
【文献】特表昭56-501030(JP,A)
【文献】特開平02-226930(JP,A)
【文献】特開平08-070289(JP,A)
【文献】特開平04-207432(JP,A)
【文献】特開2011-035826(JP,A)
【文献】特開2002-141922(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
(57)【特許請求の範囲】
【請求項1】
カスケードクロックリングネットワークであって、
ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するクロック信号経路であって、前記最後の処理ノードが、伝送された前記ソースクロック信号をエンドクロック信号として提供する、該クロック信号経路と、
伝送された前記ソースクロック信号に応答して、データ値を、前記複数の処理ノードを介して、前記最初の処理ノードから前記最後の処理ノードへ伝送するデータ経路であって、前記最後の処理ノードが、伝送された前記データ値をエンドデータ値として提供する、該データ経路と、
前記最後の処理ノードから前記エンドデータ値と前記エンドクロック信号を受信するように接続された再同期FIFO回路であって、前記再同期FIFO回路は、受信した前記エンドデータ値を記憶するためのFIFOメモリと、有効ビットメモリエントリと、書き込み制御回路と、読み出し制御回路と、直列接続されたフリップフロップを含む同期回路とを含む、該再同期FIFO回路と
を備え
前記書き込み制御回路は、前記エンドクロック信号と同期して書き込みイネーブル信号(WE)をアサートし、前記書き込みイネーブル信号により、最初に受信した有効なエンドデータ値である第1の有効なエンドデータ値(D1)が前記FIFOメモリの第1のエントリ(E1)に書き込まれ、第1の有効ビット値(V)が前記有効ビットメモリエントリに書き込まれ、
前記同期回路は、前記ソースクロック信号に応答して、前記直列接続されたフリップフロップを介して、前記有効ビットメモリエントリから前記読み出し制御回路に前記第1の有効ビット値を転送し、
前記読み出し制御回路は、前記第1の有効ビット値の受信に応答して、前記FIFOメモリに対する読み出し動作を可能にし、かつ前記読み出し制御回路は、前記ソースクロック信号に応答して、前記FIFOメモリから前記エンドデータ値を前記最初の処理ノードに読み出させることを特徴とするカスケードクロックリングネットワーク。
【請求項2】
請求項1に記載のカスケードクロックリングネットワークであって、
前記FIFOメモリは、前記ソースクロック信号の複数のサイクルに等しい継続時間を有する有効データウィンドウ期間にわたって、前記各エンドデータ値を格納することを特徴とするカスケードクロックリングネットワーク。
【請求項3】
請求項2に記載のカスケードクロックリングネットワークであって、
前記FIFOメモリは、複数のFIFOエントリを含み、
前記FIFOエントリの数によって、前記有効データウィンドウ期間の前記継続時間が定義されることを特徴とするカスケードクロックリングネットワーク。
【請求項4】
請求項3に記載のカスケードクロックリングネットワークであって、
前記有効データウィンドウ期間は、前記ソースクロック信号の期間に前記FIFOエントリの数を乗算した期間に相当することを特徴とするカスケードクロックリングネットワーク。
【請求項5】
請求項1に記載のカスケードクロックリングネットワークであって、
前記FIFOメモリは、8以下のFIFOエントリを含むことを特徴とするカスケードクロックリングネットワーク。
【請求項6】
請求項1に記載のカスケードクロックリングネットワークであって、
前記書き込み制御回路は、前記第1の有効なエンドデータ値の後に受信された有効なエンドデータ値のそれぞれを、前記エンドクロック信号の連続するサイクル中に前記FIFOメモリのFIFOエントリに順次書き込ませることを特徴とするカスケードクロックリングネットワーク。
【請求項7】
請求項に記載のカスケードクロックリングネットワークであって、
前記直列接続されたフリップフロップは、
前記有効ビットメモリエントリから前記第1の有効ビットを受け取るように接続された入力を有する第1のフリップフロップと、
前記第1のフリップフロップと直列に接続された第2のフリップフロップであって、前記ソースクロック信号に応答して、前記第1の有効ビットを前記第1のフリップフロップ及び前記第2のフリップフロップを介して伝送する、該第2のフリップフロップとを含むことを特徴とするカスケードクロックリングネットワーク。
【請求項8】
請求項に記載のカスケードクロックリングネットワークであって、
前記読み出し制御回路は、前記第1の有効ビットを受信した後に、予め定められた数の1以上のサイクルを待機してから前記読み出し動作を開始することを特徴とするカスケードクロックリングネットワーク。
【請求項9】
請求項に記載のカスケードクロックリングネットワークであって、
前記予め定められた数の1以上のサイクルは、前記読み出し動作が、前記エンドデータ値を前記FIFOメモリに格納する有効データウィンドウ期間の中央付近で開始されることを確実にするように選択されることを特徴とするカスケードクロックリングネットワーク。
【請求項10】
請求項1に記載のカスケードクロックリングネットワークであって、
前記FIFOメモリは、有効データウィンドウ期間にわたって、前記各エンドデータ値を格納し、
前記カスケードクロックリングネットワークは、前記FIFOメモリに対する読み出し動作を前記各有効データウィンドウ期間の中央付近で開始するための手段をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項11】
請求項1に記載のカスケードクロックリングネットワークであって、
前記クロック信号経路で伝送される信号の遅延を測定するための回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項12】
請求項11に記載のカスケードクロックリングネットワークであって、
前記クロック信号経路に関連する遅延を測定するための前記回路は、前記クロック信号経路と同一の設計を有する第2のクロック信号経路を含むことを特徴とするカスケードクロックリングネットワーク。
【請求項13】
請求項1に記載のカスケードクロックリングネットワークであって、
前記データ経路で伝送される信号の遅延を測定するための回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項14】
請求項13に記載のカスケードクロックリングネットワークであって、
前記データ経路に関連する遅延を測定するための前記回路は、前記データ経路と同一の設計を有する第2のデータ経路を含むことを特徴とするカスケードクロックリングネットワーク。
【請求項15】
請求項1に記載のカスケードクロックリングネットワークであって、
前記クロック信号経路または前記データ経路に関連する遅延を定期的に測定し、定期的に測定された前記遅延が予め定められた閾値を超えて変化したか否かを判定するための遅延制御回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項16】
請求項15に記載のカスケードクロックリングネットワークであって、
前記遅延制御回路は、前記遅延が前記閾値を超えて変化したと判定された場合には、前記FIFOメモリをリセットするように構成されていることを特徴とするカスケードクロックリングネットワーク。
【請求項17】
請求項15に記載のカスケードクロックリングネットワークであって、
前記遅延制御回路は、前記遅延を定期的に測定する期間を選択するための調整可能なカウンタを含むことを特徴とするカスケードクロックリングネットワーク。
【請求項18】
請求項1に記載のカスケードクロックリングネットワークであって、
前記ソースクロック信号の周波数を調整するクロック周波数制御回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項19】
請求項18に記載のカスケードクロックリングネットワークであって、
前記処理ノードを動作させるために使用される電源電圧を調整する電源電圧制御回路をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項20】
請求項18に記載のカスケードクロックリングネットワークであって、
前記FIFOメモリからの読み出し動作を、前記ソースクロック信号のサイクル数だけ遅延させる読み出し制御回路と、
前記ソースクロック信号の前記サイクル数を、前記ソースクロック信号の周波数に基づいて調整するモード制御回路と、をさらに備えることを特徴とするカスケードクロックリングネットワーク。
【請求項21】
カスケードクロックリングネットワークを動作させる方法であって、
クロック信号経路上で、ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するステップであって、前記最後の処理ノードが、伝送された前記ソースクロック信号をエンドクロック信号として提供する、該ステップと、
伝送された前記ソースクロック信号に応答して、データ経路上で、データ値を、前記複数の処理ノードを介して前記最初の処理ノードから前記最後の処理ノードへ伝送するステップであって、前記最後の処理ノードが、伝送された前記データ値をエンドデータ値として提供する、該ステップと、
再同期FIFO回路で、前記最後の処理ノードから前記エンドデータ値と前記エンドクロック信号を受信するステップであって、前記再同期FIFO回路は、受信した前記エンドデータ値を記憶するためのFIFOメモリと、有効ビットメモリエントリと、書き込み制御回路と、読み出し制御回路と、直列接続されたフリップフロップを含む同期回路とを含む、該ステップと
前記書き込み制御回路を用いて、前記エンドクロック信号と同期して書き込みイネーブル信号(WE)をアサートするステップであって、前記書き込みイネーブル信号により、最初に受信した有効なエンドデータ値である第1の有効なエンドデータ値(D1)が前記FIFOメモリの第1のエントリ(E1)に書き込まれ、第1の有効ビット値(V)が前記有効ビットメモリエントリに書き込まれる、該ステップと、
前記ソースクロック信号に応答して、前記直列接続されたフリップフロップを介して、前記有効ビットメモリエントリから前記読み出し制御回路に第1の有効ビット値を転送するステップと、
前記読み出し制御回路が、前記第1の有効ビット値の受信に応答して、前記FIFOメモリに対する読み出し動作を実行できるようにするステップであって、前記読み出し制御回路は、前記ソースクロック信号に応答して、前記FIFOメモリから前記エンドデータ値を前記最初の処理ノードに読み出させる、該ステップと、
を含むことを特徴とする方法。
【請求項22】
請求項21に記載の方法であって、
前記ソースクロック信号の複数のサイクルに等しい継続時間を有する有効データウィンドウ期間にわたって、前記各エンドデータ値を格納するステップをさらに含むことを特徴とする方法。
【請求項23】
請求項22に記載の方法であって、
前記エンドデータ値を前記FIFOメモリにラップアラウンド方式で書き込むステップをさらに含み、
前記FIFOメモリの数によって、前記有効データウィンドウ期間の前記継続時間が定義されることを特徴とする方法。
【請求項24】
請求項21に記載の方法であって、
前記書き込み制御回路を用いて、前記第1の有効なエンドデータ値の後に受信された有効なエンドデータ値のそれぞれを、前記エンドクロック信号の連続するサイクル中に前記FIFOメモリのFIFOエントリに順次書き込ませるステップをさらに含むことを特徴とする方法。
【請求項25】
請求項21に記載の方法であって、
前記第1の有効ビット値の受信時に、前記読み出し制御回路が前記FIFOメモリに対する読み出し動作を実行できるようにすることを、前記ソースクロック信号の1以上のサイクルだけ遅延させるステップをさらに含むことを特徴とする方法。
【請求項26】
請求項25に記載の方法であって、
前記読み出し動作が、前記エンドデータ値を前記FIFOメモリに格納する有効データウィンドウ期間の中央付近で開始されることを確実にするように、前記予め定められた数の1以上のサイクルを選択するステップをさらに含むことを特徴とする方法。
【請求項27】
請求項24に記載の方法であって、
前記クロック信号経路または前記データ経路に関連する遅延を定期的に測定するステップと、
前記遅延が予め定められた閾値を超えて変化するか否かを判定するステップと、
前記遅延が前記閾値を超えて変化したと判定された場合には、前記FIFOメモリ内の前記エンドデータ値の書き込み及び読み出しを再同期させるステップと、をさらに含むことを特徴とする方法。
【請求項28】
請求項27に記載の方法であって、
前記遅延を定期的に測定する期間を変更するステップをさらに含むことを特徴とする方法。
【請求項29】
請求項24に記載の方法であって、
前記カスケードクロックリングネットワークの動作電圧及び/または前記ソースクロック信号の周波数を変更するステップと、
その後に、前記FIFOメモリ内の前記エンドデータ値の書き込みと読み出しとを再同期化させるステップと、をさらに含むことを特徴とする方法。
【請求項30】
請求項21に記載の方法であって、
前記有効データウィンドウ期間の間、前記各エンドデータ値を前記FIFOメモリに格納するステップと、
前記各有効データウィンドウ期間の中央付近で前記FIFOメモリへの読み出し動作を開始するステップと、をさらに含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願)
本出願は、2018年5月1日出願の「カスケードクロックリングバスを完了させるためのシステム及び方法」と題する米国特許出願第15/967、990号に基づく優先権を主張するものである。上記出願の開示内容は、参照により本明細書に援用される。
【0002】
(技術分野)
本発明は、カスケードクロックリングネットワークで実行されるクロック動作に関する。より詳細には、本発明は、カスケードクロックリングネットワーク全体のラウンドトリップトラバースを完了したクロック信号の再同期化に関する。
【背景技術】
【0003】
図1は、複数の処理ノード101~108を備えた従来の同期リングネットワーク100のブロック図である。処理ノード101~108はそれぞれ、ノード処理ユニット111~118と、マルチプレクサ121~128と、フリップフロップ131~138とを含む。処理ノード101~108はリング状に接続されており、フリップフロップ131、132、133、134、135、136、137、138のデータ出力D1、D2、D3、D4、D5、D6、D7、D8はそれぞれ、データバス141、142、143、144、145、146、147、148によって、マルチプレクサ122、123、124、125、126、127、128、121の入力に与えられる。フリップフロップ131~138の入力はそれぞれ、マルチプレクサ121~128の出力を受信するように接続されている。マルチプレクサ121~128はそれぞれ、ノード処理ユニット111~118からのデータ入力も受信することに留意されたい。フリップフロップ131~138の出力はそれぞれ、ノード処理ユニット111~118にも提供される。
【0004】
フリップフロップ131~138は、クロックソース150及びクロックドライバ回路151~165を含むバランスクロックツリーを用いてクロックされる。バランスクロックツリーは、クロックソース150から提供されるクロック信号C0を、図示のように様々なクロックドライバ151~165を介して伝送することによって、クロック信号C1~C8をそれぞれフリップフロップ131~138に提供するように構成される。クロック信号C1~C8は、同相で(すなわち、同時に)遷移する。バランスクロックツリーは、システムにおけるセットアップ時間及びホールド時間のスキューを最小限に抑えることによって、同期リングネットワーク100の最大動作周波数を生成する。このバランスクロックツリーリングネットワーク100では、リング上に、「スタート」クロック信号及び「エンド」クロック信号という概念は存在しない。
【0005】
図2は、複数の処理ノード201~208を備えた従来のカスケードクロックリングネットワーク200のブロック図である。処理ノード201~208はそれぞれ、図1の同期リングネットワーク100に関連して上述したノード処理ユニット111~118と、マルチプレクサ121~128と、フリップフロップ131~138とを含む。加えて、処理ノード201~208はそれぞれ、クロックドライバ回路211~218と、クロックドライバ回路221~228とを含む。
【0006】
処理ノード201~208はリング状に接続されており、フリップフロップ131、132、133、134、135、136、137、138のデータ出力D1´、D2´、D3´、D4´、D5´、D6´、D7´、DENDはそれぞれ、データバス141、142、143、144、145、146、147、148によって、マルチプレクサ122、123、124、125、126、127、128、121の入力に与えられる。
【0007】
クロックソース150は、入力クロック信号C0をクロックドライバ回路211及び221に提供する。クロックドライバ回路211は、クロック信号CFF1をクロックフリップフロップ131に提供し、クロックドライバ回路221は、カスケードクロック信号C1´を下流の処理ノード201のクロックドライバ回路212及び222に提供する。カスケードクロック信号C1´は、クロックドライバ回路222~228を介して、それぞれカスケードクロック信号C2´、C3´、C4´、C5´、C6´、C7´、CENDとして伝送される。クロックドライバ回路212~218はそれぞれ、受信したカスケードクロック信号C1´~C7´に応答して、クロック信号CFF2~CFF8をフリップフロップ132~138に提供する。上述の形態では、処理ノード201~208は、データ信号及びクロック信号を或る処理ノードからその次の処理ノードに渡すデイジーチェーンとして構成されている。リングは、最後の処理ノード208から出力されたデータDENDが最初の処理ノード201に与えられたときに完了する。隣接する処理ノード間の距離が長い場合、隣接する処理ノード間で送信されるデータ信号及びクロック信号は、データ/クロックの位相関係を保存し、高周波数動作を可能にするために、データ経路及びクロック信号経路の両方に沿って配置された同数のバッファステージによってバッファされ得る。
【0008】
処理ノードが大きなダイ面積に及ぶ設計では、大きなダイ面積にわたって同期リングネットワーク200のクロックツリーのバランスを取ることは非常に困難であるため、カスケードクロックリングネットワーク100を使用することが有利であり得る。すなわち、データ及びクロックのスキューはクロックツリーによって管理することができないので、同期リングネットワーク100の動作周波数が制限される。さらに、大きなクロックツリーでは、所要電力が過度に高くなる。カスケードクロックリングシステム200では、データ及びクロックのスキューは、はるかに局在化され、管理可能である。大きなクロックツリーを必要としないカスケードクロックリングシステム200では、動作周波数ははるかに高くなり、電力消費はより低くなるはずである。
【0009】
しかしながら、カスケードクロックリングシステム200では、最後の処理ノード208から最初の処理ノード201にデータが転送されるときに問題が存在する。最初の処理ノード201は、その入力クロック信号C0をその上流の処理ノード208からではなくクロックソース150から受信するので、他の処理ノード202~208とは異なる。ソースクロック信号C0は、上述のように、ノードからノードへカスケード(転送)される。最後の処理ノード208から最初の処理ノード201に送られるデータDENDは、最後の処理ノード208のクロックドメインに由来するが、最初の処理ノード201のフリップフロップ131にデータをラッチするために使用されるクロック信号CFF1は、クロックソース150に由来する。ノードクロック信号C1´~C7´は最初の処理ノード201からカスケードされるので、最初のノードクロック信号C0と最後のノードクロック信号CENDとの位相差は不明である。この位相差は、周波数、温度、電圧、電源ノイズ、クロックジッタ、及び他の環境要因によって変化する。結果として、最初の処理ノード201におけるフリップフロップ131のセットアップ時間及びホールド時間は不明となる。他の全ての処理ノード202~208については、各処理ノードにおけるデータフリップフロップのためのクロックは、その上流の処理ノードから受け取るだけであり、既知の固定された位相関係を有するので、上記のようなコンフリクトは生じない。なお、ソースクロック信号C0と、最後の処理ノード208からのクロック信号CENDとが同位相であれば、問題はない。しかしながら、当然、そうではない。
【0010】
1つの可能な解決策は、生成された周波数が、最後の処理ノード208から提供されるクロック信号CENDとソースクロック信号C0との間の位相遅延をほとんどまたは全く生成しないという制約の下で、位相ロックループ(PLL)を使用してソースクロック信号C0を生成することである。一般に、ソースクロック信号C0の許容周波数は、クロックループの基本周波数の整数倍である。この解決策の欠点としては、設計が困難であること、設計が大きなレイアウト面積を必要とし、それは多くのリングバスを有するチップには適していないこと、ループ応答が電圧及び周波数のスケーリングを実施するのに適していないこと、及び、この解決策が粗い動作周波数分解能しか許容しないこと、が挙げられる。さらに、PLLを使用するためには、高密度のデジタル回路を含む領域にアナログ回路を実装する必要がある。デジタル回路は、敏感なアナログ回路に大きなノイズを注入し、ジッタを増加させる。これを最小限に抑えるために、アナログ回路とデジタル回路とには、別々の電圧供給源が設けられる。別々の電圧供給バスを追加すると、望ましくないことに、必要なチップレイアウト面積が増加し、配線が困難になるだけでなく、一方の電圧供給バスのロバスト性を損なう恐れがある。加えて、デジタル回路とアナログ回路とを、比較的大きな物理的距離を隔てて互いに離間させる必要があるので、より大きなレイアウト面積が必要となる。
【0011】
別の可能な解決策は、ループのパス内に遅延線を有する遅延ロックループ(DLL)を使用することである。この解決策では、最初の処理ノード201の入力が最後の処理ノード208の出力を受信したときに、位相検出器により、ソースクロック信号C0及びクロック信号CENDの位相がサンプリングする。可変遅延線は、ソースクロック信号C0とクロック信号CENDとの間の位相遅延がゼロになるように調節される。この解決策の欠点としては、設計が複雑であること、帯域内ジッタに対して敏感であること、電源ノイズに起因して追加ジッタが発生すること、及び、周波数及び電圧のスケーリングが困難であること(周波数範囲は、遅延線領域と追加される余分な遅延とによって制限されるため)が挙げられる。
【0012】
このため、カスケードクロックリングバスを介してデータを確実に転送する方法が求められている。
【発明の概要】
【課題を解決するための手段】
【0013】
したがって、本発明は、ソースクロック信号(C0)を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードまで伝送するクロック信号経路を含むカスケードクロックリングネットワークを提供する。最後の処理ノードは、伝送されたソースクロック信号をエンドクロック信号(CEND)として提供する。カスケードクロックリングネットワークはまた、伝送されたソースクロック信号に応答して、データ値を、複数の処理ノードを介して最初の処理ノードから最後の処理ノードまで伝送するデータ経路を含む。最後の処理ノードは、伝送されたデータ値をエンドデータ値(DEND)として提供する。先入れ先出し(FIFO)メモリが、最初の処理ノードと最後の処理ノードとの間に配置される。エンドデータ値DENDは、エンドクロック信号CENDに応答して、FIFOメモリに書き込まれる。その後、ソースクロック信号C0に応答して、エンドデータ値DENDがFIFOメモリから読み出され、再同期データ値(D0´)として最初の処理ノードに提供される。
【0014】
一実施形態では、FIFOメモリは、FIFOエントリの数にエンドクロック信号CENDの期間を乗じた期間に等しい継続時間を有する有効データウィンドウ期間(W1)にわたって、各エンドデータ値DENDを格納する。FIFOエントリの数は、動作中のクロック電圧及び温度変化に起因するクロック信号C0及びCENDの予想される位相ドリフト、並びに、2つのクロック信号C0及びCENDの相対ジッタを考慮して選択される。
【0015】
本発明の別の態様によれば、同期回路をさらに備え、同期回路によって、エンドデータ値がFIFOメモリから読み出される前に、複数のエンドデータ値DENDが最初にFIFOメモリに書き込まれることを確実にする。同期回路は、第1のエンドデータ値がFIFOメモリに書き込まれたときにアサートされる有効ビットを受け取るように接続された入力を有する第1のフリップフロップと、第1のフリップフロップと直列に接続された第2のフリップフロップであって、ソースクロック信号に応答して、アサートされた有効ビットを第1及び第2のフリップフロップを介して伝送する第2のフリップフロップとを含み得る。また、読み出し制御回路が、第2のフリップフロップによって提供されるアサートされた有効ビットを受信するように接続されており、読み出し制御回路は、アサートされた有効ビットを受信した後、FIFOメモリに対する読み出し動作を開始する。一実施形態では、読み出し制御回路は、アサートされた有効ビットを受信した後、予め定められた数の1以上のサイクルを待機してから読み出し動作を開始する。予め定められたサイクル数は、読み出し動作が有効データウィンドウ期間W1の中央付近で開始されることを確実にするように選択される。
【0016】
別の実施形態によれば、カスケードクロックリングネットワークのクロック信号経路またはデータ経路に関連する遅延を周期的に測定するための制御回路がさらに設けられる。最初に測定された(基準)遅延とその後に測定された遅延との間の差が予め定められた閾値を超えた場合、制御回路は、FIFOメモリ内のエンドデータ値の書き込みと読み出しとを再同期させる。
【0017】
別の実施形態は、カスケードクロックリングネットワークを動作させる方法を含み、本方法は、(1)クロック信号経路上で、ソースクロック信号を、直列接続された複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するステップであって、最後の処理ノードが、伝送されたソースクロック信号をエンドクロック信号として提供する、該ステップと、(2)伝送されたソースクロック信号に応答して、データ経路上で、データ値を、複数の処理ノードを介して最初の処理ノードから最後の処理ノードへ伝送するステップであって、最後の処理ノードが、伝送されたデータ値をエンドデータ値として提供する、該ステップと、(3)エンドクロック信号に応答して、エンドデータ値を先入れ先出し(FIFO)メモリに書き込むステップと、(4)エンドクロック信号に応答して、FIFOメモリに以前に書き込まれたエンドデータ値を最初の処理ノードに読み出すステップと、を含む。
【0018】
本方法は、FIFOメモリのエントリ数にソースクロック信号の期間を乗じた期間に等しい継続時間を有する有効データウィンドウ期間にわたって、各エンドデータ値を格納するステップをさらに含む。
【0019】
本方法は、エンドデータ値がFIFOメモリから読み出される前に、複数のエンドデータ値が最初にFIFOメモリに書き込まれることを確実にするために、FIFOメモリ内のエンドデータ値の書き込みと読み出しとを同期させるステップをさらに含み得る。この同期させるステップは、エンドデータ値の1つをFIFOメモリのエントリに書き込むときに、有効ビットをアクティブ化するステップと、ソースクロック信号に応答して、アクティブ化された有効ビットを複数のフリップフロップを介して伝送し、それによって、再同期有効ビットを提供するステップと、を含む。FIFOメモリに対する読み出し動作は、再同期有効ビットに応答して開始され得る。これらの読み出し動作は、ソースクロック信号の1以上のサイクルだけ遅延させて行われ、それによって、読み出し動作が有効データウィンドウ期間の中央付近で行われることを確実にする。
【0020】
別の実施形態によれば、本方法は、さらに、(1)クロック信号経路またはデータ経路に関連する遅延を定期的に測定するステップと、(2)定期的に測定された遅延が予め定められた閾値を超えて変化するか否かを判定するステップと、(3)遅延が閾値を超えて変化したと判定された場合には、FIFOメモリ内のエンドデータ値の書き込み及び読み出しを再同期させるステップとを含み得る。
【0021】
本発明は、以下の説明及び図面を参照することによって、より完全に理解されるであろう。
【図面の簡単な説明】
【0022】
図1】従来の同期リングネットワークのブロック図である。
図2】従来のカスケードクロックリングネットワークのブロック図である。
図3】本発明の一実施形態によるカスケードクロックリングネットワークのブロック図である。
図4】本発明の一実施形態による、図3のカスケードクロックリングネットワークに含まれる再同期FIFO回路の概略的な構造を示すブロック図である。
図5】本発明の一実施形態による、図4の再同期FIFO回路の動作を初期化する方法を示すフロー図である。
図6図5の初期化方法中の図4の再同期FIFO回路内の信号を示す波形図である。
図7】本発明の一実施形態による、図3のカスケードクロックリングネットワークに関連するクロック遅延(DREF)を推定するために使用されるシステムのブロック図である。
図8】本発明の別の実施形態による、クロック遅延(DREF)の推定を可能にする改変されたカスケードクロックリングネットワークのブロック図である。
図9】本発明の別の実施形態による、図3のカスケードクロックリングネットワークと同様の複数の並列カスケードクロックリングネットワークを含む順列リングネットワークのブロック図である。
図10】通常動作中の温度及び/または電圧の変動によって引き起こされる、リングネットワークのクロック/データ経路に関連する遅延の変化を補償する方法のフロー図である。
図11】本発明の一実施形態による、図3のカスケードリングネットワークと組み合わせて使用される周波数-電圧スケーリングシステムのブロック図である。
図12】本発明の別の実施形態による、カスケードクロックリングネットワークのブロック図である。
図13】本発明の一実施形態による、図12のカスケードクロックリングネットワークに含まれる再同期FIFO回路の概略的な構造を示すブロック図である。
【発明を実施するための形態】
【0023】
概して、本発明は、カスケードクロックリングネットワークの最後の処理ノードのデータ経路と、カスケードクロックリングネットワークの最初の処理ノードとの間に、先入れ先出し(FIFO)メモリ構造を含む。FIFO書き込み回路及びデータ入力は、最後の処理ノードから提供された出力クロック信号(CEND)によって駆動され、FIFO読み出し回路及びデータ出力は、ソースクロック信号(C0)によって駆動される。以下、本発明をさらに詳細に説明する。
【0024】
図3は、本発明の一実施形態による、カスケードクロックリングネットワーク300を示すブロック図である。このカスケードクロックリングネットワーク300はカスケードクロックリングネットワーク200(図2)と同様であるので、図2及び図3中の同様の要素には、同様の参照番号を付している。したがって、カスケードクロックリングネットワーク300は、クロックソース150と、処理ノード201~208とを備え、処理ノード201~208はそれぞれ、ノード処理ユニット111~118と、マルチプレクサ121~128と、フリップフロップ131~138と、クロックドライバ回路211~218と、クロックドライバ回路221~228とを含む。クロックドライバ回路221~228はそれぞれ、クロックソース150から提供されるソースクロック信号C0に応答して、クロックバス171~178上に、カスケードクロック信号C1´~C7´及びCENDを提供し、それによって、クロック信号経路を提供する。クロックソース150は、ソースクロック信号C0を調整するためのバッファまたは別の回路を有し得ることを理解されたい。クロックドライバ回路211~218はそれぞれ、クロック信号C0及びC1´~C7´に応答して、クロック信号CFF1~CFF8をクロックフリップフロップ131~138に提供する。フリップフロップ131~138はそれぞれ、出力データ値D1´~D7´及びDENDをデータバス141~148上に提供し、それによって、データ経路を提供する。
【0025】
再同期FIFO回路301が、リング内の最後の処理ユニット208から提供されるデータ値DEND及びクロック信号CENDを受け取るように接続されている。再同期FIFO回路301はまた、クロックソース150からソースクロック信号C0を受け取り、かつ、リング制御回路350からRESET制御信号を受け取るように接続されている。これに応答して、再同期FIFO回路301は、(データバス149上で)リングの最初の処理ノード201のマルチプレクサ121に、ソースクロック信号C0と再同期させたデータ値D0´を提供する。
【0026】
図4は、本発明の一実施形態による再同期FIFO回路301の概略的な構造を示すブロック図である。再同期FIFO回路301は、N個のエントリFIFOメモリ400と、有効ビットエントリ401と、書き込み制御回路410と、書き込みエントリセレクタ411と、書き込みアドレスカウンタ412と、読み出し制御回路420と、読み出しエントリセレクタ421と、読み出しアドレスカウンタ422と、遅延レジスタ425と、フリップフロップ431~432を含む同期化回路430とを含む。
【0027】
以下でより詳細に説明するように、再同期FIFO回路301は、最後の処理ノード208から受信したデータDENDを2以上のクロックサイクルにわたって「有効」にして、エントリ有効データウィンドウを実質的に増大させることを可能にする。これにより、入力データ信号(DEND)及びクロック信号(CEND)に対する位相が不明な様々なソースクロックC0による、信頼性の高いサンプリングが容易になる。FIFO回路301内のエントリ数により、エントリ有効データウィンドウの継続時間が決定される。必要とされる継続時間は、動作中のクロック電圧及び温度変化に起因するクロック信号C0及びCENDの予測される位相ドリフト、並びに、2つのクロック信号C0及びCENDの相対ジッタによって決定される。遅延レジスタ425に格納された臨界可変遅延値(J)は、読み出し制御回路420が、エントリ有効データウィンドウに対する読み出しパルスの位置(理想的には中央付近)を制御することを可能にする。
【0028】
図5は、本発明の一実施形態による、再同期FIFO回路301の動作を初期化する方法500を示すフロー図である。
【0029】
図6は、図5の初期化方法中の再同期FIFO回路301内の信号を示す波形図である。
【0030】
ステップ501では、制御回路350は、リセット制御信号をアサートし(RESET=1)、それによって、再同期FIFO回路301の読み出しパルスアライメントモードを開始させ、再同期FIFO回路301からデータを読み取るために使用されるリードパルスをソースクロック信号C0とアライメントさせる。RESET信号は、通信ノード(処理ノード)201~208内のプロセッサノード111~118に提供される。RESET信号はまた、再同期FIFO回路301内の書き込み制御回路410及び読み出し制御回路420にも提供される。
【0031】
そして、RESET信号がすでにアサートされている場合(例えば、読み出しパルスアライメントモードがすでにアクティブ化されており、データが、以前の読出しパルスアライメントの結果を用いてリングネットワーク上ですでに送信されている場合)には(ステップ502:NO)、処理はステップ514に進む。ステップ514では、プロセッサノード111~118は、リングネットワーク上での新しい有効データ値の送信を一時停止する。ステップ514に続くステップ515では、プロセッサノード111~118、書き込み制御回路410、及び読み出し制御回路420は、Kサイクル待機する。Kの値は、リングネットワーク上で現在伝送されている全ての有効データ値がそれらの宛先ノードに伝送されることを可能にするように選択される。そして、Kサイクル経過後、ステップ503に進む。
【0032】
一方、RESET信号がすでにアサートされていない場合(すなわち、アサートされたRESET信号が、1回目の読み出しパルスアライメントモードのアクティブ化を示す場合)、処理はステップ502からステップ503に直接進む。
【0033】
ステップ503では、書き込み制御回路410は、書き込みアドレスカウンタ412をリセットし、書き込みアドレスカウンタ412に格納されている書き込みアドレスによって、書き込みエントリセレクタ411がN個のエントリFIFOメモリ400のエントリE1(及び有効ビット401)をポイントするようにする。加えて、読み出し制御回路420は、読み出しアドレスカウンタ422をリセットし、読み出しアドレスカウンタ422に格納されている読み出しアドレスによって、読み出しエントリセレクタ421がN個のエントリFIFOメモリ400のエントリE1(及び有効ビット401)をポイントするようにする。
【0034】
次に、書き込み制御回路410をイネーブルにし(ステップ504)、リングネットワークの最後の処理ノード208から再同期FIFO回路301に提供された有効な書き込みデータDENDを、対応するクロック信号CENDに応答して、再同期FIFO回路301に書き込む(ステップ505)。書き込み制御回路410は、書き込みイネーブル信号WEをアサートし、最初に受信した有効な書き込みデータ値(D1)をFIFOメモリ400のエントリE1に書き込むとともに、論理値「1」を、エントリE1に関連する有効ビットメモリ401に書き込む(図6)。書き込みイネーブル信号WEは、FIFOメモリ400への書き込み動作が最後の通信ノード208のクロックドメインで行われるように、受信したクロック信号CENDに同期してアサートされる。
【0035】
END信号の連続サイクル中に、その後に受信したデータ信号D2~D12は、FIFOメモリ400のエントリに順次書き込まれる。図6に示す実施形態では、FIFOメモリ400は、6つのエントリ(E1~E6)を含み、データ値D2~D6は、入力クロック信号CENDの次の5サイクルの間に、FIFOエントリE2~E6にそれぞれ書き込まれる。書き込み制御回路410は、書き込み動作のたびに、書き込みアドレスカウンタ412をインクリメントする。FIFOメモリ400の最後のエントリE6にデータ値D6を書き込んだ後、書き込みアドレスカウンタは値「1」に戻り、最初のエントリE1に対して次の(7番目の)書き込み動作を行う。このようにして、書き込みデータ値D7~D12が、エントリE1~E6にそれぞれ書き込まれる(以前に書き込まれたデータ値D1~D6を上書きする)。
【0036】
データをこのようにして格納することにより、図6に示すように、書き込みデータ値D1~D12の各々を、入力クロック信号CENDの約Nサイクル(例えば、6サイクル)の期間にわたって、FIFOメモリに格納することができる。第1のデータ値D1に対する拡張された有効データウィンドウ期間W1が、図6に示されている。本実施例では6個のエントリが説明されているが、別の実施例では別の個数のエントリを使用してもよいことを理解されたい。FIFOメモリ400のエントリ数を選択における考慮するべき事項については、以下でより詳細に説明する。特定の実施形態では、FIFOメモリ400は、8個以下のエントリを含む。
【0037】
有効ビットメモリ401に格納されている有効ビットVは、フリップフロップ431の入力端子に提供される。フリップフロップ431の出力端子は、フリップフロップ432の入力端子に接続されている。フリップフロップ432の出力端子は、読み出し制御回路420に接続されている。フリップフロップ432から読み出し制御回路420に提供される信号は、再同期有効信号RS_VALIDと符号が付されている。フリップフロップ431及びフリップフロップ432は、ソースクロック信号C0(入力クロック信号CENDと同一の周波数を有する)に応答して動作する。
【0038】
論理値「1」の有効ビットVが有効ビットメモリ401に書き込まれた後、ソースクロック信号C0の次の立ち上がりエッジによって、この論理値「1」の有効ビットVがフリップフロップ431にラッチされる。そして、ソースクロック信号C0の次の立ち上がりエッジによって、この論理値「1」の有効ビットVがフリップフロップ432にラッチされる。このとき、フリップフロップ432は、論理値「1」の有効ビットVを、読み出し制御回路420に提供する(すなわち、RS_VALID=1)。この遷移を図6に示す。
【0039】
読み出し制御回路420は、RS_VALID信号が論理値「1」状態に遷移したことを検出すると(ステップ506:YES)、有効なリセット信号(V_RST)をアサートし、書き込み制御回路410に提供する。書き込み制御回路410は、アサートされたV_RST信号に応答して、有効ビットメモリ401に格納されている有効ビットVを論理値「0」にリセットし、次回の読み出しパルスアライメントモードが開始されるまで、有効ビットメモリ401への書き込みをディスエーブルにする(ステップ507)。RS_VALID信号がアサートされるまでは(ステップ506:NO)、読み出し制御回路420は、RS_VALID信号のアサートを検出するために待機することに留意されたい。別の実施形態では、書き込み制御回路410は、対応するエントリE1への2回目の書き込み動作が行われたときに(すなわち、FIFOメモリ400への第7の書き込み動作中に)、有効ビットVをリセットする。
【0040】
読み出し制御回路420は、アサートされたRS_VALID信号を受信した後、クロック信号C0(またはCEND)のJサイクルが経過するまで待機する(ステップ508)。Jは、遅延レジスタ425に格納されている値である。制御回路350は、Jの値を決定し、決定したJの値を遅延レジスタ425に書き込むことができることに留意されたい。一実施形態では、Jの値は、FIFOメモリ400のエントリ数(N)を2で割った数から、アサートされた有効ビットVをソースクロック信号C0と再同期させるのに必要なクロックサイクル数を差し引いた数に等しい。図6の例では、N=6であり、アサートされた有効ビットVを再同期化するのに必要なC0クロックサイクルの数は2である(この再同期化では2つのフリップフロップ431、432を使用するため)。結果として、J=1(すなわち、J=(6/2)-2)となる。このJの値は、図6に示されている。
【0041】
Jサイクル待機した後、読み出し制御回路420をイネーブルにし(ステップ509)、ソースクロック信号C0に応答して、エントリE1から開始して、FIFOメモリ400からデータを読み出す(ステップ510)。読み出し制御回路420は、FIFOメモリ400のエントリE1から第1のデータ値(D1)を読み出すリードイネーブル信号REをアサートする。この読み出し動作を可能にする読み出しパルスは、図6において、E1_RDとして示されている。リードパルスE1_RDは、(FIFOメモリ400からの読み出し動作が最初の通信ノード201のクロックドメインで実行されるように)ソースクロック信号C0と同期して、時刻S1でアサートされる。エントリE1~E6に対する読み出し動作のタイミングは、図6において、信号E1_RD~E6_RDによって示されている。
【0042】
ソースクロック信号C0の連続サイクル中に、データ値D2~D12がFIFOメモリ400のエントリから順次読み出される。読み出し制御回路420は、読み出し動作のたびに、読み出しアドレスカウンタ422をインクリメントする。FIFOメモリ400の最後のエントリE6からデータ値D6を読み出した後、読み出しアドレスカウンタは値「1」に戻り、最初のエントリE1に対して次の(7番目の)読み出し動作を行う。このようにして、ソースクロック信号C0の連続サイクル中に、データ値D1~D12がFIFOメモリ400から順次読み出される。説明した実施例では、読み出しアドレスカウンタ422及び読み出しエントリセレクタ421を使用して、読み出す対象のFIFOメモリ400のエントリを選択し、書き込みアドレスカウンタ412及び書き込みエントリセレクタ411を使用して、書き込む対象のFIFOメモリ400のエントリを選択しているが、別の例では、FIFOメモリ400にアクセスするのに使用される読み出しアドレス及び書き込みアドレスを生成するために、当業者によく知られている別の回路を使用してもよいことを理解されたい。
【0043】
Jの値は、FIFOメモリ400に格納されたデータ値D1~D12が、データ値に関連するデータウィンドウの中央付近のサンプリングポイントで読み出されることを確実にするために選択されることに留意されたい。図6は、FIFOメモリ400のエントリE1からデータ値D1が読み出されるサンプリングポイント(S1)が、このデータ値に関連するデータウィンドウW1の中央付近に位置することを示している。CENDクロックドメインからC0クロックドメインへの有効ビットVの再同期化に起因して、データウィンドウW1の中央に対するサンプリングポイントS1の位置に関して1クロックサイクル分の不確定性が存在する。
【0044】
有利なことに、クロックサイクル毎に書き込み動作及び読み出し動作を実行するので、FIFOメモリ400に関連して使用するための空フラグ及び完全フラグは不要となる。
【0045】
上述した再同期化の完了後、制御ロジック350は、全ての通信ノード201~208からの有効データの送信を可能にする(ステップ511)。
【0046】
その後、制御回路350は、カスケードクロックリングネットワーク300に関連するクロック/データ遅延(DREF)を測定し、その測定結果を格納する(ステップ512)。制御回路350は、以下でより詳細に説明するように、別の方法を用いて、リングネットワーク300のクロック/データ遅延DREFを測定してもよい。以下に提供される実施例では、単一のクロック遅延(DREF)の測定について説明するが、複数のクロック遅延(DREF)の測定を行い、その複数の測定結果の平均値を、クロック遅延(DREF)値として使用してもよいことを理解されたい。このような平均化は、クロックジッタが測定の分解能よりも大きい場合に有用である。
【0047】
図7は、本発明の一実施形態による、リングネットワーク300に関連するクロック遅延(DREF)を推定するシステム700のブロック図である。システム700は、モデルリングクロックバス701を含み、このモデルリングクロックバス701は、クロックドライバ221~228及びクロックバス171~178と同一に設計された(すなわち、同一の伝送特性を有する)クロックドライバ721~728及びクロックバス771~778を含む。制御回路350は、モデル遅延刺激回路711と、モデル遅延検出回路712とを含む。時刻T0において、モデル遅延刺激回路711は、テストパルス信号TPをモデルリングクロックバス701上に送信する。このテストパルス信号は、モデルリングクロックバス701に伝送され、時間T1においてモデル遅延検出回路712によって受信される。制御回路350は、再同期FIFO回路301に近接して配置されており、リングネットワーク300の推定遅延DREFを、T1からT0を差し引いた値と等しくなるように計算する。有利なことには、推定クロック遅延DREFは、リングネットワーク300の動作を中断することなく、システム700によって計算することができる。
【0048】
図8は、本発明の別の実施形態による、リングネットワークに関連するクロック/データ遅延(DREF)の推定を可能にする改変されたリングネットワーク800のブロック図である。このリングネットワーク800はリングネットワーク300(図3)と同様であるので、図3及び図8中の同様の要素には、同様の参照番号を付している。リングネットワーク800とリングネットワーク300との主な違いは、リングネットワーク800が追加のデータバスラインを含むように改変されていることである。したがって、各データバス841~849は、リングネットワーク300の対応するデータバス141~149よりも1つ多いデータラインを有する。この追加データ線は、最初の処理ノード201からデータ経路に沿ってテストデータパルス(DP)を送信し、最後の処理ノード208を通って伝送するために使用される。なお、図8のデータ値は、テストデータパルスのデータバスへの追加を示すために、D0´´~D7´´及びDEND´´として再符号付けされていることに留意されたい。制御回路350は、テストデータパルス(DP)の状態を制御する。通常動作中、テストデータパルス(DP)は、論理値「0」を有する。しかし、リングネットワーク800に関連するクロック遅延(DREF)を推定するために、制御回路350は、論理値「1」を再同期FIFO回路301に書き込むことによって、テストデータパルス(DP)を論理値「1」にアクティブ化する。時刻TAにおいて、ソースクロック信号C0は、再同期FIFO回路301からテストデータパルス(DP)を読み出す。テストデータパルス(DP)は、最初の処理ノード201からデータ経路の追加データ線上に送信され、最終の処理ノード208を通って伝送され、時刻TBにおいてデータバス848上の再同期FIFO301によって受信される。制御回路350は、再同期FIFO回路310に近接して配置され、カスケードクロックリングネットワーク800の推定クロック遅延DREFを、時刻TBから時刻TAを差し引いた値と等しくなるように計算する。有利なことには、推定クロック遅延DREFは、カスケードクロックリングネットワーク800の通常動作中に計算することができる。
【0049】
図9は、通信ノードN0~N7間でデータを送信するために使用される複数の並列リングネットワーク901~903を含む順列リングネットワーク900のブロック図である。各リングネットワーク901~903は、各通信ノードN0~N7間の通信チャネルとして機能する。リングネットワーク901はデータ転送ステーションA0~A7を含み、リングネットワーク902はデータ転送ステーションB0~B7を含み、リングネットワーク903はデータ転送ステーションC0~C7を含む。並列リングネットワーク901、902及び903はそれぞれ、対応するクロック信号CKA、CKB及びCKCに応答して動作する。順列リングネットワーク900は、その全体が参照により本明細書に組み込まれる、同一出願人よる同時係属米国特許出願第15/816、374号により詳細に説明されている。
【0050】
この順列リングネットワーク900では、リングネットワーク901~903に関連するクロック遅延DREFは、読み出しパルスアライメントモードのステップ512(図5)の間に決定することができる。データの送信は、並列リングネットワーク901~903のうちの1以上で停止されるが、並列リングネットワーク901~903のうちの1以上でデータの通常の送信を継続することができる。例えば、リングネットワーク901の動作を一時的に停止することができ、その後、停止中のリングネットワーク901上でテストパルスを送信することにより、このリングネットワーク901のクロック信号CKAに関連するクロック遅延DREFを決定することができる(図7または図8に関連して上述した教示にしたがって決定する)。それと同時に、別のリングネットワーク902~903上でデータの送信を継続することができる。同様に、リングネットワーク902及び903の動作を一時的に停止することができ、その後、停止中のリングネットワーク902及び903上でテストパルスを送信することにより、これらのリングネットワーク902及び903のクロック信号CKB及びCKCに関連するクロック遅延DREFを決定することができる。それと同時に、別のリングネットワーク901上でデータの送信を継続することができる。有利なことには、別の並列リングネットワークでクロック遅延(DREF)を計算している間、少なくとも1つのリングネットワークは動作を継続することができる。
【0051】
カスケードクロックリングネットワーク300のクロック/データ遅延DREFが上述した機構のいずれかを用いて決定された後、制御回路350は、読み出しパルスアライメントモードを終了する(図5のステップ513)。読み出しパルスアライメントモードの終了後、制御回路350は、カスケードクロックリングネットワーク300に関連するクロック/データ遅延(DREF)を定期的に測定して、この遅延が時間の経過とともに、(例えば、動作電圧及び/または温度の変動に起因して)著しく変化するか否かを判定する。カスケードクロックリングネットワークのクロック/データ経路に関連する遅延が時間の経過とともに著しく変化する場合、読み出しパルスアライメントモードを再び開始し、それによって、以下でより詳細に説明するように、遅延の変化を補償するために、再同期FIFO回路301の動作を再調整する。
【0052】
図10は、通常動作中の温度及び/または電圧の変化によって引き起こされる、カスケードクロックリングネットワーク300のクロック/データ経路に関連するクロック/データ遅延(DREF)の変化を補償する方法1000のフロー図である。ステップ1001では、リング伝搬遅延の補償処理を開始する(例えば、図5のステップ513から)。まず、制御回路350は、カウントダウンカウンタ351(図3)をカウント値Mに設定する(ステップ1002)。次に、(例えば、ソースクロック信号C0に応答して)カウントダウンカウンタ351をデクリメントする(ステップ1003)。カウントダウンカウンタ351が空でない場合(ステップ1004:NO)、処理はステップ1003に戻り、カウントダウンカウンタ351を再びデクリメントする。カウントダウンカウンタ351が空である場合(例えば、ソースクロック信号C0のMサイクル後)(ステップ1004:YES)、カスケードクロックリングネットワーク300のクロック/データ経路に関連する遅延は、上述した方法のいずれかを用いて再測定し、それによって、再テストされた遅延値DTESTTを提供する(ステップ1005)。Mの値は、再テスト間の期間を定義するために選択される。電圧スケーリングに起因する温度変化及び電圧変動は非常に遅いイベントであるため、再テスト間の期間は比較的長くなる(例えば、M=200、000は、2GHzのソースクロック周波数に対して約0.1msの再テスト期間を提供する)。
【0053】
Mの値は、リングネットワーク300の1周のクロック/データ遅延のクロックサイクル数と同じくらいに小さくてもよい。この場合、クロック/データ遅延DREFは、ほぼ絶えず監視/再テストされる。あるいは、Mの値は、シリコンの温度がリングネットワーク300の遅延を変化させるのに十分なほど変化するのに必要なクロックサイクルの数と同じくらいに小さくてもよい。Mの値は、以下でより詳細に説明するように、遅延値DREFが所定の閾値以上に変化するのに必要な最小クロックサイクル数よりも大きくすべきではない。順列リングネットワーク900を使用する場合(図9)、Mの値は、カスケードクロックリングネットワーク901~903の各々を連続的に監視/再テストしてもシステムが故障しないような値に選択される(すなわち、監視/再テストされるのを待っている間に、クロック/データ遅延が、カスケードクロックリングネットワーク901~903のいずれかが故障することを可能にするくらいに速く変化しないような値に選択される)。同等のMサイクル遅延を生成する別の方法を用いてもよいことに留意されたい。
【0054】
Mの値は、リングネットワーク300で消費される電力に影響を与え、Mの値が大きいほど消費電力が低くなる。
【0055】
本明細書に提供される実施例では、単一のクロック遅延(DTEST)測定について説明したが、(特に、クロックジッタが測定の分解能よりも大きい場合には)複数のクロック遅延(DTEST)測定を行い、その複数の測定結果の平均値を、クロック遅延(DTEST)値として使用してもよいことを理解されたい。
【0056】
上述のようにして決定されたクロック/データ遅延DREFを、再測定されたクロック/データ遅延DTESTと比較する(ステップ1006)。遅延DREFとDTESTとの差の大きさ(すなわち、|DTEST-DREF|)が、所定の閾値より大きい場合(ステップ1006:YES)、読み出しパルスアライメントモードを再び開始する(ステップ1007)。すなわち、処理は、方法500(図5)のステップ501に戻る。そうでない場合(ステップ1006:NO)、処理はステップ1002に戻り、カウントダウンカウンタをカウント値Mに設定し、それ以降の処理を繰り返す。
【0057】
ソースクロック信号C0が高周波数を有し、かつデータ/クロックバスパスの長さがミリメートルのオーダーである場合、カスケードクロックリングネットワーク300のクロック/データ経路に関連する遅延の変動は、数クロックサイクルよりも長くなることに留意されたい。この遅延変動により、読み出し動作は、再同期FIFO301によって定義される有効データウィンドウのエッジ付近で実行されることになる。制御回路350は、現在のクロック/データ経路遅延(DTEST)を、読み出しパルスアライメントモード(DREF)の最新の実行中に測定されたクロック/データ経路遅延に対して監視及び比較する。これにより、制御回路350は、再同期FIFO301の読み出しパルスE1_RD~E6_RDのアクティブ化が有効データウィンドウ期間(例えば、有効データウィンドウ期間W1)のエッジに近づいている時点(例えば、図6のサンプルポイントS1)を判断し、その後、(図5の読み出しパルスアライメント方法500を再び開始することにより)読み出しパルスが有効データウィンドウの中央付近でアクティブ化されるようにタイミングを調整することができる。図6の例では、有効データウィンドウW1は、ソースクロック信号C0の6サイクル分の幅を有し、読み出しパルスS1は、最初は、この有効データウィンドウW1の中央付近に位置している。一実施形態では、クロック/データ経路遅延DTESTと、以前に決定されたクロック/データ経路遅延DREFとの差が、(クロックのジッタと共に)ソースクロック信号C0の少なくとも2サイクルの閾値に達した場合、サンプルポイントS1は、有効データウィンドウW1のエッジ付近にシフトされる。この場合、現在のクロック/データ経路遅延DTESTを考慮して、読み出しパルスアライメントモード500を再び開始することにより、サンプルポイントS1を有効データウィンドウW1の中央付近に再センタリングする。
【0058】
上述したように、FIFOメモリ400のエントリ数Nは、FIFOメモリ400に書き込まれたデータ値が有効であり続ける間のデータウィンドウの幅を確立する。エントリ数N(すなわち、データウィンドウの幅)は、通常動作状態中に所定期間にわたって発生すると予想されるクロック電圧及び温度の変動に起因するクロック信号CEND及びC0間の予測される最大の位相ドリフトと、2つのクロック信号CEND及びC0の予測される相対ジッタ(すなわち、ソースクロック信号C0のMサイクルにわたる|DTEST-DREF|の最大期待値)とによって決定される。エントリ数Nは、FIFO400の各読み出し動作の読み出しサンプルポイントが遅延テスト期間(Mサイクル)にわたって有効データウィンドウW1内に収まることを可能にする幅を有する有効データウィンドウW1を提供できるほど大きい。遅延補償方法1000を用いることにより、広範囲の動作条件をカバーするためにFIFO400に必要とされるエントリ数をより少なくすることができる。FIFOのエントリ数をより少なくすることにより、使用するチップレイアウト面積がより少なくなり、待ち時間がより短くなるという利点がある。
【0059】
一般に、必要とされるエントリ数Nは、ソースクロック周波数、ソースクロック信号C0とエンドクロック信号CENDとの間のジッタ、及び、リングネットワーク300のクロック/データ経路に沿って存在する可能性のある遅延の変動(例えば、温度、ソースクロック周波数、及びシステム供給電圧などの環境条件の変化に起因する遅延変動)に関係する。一実施形態では、各処理ノード201~208は、クロック/データ経路遅延における可能性のある変動が比較的小さくなるように(全ての処理ノード201~208は同様の環境条件下にあるため)、かつ、FIFOメモリ400のエントリ数が比較的小さくなるように(例えば、Nが8以下になるように)、同一の集積回路チップ上に配置される。別の実施形態では、処理ノード201~208のうちの1以上を、別の集積回路チップ(及び/または別の集積回路基板)上に配置して、クロック/データ遅延パスにおけるジッタ及び可能性のある変動が比較的大きくなるようにしてもよい(別の処理ノードは、別の環境条件下に曝され得るため)。このような実施形態では、FIFOメモリ400は、比較的多数のエントリを必要とする。
【0060】
再同期FIFOメモリ301の使用によって提供される1つの利点は、限られた待ち時間ペナルティを提供するものの、周波数-電圧スケーリングシステムにおいてシームレスでロバストな動作を可能にすることである。図11は、本発明の一実施形態による、カスケードクロックリングネットワーク300(図3)と組み合わせて使用される周波数-電圧スケーリングシステム1100のブロック図である。周波数-電圧スケーリングシステム1100は、モード制御回路1101と、供給電圧制御回路1102と、クロック周波数制御回路1103とを含む。以下でより詳細に説明するように、モード制御回路1101は、カスケードクロックリングネットワーク300内の様々な動作パラメータを制御することによって、カスケードクロックリングネットワーク300の性能を調整することができる。より具体的には、モード制御回路1101は、電圧制御信号を供給電圧制御回路1102に送信し、それによって、供給電圧制御回路1102は、カスケードクロックリングネットワーク300の上述の回路要素を動作させるために使用される供給電圧VCCを調整する。一実施形態では、電源電圧制御回路1102は、供給電圧VCCを、約0.5ボルトの低い値から約1.2ボルトの高い値まで調整することができる(カスケードクロックリングネットワーク300が20nm未満のアドバンスプロセスノードを使用して作製されると仮定する)。
【0061】
モード制御回路1101はまた、周波数制御信号をクロック周波数制御回路1103に送信する。これに応答して、クロック周波数制御回路1103は、周波数調整信号FADJをクロックソース150に送信し、それによって、クロックソース150は、ソースクロック信号C0の周波数を調整する。一実施形態では、ソースクロック信号C0の周波数は、100MHz程度の低い周波数から数GHz程度の高い周波数まで調整することができる。別の実施形態では、クロック周波数制御回路1103は、所望の周波数を有するソースクロック信号C0を生成するように(そして、このソースクロック信号C0をクロックソース150に送信して、クロックソース150から提供されるように)改変することができる。
【0062】
周波数-電圧スケーリングの目的は、所与の作業負荷性能要求に対する電力要求を最小限に抑えることである。例えば、アイドル、スタンバイ、スリープ、ディープスリープ、公称、高性能、最大性能などの様々な動作モードが、様々な周波数及び電圧を使用して実施され得る。
【0063】
一実施形態によれば、モード制御回路1101はまた、再同期FIFO回路301に提供されるJ値調整メッセージ(J_ADJUST)を提供する。これに応答して、再同期FIFO回路301は、J値レジスタ425に格納されているJ値を変更する。一実施形態では、J値は、周波数を関数としてFIFO回路301の待ち時間を最小限に抑えるために、ソースクロック信号C0の周波数の関数として調整される。
【0064】
別の実施形態によれば、モード制御回路1101はまた、制御回路350に提供されるM値調整メッセージ(M_ADJUST)を提供する。これに応答して、制御回路350は、カウントダウンカウンタ351に格納されているカウント値Mを調整する。一実施形態では、M値は、ソースクロック信号C0の周波数と電源電圧VCCの関数として調整され、それによって、有利なことに、クロック/データ経路遅延の変化をテストするための様々な期間を設定することを可能にする。
【0065】
動作電圧及びソースクロック周波数が性能要件に適合するように変更されると、上述した読み出しパルスアライメントモード(図5)を再び開始することにより、最後の処理ノード208から最初の処理ノード201へのデータの転送を再同期させ、読み出しパルスを有効データウィンドウ内に再センタリングすることができる。再同期FIFO回路301が存在しない場合、このような広範囲の動作電圧及びソースクロック周波数にわたるカスケードクロックリングネットワークの再同期化を可能にするためには、(より多くのFIFOエントリを必要とする)はるかに複雑なシステムが必要となるであろう。
【0066】
電圧/周波数調整のレートによって引き起こされる遅延デルタの変化率が、カスケードクロックリングネットワーク300に関連するサンプリング及び応答率よりも小さい限り、モード制御回路1101は、カスケードリングネットワークを故障させることなく動作させることができる。電圧または周波数が急速に変化し、リング遅延変化により、読み出しクロック遷移及び書き込みデータ遷移がフリップフロップのセットアップ時間及びホールド時間が満たされない未知の領域にアラインされた場合、DTEST測定を行って閾値を超えたか否かを判定する前に、データバス上でデータ破損が生じるであろう。加えて、閾値を超えて検出されたが、電圧及び/または周波数が急速に変化し、読み出しパルスが再アラインされる前に、読み出しクロック遷移及び書き込みデータ遷移クロックが未知の領域に押し出された場合も、データバス上でデータ破損が生じるであろう。
【0067】
図12は、本発明の別の実施形態による、カスケードクロックリングネットワーク1200のブロック図である。図12のカスケードクロックリングネットワーク1200は、図3のカスケードクロックリングネットワーク300と同様であるので、図3及び図12中の同様の要素には、同様の参照番号を付している。図3のカスケードクロックリングネットワーク300では、再同期FIFO回路301及び最初の処理ノード201がソースクロック信号C0を著しい遅延なしに受信するように(すなわち、再同期FIFO回路301及び最初の処理ノード201が「同一の」ソースクロック信号C0を受信するように)、再同期FIFO回路301は最初の処理ノード201に極めて近接して配置されている。図12のカスケードクロックリングネットワーク1200では、再同期FIFO回路1201は、最初の処理ノード201に近接して配置する必要はない。図12の例では、再同期FIFO回路1201から最初の処理ノード201への信号遅延はTCO-TSU-TC2Oよりも大きくてもよい。ここで、TCOはソースクロック信号C0の期間であり、TSUはフリップフロップのセットアップ時間であり、TC2Oはフリップフロップのクロック・トゥ・アウト時間である。
【0068】
図13は、本発明の一実施形態による、図12の再同期FIFO回路1201のブロック図である。図4の再同期FIFO回路301は、図13の再同期FIFO回路1201と同様であるので、図4及び図13の同様の要素には、同様の参照番号を付している。再同期FIFO回路1201は、上述した再同期FIFO回路301に加えて、(上述のクロックドライバ回路211~218と同様の)クロックドライバ回路219と、(上述のクロックドライバ回路221~228と同様の)クロックドライバ回路229とを含む。クロックドライバ回路219及び229の特性は、クロックドライバ回路229により提供される出力クロック信号C0´が、再同期FIFO1201から読み出されたデータ値D0´に対して所定の位相関係を有するように選択される。結果として、最初の処理ノード201は、別の処理ノード202~208と同様に、(データバス149上で)データ値D0´と、(クロックバス179上で)対応するクロック信号C0´とを受信する。したがって、再同期FIFO回路1200から最初の処理ノード201までの距離に起因してD0´及びC0´信号に導入される遅延はほぼ同じであり、それによって、処理ノード201におけるD0´及びC0´信号間の所望の位相関係が維持される。本発明をいくつかの実施形態に関連して説明してきたが、本発明は開示された実施形態に限定されるものではなく、当業者には明らかな様々な変更が可能であることを理解されたい。したがって、本発明は、特許請求の範囲によってのみ限定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13