(57)【特許請求の範囲】
【請求項１】
異なるタイプの複数のプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための並列処理システム制御装置であって、
アプリケーションプログラムの実行要求を受けた時、その実行要求を、前記アプリケーションプログラムに含まれる複数の部分処理の各々に各々が対応する複数の共通コマンドであって、前記並列処理システムに含まれる各プロセッサの種類に依存せず、各プロセッサが扱う入出力データのバッファが前記並列処理システムに含まれるどの共有メモリに配置されているかということに依存しない複数の共通コマンドの実行要求として受け取り、各共通コマンドを解析することにより、各部分処理を実行するプロセッサを決定し、各プロセッサが扱う入出力データのバッファが配置されている共有メモリを決定し、各共通コマンドを前記決定したプロセッサに対応する個別のコマンドであるプロセッサ個別コマンドに変換する共通コマンド変換・メモリ管理部と、
前記複数のプロセッサの各々に各々が対応し、前記プロセッサ個別コマンドで指定された前記部分処理を対応するプロセッサに実行させるための制御を行う複数の個別実行制御部と、
前記複数の共有メモリの各々に対するアクセスを制御するため関数と、前記複数の共有メモリを前記複数のプロセッサの各々が該プロセッサに固有のアドレスマップ上でアクセスするためのアドレス変換表とを含むメモリ管理情報を保持するメモリ管理情報保持部と、
前記共通コマンド変換・メモリ管理部により行われる前記部分処理を実行する前記プロセッサの決定のために用いられる情報、前記共通コマンド変換・メモリ管理部により行われる前記共通コマンドの前記プロセッサ個別コマンドへの変換のために用いられる情報、前記個別実行制御部により行われる前記プロセッサの制御で用いられるコマンド、関数及び識別子を含む情報が記載された処理管理表群を生成し、前記処理管理表群を前記共通コマンド変換・メモリ管理部及び前記個別実行制御部に登録し、前記処理管理表群を管理するとともに、前記メモリ管理情報を生成し、管理する個別実行制御登録部と、
を備えることを特徴とする並列処理システム制御装置。
【請求項２】
前記個別実行制御登録部は、
個々の部分処理を識別するための処理ＩＤと個々のプロセッサを識別するためのプロセッサＩＤとプロセッサが行なう部分処理を識別するためのプロセッサ個別処理ＩＤとの対応を記載した処理ＩＤ管理表と、
プロセッサへの操作に対応する各プロセッサ制御用メソッドＩＤと、前記プロセッサ個別コマンドが与えられたときに該プロセッサ個別コマンドで指定される処理を対応するプロセッサで行なうためのプロセッサ個別コマンド実行関数へのポインタ、プロセッサに前記部分処理に対応したプログラムを登録し、前記プロセッサ個別処理ＩＤと対応付けるためのプロセッサ個別処理ＩＤ登録関数へのポインタ及び必要に応じてプロセッサの状態を確認するためのプロセッサ状態チェック関数へのポインタとの対応を記載したプロセッサ制御用メソッド管理表と、
前記プロセッサＩＤと前記プロセッサ制御用メソッド管理表へのポインタとの対応を記載したプロセッサ管理表と、を前記処理管理表群として生成し、また、
メモリアクセス用メソッドＩＤと、前記共有メモリのアクセス制御のためのメモリアクセス用メソッド関数へのポインタとの対応を記載したメモリアクセス用メソッド管理表と、
前記共有メモリを識別するためのメモリＩＤと前記メモリアクセス用メソッド管理表へのポインタとの対応を記載したメモリ管理表と、
前記複数の共有メモリを前記複数のプロセッサが該プロセッサに固有のアドレスマップ上でアクセスするためのベースアドレスと、前記共有メモリの前記メモリＩＤと前記プロセッサの前記プロセッサＩＤとの組合せとの対応を記載したアドレス変換表と
を前記メモリ管理情報として生成することを特徴とする請求項１に記載の並列処理システム制御装置。
【請求項３】
前記共通コマンド変換・メモリ管理部は、
前記共通コマンドを、前記部分処理を識別する処理ＩＤと、前記部分処理に係る入出力データを含むデータを指定する処理パラメータと、を含む形式で受け取り、
前記処理パラメータは、前記共有メモリに配置された、複数の前記入出力データを前記プロセッサ、前記共有メモリに依存しない形式で指定する複数の共通メモリ情報を含み、
前記共通メモリ情報は、前記共有メモリを識別するため前記メモリＩＤと、前記入出力データを格納するバッファの前記共有メモリの固有のアドレスマップ上でのアドレスを示す、メモリ固有空間アドレスを含み、
前記共通コマンドに含まれる前記処理ＩＤをキーとして前記処理ＩＤ管理表から、前記部分処理を実行する前記プロセッサのプロセッサＩＤと、前記プロセッサが行なう前記部分処理を指定するプロセッサ個別処理ＩＤと、を検索し、
前記処理パラメータを構成する前記複数の共通メモリ情報のそれぞれに関して、前記共有メモリの前記メモリＩＤと前記プロセッサＩＤをキーとして前記アドレス変換表から前記ベースアドレスを検索し、前記ベースアドレスと、前記メモリ固有空間アドレスとから、前記プロセッサＩＤで指定される前記プロセッサが前記バッファを前記プロセッサ固有のアドレスマップ上でアクセスするためのアドレスをプロセッサ固有空間アドレスとして計算し、前記共通メモリ情報に設定することで、前記処理パラメータを前記プロセッサの個別処理パラメータへ変換し、
前記プロセッサ個別処理ＩＤと、前記個別処理パラメータとを合わせることにより前記プロセッサ個別コマンドを得ることを特徴とする請求項２に記載の並列処理システム制御装置。
【請求項４】
前記個別実行制御部は、前記プロセッサ個別処理ＩＤと前記処理パラメータとを引数にして、前記プロセッサ制御用メソッド管理表にそのポインタが予め登録されているプロセッサ個別コマンド実行関数を呼び出すことにより実行されるプロセッサ個別実行制御コマンドによって、前記部分処理を前記プロセッサに実行させ、
前記プロセッサ制御用メソッド管理表にそのポインタが予め登録されているプロセッサ状態チェック関数によって、前記プロセッサの動作状態をチェックすることを特徴とする請求項３に記載の並列処理システム制御装置。
【請求項５】
前記個別実行制御登録部は、前記アプリケーションプログラムが有する実行制御登録用コードに基づく個別実行制御登録コマンドによって、前記処理管理表群、前記メモリ管理情報を生成することを特徴とする請求項２乃至４のいずれか１項に記載の並列処理システム制御装置。
【請求項６】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記部分処理に係るプロセッサの登録の場合、前記個別実行制御登録コマンドに基づいて前記プロセッサ制御用メソッド管理表及び前記プロセッサＩＤを生成し、生成した前記プロセッサＩＤと前記プロセッサ制御用メソッド管理表へのポインタとを、前記プロセッサ管理表に登録することを特徴とする請求項５に記載の並列処理システム制御装置。
【請求項７】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記プロセッサの実行制御に係るプロセッサ制御用メソッドの登録の場合、前記個別実行制御登録コマンドに含まれる前記プロセッサＩＤ、前記プロセッサ制御用メソッドＩＤ及びプロセッサ制御用メソッド関数へのポインタを引数として受け取り、前記プロセッサＩＤをキーとして前記プロセッサ管理表から前記プロセッサ制御用メソッド管理表を取得し、前記プロセッサ制御用メソッド管理表に前記プロセッサ制御用メソッドＩＤ及び前記プロセッサ制御用メソッド関数へのポインタを登録することを特徴とする請求項５又は６に記載の並列処理システム制御装置。
【請求項８】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記プロセッサが行なう前記部分処理を指定するプロセッサ個別処理の登録の場合、前記個別実行制御登録コマンドに含まれる前記プロセッサＩＤ、プログラム定義体を引数を受け取り、前記プロセッサＩＤをキーとして前記プロセッサ管理表から前記プロセッサ制御用メソッド管理表へのポインタを取得し、そのポインタにより特定されるプロセッサ制御用メソッド管理表から前記プロセッサ個別処理ＩＤ登録関数を取得し、前記プログラム定義体を引数として前記プロセッサ個別処理ＩＤ登録関数を呼び出したときの戻り値として前記プロセッサ個別処理ＩＤを取得し、更に、前記処理ＩＤを生成し、前記処理ＩＤ、前記プロセッサＩＤ及び前記プロセッサ個別処理ＩＤを前記処理ＩＤ管理表に登録することを特徴とする請求項５乃至７の何れか１項に記載の並列処理システム制御装置。
【請求項９】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記共有メモリの登録の場合、前記メモリアクセス用メソッド管理表及び前記メモリＩＤを生成し、生成した前記メモリＩＤと前記メモリアクセス用メソッド管理表へのポインタとを前記メモリ管理表に登録することを特徴とする請求項５乃至８の何れか１項に記載の並列処理システム制御装置。
【請求項１０】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記共有メモリの管理操作に係るメモリアクセス用メソッド登録の場合、前記個別実行制御登録コマンドに含まれる前記メモリＩＤ、前記メモリアクセス用メソッドＩＤ及び前記メモリアクセス用メソッド関数を引数として受け取り、前記メモリＩＤをキーとして前記メモリ管理表から前記メモリアクセス用メソッド管理表へのポインタを取得し、前記メモリアクセス用メソッド管理表に前記メモリアクセス用メソッドＩＤ及び前記メモリアクセス用メソッド関数へのポインタを登録することを特徴とする請求項５乃至９の何れか１項に記載の並列処理システム制御装置。
【請求項１１】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記ベースアドレスの登録の場合、前記個別実行制御登録コマンドに含まれる前記メモリＩＤ、前記プロセッサＩＤ、前記ベースアドレスを引数として受け取り、前記アドレス変換表の前記メモリＩＤと前記プロセッサＩＤをキーとして指示されるエントリに前記ベースアドレスを格納することを特徴とする請求項５乃至１０の何れか１項に記載の並列処理システム制御装置。
【請求項１２】
異なるタイプの複数のプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための並列処理システム制御装置により行われる並列処理システム制御方法であって、
共通コマンド変換・メモリ管理部が、アプリケーションプログラムの実行要求を受けた時、その実行要求を、前記アプリケーションプログラムに含まれる複数の部分処理の各々に各々が対応する複数の共通コマンドであって、前記並列処理システムに含まれる各プロセッサの種類に依存せず、各プロセッサが扱う入出力データのバッファが前記並列処理システムに含まれるどの共有メモリに配置されているかということに依存しない複数の共通コマンドの実行要求として受け取り、各共通コマンドを解析することにより、各部分処理を実行するプロセッサを決定し、各プロセッサが扱う入出力データのバッファが配置されている共有メモリを決定し、各共通コマンドを前記決定したプロセッサに対応する個別のコマンドであるプロセッサ個別コマンドに変換するステップと、
前記複数のプロセッサの各々に各々が対応する複数の個別実行制御部の各々が、前記プロセッサ個別コマンドで指定された前記部分処理を対応するプロセッサに実行させるための制御を行うステップと、
メモリ管理情報保持部が、前記複数の共有メモリの各々に対するアクセスを制御するため関数と、前記複数の共有メモリを前記複数のプロセッサの各々が該プロセッサに固有のアドレスマップ上でアクセスするためのアドレス変換表とを含むメモリ管理情報を保持するステップと、
個別実行制御登録部が、前記共通コマンド変換・メモリ管理部により行われる前記部分処理を実行する前記プロセッサの決定のために用いられる情報、前記共通コマンド変換・メモリ管理部により行われる前記共通コマンドの前記プロセッサ個別コマンドへの変換のために用いられる情報、前記個別実行制御部により行われる前記プロセッサの制御で用いられるコマンド、関数及び識別子を含む情報が記載された処理管理表群を生成し、前記処理管理表群を前記共通コマンド変換・メモリ管理部及び前記個別実行制御部に登録し、前記処理管理表群を管理するとともに、前記メモリ管理情報を生成し、管理するステップと、
を有する備えることを特徴とする並列処理システム制御方法。
【請求項１３】
前記個別実行制御登録部が、
個々の部分処理を識別するための処理ＩＤと個々のプロセッサを識別するためのプロセッサＩＤとプロセッサが行なう部分処理を識別するためのプロセッサ個別処理ＩＤとの対応を記載した処理ＩＤ管理表と、
プロセッサへの操作に対応する各プロセッサ制御用メソッドＩＤと、前記プロセッサ個別コマンドが与えられたときに該プロセッサ個別コマンドで指定される処理を対応するプロセッサで行なうためのプロセッサ個別コマンド実行関数へのポインタ、プロセッサに前記部分処理に対応したプログラムを登録し、前記プロセッサ個別処理ＩＤと対応付けるためのプロセッサ個別処理ＩＤ登録関数へのポインタ及び必要に応じてプロセッサの状態を確認するためのプロセッサ状態チェック関数へのポインタとの対応を記載したプロセッサ制御用メソッド管理表と、
前記プロセッサＩＤと前記プロセッサ制御用メソッド管理表へのポインタとの対応を記載したプロセッサ管理表と、を前記処理管理表群として生成するステップと、
前記個別実行制御登録部が、
メモリアクセス用メソッドＩＤと、前記共有メモリのアクセス制御のためのメモリアクセス用メソッド関数へのポインタとの対応を記載したメモリアクセス用メソッド管理表と、
前記共有メモリを識別するためのメモリＩＤと前記メモリアクセス用メソッド管理表へのポインタとの対応を記載したメモリ管理表と、
前記複数の共有メモリを前記複数のプロセッサが該プロセッサに固有のアドレスマップ上でアクセスするためのベースアドレスと、前記共有メモリの前記メモリＩＤと前記プロセッサの前記プロセッサＩＤとの組合せとの対応を記載したアドレス変換表と
を前記メモリ管理情報として生成するステップと、
を有することを特徴とする請求項１２に記載の並列処理システム制御方法。
【請求項１４】
前記共通コマンド変換・メモリ管理部が、前記共通コマンドを、前記部分処理を識別する処理ＩＤと、前記部分処理に係る入出力データを含むデータを指定する処理パラメータと、を含む形式で受け取るステップを更に有し、
前記処理パラメータは、前記共有メモリに配置された、複数の前記入出力データを前記プロセッサ、前記共有メモリに依存しない形式で指定する複数の共通メモリ情報を含み、
前記共通メモリ情報は、前記共有メモリを識別するため前記メモリＩＤと、前記入出力データを格納するバッファの前記共有メモリの固有のアドレスマップ上でのアドレスを示す、メモリ固有空間アドレスを含み、
前記共通コマンド変換・メモリ管理部が、前記共通コマンドに含まれる前記処理ＩＤをキーとして前記処理ＩＤ管理表から、前記部分処理を実行する前記プロセッサのプロセッサＩＤと、前記プロセッサが行なう前記部分処理を指定するプロセッサ個別処理ＩＤと、を検索するステップを更に有し、
前記共通コマンド変換・メモリ管理部が、前記処理パラメータを構成する前記複数の共通メモリ情報のそれぞれに関して、前記共有メモリの前記メモリＩＤと前記プロセッサＩＤをキーとして前記アドレス変換表から前記ベースアドレスを検索し、前記ベースアドレスと、前記メモリ固有空間アドレスとから、前記プロセッサＩＤで指定される前記プロセッサが前記バッファを前記プロセッサ固有のアドレスマップ上でアクセスするためのアドレスをプロセッサ固有空間アドレスとして計算し、前記共通メモリ情報に設定することで、前記処理パラメータを前記プロセッサの個別処理パラメータへ変換するステップを更に有し、
前記共通コマンド変換・メモリ管理部が、前記プロセッサ個別処理ＩＤと、前記個別処理パラメータとを合わせることにより前記プロセッサ個別コマンドを得るステップを更に有することを特徴とする請求項１３に記載の並列処理システム制御方法。
【請求項１５】
前記個別実行制御部が、前記プロセッサ個別処理ＩＤと前記処理パラメータとを引数にして、前記プロセッサ制御用メソッド管理表にそのポインタが予め登録されているプロセッサ個別コマンド実行関数を呼び出すことにより実行されるプロセッサ個別実行制御コマンドによって、前記部分処理を前記プロセッサに実行させるステップと、
前記個別実行制御部が、前記プロセッサ制御用メソッド管理表にそのポインタが予め登録されているプロセッサ状態チェック関数によって、前記プロセッサの動作状態をチェックするステップと、
を更に有することを特徴とする請求項１４に記載の並列処理システム制御方法。
【請求項１６】
前記個別実行制御登録部が、前記アプリケーションプログラムが有する実行制御登録用コードに基づく個別実行制御登録コマンドによって、前記処理管理表群、前記メモリ管理情報を生成するステップを更に有することを特徴とする請求項１３乃至１５のいずれか１項に記載の並列処理システム制御方法。
【請求項１７】
前記個別実行制御登録部が、前記個別実行制御登録コマンドが、前記部分処理に係るプロセッサの登録の場合、前記個別実行制御登録コマンドに基づいて前記プロセッサ制御用メソッド管理表及び前記プロセッサＩＤを生成し、生成した前記プロセッサＩＤと前記プロセッサ制御用メソッド管理表へのポインタとを、前記プロセッサ管理表に登録するステップを更に有することを特徴とする請求項１６に記載の並列処理システム制御方法。
【請求項１８】
前記個別実行制御登録部が、前記個別実行制御登録コマンドが、前記プロセッサの実行制御に係るプロセッサ制御用メソッドの登録の場合、前記個別実行制御登録コマンドに含まれる前記プロセッサＩＤ、前記プロセッサ制御用メソッドＩＤ及びプロセッサ制御用メソッド関数へのポインタを引数として受け取り、前記プロセッサＩＤをキーとして前記プロセッサ管理表から前記プロセッサ制御用メソッド管理表を取得し、前記プロセッサ制御用メソッド管理表に前記プロセッサ制御用メソッドＩＤ及び前記プロセッサ制御用メソッド関数へのポインタを登録するステップを更に有することを特徴とする請求項１６又は１７に記載の並列処理システム制御方法。
【請求項１９】
前記個別実行制御登録部が、前記個別実行制御登録コマンドが、前記プロセッサが行なう前記部分処理を指定するプロセッサ個別処理の登録の場合、前記個別実行制御登録コマンドに含まれる前記プロセッサＩＤ、プログラム定義体を引数を受け取り、前記プロセッサＩＤをキーとして前記プロセッサ管理表から前記プロセッサ制御用メソッド管理表へのポインタを取得し、そのポインタにより特定されるプロセッサ制御用メソッド管理表から前記プロセッサ個別処理ＩＤ登録関数を取得し、前記プログラム定義体を引数として前記プロセッサ個別処理ＩＤ登録関数を呼び出したときの戻り値として前記プロセッサ個別処理ＩＤを取得し、更に、前記処理ＩＤを生成し、前記処理ＩＤ、前記プロセッサＩＤ及び前記プロセッサ個別処理ＩＤを前記処理ＩＤ管理表に登録するステップを更に有することを特徴とする請求項１６乃至１８の何れか１項に記載の並列処理システム制御方法。
【請求項２０】
前記個別実行制御登録部が、前記個別実行制御登録コマンドが、前記共有メモリの登録の場合、前記メモリアクセス用メソッド管理表及び前記メモリＩＤを生成し、生成した前記メモリＩＤと前記メモリアクセス用メソッド管理表へのポインタとを前記メモリ管理表に登録するステップを更に有することを特徴とする請求項１６乃至１９の何れか１項に記載の並列処理システム制御方法。
【請求項２１】
前記個別実行制御登録部が、前記個別実行制御登録コマンドが、前記共有メモリの管理操作に係るメモリアクセス用メソッド登録の場合、前記個別実行制御登録コマンドに含まれる前記メモリＩＤ、前記メモリアクセス用メソッドＩＤ及び前記メモリアクセス用メソッド関数を引数として受け取り、前記メモリＩＤをキーとして前記メモリ管理表から前記メモリアクセス用メソッド管理表へのポインタを取得し、前記メモリアクセス用メソッド管理表に前記メモリアクセス用メソッドＩＤ及び前記メモリアクセス用メソッド関数へのポインタを登録するステップを更に有することを特徴とする請求項１６乃至２０の何れか１項に記載の並列処理システム制御方法。
【請求項２２】
前記個別実行制御登録部が、前記個別実行制御登録コマンドが、前記ベースアドレスの登録の場合、前記個別実行制御登録コマンドに含まれる前記メモリＩＤ、前記プロセッサＩＤ、前記ベースアドレスを引数として受け取り、前記アドレス変換表の前記メモリＩＤと前記プロセッサＩＤをキーとして指示されるエントリに前記ベースアドレスを格納するステップを更に有することを特徴とする請求項１６乃至２１の何れか１項に記載の並列処理システム制御方法。
【請求項２３】
異なるタイプの複数のプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための並列処理システム制御装置としてコンピュータを機能させるためのプログラムであって、
コンピュータを、
アプリケーションプログラムの実行要求を受けた時、その実行要求を、前記アプリケーションプログラムに含まれる複数の部分処理の各々に各々が対応する複数の共通コマンドであって、前記並列処理システムに含まれる各プロセッサの種類に依存せず、各プロセッサが扱う入出力データのバッファが前記並列処理システムに含まれるどの共有メモリに配置されているかということに依存しない複数の共通コマンドの実行要求として受け取り、各共通コマンドを解析することにより、各部分処理を実行するプロセッサを決定し、各プロセッサが扱う入出力データのバッファが配置されている共有メモリを決定し、各共通コマンドを前記決定したプロセッサに対応する個別のコマンドであるプロセッサ個別コマンドに変換する共通コマンド変換・メモリ管理部と、
前記複数のプロセッサの各々に各々が対応し、前記プロセッサ個別コマンドで指定された前記部分処理を対応するプロセッサに実行させるための制御を行う複数の個別実行制御部と、
前記複数の共有メモリの各々に対するアクセスを制御するため関数と、前記複数の共有メモリを前記複数のプロセッサの各々が該プロセッサに固有のアドレスマップ上でアクセスするためのアドレス変換表とを含むメモリ管理情報を保持するメモリ管理情報保持部と、
前記共通コマンド変換・メモリ管理部により行われる前記部分処理を実行する前記プロセッサの決定のために用いられる情報、前記共通コマンド変換・メモリ管理部により行われる前記共通コマンドの前記プロセッサ個別コマンドへの変換のために用いられる情報、前記個別実行制御部により行われる前記プロセッサの制御で用いられるコマンド、関数及び識別子を含む情報が記載された処理管理表群を生成し、前記処理管理表群を前記共通コマンド変換・メモリ管理部及び前記個別実行制御部に登録し、前記処理管理表群を管理するとともに、前記メモリ管理情報を生成し、管理する個別実行制御登録部と、
として機能させるための並列処理システム制御プログラム。
【請求項２４】
前記個別実行制御登録部は、
個々の部分処理を識別するための処理ＩＤと個々のプロセッサを識別するためのプロセッサＩＤとプロセッサが行なう部分処理を識別するためのプロセッサ個別処理ＩＤとの対応を記載した処理ＩＤ管理表と、
プロセッサへの操作に対応する各プロセッサ制御用メソッドＩＤと、前記プロセッサ個別コマンドが与えられたときに該プロセッサ個別コマンドで指定される処理を対応するプロセッサで行なうためのプロセッサ個別コマンド実行関数へのポインタ、プロセッサに前記部分処理に対応したプログラムを登録し、前記プロセッサ個別処理ＩＤと対応付けるためのプロセッサ個別処理ＩＤ登録関数へのポインタ及び必要に応じてプロセッサの状態を確認するためのプロセッサ状態チェック関数へのポインタとの対応を記載したプロセッサ制御用メソッド管理表と、
前記プロセッサＩＤと前記プロセッサ制御用メソッド管理表へのポインタとの対応を記載したプロセッサ管理表と、を前記処理管理表群として生成し、また、
メモリアクセス用メソッドＩＤと、前記共有メモリのアクセス制御のためのメモリアクセス用メソッド関数へのポインタとの対応を記載したメモリアクセス用メソッド管理表と、
前記共有メモリを識別するためのメモリＩＤと前記メモリアクセス用メソッド管理表へのポインタとの対応を記載したメモリ管理表と、
前記複数の共有メモリを前記複数のプロセッサが該プロセッサに固有のアドレスマップ上でアクセスするためのベースアドレスと、前記共有メモリの前記メモリＩＤと前記プロセッサの前記プロセッサＩＤとの組合せとの対応を記載したアドレス変換表と
を前記メモリ管理情報として生成することを特徴とする請求項２３に記載の並列処理システム制御プログラム。
【請求項２５】
前記共通コマンド変換・メモリ管理部は、
前記共通コマンドを、前記部分処理を識別する処理ＩＤと、前記部分処理に係る入出力データを含むデータを指定する処理パラメータと、を含む形式で受け取り、
前記処理パラメータは、前記共有メモリに配置された、複数の前記入出力データを前記プロセッサ、前記共有メモリに依存しない形式で指定する複数の共通メモリ情報を含み、
前記共通メモリ情報は、前記共有メモリを識別するため前記メモリＩＤと、前記入出力データを格納するバッファの前記共有メモリの固有のアドレスマップ上でのアドレスを示す、メモリ固有空間アドレスを含み、
前記共通コマンドに含まれる前記処理ＩＤをキーとして前記処理ＩＤ管理表から、前記部分処理を実行する前記プロセッサのプロセッサＩＤと、前記プロセッサが行なう前記部分処理を指定するプロセッサ個別処理ＩＤと、を検索し、
前記処理パラメータを構成する前記複数の共通メモリ情報のそれぞれに関して、前記共有メモリの前記メモリＩＤと前記プロセッサＩＤをキーとして前記アドレス変換表から前記ベースアドレスを検索し、前記ベースアドレスと、前記メモリ固有空間アドレスとから、前記プロセッサＩＤで指定される前記プロセッサが前記バッファを前記プロセッサ固有のアドレスマップ上でアクセスするためのアドレスをプロセッサ固有空間アドレスとして計算し、前記共通メモリ情報に設定することで、前記処理パラメータを前記プロセッサの個別処理パラメータへ変換し、
前記プロセッサ個別処理ＩＤと、前記個別処理パラメータとを合わせることにより前記プロセッサ個別コマンドを得ることを特徴とする請求項２４に記載の並列処理システム制御プログラム。
【請求項２６】
前記個別実行制御部は、前記プロセッサ個別処理ＩＤと前記処理パラメータとを引数にして、前記プロセッサ制御用メソッド管理表にそのポインタが予め登録されているプロセッサ個別コマンド実行関数を呼び出すことにより実行されるプロセッサ個別実行制御コマンドによって、前記部分処理を前記プロセッサに実行させ、
前記プロセッサ制御用メソッド管理表にそのポインタが予め登録されているプロセッサ状態チェック関数によって、前記プロセッサの動作状態をチェックすることを特徴とする請求項２５に記載の並列処理システム制御プログラム。
【請求項２７】
前記個別実行制御登録部は、前記アプリケーションプログラムが有する実行制御登録用コードに基づく個別実行制御登録コマンドによって、前記処理管理表群、前記メモリ管理情報を生成することを特徴とする請求項２４乃至２６のいずれか１項に記載の並列処理システム制御プログラム。
【請求項２８】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記部分処理に係るプロセッサの登録の場合、前記個別実行制御登録コマンドに基づいて前記プロセッサ制御用メソッド管理表及び前記プロセッサＩＤを生成し、生成した前記プロセッサＩＤと前記プロセッサ制御用メソッド管理表へのポインタとを、前記プロセッサ管理表に登録することを特徴とする請求項２７に記載の並列処理システム制御プログラム。
【請求項２９】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記プロセッサの実行制御に係るプロセッサ制御用メソッドの登録の場合、前記個別実行制御登録コマンドに含まれる前記プロセッサＩＤ、前記プロセッサ制御用メソッドＩＤ及びプロセッサ制御用メソッド関数へのポインタを引数として受け取り、前記プロセッサＩＤをキーとして前記プロセッサ管理表から前記プロセッサ制御用メソッド管理表を取得し、前記プロセッサ制御用メソッド管理表に前記プロセッサ制御用メソッドＩＤ及び前記プロセッサ制御用メソッド関数へのポインタを登録することを特徴とする請求項２７又は２８に記載の並列処理システム制御プログラム。
【請求項３０】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記プロセッサが行なう前記部分処理を指定するプロセッサ個別処理の登録の場合、前記個別実行制御登録コマンドに含まれる前記プロセッサＩＤ、プログラム定義体を引数を受け取り、前記プロセッサＩＤをキーとして前記プロセッサ管理表から前記プロセッサ制御用メソッド管理表へのポインタを取得し、そのポインタにより特定されるプロセッサ制御用メソッド管理表から前記プロセッサ個別処理ＩＤ登録関数を取得し、前記プログラム定義体を引数として前記プロセッサ個別処理ＩＤ登録関数を呼び出したときの戻り値として前記プロセッサ個別処理ＩＤを取得し、更に、前記処理ＩＤを生成し、前記処理ＩＤ、前記プロセッサＩＤ及び前記プロセッサ個別処理ＩＤを前記処理ＩＤ管理表に登録することを特徴とする請求項２７乃至２９の何れか１項に記載の並列処理システム制御プログラム。
【請求項３１】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記共有メモリの登録の場合、前記メモリアクセス用メソッド管理表及び前記メモリＩＤを生成し、生成した前記メモリＩＤと前記メモリアクセス用メソッド管理表へのポインタとを前記メモリ管理表に登録することを特徴とする請求項２７乃至３０の何れか１項に記載の並列処理システム制御プログラム。
【請求項３２】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記共有メモリの管理操作に係るメモリアクセス用メソッド登録の場合、前記個別実行制御登録コマンドに含まれる前記メモリＩＤ、前記メモリアクセス用メソッドＩＤ及び前記メモリアクセス用メソッド関数を引数として受け取り、前記メモリＩＤをキーとして前記メモリ管理表から前記メモリアクセス用メソッド管理表へのポインタを取得し、前記メモリアクセス用メソッド管理表に前記メモリアクセス用メソッドＩＤ及び前記メモリアクセス用メソッド関数へのポインタを登録することを特徴とする請求項２７乃至３１の何れか１項に記載の並列処理システム制御プログラム。
【請求項３３】
前記個別実行制御登録部は、前記個別実行制御登録コマンドが、前記ベースアドレスの登録の場合、前記個別実行制御登録コマンドに含まれる前記メモリＩＤ、前記プロセッサＩＤ、前記ベースアドレスを引数として受け取り、前記アドレス変換表の前記メモリＩＤと前記プロセッサＩＤをキーとして指示されるエントリに前記ベースアドレスを格納することを特徴とする請求項２７乃至３２の何れか１項に記載の並列処理システム制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の異なるタイプのプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための制御装置、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
組込み等、消費電力の制約の厳しい装置は、低電力で高性能を達成するために、ＣＰＵ(Central Processing Unit)、ＤＳＰ(Digital Signal Processor)、専用プロセッサ、再構成可能プロセッサ、専用アクセラレータ等の異なるプロセッサを含み、１つのアプリケーションにおける各処理を、電力性能が最適なプロセッサにそれぞれ割り当てている。
【０００３】
ここで、複数の異なるプロセッサを含む処理装置において１つのアプリケーションを実行制御する方式としては、次のものがある。
【０００４】
第１の方式は、それぞれのプロセッサに固有な制御手順をアプリケーションプログラムに埋め込むというものである。アプリケーションを幾つかの部分処理に分割して、それぞれの部分処理をＣＰＵ、ＤＳＰ、専用プロセッサ、再構成可能プロセッサ、専用アクセラレータ等のプロセッサに割り当てる。それぞれの部分処理間でデータ転送が必要な場合は、共有メモリやプロセッサ間の専用バッファ等を用いる。処理全体の制御は一般的にはＣＰＵで行ない、それぞれのプロセッサの起動、停止、データの投入等の処理は、それぞれのプロセッサ固有の実行制御手順をアプリケーションプログラムから関数コール等の手段で呼び出すことで行なう。
【０００５】
第２の方式は、異機種を含むサーバ等で用いられるインタープリター方式である。それぞれの異なるプロセッサは、共通言語（例えばＪａｖａ（登録商標））のインタープリターとよばれる解釈プログラムを実行する。共通言語で記述されたプログラムはそのインタープリターが解釈することにより、それぞれの異なるプロセッサで実行される。この方式では、アプリケーション全体を共通言語で記述し、それぞれの部分処理を異なるプロセッサに割り当てて実行する。
【０００６】
第３の方式は、Ｉ／Ｏ等の周辺装置に適用するものであり、デバイスドライバで各周辺装置の固有の特性を隠蔽するものである。例えば、ファイルシステムとして機能する周辺装置であれば、アプリケーションプログラムからは、デバイスドライバの提供する統一的な手順で異なるＩ／Ｏ装置をアクセスすることが可能である。
【０００７】
複数の異るプロセッサを含む処理装置において１つのアプリケーションを実行するためには、複数のプロセッサ間でのデータ転送が必要になる。複数のプロセッサ間でデータ転送を行う方式としては次のものがある。
【０００８】
第１の方式は、共有メモリを介して行う方式で、複数のプロセッサからアクセス可能な共有メモリに転送すべきデータ領域を確保し、送り側のプロセッサが転送すべきデータをデータ領域に書き込み、受け側のプロセッサがデータをデータ領域から読み込むことによりデータ転送を行う。
【０００９】
第２の方式は、各プロセッサのローカルメモリを共通にアクセス可能なメモリ管理プロセッサを用いる方式である。送り側のプロセッサはローカルプロセッサに転送すべきデータを書く。受け側プロセッサは、メモリ管理プロセッサに送り側プロセッサとそのローカルメモリ内のデータ領域のアドレスを通知する。メモリ管理プロセッサは指定されたプロセッサとローカルメモリのアドレスからデータを読みだし、受け側プロセッサのローカルメモリにそのデータを書き込み、データを書き込んだデータ領域のアドレスを受け側プロセッサに通知する。受け側プロセッサはメモリ管理プロセッサから通知されたアドレスからデータを読み出すことによりデータ転送が行われる。
【００１０】
これらの方式に準拠した技術は、下記の文献で開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００７−３２８４１５号公報
【特許文献２】特開２００７−１４８７４６号公報
【特許文献３】特開平０２−０３９２６２号公報
【特許文献４】特開昭６２−０２８８６０号公報
【特許文献５】特開２００６−３５０６２２号公報
【特許文献６】特許第３０８７４７７号公報
【特許文献７】特開平０８−１７９９５３号公報
【特許文献８】特開平０９−１０６３５２号公報
【特許文献９】特開平１１−２８２６９２号公報
【特許文献１０】特許第４０２１５３４号公報
【特許文献１１】特開平０５−２８２２５７号公報
【非特許文献】
【００１２】
【非特許文献１】COMPUTER ARCHITECTURE: A Quantitative Approach, Fourth Edition, J. L. Hennessy, D. A. Patterson, pp205-237, Fig. 4.8, Fig. 4.19  発行2007年
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述の手法には以下のように幾つかの問題点がある。
【００１４】
第１の問題点は、特許文献３、特許文献４、特許文献５、特許文献６及び特許文献１０の手法に関するものである。ＣＰＵ等が各プロセッサに応じて固有の実行制御手順をアプリケーションプログラムから関数コール等の手段で呼び出す手法では、アプリケーションに対する、要求仕様、性能の変化に応じて、装置の構成が変化した場合、アプリケーションプログラム等のソフトウェアもそれに応じて変更が必要になっていた。
【００１５】
第２の問題点は、特許文献１、特許文献７、特許文献８及び特許文献９の手法に関するものである。インタープリター方式では、異なるプロセッサ間の差違はインタープリターによって隠蔽できるが、インタープリター方式はアプリケーションコードを随時解釈しながらの実行のため、実行速度が非常に遅くなり、要求性能を達成するためには、電力、コストの関係で組込み用等の制限の強い装置には適用が困難であった。
【００１６】
第３の問題点は、特許文献２の手法に関するものである。デバイスドライバで装置固有の特性を隠蔽する手法では、プログラマブルなプロセッサには対応しにくいということである。ＤＳＰや専用プロセッサ、再構成可能プロセッサのようにプログラムに応じてその機能が大きく変化するプロセッサや、専用アクセラレータでも、パラメータの設定に応じて機能が変化するようなプロセッサでは、デバイスドライバのように統一的な制御手順を予め定義することが困難である。
【００１７】
第４の問題点は、非特許文献１の手法に関するものである。プロセッサ間のデータ転送として、共有メモリを用いる方式では、プロセッサ数が多い場合、各プロセッサが共有メモリ領域を一様にアクセスできるようにするためのハードウェアの規模が非常に大きくなり、チップサイズや、消費電力の制限が厳しい組み込み用途では適用が困難である。
【００１８】
第５の問題点は、特許文献１１の手法に関するものである。プロセッサ間のデータ転送のために、各プロセッサのローカルメモリにアクセス可能なメモリ管理プロセッサを設ける方式では、プロセッサ間のデータ転送の度にメモリ管理プロセッサにより、送り側プロセッサのローカルメモリから受け側プロセッサのローカルメモリへのデータコピーが必要となり、プロセッサ間のデータ転送が多い場合、データコピーにより大幅に性能が低下するという問題がある。
【００１９】
本発明は上記の問題点に鑑みてなされたもので、複数の異なるタイプのプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための装置、その方法及びそのプログラムであって、各プロセッサの差異を隠蔽し、異なるプロセッサの機能を抽象化して上位レベルのアプリケーションプログラムから統一的に各プロセッサを制御でき、かつ実行効率の高い装置、その方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の第１の観点によれば、異なるタイプの複数のプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための並列処理システム制御装置であって、アプリケーションプログラムの実行要求を受けた時、その実行要求を、前記アプリケーションプログラムに含まれる複数の部分処理の各々に各々が対応する複数の共通コマンドであって、前記並列処理システムに含まれる各プロセッサの種類に依存せず、各プロセッサが扱う入出力データのバッファが前記並列処理システムに含まれるどの共有メモリに配置されているかということに依存しない複数の共通コマンドの実行要求として受け取り、各共通コマンドを解析することにより、各部分処理を実行するプロセッサを決定し、各プロセッサが扱う入出力データのバッファが配置されている共有メモリを決定し、各共通コマンドを前記決定したプロセッサに対応する個別のコマンドであるプロセッサ個別コマンドに変換する共通コマンド変換・メモリ管理部と、前記複数のプロセッサの各々に各々が対応し、前記プロセッサ個別コマンドで指定された前記部分処理を対応するプロセッサに実行させるための制御を行う複数の個別実行制御部と、前記複数の共有メモリの各々に対するアクセスを制御するため関数と、前記複数の共有メモリを前記複数のプロセッサの各々が該プロセッサに固有のアドレスマップ上でアクセスするためのアドレス変換表とを含むメモリ管理情報を保持するメモリ管理情報保持部と、前記共通コマンド変換・メモリ管理部により行われる前記部分処理を実行する前記プロセッサの決定のために用いられる情報、前記共通コマンド変換・メモリ管理部により行われる前記共通コマンドの前記プロセッサ個別コマンドへの変換のために用いられる情報、前記個別実行制御部により行われる前記プロセッサの制御で用いられるコマンド、関数及び識別子を含む情報が記載された処理管理表群を生成し、前記処理管理表群を前記共通コマンド変換・メモリ管理部及び前記個別実行制御部に登録し、前記処理管理表群を管理するとともに、前記メモリ管理情報を生成し、管理する個別実行制御登録部と、を備えることを特徴とする並列処理システム制御装置が提供される。
【００２１】
また、本発明の第２の観点によれば、異なるタイプの複数のプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための並列処理システム制御装置により行われる並列処理システム制御方法であって、共通コマンド変換・メモリ管理部が、アプリケーションプログラムの実行要求を受けた時、その実行要求を、前記アプリケーションプログラムに含まれる複数の部分処理の各々に各々が対応する複数の共通コマンドであって、前記並列処理システムに含まれる各プロセッサの種類に依存せず、各プロセッサが扱う入出力データのバッファが前記並列処理システムに含まれるどの共有メモリに配置されているかということに依存しない複数の共通コマンドの実行要求として受け取り、各共通コマンドを解析することにより、各部分処理を実行するプロセッサを決定し、各プロセッサが扱う入出力データのバッファが配置されている共有メモリを決定し、各共通コマンドを前記決定したプロセッサに対応する個別のコマンドであるプロセッサ個別コマンドに変換するステップと、前記複数のプロセッサの各々に各々が対応する複数の個別実行制御部の各々が、前記プロセッサ個別コマンドで指定された前記部分処理を対応するプロセッサに実行させるための制御を行うステップと、メモリ管理情報保持部が、前記複数の共有メモリの各々に対するアクセスを制御するため関数と、前記複数の共有メモリを前記複数のプロセッサの各々が該プロセッサに固有のアドレスマップ上でアクセスするためのアドレス変換表とを含むメモリ管理情報を保持するステップと、個別実行制御登録部が、前記共通コマンド変換・メモリ管理部により行われる前記部分処理を実行する前記プロセッサの決定のために用いられる情報、前記共通コマンド変換・メモリ管理部により行われる前記共通コマンドの前記プロセッサ個別コマンドへの変換のために用いられる情報、前記個別実行制御部により行われる前記プロセッサの制御で用いられるコマンド、関数及び識別子を含む情報が記載された処理管理表群を生成し、前記処理管理表群を前記共通コマンド変換・メモリ管理部及び前記個別実行制御部に登録し、前記処理管理表群を管理するとともに、前記メモリ管理情報を生成し、管理するステップと、を有することを特徴とする並列処理システム制御方法が提供される。
【００２２】
更に、本発明の第３の観点によれば、異なるタイプの複数のプロセッサ及び複数の共有メモリを含む並列処理システムを制御するための並列処理システム制御装置としてコンピュータを機能させるためのプログラムであって、コンピュータを、アプリケーションプログラムの実行要求を受けた時、その実行要求を、前記アプリケーションプログラムに含まれる複数の部分処理の各々に各々が対応する複数の共通コマンドであって、前記並列処理システムに含まれる各プロセッサの種類に依存せず、各プロセッサが扱う入出力データのバッファが前記並列処理システムに含まれるどの共有メモリに配置されているかということに依存しない複数の共通コマンドの実行要求として受け取り、各共通コマンドを解析することにより、各部分処理を実行するプロセッサを決定し、各プロセッサが扱う入出力データのバッファが配置されている共有メモリを決定し、各共通コマンドを前記決定したプロセッサに対応する個別のコマンドであるプロセッサ個別コマンドに変換する共通コマンド変換・メモリ管理部と、前記複数のプロセッサの各々に各々が対応し、前記プロセッサ個別コマンドで指定された前記部分処理を対応するプロセッサに実行させるための制御を行う複数の個別実行制御部と、前記複数の共有メモリの各々に対するアクセスを制御するため関数と、前記複数の共有メモリを前記複数のプロセッサの各々が該プロセッサに固有のアドレスマップ上でアクセスするためのアドレス変換表とを含むメモリ管理情報を保持するメモリ管理情報保持部と、前記共通コマンド変換・メモリ管理部により行われる前記部分処理を実行する前記プロセッサの決定のために用いられる情報、前記共通コマンド変換・メモリ管理部により行われる前記共通コマンドの前記プロセッサ個別コマンドへの変換のために用いられる情報、前記個別実行制御部により行われる前記プロセッサの制御で用いられるコマンド、関数及び識別子を含む情報が記載された処理管理表群を生成し、前記処理管理表群を前記共通コマンド変換・メモリ管理部及び前記個別実行制御部に登録し、前記処理管理表群を管理するとともに、前記メモリ管理情報を生成し、管理する個別実行制御登録部と、として機能させるための並列処理システム制御プログラムが提供される。
【発明の効果】
【００２３】
本発明によれば、複数の異なるタイプのプロセッサ及び複数の共有メモリを含む並列処理システムにおいて、個別実行制御登録部が、コマンド、関数及び識別子（ＩＤ）を含む情報が記載された処理管理表群と、複数の共有メモリのアクセス制御のための関数、各共有メモリの各プロセッサのアドレスマップ上のアドレス情報を含むメモリ管理情報を生成し、この処理管理表群、メモリ管理情報に基づいて、共通コマンド変換・メモリ管理部が、固有のプロセッサに依存しない共通コマンドを各プロセッサへの個別のコマンドであるプロセッサ個別コマンドに変換し、個別実行制御部がプロセッサ個別コマンドで指定された処理を前記プロセッサに実行させることによって、各プロセッサ及び、各プロセッサのアドレスマップの差異を隠蔽し、異なるプロセッサの機能を抽象化して上位レベルのアプリケーションプログラムからプロセッサを統一的に制御できる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態が対象としているアプリケーションと、そのアプリケーションに含まれる部分処理の並列処理システムへのマッピング例である。
【図２】本発明の実施の形態によるプロセッサ固有空間アドレスマップの例である。
【図３】本発明の実施の形態の構成を示すブロック図である。
【図４】本発明の実施の形態の共通コマンドの構成例である。
【図５】本発明の実施の形態の共通メモリ情報の構成例である。
【図６】本発明の実施の形態において、各プロセッサから各共有メモリをアクセスするために必要となる管理表群である。
【図７】本発明の実施の形態において、共通コマンドから実際にプロセッサを制御するために必要となる管理表群である。
【図８】本発明の実施の形態において、共通コマンドから実際に所定のプロセッサでの処理を起動するまでの手順を示すフローチャートである。
【図９】本発明の実施の形態において、アプリケーションプログラムが共有メモリ上のバッファ領域を確保、または、解放するための手順を示すフローチャートである。
【図１０】本発明の実施の形態において、個別実行制御登録部での処理手順を示すフローチャートの前半部である。
【図１１】本発明の実施の形態において、個別実行制御登録部での処理手順を示すフローチャートの後半部である。
【発明を実施するための形態】
【００２５】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００２６】
図１は、本発明の実施の形態が対象としているアプリケーションの処理の構成と、複数の異なるプロセッサ及び複数の共有メモリを含む並列処理システム３０への部分処理のマッピングの例を示したものである。
【００２７】
図１において、アプリケーション１０は、複数の部分処理１１、複数の通信用チャネル１２を含んでいる。これらの部分処理１１間のデータ転送は、通信チャネル１２を介して行なわれる。
【００２８】
また、図１において、並列処理システム３０は、複数の異なるプロセッサ３１と、複数の共有メモリ３３と、複数の通信路３２と、を含む。共有メモリ３３は、複数のプロセッサ３１で共有される。各通信路３２は、各プロセッサ３１と、複数の共有メモリ３３との間でのデータの転送や、割込み等のイベントの通知に使われる。
【００２９】
図１のアプリケーション１０は、一例として、４つの部分処理１１（Ｐ１、Ｐ２、Ｐ３及びＰ４）と、部分処理間の７つの通信用チャネル１２（ＣＨ１、ＣＨ２、…、ＣＨ７）を含む。又、Ｎ個のプロセッサ３１（Ｐｒｏｃ１、Ｐｒｏｃ２、…、Ｐｒｏｃ  Ｎ）、Ｍ個の共有メモリ３３（Ｍｅｍ１、Ｍｅｍ  ２、…、ＭｅｍＭ）、Ｌ個の通信路３２（Ｃｏｍ１、Ｃｏｍ２、…、ＣｏｍＬ）が存在するものとする。
【００３０】
図１の例では、マッピング部２０は、部分処理Ｐ１及びＰ２をプロセッサＰｒｏｃ１にマッピングし、部分処理Ｐ３をプロセッサＰｒｏｃ２にマッピングし、部分処理Ｐ４をプロセッサＰｒｏｃＮにマッピングする。また、マッピング部２０は、通信用チャネルＣＨ１、ＣＨ２、ＣＨ３は共有メモリＭｅｍ１へ、通信チャネルＣＨ４は共有メモリＭｅｍ２へ、通信チャネルＣＨ５、ＣＨ６は共有メモリＭｅｍ３へ、通信チャネルＣＨ７は共有メモリＭｅｍＬへマッピングする。
【００３１】
マッピング部２０により、それぞれの部分処理１１を、その処理に適したプロセッサ３１が実行するようにすることにより、アプリケーション１０全体で、消費電力あたりの性能を最適化することが可能となる。共有メモリ３３は全プロセッサ３１で共有する必要はなく、データ転送が必要なプロセッサ３１間で共有する。共有メモリ３３は、複数設けられる。通信チャネル１２は、その通信チャネル１２を介してデータ転送を行う部分処理１１がマッピングされているプロセッサ３１がアクセス可能な共有メモリ３３にマッピングされる。こうすることにより、少ないハードウェア量でシステム全体としてのデータ転送速度を向上させることが可能となる。また、そうすることにより、並列処理システム３０をＳｏＣ(System On Chip)として１つのチップで構成する場合には、チップ面積あたりの性能を最適化することが可能となる。
【００３２】
図２は、プロセッサ固有空間アドレスマップの例である。これは、各プロセッサ３１の固有空間に各共有メモリ３２がどのように配置されているかを示している。例えば、プロセッサＰｒｏｃ１の固有空間アドレスマップ６７−１には共有メモリＭｅｍ１、Ｍｅｍ３、Ｍｅｍ２が、ベースアドレスｂａｓｅ１，１、ｂａｓｅ３，１、ｂａｓｅ２，１にマップされていることを示している。一般にアドレスマップ６７はプロセッサ３１毎に異なり、１つの共有メモリ３３は異なるプロセッサからはそれぞれ異なるベースアドレス６８にマップされる。
【００３３】
図３は、アプリケーションプログラム４０、並列処理システム制御装置５０及び並列処理システム３０の関係を示すブロック図である。
【００３４】
アプリケーションプログラム４０は、アプリケーション実行制御用コード４１と、実行制御登録用コード４２とを含む。
【００３５】
アプリケーション実行制御用コード４１は、図１のアプリケーション１０の各部分処理１１を具体的にどういう方式で並列処理をするかを定義している。一方で、実行制御登録用コード４２は、アプリケーション実行制御用コード４１に基づく処理を並列処理システム３０の複数のプロセッサ３１に実行させるために必要なプログラムや複数のプロセッサ３１で実行されるプログラム間の通信路３２に対応する共有メモリ３３を並列処理システム制御装置５０に登録するためのコードである。従って、実行制御登録用コード４２は、個別実行制御登録コマンド１１３の基となるコードである。
【００３６】
また、各部分処理１１は、個々のプロセッサ３１に依存しない統一した構造を持つ共通コマンド１１０を用いて記述されている。
【００３７】
並列処理システム制御装置５０は、共通コマンド変換・メモリ管理部５１、個別実行制御登録部５２、メモリ管理情報８０、及び複数の個別実行制御部５３を含む。メモリ管理情報８０は、メモリ管理情報保持部８０Ａにより保持される。共通コマンド変換・メモリ管理部５１には、アプリケーション実行制御用コード４１から、部分処理１１の実行指示が、共通コマンド１１０として渡される。また、共通コマンド変換・メモリ管理部５１には、アプリケーション実行制御用コード４１から、共有メモリ３３でのバッファ領域の確保指示及び解放指示が渡される。
【００３８】
共通コマンド１１０は、アプリケーションプログラムの個々の部分処理１１を識別するための処理ＩＤ１１４と、個々の部分処理１１の入出力データ等を指定するための処理パラメータ１１５を含む。入出力データは共有メモリ３３に確保されたバッファに格納されるが、部分処理１１がどのプロセッサ３１で処理されるかにより、バッファのアドレスの指定を変更する必要がある。共通コマンド１１０の処理パラメータ１１５は、入出力データの格納されるバッファのアドレスの指定を含む。アドレスの指定は、どのプロセッサで入出力データが処理されるかに依存しない共通な形式で行われる。バッファのアドレス指定の共通形式を共通メモリ情報６０（図５参照）と呼ぶ。
【００３９】
共通コマンド変換・メモリ管理部５１は、共通コマンド１１０により指定された部分処理１１を実行するべきプロセッサ３１を特定し、そのプロセッサ３１が行なう部分処理を識別するためのプロセッサ個別処理ＩＤ１１６を特定する。
【００４０】
メモリ管理情報８０には、各共有メモリ３３の管理情報が含まれている。共通コマンド変換・メモリ管理部５１は、共通コマンド１１０の処理パラメータ１１５に含まれる共通メモリ情報６０を、メモリ管理情報８０を参照して、部分処理１１を実行するべきプロセッサ３１の固有空間アドレスマップ６７のアドレスに変換する。変換後のアドレスは、個別処理パラメータ１１８に含まれることとなる。
【００４１】
共通コマンド変換・メモリ管理部５１は、以上説明した通り、共通コマンド１１０を、プロセッサ個別処理ＩＤ１１６と個別処理パラメータ１１８とを含むプロセッサ個別コマンド１１１に変換する。このプロセッサ個別コマンド１１１を基に、プロセッサ３１を制御するための個別実行制御部５３は、プロセッサ３１に部分処理１１を実行させる。
【００４２】
個別実行制御部５３には、それに対応するプロセッサ３１に固有の実行制御に必要な関数が登録されている。個別実行制御部５３に対応するプロセッサ３１に割り当てられた部分処理１１をプロセッサ３１が実行するためには、その部分処理１１をそのプロセッサ３１で実行するためのプログラムとそのプログラムを識別するためのプロセッサ個別処理ＩＤ１１６を対応付けて登録する必要がある。
【００４３】
プログラムの登録方法は一般的には各プロセッサ３１毎に固有の手順が必要となる。例えば、プロセッサ３１がＣＰＵやＤＳＰであれば、個別実行制御登録部５２は、部分処理１１用の関数へのポインタを個別実行制御コマンド１１３のパラメータとして受け取り、ポインタとプロセッサ個別処理ＩＤ１１６との対応付けを管理すればよい。また、例えば、プロセッサ３１が回路を繰り返し変更することのできる再構成可能プロセッサであれば、個別実行制御登録部５２は、部分処理１１用の再構成データを個別実行制御コマンド１１３のパラメータとして受け取り、再構成データとプロセッサ個別処理ＩＤ１１６との対応付けを管理する。
【００４４】
このため、個別実行制御部５３では、プロセッサ３１の種類に応じて、プロセッサ個別処理ＩＤ登録関数１０２（図７参照）を予め登録しておき、プロセッサ個別処理ＩＤ１１６の登録はこのプロセッサ個別処理ＩＤ登録関数１０２を用いて行なう。
【００４５】
プロセッサ個別処理ＩＤ登録関数１０２を用いて登録した、部分処理１１を実行するためのプロセッサ３１用のプログラムは、プロセッサ個別処理ＩＤ１１６で指定することができる。
【００４６】
上述したように、プロセッサ個別コマンド１１１はプロセッサ個別処理ＩＤ１１６と、個別処理パラメータ１１８とを含む。プロセッサ個別処理ＩＤ１１６は、例えば、プロセッサがＣＰＵであれば登録されている実行関数を特定し、プロセッサが再構成プロセッサであれば再構成データを特定する。プロセッサ個別処理ＩＤ１１６は、個別処理パラメータ１１８とともにプロセッサ３１に与えられる。
【００４７】
個別実行制御部５３には、それに対応するプロセッサ３１に応じて、プロセッサ個別コマンド実行関数１０３（図７参照）が予め登録されている。プロセッサ個別コマンド実行関数１０３をプロセッサ個別処理ＩＤ１１６と個別処理パラメータ１１８とを引数として呼び出すことにより実行されるプロセッサ個別実行制御コマンド１１２によって、個別実行制御部５３に対応するプロセッサ３１が制御される。
【００４８】
プロセッサ３１の実行状況の確認の手順等も、各プロセッサ３１毎に異なるため、各プロセッサ３１毎に予め登録しておいたプロセッサ状態チェック関数１０４（図７参照）を用いて、その確認等を行なう。
【００４９】
個別実行制御登録部５２は、個別実行制御登録コマンド１１３に基づき、各プロセッサ３１毎の個別実行制御部５３の登録、プロセッサ個別処理ＩＤ登録関数１０２、プロセッサ個別コマンド実行関数１０３、プロセッサ状態チェック関数１０４等のプロセッサの制御に必要な関数の個別実行制御部５３への登録及びプロセッサ個別処理ＩＤ登録関数１０２を用いたプロセッサ個別処理ＩＤ１１６の共通コマンド変換・メモリ管理部５１及び個別実行制御部５３への登録を行なう。この際、具体的には、プロセッサ管理表７１のプロセッサ３１用のエントリにプロセッサ制御用メソッド管理表７２を登録することになる。ここに登録された各種メソッド群が個別実行制御部の実体となる。
【００５０】
図４は、共通コマンド１１０の構成例を示す。共通コマンド１１０は、アプリケーションプログラムの部分処理１１を指定する処理ＩＤ１１４と、部分処理１１に処理の対象となる入出力データ等を指定する処理パラメータ１１５とを含む。
【００５１】
図４は、部分処理１１に入力データが２セット、出力データが１セットある場合の例を示している。
【００５２】
処理パラメータ１１５は、例えば、処理パラメータ本体１６へのポインタである。処理パラメータ本体１６に入力データバッファ１３、出力データバッファ１４をアクセスするために必要な共通メモリ情報６０へのポインタを格納することにより、処理の対象となる入力データや処理の結果である出力データのある場所を指定できる。
【００５３】
処理パラメータ本体１６に入力データセット数及び出力データセット数を格納することにより、各部分処理１１毎に入力データのセット数、出力データのセット数が異なる場合に対応することができる。他方、一般的には部分処理１１はその処理内容が決まれば、入出力セット数も決まるため、部分処理１１を実行するプログラムに固有の入出力セット数は処理パラメータ本体１６には設定しないことも可能である。
【００５４】
図５は部分処理１１の入出力データ用バッファをアクセスるすために必要な共通メモリ情報６０の構成例である。メモリＩＤ６１（ｍｅｍＩＤ）によりバッファ１５が置かれる共有メモリ３３を指定する。各共有メモリ３３は共有メモリ３３に固有のアドレスマップを持つ。これをメモリ固有空間アドレスマップ６６と呼ぶ。バッファ１５はメモリＩＤ６１とメモリＩＤ６１で指定される共有メモリ３３のメモリ固有空間アドレスマップ６６上のアドレスを指定することによりアクセス可能である。メモリ固有空間アドレスマップ６６上のアドレスをメモリ固有空間アドレス６２と呼ぶ。共通メモリ情報６０はバッファ１５を指定するためにメモリ固有空間アドレス６２を含む。バッファ１５はメモリＩＤ６１とメモリ固有空間アドレス６２により一意に指定できる。共有メモリ情報６０はバッファ１５のサイズを指定するバッファサイズ６３（ｂｕｆＳｉｚｅ）を持つことも可能である。バッファサイズ６３により、バッファ１５の領域外へのアクセスを制限することも可能となる。
【００５５】
プロセッサ３１はプロセッサ固有空間アドレスマップ６７を持つ。バッファ１５をプロセッサ３１からアクセスするためには、このプロセッサ固有空間アドレスマップ６７上でのバッファ１５のアドレスが必要である。プロセッサ３１からバッファ１５をアクセスするためのアドレスは、プロセッサ固有空間アドレス６４（ｐｒｏｃＡｄｄｒ）に格納される。
【００５６】
プロセッサ固有空間アドレス６４は、バッファ１５が置かれる共有メモリ３３が、プロセッサ３１のプロセッサ固有空間アドレスマップ６７上のどのアドレスにマップされているかの情報（ベースアドレス６８）と、バッファ１５の共有メモリ３３のメモリ固有空間アドレスマップ６６上のアドレス（メモリ固有空間アドレス６２）を加算することで得ることができる。
【００５７】
共通メモリ情報６０はメモリＩＤ６１で指定される共有メモリ３３に固有のメモリ固有管理情報６５（ｍｅｍＳｐｅｃＩｎｆｏ）を持つことが可能である。この情報は共有メモリ３３上にバッファ領域を確保、解放するため必要となる固有の管理情報を含むことができる。
【００５８】
図６は複数の共有メモリ３３をアプリケーション実行制御用コード４１から統一的にアクセスするために必要なメモリ管理情報８０を構成する管理表、変換表である。アドレス変換表８３は、共有メモリ３３が、プロセッサ３１のプロセッサ固有空間アドレスマップ６７上のベースアドレス６８を格納している。例えばプロセッサＩＤ１１７がｉのプロセッサ３１がメモリＩＤがｊの共有メモリ３３をアクセスするためのベースアドレス６８はｂａｓｅ  ｊ，ｉである。
【００５９】
一般には、プロセッサ３１は全ての共有メモリ３３にアクセス可能とは限らない。システムの低コスト化のため、必要最小限の共有メモリ３３のみアクセスできるように構成することが望ましい。したがって、プロセッサ３１からアクセス困難な共有メモリ３３を識別する必要がある。この識別は、ベースアドレス６８の値として通常のベースアドレスと識別可能な特別な値（例えば０）を設定したり、または、アドレス変換表８３の、各ベースアドレス６８のエントリに識別用のフラグを設けることで可能である。
【００６０】
アプリケーション実行制御コード４１から共有メモリ３３上のバッファ１５をアクセスするためには、共有メモリ３３上にバッファ領域を確保する必要がある。また後のメモリ領域の再利用のために使用後のバッファ領域の解放という操作も必要となる。共有メモリ３３に対する、領域確保、解放等の管理操作はその共有メモリ３３をアクセスすることのできるプロセッサ３１で行う。共有メモリ３３は複数のプロセッサ３１からアクセス可能な場合があるがその場合は、複数のプロセッサ３１のなかで、領域確保、解放等の管理操作に適したプロセッサ３１がその管理操作を行う。共有メモリ３３毎に管理操作を行うプロセッサ３１が異なるため、管理操作用のプログラムを共有メモリ３１毎に設ける必要がある。これは、メモリ管理表８１、メモリアクセス用メソッド管理表８２によって実現する。
【００６１】
メモリ管理表８１は共有メモリ３３を指定するメモリＩＤ６１とその共有メモリ３３の管理操作に必要なメモリアクセス用メソッドを管理するための表である。
【００６２】
メモリアクセス用メソッド管理表８２は、共有メモリ３３の管理操作に必要なメソッド群を関数として管理している。共有メモリ３３の管理操作に必要なメソッドしては幾つか考えられるが、ここでは、共有メモリ３３にバッファ１５の領域を確保するための領域確保関数８７、共有メモリ３３上にあるバッファ１５の領域を解放するための領域解放関数８８が示される。メモリアクセス用メソッド関数は管理操作を行うプロセッサ３１に対する管理操作コマンドとして実現できる。メモリアクセス用メソッド関数は、プロセッサ３１の指定も含み、指定されたプロセッサ３１のプロセッサ個別実行制御部５３の一部として動作する。
【００６３】
図７は共通コマンド１１０から実際にプロセッサ３１を制御するために必要となるコマンド、関数及び識別子（ＩＤ）を含む情報が記載された管理表である。この管理表には、処理ＩＤ管理表７０、プロセッサ管理表７１及びプロセッサ制御用メソッド管理表７２が含まれる。
【００６４】
処理ＩＤ管理表７０は、アプリケーションに含まれる部分処理１１に対応する処理ＩＤ１１４を管理している。共通コマンド１１０に含まれる処理ＩＤ１１４を用いてこの処理ＩＤ管理表７０を検索することで、処理ＩＤ１１４に対応する部分処理１１を担当するプロセッサＩＤ１１７と、そのプロセッサＩＤ１１７で指定されるプロセッサ３１に固有のプロセッサ個別処理ＩＤ１１６を検索できる。部分処理１１を追加する場合は、処理ＩＤ管理表７０にエントリを追加する。
【００６５】
プロセッサ管理表７１は、並列処理システムの各プロセッサ３１の実行制御に必要なプロセッサ制御用メソッドを管理するための表である。
【００６６】
プロセッサＩＤ１１７からそのプロセッサＩＤ１１７と対応付けられているプロセッサ３１のプロセッサ制御用メソッド管理表７２を検索できる。プロセッサ３１を登録する場合には、このプロセッサ管理表７１にエントリを追加する。
【００６７】
プロセッサ制御用メソッド管理表７２は、プロセッサ３１の実行制御に必要なメソッド群を関数として管理している。プロセッサ３１の実行制御に必要な操作は幾つか考えられるが、ここでは、プロセッサ３１に部分処理１１に対応したプログラムを登録し、プロセッサ個別処理ＩＤ１１６と対応付けるためのプロセッサ個別処理ＩＤ登録関数１０２、プロセッサ個別コマンド１１１が与えられたときにプロセッサ個別コマンド１１１で指定される処理をプロセッサ３１で行なうためのプロセッサ個別コマンド実行関数１０３及び必要に応じてプロセッサ３１の状態を確認するためのプロセッサ状態チェック関数１０４が示されている。プロセッサ３１への操作は、その操作に対応するプロセッサ制御用メソッドＩＤ１００を指定して、プロセッサ制御用メソッド管理表７２を検索することで、必要なプロセッサ制御用メソッド関数へのポインタ１０１を得ることができる。
【００６８】
次に、図８、図９、図１０及び図１１のフローチャートを用いて、本実施の形態に係る並列処理システム制御装置５０の動作について説明する。ここで、図８はアプリケーション制御用コード４１が共通コマンド１１０を発行してから実際に所定のプロセッサ３１での処理が起動されるまでの手順を示している。図９はアプリケーション実行制御用コード４１から処理に必要なバッファ１５の領域を共有メモリ３３上に確保、及び、解放する手順を示している。図１０及び図１１はアプリケーションの実行制御登録用コード４２が個別実行制御登録コマンド１１３を発行してから各種登録を行なうまでの手順を示している。
【００６９】
図８の処理は共通コマンド変換・メモリ管理部５１で実行される。
【００７０】
まず、ステップＳ１００では、共通コマンド変換・メモリ管理部５１は、受け取った共通コマンド１１０から処理ＩＤ１１４を抽出し、その処理ＩＤ１１４をキーにして処理ＩＤ管理表７０からプロセッサＩＤ１１７及びプロセッサ個別処理ＩＤ１１６を得る。
【００７１】
続いて、ステップＳ１１０では、共通コマンド変換・メモリ管理部５１は、プロセッサＩＤ１１７をキーにしてプロセッサ管理表７１からプロセッサ制御用メソッド管理表へのポインタ７３を得る。
【００７２】
ステップＳ１２０では、共通コマンド変換・メモリ管理部５１は、プロセッサ制御用メソッド管理表へのポインタ７３により指定されるプロセッサ制御用メソッド管理表７２をプロセッサ個別コマンド１１１の実行を示すプロセッサ制御用メソッドＩＤ１００をキーとして検索し、プロセッサ個別コマンド実行関数１０３を得る。
【００７３】
ステップＳ１３０〜Ｓ１７０では、共通コマンド１１０の処理パラメータ１１５を個別処理パラメータ１１８に変換する。処理パラメータ１１５は、処理のデータバッファ（入力データバッファ又は出力データバッファ）の領域を指定している共通メモリ情報６０を１以上含む。処理パラメータ１１５から個別処理パラメータ１１８への変換は、処理パラメータ１１５の全ての共通メモリ情報６０のプロセッサ固有空間アドレス６４を、プロセッサＩＤ１１７で指定されるプロセッサ３１のプロセッサ固有空間アドレス６４に設定することで行う。各共通メモリ情報６０に対してステップＳ１４０〜Ｓ１７０を繰り返す。
【００７４】
ステップＳ１４０では、処理パラメータ１１５を構成する全共通メモリ情報６０に関する変換が完了したかどうか条件判断する。
【００７５】
ステップＳ１５０では、共通メモリ情報６０からバッファ１５のメモリＩＤ６１とメモリ固有空間アドレス６２を得る。
【００７６】
ステップＳ１６０では、メモリＩＤ６１とプロセッサＩＤ１１７をキーとしてアドレス変換表８３からベースアドレス６８を得る。
【００７７】
ステップＳ１７０では、メモリ固有空間アドレス６２とベースアドレス６８を加算することにより、プロセッサ固有空間アドレス６４を得る。このプロセッサ固有空間アドレス６４を共通メモリ情報６０に設定することにより共通メモリ情報６０の変換が完了する。
【００７８】
処理パラメータ１１５を構成する全ての共通メモリ情報６０を変換することで個別処理パラメータ１１８を得る。
【００７９】
ステップＳ１８０では、共通コマンド変換・メモリ管理部５１は、プロセッサ個別処理ＩＤ１１６と個別処理パラメータ１１８を引数として、プロセッサ個別コマンド実行関数１０３を呼び出す。
【００８０】
呼び出されたプロセッサ個別コマンド実行関数１０３は個別実行制御部５３の一部として動作する。
【００８１】
図９はアプリケーション実行制御用コード４１から処理に必要なバッファ１５の領域を共有メモリ３３上に確保、及び、解放する手順を示している。この手順は共通コマンド変換・メモリ管理部５１で実行される。ステップＳ８００〜Ｓ８３０はバッファ１５の領域確保の手順、Ｓ９００〜Ｓ９３０はバッファ１５の領域解放の手順を示す。
【００８２】
バッファ領域確保要求は、メモリＩＤ６１とバッファサイズ６３を引数として共通コマンド変換・メモリ管理部５１に与えられる（ステップＳ８００）。メモリＩＤ６１をキーにしてメモリ管理表８１からメモリアクセス用メソッド管理表８２へのポインタを得る（ステップＳ８１０）。メモリアクセス用メソッド管理表８２へのポインタ８４が指すメモリアクセス用メソッド管理表８２から領域確保関数８７を得る（ステップＳ８２０）。次に、バッファサイズ６３を引数として領域確保関数８７を呼び出す。領域確保関数８７は所定のプロセッサ３１の個別実行制御部５３の一部として動作し、メモリＩＤ６１で指定される共有メモリ３３上にバッファサイズ６３で指定されたサイズの領域を確保し、戻り値として、そのバッファ１５をアクセスするための共通メモリ情報６０を返す（ステップＳ８３０）。
【００８３】
領域解放要求は、共通メモリ情報６０を引数として共通コマンド変換・メモリ管理部５１に与えられる（ステップＳ９００）。共通メモリ情報６０のメモリＩＤ６１をキーにしてメモリ管理表８１からメモリアクセス用メソッド管理表８２へのポインタを得る（ステップＳ９１０）。メモリアクセス用メソッド管理表８２へのポインタ８４が指すメモリアクセス用メソッド管理表８２から領域解放関数８８を得る（ステップＳ９２０）。次に、領域解放関数８８を共通メモリ情報６０を引数として呼び出す。領域解放関数８８は所定のプロセッサ３１の個別実行制御部５３の一部として動作し、共通メモリ情報６０で指定される共有メモリ３３上のバッファ１５を解放する（ステップＳ９３０）。
【００８４】
プロセッサ個別コマンド実行関数１０３は、一般には、各プロセッサ３１毎に異なる処理をする。一般には、引数として与えられたプロセッサ個別処理ＩＤ１１６をキーとして必要なプログラムを検索し、プロセッサ３１を起動し、そのプログラムを実行させる。
【００８５】
プロセッサ３１がＣＰＵであれば、引数として個別処理パラメータ１１８を与えてプログラムを呼び出す。
【００８６】
一方で、プロセッサ３１が実行に先だってプログラムのロードが必要となるものであれば、プロセッサ３１にプログラムをロードさせた後に、プロセッサ３１に固有の方法で個別処理パラメータ１１８をプロセッサ３１に渡してプロセッサ３１でのプログラムの実行を開始させる。
【００８７】
プロセッサ３１がプログラムのロードに時間がかかるものであれば、同じプログラムで処理可能な処理要求を幾つか溜めて、それらの処理要求に対応する処理をまとめてプロセッサ３１に実行させることも可能である。これらのプロセッサ３１に固有の制御手順や、共有メモリ３３に固有の管理操作は、予め個別実行制御登録部５２により個別実行制御部５３やメモリ管理情報８０に登録することができる。
【００８８】
図１０及び図１１の処理は、個別実行制御登録部５２で実行される。図１０の処理は、プロセッサ３１に固有の制御手順を登録する手順を示し、図１１は共有メモリ３３に固有の管理操作を登録する手順を示す。
【００８９】
まず、個別実行制御登録コマンド１１３の内容に応じてプロセッサの登録（ステップＳ２００、Ｓ２１０、Ｓ２２０）、メソッドの登録（ステップＳ３００、Ｓ３１０、Ｓ３２０、Ｓ３３０）、プロセッサ個別処理の登録（ステップＳ４００、Ｓ４１０、Ｓ４２０、Ｓ４３０、Ｓ４４０、Ｓ４５０）、共有メモリの登録（ステップＳ５００、Ｓ５１０、Ｓ５２０）、メモリアクセス用メソッドの登録（ステップＳ６００、Ｓ６１０、Ｓ６２０、Ｓ６３０）、ベースアドレスの登録（ステップＳ７００、Ｓ７１０、Ｓ７２０）が行なわれる。
【００９０】
ステップＳ２００において、個別実行制御登録コマンド１１３が部分処理１１に係るプロセッサ登録であれば（Ｔｒｕｅ）、ステップＳ２１０でプロセッサ制御用メソッド管理表７２を生成し、ステップＳ２２０でプロセッサＩＤ１１７を生成し、生成したプロセッサＩＤ１１７とプロセッサ制御用メソッド管理表７２へのポインタをプロセッサ管理表７１に登録する。
【００９１】
ステップＳ３００において、個別実行制御登録コマンド１１３が、プロセッサ３１の実行制御に係るプロセッサ制御用メソッドの登録であれば（Ｔｒｕｅ）、引数として、プロセッサＩＤ１１７、プロセッサ制御用メソッドＩＤ１００、プロセッサ制御用メソッド関数へのポインタ１０１が個別実行制御登録コマンド１１３により与えられている（ステップＳ３１０）。
【００９２】
続くステップＳ３２０では、引数として与えられたプロセッサＩＤ１１７をキーとしてプロセッサ管理表７１からプロセッサ制御用メソッド管理表７２を得る。
【００９３】
ステップＳ３３０では、プロセッサ制御用メソッド管理表７２にプロセッサ制御用メソッドＩＤ１００及びプロセッサ制御用メソッド関数へのポインタ１０１を登録する。
【００９４】
ステップＳ４００において、個別実行制御登録コマンド１１３がプロセッサ個別処理の登録であれば（Ｔｒｕｅ）、引数として、プロセッサＩＤ１１７、指定したプロセッサ３１で所定の処理を行なうためのプログラム定義体が個別実行制御登録コマンド１１３により与えられている（ステップＳ４１０）。
【００９５】
続くステップＳ４２０では、プロセッサＩＤ１１７をキーとしてプロセッサ管理表７１からプロセッサ制御用メソッド管理表７２へのポインタを得る。
【００９６】
ステップＳ４３０では、プロセッサ制御用メソッド管理表７２からプロセッサ個別処理ＩＤ登録関数１０２を得る。
【００９７】
ステップＳ４４０では、個別実行制御登録コマンド１１３の引数として与えられたプログラム定義体を引数としてプロセッサ個別処理ＩＤ登録関数１０２を呼び出す。この呼び出しの戻り値としてプロセッサ個別処理ＩＤ１１６を得る。
【００９８】
ステップＳ４５０では、処理ＩＤ１１４を生成し、処理ＩＤ管理表７０に処理ＩＤ１１４、プロセッサＩＤ１１７及びプロセッサ個別処理ＩＤ１１６を登録する。
【００９９】
ステップＳ５００において、個別実行制御登録コマンド１１３が共有メモリ登録であれば（Ｔｒｕｅ）、ステップＳ５１０でメモリアクセス用メソッド管理表８２を生成し、ステップＳ５２０でメモリＩＤ６１を生成し、生成したメモリＩＤ６１とメモリアクセス用メソッド管理表８２へのポインタをメモリ管理表８１に登録する。
【０１００】
ステップＳ６００において、個別実行制御登録コマンド１１３が、メモリアクセス用メソッドの登録であれば、（Ｔｒｕｅ）、引数として、メモリＩＤ６１、メモリアクセス用メソッドＩＤ８５、メモリアクセス用メソッド関数へのポインタ８６が、個別実行制御登録コマンド１１３により与えられている（ステップＳ６１０）。
【０１０１】
続くステップＳ６２０では、引数として与えられたメモリＩＤ６１をキーとしてメモリ管理表８１からメモリアクセス用メソッド管理表８２を得る。
【０１０２】
ステップＳ６３０では、メモリアクセス用メソッド管理表８２にメモリアクセス用メソッドＩＤ８５、及びメモリアクセス用メソッド関数８６へのポインタを登録する。
【０１０３】
ステップＳ７００において、個別実行制御登録コマンド１１３が、ベースアドレス６８の登録であれば、（Ｔｒｕｅ）、引数として、メモリＩＤ６１、プロセッサＩＤ１１７、ベースアドレス６８が、個別実行制御登録コマンド１１３により与えられている（ステップＳ７１０）。
【０１０４】
続くステップＳ７２０では、アドレス変換表８３のメモリＩＤ６１とプロセッサＩＤ１１７をキーとして指示されるエントリに、ベースアドレス６８を格納する。
【０１０５】
以上説明したように、本実施形態によれば、まず第１に、ハードウェアの構成に依存しない実行制御が可能となる。共通コマンド変換・メモリ管理部５１により、アプリケーションに含まれる部分処理１１の実行制御は、どのプロセッサで実行するかに依存しない、統一した構造を持つ共通コマンドで行なうことが可能となる。
【０１０６】
このため、アプリケーションを部分処理１１に分割して複数のプロセッサで並列処理させる場合、実行制御方式として複数のものが考えられる。例えば、部分処理それぞれはパイプラインのステージとみなして、入力から出力に至る経路にデータを連続的に転送しながら処理をすることができる。
【０１０７】
また、１単位のデータを扱う入力から出力までの一連の処理を１つの独立したジョブとして構成し、１つの処理内ではジョブに含まれる部分処理は逐次的に実行するが、複数のジョブを並列に処理をするという方法も考えられる。これらの並列処理を制御するためにはそれぞれ異なる制御構造が必要であるが、各プロセッサの実行制御は共通コマンドで行なえるため、本質的な並列処理の制御構造を変更するだけで、異なる並列処理に対応することが可能となる。
【０１０８】
第２に、本実施形態によれば、異なるプロセッサ毎に最適な制御が可能となる。本実施形態では、異なるプロセッサ毎に個別実行制御部５３がある。この個別実行制御部５３は、各プロセッサの特性に合わせて最適に構成することが可能である。
【０１０９】
例えば、プロセッサが、ＣＰＵ又はＤＳＰであれば、個別実行制御部は部分処理を実行する関数の関数呼び出しでよい。また、プロセッサが、ローカルなメモリにプログラムを予めロードした後にそのプログラムを実行するような再構成プロセッサやＤＳＰであれば、まず、部分処理を実行するプログラムをローカルなメモリにロードし、次にそのプログラムでプロセッサを動作させるといった制御が必要になる。本実施形態によれば、プロセッサの種類にかかわらずプロセッサ毎に最適な実行制御方式を選択して使用することが可能である。
【０１１０】
第３に、本実施形態によれば、プラットフォームが変更になった場合や、アプリケーションのそれぞれの処理からプロセッサへのマッピングが変更になった場合も、次の段落で述べるような理由により、アプリケーションプログラムの制御構造を変更することなく柔軟に対応することが可能となる。
【０１１１】
個別実行制御登録部５２を用いることで、並列処理システムに含まれる異なるプロセッサ毎に個別実行制御手順を登録可能である。従って、あるプロセッサで実行していたアプリケーションの部分処理を別のプロセッサで実行することにした場合、別のプロセッサ用の部分処理プログラムを新たに登録する。
【０１１２】
第４に、本実施形態によれば、部分処理１１間の通信用チャネル１２を複数の共有メモリ上に分散して置くことができる。また、プロセッサ毎に固有のアドレスマップを持ち、各共有メモリがそれぞれプロセッサの固有のアドレスマップ上の異なるアドレスにマップされているような並列システムにおいても、１つの共有メモリを全プロセッサで共有する場合と同様に統一したメモリ管理が可能となる。
【０１１３】
第５に、本実施形態によれば、共有メモリの管理操作を行うプロセッサは１つではなく、共有メモリをアクセス可能なプロセッサであれば、どのプロセッサで共有メモリの管理操作を行ってもよい。このため、全共有メモリにアクセス可能なプロセッサや、そのための通信路が不要である。全共有メモリにアクセス可能な通信路はハードウェアのコストが大きく、またアプリケーションプログラムの実行に際しては処理のボトルネックになる可能性があるが、本実施形態によれば、低コストで、メモリアクセスの通信路のボトルネックの無いシステム構成が可能となる。
【０１１４】
なお、本実施形態の各部（並列処理システム制御装置の共通コマンド・メモリ管理部、個別実行制御登録部、個別実行制御部など）は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。本実施形態の装置を構成するためにソフトウェアを含ませる場合には、コンピュータのＣＰＵが、コンピュータを本実施形態の装置の各部として機能させるためのプログラムをハードディスクドライブなどのコンピュータ読み取り可能な記録媒体から読み込んで、実行することにより、本実施形態の装置が構成される。ＣＰＵは、プログラムをコンピュータ読み取り可能な記録媒体から読み込んでから、実行するまでの間に、そのプログラムを主記憶装置などに一時的に記憶しておいても良い。
【０１１５】
メモリ管理情報、共通コマンド、プロセッサ個別コマンドは、主記憶装置はハードディスクドライブなどのコンピュータ読み取り可能な記録媒体に格納される。
【産業上の利用可能性】
【０１１６】
本発明は、複数の異なるタイプのプロセッサ及び複数の共有メモリを含む並列処理システムに利用できる。
【符号の説明】
【０１１７】
１０  アプリケーション
１１  部分処理
１２  通信用チャネル
１３  入力データバッファ
１４  出力データバッファ
１５  バッファ（入力データバッファ、出力データバッファなど）
１６  処理パラメータ本体
２０  マッピング部
３０  並列処理システム
３１  プロセッサ
３２  通信路
３３  共有メモリ
４０  アプリケーションプログラム
４１  アプリケーションプログラム実行制御用コード
４２  実行制御登録用コード
５０  並列処理システム制御装置
５１  共通コマンド変換・メモリ管理部
５２  個別実行制御登録部
５３  個別実行制御部
６０  共通メモリ情報
６１  メモリＩＤ
６２  メモリ固有空間アドレス
６３  バッファサイズ
６４  プロセッサ固有空間アドレス
６５  メモリ固有管理情報
６６  メモリ固有空間アドレスマップ
６７  プロセッサ固有空間アドレスマップ
６７−１  プロセッサＰｒｏｃ１のアドレスマップ
６７−２  プロセッサＰｒｏｃ２のアドレスマップ
６７−Ｎ  プロセッサＰｒｏｃＮのアドレスマップ
６８  ベースアドレス
７０  処理ＩＤ管理表
７１  プロセッサ管理表
７２  プロセッサ制御用メソッド管理表
７３  プロセッサ制御用メソッド管理表へのポインタ
８０  メモリ管理情報
８１  メモリ管理表
８２  メモリアクセス用メソッド管理表
８３  アドレス変換表
８４  メモリアクセス用メソッド管理表へのポインタ
８５  メモリアクセス用メソッドＩＤ
８６  メモリアクセス用メソッド関数へのポインタ
８７  メモリ領域確保用関数
８８  メモリ領域解放用関数
１００  プロセッサ制御用メソッドＩＤ
１０１  プロセッサ制御用メソッド関数へのポインタ
１０２  プロセッサ個別処理ＩＤ登録関数
１０３  プロセッサ個別コマンド実行関数
１０４  プロセッサ状態チェック関数
１１０  共通コマンド
１１１  プロセッサ個別コマンド
１１２  プロセッサ個別実行制御コマンド
１１３  個別実行制御登録コマンド
１１４  処理ＩＤ
１１５  処理パラメータ
１１６  プロセッサ個別処理ＩＤ
１１７  プロセッサＩＤ
１１８  個別処理パラメータ
【図１】
0005541437.tif 000002
【図２】
0005541437.tif 000003
【図３】
0005541437.tif 000004
【図４】
0005541437.tif 000005
【図５】
0005541437.tif 000006
【図６】
0005541437.tif 000007
【図７】
0005541437.tif 000008
【図８】
0005541437.tif 000009
【図９】
0005541437.tif 000010
【図１０】
0005541437.tif 000011
【図１１】
0005541437.tif 000012