(57)【要約】【課題】スレーブデバイスのグループが並列アクセスされる修正されたリング型トポロジを提供する。【解決手段】クラスタリングネットワークトポロジにおいてスレーブデバイスのグループは並列アクセスされ、このためリングに沿った待ち時間は、クラスタの個数に比例し、集積回路の個数には比例しない。クラスタのデバイスは、入力及び出力リングセグメントを共有し、これより入力セメントに到来するパケットは、クラスタ内の全デバイスによって受信され解釈される。1つのクラスタにおけるスレーブ同士が、潜在的にはコントローラの指令に従って、それらスレーブの高々1つがいつでも出力セグメントをアクティブに駆動することを確実にするように連携する。デバイスは、デバイスID、クラスタID又はこれらの組合せを通じてアドレッシングされうる。本発明はマルチチップモジュール実装及び垂直回路積層形態に適する。【選択図】図８
2014014160.tif 000002
【特許請求の範囲】
【請求項１】
クラスタリング構成で接続された複数のメモリモジュールを備えるメモリシステムであって、
入力および出力リングセグメントに相互接続されている複数のメモリモジュールとパケット通信を行うメモリコントローラを備え、
前記の入力および出力リングセグメントはリング型構成で相互接続され、
前記複数のメモリモジュールの少なくとも一部は、並列接続され、これにより、同じ入力リングセグメントおよび同じ出力リングセグメントを共有する複数のメモリモジュールからなるクラスタを形成し、
各クラスタは、同じ入力リングセグメントからのパケットが複数のスレーブメモリモジュールの少なくとも一部によって受信されるように、前記クラスタにおいて各メモリモジュールのために前記入力リングセグメントを制御するように構成されたマスタメモリモジュールとして指定された少なくとも１つのメモリモジュールを有する、メモリシステム。
【請求項２】
複数のスレーブメモリモジュールを備えるシステムであって、
共同でリングの一部を形成する少なくとも第１および第２のクラスタを備える複数のスレーブメモリモジュールと、
前記リング内で前記複数のスレーブメモリモジュールとパケット通信を行うコントローラメモリモジュールと、
を備え、
前記第２または第１のクラスタのいずれかは、前記第１または第２のクラスタに対する次のクラスタであり、
前記第２のクラスタは、前記リングにおいて少なくとも第１および第２のスレーブメモリモジュールを備え、
前記第２のクラスタの前記第１のスレーブメモリモジュールは、前記第２のクラスタの前記第２のスレーブメモリモジュールと並列に接続されており、
各クラスタは、同じ入力リングセグメントからのパケットが複数のスレーブメモリモジュールの少なくとも一部によって受信されるように、前記クラスタにおいて各メモリモジュールのために前記入力リングセグメントを制御するように構成されたマスタメモリモジュールとして指定された少なくとも１つのメモリモジュールを有する、システム。
【請求項３】
前記スレーブメモリモジュールは、メモリモジュールIDを使用して前記コントローラメモリモジュールによってアドレッシングされ、
前記メモリモジュールIDは、前記スレーブメモリモジュールに電力が供給されている間に、リセットされうるか、または再割り当てされうる、請求項2に記載のシステム。
【請求項４】
前記スレーブメモリモジュールは、クラスタIDとメモリモジュールIDとの組み合わせを使用して前記コントローラメモリモジュールによってアドレッシングされる請求項2に記載のシステム。
【請求項５】
前記メモリモジュールID、前記クラスタID、またはこれらの両方は、動作中にリセットされうるか、または再割り当てされうる請求項4に記載のシステム。
【請求項６】
前記クラスタが1つのクラスタマスタとして指定されている1つのメモリモジュールを備え、前記クラスタマスタは前記クラスタ内の高々1つのスレーブが接続先の前記出力リングセグメントを駆動するように前記クラスタのスレーブを調整する動作が可能である請求項1に記載のシステム。
【請求項７】
前記クラスタの前記スレーブは、前記出力リングセグメントを駆動するように特定のスレーブがイネーブルされていることを前記クラスタマスタに単線で伝達する請求項6に記載のシステム。
【請求項８】
前記クラスタの前記スレーブは、マルチソースシングルデスティネーション一芯導線上で前記クラスタマスタと通信する請求項6に記載のシステム。
【請求項９】
前記クラスタマスタは、前記クラスタ内のすべてのスレーブをターゲットとするコマンドのすべてを解釈し、これにより、どのスレーブがプライミングされているかを、前記スレーブから情報を直接受信することなく前記クラスタマスタが判定することができる請求項6に記載のシステム。
【請求項１０】
前記クラスタマスタは、どのスレーブがイネーブルされているかに関係なく前記入力リングセグメントから前記出力リングセグメントにコマンドパケットを回送するように動作可能である請求項6に記載のシステム。
【請求項１１】
前記クラスタマスタは、どのスレーブがイネーブルされているかに関係なく前記入力リングセグメントから前記出力リングセグメントにコマンドパケットを回送するように動作可能である請求項6に記載のシステム。
【請求項１２】
イネーブルされたメモリモジュールは、一時的クラスタマスタになり、前記入力リングセグメントから前記出力リングセグメントへコマンドパケットだけでなくデータパケットも回送する責任を有することになる請求項6に記載のシステム。
【請求項１３】
前記一時的マスタステータスは、イネーブルされなくなった後でも前記クラスタ内の他の何らかのスレーブがイネーブルされるようなときが来るまでイネーブルされたメモリモジュールに渡されたままである請求項12に記載のシステム。
【請求項１４】
1つのパケットの先頭は、前のパケットの末尾に少なくとも1/2サイクルだけあけて続き、これによりデータの転送が行われていない間にクラスタが前記クラスタの出力リングセグメントのいくつかの要素のうちのすべてを駆動する責任を移すことができる請求項1に記載のシステム。
【請求項１５】
クラスタ内の前記メモリモジュールは、ワイヤードAND型構成で前記出力リングセグメントに接続される請求項1に記載のシステム。
【請求項１６】
クラスタ内の前記メモリモジュールは、フォールトトレラントクラスタ内リングを形成する2つのクラスタ内出力および2つのクラスタ内入力を有する請求項1に記載のシステム。
【請求項１７】
前記スレーブメモリモジュールのうちの1つまたは複数は、マルチチップモジュール(MCM)の中に配置される請求項1に記載のシステム。
【請求項１８】
前記MCMは、コントローラメモリモジュールをさらに備える請求項17に記載のシステム。
【請求項１９】
前記MCMは、複数のレベルを持つ垂直方向に集積されたスタックとして実装され、
それぞれのクラスタの前記メモリモジュールは、異なるレベルに配置される
請求項17に記載のシステム。
【請求項２０】
前記MCMは、複数のレベルを持つ垂直方向に集積されたスタックとして実装され、
前記スタック内のすべての前記メモリモジュールは、単一クラスタを構成する
請求項17に記載のシステム。
【請求項２１】
前記スレーブメモリモジュールのうちの少なくともいくつかは、メモリモジュールである請求項2に記載のシステム。
【請求項２２】
ネットワーク通信の方法であって、
共通入力セグメントおよび共通出力セグメントを共有して、システムのリング内にスレーブメモリモジュールのそれぞれによってスレーブメモリモジュールのクラスタを形成するように並列接続された複数のスレーブメモリモジュールを備えるステップと、
各クラスタが、前記クラスタにおいて各メモリモジュールのために前記入力セグメントを制御するように構成されたマスタメモリモジュールとして指定された少なくとも１つのメモリモジュールを備えるステップと、
メモリモジュールID、クラスタID、またはこれらの組み合わせを使用して前記スレーブメモリモジュールをアドレッシングし、前記リングに沿ってコマンドまたはデータパケットの経路指定を行うステップとを含む方法。
【請求項２３】
前記スレーブメモリモジュールに電力が供給されている間に、クラスタID、メモリモジュールID、または両方をリセットまたは再割り当てするステップを含む請求項22に記載の方法。
【請求項２４】
クラスタ内のメモリモジュールを、そのクラスタの前記スレーブを調整して前記クラスタ内の高々1つのスレーブをそのクラスタによって共有される前記出力セグメントを駆動するようにイネーブルする動作が可能なクラスタマスタとして指定するステップを含む請求項22に記載の方法。
【請求項２５】
前記クラスタマスタは、どのスレーブがイネーブルされているかに関係なく前記入力セグメントから前記出力セグメントにコマンドパケットを回送するように動作可能である請求項24に記載の方法。
【請求項２６】
クラスタ内の高々1つのスレーブが前記共有される出力セグメントを駆動していることを確実にするステップを含む請求項22に記載の方法。
【請求項２７】
コントローラメモリモジュールがリング型構成で入力および出力リングセグメントに相互接続されている複数のスレーブメモリモジュールとパケット通信を行うタイプのネットワークトポロジの拡張方法であって、
同じ入力リングセグメントからのパケットが複数のスレーブメモリモジュールの少なくとも一部によって受信されるように、前記スレーブメモリモジュールの少なくとも一部を並列接続し、これにより、同じ入力および出力リングセグメントを共有するクラスタを形成するステップと、
前記コントローラメモリモジュールを使用し、メモリモジュールID、クラスタID、またはこれらの組み合わせを使用して前記スレーブメモリモジュールをアドレッシングするステップと、
前記クラスタにおいて各メモリモジュールのために前記入力リングセグメントを制御するようにマスタメモリモジュールとして各クラスタ内に少なくとも１つのメモリモジュールを構成するステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれている、2008年1月11日に出願した米国特許出願第12/013,148号の優先権を主張するものである。
【０００２】
本発明は、一般的にリング型のネットワークトポロジに関するものであり、具体的には、スレーブデバイスのグループに並列アクセスすることで待ち時間を短縮しつつフォールトトレランスおよび他の特性を改善する、クラスタリングトポロジと呼ばれる、修正リング型トポロジに関するものである。
【背景技術】
【０００３】
リング型トポロジ相互接続ネットワークでは、サブシステム内のすべてのデバイスは、リングまたはループ型構成に配列され、典型的にはすべての通信は、このリングに沿って一方向である。その結果、リング内のそれぞれのデバイスは、すぐ「前」にちょうど1つの他のデバイスおよびそれのすぐ「後」にちょうど1つのデバイスを有する。
【０００４】
多くのリング型トポロジネットワークでは、リングは、物理的にも、また電気的にも、そのリングの中のそれぞれのデバイスによって切断される。これらのネットワークでは、リングそれ自体は、リング内のデバイス同士を接続する多数のリングセグメントで構成される。セグメントの個数は、リング内のデバイスの個数に等しい。それぞれのセグメント上の通信は、一方向であり、それぞれ、ちょうど1つのデバイスが情報をそのセグメント上に送るドライバ端とちょうど1つのデバイスが送り側デバイスから情報を受け取る1つのレシーバ端を有する。リング上のデバイスの観点からすると、デバイスが情報を受け取るリングのセグメントは、その入力セグメントと呼ばれ、デバイスが情報を送り出すセグメントは、その出力セグメントと呼ばれる。
【０００５】
リング内の1つのデバイスが、それがマスタデバイスであるという点で特別なデバイスであることは典型的である。これは、多くの場合、コントローラと同義語である。例えば、そのようなリングトポロジ相互接続部から構成されるメモリサブシステムでは、マスタまたはコントローラは、典型的には、リードコマンド、ライトコマンド、および他のコマンドをその制御下でリング上のメモリに発行することと、リングに沿ってデータ通信を調整することの両方の責任を有する。リング内の他のデバイスは、スレーブであり、典型的にはメモリであるが、これに限られるわけではない。これらのスレーブは、リング上でコントローラから送信されたコマンドに応答し、リードコマンドおよび他のコマンドの場合に、これもまたリングを介して、コントローラにデータを送り返す。一般的に、リング上の通信のタイミングは、コントローラによって決定され、スレーブ側で自由に開始することはできない。
【０００６】
リングトポロジは、概念的に単純であり、一般的に拡張性があり、デバイス1つ当たりの端子数が少なくて済むため普及している。また、2地点間通信のみが使用されるので、信号品位およびセグメント長の問題は、他の多くの相互接続トポロジの場合に比べてかなり扱いやすい。しかし、このクラスのリング型トポロジ相互接続には明白な著しい欠点が3つあり、これらは待ち時間、故障耐性、および消費電力に関係している。
【０００７】
待ち時間に関しては、このクラスのすべてのネットワークにおいて、コントローラからアクセスされるデバイスに向かい、そしてコントローラに戻る経路のみが、リング内の他のすべてのデバイスを通る。そのようなものとして、スレーブにアクセスし、スレーブにコマンドを送り、データをコントローラに送り返すことによって応答する場合、オペレーションの待ち時間は、スレーブ内のオペレーションの固有待ち時間とリングに沿った通信待ち時間の２つの主要要素に分けられる。リングは、デバイスのそれぞれを通るので、これらのデバイスはそれぞれ、リングに沿って流れるコマンドおよびデータに対しある程度のわずかな待ち時間を生じさせる。それに加えて、リングセグメントそれ自体も、非自明な量を通信待ち時間に加える可能性がある。
【０００８】
すると、このクラスのリング型トポロジ相互接続の固有特性は、リングに沿った総待ち時間がデバイスを通る際のすべての待ち時間とそれらのデバイスを接続するリングセグメントの待ち時間の総和であることである。リングに沿った総待ち時間が重要であるのは、コントローラからデバイスへ、そして戻る際の総スレーブリードアクセスタイムが総リング待ち時間とスレーブデバイスの内部リードアクセス待ち時間の総和であるからである。総リング待ち時間の短縮は、総アクセス待ち時間がシステムレベルの性能に関わる大きな要素である状況に対して重要な前提条件である。したがって、いくつかの知られている例では、リング型トポロジネットワークは、多数のデバイスをサポートすることができることがあるけれども、待ち時間だけをとってみれば、かなりの数のデバイスを伴うすべてのアプリケーションにとって実用的とは言えないことがある。
【０００９】
リング型トポロジネットワークの他の大きな問題として、これらのネットワークが非フォールトトレラントであることが挙げられる。リング上のデバイスまたはセグメントのどれかが故障した場合、そのリングに沿った通信は、他のデバイスがまだ完全に機能しているとしても不可能になる。リング型トポロジネットワークのこの特徴は、いくつかのシステム環境では重大であるが、他のシステム環境では重大でない。しかし、特にメモリシステムの場合、単一の不良デバイスが存在している場合でもメモリサブシステムは完璧に動作することができるという要求条件を課すシステムアプリケーションが数多くある。
【００１０】
リング型トポロジネットワークの第3の重大な問題は、リング内のすべてのデバイスがネットワーク上でそれぞれのパケットを通信するために電力を消費するという点である。信号伝達技術によっては、リング内のすべてのスレーブが、コマンドパケット毎に(レシーバに関係なく)、またリードデータパケット毎に(発信元に関係なく)電力を消費する。対照的に、いくつかの他のネットワーク技術では、スレーブデバイスは、コントローラにリードデータを送り返すときのみ電力を消費する。したがって、2地点間通信であるとして、送信されるビット毎にスレーブによって消費される電力が小さい場合があるとしても、リング型トポロジネットワークの総電力効率は、いくつかの非リング型トポロジの代替ネットワークに比べて著しく悪化する可能性がある。
【００１１】
リング型トポロジネットワークのネガティブな特性のいくつかを緩和または回避する試みがすでになされている。これらの努力は、4つのカテゴリに分けられる。第1のカテゴリでは、総待ち時間が、デバイス毎の待ち時間をできる限り小さく保つことによって最小にされる。これは、米国特許第5,778,419号で、またRamLinkメモリインターフェース(スケーラブルコヒーレントインターフェース(SCI)信号伝達(RamLink)に基づく高帯域メモリインターフェースのIEEE標準、IEEE標準1596.4-1996)において開示されているアプローチである。他のアプローチでは、リング内のデバイスの個数を人為的に制限することによってリングに沿った総待ち時間を制限する。これは、米国特許第5,778,419号において明らかにされており、リング内のデバイスの個数は、５(1つのマスタと4つのスレーブ)に制限されている。
【００１２】
第3の技術は、リングの階層を形成するものであり、一次リング(つまり、マスタ全体によって制御されるリング)上のデバイスのそれぞれは、スレーブのサブリングに対するマスタとして機能するエージェントである(図1を参照)。特定のスレーブをターゲットとするコマンドが、該当するエージェントによってインターセプトされ、ターゲットにされているスレーブを含む単一の特定のサブリング上でいくつかのコマンドに翻訳される。これらの欠点に対処する第4の方法は、同様に非リングベースデバイスを制御するエージェントのリングを備える方法である。例えば、図2では、それぞれのエージェントが、従来の並列メモリサブシステムを制御する。
【００１３】
これらの以前の解決策では、リング型トポロジの内在する利点を完全には活かすことができないか、または上述のリング型トポロジネットワークの問題を適切に解決することができない。例えば、n個のスレーブを備えるシステムに対する通信待ち時間を2×sqrt(n)にエージェント内の追加スケジューリング遅延を加えた値にまで短縮するためにリング型トポロジのリングを計算した。スレーブ毎の遅延を短縮することで、比例定数が小さくなるが、総通信待ち時間は、それでも、リング内のデバイスの数に比例する。リング内のデバイスの個数を小さな数値に制限することで、総通信待ち時間に上限が定められるが、より大きなシステムにおける相互接続の有用性も制限される。
【００１４】
リング型ネットワークの性能を改善するいくつかのアプローチでは、マルチチップモジュールを使用する必要がある。マルチチップモジュールは、マルチチップモジュールが実装されている基板またはキャリアへの一般的な一組の信号端子と一緒に複数の集積回路が収納されているパッケージング構造である。より正確な定義は、「発明を実施するための形態」の節で説明されている。リング型トポロジ相互接続へのマルチチップモジュール内の集積回路の直接的応用では、マルチチップモジュール内のすべてのデバイスをリングにシリアル接続する。この構成のトポロジおよび待ち時間は、あたかもそれぞれの集積回路がそれ専用のパッケージ内に収められ、パッケージはリングにシリアル接続されているかのようである。その結果が、図3に示されているものに相当するパッケージ断面であり、そこでは、リンクが金属線上の最下位デバイス内に入り、最下位デバイスを出て、一段上のデバイスに入り、というようにしてスタックを上り、金属線が一番上のデバイスをパッケージに接続してアウトバウンドリングセグメントを形成することで終わることがわかる。
【００１５】
図3の構成は、いくつかの理由から理想的なものとは言えない。第1に、これらのデバイスは単一パッケージのように見えるけれども、論理的には5つのデバイスとして存在し、待ち時間もデバイス5個分ある。第2に、デバイスの対向側での受信セグメントと送信セグメントのこのような特定の配列は、都合がよくない場合がある。一般に、n個のデバイスからなるマルチチップモジュールは、物理的には1つのデバイスとして存在するが、論理的にはn個のデバイスとして存在する。この構成では、マルチチップモジュールアプローチが利用されない大きなリングの制限のいくつかに対処するために、マルチチップパッケージ内の集積回路の近接性を適切に活かすことができない。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】米国特許出願第12/013,148号明細書
【特許文献２】米国特許第5,778,419号明細書
【特許文献３】米国仮特許出願第60/902,003号明細書
【非特許文献】
【００１７】
【非特許文献１】IEEE標準1596.4-1996
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明の実施形態は、スレーブデバイスのグループ(クラスタと称される)が並列アクセスされる、クラスタリングトポロジと称される修正されたリング型トポロジを対象とするものである。クラスタは、いくつかの点で、リング内の単一ノードとして振る舞う。この構成のおかげで、リングに沿った待ち時間は、クラスタの個数に比例し、集積回路の個数には比例しない。データ通信に関わる消費電力は、相当する従来のリング型ネットワークよりも小さく、実施形態は高度のフォールトトレランスに対応できる。トポロジ相互接続は、マルチチップモジュールおよび/または個別にパッケージングされた集積回路の使用にうまく適合される。
【課題を解決するための手段】
【００１９】
本発明の実施形態によれば、デバイスのグループは並列接続され、入力リングセグメントおよび出力リングセグメントを共有する。クラスタは、1つまたは複数のデバイスを含むが、実際には、1クラスタ当たりのデバイスの個数は、比較的少ない。多数の開示されている実施形態において、入力セグメントに到来するパケットは、クラスタ内のすべてのデバイスによって受信され、解釈される。他の実施形態では、受信パケットの入力および解釈を行わないように、1クラスタにつきどのスレーブもスリープ状態もしくは他の何らか形でのディセーブル状態でないか、いくつかのスレーブがスリープ状態もしくは他の何らか形でのディセーブル状態であるか、1つのスレーブを除くすべてのスレーブがスリープ状態もしくは他の何らか形でのディセーブル状態である。とにかく、すべての実施形態において、1つのクラスタにおけるスレーブ同士が、潜在的にはコントローラの指令に従って、それらのスレーブのうちの高々1つがいつでも出力セグメントをアクティブに駆動していることを確実にするように連携する。
【００２０】
本発明の実施形態によるクラスタリングネットワークトポロジは、リング構成をとる入力および出力セグメントに相互接続されている複数のスレーブデバイスとパケット通信を行うコントローラデバイスを備え、それらのスレーブデバイスのうちの少なくとも一部は並列接続され、同じ入力および出力セグメントを共有する1つのクラスタを形成する。少なくとも1つの実施形態において、クラスタIDとデバイスIDの組み合わせによってアドレッシングされるデバイスでは、これにより、必要なビットの個数および関連する待ち時間が劇的に低減される。
【００２１】
これらのクラスタのうちの少なくとも1つにおいて、クラスタマスタとして指定されたデバイスは、クラスタ内の高々1つのスレーブが出力セグメントを駆動しているようにそのクラスタのスレーブを調整する動作をすることが可能である。クラスタのスレーブは、特定のスレーブが入力セグメントから出力セグメントへのデータ転送についてプライミングされていることを単一線上でクラスタマスタに知らせることができる。例えば、クラスタのスレーブは、単一マルチソースシングルデスティネーション導線上でクラスタマスタと通信することができる。あるいは、クラスタマスタが、クラスタ内のすべてのスレーブをターゲットとするコマンドのすべてを解釈し、これにより、どのスレーブがプライミングされているかを、スレーブから情報を直接受信することなくクラスタマスタが判定することができる。いずれにせよ、クラスタマスタは、どのスレーブ(もしあれば)がプライミングされているかに関係なく入力セグメントから出力セグメントにコマンドパケットを回送するように動作可能である。
【００２２】
任意の適切な形態またはインテグレーションを利用することができるが、本発明のいくつかの実施形態は、マルチチップモジュール実装を活用することに適しており、その個別のクラスタ内における垂直積層の他の形態をそのスタック内の異なるレベルに割り当てることができる。これにより、入力セグメントはスタックの片側にあるすべてのデバイスに到来し、出力セグメントはスタックの他方の側から出ることができる。あるいは、金属線で、一方のデバイス上の入力セグメントボンディングパッドを縦方向に隣接するデバイス上のボンディングパッドに接続し、またスタックの出力セグメント側の相当する一組の接続部と接続することができる。本発明のネットワーク内のさまざまなデバイスは、メモリデバイスであってもよいが、本発明はこれに限定されるわけではない。
【図面の簡単な説明】
【００２３】
次に、例として、付属の図面を参照する。類似の、または同じ参照番号は、異なる図中で、類似のコンポーネントを示すために使用されている場合がある。
【図１】従来技術のトポロジによる複数のリングのうちの1つのリングの図である。
【図２】従来技術のネットワークトポロジによる複数のサブシステムからなるリングの図である。
【図３】従来技術によるリング型トポロジネットワークがそれぞれのデバイス内を通過するマルチチップモジュールの断面図である。
【図４】デバイスの1つがコントローラまたはマスタであるリング型トポロジ相互接続ネットワークの一例を示す図である。
【図５】入力および出力セグメントに関連付けられている信号を示す、リング型トポロジネットワークの他の図である。
【図６】図5のリング型ネットワークのスレーブデバイスに流れ込み、次いで流れ出るコマンドパケットおよびデータパケットのタイミング図である。
【図７】コマンドパケットの内部構造の図である。
【図８】例示的な一実施形態のネットワークトポロジによる複数のクラスタからなるリングの第1の例を示す図である。
【図９】図8のと異なるクラスタ内通信信号配列構成を有する複数のクラスタからなるリングの第2の例を示す図である。
【図１０】一時的クラスタマスタステータスのアービトレーションを行うために使用されるクラスタ内リングを、デバイスIDの通信にどのように使用されるかを示す図である。
【図１１Ａ】デバイスが垂直方向に積み重ねられ、スタック内のすべてのデバイスがクラスタリングネットワーク内の単一のクラスタを形成するマルチチップモジュールの断面図である。
【図１１Ｂ】デバイスが垂直方向に積み重ねられ、スタック内のすべてのデバイスがクラスタリングネットワーク内の単一のクラスタを形成する代替マルチチップモジュールの断面図である。
【図１２】少なくとも1つの例によるクラスタリングトポロジ相互接続ネットワーク内のクラスタの図である。
【図１３】すでに例示されているリング型ネットワークの単一スレーブの図である。
【図１４】第1または第2の例と異なるクラスタ内通信信号配列構成を有する複数のクラスタからなるリングの第3の例を示す図である。
【発明を実施するための形態】
【００２４】
本発明の実施形態は、相互接続の有用性または有効性を制限しうる、多数のデバイスがリング内に含まれているときにリング型トポロジ相互接続だと長い待ち時間が生じる可能性があるという問題を解決する。本発明の実施形態は、既存のリング型ネットワークトポロジに関わる消費電力の多さおよびフォールトトレランスの低さに関連する問題も解決する。
【００２５】
本発明の実施形態は、リング内の1つのデバイスがコントローラであるリング型トポロジ電子回路相互接続に関係するが、本発明は、これに限定されず、リング型トポロジネットワークの他の変更形態ならびに他のシステムおよびサブシステムタイプにも等しく応用される。本明細書では、「マスタ」および「コントローラ」という用語は、同義語として使用される。同様に、スレーブおよびメモリも、本発明の実施形態をもっぱらメモリデバイスであるスレーブデバイスに限定することなく同義語として使用される。本発明は、すべての、または一部の非メモリスレーブを含むリングにも等しく応用されることは理解される。それに加えて、本明細書では、「相互接続」、「ネットワーク」、および「相互接続ネットワーク」も同義語として使用され、素線の任意の集合体(全体としてまたは部分的に1つまたは複数のバスにまとめられている)が電子回路または相当するデバイスの集合体を直接的にまたは間接的に接続することを意味する。
【００２６】
本発明の実施形態は、電子回路システムにおけるマルチチップモジュールの使用にも関係する。多くの場合において、複数のシリコン片を一緒にパッケージングして単一基板またはパッケージに仕上げる。これは、シリコン片が互いの上に置かれてスタックを形成する垂直方向、またはシリコン片同士が単一パッケージまたはモジュール内で横に並べて置かれる水平方向で、一般的になされる。変更形態は、複数のシリコン片(またはより一般的には、電子コンポーネントが少なくとも1つの表面上に製造された半導体材料の薄片)が、個別にパッケージングされ、次いで、パッケージが、スタック内で垂直方向に実装されるものである。少なくとも複数の例示的な実施形態は、これらすべての事例に適用されるが、開示されている実施形態は、一緒にパッケージングされたシリコン片のスタックに関して説明されている。
【００２７】
本開示では、「マルチチップモジュール」という表現は、すべてのそのようなパッケージングまたは実装技術に関して一般的な用語となるように定義されており、そのような構造の任意の1つのスタイルまたは種類に限定されない。また、本開示では、集積回路は、限定はしないが、素線、トランジスタ、ダイオード、およびセンサなどの電子コンポーネントが材料の1つまたは複数の表面内に、または1つまたは複数の表面上に組み立てられたシリコン片または他の半導体材料片であると定義される。デバイスおよび集積回路という用語は、本明細書では同義語として使用される。
【００２８】
「モジュール」という用語は、集積回路が上にまたは中に実装され、それらの集積回路をモジュールそれ自体が最終的に実装される媒体上の導線に接続しやすくするパッケージまたは基板または同様の構造物であると定義される。モジュールそれ自体は、相互接続以外の他の構造を含む場合も、含まない場合もあり、またそれに集積回路以外の他のコンポーネントが実装される場合も、実装されない場合もある。いくつかのマルチチップモジュールでは、金属線は、集積回路を互いに接続し、および/またはモジュールそれ自体に接続する。他の場合には、集積回路は、モジュールの一部である導線への直接接続を行う。例えば、マルチチップモジュールの1つの一般的な形態は、複数の集積回路が互いの上に実装されて垂直スタックを形成し、金属線が集積回路をモジュール内の導線に接続し、また集積回路同士を接続する1つのパッケージである。
【００２９】
次に、図4を参照すると、例示的なリング型トポロジ相互接続ネットワーク400の図が示されている。ネットワーク400内では、情報は一方向のリングに沿って伝えられ、デバイスからデバイスへと流れる。この場合、図は、デバイスのうちの1つのデバイスが、メモリまたは他のメモリまたは非メモリスレーブデバイス411〜415にアクセスするコントローラまたはマスタデバイス410であるリングを示している。アドレス、データ、および制御情報はすべて、リングに沿って同じ方向に流れ、典型的には同じタイミングを使用し、また典型的には一部は同じ導線上で流れる。図5は、そのような1つのリング型トポロジネットワーク500の信号を示している。示されている例では、デバイス510〜513同士を接続して1つのリングにするリングのセグメントは、4本の導線からなるデータ経路と2つのストローブ信号を含む。情報は、パケット単位でリングに沿って流れる。図4は、リング内のそれぞれのスレーブが一意的なアドレスを有することも示している。示されている事例では、スレーブアドレスは、0から始まり、第1のスレーブがコントローラからパケットを受信し、アドレスはそこから最後のスレーブまで連続的に増える。
【００３０】
例示されているネットワークの少なくともいくつかの場合において、パケットは、スレーブデバイスで発信しコントローラへと逆方向に流れるデータまたはコントローラで発信し、1つまたは複数のスレーブデバイスへと流れるコマンドパケットのいずれかを含む。これら2種類のパケットは、それぞれ、リードデータパケットおよびコマンドパケットと称される。コマンドパケットは、デバイスアドレスと1つまたは複数のスレーブが実行するコマンドとを含む。コマンドパケットのデバイスアドレス部分は、パケットの1バイト目であり、これは、どの1つまたは複数のデバイスがコマンドを実行すべきかを指定する。コマンドの意味に応じて、コマンドパケットの残り部分は、ターゲットデバイス内の何らかのデータストレージのアドレスおよび場合によっては何らかのデータも含むことができる。
【００３１】
例示されているネットワークの少なくともいくつかの場合において、データは、共通クロックのそれぞれのエッジで送信される。4本のデータ線があるので、クロック周期毎に1バイトが送信される。図6は、2つのストローブと単一スレーブ内へ流れ込み、単一スレーブから流れ出るコマンドまたはデータパケットとの間の関係を示している。コマンドパケットがスレーブによって受信されている場合、コマンドストローブ入力(CSI)信号がパケットの先頭と末尾を画定する。データパケットが受信されている場合、受信パケットは、データストローブ入力(DSI)によって画定される。
【００３２】
データパケットとコマンドパケットの両方について、それぞれのデバイスを通る際の待ち時間は、数クロックサイクルであり、デバイスの設計の一部として固定される可能性が高い-必ずしも固定されない-が、リング上の異なるデバイスは、異なるフロースルー待ち時間を有することがある。図6の例で暗示的に示されているスレーブは、コマンドおよびデータパケットが両方とも入力セグメント上にラッチされて1サイクルまるまる経過した後に出力セグメントデータライン(Q0..3)上に現れるので中を通る1サイクルの待ち時間を示している。出力セグメントでは、スレーブは、それに応じてコマンドストローブ出力およびデータストローブ出力を駆動することによって出力データライン上のパケットを画定する。
【００３３】
スレーブデバイスは、コマンドパケットでコマンドを送信される。図7は、図6に示されているコマンドパケットに応答することが可能であるコマンドパケットの構造を示している。1バイト目は、コマンドを実行すべきスレーブのデバイスアドレスを含む。2バイト目は、1バイトコマンドである。その後のバイトの個数と意味は、指定された実際のコマンドに依存する。コントローラが、その後のバイトが2バイト目で指定された特定のコマンドに依存すると判断するからである。特に、コントローラ側でデータをスレーブのストレージに書き込むことを望んでいる場合、その後のバイトは、そのストレージのスレーブローカルアドレスとライトデータを含む。図7に例示されているコマンドパケットは、最上位ニブル先頭で送信される。第1の立ち上がりエッジで、ビット4、5、6、および7である最上位ニブルが、データラインD0、D1、D2、およびD3上で送信される。第1のクロックサイクルの第2の半分において、ビット0、1、2、および3である1バイト目の最下位ニブルが、対応するデータライン上で送信される。同じパターンが、コマンドのその後のすべてのバイトについて続く。図7の3つのコマンド固有バイトに示されているような8ビットを超えるアドレスの場合、ニブルおよびバイトのシーケンスは、最下位バイト先頭および最上位ニブル先頭に対応する。
【００３４】
通信によりスレーブからコントローラにあらゆる種類のデータを送り返すために、データパケットが使用されうる。コントローラは、スレーブがデータを返すようにしたい場合、データパケットの到来に対してスレーブをプライミングするリードデータ転送コマンドを送信する。リードデータ転送コマンドは、コントローラがスレーブに返してもらいたいデータを示す。コントローラは、要求データを受信する用意ができたら、任意のデータを中に入れてリングの下りへデータパケットを送信する。データパケットの先頭および末尾は、データストローブ信号上の立ち上がりエッジおよび立ち下がりエッジで示される(それに対応してCSOおよびCSI)。プライミングされたスレーブは、リードデータパケットの到来を検出すると、パケットの受信データを無視し、それを出力セグメント上に複製するのではなく、代わりにデータによってすでに要求されているデータを駆動する。少なくともいくつかの例では、転送すべきデータの量は、リードデータ転送コマンドで指定されないが、代わりに、データストローブ入力/出力の立ち上がりエッジと立ち下がりエッジとの間のクロックサイクルの数によって指定される。
【００３５】
本発明の実施形態によるクラスタリングトポロジネットワークでは、デバイスは並列接続され、入力リングセグメントおよび出力リングセグメントを共有する。クラスタは、1つまたは複数のデバイスを含むが、実際には、1クラスタ当たりのデバイスの個数は、比較的少ない。多数の実施形態において、入力セグメントに到来するパケットは、クラスタ内のすべてのデバイスによって受信され、解釈される。他の実施形態では、受信パケットの入力および解釈を行わないように、1クラスタにつきどのスレーブもスリープ状態もしくは他の何らか形でのディセーブル状態でないか、いくつかのスレーブがスリープ状態もしくは他の何らか形でのディセーブル状態であるか、1つのスレーブを除くすべてのスレーブがスリープ状態もしくは他の何らか形でのディセーブル状態である。一般に、1つのクラスタにおけるスレーブ同士が、潜在的にはコントローラの指令に従って、それらのスレーブのうちの高々1つがいつでも出力セグメントをアクティブに駆動していることを確実にするように連携する。本明細書で開示されている本発明の実施形態の異なる例は、もっぱらクラスタのデバイスがこれを達成するためにどのように連携するかに応じて変わる。
【００３６】
図8は、1つのコントローラ810と4つのクラスタ811〜814のリングを示す例示的なクラスタリングネットワーク800の図である。クラスタは、中に、それぞれ4つのスレーブ820〜823、3つのスレーブ830〜832、1つのスレーブ840、および2つのスレーブ850〜815を有しているが、本発明は、特定の範囲のクラスタまたは1クラスタ当たりのスレーブに限定されない。少なくとも1つの実施形態では、クラスタには、一意的なクラスタIDが与えられる。図8の例において、第1のクラスタはクラスタID 0を有し、その後のクラスタは、1、2、および3のクラスタIDを有する。それぞれのクラスタ内において、デバイスにも一意的なデバイスIDが与えられる。再び、この例において、クラスタ内の第1のスレーブは、0のデバイスIDを与えられ、その後スレーブ(もしあれば)は、1、2、3などのデバイスIDを与えられる。本発明のすべての実施形態において、「デバイス」という単語は、「ディスクリート」であることを意味するものと解釈すべきではないことに留意されたい。さまざまな実施形態が、ディスクリートデバイスで実装されうるが、「デバイス」は、同じ集積回路上に組み込むこともできる。
【００３７】
リング内のそれぞれのデバイスは、これにより、そのクラスタIDとそのデバイスIDの合併によって一意に識別される。例えば、1クラスタ当たり最大16個までのスレーブからなる最大16個までのクラスタをサポートするネットワークは、4ビットクラスタIDフィールドと4ビットデバイスIDフィールドとで構成される1バイトデバイスアドレスフィールドを有することが可能であった。この例では、リング内のそれぞれのデバイスが、1サイクルのフロースルー待ち時間を有していた場合、完全に満たされているネットワークだと、通信待ち時間は16サイクルとなる。それとは対照的に、同じ個数のデバイスを含む、またフロースルー待ち時間が1である、図4のリング型トポロジネットワークだと、通信待ち時間は256サイクルとなる。このようにして、クラスタリングトポロジを使用すると、待ち時間を直線的に悪化させることなくさらに多くのデバイスをシステムに持たせることができる。
【００３８】
図8の実施形態において、デバイスIDが0であるそれぞれのクラスタ内のデバイスは、クラスタマスタと称される(クラスタマスタを識別するために、他の何らかのデバイスIDを使用することも可能であることは理解されるであろう)。クラスタマスタの役割は、クラスタ内の高々1つのスレーブがアウトバウンドセグメントを駆動しているようにそのクラスタのスレーブを調整することである。この目的のために、クラスタ内のそれぞれの非クラスタマスタスレーブからクラスタのクラスタマスタへの特別な線がありうる。この線は、特定のスレーブがプライミングされていることをクラスタマスタに伝えるために使用される。クラスタマスタは、データパケットが受信され、クラスタ内の他のスレーブがプライミングされている場合を除き出力セグメント(ストローブとさらには出力データバス)を駆動する責任を有する。この状況において、クラスタマスタは、データストローブ出力信号を駆動するが、プライミングされたスレーブがそのリードデータをデータパケット内に挿入できるようにデータ出力信号を放出する(つまり、その出力ドライバが高インピーダンス状態に入る)。
【００３９】
他の実施形態では、一芯導線でクラスタ内のすべてのスレーブを接続する。このような一実施形態では、リング全体の中の高々1つのスレーブを一度にプライミングすることができ、したがって1クラスタ当たり高々1つのプライミングされたスレーブがありうるという条件が成り立つ。したがって、単一のマルチソースシングルデスティネーション導線(n:1通信とも称される)を使用して、スレーブがプライミングされていることをマスタに指示することができる。
【００４０】
さらに他の実施形態では、クラスタマスタは、クラスタ内の他のスレーブがプライミングされる時期を知り、したがって、クラスタ内の他のスレーブから、それらが個別にプライミングされるかどうかの指示を受け取る必要がないように、そのクラスタ内のすべてのスレーブをターゲットとするコマンドのすべてを解釈する。この実施形態は、クラスタマスタデバイスがクラスタ内の他のすべてのスレーブのコマンドセットをアプリオリに知っている状況において有益である場合がある。これは、確かに、同種クラスタではそうであるが、一緒に結合されて1つのクラスタにされたデバイスが完全に異なる種類のもの、または同じ種類だが異なるバージョンのものである異種クラスタではあまりありえそうにない。
【００４１】
上述の実施形態のすべてにおいて、プライミングされたスレーブは、それがプライミングされ、データパケットが到来したときに、データストローブ出力信号だけでなくデータ出力信号をも駆動する責任を有するものとすることもできる。しかし、クラスタマスタは、どのスレーブ(もしあれば)がプライミングされるかに関係なくクラスタの入力セグメントからその出力セグメントにコマンドパケットを回送する責任を依然として有する。
【００４２】
実施形態の他の相当するグループにおいて、プライミングされたデバイスは、一時的マスタになり、リードデータをデータパケット内に現在挿入しているかどうかに関係なく、入力セグメントから出力セグメントにコマンドパケットだけでなくデータパケットも回送する責任を有することになる。クラスタマスタは、プライミングされたデバイスがもはやプライミングされなくなったときにクラスタのデバイス0に戻ることができる。ネットワークプロトコルの詳細に応じて、これは、データパケットの末尾にあるか、プライミングされたスレーブデバイスがリードデータを挿入したデータパケットの末尾の後の新しいコマンドパケットの先頭にあるか、または他の何らかの条件とすることが可能である。これが非プライミング状態に戻ることは、すでに説明されている方法のどれかによってクラスタマスタに伝えられるか、またはクラスタマスタによって暗黙のうちに理解されうる。
【００４３】
他の代替形態において、一時的マスタステータスは、プライミングされなくなった後でもプライミングされたデバイスに渡されたままであり、クラスタ内の他の何らかのスレーブがプライミングされるときが来るまでそのままである。そのときが来たら、一時的マスタステータスは、新規にプライミングされたデバイスに移され、クラスタ内の他の何らかのデバイスがプライミングされるまでそのデバイスに渡されたままになる。この一組の実施形態において、プライミングされたステータスの通信は、一芯導線のリングを使って、または共有線によって行うことができる。前者の場合には、新規にプライミングされたデバイスは、クラスタ内一芯導線リングを下って立ち上がりエッジを送る(図9を参照)。リンク内のそれぞれのデバイスは、その立ち上がりエッジをクラスタ内リング内の次のスレーブに回送する。その立ち上がりエッジが現在の一時的マスタに達したら、一時的クラスタマスタステータスを放棄し、その立ち上がりエッジをクラスタ内の次のスレーブに回送する。立ち上がりエッジが新規にプライミングされたスレーブに戻った場合、これは、現在では、一時的クラスタマスタステータスを有すること、および現在では、コマンドおよびデータパケットをクラスタの出力セグメントに回送する責任を有することは確実である。プライミングされたステータスおよび一時的クラスタマスタステータスの伝達およびアービトレーションを行うための他の信号伝達規約および相互接続トポロジは、当業者には明らかなものであろう。
【００４４】
少なくとも1つの実施形態では、1つのパケットの先頭は、その前のパケットの末尾に少なくとも1/2サイクルだけあけて続く。このギャップがあることで、データが転送されていない間にクラスタがクラスタの出力セグメントのいくつかの要素のすべてを駆動する責任を移す機会が必ず生じる。
【００４５】
あるいは、アウトバウンドセグメントで使用される信号伝達技術は、ワイヤードAND型である。この種類の信号伝達技術では、複数のデバイスが信号を駆動する場合、受信された値は2つの駆動値の論理ANDである。例えば、外部プルアップ抵抗を備えるオープンコレクタドライバは、ワイヤードAND信号伝達技術の一例であり、2つの駆動デバイスのいずれかが出力信号をLowレベルに引き下げた場合、受信値はLowレベルとなる。他のワイヤードANDおよびそれと対をなすワイヤードOR信号伝達技術は、当業者によく知られている。
【００４６】
これらの実施形態では、クラスタマスタは、出力セグメントを連続的に駆動し、図8のネットワークの場合とまったく同様に、受信コマンドおよびデータパケットを出力セグメントにコピーする。非クラスタマスタスレーブは、リードデータを送信セグメントのデータ出力ライン上に送り出し、コントローラによってそこに置かれたデータを上書きするだけである。コントローラは、データパケット内のデータとプライミングされたスレーブからのリードデータとの論理ANDをとったときに、コントローラに到達する結果データが、正確に、プライミングされたデバイスからのリードデータとなるようにすべての送信データパケットを1で埋める。スレーブは、クラスタ内の相手と通信する必要はない。それらがクラスタマスタであるかないかだけを認識すればよい。他のワイヤード型信号伝達技術を使用する相当する実施形態では、コントローラからのアウトバウンドデータパケットに挿入される初期値は、信号伝達技術によって実装される論理関数の恒等値で埋められる。
【００４７】
すべての実施形態において、リング内のそれぞれのデバイスは、アドレスによって一意に識別される。少なくとも1つの実施形態において、上述のように、スレーブは、それぞれのクラスタ内で一意的であるデバイスIDを有する。少なくとも1つの実施形態では、それぞれのスレーブは、専用のID入力ライン(本数はクラスタIDとデバイスIDの合併におけるビットの数に等しい)上の電圧を感知することによってそのクラスタIDおよびデバイスIDを決定する。
【００４８】
デバイスIDは、ディジーチェーンでクラスタ内のデバイスのそれぞれを通るリセット信号を利用することによってリセット後にセットできることに留意されたい。すべてのスレーブは、リセット入力信号およびリセット出力信号の両方を有する。クラスタマスタスレーブのリセット入力は、大域的システムリセットに接続することができる。それぞれのクラスタマスタのリセット出力信号は、1のデバイスIDで終わるそれらの各クラスタ内のスレーブのリセット入力信号に接続され、以下同様に接続することができる。リングサブシステムは、リセットの単純なHighからLowへの遷移でリセット状態から出る。それぞれのクラスタ内の第1のデバイスは、リセット入力上のその単純な単一遷移を、それが対応するクラスタマスタであること、およびそのデバイスIDが0であることの指標として認識する。次いで、それぞれのクラスタマスタは、HighからLowへ、LowからHighへ、そして再びHighからLowへの一連の3つの遷移でリセット出力をデアサートする。次のデバイスは、リセット上のその一連の3つの遷移を、それがクラスタ内の第2のデバイスであること、およびしたがってそのデバイスIDが1であることの指標として認識する。
【００４９】
このパターンは、続けられ、それぞれのデバイスがリセット入力における遷移の回数をカウントして、自デバイスIDを決定し、次いで、遷移の回数を2だけ増やして、必ず次のデバイスに1だけ大きいデバイスIDを割り当てるようにする。デバイスIDがすべてセットされた後、クラスタID値も、デバイスIDをセットすることができる同じ方法でセットすることができ、リングがリセットされた後、コントローラは、すべてゼロとともにリングの下りへ特別なパケットを送信する。ネットワーク全体の中のすべてのスレーブは、この値をそのクラスタIDとみなす。それぞれのクラスタのクラスタマスタは、その特別なパケット内の値を増分してから、そのパケットを次のクラスタへ送信する。あるいは、コントローラは、特別なパケットを他の何らかの値で埋めることができ、クラスタマスタは、次のクラスタのクラスタIDを生成するために特別なパケット内の値を増分するか、減分するか、または他の何らかの方法で操作することができる。当業者であれば、リセット信号の意味が発明にとって重要なことでないことを理解するであろう。
【００５０】
図10は、他の例示的な実施形態による他のクラスタリングネットワーク1000の図を示している。ネットワーク1000は、コントローラ1010および3つのクラスタ1011〜1013を備える。クラスタは、中に、それぞれ4つのスレーブ1020〜1023、3つのスレーブ1030〜1032、および2つのスレーブ1040〜1041を有しているが、ここでもまた、本発明は、特定の一連のクラスタまたは1クラスタ当たりのスレーブに限定されないことに留意されたい。図10の構成において、一時的クラスタマスタステータスのアービトレーションを行うために使用されるクラスタ内リングは、デバイスIDを伝達するために使用される。すべてのスレーブは、入力としてリセット入力を有する。クラスタマスタでないスレーブはすべて、これらの入力を接地している。クラスタマスタでは、そのリセット入力の入力端子が大域的リングリセットに接続されている。リセット入力がHighからLowに遷移したことを認識した後、クラスタマスタは、そのステータスをクラスタマスタとして認識し、そのデバイスIDをゼロにセットし、相当する増大パルスストリームをクラスタ内リングを下って送信し、クラスタ内の他のすべてのデバイスのクラスタIDを順次初期化して行く。
【００５１】
他の実施形態では、クラスタマスタ内のそれぞれのクラスタ内のどのデバイスがワードワイヤードデバイスであるかを専用信号を使用して示す。クラスタIDをセットすることについて上で説明されている手順を使用して、クラスタIDが最初にセットされ、その後、ここでもまた、デバイスIDをセットすることについて上で説明されている手順を使用して、デバイスIDがセットされる。他の実施形態では、当業者には明らかな技術により、デバイスIDを初期化するために、リセット信号および一時的クラスタマスタアービトレーション信号とは別の専用の一組の信号が使用される。
【００５２】
次に図11Aを参照すると、スタックとして垂直に積み重ねられたマルチチップモジュール1100が示されており、そこでは、スタック内すべてのデバイス1110〜1113は単一クラスタを構成する。入力セグメントは、片側のすべてのデバイスに到来し、出力セグメントは、モジュールの他方の側から出る。図11Bは、金属線が一方のデバイス上の入力セグメントボンディングパッドを縦方向に隣接するデバイス上のボンディングパッドに接続し、またスタックの出力セグメント側の相当する一組の接続部と接続するという点でモジュール1100と異なる代替モジュール1150内のデバイス1110〜1113の同じスタックを示している。このような実装において、スタックは、複数のクラスタ、1つまたは複数のクラスタ、およびコントローラなどを備えることができる。
【００５３】
少なくとも1つの知られているリング型ネットワークでは、どれかのデバイスが故障した場合に、コントローラとすべてのデバイスとの間の往復通信は途絶える。しかし、本発明の実施形態によれば、非クラスタマスタが完全に機能しなくなった場合でも、通信は妨げられることなく継続する。故障デバイスは、プライミングされたインジケータを決してアサートしない。故障デバイスがプライミングされたことを連続的にアサートするようにして機能しなくなった場合、そのクラスタのデバイスと通信する機能は禁止されうる。しかし、他のクラスタとの通信は影響を受けない。クラスタマスタが故障した場合、往復通信は中断される。
【００５４】
図12は、リング毎に1つのデバイスが故障しても機能できる代替実施形態を示している。その中のそれぞれのスレーブは、2つのクラスタ内出力(次出力およびスキップ出力と称される)ならびに次入力およびスキップ入力と称される2つのクラスタ内入力を有する。それぞれのデバイスの次出力は、クラスタ内の論理的に次のデバイスの次入力に接続され、最後のデバイスの次出力は、第1のデバイス-通常はクラスタマスタであるデバイス-の次入力に接続される。したがって、次信号は、単純なクラスタ内リングを形成する。
【００５５】
それぞれのデバイスのスキップ出力は、クラスタ内の1つおいて次のデバイスのスキップ入力に接続される。最後から1つ前のスレーブのスキップ出力は、クラスタ内の第1のスレーブのスキップ入力に接続され、クラスタ内の最後のスレーブのスキップ出力は、クラスタ内の第2のスレーブのスキップ入力に接続される。このフォールトトレラントの実施形態では、それぞれのフォールトトレラントクラスタは、少なくとも2つのスレーブをその中に有し、したがって、スキップ信号を介してどれが1つおいて次のスレーブであってそれがどれに接続するかが常に明確である。クラスタ内の第1の2つのスレーブのリセット入力信号は、一次リセットおよびバックアップリセットと称される2つのリング大域的な信号に接続される。
【００５６】
デバイスIDの初期化および割当ては以下のように進む。コントローラは、一次リセットをHighレベルにし、それぞれのクラスタ内の第1のスレーブによって認識される十分な時間の間、Highレベルに保つ。次いで、この第1のスレーブは、自分自身をクラスタマスタであるものとして割り当て、そのデバイスIDを0にセットする。次いで、次出力およびスキップ出力をHighレベルにし、クラスタ内の他のすべてのスレーブはスキップ入力または次入力上のHighレベルをスキップ出力と次出力の両方に伝搬し、それら自体をリセット状態にする。
【００５７】
一次リセットがLowレベルに下がると、クラスタマスタは、立ち下がりエッジを認識して、3つの遷移からなるパルス列を次出力で第2のデバイスに送り(HighレベルからLowレベルに、LowレベルからHighレベルに、次いで再びHighレベルからLowレベルにする)、スキップ出力で5つの遷移からなるパルス列を送る。クラスタ内の他のすべてのスレーブは、以下のルールに従う。次入力またはスキップ出力が長期間にわたってHighレベルのときにはリセット状態に入り、スレーブのデバイスIDおよびクラスタIDをクリアし、リセット状態に入っているときには、次入力とスキップ入力の両方で遷移列がないか監視する。遷移列が、いずれかの信号で入ってきた場合、遷移の数をカウントし、1を引いて、2で割って、デバイスIDを結果にセットする。いずれの入力でも、その後の遷移列を無視する。デバイスIDがセットされている場合、次出力上で2×デバイスID+3の長さの次出力上の遷移列を送り、スキップ出力上で2×デバイスID+遷移数5の長さの遷移列を送る。その後、通常オペレーションモードに入り、上述のようにクラスタIDをセットする特別なパケットが来ないかインバウンドセグメントを監視する。クラスタマスタは、クラスタ内のデバイスの個数を知るために次入力およびスキップ入力で遷移列を監視することができる。
【００５８】
これの後、コントローラが、パケットがリング上の行けるところまで行くことを確認できない場合、一次クラスタマスタの1つが、通常オペレーションを妨げる形でマスタが故障しているという意味で死んでいる可能性がある。どの場合も、バックアップセットを使用して再初期化すべきである。これは、それぞれのクラスタ内の第2のスレーブをデバイスID 0を持つクラスタマスタとなるようにセットする。
【００５９】
この実施形態を使用すると、リング毎に死んでいるスレーブが1つある場合のオペレーションが容易になる。クラスタ毎に最大1つのスレーブの故障があっても機能する関係する実施形態は、コントローラがクラスタ毎に一次リセットまたはバックアップリセットを使用できることを除いて同じである。そのようなものとして、第1のクラスタ上の第1のスレーブおよび第2のクラスタ内の第2のデバイスの両方に不具合があった場合、コントローラは、それに応じて2つのクラスタ内のクラスタマスタをそのまま別々に割り当てることができる。クラスタ毎に複数のデバイス故障が生じている場合のオペレーションを容易にする、この概念の拡張を用いた追加の実施形態も可能である。
【００６０】
図12のフォールトトレラントクラスタは、同じ前述のプロトコルによってリング内の前のクラスタ(またはコントローラ)および次のクラスタ(またはコントローラ)と通信するので、単一のリングが、フォールトトレラントクラスタと非フォールトトレラントクラスタの混合を含みうる。
【００６１】
図13は、例示的な実施形態によりネットワーク内で使用することができ、「Non-volatile Memory System」という表題の米国仮特許出願第60/902,003号においてさらに詳しく開示されているデバイス1300の図である。デバイス1300は、この場合は、入力データバスからなる1つの入力ポートと、入力データバス上に情報が流れているときにそのことを示すために使用される2つの入力ストローブ信号を有する。しかし、データバスセグメントは4ビット幅であることが示されているけれども、本発明はデータバス幅に関係なく動作可能であるため、データ幅は1ビット以上の任意の幅とすることができる。デバイスは、出力データバスからなる1つの出力ポートと、データがスレーブによって出力データバス上に送り出されているときにそのことを示す2つの出力ストローブ信号を有する。ここもまた、この図および他のすべての図における4ビットの出力データバス幅は、単なる例であり、本発明の範囲を示すものではない。入力ポート、出力ポートに加えて、この特定のデバイスは、少数の追加の非電力信号を有する。デバイスは、クロック入力(この場合、シングルエンド型であるが、潜在的には差動型でもある)、デバイスを知られている初期状態に初期化するリセット入力、および入力ポートおよび出力ポートをオンにし、それによりリングに沿って通信を可能にするために使用されるチップイネーブル入力も有する。
【００６２】
図14は、他の例示的な実施形態による他のクラスタリングネットワーク1400の図を示している。ネットワーク1400は、コントローラ1410および4つのクラスタ1411〜1414を備える。クラスタは、中に、それぞれ4つのスレーブ1420〜1423、3つのスレーブ1430〜1432、1つのスレーブ1440、および2つのスレーブ1450〜1451を有しているが、ここでもまた、本発明は、特定の一連のクラスタまたは1クラスタ当たりのスレーブに限定されないことに留意されたい。図14による例は、スレーブアドレッシングがリニアな割り当てであり、クラスタ番号およびクラスタ内デバイスIDで構成されていないことを特徴とする。この代替形態は、デバイスアドレスに利用できるビットの数が少なすぎて2つの異なる部分に分割するとクラスタの個数の最大値またはクラスタ毎のデバイスの最大数のいずれかを不当に制約することになる場合に好ましいものである。この場合、デバイスアドレスは、ディジーチェーンでリング内のすべてのデバイスを通る単一ビットシリアルスキャンを使ってリセット後にセットされるが、他のそのようなメカニズムも、当業者にとっては、過度の実験を行うことなく明らかであろう。この実施形態では、Highレベルに引き上げられた専用信号は、それぞれのクラスタ内のどのデバイスが初期または永久的クラスタマスタに対するものであるかを示す。コントローラは、このスキャンチェーンを使用して、デバイスアドレスを初期化し、次いで、すべてのデバイスに対し、それらがクラスタマスタであるかそうでないかを問い合わせて、正確なネットワークトポロジを決定する。適宜、トポロジが決定された後、コントローラは、クラスタ内のデバイスのデバイスアドレスをクラスタマスタに知らせることができ、したがって、クラスタマスタは応答する必要のあるデバイスアドレスを認識する。他の代替形態では、クラスタマスタは、クラスタ内の非マスタスレーブに問い合わせを行って、どのデバイスが各クラスタ内にあるかを判定することができる。他の代替形態では、クラスタマスタは、各クラスタ内のデバイスのデバイスアドレスを知る必要はなく、次のデータパケット上のデータ出力に対してプライミングされていることを示すそれらのスレーブからの指標に基づいてその挙動を変えるだけである。
【００６３】
説明されている実施形態のいくつかの適応形態および修正形態が形成されうる。したがって、上述の実施形態は、例示的であり、制限するものではないと考えられる。
【符号の説明】
【００６４】
400  リング型トポロジ相互接続ネットワーク
410  コントローラまたはマスタデバイス
411〜415  メモリまたは他のメモリまたは非メモリスレーブデバイス
500  リング型トポロジネットワーク
510〜513  デバイス
800  クラスタリングネットワーク
810  コントローラ
811〜814  クラスタ
820〜823  スレーブ
830〜832  スレーブ
840  スレーブ
850〜815  スレーブ
1000  クラスタリングネットワーク
1010  コントローラ
1011〜1013  クラスタ
1020〜1023  スレーブ
1030〜1032  スレーブ
1040〜1041  スレーブ
1100  マルチチップモジュール
1110〜1113  デバイス
1150  代替モジュール
1300  デバイス
1400  クラスタリングネットワーク
1410  コントローラ
1411〜1414  クラスタ
1420〜1423  スレーブ
1430〜1432  スレーブ
1440  スレーブ
1450〜1451  スレーブ
【図１】
2014014160.tif 000003
【図２】
2014014160.tif 000004
【図３】
2014014160.tif 000005
【図４】
2014014160.tif 000006
【図５】
2014014160.tif 000007
【図６】
2014014160.tif 000008
【図７】
2014014160.tif 000009
【図８】
2014014160.tif 000010
【図９】
2014014160.tif 000011
【図１０】
2014014160.tif 000012
【図１１Ａ】
2014014160.tif 000013
【図１１Ｂ】
2014014160.tif 000014
【図１２】
2014014160.tif 000015
【図１３】
2014014160.tif 000016
【図１４】
2014014160.tif 000017