Description
データ処理ネットワークを同期化するシステムおよび方法
EP 05101717.6 20050304 20121017 H04L 7/00 H04L 29/08 patcit 1 : 特開2005−159754(JP,A)
patcit 2 : 特開2003−163646(JP,A)
patcit 3 : 特開昭55−031398(JP,A)
IB2006050632 20060301 WO2006092764 20060908 2008532411 20080814 20090302 白井 亮
Background Art
[0001]
将来のデータ処理システムは、多数のモジュールを含むことになる。明瞭な機能および明確に定義されたインターフェースを有するモジュールを使用することで、これらのシステムの迅速な開発が容易になる。そのような応用例の一例が、携帯電話機である。モジュールは、たとえば、RFモジュール、誤りコーディング/デコーディング・モジュール、信号コーディング/デコーディング・モジュール、さまざまなユーザ定義機能をソフトウェアで実施することを可能にする汎用プロセッサ、および他のモジュールの間からのデータ・トラフィックを案内するルータまたはスイッチである。ネットワークの形での実施はネットワークが比較的簡単に任意のサイズにスケーリングされ得るので、有利である。ネットワークのスイッチまたはルータおよび他のモジュールは、相互に異なるチップに組み込まれてもよい。ネットワーク・トポロジに対する代替案として、モジュールは、1つまたは複数のバス上に手配され、またはポイント・ツー・ポイント接続を有してもよい。バス内とネットワーク・トポロジ内との両方で、さまざまなデータ・ストリームが、リンクとも表される、2つのモジュールの間の共通通信経路を共用してもよい。
[0002]
ここで、システムにまたがるデータ送信が、ストリーミングの形で手配される、すなわち、データが、周期的に送信されると仮定する。さまざまなストリームの完全な共存を可能にするために、これらのストリームは、相互に独立でなければならない、すなわち、余分なストリームの追加が、既存のストリームに影響してはならない。
[0003]
システム内のすべてのモジュールが、正確に同一のクロックによって制御される場合には、異なるストリームのデータがネットワーク内で衝突しないように、ネットワークを介する送信を手配する(すなわち、それらの送信をスケジューリングする)ことが可能である。しかし、さまざまな実用的な状況では、すべてのモジュールは、名目上のみ同一周波数を使用している。この周波数は温度依存ドリフトにより経時的に変化する場合もある。これは、その実際の周波数値が、所与の許容範囲内でわずかに異なることを許容されることを意味する(独立同期[plesiochronous]リンク)。あるいは、言い換えれば、各デバイス/スイッチ/トランスミッタは、有界の周波数誤差を有するそれ自体の独立のクロックを有する。
[0004]
これは、長時間において、比較的低速のスイッチでのバッファ・オーバーフロー(読取速度が書込速度より低い)または比較的高速のスイッチでのバッファ・アンダーフロー(読取速度が書込速度より高い)および同一リンクを共用する異なるストリームに属するデータの間の送信衝突をもたらし得る。モジュールの間でのフロー制御メッセージの交換によって、これらの問題を克服することが可能である。しかし、フロー制御メッセージの交換は、特にシリアル・リンクを使用する場合に、電力消費に関して非常にコストがかかる可能性がある。たとえば、2.5GHz 10b/8b PLLベースのシリアル・リンクを検討されたい。そのようなリンクは、アクティブであるときまたは低電力モードになった後にアクティブ化されるときに電力を消費する。通常のアクティブ化時間は、数千ns程度(たとえば、2000ns)である。たとえば、32ビットのフロー制御メッセージ(16ns)を送信するだけのために、このリンクは、2016ns分の電力を消費する必要があり、これは多すぎる。
[0005]
米国特許第6026133号に記載のもう1つの既知の手法は、モジュールの高速局所クロックを調整するのに中央基準クロックを使用する。調整は、電圧制御発振器の電圧を制御することによって実行される。しかし、そのような手配は、各モジュール内に位相ロック・ループを必要とし、これは、設計を複雑にする。
Disclosure of Invention
Technical Problem
[0006]
本発明の目的は、バッファ・オーバーフロー/アンダーフローが、フロー制御メッセージを必要とせずに防がれる、比較的単純なシステムおよびシステムを動作させる方法を提供することである。
Technical Solution
[0007]
本発明によれば、この目的は、請求項1に記載のシステムにおいて実現される。この目的は、さらに、請求項5に記載のシステムを動作させる方法において実現される。
[0008]
本発明によるシステムおよび方法では、システム全体にまたがるデータ送信ペースが、最も低速のリンクのペースに適応される。そのため、すべてのモジュールの局所時間が、最も低速のクロック/スイッチ/リンクに対する差を補償するために規則的な間隔で訂正される。これらの間隔では、したがって、訂正の瞬間の間に、すべてのリンクでの、規定された最大値を超えないデータ部分の送信が、行なわれ得る。データのそのような部分を物理リンク上にセットすることが、Nクロック・サイクルを要すると仮定する。したがって、局所クロックの各Nサイクルの後に、モジュールは、グループ内の他のモジュールとのアラインメントを待つ。この同期化アルゴリズムは、次のように働く。リンク送信の初期化のときに、各スイッチは、N個のタイム・スロットをカウントし、戻りリンクを介してそのすべての直接のアクティブ隣接スイッチに、それがレディ[Ready—準備完了—]であることの信号を送信する。タイム・スロットは、局所クロックのクロック・サイクルに対する固定された関係を有する。
[0009]
スイッチは、その全ての直接のアクティブ隣接スイッチあらレディ・フィードバックを受信し、N個のタイム・スロットのそれ自体のカウントを終了したときに、N個のタイム・スロットのカウントをもう一度開始し、やはり、このカウントが終了したときに、その隣接スイッチにレディ・フィードバックを発行する。このステップが繰り返される。
[0010]
この形で、オーバーフロー/アンダーフローまたはさまざまなストリームの間の衝突が効率的な対応で防がれる。
[0011]
好ましくは、モジュールのクロックのサイクル時間は、多くとも平均サイクル時間の所定の一部分だけ異なり、所定の個数のタイム・スロットの持続時間は、前記一部分の逆数値未満である。この一部分は、クロック・サイクル時間の最大の差(ΔT)を平均クロック・サイクル時間(T)によって割ったものと定義される。
[0012]
T/ΔTの後にタイム・スロット・カウンタの初期化を実行することによって、あるモジュールが、他のモジュールが処理できるものより多いデータを供給できることが、防がれる。
[0013]
最も好ましくは、所定の個数のタイム・スロットの持続時間は、逆数値の1/4より長く、逆数値の3/4より短い。3/4より短い持続時間を使用することによって、許容される許容範囲からの逸脱が即座にオーバーフローをもたらすことが、防がれる。逆数比の1/4より短い持続時間は、比較的大きいオーバーヘッドをもたらすはずである。
[0014]
驚くべきことに、このシステムの各モジュールが、各他のモジュールによって通知されることは、必要ではない。一実施形態で、本発明によるシステムは、請求項1に記載のモジュールのさらなるグループを有し、グループのサブセットのモジュールは、第2動作状態であるときにさらなるグループのサブセットのモジュールに通知し、さらなるグループのサブセットのモジュールは、第2動作状態であるときにグループのサブセットのモジュールに通知する。また、この場合に、オーバーフロー/アンダーフローのないデータ・トラフィックが、実現され得る。
[0015]
そのようなものとして知られる再サンプル方針が、別のモジュールから受信されるデータを再サンプリングするのに使用されてもよい。そのような方針は、たとえば米国特許第5644604号に記載されている。
[0016]
本発明の上記および他の態様を、図面を参照して、より詳細に説明する。
Best Mode for Carrying out the Invention
[0017]
図1に、複数のモジュールを備えるデータ処理システムを概略的に示す。図示の実施形態では、データ処理システムは、4つのスイッチSW1、SW2、SW3、およびSW4を有するネットワークを備える。ネットワーク・スイッチは、チェーン様の形で手配される、すなわち、スイッチSW1およびSW2は、互いにデータを交換することができ、スイッチSW2およびSW3は、互いにデータを交換することができ、スイッチSW3およびSW4は、互いにデータを交換することができる。データ交換チャネルは、対称のブロック矢印によって象徴的に示されている。ネットワーク・スイッチは、さらに、機能モジュールFM1、…、FM8に結合される。各モジュールは、データ処理ファシリティを有する。たとえば、スイッチは、データ・ルーティング・ファシリティおよびデータ・バッファリング・ファシリティを有し、機能モジュールは、数学演算、論理演算、記憶などのファシリティ[facility—機能—]を提供する。
[0018]
わかりやすくするために、ここで、図2に、2つのモジュールM1、M2を有するさらなるシステムをより詳細に示す。トポロジは異なるが、これらのモジュールのより詳細な説明は、図1のモジュールにも関係する。この図のモジュールは、相互に独立のクロックCL1、CL2を有する。図示の実施形態では、クロックは、局所クロック・ジェネレータであるが、クロック信号を受け取る入力であってもよい。クロックは、そのモジュールから別のモジュールへのデータ送信のタイミング調整のために働く。図2に示されているように、モジュールM1およびM2のそれぞれは、それぞれ、データの送信に使用可能なタイム・スロットの個数をカウントするタイム・スロット・カウンタCNT1、CNT2を有する。このシステムの電源投入またはリセットのときに、このカウンタは、カウント0に初期化される。これらのモジュールは、タイム・スロットのカウントされる個数が所定の数以下である第1動作状態を有する。この第1状態では、データ送信が、イネーブル[enable—可能に—]される。データは、モジュールの局所クロックと同期して送信される。局所クロックは、別々に送信されてもよく、あるいは、10b/8bエンコーディングなどで、データに埋め込まれて送信されてもよい。モジュールは、タイム・スロットのカウントされる個数が所定の数を超えている第2動作状態を有する。この第2動作状態では、データ送信が、ディスエーブル[disable—不能に—]される。
[0019]
各モジュールは、そのモジュールが第2動作状態であるときを通知する通知ファシリティを有する。図示の実施形態では、モジュールM1は、通知信号線N12を有し、モジュールM2は、通知信号線N22を有する。
[0020]
この処理システムは、他のモジュールが、それらが第2動作状態であることを通知し終えたかどうかを検出する検出ファシリティDETを有する。図示の実施形態では、モジュールM1、M2は、1つの検出ファシリティDETを共用する。その代わりに、モジュールのそれぞれが、別々の検出ファシリティを有してもよい。検出ファシリティは、たとえば、ANDゲートであってもよく、このANDゲートは、両方のモジュールが、それらが第2動作状態であることを論理「1」を用いて通知した場合に論理的に信号「1」を与える。その代わりに、検出ファシリティはORゲートであってもよく、このORゲートは、両方のモジュールが、それらが第2動作状態であることを論理「0」を用いて通知した場合に論理的に信号「0」を与える。検出ファシリティが、任意の個数のモジュールから通知信号を受け取ってもよいことは、明白である。
[0021]
タイム・スロット・カウンタCNT1およびCNT2は、検出ファシリティの出力に結合されたリセット入力RESを有する。各モジュールが第2動作状態であることを示す検出ファシリティDETからの信号の際に、タイム・スロット・カウンタは、0に初期化される。その結果、モジュールは、もう一度第1動作状態になり、データ送信を再開することができる。
[0022]
図3に、グループのモジュールの1つに関する処理ステップを概略的に示す。グループの他のモジュールは、同一の形で動作させられる。
[0023]
ステップS1で、カウンタがタイム・スロットの個数をカウントするために初期化される。タイム・スロットは、局所クロックのクロック期間に関係する固定サイズを有する。たとえば、タイム・スロットは、クロック・サイクルの一部分、単一のクロック・サイクル、または複数のクロック・サイクルの持続時間を有する。
[0024]
各タイム・スロットで実行されるステップS2では、データが別のモジュールへの送信に使用可能であるかどうかが決定され、そうである場合には、ステップS3で、前記データが送信される。その代わりに、データが受信されてもよい。データは、まず、必ずグループのモジュールに送信されるが、そのデータが、グループの外部のモジュールにさらに送信されてもよい。データが使用可能でない場合には、ステップS4で、タイム・スロットが、送信なしで終わる。
[0025]
ステップS5で、タイム・スロットが終わった後に、またはタイム・スロット内の別の瞬間に、タイム・スロットの個数のカウントが、増分される。
[0026]
ステップS6で、カウントされた数が、所定の数を超えているかどうかを決定する。そうでない場合には、この方法は、ステップS2で継続する。
[0027]
カウントされた数が、所定の数を超えている場合には、ステップS7で、これがグループの他のモジュールに通知される。これは、たとえば信号またはメッセージによって通信されてもよい。
[0028]
ステップS8では、モジュールは、グループの他のモジュールが、所定の数が超えられていることを知らせ終えるまで待つ。
[0029]
グループの各他のモジュールが、それがそのタイム・スロット・サイクルを完了したことを通知し終えた場合に、この方法は、ステップS1から繰り返される。
[0030]
各モジュールが、他のモジュールのそれぞれからの、そのモジュールが第2動作状態であることの通知を有する必要があることは、必要ではない。モジュールのタイム・スロット・カウンタの初期化が、そのモジュールが直接に通信するモジュールからの通知に依存することが、十分である。たとえば、図4に示された4個のモジュールの直線アレイを検討されたい。この実施形態は、後続の通知依存性を有する。モジュールM1は、モジュールM2に通知し、モジュールM2は、モジュールM1およびM3に通知し、モジュールM3は、モジュールM2およびM4に通知し、モジュールM4は、モジュールM3に通知する。図4のシステムは、モジュールM3、M4のさらなるグループを有するシステムと考えることができ、ここで、グループM1、M2のサブセットM2のモジュールは、第2動作状態であるときにさらなるグループM3、M4のサブセットM3のモジュールに通知し、さらなるグループM3、M4のサブセットM3のモジュールは、第2動作状態であるときにグループM1、M2のサブセットM2のモジュールに通知する。たとえば、モジュールM1が比較的遅いクロックを有し、タイム・スロットの所定のカウントに達するのに基準クロックの10時間単位の処理時間を必要とし、他のモジュールが、同一の基準クロックの9時間単位だけを必要とすると仮定する。後続の表に、タイム・スロット・カウンタがこのシステム内で初期化される瞬間を示す。
[Table 1]
[0031]
この表では、モジュールM1が、10時間単位の後にその通知を与え、他のモジュールが、9時間単位の後に通知を与えたことがわかる。通知依存性に鑑みて、モジュールM2は、モジュールM1を待ち、これらの両方が、時刻10にそれらのタイム・スロット・カウンタを初期化する。M3およびM4は、時刻9に初期化する。それらの処理時間に鑑みて、これらのモジュールは、次の通知を完了2の時刻に与える。M1は、時刻20に終了される。M2は、モジュールM2の初期化と共に待っていたので、今や、時刻19に終了される。他の2つのモジュールは、時刻18に終了される。M1のスロット・カウンタは、時刻20に初期化される。M2のスロット・カウンタは、M1を待ち、やはり時刻20に初期化される。M3は、時刻18にそれ自体の通知を与えているが、M2からの通知をも受け取った時刻19にのみ、そのスロット・カウンタを初期化する。M4は、時刻18に完了され、それと同時にM3から通知を受け取っている。したがって、M4は、そのタイム・スロット・カウンタを時刻18に初期化する。完了3の行に、どの時刻に、モジュールが3回目に第2動作状態に達したかが示されている。ここで、モジュールM4が、そのタイム・スロット・カウンタを即座にリセットするのではなく、モジュールM4がそれでもモジュールM3からの通知を受け取らなければならないので、1時間単位を待つことがわかる。この形で、モジュールのそれぞれの間のデータ・トラフィックが同期化され、その結果、バッファ・オーバーフロー/アンダーフローが防がれる。
[0032]
本発明の保護の範囲が、本明細書で説明された実施形態に制限されないことに注意されたい。このシステムの諸部分は、ハードウェア、ソフトウェア、またはその組合せで実施されてもよい。また、本発明の保護の範囲は、添付の特許請求の範囲の参照符号によっては制限されない。単語「備える」および「有する」は、添付の特許請求の範囲で述べられた部分以外の部分を除外しない。要素の前の単語「a(n)」は、複数のこれらの要素を除外しない。本発明の一部を形成する手段は、専用ハードウェアの形またはプログラムされた汎用プロセッサの形のどちらで実施されてもよい。本発明は、各新規の特徴または特徴の組合せに存する。
Brief Description of Drawings
[0033]
[fig. 1] 本発明によるデータ処理システムの第1実施形態を示す図である。
[fig. 2] 本発明によるデータ処理システムの第2実施形態をより詳細に示す図である。
[fig. 3] 本発明による方法を示す図である。
[fig. 4] 本発明によるさらなる実施形態を示す図である。
Claims
[1]
少なくとも第1および第2のモジュールのグループを備えるデータ処理システムであって、各モジュールは、
データ処理ファシリティと、
前記モジュールから別のモジュールへのデータ送信をタイミング調整するクロックと、 データの送信に使用可能なタイム・スロットの個数をカウントするタイム・スロット・カウンタと、
を有し、
前記モジュールは、その動作状態でデータ送信がイネーブルされる、タイム・スロットの前記カウントされた個数が所定の数以下である第1動作状態と、その動作状態でデータ送信がディスエーブルされる、前記個数が前記所定の数を超えている第2動作状態とを有し、
各モジュールは、それが前記第2動作状態であるときを通知する通知ファシリティを有し、
前記データ処理システムは、他のすべてのモジュールが、それらが前記第2動作状態であることを通知し終えたかどうかを検出する検出ファシリティを有し、
前記モジュールは、前記モジュールが前記第2動作状態であり、前記他のモジュールのそれぞれが、それが前記第2動作状態であることを通知し終えたときに、前記タイム・スロット・カウンタをリセットする初期化ファシリティを有する
データ処理システム。
[2]
請求項1に記載のモジュールのさらなるグループを有し、前記グループのサブセットのモジュールは、それらが前記第2動作状態であるときに前記さらなるグループのサブセットのモジュールに通知し、前記さらなるグループのサブセットのモジュールは、それらが前記第2動作状態であるときに前記グループのサブセットのモジュールに通知する、請求項1に記載のシステム。
[3]
相互に独立したクロックを有する少なくとも第1および第2のモジュールのグループを備えるデータ処理システムを動作させる方法であって、モジュールごとに、
a.タイム・スロットの個数をカウントするカウンタを初期化するステップと、
b.各タイム・スロットで、データが別のモジュールへの送信に使用可能であるかどうかを決定し、使用可能である場合に、前記データを送信するステップと、
c.各タイム・スロットでタイム・スロットの個数のカウントを増分するステップと、
d.前記カウントされた個数が所定の数を超えていない場合に、前記方法をステップbから繰り返すステップと、
e.前記カウントされた個数が前記所定の数を超えている場合に、これを前記グループの他のモジュールに通知するステップと、
f.前記グループの前記他のモジュールが、前記所定の数が超えられたことを通知し終えるまで待つステップと、
g.前記方法をステップaから繰り返すステップと
を有する方法。
Drawings