(57)【特許請求の範囲】
【請求項１】
ローカルメモリに情報を格納するように構成され、第一の命令を含む第一のメッセージを生成する第一のメモリノードと、
前記第一のメモリノードに結合され、前記第一のメッセージを受信するように構成された第二のメモリノードであって、前記第二のメモリノードは、前記第一のメッセージに含まれない第二の命令を含む第二のメッセージを作成し、第三のメモリノードに前記第二のメッセージを提供するようにさらに構成され、前記第三のメモリノードは、前記第二の命令に従ってメモリ動作を実施するようにさらに構成される、前記第二及び前記第三のメモリノードと、
を含む、
ことを特徴とする装置。
【請求項２】
前記第二のメモリノードは、前記第一のメッセージに基づく前記第一の命令に伴うローカル動作の結果に関連して、前記第二のメモリノード外における追加情報、処理、またはそれらの組み合わせを必要とする場合に、前記第二のメッセージを作成するように構成される、
ことを特徴とする請求項１に記載の装置。
【請求項３】
前記第一のメッセージは第一のパケットを含み、前記第二のメッセージは第二のパケットを含む、
ことを特徴とする請求項１に記載の装置。
【請求項４】
前記第二の命令に従う前記メモリ動作は、ローカルメモリに格納された情報に対する検索動作を含み、前記第三のメモリノードは、前記検索動作によって識別された情報を含む第三のメッセージを作成するようにさらに構成される、
ことを特徴とする請求項１に記載の装置。
【請求項５】
メモリシステムの第一のメモリノードで外部のプロセッサからの外部メッセージを第一のメッセージとして受信することであって、前記第一のメッセージは、第一のメモリ動作を実施するための第一の命令を含む、ことと、
前記第一の命令に応じて、第二のメモリ動作に対する第二の命令を含む内部メッセージを前記第一のメモリノードで作成することであって、前記第二の命令は、前記第一のメッセージには含まれない、ことと、
前記メモリシステムの前記第一のメモリノードから第二のメモリノードに前記内部メッセージを第二のメッセージとして提供することと、
前記第二のメッセージに応じて、前記第二のメモリノードで前記第二のメモリ動作を実施することと、
を含む、
ことを特徴とする方法。
【請求項６】
前記第一のメモリノードで前記第一のメモリ動作を実施することをさらに含む、
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記第一のメモリノードでの前記第一のメモリ動作は、読み出し動作を含む、
ことを特徴とする請求項６に記載の方法。
【請求項８】
前記第二のメモリ動作を実施することは、前記第二のメモリノードのローカルメモリにアクセスすることを含む、
ことを特徴とする請求項５に記載の方法。
【請求項９】
前記第二の命令に応じて、前記第二のメモリノードの前記ローカルメモリから読み出された情報に対する計算動作を、前記第二のメモリノードで実施することをさらに含む、
ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記第二のメッセージのフォーマットは、前記第一のメッセージのフォーマットとは異なる、
ことを特徴とする請求項５に記載の方法。
【請求項１１】
前記第二のメモリ動作に関連する情報を含む内部メッセージを前記第二のメモリノードで作成することをさらに含む、
ことを特徴とする請求項５に記載の方法。
【請求項１２】
前記第二のメモリ動作を実施することは、読み出し動作、書き込み動作、キー検索、データ構造の情報の追加および削除、データ構造内のフィールドの更新、またはそれらの組み合わせを実施することを含む、
ことを特徴とする請求項５に記載の方法。
【請求項１３】
外部のプロセッサからの第一の外部メッセージをメモリシステムの第一のメモリノードで受信することであって、前記第一の外部メッセージは、検索キーに関連する情報を検索するための第一の命令を含む、ことと、
前記検索キーに関連する情報を検索するために、前記第一のメモリノードのローカルメモリにアクセスすることと、
前記第一のメモリノードの前記ローカルメモリにおいて前記検索キーに関連する情報が見つからなかった場合に前記検索キーに関連する情報を検索するための前記第一の外部メッセージに含まれない第二の命令を含む第一の内部メッセージを前記第一のメモリノードで作成することと、
前記メモリシステムの前記第一のメモリノードから第二のメモリノードに前記第一の内部メッセージを提供することと、
前記第一の内部メッセージに応じて、前記検索キーに関連する情報を検索するために、前記第二のメモリノードのローカルメモリにアクセスすることと、
前記第一のメモリノードの前記ローカルメモリにおいて前記検索キーに関連する情報が見つからなかった場合に前記検索キーに関連する情報を検索するための前記第一の外部メッセージに含まれない第三の命令を含む第二の内部メッセージを、前記第一のメモリノードで作成することと、
前記メモリシステムの前記第一のメモリノードから第三のメモリノードに前記第二の内部メッセージを提供することと、
前記第二のメモリノードの前記ローカルメモリにおいて前記検索キーに関連する情報が見つからなかった場合に前記検索キーに関連する情報を検索するための前記第一の外部メッセージに含まれない第四の命令を含む第三の内部メッセージを、前記第二のメモリノードで作成することと、
前記メモリシステムの前記第二のメモリノードから前記第三のメモリノードに前記第三の内部メッセージを提供することと、
を含む、
ことを特徴とする方法。
【請求項１４】
前記第一および第二のメモリノードからの前記第二及び第三の内部メッセージに対応して外部プロセッサへ提供される第二の外部メッセージを前記第三のメモリノードで作成することをさらに含む、
ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第一のメモリノードの前記ローカルメモリに格納された情報および前記第二のメモリノードの前記ローカルメモリに格納された情報は、リンクされたリストデータセットの其々のデータサブセットである、
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第一の内部メッセージを前記第一のメモリノードで作成することは、前記第一のメモリノードの前記ローカルメモリにおける前記データサブセットでの、前記検索キーに関連する情報の検索を完了することに応じたものである、
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記第一のメモリノードで、前記第一のメモリノードの前記ローカルメモリから読み出された、前記検索キーに関連する情報を前記検索キーと比較することをさらに含む、
ことを特徴とする請求項１３に記載の方法。
【請求項１８】
前記第一のメモリノードの前記ローカルメモリにアクセスすることは、前記第一のメモリノードの前記ローカルメモリによって格納された情報を読み出すことを含む、
ことを特徴とする請求項１３に記載の方法。
【請求項１９】
検索キーに関連する情報を検索するための第一の命令を含む第一のメッセージを第一のメモリノードで受信し、
前記第一のメッセージに応じて、前記第一のメモリノード内のローカルメモリにおいて前記検索キーに関連する情報を検索し、
前記第一のメモリノード内の前記ローカルメモリにおいて前記検索キーに関連する情報が見つからなかった場合に、第二のメモリノード内で前記検索キーに関連する情報を検索するための前記第一のメッセージに含まれない第二の命令を含む第二のメッセージを前記第一のメモリノード内において作成し、
前記第二のメッセージを前記第二のメモリノードで受信する、
ことを特徴とする方法。
【請求項２０】
前記第一のメモリノード内の前記ローカルメモリにおいて前記検索キーに関連する情報が見つからなかった場合に、第三のメモリノード内で前記検索キーに関連する情報を検索するための前記第一のメッセージには含まれない第三の命令を含む第三のメッセージを前記第一のメモリノード内において作成し、
前記第三のメッセージを前記第三のメモリノードで受信する、
ことを更に特徴とする請求項１９に記載の方法。
【請求項２１】
前記第二のメッセージに対応して、前記第二のメモリノード内のローカルメモリにおいて前記検索キーに関連する情報を検索し、前記検索キーに関連する情報が見つからなかった場合に、第四のメモリノード内で前記検索キーに関連する情報を検索するための前記第一のメッセージに含まれない第四の命令を含む第四のメッセージを前記第二のメモリノード内において作成し、
前記第四のメッセージを前記第四のメモリノードで受信する、
ことを更に特徴とする請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［相互参照］
本出願は、２０１３年３月１５日に出願された米国非仮特許出願整理番号１３／８４２，９８４に対する優先権を享受する権利を主張し、米国非仮特許出願整理番号１３／８４２，９８４は、参照によって、その全体において、あらゆる目的で本明細書に組み入れられる。
【背景技術】
【０００２】
コンピューティングプラットフォームのコア数およびスレッド数が増加するにつれて、コンピューティングプラットフォームの処理能力は向上している。この処理能力の向上は、システムメモリにおいて対応する需要の増大をもたらす。例えば、コアおよびスレッドの数が増加するにつれて、システムメモリに対する読み出しおよび書き込み動作が増加する。メモリアクセスがコンピューティングプラットフォームに対する実質的な性能ボトルネックとなるリスクが存在する。例えば、従来のコンピュータアーキテクチャにおいては、ＣＰＵ−メモリインターフェイスは、バルクメモリ動作などに対する顕著なボトルネックを引き起こすことがある。即ち、メモリシステムによって格納される情報に対する動作を実施するためのメモリシステムに対する、メモリシステムからの、およびメモリシステム内の全てのトランザクションをＣＰＵが制御する結果としてボトルネックが生じる可能性がある。
【発明の概要】
【０００３】
本発明の一実施形態において、装置は、プロセッサと、プロセッサに結合されたメモリシステムとを含む。メモリシステムは、メモリシステムによって格納される情報にアクセスするために、プロセッサからの命令を受信するように構成される。メモリシステムは、複数のメモリノードを含み、複数のメモリノードのうちの各メモリノードは、複数のメモリノードのうちの少なくとも一つの他のメモリノードに結合され、複数のメモリノードのうちの各メモリノードは、動作のための命令を含む内部メッセージを作成するように構成される。内部メッセージは、動作を実施するために、複数のメモリノードのうちの別のメモリノードに提供される。
【０００４】
本発明の別の実施形態において、装置は、ローカルメモリに情報を格納するように構成された第一のメモリノードを含み、第一のメモリノードに結合され、第一の命令を含む第一のメッセージを受信するように構成された第二のメモリノードをさらに含む。第二のメモリノードは、第一のメッセージに含まれない第二の命令を含む第二のメッセージを作成し、第一のメモリノードに第二のメッセージを提供するようにさらに構成される。第一のメモリノードは、第二の命令に従ってメモリ動作を実施するようにさらに構成される。
【０００５】
本発明の別の実施形態において、装置は、通信するように結合された複数のメモリノードを含み、複数のメモリノードのうちの各メモリノードは、バスと、バスに結合され、情報を格納するように構成されたローカルメモリと、計算論理と、通信インターフェイスと、ノードコントローラとを含む。計算論理は、バスに結合され、ローカルメモリによって格納された情報に対する計算動作を実施するように構成される。通信インターフェイスは、バスに結合され、メモリノードとの通信を提供するように構成される。ノードコントローラは、バスに結合され、メモリ動作を実施するためにローカルメモリを制御するための命令を提供し、計算動作を実施するために計算論理を制御するための命令を提供するように構成される。ノードコントローラは、メモリノードから外部に提供される通信インターフェイスに提供される命令を含むメッセージを作成するようにさらに構成される。
【０００６】
本発明の別の実施形態において、方法は、メモリシステムの第一のメモリノードで外部メッセージを受信することを含み、外部メッセージは、第一のメモリ動作を実施するための第一の命令を含む。第一の命令に応じて、第二のメモリ動作に対する第二の命令を含む内部メッセージが第一のメモリノードで作成される。第二の命令は、外部メッセージに含まれない。第二のメッセージはメモリシステムの第二のメモリノードに提供され、第二のメモリ動作は、第二のメッセージに応じて第二のメモリノードで実施される。
【０００７】
本発明の別の実施形態において、方法は、メモリシステムの第一のメモリノードで、第一の外部メッセージを受信することを含む。第一の外部メッセージは、検索キーに関連する情報を検索するための第一の命令を含む。第一のメモリノードのローカルメモリは、検索キーに関連する情報を検索するためにアクセスされる。検索キーに関連する情報を検索するための第二の命令を含む第一の内部メッセージは、第一のメモリノードで作成される。第一の内部メッセージは、メモリシステムの第二のメモリノードに提供される。第一の内部メッセージに応じて、第二のメモリノードのローカルメモリは、検索キーに関連する情報を検索するためにアクセスされる。検索キーに関連する第一のメモリノードのローカルメモリからの情報を含む第二の内部メッセージは、第一のメモリノードで作成され、第二の内部メッセージは、メモリシステムの第三のメモリノードに提供される。検索キーに関連する第二のメモリノードのローカルメモリからの情報を含む第三の内部メッセージは、第二のメモリノードで作成され、第三の内部メッセージは、メモリシステムの第三のメモリノードに提供される。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態による、メモリシステムを含む装置のブロック図である。
【図２】本発明の一実施形態による、メモリシステムのブロック図である。
【図３】本発明の一実施形態による、メモリノードのブロック図である。
【図４】本発明の一実施形態による、メモリシステムの例示的動作のブロック図である。
【図５】リンクされたデータ構造の図である。
【図６】本発明の一実施形態による、メモリシステムの例示的動作のフロー図である。
【発明を実施するための形態】
【０００９】
本発明の実施形態の十分な理解を提供するために、或る詳細事項が以下に説明される。しかしながら、本発明の実施形態は、これらの特定の詳細事項なしに実現されてもよいことは当業者には明らかであろう。さらに、本明細書に記述された本発明の特定の実施形態は、例示として提供されるものであって、本発明の範囲をこれらの特定の実施形態に限定するために用いられるべきではない。他の例においては、既知の回路、制御信号、タイミングプロトコル、およびソフトウェア動作は、本発明を不必要に不明瞭にすることを防ぐために、詳細には示されていない。
【００１０】
図１は、本発明の一実施形態による処理システム１００を含む装置を示す。処理システム１００は、ローカルメモリバス１３０を介してメモリ１２０に結合されたプロセッサ１１０を含む。本明細書で使用されるように、“プロセッサ”とは、中央処理装置ＣＰＵ、グラフィクス処理ユニットＧＰＵ、システムコントローラ、メモリコントローラなどを指してもよい。プロセッサ１１０は、一つ以上のプロセッサを表してもよい。プロセッサ１１０は、例えば、プロセッサ１１０によって素早くアクセスされることが望まれ得るプログラム、命令、および／またはデータなどの情報を格納するためにメモリ１２０を利用してもよい。処理システム１００は、メモリバス１５０を介してプロセッサ１１０が通信するメモリシステム１４０をさらに含む。メモリシステム１４０は、比較的大量の情報、例えば、大量のプログラム、命令、および／またはその他の情報を格納するために利用されてもよい。
【００１１】
メモリシステム１４０によって格納される情報は、メモリシステム１４０によって受信されるメッセージを提供するプロセッサ１１０によってアクセスされてもよい。メッセージは、例えば、メモリシステム１４０に対する命令および／またはデータなどの情報を含んでもよい。メッセージは、実施される動作だけでなく、ソースメモリノード、宛先メモリに関連する情報も、追加的に、または代替的に含んでもよい。メモリシステム１４０は、プロセッサ１１０によって提供されるメッセージに含まれる命令に従って動作を実行してもよい。メモリシステム１４０は、プロセッサ１１０から受信されるメッセージに応じて、プロセッサ１１０にメッセージを提供してもよい。例えば、メモリシステム１４０は、メモリシステム１４０から情報を読み出すための命令を含むメッセージをプロセッサ１１０から受信してもよい。プロセッサ１１０からのメッセージに応じて、メモリシステム１４０は、読み出し動作を実施して、読み出された情報を含むメッセージをプロセッサ１１０に提供してもよい。別の実施例においては、メモリシステム１４０は、メモリシステム１４０に情報を書き込むための命令を含み、書き込まれる情報をさらに含むメッセージをプロセッサ１１０から受信してもよい。プロセッサ１１０からのメッセージに応じて、メモリシステム１４０は、メモリに情報を書き込むための書き込み動作を実施してもよい。メモリシステム１４０は、書き込み命令の完了の確認応答を含むメッセージをプロセッサ１１０に提供してもよい。種々のその他のタイプの命令、データ、および／またはその他の情報を含むメッセージも同様に、メモリシステム１４０およびプロセッサ１１０によって受信および提供されてもよい。
【００１２】
幾つかの実施形態においては、メモリシステム１４０は、複数のメモリノードを含むメモリシステムであってもよいし、または、複数のメモリノードを含むメモリシステムを含んでもよい。メモリノードは、例えば、プロセッサ１１０からのメッセージの受信に応じて動作を実行するために、メモリノード間で情報（例えば、命令、データなど）を提供するように構成されてもよい。メモリシステム１４０は、通信ネットワークを介して通信可能なように結合された複数のメモリノードを有する分散型メモリシステムを表してもよい。このようなメモリシステムでは、より高いレベルのメモリ動作のための命令を使用することができる可能性がある。このような動作は、プロセッサ１１０の関与がほとんど或いは全くなくメモリシステム１４０のノード間で管理されてもよい。記述されたようなメモリシステム１４０の利点は、処理システム１００の操作性に対する“ボトルネック”と考えられ得る、メモリバス１５０を介したメモリシステム１４０とプロセッサ１１０との間のトランザクションを減少させ得る。メモリシステム１４０とプロセッサ１１０との間のトランザクションを減少させることによって、処理システム１００の性能を改善することができる。なぜなら、メモリ動作をプロセッサ１１０が管理することに充てられる時間が短縮され得、メモリシステム１４０によって提供される情報に対する計算動作をプロセッサ１１０が実施することによって浪費される時間が短縮され得るからである。
【００１３】
図２は、本発明の一実施形態によるメモリシステム２００を示す。メモリシステム２００は、図１の処理システム１００のメモリシステム１４０に含まれてもよい。メモリシステム２００は、複数のメモリノード２１０（１）−（Ｎ）を含む。メモリノード２１０（１）−（Ｎ）は、メモリノードがメモリシステム２００の他の少なくとも一つのメモリノードと通信できるように、通信可能なように結合されてもよい。例えば、通信ネットワーク２２０は、メモリノード２１０（１）−（Ｎ）を通信可能なように結合するために使用されてもよい。幾つかの実施形態においては、メモリノード２１０（１）−（Ｎ）は、通信ネットワーク２２０を介して別のメモリノード２１０（１）−（Ｎ）とメッセージ（例えば、パケット）を交換することによって通信するように構成されてもよい。メモリノード２１０（１）−（Ｎ）間で交換されるメッセージは、種々の既知のまたは最近開発されたメッセージング技術を利用して実現されてもよい。例えば、メモリノード２１０（１）は、メモリシステム２００の他のメモリノード２１０（２）−（Ｎ）のうちの一つ、またはそのうちのいくつか、またはそのうちのいずれかに、パケットを提供することができる。このように、パケットは、メモリシステム２００のメモリノード２１０間で効率的に提供され、受信されてもよい。本明細書で記述されたようなノード間の通信は、パケットを参照して行われるが、本発明の範囲を逸脱することなく他の形式のメッセージが利用されてもよいことを理解されたい。
【００１４】
メモリノード２１０は、有線および／または無線通信媒体を介して通信可能なように結合されてもよい。メモリノード２１０間の通信は、例えば、伝送制御プロトコル／インターネットプロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：ＴＣＰ／ＩＰ）などの既知の通信プロトコルを利用してもよい。無線通信が利用される場合、メモリノード２１０は、メモリノード２１０間での通信に好適な無線通信回路を含む。同様に、有線通信が利用される場合、メモリノード２１０は、メモリノード２１０間での通信に好適な有線通信回路を含む。
【００１５】
命令および／またはデータを含むパケットは、図１を参照して上述されたように、メモリシステム２００の外部から、例えば、プロセッサ１１０から受信されてもよい。パケットは、命令および／またはデータに基づいて動作を実施するメモリノード２１０（１）−（Ｎ）のうちの一つ以上に提供される。例えば、動作は、読み出し動作、書き込み動作、キー検索、データ構造の情報の追加および／または削除、データ構造内のフィールドの更新などを含んでもよい。
【００１６】
以下により詳細に記述されるように、メモリノード２１０は、情報（例えば、データ、命令など）を格納するためのローカルメモリを含んでもよく、メモリノードが受信するパケットに応じて計算動作を実施するように構成された論理および／または処理性能を含んでもよい。計算動作の例は、ブール論理演算、算術演算、比較演算、およびその他の計算動作を含んでもよい。メモリノード２１０は、他のメモリノード２１０に提供され得るか、またはメモリシステム２００から外部に、例えば、プロセッサ１１０に提供され得るパケットを作成するだけでなく、ローカルメモリの動作を制御するように構成される論理および／またはメモリ制御性能をさらに含んでもよい。メモリノード２１０によって作成されるパケットは、命令および／またはデータを含んでもよく、命令および／またはデータに基づく動作を、受信メモリノード２１０に実施させることができる。パケットは、メモリノードに対するソースおよび宛先情報をさらに含んでもよい。
【００１７】
以下により詳細に記述されるように、メモリノードがパケットを受信すると、メモリノードは、メモリノードのローカルメモリによって格納される情報に対するローカル動作（例えば、メモリ動作、計算動作など）を実施してもよい。ローカル動作の結果に基づいて、動作は完了してもよいし、或る場合には、完了しなくてもよい。動作が、メモリノード外の追加情報および／または処理を必要とする場合、メモリノードは、追加情報および／または処理のためにメモリシステムの別のメモリノードに依存してもよい。例えば、メモリノードは、次の一つ以上の動作のために宛先メモリノードを決定し、次の一つ以上の動作のためにソースを決定し、ソースメモリノード、宛先メモリ、動作、および／またはデータに関連する情報などの種々の情報を含み得る一つ以上のパケットを作成してもよい。パケットは、メモリノードから別の一つ以上のメモリノードに提供される。
【００１８】
通信するためにメモリノード間でパケットを交換することによって、前述したように、メモリシステム２００内のメモリノードによって作成されたパケットに含まれる命令および／またはデータに基づいて、メモリノード２１０（１）−（Ｎ）による動作が実施されつつ、メモリシステム２００とプロセッサ１１０との間のトランザクションは減少する。本明細書で記述されるように、“外部”パケット（“外部”メッセージの例である）は、メモリシステムによって受信されてもよいし、またはメモリシステムによって提供されてもよく、（“内部”メッセージの例である）“内部”パケットは、メモリノード間で提供されてもよい。内部パケットは、外部パケットと同一もしくは類似するものであってもよい。例えば、内部パケットおよび外部パケットのフォーマットは類似してもよい。幾つかの実施形態においては、内部パケットは、外部パケットとは異なってもよく、例えば、内部パケットは、メモリノード間で通信するための追加情報を含んでもよいし、外部パケットとは異なるフォーマットを有してもよい。
【００１９】
図３は、本発明の一実施形態によるメモリノード３００を示す。メモリノード３００は、バス３２０に結合されたローカルメモリ３１０を含む。バス３２０は、メモリノード３００に含まれるブロック間の通信を提供するように構成される。ローカルメモリ３１０は、異なるタイプのメモリを含んでもよく、例えば、ローカルメモリ３１０は、揮発性メモリ３１０（１）および不揮発性メモリ３１０（２）を含んでもよい。ローカルメモリ３１０は、メモリノード３００に関連する情報を格納して提供するように構成されてもよい。
【００２０】
バス３２０に結合されたノードコントローラ３３０は、メモリノード３００の動作を制御するように構成されてもよい。ノードコントローラ３３０は、例えば、メモリから情報を読み出すため、またはメモリ内に情報を格納するためなど、種々のメモリ動作を実施するためにローカルメモリ３１０を制御するため、バス３２０を介して命令を提供してもよい。ノードコントローラ３３０は、ローカルメモリ３１０に格納された情報および／またはメモリノード３００に提供される情報などの情報に対する計算を実施するように構成され得る計算論理を制御してもよい。ノードコントローラ３３０は、別のメモリノードおよび／またはプロセッサ（例えば、プロセッサ１１０）と通信するなどの、メモリノード３００との通信を提供するように構成され得る通信インターフェイス３４０を制御してもよい。通信インターフェイス３４０は、バス３２０にさらに結合され、ローカルメモリ３１０との通信をも可能にする。メモリノード３００は、有線および／または無線通信用回路を含み、有線および／または無線媒体を介して通信するように構成されてもよい。例えば、通信インターフェイス３４０は、他のメモリノードとの有線通信用に構成され得る回路を含んでもよく、通信インターフェイスは、他のメモリノードとの無線通信用に構成される回路を代替的、または追加的に含んでもよい。
【００２１】
前述されたように、メモリノードに提供されるパケットは、命令およびデータなどの情報を含んでもよい。パケットの受信に応じて、ノードコントローラ３３０は、メモリ動作および計算動作を実施するために、ローカルメモリ３１０および／または計算論理３５０を制御してもよい。例えば、メモリノード３００によって受信されるパケットは、書き込み動作を実施するための命令を含んでもよく、書き込み動作に従ってローカルメモリ３１０に格納される情報をさらに含んでもよい。ノードコントローラ３３０は、パケットに含まれる情報を格納するために、ローカルメモリ３１０に対する制御信号を作成してもよい。他の実施例においては、メモリノード３００によって受信されるパケットは、ローカルメモリ３１０によって格納される情報に対する計算動作を実施するための命令を含んでもよい。ノードコントローラ３３０は、ローカルメモリ３１０に格納される情報にアクセスし、計算動作を実施するために、ローカルメモリ３１０および計算論理３５０に対する制御信号を作成してもよい。計算動作の例は、ブール論理演算、算術演算、比較演算、およびその他の計算演算を含んでもよい。
【００２２】
以下により詳細に記述されるように、ノードコントローラ３３０は、メモリノード３００を含むメモリシステムの外部に提供され得るパケットだけでなく、他のメモリノードに提供され得るパケットも作成するようにさらに構成されてもよい。ノードコントローラ３３０は、パケットの宛先（例えば、一つ以上の受信メモリノード）を決定してもよい。宛先は、例えば、情報、メモリ動作、またはその両方の組み合わせに基づいて決定されてもよい。ノードコントローラ３３０によって作成されるパケットは、動作を実施するために、他のメモリノードに対する命令を含んでもよい。パケットは、他のメモリノードに対する情報を、代替的または追加的に含んでもよい。したがって、メモリノードは、メモリシステムの内部で作成されるパケットに対する宛先ノードをローカルに決定してもよく、作成されるパケットは、メモリノードでのローカルな処理結果に基づいたものであってもよい。
【００２３】
メモリシステム２００などのメモリシステム内にメモリノード３００を含むことによって、メモリシステムとのメモリトランザクション回数を減少させることができる。プロセッサによって発行される命令は、情報をプロセッサに来させるのではなく、（メモリシステム内に格納された）情報に実質的に移動する。情報をプロセッサに来させることは、利用されないメモリシステム帯域幅を残す一方で、プロセッサに対して顕著な動作負荷をかける。プロセッサによる介在がほとんどなく、メモリノード間で内部的に動作を制御するように構成され得るメモリシステムを有する結果として、処理システムの動作効率が改善される可能性がある。
【００２４】
図４は、本発明の一実施形態によるメモリシステムの例示的動作の図を示す。図４の例は、本発明の一実施形態によるメモリシステム（例えば、図２のメモリシステム２００）による、メモリ要求を含むパケットの受信に関連する。パケットは、例えば、図１のプロセッサ１１０などのプロセッサから受信されてもよく、“外部”パケットと称される。図４の例においては、メモリ要求は、外部パケット内で識別される“キー”に関連する情報を見つけて提供するための受信メモリシステムに対するものである。
【００２５】
外部パケットは、矢印４０２によって図４に示されるように、キーに関連する情報を要求するために、メモリノード２１０（１）によって受信される。メモリノード２１０（１）のノードコントローラは、外部パケットに応じた動作、例えば、ローカルメモリに格納された情報にアクセスして、メモリノード２１０（１）のローカルメモリ内にキーに関連する情報が存在するか否かを判定するための動作を実施してもよい。例えば、メモリノード２１０（１）のノードコントローラは、メモリノード２１０（１）のローカルメモリ内に要求を満足する何らかの情報が格納されているか否か、即ち、格納された何らかの情報がキーに一致するか否かを判定するための計算論理による比較のためにローカルメモリから格納された情報を提供するため、メモリノード２１０（１）のローカルメモリにメモリコマンドを提供してもよい。
【００２６】
メモリノード２１０（１）のノードコントローラおよび計算論理によって実施される動作に加えて、メモリノード２１０（１）（例えば、“送信”メモリノード）は、メモリシステム２００の他のメモリノード（例えば、“受信”メモリノード）にパケット（例えば、“内部”パケット）が提供されるべきと決定する。メモリノード２１０（１）のノードコントローラは、図４に示されるように、内部パケットに対する受信ノードを決定し、メモリノード２１０（１）は、図４に矢印４１０、４１２および４１４によって示されるように、メモリノード２１０（３）、２１０（５）および２１０（１０）に内部パケットを提供して、情報に対する要求を継続する。
【００２７】
メモリノード２１０（１）によって提供される内部パケットは、例えば、他のメモリノードのローカルメモリによって格納され得るキーに一致する情報を検索し続けるために、情報を要求するための命令を含んでもよい。内部パケットは、例えば、キーに一致する際に送信メモリノードによって実施される動作中に識別される情報などの情報を代替的に、または追加的に含んでもよい。メモリノード２１０（１）によって提供される内部パケットは、それが受信した外部パケット（例えば、矢印４０２によって表される）からの情報（例えば、命令、データなど）のうちの幾つかもしくはそのすべてを含んでもよい。メモリノード２１０（１）によって提供される内部パケットは、メモリノード２１０（１）が受信した外部パケットに含まれない情報を含んでもよい。例えば、内部パケットは、外部パケットに含まれなかった、メモリノード２１０（１）のノードコントローラおよび計算論理によって作成された情報を含んでもよい。情報は、例えば、外部パケットに関連する情報要求を満足するために、受信メモリノードが動作を実施するのを支援してもよい。
【００２８】
送信メモリノードからの内部パケットの受信、内部パケットに応じた動作の実施、および／または受信メモリノードによる別のメモリノードに対する内部パケットの提供（例えば、“受信”メモリノードは、新たな“送信”メモリノードとなる）は、メモリシステム２００中で継続してもよい。例えば、メモリノード２１０（１）によりメモリノード２１０（３）に対して提供される内部パケットに応じて（例えば、矢印４１０）、メモリノード２１０（３）のノードコントローラおよび計算論理は、メモリ２００に対する最初の要求を満足する情報をそのローカルメモリで検索することなどの動作を実施してもよい。メモリノード２１０（３）のノードコントローラは、例えば、メモリ２００に対する最初の要求に関連する命令、および／または最初の要求を満足するメモリノード２１０（３）のローカルメモリ内で識別されたデータなどの情報を含み得る追加の内部パケットをさらに作成してもよい。内部パケットは、メモリノード２１０（４）および２１０（６）に対して（例えば、其々矢印４１６および４１８によって表されるように）、メモリノード２１０（３）によって提供される。
【００２９】
図４にさらに示されるように、メモリノード２１０（３）からメモリノード２１０（４）に対する内部パケットは、（矢印４２４によって表されるように）メモリノード２１０（７）に提供されるメモリノード２１０（４）による別の内部パケットの作成を引き起こし、それに応じて、メモリノード２１０（７）は、内部パケットを作成し、メモリノード２１０（６）に（矢印４２６によって表されるように）提供する。同様に、（矢印４１４によって表されるように）メモリノード２１０（１）から内部パケットを受信したメモリノード２１０（１０）は、メモリノード２１０（６）に（矢印４２２によって表されるように）提供される内部パケットを作成して提供する。（矢印４１２によって表されるように）メモリノード２１０（１）から内部パケットを受信したメモリノード２１０（５）は、メモリノード２１０（６）に提供される内部パケットを作成して（矢印４２０によって表されるように）提供する。
【００３０】
前述されたように、送信メモリノードからの内部パケットの受信によって、受信された内部パケットに含まれる命令および／またはデータに関連する動作、例えば、受信メモリノードのローカルメモリでの情報検索を受信メモリノードに実施させる。さらに、受信メモリノードは、別のメモリノードに提供される命令および／またはデータを含む内部パケットを作成してもよい。受信メモリノード（その後送信メモリノードとなる）によって作成される内部パケットは、新たな受信メモリノードに対する命令および／またはデータを含んでもよい。
【００３１】
メモリノード２１０（６）は、図４の矢印４１８、４２０、４２６、および４２２によって示されるように、メモリノード２１０（３）、２１０（５）、２１０（７）、および２１０（１０）から内部パケットを其々受信する。メモリノードからの内部パケットは、メモリノードが送信メモリノードから受信した其々の内部パケットに含まれるメモリ要求を満足する其々のメモリノードのノードコントローラおよび計算論理によって識別される情報を含んでもよい。例えば、メモリノード（例えば、２１０（３）、２１０（５）、２１０（７）、および２１０（１０））からの内部パケットは、例えば、（例えば、図４に矢印４０２によって表されるような）メモリシステム２００によって受信された外部パケットに関連する情報に対する最初の要求に関連する動作を実施するための、メモリノードに対する命令を含んでもよい。図４の例においては、メモリノード２１０（６）は、キーに一致するメモリノードによって識別されるデータなどの情報に対する最初の要求を満足すると、其々のメモリノードによって識別された他のメモリノード（例えば、送信メモリノード）からの情報を集約してもよい。
【００３２】
図４の例においては、送信メモリノードから受信された内部パケットに基づいて、メモリノード２１０（６）のノードコントローラは、他のメモリノードからそれに提供された情報を含む内部パケットを作成する。内部パケットは、（矢印４２８によって表されるように）メモリシステム２００の外部に、例えば、矢印４０２によって表される外部パケットをメモリシステム２００が受信したプロセッサに提供される。メモリノード２１０（６）によって提供される内部パケットは、情報の要求を全体として満足するメモリシステム２００からの情報、即ち、２１０（１）によって最初に受信された外部パケットのキーに関連する情報を含んでもよい。
【００３３】
図４の例に示されるように、メモリシステム２００は、メモリシステム２００によって受信される外部パケットに応じて内部で動作を管理してもよい。例えば、メモリシステム２００のメモリノード２１０（１）−（Ｎ）は、メモリシステム２００の他のメモリノードに、送信メモリノードのノードコントローラによって作成された内部パケットを提供してもよい。内部パケットは、メモリシステム２００によって受信された外部パケットに関連する動作を満足するための動作を実施するために、受信メモリノードに対する情報（例えば、命令および／またはデータ）を含んでもよい。外部パケットに関連する動作がメモリシステム２００により完了された時に、外部パケットはメモリシステム２００によって提供されてもよい。
【００３４】
図５は、本発明の一実施形態により、検索され得るリンクされるリストデータセットに対するデータ構造５００を示す。データ構造５００は、キー“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ｆ”、および“Ｇ”に関連する情報を含むより大きなデータセットを形成するために互いにリンクされる情報を表す。より詳細には、データ構造５００は、より大きなデータセットを形成するために、ポインタによって互いにリンクされるデータサブセット５１０−５７０を含む。データサブセット５１０−５７０の各々は、其々のキーに関連する情報を含む。データ構造５００の“ヘッド”は、アドレス０×１０００に配置されキー“Ａ”に関連する情報を含むデータサブセット５１０に関連づけられる。データサブセット５１０内のポインタ５１２は、アドレス０×１０８０に配置されキー“Ｂ”に関連する情報を含むデータサブセット５２０を指し示し、それによって、データサブセット５１０および５２０をリンクする。同様に、アドレス０×２０００に配置され、キー“Ｃ”に関連する情報を含むサブセット５３０は、ポインタ５２２によってデータサブセット５２０にリンクされる。アドレス０×０８００、０×３０００、０×４０８０、および０１１００に配置され、キー“Ｄ”、“Ｅ”、“Ｆ”、および“Ｇ”に関連する情報を含むデータサブセット５４０、５５０、５６０、および５７０は全て、其々、あるデータサブセットから別のデータサブセットを指し示すポインタ５３２、５４２、５５２、および５６２によって、データサブセット５３０に同様にリンクされ、互いにリンクされる。
【００３５】
従来のシステムにおいては、検索キー“Ｅ”に一致する情報をデータ構造５００で検索するために、ＣＰＵは、例えば、アドレス０×１０００におけるデータサブセット５１０に関連するデータ構造５００のヘッドに現在の検索ポインタを設定する。ＣＰＵは、ポインタによって識別される現在位置から情報を読み出すためにメモリ読み出し命令を発行し、現在位置から読み出された情報を検索キー“Ｅ”と比較する。現在位置から読み出された情報が検索キー“Ｅ”に一致する場合、検索は完了して終了する。しかしながら、現在位置からの情報が検索キー“Ｅ”に一致しない場合、ＣＰＵは、次の位置へ検索ポインタを進め、その位置がその後現在位置になる。
【００３６】
前述したように、ＣＰＵは、ポインタによって識別された（新たな）現在位置から情報を読み出すためのメモリ読み出し命令を発行し、現在位置から読み出された情報を比較する。新たな現在位置を指し示すステップ、現在位置から情報を読み出すステップ、検索キー“Ｅ”と情報を比較するステップは、情報が見つかるまで繰り返され、あるいはデータ構造５００全体が検索されても情報が見つからなかった場合、その時点で検索は終了する。図５の例示的データ構造５００においては、データサブセット５５０は、検索キー“Ｅ”に一致する情報を含む。結果として、データサブセット５５０（ポインタ５４２によってリンクされる）から情報を読み出し、その情報が検索キー“Ｅ”に一致すると判定し、ＣＰＵが検索を終了する時点まで、ＣＰＵは、ポインタ５１２、５２２、および５３２によって互いにリンクされたデータサブセット５１０、５２０、５３０、および５４０における情報を読み出す。
【００３７】
従来のシステムに対する例においては、ＣＰＵは、メモリ読み出し命令を発行し、現在位置から読み出された情報を検索キーと比較し、完了によって検索を終了することの負荷が課される。
【００３８】
図６は、本発明の一実施形態によるメモリシステムに対してデータ構造５００を検索するためのフロー図を示す。データ構造５００は、ＣＰＵがメモリシステムに一つの命令を発行するのに基づいて、情報を検索されてもよい。現在位置からの情報の読み出しと、その情報と検索キーとの比較は、メモリシステムの内部で管理され、より詳細には、メモリシステムのメモリノードによって管理される。本実施例の目的として、データ構造５００の各データサブセットは、本発明の一実施形態による複数のメモリノードを含むメモリシステムの其々のメモリノード、例えば、メモリノード２１０（図２）および／またはメモリノード３００（図３）によって格納される。
【００３９】
ステップ６１０において、メモリシステムは、検索キー（例えば、検索キー“Ｅ”）に一致する情報を見つけるためにデータ構造５００を検索し、データ構造５００のヘッド、より詳細には、アドレス０×１０００におけるデータサブセット５１０で開始するための命令をＣＰＵから受信する。ステップ６１４において、データサブセット５１０を含むメモリノードなどのメモリノードは、ポインタによって識別される現在位置の読み出し動作を実施する。ステップ６２０において、メモリノードは、現在位置から読み出された情報を検索キーと比較する。ステップ６２４において現在位置からの情報が検索キーに一致する場合、続いてステップ６３０において、メモリノードは、検索キーに一致する情報を含み、情報が見つかったことを示す情報をさらに含む外部パケットを作成する。ステップ６３４において、外部パケットは、メモリノードによってＣＰＵに提供される。
【００４０】
ステップ６２４において現在位置からの情報が検索キー（例えば、検索キー“Ｅ”）に一致しない場合、現在位置が検索されているデータ構造の終端（例えば、最終位置）であるか否かがステップ６４０において判定される。現在位置が最終位置である場合、ステップ６４４において、メモリノードは、検索キーに一致する情報が見つからなかったことを示す情報を含む外部パケットを作成する。外部パケットは、ステップ６３４において、メモリノードによってＣＰＵに提供される。現在位置が最終位置ではない場合、ステップ６５０において、メモリノードは、次の位置を現在位置に変えるために、検索ポインタを次の位置に進める。ステップ６５４において、現在位置が同一のメモリノード内にあるか否かがメモリノードによって判定される。現在位置が同一のメモリノード内にある場合、メモリノードは、（ステップ６１４において）現在位置からの情報を読み出し、（ステップ６２０において）検索キーと情報とを比較し、（ステップ６２４において）情報が検索キーに一致するか否かを判定するプロセスを開始する。
【００４１】
ステップ６５４において現在位置が同一のメモリノード内にないことがメモリノードによって判定される場合、ステップ６６０において、メモリノードは、検索キー（例えば、検索キー“Ｅ”）に一致する情報を検索するための命令を含む内部パケットを作成する。内部パケットは、ステップ６６４において、現在位置を含むメモリノードに提供される。現在位置を含むメモリノードは、内部パケットを受信し、現在位置からの情報を読み出し（ステップ６１４）、検索キーと情報とを比較し（ステップ６２０）、情報が検索キーに一致するか否かを判定する（ステップ６２４）プロセスを開始する。
【００４２】
全てのメモリ読み出し命令を発行し、現在位置からの情報を検索キーと比較し、完了によって検索を終了することがＣＰＵに課される従来のシステムを利用するデータ構造５００を検索するのとは対照的に、メモリ読み出し動作および比較がメモリシステム内のメモリノードによって実施される。ＣＰＵが最初の検索命令を発行する時点から外部パケットがメモリシステムによってＣＰＵに提供される時点まで、ＣＰＵは自由に他の動作を実施できる。
【００４３】
メモリシステムは、複数のメモリノードを含んでもよく、メモリノードは情報を格納するためのローカルメモリを含む。メモリノードは、メモリノード内の動作を制御し、他のメモリノードに提供され得る内部パケットを作成するように構成されたノードコントローラを含むだけでなく、情報に対する動作を実施するように構成された計算論理をさらに含んでもよい。内部パケットは、受信メモリノードに対する情報、例えば、受信メモリノードによって実施される動作に対する命令および／または受信メモリノードに対するデータを含んでもよい。本発明の実施形態は、ＣＰＵとメモリシステム（例えば、図１のプロセッサ１１０とメモリシステム１４０）との間でのメモリトランザクション回数を減少させ、さらには、メモリシステムによって格納される情報に対する動作を管理するためのＣＰＵに対する負荷を低減させるために使用されてもよい。
【００４４】
本明細書には本発明の特定の実施形態が例示として記述されてきたが、本発明の趣旨および範囲を逸脱することなく種々の改変が行われてもよいことを前述から理解されたい。したがって、本発明は、添付の請求項以外によって限定されることはない。
【図１】
0006333353.tif 000002
【図２】
0006333353.tif 000003
【図３】
0006333353.tif 000004
【図４】
0006333353.tif 000005
【図５】
0006333353.tif 000006
【図６】
0006333353.tif 000007