(57)【特許請求の範囲】
【請求項１】
装置の第１のノードグループが、
第１のメモリーに連結され、第１のポート、第２のポート、プロセッサポート、およびデータがノード内に存在しない場合、要求が正しいノードに到達されるまで、ノードペア内の他のノードに対する「ホップ」パスに要求を自動的に送信され、さらに別の次元内のネットワークパスに送信されるホップポートを含む第１のネットワークノードと、
第２のメモリーに連結され、第１のポート、第２のポート、プロセッサポート、および前記ホップポートを含む第２のネットワークノードであって、前記第２のネットワークノードの前記ホップポートは、前記第１のネットワークノードの前記ホップポートに連結され、前記第１のネットワークノードと第２のネットワークノードとの間で通信するように構成された第２のネットワークノードと、
前記第１のネットワークノードの前記プロセッサポートに連結され、かつ、前記第２のネットワークノードの前記プロセッサポートに連結され、前記第１のネットワークノードを経由して前記第１のネットワークノードに連結した第１のメモリーにアクセスし、前記第２のネットワークノードを経由して前記第２のネットワークノードに連結した第２のメモリーにアクセスするように構成された第１のプロセッサと、
を備える、装置。
【請求項２】
第２のノードグループに通信可能な状態で連結され、前記第２のノードグループが、
第１のポート、第２のポート、プロセッサポート、および前記ホップポートを含む、第３のメモリーに連結された第３のネットワークノードと、
第１のポート、第２のポート、プロセッサポート、および前記ホップポートを含む、第４のメモリーに連結された第４のネットワークノードであって、前記第４のネットワークノードの前記ホップポートは、前記第３のネットワークノードの前記ホップポートに連結された第４のネットワークノードと、
前記第３のネットワークノードの前記プロセッサポートを使用して前記第３のネットワークノードに連結され、前記第４のネットワークノードの前記プロセッサポートを使用して前記第４のネットワークノードに連結され、前記第３のネットワークノードの前記第１のポートと前記第２のポートのいずれかに連結された第２のプロセッサと、
を備える、請求項１に記載の装置。
【請求項３】
前記第１のメモリーが少なくとも１つのダイナミックランダムアクセスメモリー（ＤＲＡＭ）アレイを含む、請求項１に記載の装置。
【請求項４】
前記第１のネットワークノードが１つの入出力ドライバ回路を含む、請求項１に記載の装置。
【請求項５】
前記第１のネットワークノードと、前記第１のメモリーとが単一のパッケージ内に配置される、請求項１に記載の装置。
【請求項６】
前記第１のネットワークノードと、前記第１のメモリー、および前記第１のプロセッサが単一のパッケージ内に配置される、請求項１に記載の装置。
【請求項７】
前記第２のネットワークノードと、前記第２のメモリーとが単一のパッケージ内に配置される、請求項１に記載の装置。
【請求項８】
前記第２のネットワークノードと、前記第２のメモリー、および前記第２のプロセッサが単一のパッケージ内に配置される、請求項２に記載の装置。
【請求項９】
前記第１のメモリーと前記第１のプロセッサとの間でのデータ通信中に、前記第１のネットワークノードがエラー検出訂正（ＥＣＣ）機能を実行するように構成されている、請求項１に記載の装置。
【請求項１０】
前記第１のメモリーがＮＡＮＤフラッシュメモリアレイを含む、請求項１に記載の装置。
【請求項１１】
前記第１のメモリーがＮＯＲフラッシュメモリアレイを含む、請求項１に記載の装置。
【請求項１２】
前記第１のプロセッサがシングルコアプロセッサを含む、請求項１に記載の装置。
【請求項１３】
前記第１のプロセッサがマルチコアプロセッサを含む、請求項１に記載の装置。
【請求項１４】
前記第１のプロセッサがマルチコアプロセッサの単一のコアである、請求項１に記載の装置。
【請求項１５】
前記第１のプロセッサが特定用途向け集積回路（ＡＳＩＣ）を含む、請求項１に記載の装置。
【請求項１６】
前記第１のプロセッサが組み込みプロセッサを持つ基板を含む、請求項１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２００９年２月１９日に出願された米国出願番号第１２／３８９，２００号から優先権の利益を得るもので、それは参照により本明細書に組み込まれる。
【背景技術】
【０００２】
パーソナルコンピュータ、ワークステーション、コンピュータサーバー、メインフレーム、およびプリンタ、スキャナ、ハードディスクドライブ等のコンピュータ関連機器など、多くの電子デバイスは、消費電力を抑えようとする一方で、大容量のデータ記憶機能を備えたメモリーを使用している。上記の各デバイスでの使用に適したタイプのメモリーの１つは、ダイナミックランダムアクセスメモリー（ＤＲＡＭ）である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
チップサイズの制限が与える影響により、大規模なマルチプロセッサシステムにおける大容量メモリーデバイスに対する要求は増加を続けている。各メモリーセルのコンポーネントが占有する表面積は着実に減少を続けているため、半導体基板上のメモリーセルの記録密度は、減少を続けるゲート遅延に伴って増加させることができる。ただし、デバイスの表面積を減少させた場合、製造歩留まりが低下する可能性があり、メモリーデバイスの多数のバンクをプロセッサなどの他のデバイスに接続するために用いられる相互接続の複雑さが増大する可能性がある。さらに、小型化を行っても、相互接続遅延はゲート遅延ほどには減少しないという問題もある。
【図面の簡単な説明】
【０００４】
さまざまな実施形態を、以下の図面を参照することによって以下に詳述する。
【図１】さまざまな実施形態による、メモリーシステム用のブリッジアーキテクチャの概略的なブロック図である。
【図２】さまざまな実施形態による、メモリーシステム用の共有バスアーキテクチャの概略的なブロック図である。
【図３】さまざまな実施形態による、メモリーシステム用のネットワークアーキテクチャの概略的なブロック図であり、専用プロセッサを持ち、相互に接続されたネットワークノードを示している。
【図４】さまざまな実施形態による、メモリーシステム用のネットワークアーキテクチャの概略的なブロック図であり、プロセッサを共有し、相互に接続されたネットワークノードを示している。
【図５】さまざまな実施形態による、メモリーシステム用のネットワークアーキテクチャの概略的なブロック図であり、プロセッサを共有し、さまざまな幾何学的平面に配置されたネットワークノードを示している。
【図６】さまざまな実施形態による、メモリーシステム用のネットワークアーキテクチャの概略的なブロック図であり、プロセッサを共有し、相互に接続された、さまざまな空間的平面に配置されたネットワークノードを示している。
【図７】さまざまな実施形態による、３次元のメモリーシステムの概略的なブロック図であり、プロセッサを共有し、相互に接続されたネットワークノードを示している。
【図８】さまざまな実施形態による、メモリーシステム用の概略的なブロック図であり、このメモリーシステムは、多次元メモリーネットワーク内のメモリーからデータを復元して、ネットワーク障害の復旧を可能にする。
【図９】さまざまな実施形態による、多次元メモリーシステム内のデータのルーティング方法を記述したフローチャートである。
【発明を実施するための形態】
【０００５】
さまざまな実施形態には、処理システム、半導体モジュール、メモリーシステム、および方法が含まれる。一部の実施形態に関する具体的な詳細については、以下に示す記述と図１から図９とを使用して、これらの実施形態の概念を説明する。ただし、当業者は、追加の実施形態も可能であること、および、これ以降で説明するいくつかの詳細がなくとも、多くの実施形態が実施可能であることを理解するであろう。また、さまざまな実施形態が、物理的なコンポーネント（「ハードウェア」など）を含む物理的な回路内に実装可能であること、または、機械が解読可能な指示（「ソフトウェア」など）を使用して実装可能であること、または、物理的なコンポーネントと機械が解読可能な指示との特定の組み合わせ（「ファームウェア」など）で実装可能であることも理解するであろう。
【０００６】
表面積の減少と、それに伴うメモリーの記録密度の増加は、メモリーアレイおよびメモリーデバイスの水平形状のサイズを小さくすることによって実現できる。これは、さまざまな実施形態において、高度に３次元化されたメモリーシステムを形成することによって可能になる。このメモリーシステムでは、メモリーデバイスが基板の垂直方向に拡張され、さらに基板の表面全体にわたって拡張される。
【０００７】
ここで説明するメモリーデバイスの例は、２００７年８月２９日に「ＭＥＭＯＲＹ  ＤＥＶＩＣＥ  ＩＮＴＥＲＦＡＣＥ ＭＥＴＨＯＤＳ，  ＡＰＰＡＲＡＴＵＳ，  ＡＮＤ  ＳＹＳＴＥＭＳ」という名称で出願され、ＭＩＣＲＯＮ  ＴＥＣＨＮＯＬＯＧＹ，  ＩＮＣ．社に譲渡された、米国特許出願第１１／８４７，１１３号に記述されている。
【０００８】
ここで説明するネットワークノード（ルーター）の例は、２００８年２月１９日に「ＭＥＴＨＯＤ  ＤＥＶＩＣＥ  ＷＩＴＨ  ＮＥＴＷＯＲＫ  ＯＮ  ＣＨＩＰ  ＭＥＴＨＯＤＳ，  ＡＰＰＡＲＡＴＵＳ，  ＡＮＤ  ＳＹＳＴＥＭＳ」という名称で出願され、ＭＩＣＲＯＮ  ＴＥＣＨＮＯＬＯＧＹ，  ＩＮＣ．社に譲渡された、米国特許出願第１２／０３３，６８４号に記述されている。
【０００９】
図１は、さまざまな実施形態による、メモリーシステム１００用のブリッジアーキテクチャの概略的なブロック図である。実施形態の１つの例では、メモリーシステム１００には、プロセッサ（１０４、１１４）、メモリー（ＭＥＭ）（１１０、１２０）、ブリッジ（１０２、１１２）、およびネットワークノード１０１が含まれる。一部の実施形態では、プロセッサ１０４は、専用メモリー１１０およびブリッジ１０２に連結される。アーキテクチャ１００には、専用メモリー１２０およびブリッジ１１２に連結されたプロセッサ１１４も含まれる。ネットワークノード１０１を使用して、ブリッジ１０２とブリッジ１１２とを連結することができる。図１に示すアーキテクチャは、さまざまな実施形態において、本明細書で開示する他のメモリーシステムおよびアーキテクチャとともに使用することができる。
【００１０】
図２は、さまざまな実施形態による、メモリーシステム２００用の共有バスアーキテクチャの概略的なブロック図である。共有バスアーキテクチャ２００には、プロセッサ２１０、２１２、２１４、および２１６と、メモリー２０６と、ブリッジ２０４とに連結された共有バス２０８が含まれる。一部の実施形態では、ネットワークノード２０２はブリッジ２０４に連結され、これによってメモリーシステム２００が他の類似のメモリーシステムに接続される。図２に示すアーキテクチャは、さまざまな実施形態において、本明細書で開示する他のメモリーシステムおよびアーキテクチャとともに使用することができる。
【００１１】
図１に示すブリッジアーキテクチャ、または図２に示す共有バスアーキテクチャのいずれかを使用することにより、大規模なマルチプロセッサシステムを構築することができる。いずれのアーキテクチャにおいても、ネットワーク構造および相互接続ハードウェアを使用して、ネットワーク化された高性能なシステムを実現することができる。一部の実施形態では、さまざまな標準入出力（ＩＯ）チャネル（Ｉｎｆｉｎｉｂａｎｄ（商標）通信リンクの一部として提供されているチャネルなど）とその他のメカニズムを使用することにより、特定のマザーボードまたは類似したパッケージングの配置で収容できる計算用リソースだけでなく、追加の計算用リソースを連結することができる。
【００１２】
図１に示すブリッジアーキテクチャでは、各プロセッサ（１０４、１１４）には独自のメモリー（１１０、１１２）が搭載されており、独自のＩＯ機能を搭載することもできる。これは、各プロセッサがこれらのリソースを共有した場合、ソフトウェアおよびパフォーマンスに関する問題が発生する可能性があることを意味する。特定のプロセッサ（例えばプロセッサ１０４）が、別のプロセッサのメモリー（例えばメモリー１２０）のデータを必要とする場合、第１のプロセッサ（１０４）は、自分が必要とするデータを要求する要求メッセージを生成して第２のプロセッサ（１１４）に送信し、第２のプロセッサ（１１４）が現在の処理を停止してこの要求を処理し、第１のプロセッサ（１０４）に応答するまで待機しなければならない。この場合、大幅にパフォーマンスが低下する可能性がある。これは、必要なデータが戻されるのを待機する時間的なロスの結果として、計算オーバーヘッドに直接影響するソフトウェアオーバーヘッドが発生するためである。
【００１３】
図２に示す共有バスアーキテクチャでは、グループの一部を適切に形成できるプロセッサの数は制限されている。これは、バスを構成するための電力の問題も関係しているが、さらに大きな要因として、接続されているプロセッサに対して適切なサービスを提供するための要件の一部であるメモリーサイズと帯域幅とに制限が存在するためである。多くの場合、共有バスシステムは自己制御的であるため、より大規模なシステムに対応する場合に、ネットワークまたはＩＯチャネルの相互接続の使用頻度が高くなることが多い。この場合、ブリッジアーキテクチャについて前述したものと同じロスおよび問題が再び発生することになる。
【００１４】
一部の実施形態では、分散システムを構成するマルチプロセッサのサポートに使用されるネットワーク構造とメモリーとを組み合わせることにより、システム構成の新しい方法を想定することができる。これが実現できれば、システムのパフォーマンスを改善し、データ共有をより簡単かつ迅速に実行できるようになる。要求されたデータがネットワーク内のどこに存在するかに関わらず、ネットワーク要求を使用してデータにアクセスできる。一部の実施形態では、図３に示すものと類似した相互接続を使用するメモリーシステムを構築することができる。
【００１５】
図３は、さまざまな実施形態による、メモリーシステム３００用のネットワークアーキテクチャの概略的なブロック図であり、専用プロセッサ（３２２、３２４、３２６、３２８）に連結され、相互に接続されたネットワークノード（３０２、３０４、３０６、３０８）を示している。この図では２次元のメッシュネットワークを示しているが、この概念は３次元以上の多次元（ハイパーキューブなど）、トーラス構造などにも容易に拡張することができる。システム要件と、ネットワークノードロジックでサポート可能な複雑さのレベルとによっては、その他の種類のネットワークアーキテクチャ（Ｃｌｏｓネットワークの変形など）も使用することができる。
【００１６】
一部の実施形態において、図３に示す各プロセッサは、単一のパッケージまたはダイの内部に複数のプロセッサ（マルチコアプロセッサまたは多コアプロセッサ）を含めることも、単一のネットワークノード（３０２、３０４、３０６、および３０８など）に接続する複数の独立したプロセッサを含めることもできる。一部の実施形態において、各プロセッサ（３２２、３２４、３２６、および３２８）にはメモリー（３１２、３１４、３１６、および３１８）が付属する。この配置により、特定のプロセッサによって実行された計算の中間値のローカルストレージが提供される。これらの中間値は、メモリーシステム３００の他の部分に位置するプロセッサでは使用できない。ただし、これらのプロセッサの一部が、さまざまなメモリー（３１２、３１４、３１６、および３１８）間に分散されたデータへのアクセスを要求した場合、メモリー参照スキームを使用した結果として、データ管理に関するさまざまな問題が発生する可能性がある。図３に示すアーキテクチャは、さまざまな実施形態において、本明細書で開示する他のメモリーシステムおよびアーキテクチャとともに使用することができる。
【００１７】
本明細書で説明する分散型メモリーネットワークを使用する多くの潜在的な利点の１つは、すべてのメモリーを、ネットワーク内の単一のアドレスセットとして認識できるということである。これにより、データにアクセスする場合に、あるプロセッサから別のプロセッサに対して要求メッセージを作成する必要がなくなる。このメモリー構造では、メモリー待ち時間（アクセス時間）が不均一になるため、ジョブおよびデータ管理ソフトウェアにより、データを使用するプロセッサの近くに対象のデータを保持するというパフォーマンス上の利点が発生する可能性がある。また、データをプロセッサの近くに保持しないことによる影響は、図１に示すネットワークメモリー構造の場合よりも小さい。これは、データを送受信するためのメッセージの受け渡しが必要ないためである。
【００１８】
マルチコアプロセッサの集積回路（ＩＣ）を使用した場合、パフォーマンス上の問題が発生する場合がある。１つのＩＣ内のコアの数が増加するにつれて、実際の配置も図２に示すバスアーキテクチャにますます類似したものになる。この場合、帯域幅が共有され、かつ、コアおよびスレッドの数が増加するにつれて、１つのコアまたはスレッドあたりの使用可能な帯域幅の割合が減少する可能性がある。
【００１９】
図４は、さまざまな実施形態による、メモリーシステム４００用のネットワークアーキテクチャの概略的なブロック図であり、プロセッサを共有し、相互に接続されたネットワークノードを示している。メモリーシステム４００には、ネットワークノード（４１２、４１４、４１６、４１８、４２２、４２４、４２６、４２８、４３２、４３４、４３６、４３８、４４２、４４４、４４６、４４８）、メモリー（４１３、４１５、４１７、４１９、４２３、４２５、４２７、４２９、４３３、４３５、４３７、４３９、４４３、４４５、４４７、４４９）、およびプロセッサ（４１０、４２０、４３０、４４０）が含まれる。
【００２０】
図４に示すように、メモリー４１３はネットワークノード４１２に連結され、メモリー４１５はネットワークノード４１４に連結され、かつ、メモリー４１７はネットワークノード４１６に連結され、メモリー４１９はネットワークノード４１８に連結される。プロセッサ４１０はネットワークノード４１２、４１４、４１６、および４１８に連結される。
【００２１】
メモリー４２３はネットワークノード４２２に連結され、メモリー４２５はネットワークノード４２４に連結され、メモリー４２７はネットワークノード４２６に連結され、かつ、メモリー４２９はネットワークノード４２８に連結される。プロセッサ４２０はネットワークノード４２２、４２４、４２６、および４２８に連結される。
【００２２】
メモリー４３３はネットワークノード４３２に連結され、メモリー４３５はネットワークノード４３４に連結され、メモリー４３７はネットワークノード４３６に連結され、かつ、メモリー４３９はネットワークノード４３８に連結される。プロセッサ４３０はネットワークノード４３２、４３４、４３６、および４３８に連結される。
【００２３】
メモリー４４３はネットワークノード４４２に連結され、メモリー４４５はネットワークノード４４４に連結され、メモリー４４７はネットワークノード４４６に連結され、かつ、メモリー４４９はネットワークノード４４８に連結される。プロセッサ４４０はネットワークノード４４２、４４４、４４６、および４４８に連結される。
【００２４】
一部の実施形態では、複数のパスを持つプロセッサのネットワーク相互接続に対して高速のシリアルインターフェースが提供され、各インターフェースは、すべてを並列的に実行できる大量の帯域幅を持つ。これは、各プロセッサパッケージを複数のネットワークノードに接続できることを意味する。これにより、メモリーの並列アクセスが可能になり、現在使用可能な多くの他の構成に対する利点を増大させるメモリー／ネットワーク構造が可能になる。
【００２５】
一部の実施形態では、図４に示すメモリーネットワークは、トーラス構造などを持つ多次元のネットワークにすることができる。各プロセッサ（４１０、４２０、４３０、および４４０）は、図３に示すメモリーおよびネットワークノードの帯域幅の倍数分の帯域幅を持つことができる。一部の実施形態では、３次元（３Ｄ）のネットワーク相互接続が使用可能な場合、図４に示すように各プロセッサをネットワークノードに接続したままにしたり（結果として、さまざまな空間的平面または次元を接続用に使用できる）、２つ以上の空間的平面または次元において１つ以上のプロセッサをネットワークノードに接続することができる。多次元を有するネットワーク構造（Ｃｌｏｓネットワークのように、複数の送信元と受信先が存在する場合など）を開発する場合の懸念の１つは、開発されたネットワークロジックが非常に複雑なものになり、場合によっては、各ネットワークノードを経由するパスの数の二乗に比例して増加する可能性があるということである。
【００２６】
この設計を簡素化するための方法の１つは、各プロセッサ（４１０、４２０、４３０、および４４０）を発信元とすることができる複数のパスを利用し、さまざまな物理的次元（Ｘ，Ｙ，Ｚ次元など）に沿って各パスを個別のメモリーネットワークに向かわせる方法である。一部の実施形態では、各プロセッサ（４１０、４２０、４３０、および４４０）が３つのネットワークメモリーのパスを持っている場合、３つの異なる２次元（２Ｄ）メッシュネットワークが存在することができ、１つの３Ｄネットワークではなく、それぞれの次元についてネットワークが１つずつ存在することになる。この配置によって、より小規模な２Ｄネットワークを実現することができる。このネットワークでは、サイズが大幅に減少し、各ネットワークノード内のロジックを介して、より少数のパスが使用されることになる。
【００２７】
図５は、さまざまな実施形態による、メモリーシステム５００用のネットワークアーキテクチャの概略的なブロック図であり、プロセッサを共有し、さまざまな幾何学的平面に配置されたネットワークノードを示している。図５は、プロセッサ（５１０、５１２、５１４、および５１６）を経由して相互接続され、２Ｄネットワークを形成する一連の１次元ネットワークを示している。図５に示す各ネットワークノードは、ネットワーク用に最大２つの接続を持ち、それぞれのネットワークノードは、メモリーおよびプロセッサと共に各ネットワーク次元について２つの接続を処理するのではなく、１つの次元と、ローカルメモリーおよびプロセッサの接続だけを処理する。１つの実施形態では、メモリーシステム５００には統合パッケージ５０１が含まれ、このパッケージにはネットワークノード５０２およびメモリー５０３が含まれる。
【００２８】
図５に示すメモリーネットワークは、図３および図４に示すネットワークと同程度の規模になり、任意の指定されたネットワークサイズに合わせて構築することができる。一部の実施形態では、多数の次元を持つメモリーネットワークは、それぞれの追加の次元用のパスを各プロセッサから追加することにより、適切に構成することができる。この実装については、これ以降で詳しく説明する。
【００２９】
一部の実施形態では、複雑なネットワーク構造を構築して、ネットワーク内の異なるポイントに接続するマルチプロセッサチップを使用することができる。たとえば、プロセッサ５１０をネットワークノード５０２（Ｘ１１）とネットワークノード５１８（Ｙ１１）とに接続し、プロセッサ５１２をネットワークノード５０４（Ｘ１２）とネットワークノード５２０（Ｙ２１）とに接続する場合が考えられる。一部の実施形態では、このようなネットワークの特性の１つは、ネットワーク通信およびデータがプロセッサ（５１０、５１２、５１４、および５１６）を経由してデータを取得する可能性があるということである。取得されたデータは、メモリーネットワーク上に分散することができる。
【００３０】
たとえば、メモリー５０３およびメモリー５１９（それぞれ、ネットワークノード５０２（Ｘ１１）５１８（Ｙ１１）とに連結）のメモリーデータに直接アクセスするプロセッサＡ（５１０）がメモリー５０５（ネットワークノード５０４（Ｘ１２）に連結）のデータを必要とする場合、要求シグナルがＸ１１からＸ１２を経由して転送され、この要求シグナルが対象のデータにアクセスした後、要求パスを反転することによって対象データを返す。ただし、ネットワークノード５２４（Ｙ２２）からのデータが必要な場合は、
プロセッサＡ（５１０）→Ｘ１１→Ｘ１２→プロセッサＢ（５１２）→Ｙ２１→Ｙ２２
というパスを経由して要求が送信される可能性がある。
【００３１】
一部の実施形態では、必要なデータが要求元プロセッサと同じＸパスまたはＹパス上に存在しない場合、別のプロセッサを経由して要求（および応答）を送信することができる。単純に要求および応答を渡すように設計されたプロセッサが存在するこの配置は、通常、プロセッサのパフォーマンスを向上させたり、システムの所要電力を減少させたり、パッケージングを簡素化したりするための効率的な手段ではない。
【００３２】
一部の実施形態では、アーキテクチャを変更して、同じプロセッサ（同じプロセッサコアなど）に接続されたネットワークノードのペアに、これらのペア間のネットワークリンクを含めることもできる。これにより、「ホップ」パスが提供される。その結果は、図６と類似したものになる。
【００３３】
図６は、さまざまな実施形態による、メモリーシステム６００用のネットワークアーキテクチャの概略的なブロック図であり、プロセッサを共有し、相互に接続された、異なる幾何学的平面に配置されたネットワークノードを示している。図６には、各ネットワークノードに接続されたメモリーは示していないが、これらのメモリーは存在することが理解される必要がある。同様に、図６に示す配置は、考えられる多くの配置の一例にすぎない。
【００３４】
一部の実施形態では、メモリーシステム６００には統合パッケージ６０９が含まれ、このパッケージにはネットワークノード６２２およびプロセッサ６０２が含まれる。実施形態の１つの例では、ネットワークノード６２２には左ポート６０１、右ポート６０３、およびホップポート６０５が含まれる。図６に示す構成では、ネットワークノード（６２２、６２４、６３２、６３４、６４２、６４４、６５２、６５４、６６２、６６４、６７２、および６７４）に特別なリンクが追加されているため、プロセッサ６０２から６１２までのルーティングネットワークトラフィックが回避される。図６の各ネットワークノード（ネットワークノード６２２など）には３つのポート（左ポート６０１、右ポート６０３、ホップポート６０５など）があり、これらのポートを使用して他のネットワークノードおよびポート（６０７など）に連結し、さらにはプロセッサ（プロセッサＡ（６０２）など）に連結する。左ポート、右ポートという用語は、ノード上の任意の特定の物理的な場所を指すものではなく、単にデバイス上の２つのポートのいずれかを示すための用語である。こうしたネットワークを使用する場合、任意のプロセッサ（６０２、６０４、６０６、６０８、６１０、および６１２）からの要求は、そのプロセッサに接続されている、対応するいずれかのネットワークノードによって受信することができる。最小限の長さのパスであっても、最後のルーティング次元が、ネットワークノードの配置に対応する次元内に存在しなければならないという追加のルールを使用することにより、マンハッタンルーティングスキームに従うことができる。たとえば、プロセッサＡ（６０２）がネットワークノード６５４（Ｙ３２）からデータを取得する必要がある場合、要求のパスは
Ｘ１１→Ｘ１２→Ｘ１３→Ｙ３１→Ｙ３２
などのようになる。
【００３５】
一部の実施形態では、代わりにネットワークノード６５２（Ｘ２３）からのデータが必要な場合、パスは
Ｙ１１→Ｙ１２→Ｘ２１→Ｘ２２→Ｘ２３
などのようになる。
【００３６】
一部の実施形態では、プロセッサによって要求がネットワークに挿入された場合、別の次元に対応する正しいアドレスに要求が到達するまで、挿入された次元内のノードをメッセージが横断する。一部の実施形態では、データがノード内に存在しない場合、要求が正しいノードに到達するまで、ノードペア内の他のノードに対する「ホップ」パスに要求が自動的に送信され、さらに別の次元内のネットワークパスに送信される。たとえば、ネットワークＸ２３に接続されたメモリーのデータがネットワークノードＸ１１で要求された場合、ホップポート６０５が使用される。
【００３７】
図６に示す構成には、ノードグループ６９２に連結されたノードグループ６９０が含まれる。一部の例では、ノードグループ６９０には、ネットワークノード６４２、ネットワークノード６４４、およびプロセッサ６０６が含まれる。一部の例では、ノードグループ６９２には、ネットワークノード６５２、ネットワークノード６５４、およびプロセッサ６０８が含まれる。一部の実施形態では、ネットワークノード６４２は第１のメモリー（図６には示されていない）に連結され、ネットワークノード６５２は第２のメモリー（図６には示されていない）に連結される。ネトワークノード６４２および６５２のそれぞれには、プロセッサ６０６および６０８への連結に使用されるプロセッサポートのほかに、左ポート、右ポート、およびホップポートが含まれる。
【００３８】
一部の実施形態では、メモリーシステム６００には、ｘパス内に配置されるネットワークノード６２２が含まれ、このネットワークノード６２２には、第１のｘパスのポート（６０１）、第２のｘパスのポート（６０３）、ホップパスのポート（６０５）、およびプロセッサ６０２に連結するプロセッサポートが含まれる。一部の実施形態では、メモリーシステム６００には、ｙパス内に配置されるネットワークノード（６２４）が含まれ、このネットワークノード６２４には、第１のｙパスのポート、第２のｙパスのポート、プロセッサポート、およびホップパスのポートが含まれる。一部の実施形態では、メモリーシステム６００には、ｚパス内に配置される第３のネットワークノードが含まれ、この第３のネットワークノードには、第１のｚパスのポート、第２のｚパスのポート、プロセッサポート、および２つのホップパスのポートが含まれる。
【００３９】
図７は、さまざまな実施形態による、３次元のメモリーシステムの概略的なブロック図であり、相互に接続され、かつ、プロセッサ７０２に連結されたネットワークノード（７０４、７０６、および７０８）を持つノードグループ７００を示している。プロセッサ７０２は、プロセッサリンク７０５を使用するパスに沿って、ネットワークノード７０４（Ｘパス内に配置）に連結される。プロセッサ７０２は、プロセッサリンク７０６を使用するパスに沿って、ネットワークノード７０８（Ｙパス内に配置）に連結される。プロセッサ７０２は、プロセッサリンク７０７を使用するパスに沿って、ネットワークノード７０６（Ｚパス内に配置）に連結される。
【００４０】
したがって、図６に示すアーキテクチャを３次元に拡張した場合、その結果は、単一のネットワークグループを示す図７に類似したものになる。同様に、追加された各ネットワーク次元に対して追加のプロセッサパスを使用することにより、この概念をさらに拡張して、たとえば４次元のネットワークを構成することもできる。この方法により、Ｎ次元のネットワークを構成することができる。
【００４１】
大部分の多次元ネットワークにおいて、ホップパスを取得してネットワークの次元を変更する場合、ノードグループ内の次のノードコンポーネントに対する１つのホップのみ取得することができる。このアクティビティによって要求が分散され、パスの競合およびネットワーク上の負荷が最小化される。Ｘパス内のノードからＹパス内のノードに要求が送信され、最終的な目的ノードがＹ次元内に存在しない場合、この要求は次の次元であるＺ次元に転送することができる。
【００４２】
図８は、さまざまな実施形態による、メモリーシステム８００の概略的なブロック図である。このメモリーシステムは、多次元メモリーネットワーク内のメモリーからデータを復元して、ネットワーク障害の復旧を可能にする。メモリーシステム８００には、プロセッサ８０２、ネットワークノード（８０４、８０６、８０８、および８１０）、およびホップパス８１２が含まれる。プロセッサ８０２は、ネットワークノード８０４、８０６、８０８、および８１０に連結される。ネットワークノード８０４、８０６、８０８、および８１０は、パス８１５、８１７、８１９、および８２１に接続される。これらのパスは、他のネットワークノードに接続することもできる。ネットワークノード８０４はＷパス（８１４、８１５）内に配置され、ネットワークノード８０６はＸパス（８１６、８１７）内に配置され、ネットワークノード８０８はＹパス（８１８、８１９）内に配置され、ネットワークノード８１０はＺパス（８２０、８２１）内に配置される。一部の実施形態では、プロセッサ８０２には、２つ以上の組み込みプロセッサを持つ基板が含まれる。
【００４３】
図８に示すネットワーク構造の場合、多次元ネットワーク内の各ノードは、１つのネットワーク次元だけを処理するように設計されたコンポーネントを持つことができるため、結果として構築されるネットワーク構造は高い回復力を持つことになる。図６に戻り、ネットワークノード６４４（Ｙ３１）に接続されたメモリーのデータをプロセッサＤで取得する必要がある場合、通常は、プロセッサＤ→Ｘ２１→Ｘ２２→Ｘ２３→Ｙ３２→Ｙ３１というパスを経由して要求が渡される。ただし、Ｘ２２とＸ２３との間のパスが停止している場合（Ｘ２３全体で障害が発生している場合など）、目的のパスを取得できないノード（Ｘ２２など）に要求が到達すると、ローカルのロジックは、優先次元（Ｘ次元）を次のネットワークホップでは使用すべきではないことを通知する情報が含まれたフラグと共に、この要求を単純にホップパス（８１２など）に送信する。一部の実施形態では、このフラグは、これ以降の要求で使用する新しい最短のパスを決定するための情報を、プロセッサ８０２に提供する。その結果、Ｘ２２はＹ２２に要求を送信できるようになる。リルーティングされてＹ２２に到達した要求は、次にＹ２１に送信される。その後、この要求はＹ２１→Ｘ１２→Ｘ１３→Ｙ３１というパスで渡される。
【００４４】
別の例では、Ｘ２２とＸ２３との間のパスではなく、Ｘ２３とＹ３２との間のホップパスで障害が発生したものと仮定する。この場合、Ｘ２３に到達した要求は、次のホップでは優先次元を使用すべきではないことを示すフラグと共に、Ｘ２４（図示していない）に送信される。次に、この要求はＹ次元内に送信され、さらにいくつかのホップの後でＹ３１に到達する。
【００４５】
最後のネットワーク次元に沿って、ネットワーク内でリンクの切断が発生する場合もある。たとえば、プロセッサＤがＸ２３からのデータを必要とし、Ｘ２１からＸ２２へのリンクが停止している場合を考えてみる。ノードＸ２１は、非優先次元内のルーティングを最初に指定するフラグを生成すると共に、目的のパスが停止している場合はホップパスを取得するという直前のルールを使用して、要求をＹ１２に送信する。Ｙ１２は、Ｙネットワークへの距離がゼロであることを認識する。その結果、Ｙ２１は要求をＹ１１またはＹ１３（図示していない）に送信することができる。Ｙ１１が送信先として選択されたと仮定した場合、要求はＹ１１に送信され、Ｙ１１はこの要求をＹ１１→Ｘ１１→Ｘ１２→Ｙ２１→Ｙ２２→Ｘ２２→Ｘ２３というパスに沿って送信する。ネットワークノードＸ２２が停止している場合、このパスはＹ２２からＸ２２へのリンクにおいて切断される。この場合、要求はＹ２３（図示していない）に送信され、いくつかのホップの後でＸ２３に到達する。この動作が発生するのは、Ｘ２３に近いノードまたはＸ２３で、Ｘ次元に戻るための別のルートをこの要求が見つける必要があるためである。
【００４６】
図９は、さまざまな実施形態による、多次元メモリーシステム内のデータのルーティング方法９００を記述したフローチャートである。以下に示すように、さまざまなネットワークルーティングルールに従って、本明細書で説明する多次元メモリーネットワーク内のメモリーにアクセスすることができる。本明細書で説明する実施形態において「インデックス」は、特定の次元（Ｘ、Ｙ、またはＺ次元など）内のノードの場所を表す。ノードの特定に使用されるインデックスの数には、以下のものがある。
【００４７】
ブロック９０２では、方法９００には、目的のネットワークノードに連結された第１のメモリーにアクセスするための要求の生成が含まれる。
【００４８】
ブロック９０４では、方法９００には、発信元ネットワークノードへの要求の送信が含まれる。この要求には、次元の数に対応するインデックスの数が含まれる。
【００４９】
ブロック９０６では、方法９００には、第１の次元に関連する第１のインデックスが要求に含まれているかどうかについての、発信元ネットワークノードでの判断が含まれる。
【００５０】
ブロック９０８では、方法９００には、第１のインデックスが要求に含まれている場合に、第１の次元に沿って第１のネットワークノードに要求を送信する処理が含まれる。
【００５１】
ブロック９１０では、方法９００には、第２の次元に関連する第２のインデックスが要求に含まれている場合に、ホップパスに要求を転送する処理が含まれる。
【００５２】
一部の実施形態では、障害が発生しているネットワークコンポーネントおよびパスを回避して自動的に要求をルーティングすることにより、単純なルールでネットワークの回復力を実現することができる。こうしたルールを使用して、各ネットワークノード内でネットワークデータフローを管理することができる。一部の実施形態では、以下に示す１つ以上のルールをルーティングルールに含めることができる。
【００５３】
ルール１：要求をネットワークの特定の次元（Ｘパス、Ｙパス、Ｚパス、またはＷパス経由など）で渡す必要があることが要求内で指定されている場合、その次元内の次のノードに要求を送信する。
【００５４】
ルール２：ネットワーク次元の正しいノード位置に要求が存在するが（要求がＸ次元に沿って渡され、かつ、目的のノードに対応するＹインデックスに到達した場合など）、目的の場所にはまだ到達していない場合、ローカルのホップパスに要求を送信する。
【００５５】
ルール３：現在のネットワークパスの次元内で処理を進めることが望ましいが、この次元内で要求を処理できない場合は（パスでエラーや障害が発生した場合など）、要求をホップパスに送信し、非優先ディメンション内の送信元ノード／ルートへの戻りを禁止するフラグを設定する。
【００５６】
ルール４：要求でホップパスが使用されているが、目的の次元内に存在するノードに進むことができないことが検出された場合、単純に要求を次のノードに送信し、非優先の次元を使用している送信元ノード／ルートへの任意の戻りを禁止するフラグを設定する。
【００５７】
ルール５：メモリー要求を作成する場合、指定された順序において最後の次元となる、目的ノードのアドレスの次元を使用して、特定の次元順にネットワーク内を横断する。したがって、たとえばＹ２１に連結されているメモリーにアクセスする場合、Ｘ→Ｙ→Ｚの順に次元が選択される３Ｄネットワークでは、要求元プロセッサに対するローカルのＺノードに送信された要求は、Ｚ→Ｘ→Ｙの順に送信される。この場合、ネットワークコンポーネントにわたって要求が分散され、要求内のパスホップの数が最小限になる可能性がある。
【００５８】
ルール６：要求に対する応答は、要求と同じ戻りパスだけには限定されず、逆の順序で応答を返すこともできる。これは、ネットワーク内に応答を分散する場合に役立つ。
【００５９】
一部の実施形態では、ネットワークノードはこれらのネットワークの分散エンティティになるため、ノードコンポーネントの損失が発生しても、障害が発生したノードにわたってすべての通信が停止することはなく、障害が発生したコンポーネントのネットワーク次元に対応するパスに沿って停止するだけである。以下に記述するように、こうした障害の回避は管理することができる。
【００６０】
一部の実施形態では、１種類のネットワークノードを使用して、ほとんどの次元および規模のネットワークを構築することができる。ネットワークの次元が高くなるほど、ネットワーク待ち時間が短くなり、かつ、低い次元のネットワークと比較して、双方向帯域幅が高くなる可能性がある。いずれの場合も、１種類のネットワークメモリーコンポーネントをビルディングブロックとすることができる。
【００６１】
一部の実施形態では、５個以下の双方向ポートだけを含み、そのうちの１つはプロセッサポート専用になるように、各ネットワークノードコンポーネントを簡素化することができる。一部の実施形態では、システムメモリーを各ネットワークコンポーネント内に含めることができる。これにより、ネットワークプロセッサの数とプロセッサの能力とに関わらず、ネットワークがどのように構築および構成されているかに従って、システムメモリーの規模がネットワークに対応したものになる。ネットワークエラーからの復旧も、簡素化および自動化することができる。
【００６２】
高次元ネットワーク用に各プロセッサＩＣに接続された複数のネットワーク／メモリーノードを使用すると、より高いローカルメモリー帯域幅およびメモリーの平均待ち時間の減少を実現するための、メモリーおよびネットワークアクセスのより高レベルの並行性をプロセッサに提供することができる。計画されたネットワークで必要な次元の数よりも多い使用可能なパスがプロセッサに存在する場合、これらのプロセッサは、同じ次元を通過するパスを２つ以上持つことができる。
【００６３】
一部の実施形態では、ノードグループに任意のプロセッサが含まれていない場合、メモリーサイズおよび実装密度を増やす方法の１つとして、システム全体のメモリーを増やすためのネットワークノードを追加する方法がある。これらの追加されたノードにより、不要な処理機能を除外することができる。たとえば、異なる種類のＩＯ機能をサポートするためのネットワークグループを提供することができる。ネットワークノードは、計算用ではなく、ＩＯ機能用に最適化または指定することができる。
【００６４】
一部の実施形態では、ＩＯプロセッサまたはその他の種類の特別なプロセッサがいずれかのネットワーク次元を使用する形態で、ネットワークを形成することができる。たとえば、３Ｄネットワークにおいて、プロセッサの１つのプレーンは、ＩＯとシグナルプロセッサとの組み合わせを含むことができる。この方法により、計算ノード間のデータトラフィックに干渉することなく、データをＩＯシグナルプレーン内に移動することができる。
【００６５】
一部の実施形態では、本明細書で説明するプロセッサは、１つ以上の処理ユニット（コアなど）を持つ単一の集積回路を含むことができる。複数のプロセッサは各ネットワークノードに接続でき、各ネットワークノードは、メモリーとプロセッサとの間でデータをルーティングする集積回路を含むことができる。プロセッサ、ネットワークノード、およびメモリーは、同じ集積回路パッケージ上に配置することができる。一部の実施形態では、こうしたプロセッサは、シングルコアプロセッサおよびマルチコアプロセッサを含むことができ、またはシングルコアプロセッサおよびマルチコアプロセッサの組み合わせを含むこともできる。一部の実施形態では、特定のノードグループのプロセッサには、マルチコアプロセッサの１つ以上のコアが含まれる。一部の実施形態では、プロセッサには、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）が含まれる。
【００６６】
一部の実施形態では、本明細書で説明するネットワークノードにはＩＯドライバ回路が含まれる。一部の実施形態では、ネットワークノードおよびメモリーは、単一のパッケージ内に配置される。一部の実施形態では、ネットワークノード、メモリー、およびプロセッサは、単一のパッケージ内に配置される。一部の実施形態では、ネットワークノードは、メモリーとプロセッサとの間のデータ通信中にエラー検出訂正（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ：ＥＣＣ）機能を実行するように構成される。ネットワークノードは、メモリーとプロセッサとの間のデータをメモリーネットワークにわたってルーティングするためのルーターを含むことができる。一部の実施形態では、ネットワークノードには、ルーティング要素の数を保持するインターフェースデバイスが含まれる。
【００６７】
一部の実施形態では、本明細書で説明するメモリーには、ダイナミックランダムアクセスメモリー（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ  ：ＤＲＡＭ）アレイが含まれる。一部の実施形態では、本明細書で説明するメモリーには、ＮＡＮＤフラッシュメモリーアレイが含まれる。一部の実施形態では、本明細書で説明するメモリーには、ＮＯＲフラッシュメモリーアレイが含まれる。一部の実施形態では、ネットワークの次元に比例してメモリーサイズを設定することができる。ローカルメモリーの帯域幅についても、ネットワークの次元に比例して設定することができる。
【００６８】
ここまで、さまざまな実施形態を例示して説明してきたが、すでに述べているように、本開示から逸脱することなく変更を行うことができる。本明細書の一部を構成する添付図面は、開示対象を実施し得るさまざまな実施形態を、限定目的ではなく説明目的として示すものである。例示された実施形態は、本明細書で開示された教示を当業者が実施可能な程度に詳細に記述されている。他の実施形態についても、これらの実施形態から使用および取得することができる。したがって、本明細書の「発明を実施するための形態」は、限定的な意味で解釈されるべきではない。
【００６９】
本明細書では具体的な実施形態を例示して説明してきたが、同じ目的を達成するために計算された配置は、本明細書で示したさまざまな実施形態の代替となり得ることが理解されよう。さらに、さまざまな実施形態で冗長シグナル転送システムを説明したが、これらのさまざまな実施形態は、変更を行うことなく、さまざまな既知の電子システムおよび電子デバイスに導入できることも理解されたい。本開示は、さまざまな実施形態のすべての適応または変形を対象としている。本明細書で説明している実施形態と、本明細書で具体的には説明していないその他の実施形態の組み合わせについても、当業者にとっては、本明細書の説明を読むことにより明らかとなるであろう。
【００７０】
本明細書の「要約書」は、技術的開示の特質を読者が迅速に確認するための要約を義務付ける、米国特許法施行規則「３７  Ｃ．Ｆ．Ｒ．  １．７２（ｂ）」に準拠して記述されている。この要約書は、請求項の意味を解釈または制限するために使用されるものではないという理解のもとに提出される。また、前述の「発明を実施するための形態」では、本開示を簡素化する目的で、さまざまな特徴を単一の実施形態にまとめている場合もある。この開示方法は、請求対象の実施形態は各請求項で明示的に列挙されるよりも多くの特徴を必要とする意図を反映すると解釈されるものではない。むしろ、添付の請求項で示すように、本発明の主題は、開示された単一の実施形態のすべての特徴よりも少ない特徴を備える。したがって、添付の請求項は、本明細書の「発明を実施するための形態」に組み込まれ、各請求項は個別の好ましい実施形態として有効である。
【図１】
0005630664.tif 000002
【図２】
0005630664.tif 000003
【図３】
0005630664.tif 000004
【図４】
0005630664.tif 000005
【図５】
0005630664.tif 000006
【図６】
0005630664.tif 000007
【図７】
0005630664.tif 000008
【図８】
0005630664.tif 000009
【図９】
0005630664.tif 000010