(57)【要約】【課題】複数プロセッサが実行するプログラムの生成に必要なファイルを生成し、そのファイルを用いて生成されたプログラムを、複数プロセッサが共通のタイミングで実行する。【解決手段】本発明に係るシステムは、処理制御装置と、複数のプロセッサと、処理制御装置から各プロセッサに対してプログラムモジュールを受け渡すための第１の通信路と、複数プロセッサ間でデータを受け渡すための第２の通信路を有し、処理制御装置は、複数プロセッサ間で第２の通信路を介して受け渡されるデータ構造と受け渡す方法に基づいて、複数プロセッサが実行するプログラム生成に必要なファイルを生成する手段と、生成されたファイルを用いて、各プロセッサが実行するプログラムを生成する手段と、生成された各プログラムを第１の通信路を介して各プロセッサに受け渡す手段を有し、複数プロセッサは、共通のタイミングでプログラム実行のためのデータを受け渡し、実行する。【選択図】図２
2010113379.tif 000002
【特許請求の範囲】
【請求項１】
処理制御装置と、
複数のプロセッサと、
前記処理制御装置から、前記プロセッサそれぞれに対して、プログラムモジュールを受け渡すために用いられる第１の通信路と、
前記複数のプロセッサの間でデータを受け渡すために用いられる第２の通信路と
を有するプログラム処理システムであって、
前記処理制御装置は、
前記複数のプロセッサの間で、前記第２の通信路を介して受け渡されるデータの構造と、前記複数のプロセッサそれぞれが、前記第２の通信路を介して、データを受け渡す方法とに基づいて、前記複数のプロセッサにより実行されるプログラムの生成に用いられるファイルを作成するファイル生成手段と、
前記生成されたファイルを用いて、前記プロセッサそれぞれにおいて実行されるプログラムを生成するプログラム生成手段と、
前記生成されたプログラムそれぞれを、前記第１の通信路を介して、前記プロセッサそれぞれに受け渡すプログラム受け渡し手段と
を有し、
前記複数のプロセッサは、共通のタイミングで、前記データの構造および前記データを受け渡す方法により、前記第２の通信路を介して、前記受け渡されたプログラムの実行のために用いられるデータを受け渡し、前記受け渡されたプログラムを実行する
プログラム処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリを用いて、複数のプロセッサ間でデータを通信し、プログラムを実行するプログラム処理システムに関する。
【背景技術】
【０００２】
例えば、特許文献１は、マルチコアプロセッサを用いてマルチタスク動作を行わせて、時間応答性能の厳しい信号処理システムなどに適用することを可能にするマルチコア制御システムを開示する。
【特許文献１】特開２００７−１４１１５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、上述のような背景からなされたものであり、複数のプロセッサ間で、効率的にデータ通信が行われるように改良されたプログラム処理システムを提供する。
【課題を解決するための手段】
【０００４】
上記目的を達成するために、本発明に係るプログラム処理システムは、処理制御装置（３）と、複数のプロセッサ（２）と、前記処理制御装置から、前記プロセッサそれぞれに対して、プログラムモジュールを受け渡すために用いられる第１の通信路（１００）と、前記複数のプロセッサの間でデータを受け渡すために用いられる第２の通信路（２１０）とを有するプログラム処理システム（１）であって、前記処理制御装置は、前記複数のプロセッサの間で、前記第２の通信路を介して受け渡されるデータの構造（３２０）と、前記複数のプロセッサそれぞれが、前記第２の通信路を介して、データを受け渡す方法（３２２）とに基づいて、前記複数のプロセッサにより実行されるプログラムの生成に用いられるファイル（３２６）を作成するファイル生成手段（３２４）と、前記生成されたファイルを用いて、前記プロセッサそれぞれにおいて実行されるプログラムを生成するプログラム生成手段（３２８）と、前記生成されたプログラムそれぞれを、前記第１の通信路を介して、前記プロセッサそれぞれに受け渡すプログラム受け渡し手段（３３０）とを有し、前記複数のプロセッサは、共通のタイミングで、前記データの構造および前記データを受け渡す方法により、前記第２の通信路を介して、前記受け渡されたプログラムの実行のために用いられるデータを受け渡し、前記受け渡されたプログラムを実行する。
なお、ここで付された符号は、本願発明の理解を助けることを意図するものであり、本願発明の技術的範囲を限定することを意図するものではない。
【発明の効果】
【０００５】
本発明に係るプログラム処理システムによれば、複数のプロセッサ間で、効率的にデータ通信を行うことができる。
【発明を実施するための最良の形態】
【０００６】
［本発明の背景］
本発明の理解を助けるために、まず、本発明がなされるに至った背景を説明する。
複数のプロセッサが、メモリを共有する共有メモリ型システムにおいて、複数のプロセッサが並列に処理を行うためには、共有メモリを介して、各プロセッサ間で処理に必要なデータの通信を行う必要がある。
共有メモリを介して、各プロセッサ間でデータ通信を行うときに、同時に複数のプロセッサが共有メモリにアクセスすることによって、データの競合が起こることを防ぐために、セマフォやスピンロックなどの排他制御機構を用いた通信処理が行われている。
【０００７】
しかしながら、上述したような排他制御機構を用いたデータ通信処理においては、１つのプロセッサが共有メモリにアクセスしている間、他のプロセッサには待ち時間が生じるので、各プロセッサの処理が非効率的になる可能性がある。
また、複数のプロセッサから共有メモリへの予期せぬアクセス集中により、システム全体の処理速度が低下する可能性がある。
以下に説明するプログラム処理システム１は、複数のプロセッサそれぞれにおいて実行されるプログラムの生成に用いられるファイルを生成し、そのファイルに定義されたプログラムの実行順序や方法に基づいて生成されたプログラムを、複数のプロセッサが共通のタイミングで実行することにより、効率的なプロセッサ間データ通信が行われるよう構成されている。
【０００８】
［プログラム処理システム１］
以下、本発明の実施形態として、プログラム処理システム１を説明する。
図１（Ａ）は、本発明に係るプログラム処理システム１（プログラム処理システム）の構成を示す図である。
図１（Ａ）に示すように、プログラム処理システム１は、並列処理装置２と、処理制御装置３とが、バス１００を介して接続されている。
【０００９】
［並列処理装置２］
図１（Ｂ）は、図１（Ａ）に示した並列処理装置２のハードウェア構成を例示する図である。
図１（Ｂ）に示すように、並列処理装置２は、処理装置２００−１〜２００−ｎが、共有メモリ２１０を介して相互に接続されている。
ただし、ｎは２以上の整数であって、ｎが常に同じ数を示すとは限らない。
以下、「処理装置２００−１〜２００−ｎ」など、複数存在しうる構成部分のいずれかが、特定されずに示されるときには、単に「処理装置２００」などと略記されることがある。
また、以下の各図において、実質的に同じ構成部分には、同じ符号が付される。
【００１０】
処理装置２００は、メモリ２０２、プロセッサ２０６およびフラッシュＲＯＭ（ＦＲＯＭ）２０８を含み、プログラムがメモリ２０２上にロードされ、処理装置２００のＯＳ（図示せず）上で、処理装置２００のハードウェア資源を具体的に利用して実行される。
処理装置２００は、バス−インタフェース（ＩＦ）２０４を含み、バス１００に接続されている。
プロセッサ２０６は、プログラムの処理内容に応じて、共有メモリ２１０を介して、複数のプロセッサ２０６間でデータの送受信を行う。
具体的には、例えば、プロセッサ２０６−１は、メモリ２０２−１のデータメモリＡに記憶されるデータを、共有メモリ２１０を介して、プロセッサ２０６−ｎに送信する。
【００１１】
プロセッサ２０６−ｎは、プロセッサ２０６−１から送信されたデータを受信し、メモリ２０２−ｎのデータメモリＸに記憶する。
なお、これらの構成部分においては、メモリ２０２へのアクセスは、カーネルレベルのデバイスドライバにより制御してもよく、リングバッファにより制御してもよい。
また、これらの構成部分においては、プロセッサ２０６のように、物理的に複数のプロセッサである代わりに、物理的には１つのプロセッサであるが、論理的には複数のプロセッサとして並列処理を実現するマルチコアプロセッサや、SoC (System On a Chip)が用いられてもよい。
また、これらの構成部分においては、１つの共有メモリ２１０を用いているが、複数の共有メモリまたは共有メモリを複数の領域に分割して用いてもよい。
【００１２】
［処理制御装置３］
図１（Ｃ）は、図１（Ａ）に示した処理制御装置３のハードウェア構成を例示する図である。
図１（Ｃ）に示すように、処理制御装置３は、バス１００に接続するためのバス−ＩＦ２０４、メモリ３０４およびＣＰＵ３０６などを含む情報処理装置３００、キーボードおよび表示装置などを含む外部入出力装置３０２、および、ハードディスクなどの記録媒体３１０に対してデータ記録を行う記録装置３０８などから構成される。
つまり、処理制御装置３は、外部からの操作に応じて、並列処理装置２を制御することができるコンピュータとしての構成部分を有している。
例えば、処理制御装置３は、図２に示す処理制御プログラム３２を実行し、並列処理装置２が有する複数のプロセッサ２０６それぞれに実行させるプログラムを生成し、複数のプロセッサ２０６にプログラムを実行させる。
【００１３】
［処理制御プログラム３２］
図２は、プログラム処理システム１の処理制御装置３（図１（Ａ），図１（Ｃ））上で実行される処理制御プログラム３２を示す図である。
図２に示すように、処理制御プログラム３２は、構造定義ファイル３２０、通信定義ファイル３２２、中間ファイル生成部３２４、中間ファイル３２６、プログラム生成部３２８、プログラム送信部３３０、整合性検査部３３２から構成される。
処理制御プログラム３２は、例えば、メモリ３０４（図１（Ｃ））に記憶されて処理制御装置３に供給され、必要に応じて、処理制御装置３にインストールされたＯＳ（図示せず）上で、処理制御装置３のハードウェア資源を、具体的に利用して実行される。
【００１４】
図３（Ａ）は、構造定義ファイル３２０の内容を例示する図である。
構造定義ファイル３２０は、例えば、Ｃ言語により記述され、typedef宣言を用いて、複数のプロセッサ２０６間で共有メモリ２１０（図１（Ｂ））を介して受け渡されるデータの構造を定義する。
図３（Ａ）に示すように、構造定義ファイル３２０は、例えば、"T_ST_XXX_services_config"と"T_ST_YYY_services_config"という型名の２つの構造型を定義している。
【００１５】
また、図３（Ａ）に示す構造定義ファイル３２０で定義される構造型は、コマンド値が代入される整数型の変数"command"やイベントキューのサイズ値が代入される整数型の変数"event_queue_size"などから構成される。
構造定義ファイル３２０は、後述する通信定義ファイル３２２とともに、中間ファイル生成部３２４（図２）に読み込まれ、中間ファイル３２６の生成に利用される。
【００１６】
図３（Ｂ）は、通信定義ファイル３２２の内容を例示する図である。
通信定義ファイル３２２は、複数のプロセッサ２０６それぞれが、共有メモリ２１０（図１（Ｂ））を介してデータを送受信する方法を定義する。
例えば、通信定義ファイル３２２は、データの送信または受信の１回の動作ごとに、データの送信または受信に必要な情報を定義する。
データの送信または受信に必要な情報は、１つのデータ送信または受信動作を、関数として一意に識別するための関数名、動作開始のタイミング、動作周期、データ送信元および送信先、送信元から送信先へのデータの送信（書き込み）動作であるか、送信元から送信先へのデータの受信（読み込み）動作であるか、動作の優先度を含む。
【００１７】
なお、以下、動作開始のタイミング、動作周期、優先度は、整数値で表現され、それぞれ０〜９９、１〜９９、１〜３１の整数値を取る場合を具体例とするが、この具体例は、本願発明の技術的範囲の限定を意図するものではない。
図３（Ｂ）に示すように、例えば、通信定義ファイル３２２において、関数func1Aとして定義された動作は、タイミング値が０のときに、プロセッサＰ１（２０６−１）が、データメモリＡに記憶されるデータをプロセッサＰ２（２０６−２）のデータメモリＸに対して、共有メモリを介して送信（書き込み）を開始し、周期１０で、送信動作を繰り返すことを意味する。
【００１８】
通信定義ファイル３２２は、構造定義ファイル３２０とともに、後述する中間ファイル生成部３２４（図２）に読み込まれ、中間ファイル３２６の生成に利用される。
中間ファイル生成部３２４は、構造定義ファイル３２０と、通信定義ファイル３２２を読み込み、後述する中間ファイル３２６を生成する。
また、中間ファイル生成部３２４は、プログラム生成部３２８に対して、生成した中間ファイル３２６を用いて、複数のプロセッサ２０６それぞれが実行するプログラム（以下、単に「実行プログラム」と記述する）を生成するよう通知する。
また、中間ファイル生成部３２４は、整合性検査部３３２に対して、生成した中間ファイル３２６を用いて、各プロセッサが行う処理の整合性検査を行うよう通知する。
【００１９】
図４（Ａ）は、中間ファイル３２６の内容を例示する図である。
中間ファイル３２６は、構造定義ファイル３２０と通信定義ファイル３２２に基づいて、中間ファイル生成部３２４により生成され、実行プログラムの生成のために用いられる。
例えば、中間ファイル３２６は、複数のプロセッサ２０６共通のタイミング（以下、「基準タイミング」と記述する）に基づいて、実行プログラムの実行順序や方法を記述する。
基準タイミングは、値により表現され、あらかじめ設定された最小タイミング値から最大タイミング値まで、一定の間隔で値が増加し、最大タイミング値に設定されると、次の基準タイミング値は、再び最小タイミング値に設定され、値の増加を繰り返す。
【００２０】
なお、以下、説明の明確化、具体化のために、基準タイミングの値は整数値とし、最小タイミング値を０、最大タイミング値を９９とし、０から１ずつ足し合わせて９９まで値が増加する場合を具体例とするが、この具体例は、本願発明の技術的範囲の限定を意図するものではない。
図４（Ａ）に示すように、例えば、中間ファイル３２６の最初の行には、"T0(P1, A, W, func1A)"と記述されている。これは、基準タイミング値が０のときに、関数func1Aの定義に基づいて、プロセッサＰ１（２０６−１）が、データメモリＡに記憶されるデータを共有メモリに書き込む処理を意味する。
【００２１】
また、中間ファイル３２６の２行目には、"T1(*)"と記述されている。"*"は、共有メモリを介したプロセッサ間のデータ送受信を必要としない優先度の高い処理であり、他の処理が割り込むことを禁止する処理であることを意味する。
つまり、図４（Ａ）に示した中間ファイル３２６に基づく処理においては、基準タイミングの値が１のときは、プロセッサ２０６間のデータ送受信は行われず、各プロセッサ２０６が単体で処理を行う。
以下、各プロセッサ２０６が、基準タイミングに対応する上述のような関数"T0(P1, A, W, func1A)"、"T1(*)"などの定義に基づいて、処理を実行することを、「対応関数の実行」と記述する。
【００２２】
中間ファイル３２６は、後述するプログラム生成部３２８（図２）に読み込まれ、実行プログラムの生成に利用される。
プログラム生成部３２８は、中間ファイル生成部３２４から実行プログラムの生成通知を受け取ると、中間ファイル３２６を読み込み、読み込んだ中間ファイル３２６に基づいて、実行プログラムを生成する。
具体的には、例えば、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎなどのスクリプト言語を用いて、中間ファイルからソースコードを生成し、生成したソースコードをコンパイルする。
【００２３】
また、プログラム生成部３２８は、プログラム送信部３３０に対して、生成した実行プログラムを出力する。
プログラム送信部３３０は、プログラム生成部３２８から入力された実行プログラムを受け取り、バス１００（図１（Ｃ））を介して、複数のプロセッサ２０６それぞれに受け渡す。
整合性検査部３３２は、中間ファイル生成部３２４から各プロセッサ２０６が行う処理の整合性検査通知を受け取ると、中間ファイル３２６を用いて、同じ基準タイミング値のときに行われる複数の処理を検出することにより、各プロセッサが行う処理の整合性や、各処理が要求された応答時間をオーバするか否かを検査する。
【００２４】
［中間ファイル生成部４０の処理］
図４（Ｂ）は、図２に示した中間ファイル生成部４０の処理を示すフローチャートである。
以下、図４（Ｂ）を参照して、中間ファイル生成部４０の処理をさらに説明する。
中間ファイル生成部４０は、構造定義ファイル３２０と通信定義ファイル３２２を読み込み、中間ファイル生成処理を開始する。
処理が開始すると、図４（Ｂ）に示すように、ステップ４００（Ｓ４００）において、中間ファイル生成部４０は、中間ファイル生成のために用いるタイミング値を０に初期化する。
【００２５】
ステップ４０２（Ｓ４０２）において、中間ファイル生成部４０は、通信定義ファイル３２２に定義された通信定義のうち、開始タイミングの値が最小の通信定義を１つまたは２つ以上取得する。
ステップ４０４（Ｓ４０４）において、中間ファイル生成部４０は、Ｓ４０２において取得した通信定義のうち、優先度が最も高い通信定義を１つ取得する。
ステップ４０６（Ｓ４０６）において、中間ファイル生成部４０は、構造定義ファイル３２０とＳ４０４において取得した通信定義、および、Ｓ４００またはＳ４０８において設定したタイミング値に基づいて、図４（Ａ）に示した形式で、プログラム実行順序および方法を、中間ファイル３２６に追加する。
【００２６】
ステップ４０８（Ｓ４０８）において、中間ファイル生成部４０は、現在のタイミング値に１を足し合わせて、タイミング値を更新する。
ステップ４１０（Ｓ４１０）において、中間ファイル生成部４０は、Ｓ４０８において更新したタイミング値が、９９以下であるか否かを判断する。
更新したタイミング値が、９９以下であると判断するときは、Ｓ４１２の処理に進み、それ以外のときは、中間ファイル生成処理を終了する。
【００２７】
ステップ４１２（Ｓ４１２）において、中間ファイル生成部４０は、Ｓ４０４において取得した通信定義の開始タイミングの値に、動作周期を足し合わせて、開始タイミングの値を更新する。
ステップ４１４（Ｓ４１４）において、中間ファイル生成部４０は、Ｓ４０４において取得した通信定義以外に、Ｓ４０２において取得した他の通信定義が存在するか否かを判断する。
他の通信定義が存在するときは、Ｓ４０４の処理に進み、それ以外のときはＳ４０２の処理に進む。
【００２８】
［プログラム処理システム１の全体動作例］
以下、プログラム処理システム１（図１（Ａ））の全体動作例を説明する。
処理制御装置３は、構造定義ファイル３２０と通信定義ファイル３２２に基づいて、中間ファイルを生成し、さらに、中間ファイルに基づいて、複数のプロセッサ２０６（図１（Ｂ））それぞれが実行するプログラムを生成する。
処理制御装置３は、生成した実行プログラムを、バス１００（図１（Ａ））を介して、並列処理装置２に受け渡し、並列処理装置２が有する複数のプロセッサ２０６それぞれにプログラムを実行させる。
さらに、処理制御装置３は、プロセッサ２０６によるプログラム実行中に、一定の時間間隔で、基準タイミング値０から、基準タイミング値を１ずつ足し合わせて更新し、更新するごとに、各プロセッサ２０６に対して基準タイミング値を通知する。
なお、処理制御装置３に加えて、ＦＰＧＡ（Field Programmable Gate Array）により構成される外部デバイスによって、基準タイミング値の更新、通知が行われてもよい。
【００２９】
図５は、処理制御装置３から通知される基準タイミング値に従って、並列処理装置２が有する２つのプロセッサ２０６−１と２０６−２が、処理制御装置３から受け取ったプログラムをそれぞれ実行する動作例を示す図である。
なお、図５において、説明の明確化、具体化のために、並列処理装置２は、２つのプロセッサにより動作する場合を具体例としているが、この具体例は、本願発明の技術的範囲の限定を意図するものではない。
図５に示すように、プロセッサ２０６−１，２０６−２は、タイミング値を−１に設定し、互いに同期する。
【００３０】
プロセッサ２０６−１，２０６−２は、処理制御装置３からの基準タイミング値の割り込み通知を有効にする。これにより、プロセッサ２０６−１，２０６−２は、プログラム実行中に、処理制御装置３からの基準タイミング値の通知を受け取り、受け取った基準タイミング値に従って、プログラムを実行する。
プロセッサ２０６−１，２０６−２は、処理制御装置３から基準タイミング値が０である通知を受け取ると、タイミング値を０に更新し、タイミング値０の対応関数を実行する。
以下同様に、プロセッサ２０６−１，２０６−２は、基準タイミング値９９まで、基準タイミング値の通知を受け取るごとに、タイミング値を、受け取った基準タイミング値と同じ値に更新し、更新したタイミング値の対応関数を実行する。
【００３１】
処理制御装置３は、基準タイミング値が９９のとき、次の基準タイミング値を再び０に設定し、プロセッサ２０６−１，２０６−２に通知する。
プロセッサ２０６−１，２０６−２は、処理制御装置３から基準タイミング値が０である通知を受け取ると、再びタイミング値を０に更新し、タイミング値０の対応関数を実行する。
以降、プロセッサ２０６−１，２０６−２は、プログラム実行が終了するまで、上記動作を繰り返す。
【図面の簡単な説明】
【００３２】
【図１】図１（Ａ）は、本発明に係るプログラム処理システムの構成を例示する図であり、図１（Ｂ）は、図１（Ａ）に示した並列処理装置のハードウェア構成を例示する図であり、図１（Ｃ）は、図１（Ａ）に示した処理制御装置のハードウェア構成を例示する図である。
【図２】図２は、図１（Ａ）に示した処理制御装置上で実行される処理制御プログラムの構成を例示する図である。
【図３】図３（Ａ）は、図２に示した構造定義ファイルの内容を例示する図であり、図３（Ｂ）は、図２に示した通信定義ファイルの内容を例示する図である。
【図４】図４（Ａ）は、図２に示した中間ファイルの内容を例示する図であり、図４（Ｂ）は、図２に示した中間ファイル生成部の処理を示すフローチャートである。
【図５】図５は、２つのプロセッサが、共通のタイミングで、プログラムを実行する動作例を示す図である。
【符号の説明】
【００３３】
１・・・プログラム処理システム
１００・・・バス
２・・・並列処理装置
２００・・・処理装置
２０２・・・メモリ
２０４・・・バス−ＩＦ
２０６・・・プロセッサ
２０８・・・ＦＲＯＭ
２１０・・・共有メモリ
３・・・処理制御装置
３００・・・情報処理装置
３０２・・・外部入出力装置
３０４・・・メモリ
３０６・・・ＣＰＵ
３０８・・・記録装置
３１０・・・記録媒体
３２・・・処理制御プログラム
３２０・・・構造定義ファイル
３２２・・・通信定義ファイル
３２４・・・中間ファイル生成部
３２６・・・中間ファイル
３２８・・・プログラム生成部
３３０・・・プログラム送信部
３３２・・・整合性検査部
【図１】
2010113379.tif 000003
【図２】
2010113379.tif 000004
【図３】
2010113379.tif 000005
【図４】
2010113379.tif 000006
【図５】
2010113379.tif 000007