(57)【要約】      （修正有）【課題】マルチプロセッサシステムの限界を克服する、複数の分散型マルチポート共通メモリモジュールを組み込んだコンピュータアーキテクチャを提供する。【解決手段】複数のメモリモジュールのそれぞれは、１つ以上の関連付けられたメモリバンクまたはその他のデータ格納デバイスとともにクロスバールータとして機能する制御ブロックを備える。それぞれのメモリモジュールは、複数のＩ／Ｏポートと、所望されるメモリ位置が第１のモジュールに見出されない場合に他のメモリモジュールへと複数の要求を中継する能力とを有する。コンピュータシステムは、複数のカード間での環状の相互接続アーキテクチャを有するベースボードまたはバックプレーンを用いて相互接続される、複数のメモリモジュールカード並びに複数のプロセッサカードを備える。【選択図】図１
2014232524.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、Ｎ個のプロセッサカードスロットのアレイに装着されるＮ個のプロセッサカードと、
それぞれが、Ｍ個のメモリモジュールカードスロットのアレイに装着されるＭ個のマルチポート共通メモリモジュールと、
を備え、
前記Ｎ個のプロセッサカードスロットおよび前記Ｍ個のメモリモジュールカードスロットは環状に相互接続され、Ｎは１よりも大きな整数である、
マルチプロセッサコンピュータシステム。
【請求項２】
それぞれが、Ｎ個の付加プロセッサカードスロットのアレイに装着されるＮ個の付加プロセッサカードをさらに備え、
前記Ｎ個の付加プロセッサカードスロットは、前記Ｍ個のメモリモジュールカードスロットに対して環状に相互接続される請求項１に記載のマルチプロセッサコンピュータシステム。
【請求項３】
Ｎが３以上である請求項１または２に記載のマルチプロセッサコンピュータシステム。
【請求項４】
前記Ｍ個のマルチポート共通メモリモジュールのそれぞれは、４つのポートを有する請求項１から３のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項５】
前記Ｍ個のマルチポート共通メモリモジュールのそれぞれは、コントローラによって前記Ｎ個のプロセッサカードのそれぞれに対して動作可能に結合する少なくとも１つのメモリ格納デバイスを有する請求項１から４のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項６】
前記コントローラは、ＦＰＧＡ、ＡＳＩＣ、ＣＰＬＤ、ＰＬＤ、ＣＳＳＰ、または、ＰＳｏＣの少なくとも１つを有する請求項５に記載のマルチプロセッサコンピュータシステム。
【請求項７】
前記少なくとも１つのメモリ格納デバイスは、少なくとも１つのＳＤＲＡＭデバイスを有するメモリアレイを備える請求項５または６に記載のマルチプロセッサコンピュータシステム。
【請求項８】
前記少なくとも１つのメモリ格納デバイスは、フラッシュメモリまたはディスクドライブを有する請求項５または６に記載のマルチプロセッサコンピュータシステム。
【請求項９】
前記Ｎ個のプロセッサカードスロットの前記アレイおよび前記Ｍ個のメモリモジュールカードスロットの前記アレイは、ベースボードまたはバックプレーンのいずれかの一部分を有する請求項１から８のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項１０】
相互接続された複数のプロセッサおよび複数のメモリモジュールを備えるアレイからの複数のデータ要求を処理する方法であって、
前記複数のメモリモジュールの第１メモリモジュールへとデータ要求を向ける段階と、
要求されるデータが前記第１メモリモジュールに存在する場合は前記データ要求を提供し、存在しない場合は前記複数のメモリモジュールのうち隣接する第２メモリモジュールへと前記データ要求を向ける段階と、
前記複数のプロセッサのうちの１つに前記データ要求が由来する場合は、直接結合されたプロセッサへと要求される前記データを返し、由来しない場合であって、前記データ要求のソースＩＤが、前記複数のメモリモジュールの１つに対して前記提供を行うことと関連付けられている場合は、前記複数のプロセッサのうち直接結合された１つのプロセッサへと要求される前記データを返し、関連付けられていない場合は、前記複数のメモリモジュールのうちの前の１つへと要求される前記データを返す段階と、
を備える方法。
【請求項１１】
前記複数のプロセッサおよび前記複数のメモリモジュールは環状に相互接続される請求項１０に記載の方法。
【請求項１２】
前記複数のプロセッサのそれぞれおよび前記複数のメモリモジュールのそれぞれは、バックプレーンにおいて対応する複数のカードスロットに挿入されるそれぞれのカードに設けられる請求項１０または１１に記載の方法。
【請求項１３】
前記複数のプロセッサのそれぞれおよび前記複数のメモリモジュールのそれぞれは、ベースボードにおいて対応する複数のカードスロットに挿入されるそれぞれのカードに設けられる請求項１０または１１に記載の方法。
【請求項１４】
複数のプロセッサブロックと、
複数のマルチポート共通メモリモジュールと、
を備え、
前記複数のマルチポート共通メモリモジュールのそれぞれのプロセッサポートは、前記複数のプロセッサブロックのうち対応する１つに関連付けられ、
前記複数のマルチポート共通メモリモジュールは、要求されるメモリ位置が前記複数のマルチポート共通メモリモジュールの第１メモリモジュールに見出されない場合、前記複数のプロセッサブロックの第１プロセッサブロックから対応する前記第１メモリモジュールへと向けられた複数のメモリアクセス要求を、前記複数のマルチポート共通メモリモジュールの他のメモリモジュールへと中継するように動作できる、マルチプロセッサコンピュータシステム。
【請求項１５】
前記他のメモリモジュールは、前記第１メモリモジュールに隣接する請求項１４に記載のマルチプロセッサコンピュータシステム。
【請求項１６】
前記複数のプロセッサブロックおよび前記複数のマルチポート共通メモリモジュールは、環状に相互接続される請求項１４または１５に記載のマルチプロセッサコンピュータシステム。
【請求項１７】
前記複数のマルチポート共通メモリモジュールのそれぞれの制御機能は、ＦＰＧＡ、ＡＳＩＣ、ＣＰＬＤ、ＰＬＤ、ＣＳＳＰ、または、ＰＳｏＣの少なくとも１つによって実行される請求項１４から１６のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項１８】
前記複数のプロセッサブロックおよび前記複数のマルチポート共通メモリモジュールは、それぞれが、バックプレーンにおいて対応する複数のカードスロットに保持するためのそれぞれのカードフォームファクタを有する請求項１４から１７のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項１９】
前記複数のプロセッサブロックおよび前記複数のマルチポート共通メモリモジュールは、それぞれが、ベースボードにおいて対応する複数のカードスロットに保持するためのそれぞれのカードフォームファクタを有する請求項１４から１７のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２０】
前記複数のマルチポート共通メモリモジュールは、前記複数のプロセッサブロック用の共有される共通メモリシステムを有する請求項１４から１９のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２１】
前記複数のマルチポート共通メモリモジュールは、前記複数のプロセッサブロック用の非共有型共通メモリシステムを有する請求項１４から１９のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２２】
前記複数のマルチポート共通メモリモジュールのそれぞれは、半導体ベースまたはディスクベースのデータ格納デバイスの少なくとも一方を有する請求項１４から２１のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２３】
前記複数のマルチポート共通メモリモジュールは、転置順序で２次元データを返すこと、より大きな２次元データの組から複数の２次元のサブボリュームを返すこと、複数の３次元ボリュームから複数の２次元平面を返すこと、または、より大きな３次元ボリュームから複数の３次元サブボリュームを返すことのうちの少なくとも１つを実行するように動作できる請求項１４から２２のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２４】
前記複数のマルチポート共通メモリモジュールは、複数の読み出し／書き込み動作に対する、複数のアドレスと複数の一定の長さとのリスト、または、複数のアドレスと複数の長さとのリストの少なくとも一方を提供することを含む複数のギャザー−スキャッタＤＭＡ演算を実行するように動作できる請求項１４から２３のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２５】
前記複数のマルチポート共通メモリモジュールは、一組のアドレスのリンクリストに従って、最終的な一組の読み出されたデータに到達することを含む複数のリンクリストＤＭＡ演算を実行するように動作できる請求項１４から２３のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２６】
前記複数のマルチポート共通メモリモジュールは、未知の長さの複数のレコードを返すように動作できる請求項１４から２５のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【請求項２７】
特定のアドレスにおける前記レコードを読み出すことにより、返される前記複数のレコードの前記長さが決定される請求項２６に記載のマルチプロセッサコンピュータシステム。
【請求項２８】
前記複数のマルチポート共通メモリモジュールは、データが書き込まれるアドレスを返すように動作できる請求項１４から２７のいずれか１項に記載のマルチプロセッサコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してマルチプロセッサをベースとしたコンピュータシステムの分野に関する。より具体的には、本発明は、複数の分散型マルチポート共通メモリ（ＭＰＣＭ）モジュールを組み込んだ、マルチプロセッサコンピュータアーキテクチャに関する。メモリモジュールのそれぞれは、１つ以上の関連付けられたメモリバンクまたはその他のデータ格納デバイスとともに、クロスバールータとして機能する制御ブロックを備える。
【背景技術】
【０００２】
コンピュータシステムにおいては、複数のプロセッサが、大きな単一の共有される共通メモリにアクセスできることが望ましいことが多い。このため、歴史的に見れば、１Ｔバイトを超えるメモリ容量に到達するために、物理的に大きな組立品となることを余儀なくされてきた。従来のいくつかのシステムは、数多くのプロセッサボード間にメモリの物理的サイズを分散させ、さらに、メッセージパッシングインターフェース（ＭＰＩ）のようないくつかのソフトウェアプロトコルのうちの１つを用いて、複数のプロセッサの全てが、メモリの全てにアクセスすることができるようにすることによって、メモリの物理的サイズを低減することを試みている。そのような方法論の問題点は、非常に大きなメモリアクセス待機時間を示し、単にデータの共有化を達成するためだけにでも大きな処理電力を消費することである。
【０００３】
上記の手法は、非常に密集したパッケージを可能にするために、物理的に小さな占有面積の回路基板上に位置する低処理電力のマイクロプロセッサに向かう現在の市場の傾向に合致しない。
【発明の概要】
【０００４】
本発明の譲受人であるＳＲＣ  Ｃｏｍｐｕｔｅｒｓ，ＬＬＣは、少なくとも以下の、米国特許第６０２６４５９号明細書、米国特許第６０７６１５２号明細書、米国特許第６２４７１１０号明細書、米国特許第６２９５５９８号明細書、米国特許第６３５６９８３号明細書、米国特許第６９６１８４１号明細書、米国特許第６９６４０２９号明細書、米国特許第７００３５９３号明細書、米国特許第７１２４２１１号明細書、米国特許第７１５５６０２号明細書、米国特許第７１６７９７６号明細書、米国特許第７２３７０９１号明細書、米国特許第７２９９４５８号明細書、米国特許第７６２０８００号明細書、米国特許第７７０３０８５号明細書、及び、米国特許第７８９０６８６号明細書に開示されるものを含め、マルチプロセッサ及び再構成可能なコンピュータシステムの分野における多くの革新的技術を開発してきた。上記の特許の開示は、特に、その全体を参照により本明細書に組み込む。
【０００５】
従来型のマルチプロセッサベースのコンピュータシステムの限界を克服する、複数の分散型マルチポート共通メモリモジュールを組み込んだマルチプロセッサコンピュータアーキテクチャがここに開示される。ここに開示されるように、本発明に従った複数のマルチポート共通メモリモジュールのそれぞれは、１つ以上の関連付けられたメモリバンクまたはその他のデータ格納デバイスとともにクロスバールータとして機能する制御ブロックを備える。本発明のシステムメモリアーキテクチャは、容易に拡張可能であり、また、弱小ノード高速アレイ（Fast Arrays of Wimpy Nodes：ＦＡＷＮ）アーキテクチャに用いられるような、比較的低い性能の、あるいは"弱小な"ノードのマイクロプロセッサを使用する場合でさえも、小さなボードフォームファクタに本質的に適している。
【０００６】
概して言えば、２つ以上のメモリカードを利用した共有される共通メモリを形成する方法がここに開示される。これらのメモリカードは、複数のＩ／Ｏポートと、所望されるメモリ位置が第１のカードに見出されない場合に他のメモリカードへと複数の要求を中継する能力とを有する。メモリカードの制御機能は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、結合プログラム可能論理デバイス（ＣＰＬＤ）、プログラム可能論理デバイス（ＰＬＤ）、特定顧客向け標準品（ＣＳＳＰ）、または、プログラム可能システムオンチップ（ＰＳｏＣ）および類似のデバイスにより、有利に実行され得る。本発明の代表的な実施例においては、複数のカード間での環状の（toroidal）相互接続アーキテクチャを有するベースボードまたはバックプレーンを用いて相互接続される複数のメモリカード並びに複数のプロセッサカードを備えるコンピュータシステムが開示される。
【０００７】
本発明の教示および範囲から逸脱することなく、ここに開示された代表的な環状の相互接続トポロジーに加えて、その他のシャーシ相互接続技術も使用されてよいことに留意するべきである。さらに、例えば、インテル社から入手可能なパラゴンシステム（Paragon system）およびクレイリサーチＴ３Ｄシステムのように、全ての現存する環状ベースの相互接続システムは、特殊な環状インターフェースチップを、プロセッサがさらに接続される環の交点のそれぞれに位置させる必要がある。本発明のマルチポート共通メモリモジュールのポートは、これらの特殊なインターフェースチップを必要とせず、それどころか、複数のプロセッサおよび複数のマルチポート共通メモリモジュールの直接の結合を可能にさせる。
【０００８】
さらに、２つ以上のメモリカードを利用した非共有型メモリを形成する方法がここに開示される。これらのメモリカードは、複数のＩ／Ｏポートと、所望されるメモリ位置が第１のカードに見出されない場合に、他のメモリカードへと複数の要求を中継する能力とを有する。上記のように、メモリカードの制御機能は、ＦＰＧＡ、ＡＳＩＣ、ＣＰＬＤ、ＰＬＤ、ＣＳＳＰ、ＰＳｏＣ、または、その他の同等なプログラム可能なデバイスを用いて簡便に実行され得る。
【０００９】
本発明に従ったコンピュータシステムは、いくつかのより小さなカードにわたって分散させることにより、メモリの一部分の迅速な交換を容易にする。代表的な実施例においては、メモリカードのメモリ格納装置は、ＳＤＲＡＭ、フラッシュメモリなどの半導体メモリ、ディスクドライブベースの格納装置を含んでよく、あるいは、別のタイプのデータ格納技術によって実行されることもできる。
【００１０】
ここに具体的に開示されるものは、マルチプロセッサコンピュータシステムであって、それぞれがＮ個のプロセッサカードスロットのアレイに装着されるＮ個のプロセッサカードと、それぞれがＭ個のメモリモジュールカードスロットのアレイに装着されるＭ個のマルチポート共通メモリモジュールとを備える。Ｎ個のプロセッサカードスロットおよびＭ個のメモリモジュールカードスロットは環状に相互接続され、ここでＮは１よりも大きな整数である。
【００１１】
また、相互接続された複数のプロセッサおよび複数のメモリモジュールを備えるアレイからの複数のデータ要求を処理する方法がここに具体的に開示される。この方法は、複数のメモリモジュールのうちの第１メモリモジュールへとデータ要求を向ける段階と、第１メモリモジュールにデータが存在する場合はデータ要求を提供し、存在しない場合は、複数のメモリモジュールのうちの隣接する第２メモリモジュールへと第１メモリモジュールがデータ要求を向ける段階とを備える。この方法はさらに、複数のプロセッサのうちの１つにデータ要求が由来する場合は、直接結合されたプロセッサへと要求されるデータを返し、由来しない場合は、データ要求のソースＩＤが、複数のメモリモジュールの１つを提供することと関連付けられている場合には、複数のプロセッサのうち直接結合された１つのプロセッサへと要求されるデータを返し、関連付けられていない場合には、複数のメモリモジュールのうちの前の１つへと要求されるデータを返す段階を備える。
【００１２】
さらに、複数のプロセッサブロックと、多数のマルチポート共通メモリモジュールとを備えたマルチプロセッサコンピュータシステムがここに具体的に開示される。多数のメモリモジュールのプロセッサポートは、それぞれが、複数のプロセッサブロックのうち対応する１つに関連付けられる。多数のメモリモジュールは、要求されるメモリ位置が多数のメモリモジュールのうちの第１メモリモジュールに見出されない場合、複数のプロセッサブロックのうちの第１プロセッサブロックから対応する第１メモリモジュールへと向けられた複数のメモリアクセス要求を、多数のメモリモジュールのうちの他の１つへと中継するように動作できる。
【図面の簡単な説明】
【００１３】
添付の図面と併せて以下に記載する好ましい実施形態を参照することにより、本発明の上記したおよびその他の特徴および目的、並びにこれらを実現する態様がより明らかになり、発明自身も最もよく理解されるであろう。
【００１４】
【図１】４ポートの実施形態の例を説明する、本発明に従ったマルチポート共通メモリモジュールの代表的な実施例の機能ブロック図である。
【００１５】
【図２】本発明に従ったマルチプロセッサコンピュータアーキテクチャの代表的な実施形態であり、環状の相互接続トポロジー中に結合された多数のプロセッサカードとともに、前の図面に示されたような多数のマルチポート共通メモリモジュールカードの挿入を提供する、ベースボードまたはバックプレーンを備える代表的な実施形態のさらなる機能ブロック図である。
【００１６】
【図３】図１のマルチポート共通メモリモジュールにおけるコントローラブロックによって実行されてよい、可能なパケット処理およびルーティングサイクルを示す例示的な論理フローチャートである。
【発明を実施するための形態】
【００１７】
ここで図１を参照すると、例示的な４ポートの実施形態を説明する、本発明に従ったマルチポート共通メモリモジュール１００の代表的な実施例の機能ブロック図が示される。例示されるメモリモジュール１００は、４ポートのコントローラブロック１０２及び関連付けられたメモリバンク１０４Ａ並びに１０４Ｂを組み込んでいる。但し、コントローラブロック１０２によってその他の数のポートが提供されてよいことに留意するべきである。以降においてより十分に記載されるように、マルチポート共通メモリモジュール１００は簡便に、コンピュータベースボードまたはバックプレーンにおける挿入用に、比較的小さな占有面積のカードフォームファクタで提供されてよい。
【００１８】
マルチポート共通メモリモジュール１００は、本発明のその側面に従った代表的なマルチプロセッサコンピュータアーキテクチャの一部分として利用されるように設計される。図示および記載されるように、マルチポート共通メモリモジュールの代表的な実施例は、４ポートデバイスとして簡便に実施されてよい。マルチポート共通メモリモジュール１００のコントローラブロック１０２は、１つ以上の（ＳＤＲＡＭのような）メモリバンク１０４Ａ、１０４Ｂ、または、フラッシュメモリのような他の格納装置、ディスクドライブ等とともに、クロスバールータとして機能する。コントローラブロック１０２の機能性は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、結合プログラム可能論理デバイス（ＣＰＬＤ）、プログラム可能論理デバイス（ＰＬＤ）、特定顧客向け標準品（ＣＳＳＰ）、または、プログラム可能システムオンチップ（ＰＳｏＣ）および類似のデバイスによって簡便に実施され得る。
【００１９】
実際問題として、現在利用可能なメモリデバイス技術およびデバイスフォームファクタを仮定すると、ある所定のサイズのカードに組み込まれてよいメモリバンク１０４の総数（または、提供されるメモリの総量）に課される唯一の制限は、カード自身に固有の物理的サイズである。実施例においては、ダブルデータレート３（ＤＤＲ３）同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）デバイスを利用して使用する場合には、カードはおよそ５インチ×７インチであってよい。メモリまたは格納技術の現在の状態を仮定すると、このカードフォームファクタにより、それぞれが６４ＧバイトのＳＤＲＡＭを有する２つのメモリバンクの提供が可能である。メモリデバイスがさらに大きなビット密度を提供できるように進歩するに連れて、この格納容量は増加することができる。
【００２０】
ここでさらに図２を参照すると、本発明に従ったマルチプロセッサコンピュータアーキテクチャ２００の代表的な実施形態のさらなる機能ブロック図が示される。マルチプロセッサコンピュータアーキテクチャ２００は、多数のカードスロット２０２を介して環状の相互接続トポロジー中に結合された多数のプロセッサカードとともに、前の図面に示されるような多数のマルチポート共通メモリモジュール１００カードの挿入を提供する、ベースボードまたはバックプレーンを備える。図示されるように、この構成においては、複数のプロセッサカードおよび複数のマルチポート共通メモリモジュール１００カードは、それぞれ、自身に隣接するプロセッサカードおよびマルチポート共通メモリモジュール１００カードと通信することができる。
【００２１】
本発明のマルチプロセッサコンピュータアーキテクチャ構造全体としての性能は、ＡからＦまでおよび１から９までの相互接続パスの性能レベルに基づいて向上あるいは低下し得る。図示される代表的な実施例においては、これらの相互接続パスのそれぞれは、一対の一方向性パスを含んでよい。この一対のパスは、１つの方向にデータを伝送する第１パス、および、反対の方向にデータを伝送する第２パスを有する。このようにして、要求を出しているプロセッサカードへ返されようとしている読み出しデータに対するデータの衝突を最小限にすることができる。図示されるマルチプロセッサコンピュータアーキテクチャ２００は、９個のカードスロットの例を示しているが、本発明の精神および教示から逸脱することなく、より多くのまたはより少ない数のカードスロットが使用されてよいことが理解されるであろう。
【００２２】
図示される相互接続トポロジーは、環状の構成を備えるものであって、コンピュータ業界において既知であり、また、よく理解されている。しかしながら、使用されてよい厳密な相互接続プロトコルは重要ではないが、従来の入／出力（Ｉ／Ｏ）ベースのＭＰＩに見られるように、相互接続自身がシステム性能を制限することを防止するために、望ましくは可能な限り小さな待機時間を示すべきであり、また、任意の１つのメモリバンク１０４（図１）から利用可能なバンド幅と実質的に互換であるバンド幅を有するべきである。
【００２３】
図２に示される代表的なトポロジーを仮定すると、それぞれのマルチポート共通メモリモジュール１００カードが、図１に示されるように、４つのＩ／Ｏポートを有することが望ましいであろう。この例示的なシステムにおいては、プロセッサカードはスロット１、２、３、７、８、および９に装着され、一方、マルチポート共通メモリモジュール１００カードは、スロット４、５、および６に設置されるであろう。この例示的なシステムにおけるマルチポート共通メモリモジュール１００については、パスＡ、Ｂ、Ｃ、Ｄ、Ｅ、およびＦがプロセッサポート用であってよく、また、パス４、５、および６がメモリモジュールポート用とされてよい。例示的なアーキテクチャ２００においては、プロセッサカードの数は、マルチポート共通メモリモジュール１００において利用可能なプロセッサポートの数に対応し、メモリモジュール１００自身の数も同じである必要は無い。
【００２４】
この代表的な実施形態においては、動作の基本的なモードは以下の通りである。カードスロット１のプロセッサをイニシエータの例として考慮すると、カードスロット４のマルチポート共通メモリモジュール１００におけるメモリアレイ１０４に対して、パスＡを通じて第１の方向にメモリ参照を行う。この場合、カードスロット４のマルチポート共通メモリモジュール１００カードは、システム全体において利用可能な全メモリの３分の１を含むだけなので、この特定のモジュール上にアドレスが見出される可能性が３３．３％ある。メモリ参照がカードスロット４のモジュールのアドレス範囲内である場合、メモリトランザクションは、そのマルチポート共通メモリモジュール１００のメモリコントローラ１０２によって提供される。メモリ参照が"読み出し"である場合、次いで読み出しデータは、逆方向のデータパスＡを通じてカードスロット１のプロセッサに返される。
【００２５】
一方、カードスロット４のマルチポート共通メモリモジュールに割り当てられたアドレス範囲内には該当するアドレスが無い場合、当該モジュールのコントローラ１０２は、カードスロット５のマルチポート共通メモリモジュール１００において自身の最も近くに隣接したメモリアレイ１０４へと、パス５を介して要求を送るであろう。カードスロット５のマルチポート共通メモリモジュールにおいては、次いで、要求が提供されるべき適切なマルチポート共通メモリモジュール１００のメモリアレイ１０４に要求が届くまで、前の処理が繰り返されてよい。上記の例は、"時計回り"のルーティング方式での実施を記載したものであり、ここでは、メモリパケットは、例えばカードスロット４、５、次いで６を通って移動する。明らかに、"反時計回り"のルーティングも使用可能であり、そこでは、システム中を逆方向にパケットが循環する。
【００２６】
各メモリ要求または"パケット"は、メモリアドレスおよびソースの同定（ＩＤ）を含むであろう。このＩＤは、メモリアドレスと同様な様式で、マルチポート共通メモリモジュール１００のコントローラ１０２（図１）中のルータ回路によってデコードされる。これにより、"読み出された"データは、要求しているプロセッサに直接接続されたメモリモジュール上にその位置が無かった場合、リクエスタへと返されてよい。
【００２７】
ここでさらに図３を参照すると、図１のマルチポート共通メモリモジュールにおけるコントローラ１０２ブロックによって実行されてよい、可能なパケット処理およびルーティングサイクルを示す例示的な論理フローチャートが示される。
【００２８】
パケット処理およびルーティングサイクル３００はステップ３０２として開始される。ここでは、１つのプロセッサまたは隣接する１つのマルチポート共通メモリモジュール１００のいずれかから要求が届く。決定ステップ３０４において、もし、要求されたアドレスがマルチポート共通メモリモジュール１００に存在しない場合には、次いで要求は、ステップ３０６において次のマルチポート共通メモリモジュールへと転送される。そうでない場合には、ステップ３０８において要求が提供され、次いで決定ステップ３１０においてもしも要求がプロセッサから来たものであるとされれば、次にステップ３１２において、直接接続されたプロセッサへとデータが返される。
【００２９】
そうでない場合、決定ステップ３１０においてもしも要求がプロセッサから来たものではないとされれば、決定ステップ３１４において、要求のソースがこの特定のマルチポート共通メモリモジュール１００に接続されているか否かが決定される。もし接続されているのであれば、次にステップ３１６において、直接接続されたプロセッサへとデータが返される。そうでない場合は、ステップ３１８において、前のマルチポート共通メモリモジュール１００へとデータが返される。
【００３０】
この動作方法により、メモリが全て１つの部品中に存在することを必要とせず、且つ、大きなクロスバースイッチ部品を使用することなく、複数のプロセッサが、それぞれ、共有されるメモリの大きな共同体にアクセスすることが可能となる。機能的には、それぞれのマルチポート共通メモリモジュール１００のコントローラ１０２が最小限の待機時間を有し、利用されるプロトコルが比較的単純であって、さらに待機時間を最小化させることが望ましい。これらの基準によると非標準的なプロトコルが利用される結果になり得るので、コントローラの解決策としてＦＰＧＡが最も望ましいであろう。しかしながら、もしもマルチポート共通メモリモジュール１００の製造量が非常に大きいのであれば、コントローラ１０２の機能をＡＳＩＣで実行することが、コスト面から効果的な代替策となり得る。
【００３１】
本発明のシステムアーキテクチャの重要な特徴は、コントローラ１０２がメモリパケットを解析するためのインテリジェンスを組み込んでいるので、コントローラ１０２がまた、非従来型のメモリアクセスを実行するためのインテリジェンスも有することである。これにより、プロセッサへと戻ってくるデータが遥かに効率的に整理される。よって、これにより、遥かに改良された処理スループットがもたらされる。もしもコントローラ１０２として例えばＦＰＧＡが利用される場合には、そうした機能を容易に追加または削除できるので、そのような機能性を容易にコントローラ１０２へと組み込むことができる。
【００３２】
そのような追加機能の例は、行列転置の機能である。アレイ上で信号処理を実行する場合、高速フーリエ変換（ＦＦＴ）演算を実行し、出力された行列を転置し、次いで、別のＦＦＴ演算を実行することが望ましいことがしばしばある。従来型のメモリシステムにおいては、第１のＦＦＴ演算の出力がメモリ中の行に格納される。しかしながら第２のＦＦＴ演算が転置を実行するためには、列によってこの同じデータにアクセスしなくてはならない。ＳＤＲＡＭタイプメモリの特性のために、このような列によるアクセスは、単純なアドレス指定によっては実行することができない。その結果プロセッサは、従来においては、アレイ全体を読み出し直さねばならず、次いで、引き続き処理されるべき各カラムの要素を生成するために、アレイの個々の要素にアクセスしなければならないであろう。これは、本質的に多大な時間を要し、現代の潮流の処理技術の使用を妨げる。
【００３３】
本発明に従うと、この行列データを転置する能力をメモリコントローラ１０２そのものの中に組み込むことも可能である。その結果、プロセッサへと返されるデータは、容易に処理されるシーケンスとして届き、これによりストリーミング処理技術を使用することができる。そのような特殊なデータアクセスパターンは、単純なダイレクトメモリアクセス（ＤＭＡ）要求、および、適切なパラメータをパケットヘッダに組み込むことにより呼び出されてよい。パケットヘッダにはプロセッサＩＤがある。同じようにして、いくつか例を挙げると、アレイへのサブボリュームアクセス（sub-volume access）、ギャザー−スキャッタ（gather-scatter）、および、リンクリスト（linked list）等のようにして、多くの異なるメモリアクセス機能もまた容易に組み込むことができる。
【００３４】
さらなる単なる一例としては、コントローラ１０２の機能性は、２次元（２Ｄ）データを転置順序で返す、より大きな２次元データの組から複数の２次元サブボリュームを返す、複数の３次元（３Ｄ）ボリュームから複数の２次元平面を返す、より大きな３次元ボリュームから複数の３次元サブボリュームを返すように実施することができる。さらに、コントローラ１０２は、複数の読み出し／書き込みアクセスに対するアドレスと複数の一定の長さとのリストを提供するため、並びに、そのような読み出し／書き込みに対する複数のアドレスと複数の長さとのリストを提供するために、複数のギャザー−スキャッタＤＭＡ演算を実行するように構成することもできる。またさらに、コントローラ１０２は、一組のアドレスのリンクリストに従って、最終的な一組の読み出されたデータに到達する能力を提供するための複数のリンクリストＤＭＳ演算を実行することができる。
【００３５】
本発明のさらに他の可能な実施形態においては、コントローラ１０２はまた、未知の長さの複数のレコードを返すように機能することができる。このようにして、コントローラ１０２がレコードフォーマットに関するいくつかのインテリジェンスを提供するように動作できるので、ＤＭＡ演算が特定のアドレスにおける"レコード"を読み出すことができる。次いでレコードを読み出すことによってレコードの長さが決定され、レコードの長さをヘッダ中に含んだベクトルストリームによってデータが返されるであろう。
【００３６】
さらに、コントローラ１０２は、データが書き込まれているアドレスを実行および返すこともできる。これは、ＩＢＭ社より入手可能なデイジーチェーン化されたグローバルコンソールマネジャー（ＧＣＭ）デバイスには不可欠である。例えば、もしも複数のノードがデータの"列"にデータを書き込む場合、書込み動作を発令し、メモリのどこにデータが書き込まれたかを示すアドレスを返す能力を有するようにすることが有利であろう。よって、これにより、演算ノードに直接付随するＧＣＭのメモリを超えてノードが書き込みを行うことが可能になるであろう。
【００３７】
本発明の原理を、具体的なマルチプロセッサコンピュータアーキテクチャおよび例示的なマルチポート共通メモリモジュールと関連させて上記の通り記載してきたが、上記の記載は、単なる例示のためであり、発明の範囲を限定するものでないことははっきりと理解されるべきである。特に、上記の開示の教示は、関連技術の当業者にとって、その他の変形を示唆するであろうことが認識される。そのような変形は、それ自体が既に周知であり、また、ここに既に記載した特徴の代わりに、あるいはこれに加えて使用することのできるような、その他の特徴を含むであろう。本出願において特許請求の範囲は、これらの特徴の特定の組み合わせとして構成されているが、ここに開示する範囲はまた、関連技術における当業者にとって明らかであろう、明示的にまたは暗示的に開示された任意の新規な特徴または特徴の任意の新規な組み合わせ、あるいは、それらの任意の一般化または変形を含むものであって、そのようなものが、いずれかの請求項において現在請求されるものと同じ発明に関連しているかいないか、および、本発明が取り組むものと同じ技術的課題のいずれかまたは全てを軽減するかどうかにはかかわるものでないことは理解されるべきである。出願人は、本出願の審査過程において、あるいは、本出願から派生する任意のさらなる出願の審査過程において、このような特徴および／またはこのような特徴の組み合わせについて、新たな請求項を作成する権利をこれにより保有する。
【００３８】
ここで使用する用語である"備える"、"備えた"、または、それらに基づいた他の任意の派生語は、非排他的な包含範囲に及ぶことを意図しており、特定の要素に対する引用を備えたプロセス、方法、物品、または装置は、必ずしもこれらの要素のみを含むものではなく、明示的には引用されていない他の要素、あるいは、そのようなプロセス、方法、物品、または装置に固有の他の要素も含み得るものである。本出願における記載のいずれについても、任意の特定の要素、ステップ、または機能が、特許請求の範囲に含まれなければならない不可欠の要素であることを示すものとして解釈されるべきではない。また、特許とされた主題の範囲は、許可された請求項によってのみ定義されるものである。さらに、添付の特許請求の範囲における請求項のいずれも、"ｍｅａｎｓ  ｆｏｒ（〜する手段）"という用語そのものが使用され、且つ、その後に分詞形が続かない限り、米国特許法第１１２条第６段落を行使することを意図していない。
【図１】
2014232524.tif 000003
【図２】
2014232524.tif 000004
【図３】
2014232524.tif 000005
【外国語明細書】
2014232524000001.pdf