(57)【特許請求の範囲】
【請求項１】
各演算プロセッサが互いに他の演算プロセッサが有するメモリを参照できる分散共有メモリ方式の並列計算機システムにおける各演算プロセッサのメモリアクセス機構であって、
前記演算プロセッサは、命令プロセッサとメモリアクセスインタフェースを備え、
該命令プロセッサは、メモリアクセス要求命令を該メモリアクセスインタフェースに発行し、該メモリアクセス要求命令のアドレス部は可変長のグローバル／ローカル配分フィールドと可変長のプロセッサ番号フィールドと可変長のオフセットフィールドからなる固定長のアドレスであり、
前記メモリアクセスインタフェースは、前記固定長のアドレスにおける前記グローバル／ローカル配分フィールドの内容を判定する判定手段と、
前記固定長のアドレスにおける前記プロセッサ番号フィールドの内容を抽出する第１の抽出手段と、
前記固定長のアドレスにおける前記オフセットフィールドの内容を抽出する第２の抽出手段と、
前記判定手段による判定の結果がローカルのとき前記固定長のアドレスの全フィールドからなるローカル領域を示すアドレスにより自プロセッサのメモリに対するアクセスを開始し、前記判定手段による判定の結果がグローバルであり前記第１の抽出手段で抽出した前記プロセッサ番号フィールドの内容が自プロセッサを示すとき前記第２の抽出手段で抽出したオフセットフィールドのアドレスにより自プロセッサのメモリに対するアクセスを開始する手段と、
前記判定手段による判定の結果がグローバルであり前記第１の抽出手段で抽出した前記プロセッサ番号フィールドの内容が他プロセッサを示すとき前記第２の抽出手段で抽出したオフセットフィールドのアドレスにより他プロセッサのメモリに対するアクセスを開始する手段を備え、
前記グローバル／ローカル配分フィールドの内容を判定する判定手段は、該フィールドに相当する部分をマスクによって取り出すためのマスクレジスタと、該マスクレジスタの内容を前記命令プロセッサの指示により書き換える手段を備え、
前記第１の抽出手段は、該フィールドの内容を抽出するための前記オフセットフィールドのビット幅を示すレジスタと、該オフセットフィールドのビット幅を示すレジスタの内容を前記命令プロセッサの指示により書き換える手段を備え、
前記第２の抽出手段は、該オフセットフィールドに相当する部分をマスクによって取り出すためのマスクレジスタと、該マスクレジスタの内容を前記命令プロセッサの指示により書き換える手段を備える、ことを特徴とするメモリアクセス機構。
【請求項２】
請求項１記載のメモリアクセス機構において、
前記プロセッサ番号フィールドの内容を論理的なプロセッサ番号とし、該プロセッサ番号フィールドの内容である論理的なプロセッサ番号を物理的なプロセッサ番号に変換する変換手段を備え、
該変換手段は、プロセッサ番号変換表と、該プロセッサ番号変換表をプロセッサの指示により書き換える手段を備え、
前記各アクセスを開始する手段は前記プロセッサ番号フィールドの内容として前記変換手段で得られた物理的なプロセッサ番号を用いることを特徴とするメモリアクセス機構。
【請求項３】
請求項１記載のメモリアクセス機構において、
前記自プロセッサのメモリに対するアクセスを開始する手段は、ローカル領域の先頭アドレスを、前記ローカル領域が前記メモリ内に配置されたときの該メモリ内における該ローカルメモリ領域割当て部の先頭アドレスに変換するためのアドレス加算情報を保持するベースアドレスレジスタを備え、該ベースアドレスレジスタを用いてローカルアドレスの実メモリ上アドレスへの変換を実現し、前記ベースアドレスレジスタの内容をプロセッサの指示により書き換え可能に構成したことを特徴とするメモリアクセス機構。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、並列計算機のメモリアクセス機構およびアドレッシング方式に係り、特に並列計算機を構成する要素プロセッサ間で互いのメモリを参照可能とする分散共有メモリ方式を実現するメモリアクセス機構に関する。
【０００２】
【従来の技術】
計算機に対する高速処理性能への要求は、演算プロセッサを複数台連携して使用する並列計算機の登場を促した。ある並列計算機は、数台の演算プロセッサを有し、その数台の演算プロセッサで１つのメモリを共有して用いる形で構成された。この並列計算機をＴＣＭＰ（Ｔｉｇｈｔｌｙ  Ｃｏｕｐｌｅｄ  Ｍｕｌｔｉ−Ｐｒｏｃｅｓｓｏｒ）型の並列計算機と呼ぶ。
一方でＴＣＭＰ型よりもより多くの演算プロセッサ、具体的には数百台から数千台の演算プロセッサを有する並列計算機も登場した。この並列計算機は、ハードウェア上の実現の難易度の観点から、全演算プロセッサで１つのメモリを共有するような方式を取らずに、それぞれの演算プロセッサが独立してメモリを有する方式をとったため、分散メモリ型の並列計算機と呼ばれている。
【０００３】
分散メモリ型の並列計算機はＴＣＭＰ型の並列計算機に比べて高性能を達成できる。しかし、（単一演算プロセッサ、単一メモリを想定した）従来プログラミングスタイルに基づくプログラムの移植性やプログラミングの容易性などの観点から分散メモリ型の並列計算機に問題点があるとの指摘も存在した。そこで、近年では、分散メモリ型の並列計算機に対して、各演算プロセッサが互いに他の演算プロセッサが有するメモリを参照できるようにする分散共有メモリ方式を導入する傾向が高くなっている。
分散共有メモリを実現するためには、様々な課題が存在する。他の演算プロセッサが有するメモリをいかにして参照させるかというのも１つの課題であるが、これはアドレッシングによって解決する。具体的には、自らのアドレス空間に他の演算プロセッサが有するメモリをマッピングする。例えば、ＩＢＭが実験的に試作した並列計算機であるＲＰ３では、１９８５年のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｉｎｇの予稿集７８２ページから７８９ページの予稿である“ＲＰ３  Ｐｒｏｃｅｓｓｏｒ−Ｍｅｍｏｒｙ  Ｅｌｅｍｅｎｔ”および特公平５−２０７７６に開示されているとおり、図４に示す形態のアドレスを用いて他の演算プロセッサが有するメモリを参照する。また、特開昭５６−１５５４６５でも同様に図１１の形式のアドレスを用いる方法が開示されている。
図４のアドレスは、参照すべきメモリを有する演算プロセッサをプロセッサ番号フィールド４０１で指定し、そのメモリ内のアドレスをオフセットフィールド４０２で指定する。また、図１１のアドレスは参照すべきメモリを有する演算プロセッサの自／他を１ビットのフィールド１１０１で指定し、他のプロセッサにアクセスする際に参照すべきメモリを有する演算プロセッサをプロセッサ番号フィールド１１０２で指定し、そのメモリ内のアドレスをオフセットフィールド１１０３で指定し、自分が所有するメモリにアクセスする際には、フィールド１１０２および１１０３を連結したフィールド内容をアドレスとして使用する。
【０００４】
【発明が解決しようとする課題】
最大千台の演算プロセッサを有する並列計算機の場合、分散共有メモリ方式を実現するために３２ビットのアドレスが図４に示す形態をとれば、プロセッサ番号フィールド４０１には１０ビットを要する。すると、オフセットフィールド４０２は２２ビットしか残されないため、１つの演算プロセッサが有することのできるメモリ容量は最大で４メガバイトと比較的少なくなってしまう。この時、並列計算機全体としても最大で４ギガバイトのメモリ容量しか確保できない。一方で、同数の演算プロセッサを有しながら分散共有メモリ方式を採用しない分散メモリ型並列計算機は、最大４テラバイトのメモリを持てる。
さらに、図４のようなアドレスを採用するというアーキテクチャの並列計算機で十数台から数十台程度の演算プロセッサしか搭載しないエントリモデルを用意した場合、プロセッサ番号フィールド４０１としては４から６ビット程度しか必要でないのに１０ビットもの幅を与えられるため、多くのアドレス空間を浪費してしまう。これは、図１１のようなアドレスを採用するアーキテクチャにおいても問題となる。
以上のような問題点をふまえて、本発明の目的は、並列計算機において分散共有メモリ方式を実現する際に、例えば３２ビットという限られたアドレス空間を使用しつつも、
（１）並列計算機全体としての使用可能メモリ容量を必要に応じて大きくし、
かつ、
（２）アドレス空間を無駄なく活用することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明は、
並列計算機システムにおけるメモリアクセス機構であり、
固定長のアドレスに可変長のグローバル／ローカル配分フィールドを設け、該フィールドがローカルに設定されたとき、該アドレスを、前記並列計算機システムを構成する個々のプロセッサが参照する自メモリの固有のローカル領域のアドレスとし、
前記グローバル／ローカル配分フィールドがグローバルに設定されたとき、残りのアドレスを、前記並列計算機システムを構成するプロセッサのいくつかが所持しかつ相互に参照できるメモリのグローバル領域の内のどのプロセッサに属するグローバル領域かを指定する可変長のプロセッサ番号フィールドと、該フィールドで指示されるプロセッサの所持するメモリ上のアドレスを指定する可変長のオフセットフィールドとし、
各プロセッサはメモリアクセスインタフェースを備え、該メモリアクセスインタフェースは、前記グローバル／ローカル配分フィールドの内容を判定する手段と、前記プロセッサ番号フィールドの内容を抽出する手段と、前記オフセットフィールドの内容を抽出する手段と、前記判定の結果がローカルのとき前記ローカル領域のアドレスにより、また前記判定の結果がグローバルで前記抽出した前記プロセッサ番号フィールドの内容が自プロセッサを示すとき前記抽出したオフセットフィールドのアドレスにより自プロセッサのメモリに対するアクセスを開始する手段と、前記判定の結果がグローバルで前記抽出した前記プロセッサ番号フィールドの内容が他プロセッサを示すとき前記抽出したオフセットフィールドのアドレスにより他プロセッサのメモリに対するアクセスを開始する手段を備えるようにしている。
また、前記グローバル／ローカル配分フィールドの内容を判定する手段は該フィールドに相当する部分をマスクによって取り出すためのマスクレジスタを備え、
前記プロセッサ番号フィールドの内容を抽出する手段は該フィールドの内容を抽出するための前記オフセットフィールドのビット幅を示すレジスタを備え、
前記オフセットフィールドの内容を抽出する手段は該オフセットフィールドに相当する部分をマスクによって取り出すためのマスクレジスタを備え、
前記各マスクレジスタの内容および前記オフセットフィールドのビット幅を示すレジスタの内容をプロセッサの指示により書き換え可能に構成するようにしている。
また、前記プロセッサ番号フィールドの内容を論理的なプロセッサ番号とし、該プロセッサ番号フィールドの内容である論理的なプロセッサ番号を物理的なプロセッサ番号に変換する手段を備え、前記各アクセスを開始する手段は前記プロセッサ番号フィールドの内容として前記変換で得られた物理的なプロセッサ番号を用いるようにしている。
また、前記グローバル／ローカル配分フィールドの内容を判定する手段は該フィールドに相当する部分をマスクによって取り出すためのマスクレジスタを備え、
前記プロセッサ番号フィールドの内容を抽出する手段は該フィールドの内容を抽出するための前記オフセットフィールドのビット幅を示すレジスタを備え、
前記オフセットフィールドの内容を抽出する手段は該オフセットフィールドに相当する部分をマスクによって取り出すためのマスクレジスタを備え、
前記プロセッサ番号フィールドの内容である論理的なプロセッサ番号を物理的なプロセッサ番号に変換する手段はプロセッサ番号変換表を備え、
前記各マスクレジスタの内容および前記オフセットフィールドのビット幅を示すレジスタの内容およびプロセッサ番号変換表をプロセッサの指示により書き換え可能に構成するようにしている。
また、前記自プロセッサのメモリに対するアクセスを開始する手段は、ローカル領域の先頭アドレスを、前記ローカル領域が前記メモリ内に配置されたときの該メモリ内における該ローカルメモリ領域割当て部の先頭アドレスに変換するためのアドレス加算情報を保持するベースアドレスレジスタを備え、該ベースアドレスレジスタを用いてローカルアドレスの実メモリ上アドレスへの変換を実現し、前記ベースアドレスレジスタの内容をプロセッサの指示により書き換え可能に構成するようにしている。
【０００６】
【作用】
上記手段により、並列計算機全体としての使用可能メモリ容量を必要に応じて大きくし、かつ、アドレス空間を無駄なく活用でき、また、プロセッサ番号フィールドを可変長にすることにより分散共有メモリを実現するプロセッサ数を可変にでき、各プロセッサに割り当てられるグローバルメモリ領域の大きさも可変にできる。さらに、プロセッサ番号フィールドに論理プロセッサ番号を設定することにより小さなフィールド長でプロセッサの指定が実現でき、これによってプロセッサ当りにより大きなグローバルメモリ領域の用意ができる。また、メモリアクセスインタフェース内のレジスタ等の内容をプロセッサにより変更可能にしているため、アドレスの各フィールドに対する変更等をソフトウェアにより行なうことができる。
【０００７】
【実施例】
先ず、本発明について、概略説明を行なう。
本発明では、各演算プロセッサが、自らが所有し自らのみで参照可能なメモリ領域（以降このメモリ領域をローカル（Ｌｏｃａｌ）領域と呼ぶ。このＬｏｃａｌ領域はそれぞれのプロセッサ固有のＬｏｃａｌ領域からなる。）と、各演算プロセッサの所有物として分散して存在しながらも各演算プロセッサで相互に参照可能なメモリ領域（以降このメモリ領域をグローバル（Ｇｌｏｂａｌ）領域と呼ぶ）を同時に参照でき、かつ、そのＧｌｏｂａｌ領域とＬｏｃａｌ領域のアドレス空間における配分を任意に設定できるようにするために、図３に示すように、固定長のアドレス中に可変長のＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１を設ける。このＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１のビット幅はソフトウェアで設定可能である。
Ｇｌｏｂａｌ／Ｌｏｃａｌ配分フィールドがＬｏｃａｌに設定されたとき、そのアドレスはプロセッサ固有のＬｏｃａｌ領域のアドレス指定のためのＬｏｃａｌアドレスとなる。また、Ｇｌｏｂａｌ／Ｌｏｃａｌ配分フィールドがＧｌｏｂａｌに設定されたとき、残りのアドレスは論理プロセッサ番号フィールドとオフセットフィールドとなる。なお、論理プロセッサ番号フィールドをプロセッサ番号フィールドとしてもよく、この場合、プロセッサ番号は物理プロセッサ番号でもよい。
さらに、Ｇｌｏｂａｌ領域を任意台数の演算プロセッサで相互に共有できるようにしてアドレス空間の無駄を無くすために、図３に示すように、固定長アドレス中に設ける論理プロセッサ番号フィールド３０２（意味的には図４のプロセッサ番号フィールド４０１に相当する）を可変長とする。この論理プロセッサ番号フィールド３０２のビット幅もソフトウェアで設定可能である。
また、論理プロセッサ番号フィールド３０２の内容である論理的なプロセッサ番号から物理的なプロセッサ番号への変換は、ハードウェアによって自動的に行うが、番号変換時に参照する変換表はソフトウェアによって設定可能とする。
【０００８】
並列計算機全体としてのメモリ容量は、上記のＬｏｃａｌ領域が大きいほど大きくなる。これは、Ｇｌｏｂａｌ領域の容量がそのままの大きさで並列計算機全体としてのメモリ容量に反映されるのに対して、Ｌｏｃａｌ領域の容量がその大きさ×演算プロセッサ台数で並列計算機全体としてのメモリ容量に反映されるためである。
したがって、図３に示す可変長のＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１を用意すれば、先述の（１）の課題を解決できる。例えば、３２ビットアドレスで、Ｇｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１として１ビット用意すれば、Ｇｌｏｂａｌ領域として２ギガバイト、Ｌｏｃａｌ領域として２ギガバイト×演算プロセッサ台数のメモリが並列計算機全体として提供可能になる。
この時、千台の演算プロセッサを有する並列計算機を想定すると、先述したとおり、図４のアドレスでは全体として４ギガバイトのメモリしか提供可能でないのに対して、図３のアドレスであれば２テラバイト強のメモリを提供できる。
【０００９】
さらに、図３に示すように論理プロセッサ番号フィールド３０２を可変長としたため、先述の（２）の課題が解決できる。例えば、最大構成で千台の演算プロセッサを有する並列計算機では、図４の方式の３２ビットアドレスでは、１６台構成の（演算プロセッサ数を１６台に制限）システムでも、プロセッサ番号フィールド４０１は１０ビットで固定されるため、演算プロセッサあたり最大で４メガバイトのメモリしか有せないままであり、並列計算機全体として最大６４メガバイトのメモリしか利用できない。
一方、図３の方式で、仮にＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１の幅を０ビットとして、全アドレス空間をＧｌｏｂａｌ領域として利用したとしても、論理プロセッサ番号フィールド３０２を４ビットに制限できるため、演算プロセッサあたり２５６メガバイトのメモリを有することができ、並列計算機全体として４ギガバイトのメモリを利用できる。
【００１０】
また、本発明は、図３の３０２のフィールド内容を物理的なプロセッサ番号でなく、論理的なプロセッサ番号としたことで、以降に述べるような利点も持ち合わせている。
【００１１】
並列計算機では、システムとして用意されている演算プロセッサのうちのいくつかを選びだして利用する分割運用という利用形態が許されている。例えば、図９では１６台の要素プロセッサ（演算プロセッサ）のうち４台を選びだして利用している。
この４台の要素プロセッサ９００、９０１、９０４、９０５の間でメモリを相互参照しようとする場合、図９に示す形でそれぞれの要素プロセッサ９００、９０１、９０４、９０５に論理プロセッサ番号０、１、２、３が割り振られるため、図３の論理プロセッサ番号フィールド３０２は２ビットに制限できる。このとき、３０２のフィールド内容が物理的なプロセッサ番号であったなら、物理プロセッサ番号８以上を指定する必要がある場合も考えられ、そのフィールド幅は４ビットにならざるをえない。
上記の分割運用と似た利用形態として、互いのメモリを参照しあう要素プロセッサのグループをソフトウェア的に設定してプログラムを処理する利用形態も考えられる。この場合も分割運転時と同様の設定を行って互いのメモリを参照できるようになる。
【００１２】
次に、本発明の実施例を図によって説明する。まず、分散共有メモリ方式を採用する並列計算機を構成する要素プロセッサの一例を図２に示す。
要素プロセッサ２０１は、プログラム処理を行う命令プロセッサ２０２、命令プロセッサ２０２に接続され、命令プロセッサ２０２から出されるコマンド／アドレス／データの組に従って、主記憶２０７、Ｉ／Ｏデバイス２０５、他の要素プロセッサ２０１内の主記憶２０７などへのアクセスを発行するメモリアクセスインタフェース２０３、Ｉ／Ｏインタフェース２０４、メモリ制御ユニット２０６、他の要素プロセッサ２０１と要素プロセッサ間結合網を介してデータの受渡しを行うネットワークインタフェース２０８、Ｉ／Ｏインタフェース２０４に接続されるＩ／Ｏデバイス２０５、メモリ制御ユニット２０６に接続される主記憶２０７、および、メモリアクセスインタフェース２０３、Ｉ／Ｏインタフェース２０４、メモリ制御ユニット２０６、ネットワークインタフェース２０８を接続するバス２０９などから構成される。
本発明は、メモリアクセス機構を形成する一要素としてのメモリアクセスインタフェース２０３の構成に係る。
【００１３】
図１を用いて本発明に基づくメモリアクセスインタフェースの構成を説明する。図１における命令プロセッサ２０２、メモリアクセスインタフェース２０３およびバス２０９の接続関係は先に図２の説明で述べたとおりである。
命令プロセッサ２０２は、メモリアクセス部１０１を介してアクセス要求をメモリアクセスインタフェース２０３に伝える。メモリアクセスインタフェース２０３は、そのアクセス要求を、アクセス先を示す値（アドレス）を格納するアドレスレジスタ１０２、およびアクセスの種類を示す値（コマンド）を格納するコマンドレジスタ１０４で受け、アクセスの種類によってはアクセス要求と同時に伝えられるデータをデータレジスタ１０３で受ける。
メモリアクセスインタフェース２０３は、アクセス要求に応じた処理を完了したのち、必要に応じてアクセス結果としての結果データおよび完了信号を、それぞれデータレジスタ１０５および完了信号レジスタ１０６から命令プロセッサ２０２のメモリアクセス部１０１に伝え、一連のメモリアクセス処理を完了する。一方、メモリアクセスインタフェース２０３は、該インタフェース２０３内のバスインタフェース１１０によって、バス２０９と接続され、該バス２０９のプロトコルにしたがってメモリ制御ユニット２０６やＩ／Ｏインタフェース２０４およびネットワークインタフェース２０８などとデータやメモリアクセスコマンドなど必要な情報を受け渡しする。
【００１４】
メモリアクセスインタフェース２０３の内部には、上記のアドレスレジスタ１０２、データレジスタ１０３、コマンドレジスタ１０４、データレジスタ１０５、完了信号レジスタ１０６、バスインタフェース１１０の他に、図３に示すアドレス形式を実現するための、オフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９が存在する。
また、メモリアクセスインタフェース２０３は、図３のアドレス形式における論理プロセッサ番号フィールド３０２の値（論理プロセッサ番号）を実際のアクセス先の要素プロセッサ２０１を示す物理プロセッサ番号に変換するプロセッサ番号変換部１１６および、そのプロセッサ番号変換部１１６の中にプロセッサ番号変換表１１７を持ち、さらに、アクセス先アドレスによってそれぞれ動作する他プロセッサ記憶アクセス部１２０、自プロセッサ記憶アクセス部１２１、Ｉ／Ｏアクセス部１２３を持つ。
【００１５】
他プロセッサ記憶アクセス部１２０は、アクセス先アドレスがＧｌｏｂａｌ領域でかつ、他要素プロセッサ２０１が所有する主記憶２０７へのアクセスであるときに動作する。
また、自プロセッサ記憶アクセス部１２１は、アクセス先アドレスがＬｏｃａｌ領域であるとき、または、Ｇｌｏｂａｌ領域でかつ、自要素プロセッサ２０１が所有する主記憶２０７へのアクセスであるときに動作する。
この場合、さらに、そのアクセス先アドレスがＩ／Ｏ領域であれば、自プロセッサ記憶アクセス部１２１がＩ／Ｏアクセス部１２３を起動する。
自プロセッサ記憶アクセス部１２１は、内部にベースアドレスレジスタ１２２を持つ。ベースアドレスレジスタ１２２は、Ｌｏｃａｌ領域のメモリへのアクセス時に、そのアクセス先アドレスを自プロセッサ内の主記憶アドレスに変換するための値を保持している。
【００１６】
メモリアクセスインタフェース２０３中のオフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９、プロセッサ番号変換表１１７、および、ベースアドレスレジスタ１２２は、メモリアクセスインタフェース２０３の内部バス１２４を介してバスインタフェース１１０と接続しており、Ｉ／Ｏの形で命令プロセッサ２０２から読み書きできるようになっている。したがって、これらの内容値は命令プロセッサ２０２からソフトウェアによって設定できる。
【００１７】
先にも述べたとおり、オフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９は、図３に示すアドレス形式を実現するための構成要素である。
それぞれ、オフセット長表示レジスタ１０７は、アクセス先論理プロセッサ番号の割り出しに用いられ、アドレスマスクレジスタＡ  １０８は、Ｇｌｏｂａｌ／Ｌｏｃａｌ領域の判定に用いられ、アドレスマスクレジスタＢ  １０９は、Ｇｌｏｂａｌ領域アクセス時のアドレスオフセットの割り出しに用いられる。次に、これらの機構を説明する。
アドレスマスクレジスタＡ  １０８は、アドレスレジスタ１０２と同じビット幅を持つレジスタで、図３のアドレス形式のＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１に相当する位置のビットのみ１で、他のビットは総て０であるような値を保持する。
このレジスタ値とＬ１０１をとおして伝えられるアドレスレジスタ１０２のアドレス値で、ＡＮＤ器１１２において論理積がとられ、その結果が比較器１１４において、０を示すレジスタ１１３と比較される。Ｇｌｏｂａｌ領域へのアクセスの場合には、Ｇｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１に相当する位置のビットは全て０とする。この比較結果である一致信号Ｌ１０７に真値が出力された場合、そのアクセスがＧｌｏｂａｌ領域へのアクセスであると判定する。
【００１８】
オフセット長表示レジスタ１０７は、図３のアドレス形式におけるオフセットフィールド３０３のビット幅を示す。シフト器１１１は、このオフセット長表示レジスタ１０７の値を１つの入力としてとる。
シフト器１１１のもう一方の入力は、ＡＮＤ器１２５で生成される、Ｌ１０１をとおして伝えられるアドレスレジスタ１０２のアドレス値とアドレスマスクレジスタＡ  １０８の各ビットの論理が反転した値との論理積である。
シフト器１１１は、ＡＮＤ器１２５からの入力値を、オフセット長表示レジスタ１０７が保持する値分のビットだけ右シフトする。これによって、シフト器１１１の結果値を伝える信号線Ｌ１０６は、アクセス先論理プロセッサ番号値となる。
アドレスマスクレジスタＢ  １０９は、アドレスレジスタ１０２と同じビット幅を持つレジスタで、図３のアドレス形式のＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１および論理プロセッサ番号フィールド３０２に相当する位置のビットのみ０で、他のビットは総て１であるような値を保持する。
このレジスタ値とＬ１０１をとおして伝えられるアドレスレジスタ１０２のアドレス値で、ＡＮＤ器１１５において論理積がとられる。その結果が信号線Ｌ１１０の値となるが、これがＧｌｏｂａｌ領域アクセス時のアドレスオフセットとなる。
信号線Ｌ１０６の値、すなわち、アクセス先論理プロセッサ番号は、さらにプロセッサ番号変換部１１６に伝えられ、プロセッサ番号変換部１１６中でプロセッサ番号変換表１１７を参照しながら、アクセス先物理プロセッサ番号に変換される。このアクセス先物理プロセッサ番号値は信号線Ｌ１０９に伝えられる。なお、プロセッサ番号変換表１１７は、図５に示すような、論理プロセッサ番号フィールド５０１および物理プロセッサ番号フィールド５０２からなるエントリで構成される。
この信号線Ｌ１０９の値、すなわち、アクセス先物理プロセッサ番号値は比較器１１９で物理プロセッサ番号レジスタ１１８の値と比較される。物理プロセッサ番号レジスタ１１８の値は、このメモリアクセスインタフェース２０３が存在する要素プロセッサ２０１の物理プロセッサ番号である。比較器１１９の結果は、信号線Ｌ１０８に伝えられる。
【００１９】
メモリアクセスインタフェース２０３では、一致信号Ｌ１０７が真でかつ、一致信号Ｌ１０８が偽であれば、この状態はアクセス先アドレスがＧｌｏｂａｌ領域でかつ、他要素プロセッサ２０１が所有する主記憶２０７へのアクセスである状態であるため、この状態を伝える信号線Ｌ１１１によって他プロセッサ記憶アクセス部１２０が起動される。逆に、これ以外の状態の場合、信号線Ｌ１１１によって自プロセッサ記憶アクセス部１２１が起動される。
他プロセッサ記憶アクセス部１２０は、信号線Ｌ１１１を介して起動されると、その時点で他プロセッサ記憶アクセス部１２０に入力されている信号線Ｌ１０９（アクセス先物理プロセッサ番号）、Ｌ１１０（アクセス先要素プロセッサ２０１上のメモリアドレス）、Ｌ１０３（コマンド）、Ｌ１０２（データ）上の情報を用いて、他の要素プロセッサ２０１上のメモリへのアクセスを開始すべく、これらの情報をバスインタフェース１１０、バス２０９を介してネットワークインタフェース２０８に伝える。その後、ネットワークインタフェース２０８が他の要素プロセッサ２０１上のメモリへのアクセスを行う。
【００２０】
自プロセッサ記憶アクセス部１２１は、信号線Ｌ１１１を介して起動されると、まず、その時点で自プロセッサ記憶アクセス部１２１に入力されている信号線Ｌ１１２の値（この値は、アドレスマスクレジスタＡ  １０８の内容とオール０を示すレジスタ１１３の内容を２入力が一致する場合真値を出力する比較器１２６で比較した結果生成される信号の論理を反転させた信号とＬ１０７との論理積によって得られる）を検査し、その値が真値であれば、その時点で自プロセッサ記憶アクセス部１２１に入力されている信号線Ｌ１１０（メモリアドレス）、Ｌ１０３（コマンド）、Ｌ１０２（データ）上の情報をバスインタフェース１１０、バス２０９を介してメモリ制御ユニット２０６に伝える。その後、メモリ制御ユニット２０６は、主記憶２０７をアクセスする。
一方、自プロセッサ記憶アクセス部１２１起動時点で信号線Ｌ１１２の値が偽値であれば、次に、その時点で自プロセッサ記憶アクセス部１２１に入力されている信号線Ｌ１０１（メモリアドレス）の値を検査し、Ｌ１０１の値がＩ／Ｏ領域の範囲にあれば、Ｉ／Ｏアクセス部１２３を起動し、その時点で自プロセッサ記憶アクセス部１２１に入力されている信号線Ｌ１０１（メモリアドレス）、Ｌ１０３（コマンド）、Ｌ１０２（データ）上の情報をＩ／Ｏアクセス部１２３に伝える。
Ｉ／Ｏアクセス部１２３は、Ｉ／Ｏアクセスを開始すべく、自プロセッサ記憶アクセス部１２１から伝えられた情報をバスインタフェース１１０、バス２０９を介してＩ／Ｏインタフェース２０４に伝える。その後、Ｉ／Ｏインタフェース２０４がＩ／Ｏアクセスを行う。
自プロセッサ記憶アクセス部１２１起動時点で信号線Ｌ１１２の値が偽値であり、かつ、信号線Ｌ１０１（メモリアドレス）の値の検査の結果、その値がＬｏｃａｌのメモリ領域の範囲にあれば、信号線Ｌ１０１（メモリアドレス）の値に対して図７に示すようにベースアドレスレジスタ１２２の値の加算を施し、その結果値Ｌ７０１および、その時点で自プロセッサ記憶アクセス部１２１に入力されている信号線Ｌ１０３（コマンド）、Ｌ１０２（データ）上の情報をバスインタフェース１１０、バス２０９を介してメモリ制御ユニット２０６に伝える。その後、メモリ制御ユニット２０６は、主記憶２０７をアクセスする。
以上のアクセスの結果は、それぞれネットワークインタフェース２０８、メモリ制御ユニット２０６、Ｉ／Ｏインタフェース２０４からバス２０９およびバスインタフェース１１０を介して、データレジスタ１０５および完了信号レジスタ１０６に反映される。
【００２１】
次に、図３のアドレス形式によって実現されるアドレスマップについて図６を用いて説明する。
図６に示したアドレスマップ６０１は、図３のアドレス形式によって実現されるアドレスマップの一例である。図３のアドレス形式において、Ｇｌｏｂａｌ／ｌｏｃａｌ配分フィールド３０１として１ビットを用意し、論理プロセッサ番号フィールド３０２として３ビット用意した場合、図６のアドレスマップ６０１が実現できる。
Ｇｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１として１ビットを設けたことで、アドレスマップ６０１は、Ｌｏｃａｌ領域６０２とＧｌｏｂａｌ領域６０３に２等分される。
３２ビットアドレスの場合、図６に示すように、アドレス（００００００００）ｘから（７ＦＦＦＦＦＦＦ）ｘまでがＧｌｏｂａｌ領域６０３となり、アドレス（８０００００００）ｘから（ＦＦＦＦＦＦＦＦ）ｘまでがＬｏｃａｌ領域６０２となる。このＬｏｃａｌ領域６０２の先頭アドレス（今の場合、（８０００００００）ｘになる）を、Ａｄｒ．Ｂと定義する。
【００２２】
さらに、論理プロセッサ番号フィールド３０２として３ビット設けたことで、Ｇｌｏｂａｌ領域６０３は８等分され、それぞれ分散共有メモリを実現する８台の論理要素プロセッサ（以降論理ＰＵと略称する）が所有するメモリへのアクセスを行うためのＧｌｏｂａｌメモリ領域６０６〜６１３として定義される。
例えば、３２ビットアドレスの場合、図６に示すように、アドレス（００００００００）ｘから（０ＦＦＦＦＦＦＦ）ｘまでが論理ＰＵ０に存在するＧｌｏｂａｌメモリ領域６０６、アドレス（１０００００００）ｘから（１ＦＦＦＦＦＦＦ）ｘまでが論理ＰＵ１に存在するＧｌｏｂａｌメモリ領域６０７といった具合に、論理ＰＵ７に存在するＧｌｏｂａｌメモリ領域６１３まで等間隔にアドレスが割り振られる。このようにＧｌｏｂａｌ領域は、分散共有メモリを実現する論理ＰＵごとに割り当てられるＧｌｏｂａｌメモリ領域６０６〜６１３に分割される。
一方、Ｌｏｃａｌ領域は、このアドレスを参照する要素プロセッサが所持し、その要素プロセッサからのみアクセス可能で他の要素プロセッサからはアクセスできないＬｏｃａｌなメモリを割り当てるＬｏｃａｌメモリ領域６０５とＩ／Ｏ領域６０４に分けられる。
すなわち、Ｉ／Ｏ領域６０４は、Ｌｏｃａｌ領域６０２に割り当てられる。Ｉ／Ｏ領域６０４がＬｏｃａｌ領域６０２のどこに割り当てられるかは、ハードウェアごとに定義される。
【００２３】
ところで、以上のようなアドレスマップ６０１のＬｏｃａｌメモリ領域６０５および各Ｇｌｏｂａｌメモリ領域６０６〜６１３に対して、実際に全領域にメモリが割り当てられる訳ではない。メモリの割当て量は、各要素プロセッサに実装される主記憶容量によって左右される。図６のアドレスマップ６０１では、アドレスマップ６０１の軸（太線）の左右に線を入れた部分に実際にメモリが割り当てられている。
ここで、先に述べた８台の要素プロセッサのうち物理的な要素プロセッサ番号が０の要素プロセッサ（物理要素プロセッサ０、以降物理ＰＵ０と略称する）が所持する主記憶６１４がどのようにアドレスマップ６０１に割り当てられているかを説明する。
ここでは、物理ＰＵ０でのアドレス参照を仮定する。物理ＰＵ０内のプロセッサ番号変換表１１７においては、論理ＰＵ番号０に物理ＰＵ番号０が対応づけられているとする。
物理ＰＵ０内の主記憶６１４は、Ｌｏｃａｌメモリ領域に割り当てる部分６１５と、論理ＰＵ０に存在するＧｌｏｂａｌメモリ領域に割り当てる部分６１６とに論理的に分割される。主記憶６１４固有のアドレスとしては、アドレスＡｄｒ．Ａを境界として、アドレス（０）ｘから（Ａｄｒ．Ａ−１）までを論理ＰＵ０に存在するＧｌｏｂａｌメモリ領域に割り当てる部分６１６とし、アドレスＡｄｒ．Ａから最大アドレス（Ａｄｒ．ｍａｘ）までをＬｏｃａｌメモリ領域に割り当てる部分６１５とする。
主記憶部分６１５は、Ｌｏｃａｌメモリ領域６０５の先頭アドレスから主記憶部分６１５の容量分のアドレスを占有して割り当てられる。また、主記憶部分６１６は、論理ＰＵ０に存在するＧｌｏｂａｌメモリ領域６０６の先頭アドレスから主記憶部分６１６の容量分のアドレスを占有して割り当てられる。
上述の８台の要素プロセッサのうち物理ＰＵ０以外の物理ＰＵでは、物理ＰＵ０内の主記憶部分６１６は、他のＧｌｏｂａｌメモリ領域６０６〜６１３に割り当てられている可能性がある。どのＧｌｏｂａｌメモリ領域６０６〜６１３に割り当てられているかは、各物理ＰＵ上でのプロセッサ番号変換表１１７によって物理ＰＵ０がどの論理ＰＵに対応づけられているかによる。
【００２４】
ところで、図６のような主記憶６１４とアドレスマップ６０１の対応付けを行えば、Ｇｌｏｂａｌ領域へのアクセスの際には、図１におけるＬ１１０のアドレスオフセットをそのまま主記憶アドレスとして用いれば良い。
また、Ｌｏｃａｌメモリ領域へのアクセスの際には、図１および図７で説明したＬ１０１のアドレスへの加算値を示すベースアドレスレジスタ１２２の値を、（Ａｄｒ．Ａ−Ａｄｒ．Ｂ）で与えれば良い。
なお、ベースアドレスレジスタ１２２の値、およびＡｄｒ．Ｂはソフトウェア的に設定可能（Ａｄｒ．Ｂは、アドレスマスクレジスタＡ  １０８を設定することで決定する）であるため、Ａｄｒ．Ａもソフトウェア的に設定可能である。
【００２５】
メモリアクセスインタフェース２０３内には、ソフトウェアで値を設定可能な要素として、オフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９、ベースアドレスレジスタ１２２、プロセッサ番号変換表１１７が存在する。
ベースアドレスレジスタ１２２の設定値については、直前の段落で述べたとおりである。ここでは、オフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９の設定値について図８を用いて述べる。プロセッサ番号変換表１１７の設定値については、後に図９および図１０によって説明する。
【００２６】
３２ビットアドレスのもと、Ｇｌｏｂａｌ領域とＬｏｃａｌ領域の配分を、Ｇｌｏｂａｌ領域：Ｌｏｃａｌ領域＝１：３とし、分散共有メモリを実現する要素プロセッサ数を１６台とするには、図８に示すように、アドレス形式におけるＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１を２ビット幅、論理プロセッサ番号フィールド３０２を４ビット幅とすればよい。この時、オフセットフィールド３０３は２６ビット幅となる。
このアドレス形式を実現するためには、オフセット長表示レジスタ１０７にオフセットフィールド３０３のビット幅である２６をセットすればよい。
また、アドレスマスクレジスタＡ  １０８を、図８に示すように、アドレス形式におけるＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１に相当する左端から２ビット分のビット位置の内容のみ１で、他のビット位置の内容は０であるような状態にセットすればよい。
また、アドレスマスクレジスタＢ  １０９を、同じく図８に示すように、アドレス形式におけるＧｌｏｂａｌ／Ｌｏｃａｌ配分フィールド３０１および論理プロセッサ番号フィールド３０２に相当する左端から６ビット分のビット位置の内容のみ０で、他のビット位置の内容は１であるような状態にセットすればよい。
【００２７】
続いて、プロセッサ番号変換表１１７の設定例について述べる。図９の９１６は、先の本発明の概略説明のところで述べた並列計算機の分割運転における分割されたシステム、あるいは、ソフトウェア的な概念である要素プロセッサグループを示す。
以降の説明において、分割されたシステム、あるいは、要素プロセッサグループ内の閉じた世界だけで分散共有メモリを実現するとき、９１６をメモリ共有グループと呼ぶ。
なお、図９は、並列計算機を構成する物理ＰＵのみを抽出して、並列計算機を抽象的に表現している。本来の並列計算機は図９に示した各物理ＰＵを互いに結合する相互結合網などを持つが、ここでは説明の範囲外ということで省略した。
【００２８】
図９の並列計算機は、物理ＰＵ０  ９００から物理ＰＵ１５  ９１５までの１６台で構成される。  そして、メモリ共有グループとして動作可能な９１６は、このうち物理ＰＵ０  ９００、物理ＰＵ１  ９０１、物理ＰＵ４  ９０４、物理ＰＵ５  ９０５の４台で構成される。
９１６内では、ソフトウェア的な便宜上、９１６内の要素プロセッサを指定する手段として論理プロセッサ番号が採用される。ここでは、物理ＰＵ０  ９００から見て、物理ＰＵ０  ９００が論理ＰＵ０に対応し、物理ＰＵ１  ９０１が論理ＰＵ１に対応し、物理ＰＵ４  ９０４が論理ＰＵ２に対応し、物理ＰＵ５  ９０５が論理ＰＵ３に対応している。
９１６がメモリ共有グループとして動作する際には、この論理ＰＵ番号と物理ＰＵ番号の対応関係を示す図１０のような変換表をプロセッサ番号変換表１１７に設定する。図１０の変換表は、物理ＰＵ０  ９００内でのみ有効であり、物理ＰＵ１  ９０１、物理ＰＵ４  ９０４、物理ＰＵ５  ９０５内では、それぞれ個別に同様の変換表が生成される。
【００２９】
次に、オフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９、プロセッサ番号変換表１１７の特別な設定例を示す。アドレスマップ６０１をすべてＬｏｃａｌ領域６０２として使いたい場合、その要素プロセッサは、オフセット長表示レジスタ１０７を３２、アドレスマスクレジスタＡ  １０８の各ビットをオール０、アドレスマスクレジスタＢ  １０９の各ビットをオール１とし、プロセッサ番号変換表１１７において論理ＰＵ番号０に対応する物理ＰＵ番号を自らの物理ＰＵ番号とする。
【００３０】
ところで、これまでに説明したメモリアクセスインタフェース２０３内の、ソフトウェアで値を設定可能な要素である、オフセット長表示レジスタ１０７、アドレスマスクレジスタＡ  １０８、アドレスマスクレジスタＢ  １０９、ベースアドレスレジスタ１２２、プロセッサ番号変換表１１７は、上記のようなメモリ共有グループが定義され、システムとして動作を開始する際に、メモリ共有グループを構成する全要素プロセッサで一斉に設定される必要がある。ただし、プロセッサ番号変換表１１７については、メモリ共有グループの動作開始後もプログラムの都合などによって設定変更可能である。
以上が本発明に係る実施例である。
【００３１】
【発明の効果】
本発明によれば、多数台のプロセッサを有する並列計算機においても、必要に応じたアドレス空間の配分を可能にすることができる。
また、全体として限られたアドレス空間を効率良く、無駄なく利用することができる。
【図面の簡単な説明】
【図１】実施例におけるメモリアクセスインタフェースの構成を示す図である。
【図２】実施例における並列計算機を構成する要素プロセッサの構成例を示す図である。
【図３】実施例におけるアドレス形式を示す図である。
【図４】従来の分散共有メモリを実現する並列計算機で採用されていたアドレス形式を示す図である。
【図５】実施例におけるメモリアクセスインタフェースが所持するプロセッサ番号変換表のエントリを示す図である。
【図６】実施例におけるアドレス形式が実現するアドレスマップおよびそのアドレスマップへの主記憶アドレスとＩ／Ｏアドレスの割付けを説明する図である。
【図７】実施例におけるメモリアクセスインタフェース内の自プロセッサ記憶アクセス部におけるアドレス計算を説明する図である。
【図８】実施例におけるアドレス形式の可変値の設定例と、その設定をメモリアクセス機構に反映させるためのメモリアクセスインタフェース内のアドレスマスクレジスタＡおよびアドレスマスクレジスタＢの設定を示す図である。
【図９】実施例におけるメモリ共有グループの説明をするための図である。
【図１０】実施例におけるメモリアクセスインタフェースが所持するプロセッサ番号変換表の設定例を示す図である。
【図１１】従来の分散共有メモリを実現する並列計算機で採用されていたアドレス形式を示す図である。
【符号の説明】
１２４  内部バス
２０９  バス
６０１  アドレスマップ
６１４  物理ＰＵ０内主記憶
６１５  物理ＰＵ０内でＬｏｃａｌメモリ領域に割り当てられる物理ＰＵ０内主記憶の一部
６１６  Ｇｌｏｂａｌ領域に割り当てられる物理ＰＵ０内主記憶の一部
９１６  メモリ共有グループとして動作する可能性のある、並列計算機の分割運転における分割されたシステム、あるいは、ソフトウェア的に定義される要素プロセッサグループ
【図１】
0003687990.tif 000002
【図２】
0003687990.tif 000003
【図３】
0003687990.tif 000004
【図４】
0003687990.tif 000005
【図５】
0003687990.tif 000006
【図６】
0003687990.tif 000007
【図７】
0003687990.tif 000008
【図８】
0003687990.tif 000009
【図９】
0003687990.tif 000010
【図１０】
0003687990.tif 000011
【図１１】
0003687990.tif 000012