(57)【要約】複数のＰＥのうちたとえばＰＥ＃０をマスタＰＥとし、このマスタＰＥのメモリ空間に、ＰＥ＃１〜＃ｎのメモリ領域を一時的に割り当てる。そして、各ＰＥのメモリ領域が割り当てられた位置に、各ＰＥ用のプログラムを転送する。また、メモリ空間内の同一位置をＰＥ＃１〜＃ｎで使い回す、すなわち、ある位置にＰＥ＃１のメモリを割り当ててＰＥ＃１のプログラムを書き込み、次に上記位置にＰＥ＃２のメモリを割り当ててＰＥ＃２のプログラムを書き込む。このようにして、分散共有メモリ型マルチプロセッサ方式を採用する計算機において、ＭＰＭＤプログラミングにもとづくプログラムを動作させることでメモリの有効利用をはかるべく、複数あるＰＥに、各ＰＥ用のプログラムを選択的に転送できるマルチＰＥローダを実現する。
2004099981.tif 000002
【特許請求の範囲】
【請求項１】
複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるプログラムのロード方法において、
前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるメモリ空間割り当て工程と、
前記マスタＰＥ以外のＰＥで実行されるプログラムを前記メモリ空間割り当て工程で当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
を含んだことを特徴とするプログラムのロード方法。
【請求項２】
前記メモリ空間割り当て工程では、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする前記請求の範囲第１項に記載のプログラムのロード方法。
【請求項３】
前記メモリ空間割り当て工程では、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする前記請求の範囲第１項に記載のプログラムのロード方法。
【請求項４】
複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるプログラムのロード方法において、
前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定する定義情報設定工程と、
前記定義情報設定工程で設定された定義情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
を含んだことを特徴とするプログラムのロード方法。
【請求項５】
複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるロードプログラムにおいて、
前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるメモリ空間割り当て工程と、
前記マスタＰＥ以外のＰＥで実行されるプログラムを前記メモリ空間割り当て工程で当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
をプロセッサに実行させることを特徴とするロードプログラム。
【請求項６】
前記メモリ空間割り当て工程では、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする請求の範囲第５項に記載のロードプログラム。
【請求項７】
前記メモリ空間割り当て工程では、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする請求の範囲第５項に記載のロードプログラム。
【請求項８】
複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるロードプログラムにおいて、
前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定する定義情報設定工程と、
前記定義情報設定工程で設定された定義情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
をプロセッサに実行させることを特徴とするロードプログラム。
【請求項９】
複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムを構成するマルチプロセッサにおいて、
前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるメモリ空間割り当て手段と、
前記マスタＰＥ以外のＰＥで実行されるプログラムを前記メモリ空間割り当て手段により当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送するプログラム転送手段と、
前記プログラム転送手段により転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示手段と、
を備えたことを特徴とするマルチプロセッサ。
【請求項１０】
前記メモリ空間割り当て手段は、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする請求の範囲第９項に記載のマルチプロセッサ。
【請求項１１】
前記メモリ空間割り当て手段は、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする請求の範囲第９項に記載のマルチプロセッサ。
【請求項１２】
複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムを構成するマルチプロセッサにおいて、
前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定する定義情報設定手段と、
前記定義情報設定手段により設定された定義情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送するプログラム転送手段と、
前記プログラム転送手段により転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示手段と、
を備えたことを特徴とするマルチプロセッサ。
【発明の詳細な説明】
【技術分野】  この発明は、複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるプログラムのロード方法、ロードプログラムおよびマルチプロセッサに関する。
【背景技術】  近年の計算機システムでは、複数のプロセッサを搭載することでシステムの処理能力を向上させるべく、「分散メモリ型マルチプロセッサ方式（Ｄｉｓｔｒｉｂｕｔｅｄ−Ｍｅｍｏｒｙ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ）」が採用されることがある（たとえば特許文献１、特許文献２参照。）。
【特許文献１】          特開昭５６−４０９３５号公報
【特許文献２】          特開平７−６４９３８号公報
第１図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。図示するように、プロセッサ（ＰＲＯＣＥＳＳＯＲ）１０１とメモリ（ＭＥＭＯＲＹ）１０２とから構成されるＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ：プロセッサ要素）１００がｎ個、相互接続網（ＩＮＴＥＲＣＯＮＮＥＣＴＩＯＮ  ＮＥＴＷＯＲＫ）１０３により接続されている。
また、第２図は上記システムにおけるメモリ空間の定義例を模式的に示す説明図である。図示するように個々のプロセッサ１０１は、同じＰＥ１００内のメモリ１０２だけを読み書きすることができる。
そしてこのようなシステムにおいては、ＭＰＩ（Ｍｅｓｓａｇｅ−Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などのプロセッサ間通信機構を用いることで、ＳＰＭＤ（Ｓｉｎｇｌｅ−Ｐｒｏｇｒａｍ  Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）プログラミングにもとづくプログラムが実行されることが多い。
第３図は上記プログラムの一例を示す説明図である。図示するプログラムはｎ個のメモリ１０２にそれぞれ格納され、ｎ個のプロセッサ１０１によりそれぞれ実行される。プログラムは同一でも、ＰＥ１００のＩＤ（番号）により処理が分岐するので、ｎ個のＰＥ１００による並列処理が実現される。
たとえば図示するプログラムでは、「ｍｙ＿ｒａｎｋ」が上記ＩＤを示す変数であり、ｍｙ＿ｒａｎｋ＝０以外のＰＥではｉｆ以下の処理が、ｍｙ＿ｒａｎｋ＝０のＰＥではｅｌｓｅ以下の処理が、それぞれ実行されることになる。ただ、個々のプロセッサが実行するのはプログラムの一部（以下では「部分プログラム」という）であるにもかかわらず、各ＰＥにはプログラムの全体が配分されるので、それだけの容量のメモリを用意しなければならず、コストがかさんでしまうことは否めない。
ところで、第１図に示したような分散メモリ型マルチプロセッサ方式にもとづくシステムは、従来は半導体集積技術の限界から、複数のチップ（および複数のボード）により構成されてきた。しかしながら、近年の半導体集積技術の向上により、複数のＰＥを一つのチップに収めることが可能となっている。
この場合、相互接続網を介したＰＥ間のデータの受け渡しはパケット伝送方式ではなく、共有メモリにデータを直接ストア／共有メモリからデータを直接ロードすることで、より高速に行うことができる。このように、複数のプロセッサから読み書きされる共有メモリを設ける方式を、「分散共有メモリ型マルチプロセッサ方式」と呼ぶ。
第４図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。ＰＥ４００、プロセッサ４０１および相互接続網４０３は、第１図に示した分散メモリ型マルチプロセッサ方式のＰＥ１００、プロセッサ１０１および相互接続網１０３と同一であるが、差異はメモリ４０２に、他のＰＥ内のプロセッサからも読み書きできるＳＭ（Ｓｈａｒｅｄ  Ｍｅｍｏｒｙ：共有メモリ）と、同一のＰＥ内のプロセッサからしか読み書きできないＬＭ（Ｌｏｃａｌ  Ｍｅｍｏｒｙ：固有メモリ）との２種類ある点である。
また、第５図は上記システムにおけるメモリ空間の定義例を示す説明図である。図中、たとえば１番のＰＥ（ＰＥ＃１）のＳＭは、０番のＰＥ（ＰＥ＃０）のメモリ空間および１番のＰＥ（ＰＥ＃１）のメモリ空間に重複して割り当てられている。
仮に、ＰＥ＃１のＳＭがＰＥ＃０のメモリ空間では０ｘ３０００以下、ＰＥ＃１のメモリ空間では０ｘ２０００以下のアドレスに割り当てられていたとすると、たとえばＰＥ＃０が０ｘ３０００にデータを書き込み、ＰＥ＃１が０ｘ２０００からデータを読み出すことで、ＰＥ＃０とＰＥ＃１との間で上記データを授受できたことになる。
なお、図示する例ではＰＥ＃０のみが、他のすべてのＰＥのＳＭを参照・変更することができる。一方ＰＥ＃１〜＃ｎの各メモリ空間には、物理的に他のＰＥに属するメモリが割り当てられていないので、これらのＰＥは同一ＰＥ内のＬＭおよびＳＭを参照・変更するのみである。
そして、このような分散共有メモリ型マルチプロセッサ方式の計算機システムでは、プログラムをＳＰＭＤでなくＭＰＭＤ（Ｍｕｌｔｉｐｌｅ−Ｐｒｏｇｒａｍ  Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）プログラミングにもとづいて作成することで、上述のコストの問題を解決することができる。
ＭＰＭＤにもとづくプログラミングでは、ＳＰＭＤのように各ＰＥにより実行される部分プログラムをすべて結合したようなプログラムでなく、端的にそれぞれのＰＥ向けのプログラムを作成する。各ＰＥ用のプログラムには、他ＰＥ用の部分プログラムが含まれないので、その分メモリの容量を小さくすることができる。
第６図はＰＥ＃０、第７図はＰＥ＃１向けのプログラムの一例をそれぞれ示す説明図である。これらはＰＥ＃０からＰＥ＃１に必要なデータを渡して、所定の処理を依頼した後、その結果を受け取るためのプログラムである。
すなわちまずＰＥ＃０において、変数ｉｎｐｕｔを読み出して、その値を変数ｉｎに書き込み（第６図Ｔｈ０−１）、次にＰＥ＃１の関数Ｔｈ１の実行を指示する（第６図Ｔｈ０−２）。これを受けたＰＥ＃１では、Ｔｈ１の中で変数ｉｎを入力として関数ｆ１を呼び出し、その実行結果を変数ｏｕｔに書き込む（第７図Ｔｈ１−１）。その後、ＰＥ＃０は変数ｏｕｔを読み出し、その値を変数ｏｕｔｐｕｔに書き込む（第６図Ｔｈ０−３）。
なお、実際のプログラムではＰＥ＃１に処理を依頼した後（すなわちＴｈ０−２の後）、ＰＥ＃０はＰＥ＃１とは無関係な別の処理に移行するが、ここでは簡略化してＰＥ＃０−ＰＥ＃１間の連携部分のみを示している。
そして本出願人は、第６図や第７図に示したようなプログラムの、ロードモジュールの作成に関する特許をすでに出願している（たとえば、特願２００２−２３８３９９号を参照。）。
上記発明にかかるリンカは、分散共有メモリ型マルチプロセッサ方式の計算機システムでは、物理的に同一の場所にあるデータでもＰＥごとにアドレスが異なる点を考慮して、たとえば同じ「変数ｉｎ」であっても、ＰＥ＃０向けのプログラムで現れたときは「０ｘ３０００」、ＰＥ＃１向けのプログラムで現れたときは「０ｘ２０００」に変換することで、個々のＰＥで実行可能なロードモジュールを作成する。
しかしながら、従来は上記発明により作成されたロードモジュールを、各ＰＥに効率的に配分する手段（具体的にはマルチＰＥローダ）が存在しなかった。
すなわち従来のローダは、ＳＭＰＤプログラミングにもとづくプログラムを対象としていたため、ＲＯＭ４０４内のロードモジュールを、単にローダが動作するＰＥ内のメモリ４０２に転送するだけであった。そのためＰＥが複数ある場合は、それぞれのＰＥでローダを実行しなければならず、しかもＰＥごとに異なるプログラムをロードするので、ＰＥごとに異なるローダが必要になってしまう。
この発明は上記従来技術による問題を解決するため、分散共有メモリ型マルチプロセッサ方式を採用する計算機システムに、ＭＰＭＤプログラミングにもとづいて作成されたプログラム（のロードモジュール）をロードすることが可能なプログラムのロード方法、ロードプログラムおよびマルチプロセッサを提供することを目的とする。
【発明の開示】
上述した課題を解決し、目的を達成するため、この発明にかかるプログラムのロード方法、ロードプログラムまたはマルチプロセッサは、複数のＰＥを備えた計算機システムにより実行されるプログラムのロード方法、ロードプログラムまたはマルチプロセッサにおいて、前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるとともに、前記マスタＰＥ以外のＰＥで実行されるプログラムを当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送し、さらに転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示することを特徴とする。
また、この発明にかかるロード方法、ロードプログラムまたはマルチプロセッサは、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする。
また、この発明にかかるロード方法、ロードプログラムまたはマルチプロセッサは、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする。
また、この発明にかかるロード方法は、複数のＰＥを備えた計算機システムにより実行されるプログラムのロード方法において、前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定するとともに、当該情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送し、さらに転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示することを特徴とする。
これらの発明によって、複数あるＰＥのそれぞれに異なるプログラムを実行させる場合でも、マスタＰＥ（ＰＥの一つであって、本発明によるマルチＰＥローダを実行するＰＥ）の制御の下で各ＰＥへのプログラムのロードが適切に行われる。
【図面の簡単な説明】  第１図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図であり、第２図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムにおける、メモリ空間の定義例を模式的に示す説明図であり、第３図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、ＳＰＭＤプログラミングにもとづくプログラムの一例を示す説明図であり、第４図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図であり、第５図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムにおける、メモリ空間の定義例を模式的に示す説明図であり、第６図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、ＭＰＭＤプログラミングにもとづくプログラムの一例（ＰＥ＃０用）を示す説明図であり、第７図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、ＭＰＭＤプログラミングにもとづくプログラムの一例（ＰＥ＃１用）を示す説明図であり、第８図は、従来技術によるローダ実行前のメモリ空間の様子を示す説明図であり、第９図は、従来技術によるローダ実行後のメモリ空間の様子を示す説明図であり、第１０図は、本発明によるローダ実行前のメモリ空間の様子を示す説明図であり、第１１図は、本発明によるローダ実行後のメモリ空間の様子を示す説明図であり、第１２図は、本発明の実施の形態１にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示すブロック図であり、第１３図は、本発明の実施の形態１にかかるメモリ空間割り当て部１２０１による、メモリ空間の割り当て状況を示す説明図であり、第１４図は、本発明の実施の形態１にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートであり、第１５図は、本発明の実施の形態２にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートであり、第１６図は、本発明の実施の形態２にかかるメモリ空間割り当て部１２０１による、メモリ空間の割り当て状況を示す説明図であり、第１７図は、本発明の実施の形態３にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示す説明図であり、第１８図は、本発明の実施の形態３にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートであり、第１９図は、本発明の実施の形態３にかかるマルチプロセッサにおける、プログラムの転送経路を模式的に示す説明図である。
【発明を実施するための最良の形態】  以下に添付図面を参照して、この発明にかかるプログラムのロード方法、ロードプログラムおよびマルチプロセッサの好適な実施の形態を詳細に説明するが、その前に本発明の基本方針を簡単に説明する。
第８図は、従来技術によるローダ実行前のメモリ空間の様子、第９図は上記ローダ実行後のメモリ空間の様子をそれぞれ示す説明図である。図示するように従来のローダでは、プロセッサのメモリ空間内でプログラムが転送されるのみである。なお、プロセッサが複数ある場合は、各プロセッサのメモリ空間で同様に図示するような状況となる。
一方、第１０図は本発明によるローダ実行前のメモリ空間の様子、第１１図は上記ローダ実行後のメモリ空間の様子をそれぞれ示す説明図である。図示するように本発明では、複数あるＰＥ４００のうちいずれか一つ、ここではＰＥ＃０で実行されるマルチＰＥローダが、ＲＯＭ４０４内のロードモジュールから各ＰＥ向けのものを選択して、それぞれのＰＥに転送する。以下で説明する実施の形態１〜３は、この転送手順の詳細に関するものである（転送前後のメモリ空間の様子は実施の形態によらず同一）。なお、上記ローダが実行されるＰＥを本発明では「マスタＰＥ」と呼ぶ。
（実施の形態１）
第１２図は、本発明の実施の形態１にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示すブロック図である。同図に示す各機能部は、第４図に示したＲＯＭ４０４内のプログラム、具体的にはマルチＰＥローダを、マスタＰＥのプロセッサ４０１がメモリ４０２に読み出して実行することにより実現される。
図中、１２００は初期化部であり、上記ローダの初期化（変数のゼロクリア、パラメータの設定など）を行う機能部である。１２０１はメモリ空間割り当て部であり、マスタＰＥのメモリ空間に、マスタＰＥ以外の各ＰＥの固有メモリ領域（ＬＭ）を割り当てる機能部である。
第１３図は、本発明の実施の形態１にかかるメモリ空間割り当て部１２０１による、メモリ空間の割り当て状況を模式的に示す説明図である。図示するように、実施の形態１ではマスタＰＥであるＰＥ＃０のメモリ空間中、本来ＰＥ＃０の共有メモリ領域（ＳＭ）が割り当てられる位置に、ＰＥ＃１〜ＰＥ＃ｎの固有メモリ領域（ＬＭ）を一時的に割り当てる。ＰＥ＃１〜ＰＥ＃ｎの固有メモリ領域は、原則として他のＰＥからは読み書きできない領域であるが、プログラムのロード時だけ、例外的にＰＥ＃０のメモリ空間にマップされる結果、ＰＥ＃０からの直接の読み書きが可能となる。
なお、このマップ処理は各ＰＥおよびバスのレジスタを設定することにより行う。設定に必要な情報は、マルチＰＥローダにあらかじめ保持されているものとする。
第１２図に戻り、次に１２０２はプログラム転送部であり、ＲＯＭ４０４上の各ＰＥ用のプログラムを、それぞれのＰＥのメモリ４０２にロードする機能部である。転送先は具体的には、ＰＥ＃０の固有メモリ領域、および上述のメモリ空間割り当て部１２０１によりＰＥ＃０のメモリ空間に割り当てられた、ＰＥ＃１〜＃ｎの固有メモリ領域である。
１２０３は実行指示部であり、プログラム転送部１２０２によるプログラムのロード後、ロードされたプログラムの実行を各ＰＥに対して指示する機能部である。
次に、第１４図は本発明の実施の形態１にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
ＲＯＭ４０４上のマルチＰＥローダを実行するマスタＰＥ（ＰＥ＃０）は、まずその初期化部１２００により上記ローダを初期化した後（ステップＳ１４０１）、メモリ空間割り当て部１２０１により、自己のメモリ空間に他ＰＥの固有メモリ領域を順次割り当てる。すなわち第１３図に示したように、ＰＥ＃１の固有メモリ領域、ＰＥ＃２の固有メモリ領域、・・・、ＰＥ＃ｎの固有メモリ領域を、ＰＥ＃０のメモリ空間の異なる位置にそれぞれ割り当てる（ステップＳ１４０２）。
そして、マスタＰＥはさらにプログラム転送部１２０２により、ＰＥ＃０の固有メモリ領域が割り当てられた位置にはＰＥ＃０用のプログラム、ＰＥ＃１の固有メモリ領域が割り当てられた位置にはＰＥ＃１用のプログラム、・・・、ＰＥ＃ｎの固有メモリ領域が割り当てられた位置にはＰＥ＃ｎ用のプログラムというように、各ＰＥの固有メモリ領域へ当該ＰＥ用のプログラムを順次ロードする（ステップＳ１４０３）。
そして、マスタＰＥはその実行指示部１２０３から、ＰＥ＃１〜ＰＥ＃ｎのプロセッサ４０１に対して、上記でロードしたプログラムの実行を指示する（ステップＳ１４０４）。この後、上記指示を受けた個々のＰＥにおいて、その固有メモリ領域にロードされたプログラムが実行される（ステップＳ１４０５）。
以上説明した実施の形態１によれば、ＲＯＭ４０４に格納された各ＰＥ向けのプログラムを、マスタＰＥ上で動作するマルチＰＥローダにより、それぞれ対象となるＰＥのメモリ４０２へ分配することができる。
（実施の形態２）
さて、上述した実施の形態１では、ＰＥ＃０のメモリ空間にＰＥ＃１〜＃ｎの固有メモリ領域を同時に割り当てたが、この方式だとマスタＰＥのメモリ４０２には、マスタＰＥ以外のすべてＰＥの固有メモリ領域を格納できるだけの容量が必要である。そこで、以下に説明する実施の形態２のように、メモリ空間の同一の位置をＰＥ＃１〜＃ｎで順次使い回すことで、ＰＥ＃０に必要なハードウエアを削減するようにしてもよい。
本発明の実施の形態２にかかるマスタＰＥの機能構成は、第１４図に示した実施の形態１のそれと同様であるので説明を省略する。第１５図は、本発明の実施の形態２にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
ＲＯＭ４０４上のマルチＰＥローダを実行するマスタＰＥ（ＰＥ＃０）は、まずその初期化部１２００により上記ローダを初期化した後（ステップＳ１５０１）、メモリ空間割り当て部１２０１により、自己のメモリ空間にＰＥ＃ｋの固有メモリ領域を割り当てる（ステップＳ１５０２）。続いて、プログラム転送部１２０２により、上記領域にＰＥ＃ｋ用のプログラムをロードする（ステップＳ１５０３）。
そして、ステップＳ１５０２およびＳ１５０３の処理を１からｎまでのｋについて繰り返した後、マスタＰＥはその実行指示部１２０３から、ＰＥ＃１〜ＰＥ＃ｎのプロセッサ４０１に対して、上記でロードしたプログラムの実行を指示する（ステップＳ１５０４）。この後、上記指示を受けた個々のＰＥにおいて、その固有メモリ領域にロードされたプログラムが実行される（ステップＳ１５０５）。
以上説明した実施の形態２によれば、第１６図に示すように、ＰＥ＃０のメモリ空間の同一位置へＰＥ＃１〜＃ｎの固有メモリ領域を割り当てるので、マスタＰＥのメモリ容量が少なくても、個々のＰＥへそれぞれのプログラムを分配することができる。
（実施の形態３）
さて、上述した実施の形態１および２では、ＰＥ＃０のメモリ空間にＰＥ＃１〜＃ｎの固有メモリ領域を逐一割り当てたが、ＰＥの個数が増えてくると、このマッピングにかかるオーバーヘッドの増大が無視できない。そこで、以下に説明する実施の形態３のように、プログラムの転送を専用のハードウエア（具体的にはＤＭＡコントローラ）により行うようにしてもよい。
実施の形態３では、マスタＰＥであるＰＥ＃０に、第４図のハードウエアに加えてＤＭＡコントローラが搭載されている（あるいは逆に、ＤＭＡコントローラを備えたＰＥを常にマスタＰＥにすると言ってもよい）。そして、ＰＥ＃０からＰＥ＃１〜＃ｎへのプログラムの転送を、もっぱらこのＤＭＡコントローラにより行う。
第１７図は、本発明の実施の形態３にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示す説明図である。図中、初期化部１７００および実行指示部１７０３の機能は、実施の形態１および２の初期化部１２００および実行指示部１２０３のそれと同一である。
また、プログラム転送部１７０２も、プロセッサ４０１でなくＤＭＡコントローラにより実現される点を除けば、ＲＯＭ４０４上の各ＰＥ用のプログラムを各ＰＥのメモリ４０２にロードするという機能において、実施の形態１および２のプログラム転送部１７０２と同一である。
ただし実施の形態３では、実施の形態１および２のメモリ空間割り当て部１２０１に相当する機能部がなく、代わりに定義情報設定部１７０１が設けられている。
この定義情報設定部１７０１は、プログラム転送部１７０２すなわちＤＭＡコントローラがプログラムの転送にあたって必要とする定義情報、具体的には（１）転送先（転送先のＰＥの識別子と当該ＰＥ内のアドレス）、（２）転送領域のサイズ、（３）転送元（転送元のＰＥの識別子と当該ＰＥ内のアドレス）の３つを、所定のレジスタなどにセットする機能部である。なお、これらの定義情報はローダにあらかじめ保持されているものとする。
次に、第１８図は本発明の実施の形態３にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
ＲＯＭ４０４上のマルチＰＥローダを実行するマスタＰＥ（ＰＥ＃０）は、まずその初期化部１７００により上記ローダを初期化した後（ステップＳ１８０１）、定義情報設定部１７０１により、ＲＯＭ４０４からＰＥ＃ｋのメモリ４０２へデータを転送するための定義情報を設定する（ステップＳ１８０２）。続いて、プログラム転送部１７０２により、上記情報に従ってＰＥ＃ｋにプログラムをロードする（ステップＳ１８０３）。
そして、ステップＳ１８０２およびＳ１８０３の処理を１からｎまでのｋについて繰り返した後、マスタＰＥはその実行指示部１７０３から、ＰＥ＃１〜ＰＥ＃ｎのプロセッサ４０１に対して、上記でロードしたプログラムの実行を指示する（ステップＳ１８０４）。この後、上記指示を受けた個々のＰＥにおいて、その固有メモリ領域にロードされたプログラムが実行される（ステップＳ１８０５）。
以上説明した実施の形態３によれば、第１９図に示すように、専用ハードウエア（具体的にはＤＭＡコントローラ）を介してプログラムを転送するので、ハードウエア的なコストは増大するものの、実施の形態１や２よりも高速にプログラムのロードをおこなうことができる。
なお、実施の形態１〜３によるプログラムのロード方法は、ＲＯＭ４０４に格納されたマルチＰＥローダをプロセッサ４０１が実行することにより実現されるが、このプログラムはＲＯＭ４０４のほか、ＨＤ、ＦＤ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどプロセッサ４０１で読み取り可能な各種の記録媒体に記録され、当該記録媒体によって配布することができる。また、インターネットなどのネットワークを介して配布することも可能である。
以上説明したように本発明によれば、複数あるＰＥのそれぞれに異なるプログラムを実行させる場合でも、マスタＰＥの制御の下で各ＰＥへのプログラムのロードが適切に行われ、これによって、分散共有メモリ型マルチプロセッサ方式を採用する計算機システムに、ＭＰＭＤプログラミングにもとづいて作成されたプログラム（のロードモジュール）をロードすることが可能なプログラムのロード方法、ロードプログラムおよびマルチプロセッサが得られるという効果を奏する。
【産業上の利用可能性】  以上のように本発明は、分散共有メモリ型マルチプロセッサ方式を採用する計算機において、ＭＰＭＤプログラミングにもとづくプログラムを動作させることでメモリの有効利用をはかるべく、複数あるＰＥに、各ＰＥ用のプログラムを選択的に転送できるマルチＰＥローダを実現することに適している。
【図１】
2004099981.tif 000003
【図２】
2004099981.tif 000004
【図３】
2004099981.tif 000005
【図４】
2004099981.tif 000006
【図５】
2004099981.tif 000007
【図６】
2004099981.tif 000008
【図７】
2004099981.tif 000009
【図８】
2004099981.tif 000010
【図９】
2004099981.tif 000011
【図１０】
2004099981.tif 000012
【図１１】
2004099981.tif 000013
【図１２】
2004099981.tif 000014
【図１３】
2004099981.tif 000015
【図１４】
2004099981.tif 000016
【図１５】
2004099981.tif 000017
【図１６】
2004099981.tif 000018
【図１７】
2004099981.tif 000019
【図１８】
2004099981.tif 000020
【図１９】
2004099981.tif 000021
【手続補正書】
【提出日】平成17年3月18日(2005.3.18)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】      明細書
【特許請求の範囲】
【請求項１】  複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるプログラムのロード方法において、
前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるメモリ空間割り当て工程と、
前記マスタＰＥ以外のＰＥで実行されるプログラムを前記メモリ空間割り当て工程で当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
を含んだことを特徴とするプログラムのロード方法。
【請求項２】  前記メモリ空間割り当て工程では、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする前記請求の範囲第１項に記載のプログラムのロード方法。
【請求項３】  前記メモリ空間割り当て工程では、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする前記請求の範囲第１項に記載のプログラムのロード方法。
【請求項４】  複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるプログラムのロード方法において、
前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定する定義情報設定工程と、
前記定義情報設定工程で設定された定義情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
を含んだことを特徴とするプログラムのロード方法。
【請求項５】  複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるロードプログラムにおいて、
前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるメモリ空間割り当て工程と、
前記マスタＰＥ以外のＰＥで実行されるプログラムを前記メモリ空間割り当て工程で当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
をプロセッサに実行させることを特徴とするロードプログラム。
【請求項６】  前記メモリ空間割り当て工程では、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする請求の範囲第５項に記載のロードプログラム。
【請求項７】  前記メモリ空間割り当て工程では、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする請求の範囲第５項に記載のロードプログラム。
【請求項８】  複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるロードプログラムにおいて、
前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定する定義情報設定工程と、
前記定義情報設定工程で設定された定義情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送するプログラム転送工程と、
前記プログラム転送工程で転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示工程と、
をプロセッサに実行させることを特徴とするロードプログラム。
【請求項９】  複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムを構成するマルチプロセッサにおいて、
前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるメモリ空間割り当て手段と、
前記マスタＰＥ以外のＰＥで実行されるプログラムを前記メモリ空間割り当て手段により当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送するプログラム転送手段と、
前記プログラム転送手段により転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示手段と、
を備えたことを特徴とするマルチプロセッサ。
【請求項１０】  複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムを構成するマルチプロセッサにおいて、
前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定する定義情報設定手段と、
前記定義情報設定手段により設定された定義情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送するプログラム転送手段と、
前記プログラム転送手段により転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示する実行指示手段と、
を備えたことを特徴とするマルチプロセッサ。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は、複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を備えた計算機システムにより実行されるプログラムのロード方法、ロードプログラムおよびマルチプロセッサに関する。
【０００２】
【背景技術】
近年の計算機システムでは、複数のプロセッサを搭載することでシステムの処理能力を向上させるべく、「分散メモリ型マルチプロセッサ方式（Ｄｉｓｔｒｉｂｕｔｅｄ−Ｍｅｍｏｒｙ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ）」が採用されることがある（たとえば特許文献１、特許文献２参照。）。
【０００３】
【特許文献１】  特開昭５６−４０９３５号公報
【特許文献２】  特開平７−６４９３８号公報
【０００４】
第１図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。図示するように、プロセッサ（ＰＲＯＣＥＳＳＯＲ）１０１とメモリ（ＭＥＭＯＲＹ）１０２とから構成されるＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ：プロセッサ要素）１００がｎ個、相互接続網（ＩＮＴＥＲＣＯＮＮＥＣＴＩＯＮ  ＮＥＴＷＯＲＫ）１０３により接続されている。
【０００５】
また、第２図は上記システムにおけるメモリ空間の定義例を模式的に示す説明図である。図示するように個々のプロセッサ１０１は、同じＰＥ１００内のメモリ１０２だけを読み書きすることができる。
【０００６】
そしてこのようなシステムにおいては、ＭＰＩ（Ｍｅｓｓａｇｅ−Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などのプロセッサ間通信機構を用いることで、ＳＰＭＤ（Ｓｉｎｇｌｅ−Ｐｒｏｇｒａｍ  Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）プログラミングにもとづくプログラムが実行されることが多い。
【０００７】
第３図は上記プログラムの一例を示す説明図である。図示するプログラムはｎ個のメモリ１０２にそれぞれ格納され、ｎ個のプロセッサ１０１によりそれぞれ実行される。プログラムは同一でも、ＰＥ１００のＩＤ（番号）により処理が分岐するので、ｎ個のＰＥ１００による並列処理が実現される。
【０００８】
たとえば図示するプログラムでは、「ｍｙ＿ｒａｎｋ」が上記ＩＤを示す変数であり、ｍｙ＿ｒａｎｋ＝０以外のＰＥではｉｆ以下の処理が、ｍｙ＿ｒａｎｋ＝０のＰＥではｅｌｓｅ以下の処理が、それぞれ実行されることになる。ただ、個々のプロセッサが実行するのはプログラムの一部（以下では「部分プログラム」という）であるにもかかわらず、各ＰＥにはプログラムの全体が配分されるので、それだけの容量のメモリを用意しなければならず、コストがかさんでしまうことは否めない。
【０００９】
ところで、第１図に示したような分散メモリ型マルチプロセッサ方式にもとづくシステムは、従来は半導体集積技術の限界から、複数のチップ（および複数のボード）により構成されてきた。しかしながら、近年の半導体集積技術の向上により、複数のＰＥを一つのチップに収めることが可能となっている。
【００１０】
この場合、相互接続網を介したＰＥ間のデータの受け渡しはパケット伝送方式ではなく、共有メモリにデータを直接ストア／共有メモリからデータを直接ロードすることで、より高速に行うことができる。このように、複数のプロセッサから読み書きされる共有メモリを設ける方式を、「分散共有メモリ型マルチプロセッサ方式」と呼ぶ。
【００１１】
第４図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。ＰＥ４００、プロセッサ４０１および相互接続網４０３は、第１図に示した分散メモリ型マルチプロセッサ方式のＰＥ１００、プロセッサ１０１および相互接続網１０３と同一であるが、差異はメモリ４０２に、他のＰＥ内のプロセッサからも読み書きできるＳＭ（Ｓｈａｒｅｄ  Ｍｅｍｏｒｙ：共有メモリ）と、同一のＰＥ内のプロセッサからしか読み書きできないＬＭ（Ｌｏｃａｌ  Ｍｅｍｏｒｙ：固有メモリ）との２種類ある点である。
【００１２】
また、第５図は上記システムにおけるメモリ空間の定義例を示す説明図である。図中、たとえば１番のＰＥ（ＰＥ＃１）のＳＭは、０番のＰＥ（ＰＥ＃０）のメモリ空間および１番のＰＥ（ＰＥ＃１）のメモリ空間に重複して割り当てられている。
【００１３】
仮に、ＰＥ＃１のＳＭがＰＥ＃０のメモリ空間では０ｘ３０００以下、ＰＥ＃１のメモリ空間では０ｘ２０００以下のアドレスに割り当てられていたとすると、たとえばＰＥ＃０が０ｘ３０００にデータを書き込み、ＰＥ＃１が０ｘ２０００からデータを読み出すことで、ＰＥ＃０とＰＥ＃１との間で上記データを授受できたことになる。
【００１４】
なお、図示する例ではＰＥ＃０のみが、他のすべてのＰＥのＳＭを参照・変更することができる。一方ＰＥ＃１〜＃ｎの各メモリ空間には、物理的に他のＰＥに属するメモリが割り当てられていないので、これらのＰＥは同一ＰＥ内のＬＭおよびＳＭを参照・変更するのみである。
【００１５】
そして、このような分散共有メモリ型マルチプロセッサ方式の計算機システムでは、プログラムをＳＰＭＤでなくＭＰＭＤ（Ｍｕｌｔｉｐｌｅ−Ｐｒｏｇｒａｍ  Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）プログラミングにもとづいて作成することで、上述のコストの問題を解決することができる。
【００１６】
ＭＰＭＤにもとづくプログラミングでは、ＳＰＭＤのように各ＰＥにより実行される部分プログラムをすべて結合したようなプログラムでなく、端的にそれぞれのＰＥ向けのプログラムを作成する。各ＰＥ用のプログラムには、他ＰＥ用の部分プログラムが含まれないので、その分メモリの容量を小さくすることができる。
【００１７】
第６図はＰＥ＃０、第７図はＰＥ＃１向けのプログラムの一例をそれぞれ示す説明図である。これらはＰＥ＃０からＰＥ＃１に必要なデータを渡して、所定の処理を依頼した後、その結果を受け取るためのプログラムである。
【００１８】
すなわちまずＰＥ＃０において、変数ｉｎｐｕｔを読み出して、その値を変数ｉｎに書き込み（第６図Ｔｈ０−１）、次にＰＥ＃１の関数Ｔｈ１の実行を指示する（第６図Ｔｈ０−２）。これを受けたＰＥ＃１では、Ｔｈ１の中で変数ｉｎを入力として関数ｆ１を呼び出し、その実行結果を変数ｏｕｔに書き込む（第７図Ｔｈ１−１）。その後、ＰＥ＃０は変数ｏｕｔを読み出し、その値を変数ｏｕｔｐｕｔに書き込む（第６図Ｔｈ０−３）。
【００１９】
なお、実際のプログラムではＰＥ＃１に処理を依頼した後（すなわちＴｈ０−２の後）、ＰＥ＃０はＰＥ＃１とは無関係な別の処理に移行するが、ここでは簡略化してＰＥ＃０−ＰＥ＃１間の連携部分のみを示している。
【００２０】
そして本出願人は、第６図や第７図に示したようなプログラムの、ロードモジュールの作成に関する特許をすでに出願している（たとえば、特願２００２−２３８３９９号を参照。）。
【００２１】
上記発明にかかるリンカは、分散共有メモリ型マルチプロセッサ方式の計算機システムでは、物理的に同一の場所にあるデータでもＰＥごとにアドレスが異なる点を考慮して、たとえば同じ「変数ｉｎ」であっても、ＰＥ＃０向けのプログラムで現れたときは「０ｘ３０００」、ＰＥ＃１向けのプログラムで現れたときは「０ｘ２０００」に変換することで、個々のＰＥで実行可能なロードモジュールを作成する。
【００２２】
しかしながら、従来は上記発明により作成されたロードモジュールを、各ＰＥに効率的に配分する手段（具体的にはマルチＰＥローダ）が存在しなかった。
【００２３】
すなわち従来のローダは、ＳＭＰＤプログラミングにもとづくプログラムを対象としていたため、ＲＯＭ４０４内のロードモジュールを、単にローダが動作するＰＥ内のメモリ４０２に転送するだけであった。そのためＰＥが複数ある場合は、それぞれのＰＥでローダを実行しなければならず、しかもＰＥごとに異なるプログラムをロードするので、ＰＥごとに異なるローダが必要になってしまう。
【００２４】
この発明は上記従来技術による問題を解決するため、分散共有メモリ型マルチプロセッサ方式を採用する計算機システムに、ＭＰＭＤプログラミングにもとづいて作成されたプログラム（のロードモジュール）をロードすることが可能なプログラムのロード方法、ロードプログラムおよびマルチプロセッサを提供することを目的とする。
【００２５】
【発明の開示】
上述した課題を解決し、目的を達成するため、この発明にかかるプログラムのロード方法、ロードプログラムまたはマルチプロセッサは、複数のＰＥを備えた計算機システムにより実行されるプログラムのロード方法、ロードプログラムまたはマルチプロセッサにおいて、前記ＰＥのうちマスタＰＥのメモリ空間に前記マスタＰＥ以外のＰＥのメモリ領域を割り当てるとともに、前記マスタＰＥ以外のＰＥで実行されるプログラムを当該ＰＥのメモリ領域が割り当てられたメモリ空間に転送し、さらに転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示することを特徴とする。
【００２６】
また、この発明にかかるロード方法、ロードプログラムまたはマルチプロセッサは、前記メモリ空間の異なる位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域をそれぞれ割り当てることを特徴とする。
【００２７】
また、この発明にかかるロード方法、ロードプログラムまたはマルチプロセッサは、前記メモリ空間の同一位置に前記マスタＰＥ以外の複数のＰＥのメモリ領域を切り替えて割り当てることを特徴とする。
【００２８】
また、この発明にかかるロード方法は、複数のＰＥを備えた計算機システムにより実行されるプログラムのロード方法において、前記ＰＥのうちマスタＰＥのＤＭＡコントローラにプログラムの転送のための定義情報を設定するとともに、当該情報にもとづいて前記マスタＰＥ以外のＰＥのメモリ領域へプログラムを転送し、さらに転送されたプログラムを実行するよう前記マスタＰＥ以外のＰＥに指示することを特徴とする。
【００２９】
これらの発明によって、複数あるＰＥのそれぞれに異なるプログラムを実行させる場合でも、マスタＰＥ（ＰＥの一つであって、本発明によるマルチＰＥローダを実行するＰＥ）の制御の下で各ＰＥへのプログラムのロードが適切に行われる。
【００３０】
【発明を実施するための最良の形態】
以下に添付図面を参照して、この発明にかかるプログラムのロード方法、ロードプログラムおよびマルチプロセッサの好適な実施の形態を詳細に説明するが、その前に本発明の基本方針を簡単に説明する。
【００３１】
第８図は、従来技術によるローダ実行前のメモリ空間の様子、第９図は上記ローダ実行後のメモリ空間の様子をそれぞれ示す説明図である。図示するように従来のローダでは、プロセッサのメモリ空間内でプログラムが転送されるのみである。なお、プロセッサが複数ある場合は、各プロセッサのメモリ空間で同様に図示するような状況となる。
【００３２】
一方、第１０図は本発明によるローダ実行前のメモリ空間の様子、第１１図は上記ローダ実行後のメモリ空間の様子をそれぞれ示す説明図である。図示するように本発明では、複数あるＰＥ４００のうちいずれか一つ、ここではＰＥ＃０で実行されるマルチＰＥローダが、ＲＯＭ４０４内のロードモジュールから各ＰＥ向けのものを選択して、それぞれのＰＥに転送する。以下で説明する実施の形態１〜３は、この転送手順の詳細に関するものである（転送前後のメモリ空間の様子は実施の形態によらず同一）。なお、上記ローダが実行されるＰＥを本発明では「マスタＰＥ」と呼ぶ。
【００３３】
（実施の形態１）
第１２図は、本発明の実施の形態１にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示すブロック図である。同図に示す各機能部は、第４図に示したＲＯＭ４０４内のプログラム、具体的にはマルチＰＥローダを、マスタＰＥのプロセッサ４０１がメモリ４０２に読み出して実行することにより実現される。
【００３４】
図中、１２００は初期化部であり、上記ローダの初期化（変数のゼロクリア、パラメータの設定など）を行う機能部である。１２０１はメモリ空間割り当て部であり、マスタＰＥのメモリ空間に、マスタＰＥ以外の各ＰＥの固有メモリ領域（ＬＭ）を割り当てる機能部である。
【００３５】
第１３図は、本発明の実施の形態１にかかるメモリ空間割り当て部１２０１による、メモリ空間の割り当て状況を模式的に示す説明図である。図示するように、実施の形態１ではマスタＰＥであるＰＥ＃０のメモリ空間中、本来ＰＥ＃０の共有メモリ領域（ＳＭ）が割り当てられる位置に、ＰＥ＃１〜ＰＥ＃ｎの固有メモリ領域（ＬＭ）を一時的に割り当てる。ＰＥ＃１〜ＰＥ＃ｎの固有メモリ領域は、原則として他のＰＥからは読み書きできない領域であるが、プログラムのロード時だけ、例外的にＰＥ＃０のメモリ空間にマップされる結果、ＰＥ＃０からの直接の読み書きが可能となる。
【００３６】
なお、このマップ処理は各ＰＥおよびバスのレジスタを設定することにより行う。設定に必要な情報は、マルチＰＥローダにあらかじめ保持されているものとする。
【００３７】
第１２図に戻り、次に１２０２はプログラム転送部であり、ＲＯＭ４０４上の各ＰＥ用のプログラムを、それぞれのＰＥのメモリ４０２にロードする機能部である。転送先は具体的には、ＰＥ＃０の固有メモリ領域、および上述のメモリ空間割り当て部１２０１によりＰＥ＃０のメモリ空間に割り当てられた、ＰＥ＃１〜＃ｎの固有メモリ領域である。
【００３８】
１２０３は実行指示部であり、プログラム転送部１２０２によるプログラムのロード後、ロードされたプログラムの実行を各ＰＥに対して指示する機能部である。
【００３９】
次に、第１４図は本発明の実施の形態１にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
【００４０】
ＲＯＭ４０４上のマルチＰＥローダを実行するマスタＰＥ（ＰＥ＃０）は、まずその初期化部１２００により上記ローダを初期化した後（ステップＳ１４０１）、メモリ空間割り当て部１２０１により、自己のメモリ空間に他ＰＥの固有メモリ領域を順次割り当てる。すなわち第１３図に示したように、ＰＥ＃１の固有メモリ領域、ＰＥ＃２の固有メモリ領域、・・・、ＰＥ＃ｎの固有メモリ領域を、ＰＥ＃０のメモリ空間の異なる位置にそれぞれ割り当てる（ステップＳ１４０２）。
【００４１】
そして、マスタＰＥはさらにプログラム転送部１２０２により、ＰＥ＃０の固有メモリ領域が割り当てられた位置にはＰＥ＃０用のプログラム、ＰＥ＃１の固有メモリ領域が割り当てられた位置にはＰＥ＃１用のプログラム、・・・、ＰＥ＃ｎの固有メモリ領域が割り当てられた位置にはＰＥ＃ｎ用のプログラムというように、各ＰＥの固有メモリ領域へ当該ＰＥ用のプログラムを順次ロードする（ステップＳ１４０３）。
【００４２】
そして、マスタＰＥはその実行指示部１２０３から、ＰＥ＃１〜ＰＥ＃ｎのプロセッサ４０１に対して、上記でロードしたプログラムの実行を指示する（ステップＳ１４０４）。この後、上記指示を受けた個々のＰＥにおいて、その固有メモリ領域にロードされたプログラムが実行される（ステップＳ１４０５）。
【００４３】
以上説明した実施の形態１によれば、ＲＯＭ４０４に格納された各ＰＥ向けのプログラムを、マスタＰＥ上で動作するマルチＰＥローダにより、それぞれ対象となるＰＥのメモリ４０２へ分配することができる。
【００４４】
（実施の形態２）
さて、上述した実施の形態１では、ＰＥ＃０のメモリ空間にＰＥ＃１〜＃ｎの固有メモリ領域を同時に割り当てたが、この方式だとマスタＰＥのメモリ４０２には、マスタＰＥ以外のすべてＰＥの固有メモリ領域を格納できるだけの容量が必要である。そこで、以下に説明する実施の形態２のように、メモリ空間の同一の位置をＰＥ＃１〜＃ｎで順次使い回すことで、ＰＥ＃０に必要なハードウエアを削減するようにしてもよい。
【００４５】
本発明の実施の形態２にかかるマスタＰＥの機能構成は、第１４図に示した実施の形態１のそれと同様であるので説明を省略する。第１５図は、本発明の実施の形態２にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
【００４６】
ＲＯＭ４０４上のマルチＰＥローダを実行するマスタＰＥ（ＰＥ＃０）は、まずその初期化部１２００により上記ローダを初期化した後（ステップＳ１５０１）、メモリ空間割り当て部１２０１により、自己のメモリ空間にＰＥ＃ｋの固有メモリ領域を割り当てる（ステップＳ１５０２）。続いて、プログラム転送部１２０２により、上記領域にＰＥ＃ｋ用のプログラムをロードする（ステップＳ１５０３）。
【００４７】
そして、ステップＳ１５０２およびＳ１５０３の処理を１からｎまでのｋについて繰り返した後、マスタＰＥはその実行指示部１２０３から、ＰＥ＃１〜ＰＥ＃ｎのプロセッサ４０１に対して、上記でロードしたプログラムの実行を指示する（ステップＳ１５０４）。この後、上記指示を受けた個々のＰＥにおいて、その固有メモリ領域にロードされたプログラムが実行される（ステップＳ１５０５）。
【００４８】
以上説明した実施の形態２によれば、第１６図に示すように、ＰＥ＃０のメモリ空間の同一位置へＰＥ＃１〜＃ｎの固有メモリ領域を割り当てるので、マスタＰＥのメモリ容量が少なくても、個々のＰＥへそれぞれのプログラムを分配することができる。
【００４９】
（実施の形態３）
さて、上述した実施の形態１および２では、ＰＥ＃０のメモリ空間にＰＥ＃１〜＃ｎの固有メモリ領域を逐一割り当てたが、ＰＥの個数が増えてくると、このマッピングにかかるオーバーヘッドの増大が無視できない。そこで、以下に説明する実施の形態３のように、プログラムの転送を専用のハードウエア（具体的にはＤＭＡコントローラ）により行うようにしてもよい。
【００５０】
実施の形態３では、マスタＰＥであるＰＥ＃０に、第４図のハードウエアに加えてＤＭＡコントローラが搭載されている（あるいは逆に、ＤＭＡコントローラを備えたＰＥを常にマスタＰＥにすると言ってもよい）。そして、ＰＥ＃０からＰＥ＃１〜＃ｎへのプログラムの転送を、もっぱらこのＤＭＡコントローラにより行う。
【００５１】
第１７図は、本発明の実施の形態３にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示す説明図である。図中、初期化部１７００および実行指示部１７０３の機能は、実施の形態１および２の初期化部１２００および実行指示部１２０３のそれと同一である。
【００５２】
また、プログラム転送部１７０２も、プロセッサ４０１でなくＤＭＡコントローラにより実現される点を除けば、ＲＯＭ４０４上の各ＰＥ用のプログラムを各ＰＥのメモリ４０２にロードするという機能において、実施の形態１および２のプログラム転送部１７０２と同一である。
【００５３】
ただし実施の形態３では、実施の形態１および２のメモリ空間割り当て部１２０１に相当する機能部がなく、代わりに定義情報設定部１７０１が設けられている。
【００５４】
この定義情報設定部１７０１は、プログラム転送部１７０２すなわちＤＭＡコントローラがプログラムの転送にあたって必要とする定義情報、具体的には（１）転送先（転送先のＰＥの識別子と当該ＰＥ内のアドレス）、（２）転送領域のサイズ、（３）転送元（転送元のＰＥの識別子と当該ＰＥ内のアドレス）の３つを、所定のレジスタなどにセットする機能部である。なお、これらの定義情報はローダにあらかじめ保持されているものとする。
【００５５】
次に、第１８図は本発明の実施の形態３にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
【００５６】
ＲＯＭ４０４上のマルチＰＥローダを実行するマスタＰＥ（ＰＥ＃０）は、まずその初期化部１７００により上記ローダを初期化した後（ステップＳ１８０１）、定義情報設定部１７０１により、ＲＯＭ４０４からＰＥ＃ｋのメモリ４０２へデータを転送するための定義情報を設定する（ステップＳ１８０２）。続いて、プログラム転送部１７０２により、上記情報に従ってＰＥ＃ｋにプログラムをロードする（ステップＳ１８０３）。
【００５７】
そして、ステップＳ１８０２およびＳ１８０３の処理を１からｎまでのｋについて繰り返した後、マスタＰＥはその実行指示部１７０３から、ＰＥ＃１〜ＰＥ＃ｎのプロセッサ４０１に対して、上記でロードしたプログラムの実行を指示する（ステップＳ１８０４）。この後、上記指示を受けた個々のＰＥにおいて、その固有メモリ領域にロードされたプログラムが実行される（ステップＳ１８０５）。
【００５８】
以上説明した実施の形態３によれば、第１９図に示すように、専用ハードウエア（具体的にはＤＭＡコントローラ）を介してプログラムを転送するので、ハードウエア的なコストは増大するものの、実施の形態１や２よりも高速にプログラムのロードをおこなうことができる。
【００５９】
なお、実施の形態１〜３によるプログラムのロード方法は、ＲＯＭ４０４に格納されたマルチＰＥローダをプロセッサ４０１が実行することにより実現されるが、このプログラムはＲＯＭ４０４のほか、ＨＤ、ＦＤ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどプロセッサ４０１で読み取り可能な各種の記録媒体に記録され、当該記録媒体によって配布することができる。また、インターネットなどのネットワークを介して配布することも可能である。
【００６０】
以上説明したように本発明によれば、複数あるＰＥのそれぞれに異なるプログラムを実行させる場合でも、マスタＰＥの制御の下で各ＰＥへのプログラムのロードが適切に行われ、これによって、分散共有メモリ型マルチプロセッサ方式を採用する計算機システムに、ＭＰＭＤプログラミングにもとづいて作成されたプログラム（のロードモジュール）をロードすることが可能なプログラムのロード方法、ロードプログラムおよびマルチプロセッサが得られるという効果を奏する。
【００６１】
【産業上の利用可能性】
以上のように本発明は、分散共有メモリ型マルチプロセッサ方式を採用する計算機において、ＭＰＭＤプログラミングにもとづくプログラムを動作させることでメモリの有効利用をはかるべく、複数あるＰＥに、各ＰＥ用のプログラムを選択的に転送できるマルチＰＥローダを実現することに適している。
【図面の簡単な説明】
【図１】
第１図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。
【図２】
第２図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムにおける、メモリ空間の定義例を模式的に示す説明図である。
【図３】
第３図は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、ＳＰＭＤプログラミングにもとづくプログラムの一例を示す説明図である。
【図４】
第４図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。
【図５】
第５図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムにおける、メモリ空間の定義例を模式的に示す説明図である。
【図６】
第６図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、ＭＰＭＤプログラミングにもとづくプログラムの一例（ＰＥ＃０用）を示す説明図である。
【図７】
第７図は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、ＭＰＭＤプログラミングにもとづくプログラムの一例（ＰＥ＃１用）を示す説明図である。
【図８】
第８図は、従来技術によるローダ実行前のメモリ空間の様子を示す説明図である。
【図９】
第９図は、従来技術によるローダ実行後のメモリ空間の様子を示す説明図である。
【図１０】
第１０図は、本発明によるローダ実行前のメモリ空間の様子を示す説明図である。
【図１１】
第１１図は、本発明によるローダ実行後のメモリ空間の様子を示す説明図である。
【図１２】
第１２図は、本発明の実施の形態１にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示すブロック図である。
【図１３】
第１３図は、本発明の実施の形態１にかかるメモリ空間割り当て部１２０１による、メモリ空間の割り当て状況を示す説明図である。
【図１４】
第１４図は、本発明の実施の形態１にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
【図１５】
第１５図は、本発明の実施の形態２にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートでる。
【図１６】
第１６図は、本発明の実施の形態２にかかるメモリ空間割り当て部１２０１による、メモリ空間の割り当て状況を示す説明図である。
【図１７】
第１７図は、本発明の実施の形態３にかかるマルチプロセッサを搭載した計算機システム、特にそのマスタＰＥの構成を機能的に示す説明図である。
【図１８】
第１８図は、本発明の実施の形態３にかかるマルチプロセッサにおける、プログラムのロード処理および実行処理の手順を示すフローチャートである。
【図１９】
第１９図は、本発明の実施の形態３にかかるマルチプロセッサにおける、プログラムの転送経路を模式的に示す説明図である。
【国際調査報告】
2004099981.tif 000022
2004099981.tif 000023
2004099981.tif 000024
2004099981.tif 000025