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