(57)【特許請求の範囲】
【請求項１】
複数のコアを有するマルチコアプロセッサにおける処理負荷分散方法であって、
プロセッサ全体として要求される処理内容を入出力形式インタフェースの統一された最小構成単位に分割された複数の基本モジュールを形成し、
前記複数の基本モジュールを初期配置として前記複数のコアに分配配置し、
ついで、前記各コアの機能情報に基づき、定期的もしくは適時に前記複数のコアの全てを使用し、前記複数の基本モジュールのそれぞれについて、各コアでの処理能力が最大値となるように、前記初期配置された複数の基本モジュールを再配置する
ことを特徴とするマルチコアプロセッサにおける処理負荷分散方法。
【請求項２】
複数のコアを有するマルチコアプロセッサにおける処理負荷分散方法であって、
プロセッサ全体として要求される処理内容を入出力形式インタフェースの統一された最小構成単位に分割された複数の基本モジュールを形成し、
前記複数の基本モジュールを初期配置として前記複数のコアに分配配置し、
ついで、前記各コアの機能情報に基づき、定期的もしくは適時に前記複数のコアの内、使用優先度の高いコアが、使用優先度の低いコアの基本モジュールを引き取ることにより前記初期配置された複数の基本モジュールの再配置を行う
ことを特徴とするマルチコアプロセッサにおける処理負荷分散方法。
【請求項３】
請求項１又は２において、
前記各コアの機能情報は、前記各コアに i）自コアに要求された信号数と、自コアから他コアに出力された信号数をカウントする機能、 ii）自コアに内蔵されている受信バッファの蓄積容量と、送信バッファの蓄積容量を計測する機能及び、
iii）自コアに対し要求されたキューの数と、他コアに要求しているキューの数を計測する機能の内少なくとも一の機能により得られた情報であることを特徴とするマルチコアプロセッサにおける処理負荷分散方法。
【請求項４】
請求項１又は２において、
前記複数のコアの内、少なくとも１つのコアを残し、他のコアに対して、前記複数の基本モジュールのそれぞれについて、各コアでの処理能力が最大値となるように、前記複数の基本モジュールの再配置を行うことを特徴とするマルチコアプロセッサにおける処理負荷分散方法。
【請求項５】
複数のコアを有するマルチコアプロセッサであって、
複数のコアを有するコア部と、
プロセッサ部を有し、前記プロセッサ部は、
前記コア部の各コアに外部から受信した処理対象のデータを受け渡す受信部と、
前記コア部から外部に向けて出力されたデータを外部に送出する送信部と、
外部から送信された基本モジュールを、前記複数のコアのいずれに配置するかを判断し、対象のコアに前記基本モジュールを配置する処理を行う基本モジュール送信部と、
外部から指定された配置制御方法を、前記複数のコアの全てに対し通知する基本モジュール配置制御部を有し、
さらに、前記コア部の複数のコアのそれぞれは、
データの入出力部と、
前記データの入出力部における入力バッファ量及び出力バッファ量を測定するバッファ測定部と、
前記基本モジュールが配置されるプログラム実行エリアと、
前記プログラム実行エリア全体の使用率及び、基本モジュール毎の使用率を測定するコア使用率測定部を備え、
前記バッファ測定部により測定された入力バッファ量及び出力バッファ量及び、前記コア使用率測定部により測定された前記プログラム実行エリアの使用率に基づくコア状態を出力するコア状態送信部と、
通信部を通して取得した他コアの状態情報が記述されている情報データベースと、
前記コア状態送信部から送られる自己コアのコア状態と、前記情報データベースに記述されている、自コアに配置されている基本モジュールの前後の工程の実行を担当する他コアの状態を比較して、コア全体の使用率に差が有る場合に基本モジュールの再配置制御を行うモジュール配置制御部を有し、
前記複数の基本モジュールが、前記基本モジュール配置制御部により初期配置として前記複数のコアに分配配置され、
更に前記各コアの機能情報に基づき、前記モジュール配置制御部により定期的もしくは適時に前記初期配置された複数の基本モジュールが再配置される
ことを特徴とするマルチコアプロセッサ。
【請求項６】
請求項５において、
前記各コアの機能情報は、前記各コアに i）自コアに要求された信号数と、自コアから他コアに出力された信号数をカウントする機能、 ii）自コアに内臓されている受信バッファの蓄積容量と、送信バッファの蓄積容量を計測する機能及び、
iii）自コアに対し要求されたキューの数と、他コアに要求しているキューの数を計測する機能の内少なくとも一の機能により得られた情報であることを特徴とするマルチコアプロセッサ。
【請求項７】
請求項５において、
前記複数のコアの全てを使用し、前記複数の基本モジュールのそれぞれについて、各コアでの処理能力が最大値となるように、前記複数の基本モジュールが再配置されることを特徴とするマルチコアプロセッサ。
【請求項８】
請求項５において、
前記複数のコアの内、使用優先度の高いコアが、使用優先度の低いコアの基本モジュールを引き取ることにより前記複数の基本モジュールが再配置されることを特徴とするマルチコアプロセッサ。
【請求項９】
請求項５において、
前記複数のコアの内、少なくとも１つのコアを残し、他のコアに対して、前記複数の基本モジュールのそれぞれについて、各コアでの処理能力が最大値となるように、前記複数の基本モジュールが再配置されることを特徴とするマルチコアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，マルチコアプロセッサに関し，特に各コアへの処理分散の動的な適用を可能とするマルチコアプロセッサに関する。
【背景技術】
【０００２】
プロセッサの一種として，一チップ上に複数のコアを集積し，所定機能を分散処理するマルチコアプロセッサが知られている（例えば，特許文献１）。【０００３】
そして，将来のソフトウェアの複雑化，肥大化に対応するためには，処理の分散，並列処理の面でかかるマルチコアプロセッサが有望とされている。
その顕著な例として，昨今，種々のメーカーからマルチコアプロセッサに関する技術提案，製品が発表されている。しかし，マルチコアプロセッサの実用化においては，以下の様な課題がある。【０００４】
第１に各コアへの処理内容の割り当て方法が複雑になる，
第２に各コアに最適な処理を割り当てられていない状態の場合，余計な電力を消費してしまう等である。【０００５】
上記の課題の解決に関して，以下の技術が必要と考えられる。【０００６】
第１に現在の処理状況に合わせ各コアの処理内容を適切にコントロールする機能
第２に各コアへの処理内容を自動的に決定する機能
である。
【特許文献１】特開２００２−１１７０１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって，本発明の目的は，処理量が動的に変化する環境でのマルチコアプロセッサの処理割り当て方法を自動化する。そのために，各コアへの処理割り当てを決定するために必要なアルゴリズムの確立，更にソフトウェア技術者にとって簡単であり，かつ効率的な処理割り当てアルゴリズムの確立を実現するマルチコアプロセッサを提供することにある。
【課題を解決するための手段】
【０００８】
上記の課題を達成する本発明の第１の側面は，複数のコアを有するマルチコアプロセッサにおける処理負荷分散方法であって，プロセッサ全体として要求される処理内容を入出力形式インタフェースの統一された最小構成単位に分割された複数の基本モジュールを形成し，前記複数の基本モジュールを初期配置として前記複数のコアに分配配置し，ついで，前記各コアの機能情報に基づき，定期的もしくは適時に前記初期配置された複数の基本モジュールを再配置することを特徴とする。【０００９】
上記の課題を達成する本発明の第２の側面は，複数のコアを有するマルチコアプロセッサであって，複数のコアを有するコア部と，プロセッサ部を有し，前記プロセッサ部は，前記コア部の各コアに外部から受信した処理対象のデータを受け渡す受信部と，前記コア部から外部に向けて出力されたデータを外部に送出する送信部と，外部から送信された基本モジュールを，前記複数のコアのいずれに配置するかを判断し，対象のコアに前記基本モジュールを配置する処理を行う基本モジュール送信部と，外部から指定された配置制御方法を，前記複数のコアの全てに対し通知する基本モジュール配置制御部を有して構成され，前記複数の基本モジュールが，初期配置として前記複数のコアに分配配置され，更に前記各コアの機能情報に基づき，定期的もしくは適時に前記初期配置された複数の基本モジュールが再配置されることを特徴とする。【００１０】
前記第１，第２の側面において，
前記各コアの機能情報は，前記各コアに i）自コアに要求された信号数と，自コアから
他コアに出力された信号数をカウントする機能， ii）自コアに内臓されている受信バッファの蓄積容量と，送信バッファの蓄積容量を計測する機能及び，
iii）自コアに対し要求されたキューの数と，他コアに要求しているキューの数を計測する機能の内少なくとも一の機能により得られた情報である。【００１１】
また，前記複数のコアの全てを使用し，前記複数の基本モジュールのそれぞれについて，各コアでの処理能力が最大値となるように，前記複数の基本モジュールの再配置を行うようにしてもよい。
また，前記複数のコアの内，使用優先度の高いコアが，使用優先度の低いコアの基本モジュールを引き取ることにより前記複数の基本モジュールの再配置を行うようにしてもよい。【００１２】
さらに，前記複数のコアの内，少なくとも１つのコアを残し，他のコアに対して，前記複数の基本モジュールのそれぞれについて，各コアでの処理能力が最大値となるように，前記複数の基本モジュールの再配置を行うようにしてもよい。【００１３】
前記第２の側面において，前記コア部の複数のコアのそれぞれは，データの入出力部と，前記データの入出力部における入力バッファ量及び出力バッファ量を測定するバッファ測定部と，前記基本モジュールが配置されるプログラム実行エリアと，
前記プログラム実行エリア全体の使用率及び，基本モジュール毎の使用率を測定するコア使用率測定部を備え，前記バッファ測定部により測定された入力バッファ量及び出力バッファ量及び，前記コア使用率測定部により測定された前記プログラム実行エリアの使用率に基づくコア状態を出力するコア状態送信部と，通信部を通して取得した他コアの状態情報が記述されている情報データベースと，前記コア状態送信部から送られる自己コアのコア状態と，前記情報データベースに記述されている，自コアに配置されている基本モジュールの前後の工程の実行を担当する他コアの状態を比較して，コア全体の使用率に差が有る場合に基本モジュールの再配置制御を行うモジュール配置制御部を有する用に構成できる。【００１４】
本発明の更なる特徴は，以下に図面を参照して説明される発明を実施するための最良の形態から更に明らかになる。
【図面の簡単な説明】
【００１５】
【図１】図１は，基本モジュールを説明する図である。
【図２】図２は，複数の最小単位の基本モジュールの初期配置を説明する図である。
【図３】図３は，平均/分散型による再配置の例を示す図である。
【図４】図４は，コア詰め型による再配置の例を示す図である。
【図５】図５は，平均/分散型とコア詰め型の第１の応用例を示す図である。
【図６】図６は，平均/分散型とコア詰め型の第２の応用例を示す図である。
【図７】図７は，本発明が適用される１チップで構成されるプロセッサ１の構成例を示す図である。
【図８】図８は，コア部３の各コアＣ１〜Ｃｎに共通の一のコアの構成例ブロック図である。
【図９】図９は，基本モジュールのデータ形式及び，基本モジュールのプログラム形式について，その一例示す図である。
【図１０】図１０は，複数の基本モジュールデータの関係の一例を示す図である。
【図１１】図１１は，基本モジュール間の入出力データ形式の一例を示す図である。
【図１２】図１２は，複数のモジュール間の入出力データの関係を示す図である。
【図１３】図１３は，コア情報のデータ形式を示す図である。
【図１４】図１４は，モジュール配置情報のデータ形式について，実施形態の一例を示す図である。
【図１５】図１５は，基本モジュールの引き渡し要求メッセージ形式の実施例を示す図である。
【図１６】図１６は，基本モジュールの引き渡し応答メッセージ形式の実施例を示す図である。
【図１７】図１７は，基本モジュールの引き渡し及び応答メッセージによる処理が完了したときのメッセージの形式を示す図である。
【図１８】図１８は，基本モジュールの引き受け要求メッセージ形式を示す図である。
【図１９】図１９は，基本モジュールの引き受け応答メッセージの形態例を示す図である。
【図２０】図２０は，基本モジュールの引き受け完了メッセージの実施例形式を示す図である。
【図２１】図２１は，プロセッサ起動時の基本モジュール配置方法についての実施例シーケンスフロー（その１）である。
【図２２】図２２は，プロセッサ起動時の基本モジュール配置方法についての実施例シーケンスフロー（その２）である。
【図２３】図２３は，プロセッサ起動時に取得されるモジュール配置情報を示す図である。
【図２４Ａ】図２４Ａは，コアＣ１のコア情報を示す図である。
【図２４Ｂ】図２４Ｂは，コアＣ２のコア情報を示す図である。
【図２４Ｃ】図２４Ｃは，コアＣ３のコア情報を示す図である。
【図２５】図２５は，入力判定アルゴリズムを示す図である。
【図２６】図２６は，出力判定アルゴリズムを示す図である。
【図２７】図２７は，基本モジュールの引き渡し要求メッセージを示す図である。
【図２８】図２８は，基本モジュールの引き渡し応答メッセージを示す図である。
【図２９】図２９は，基本モジュール入出力データを示す図である。
【図３０】図３０は，基本モジュールの引き渡し応答メッセージを示す図である。
【図３１Ａ】図３１Ａは，他のコアに基本モジュールを引き渡す場合の上記処理１から処理１１までの内容をまとめたシーケンスフロー図（その１）である。
【図３１Ｂ】図３１Ｂは，他のコアに基本モジュールを引き渡す場合の上記処理１から処理１１までの内容をまとめたシーケンスフロー図（その２）である。
【図３２】図３２は，プロセッサ１の起動時に取得したモジュール配置情報を湿す図である。
【図３３Ａ】図３３Ａは，コアＣ１のコア情報を示す図である。
【図３３Ｂ】図３３Ｂは，コアＣ２のコア情報を示す図である。
【図３３Ｃ】図３３Ｃは，コアＣ３のコア情報を示す図である。
【図３４】図３４は，入力側判定アルゴリズムを示す図である。
【図３５】図３５は，出力側判定アルゴリズムを示す図である。
【図３６】図３６は，基本モジュールの引き受け要求メッセージを示す図である。
【図３７】図３７は，基本モジュールの引き受け応答メッセージを示す図である。
【図３８】図３８は，基本モジュール入出力データを示す図である。
【図３９】図３９は，基本モジュールの引き受け完了メッセージを示す図である。
【図４０Ａ】図４０Ａは，他のコアから基本モジュールを引き受ける場合のシーケンスフロー図（その１）である。
【図４０Ｂ】図４０Ｂは，他のコアから基本モジュールを引き受ける場合のシーケンスフロー図（その２）である。
【図４１】図４１は，モジュール配置情報を示す図である。
【図４２】図４２は，退避判定アルゴリズム示す図である。
【図４３Ａ】図４３Ａは，基本モジュールの引き渡し要求メッセージ（その１）を示す図である。
【図４３Ｂ】図４３Ｂは，基本モジュールの引き渡し要求メッセージ（その２）を示す図である。
【図４４Ａ】図４４Ａは，コアＣ１からの送信用の基本モジュールの引き渡し応答メッセージを示す図である。
【図４４Ｂ】図４４Ｂは，コアＣ３からの送信用の基本モジュールの引き渡し応答メッセージを示す図である。
【図４５Ａ】図４５Ａは，コアＣ１に送信される基本モジュール入出力データを示す。
【図４５Ｂ】図４５Ｂは，コアＣ３に送信される基本モジュール入出力データを示す。
【図４６Ａ】図４６Ａは，コアＣ１からコアＣ２に対する基本モジュールの引き渡し応答メッセージを示す図である
【図４６Ｂ】図４６Ｂは，コアＣ３からコアＣ２に対する基本モジュールの引き渡し応答メッセージを示す図である
【図４７Ａ】図４７Ａは，パターン３の処理に対応するシーケンスフロー（その１）である。
【図４７Ｂ】図４７Ｂは，パターン３の処理に対応するシーケンスフロー（その２）である。
【図４７Ｃ】図４７Ｃは，パターン３の処理に対応するシーケンスフロー（その３）である。
【発明を実施するための最良の形態】
【００１６】
本発明の実施の形態例を図面に従い説明するに先だって，本発明の理解を容易とするべく本発明の原理及び概念構成例を先に説明する。【００１７】
図１は，基本モジュールを説明する図である。すなわち，プロセッサ全体として要求されている処理内容全体を，入力出力形式インターフェース（ＩＦ）の統一化された最小構成単位に分割し，基本モジュールとして作成する。【００１８】
図中，基本モジュールＡ〜Ｊに分割されている。【００１９】
ここで，マルチコアプロッセの各コアには，下記に示すような自コアの使用率等の情報を知りえる機能を一つ以上実装する。【００２０】
i）自コアに要求された信号数(シグナル/ms等)と，自コアから他コアに出力された
信号数をカウントする機能
ii）自コアに内臓されている受信バッファの蓄積容量と，送信バッファの蓄積容量を計
測する機能
iii）自コアに対し要求されたキューの数と，他コアに要求しているキューの数を計測す
る機能
つぎに，図２に示すように，上記図１に示すように分割された，複数の最小単位の基本モジュールをマルチコアプロセッサ１に予め配置する（初期配置）。図２に示す例では，５つのコアのそれぞれに，二つの基本モジュールが配置されている。【００２１】
かかる初期配置では，各コアに基本モジュールを配置するが，その際，基本モジュールに必要なＣＰＵリソース量や，コア毎の処理可能な基本モジュール数等を意識する必要はない。【００２２】
つぎに，基本モジュールが初期配置された状態で処理を実行する。その際，各コアは上記i）〜iii）の機能情報を基に，定期的，もしくは必要に応じて適宜に，基本モジュール
の再配置を行う。【００２３】
その際の再配置方法は，下記に示す法則に則り制御される。
[平均/分散型]
図３は，平均/分散型による再配置の例を示す図である。【００２４】
マルチコアプロセッサ１内の全コアＣ１〜５を使用し，各基本モジュールの処理性能が最大値をとるように再配置を行う。これにより，各コアでの処理能力を最大限に引き出すことが可能であり，プロセッサ全体の処理効率も自動的に最大となる
かかる平均/分散型の方法では，各コアの処理能力が均等になり、プロセッサのコア全てを有効に使用可能である。また，再配置後、要求される処理内容が大きく変わらなければ再々配置を行わずに処理が継続出来る。
[コア詰め型]
図４は，コア詰め型による再配置の例を示す図である。【００２５】
この再配置の制御の方法は，使用優先度の高いコアが，使用優先度の低いコアの基本モジュールを引き取ることが可能であれば，引取り，再配置を行うものである。【００２６】
プロセッサ１全体の処理に余裕がある場合は，使用優先度の高いコアに処理が詰められ，使用するコア数を減らすことが可能である。これにより，プロセッサあたりの使用するコア数を最小限に抑えることが可能であり、未使用のコアを作りたい場合に適し，未使用のコアは他のタスク等で使用可能となる。【００２７】
さらに，使用するコアの数で消費電力が決定されるようなプロセッサの場合、プロセッサの消費電力を抑えることが可能である。【００２８】
[平均/分散型とコア詰め型の応用]
上記の平均/分散型とコア詰め型制御を応用して，次のような利用が可能である。【００２９】
図５は，平均/分散型とコア詰め型の第１の応用例を示す図である。【００３０】
プロセッサ１のコア総数のうち，Ａ個のコアを残した状態で基本モジュールを平均/分散させる。残したコア（図５では，コア５）において，別の処理（定期的なヘルスチェック等）が実行可能である。残したコア数Ａの値は，
０≦Ａ≦(全体のコア数−最低限必要なコア数)の範囲で指定可能であり，定期的に入る割り込み処理の規模に応じて，再配置可能である。【００３１】
図６は，平均/分散型とコア詰め型の第２の応用例を示す図である。【００３２】
プロセッサ１の複数あるコアのうち，故障したコア（図６の例ではコアＣ３）が発生した際に，そのコアＣ３を除いた状態で基本モジュールを平均／分散させる。【００３３】
故障したコアＣ３を残した状態で動作可能なため，保守者介在が行われるまでの間，パフォーマンスがおちた状態ではあるが装置として運用可能である。【００３４】
上記原理により理解出来るように，本発明により，次のような従来例にはないメリットが得られる。
i）各コアへの処理割り当てを，ソフトウェア開発者が意識することなく実現できる。
ii）平均/分散型，コア詰め型の二通りのアルゴリズムを使用するだけで，多彩なプログ
ラム配置方法を実現できる。
iii）プロセッサ全体の基本モジュール配置を制御するプログラムを別途必要とすることなく，プロセッサ全体の基本プログラムの最適化が実現できる。【００３５】
次に，上記原理及び概念構成に対応する本発明に従う具体的実施例について説明する。【００３６】
本発明の適用対象とするデバイスは，２個以上の演算回路（コア）を持つ，ＣＰＵ，ネットワークプロセッサ等のプロセッサである。そして，本発明が適用可能な条件として，各コアに対し，データ入出力の規格化のされたプログラム(基本モジュール)を入力出来る機能部を有している。【００３７】
図７は，本発明が適用される１チップで構成されるプロセッサ１の構成例である。【００３８】
複数のコアＣ１，Ｃ２，・・・コアＣｎを有しているコア部３と，コア部３を除くプロセッサ部２を有している。【００３９】
そして，プロセッサ部２は，コア部３の各コアに対し，基本モジュールを入力出来る機能部を有している。【００４０】
以下に，各機能部の機能の詳細を説明する。
[プロセッサ部２]
プロセッサは，２個以上のコアを有するコア部３とそれ以外の機能を受け持つプロセッサ部２を有している。プロセッサ部２は，コア部３の各コアＣ１〜Ｃｎに外部から受信部１２に入力されたデータを受け渡す機能を持つ。また，各コアＣ１〜Ｃｎから外部向けに出力されたデータを，送信部１３を介して外部に送信する機能を持つ。【００４１】
プロセッサ部２は，さらに外部の基本モジュール送信部１１ａから送信されたデータを基に，内部の基本モジュール送信部１１ｂで，どのコアに対してどの基本モジュールを配置すべきかを判断し，対象のコアに対してモジュールを配置する。【００４２】
なお，以降の説明において，基本モジュール送信部１１ａ及び基本モジュール送信部１１ｂをまとめて単に基本モジュール送信部１１と呼ぶ。【００４３】
基本モジュール送信部１１からコア及び基本モジュールの関係が指定されていない場合，プロセッサ部２はコア部３の第一コアＣ１に対して基本モジュールを送信し，第一コアＣ１から基本モジュール格納メモリ容量がフルであるとの情報を受信次第，次のコアＣ２に基本モジュールの送信を開始する。【００４４】
プロセッサ部２は，外部の基本モジュール配置制御部１０ａにより，基本モジュールのコア配置制御方法を指定された場合，内部の基本モジュール配置制御部１０ｂにより，全コアＣ１〜Ｃｎに対し，その制御情報を通知する。その際，プロセッサ部２は，指定された制御情報を全コアＣ１〜Ｃｎに通知するのみで，各コアの状態を把握し，状態に応じたコントロールを行うようなことはしない。なお，以降の説明において，基本モジュール配置制御部１０ａ及び基本モジュール配置制御部１０ｂをまとめて単に基本モジュール配置制御部１０と呼ぶ。【００４５】
プロセッサ部２は，特定のコアから基本モジュールの再送要求があった際は，対象コアに対して対象基本モジュールを配置するように基本モジュール送信部１１に要求を出す。
[コア部３]
コア部３の各コアＣ１〜Ｃｎは，１つのプロッセサ内に２個以上配置され，基本モジュールを実行する部分である。【００４６】
図８は，コア部３の各コアＣ１〜Ｃｎに共通のコア構成例ブロック図である。【００４７】
コアＣ１〜Ｃｎはプロセッサ部２の基本モジュール配置制御部１０により配置された基本モジュールをモジュール入出力部３０で受信し，対応するコアのプログラム実行エリア３１内に展開する。【００４８】
プログラム実行エリア３１に基本モジュールが配置されている状態の場合（図８には，基本モジュールＡ，Ｂが配置されている），受信部１２を通してデータが入力され，受信バッファ３２に格納されると，受信データは，プログラム実行エリア３１に被演算情報として取り込まれる。【００４９】
通常，プログラム実行エリア３１内に複数の基本モジュールが配置されていた場合，それらは連続したお互い関連した処理フローとなっているため，入力されたデータは基本モジュールＡで処理された後，基本モジュールＢで演算されるといった態様で，プログラム実行エリア３１内で受け渡しが行われる。【００５０】
その後，プログラム実行エリア３１内での処理が終わったデータは，コア部３内の送信バッファ３３に格納され，他のセル内の基本モジュールの演算が必要な場合に，そのセルに向けて送信される。【００５１】
また，今回の基本モジュールの演算により信号処理が終了となるデータについては，プロセッサ部２の送信バッファ１５に送信される。【００５２】
上記の一連のデータ受信→演算→データ送信のサイクルの中で，コア部３のそれぞれのコアは常にデータの送受信量，演算量等のコアの状態を測定している。【００５３】
測定データの種類として，コアのデータ受信バッファ３２の入力バッファ量，出力バッファ量がある。データ送信バッファ３３の入力バッファ量及び，出力バッファ量をバッファ測定部３４で常に監視（または，一定間隔で監視）し，コア状態送信部３５に送信する。【００５４】
上記のような手順を用いて，コア部３に対して送信されるデータ量及び，一のコアが他のコア（またはプロセッサ部２の送信バッファ１５）に対して送信するデータ量の速度や，送受のデータ量の差を算出できる。【００５５】
また，コア使用率測定部３６では，プログラム実行エリア全体の使用率，及び基本モジュールごとの使用率を取得する。【００５６】
モジュール配置制御部３７には，自コアの状態が常時（または，一定間隔で）送信される。このコア状態情報と，通信部３８が取得し，情報データベース３９内に記述されている他コアの状態情報を基に，現在の自己のコアの動作が適切かどうかを判断する。【００５７】
具体的には，自己のコア内に配置されている基本モジュールの前後の工程を担当しているコアの状態と比較し，コア全体の使用率に差があれば，基本モジュールの再配置を実施する。【００５８】
上記の構成に基づき，実施例の詳細を，順を追って説明する。
[基本モジュールのデータ形式]
各コアのプログラム実行エリア３１に配置される，データ入出力の規格化のされたプログラムを，ここでは基本モジュールと呼ぶ。【００５９】
この基本モジュールのデータ形式及び，基本モジュールのプログラム形式について，その一例を図９に示す。さらに，図１０は，複数の基本モジュールデータの関係の一例を示す図である。図１０において，基本モジュールデータが，配置先とするそれぞれのコアに破線矢印のように順次に送られ，配置される。【００６０】
図９において，基本モジュールのデータ形式は，対象コアNo.:Ｉ，基本モジュール名II，データサイズIII，入力コアNo.:IV，入力先モジュール名Ｖ，出力コアNo.:VI，出力先モジュール名VII，プログラムデータVIIIの８種類のデータからなる。【００６１】
対象コアNo.:Ｉは，基本モジュールを処理すべきコアの番号が示されており，プロセッサ部２の基本モジュール配置制御部１０が，この番号に対応するコアに該当の基本モジュールを配置する。【００６２】
基本モジュール名IIは，自己のモジュール名称を示し，他の基本モジュールとの識別に用いる。【００６３】
データサイズIIIは，基本モジュール内のプログラムデータVIIIのデータサイズを示し，プログラム実行エリア内に該当のプログラムが配置可能かどうかの判断に用いる。【００６４】
入力コアNo.:IVは，基本モジュール内のプログラムの入力データが送信されるべきコアの番号が示されている。基本モジュール内のプログラムは，この番号に示されたコアからデータが入力されることを期待する。また，入力コア番号IVに「プロセッサ内受信バッファ」と示されていた場合は，コア向けではなく，プロセッサ部２内部の受信バッファ１４に入力データが格納されているので，その入力データを受信バッファ１４から取得する。【００６５】
入力先モジュール名Ｖは，該当の基本モジュール内のプログラムの入力データが送信されるべき基本モジュールの名称が示されている。基本モジュール内のプログラムは，この名称の基本モジュールからデータが入力されることを期待する。また，入力コア番号に「プロセッサ内受信バッファ」と示されていた場合は，受信バッファ１４内の，入力先モジュール名Ｖの示されたデータを取得する。【００６６】
出力コアNo.:VIは，基本モジュール内のプログラムに出力データを送信すべきコアの番号が示されている。基本モジュール内のプログラムは，この番号に示されたコアに向け，出力データを送信する。また，出力コアNo.:VIに「プロセッサ内送信バッファ」と示されていた場合は，コア向けではなく，プロセッサ部内２部の送信バッファ１５に向けて出力データを送信する。【００６７】
出力先モジュール名VIIは，基本モジュール内のプログラムの出力データを送信すべき基本モジュールの名称が示されている。基本モジュール内のプログラムは，この名称の基本モジュール向けに出力データを送信する。出力コアNo.:VIに「プロセッサ内送信バッファ」と示されていた場合は，送信バッファ１５内に出力先モジュール名VIIの示されたデータを格納する。【００６８】
プログラムデータVIIIには，入出力形式が規定されたプログラムデータが格納される。
[基本モジュールのプログラム形式]
基本モジュール内のプログラム形式は，入力データ形式と出力データ形式が，それぞれ，入力先モジュールの出力形式，出力先モジュールの入力形式と一致していれば問題なく，プログラム内容については，プログラム実行エリア内で使用できる関数等を用いて記述されていればよい。【００６９】
[基本モジュール間の入出力データ形式]
以下に，基本モジュール間の入出力データ形式について，その一例を示す。図１１は，基本モジュール間の入出力データ形式の一例であり，図１２は，複数のモジュール間の入出力データの関係を示す図である。図１２において，破線矢印は，送信データの流れを示す。【００７０】
図１１に示されるように，基本モジュール間の入出力データ形式は，宛先コア番号Ｉ，宛先モジュール名II，送信元コアNo.:III，送信元モジュール名IV，処理No.:Ｖ，データサイズVI，入力データVIIから構成される。【００７１】
宛先コアNo.:Ｉは，データの送信先であるコア番号を記述する。【００７２】
宛先モジュール名IIは，データの送信先である基本モジュール名称を記述する。【００７３】
送信元コアNo.:IIIは，自己のコア番号を記述する。プロセッサ１内の受信バッファ３２もしくは送信バッファ３３の場合はそれぞれ，受信バッファ，送信バッファと記述する。【００７４】
送信元モジュール名IVは，自己の基本モジュール名称を記述する。プロセッサ１内の受信バッファ３２もしくは送信バッファ３３の場合はそれぞれ，入力データ名，送信データ名を記述する。【００７５】
処理No.:Ｖは，そのデータの処理番号を記述し，ここの入出力データとの混同の発生をなくす。【００７６】
データサイズVIは，入出力データのサイズを記述する。【００７７】
入力データVIIは，入力データ形式と出力データ形式が，それぞれ，入力先モジュールの出力形式，出力先モジュールの入力形式と一致していれば問題ない。
[コア情報のデータ形式]
コア情報のデータ形式について，実施形態の一例を以下に説明する。コア情報とは，コア部３のコア状態送信部３５がモジュール配置制御部３７に対して通知するコアの使用率及び送受信バッファ３２，３３の使用量もしくは送受信信号数などのコアの状態を示すデータを示したものである。すなわち，前後のコア同士協調処理を行うための情報である。【００７８】
この情報をモジュール配置制御部３７が通信部３９を通して，データの受け渡し対象であるコアに通知し，自己のコア状態を通知する。また，他のコアから得たコア情報と，自己のコア情報を比較することによって，基本モジュールの再配置のトリガとする。【００７９】
以下にコア情報のデータ形式を示す図１３を参照して，具体的なコア情報のデータ構成を説明する。【００８０】
図１３に示すコア情報は，対象コアNo.:Ｉ，受信バッファの入力量II，受信バッファの出力量III，送信バッファの入力量IV，送信バッファの出力量Ｖ，コア全体の使用率VI，基本モジュール毎の使用率VII，コア全体のデータサイズVIII，コア全体の空きデータ容量IX，基本モジュール毎のデータサイズＸから構成される。【００８１】
対象コアNo.:Ｉは，コア情報を記述した対象コア番号が示されている。【００８２】
受信バッファの入力量IIは受信バッファ部１５がある一定時間(t)に，外部から入力されたデータ量を示す。この値によって，外部からのデータ流入量と流入速度がある一定時間単位(t)で計測できる。【００８３】
受信バッファの出力量IIIは受信バッファ部３２がある一定時間(t)に，プログラム実行エリア３１へ入力されたデータ量を示す。この値によって，プログラム実行エリア３１のデータ入力量と入力速度がある一定時間単位(t)で計測できる。
送信バッファの入力量IVは送信バッファ部３３がある一定時間(t)に，プログラム実行エリア３１から出力されたデータ量を示す。この値によって，プログラム実行エリア３１からのデータ出力量と出力速度がある一定時間単位(t)で計測できる。【００８４】
送信バッファの出力量Ｖは送信バッファ部３３がある一定時間に，外部へ出力したデータ量を示す。この値によって，外部へのデータ出力量と出力速度がある一定時間単位(t)で計測できる。【００８５】
コア全体の使用率VIは，プログラム実行エリア３１内における，前プロセスの使用率の合計値を示す。この値は，シングルＣＰＵでいうところの，ＣＰＵ使用率に相当する。【００８６】
基本モジュールあたりの使用率VIIは，プログラム実行エリア３１内に配置された，基本モジュールの使用率を個々に示す。【００８７】
コア全体のデータサイズVIIIは，プログラム実行エリア３１内に現在配置されている基本モジュールのデータサイズの合計値を示す。【００８８】
コア全体の空きデータ容量IXは，プログラム実行エリア３１内に配置可能なデータ領域全体から，現在配置されている基本モジュールのデータサイズを差し引いた，空きデータ容量を示す。【００８９】
基本モジュールあたりのデータサイズＸは，プログラム実行エリア３１内に現在配置されている，基本モジュールのデータサイズを個々に示す。
[モジュール配置情報のデータ形式]
モジュール配置情報のデータ形式について，図１４に示す実施形態の一例により以下に説明する。【００９０】
モジュール配置情報とは，外部のモジュール配置制御部２０ａ経由で，プロセッサのモジュール配置制御部１０ｂが各コアに一定間隔もしくは必要に応じて送信する，モジュールの再配置アルゴリズムを記述したデータである。【００９１】
各コアはこの情報を基に，コア内の基本モジュールを他のコアに送信する許可や，他のコアの基本モジュールを受け入れる許可があるかどうか判断する。【００９２】
図１４に示すモジュール配置情報のデータ構成により説明する。【００９３】
モジュール配置情報は，対象コア番号Ｉ，入力先コア側へのモジュール送信許可II，入力先コア側からのモジュール受信許可III，出力先コア側へのモジュール送信許可IV，出力先コア側からのモジュール受信許可Ｖ，他コア側へのモジュール退避の有無VIから構成される。【００９４】
対象コア番号Ｉは，モジュール配置情報の対象コアNo.が示されている。【００９５】
入力先コア側へのモジュール送信許可IIは，データの入力側のコアに対し，モジュールを送信してもよいかの許可情報が示される。許可と記述されていた場合は，入力側コアへモジュールの送信が可能であり，記述されていなかった場合は，送信不可である。また，入力側がプロセッサ部２の受信バッファ１４である場合はモジュールの送信が不可なため，この許可情報は破棄する。【００９６】
入力先コア側からのモジュール受信許可IIIは，データの入力側のコアから，モジュールを送信された場合に，受信してもよいかの許可情報が示される。許可と記述されていた場合は，入力側コアからのモジュール受信が可能であり，記述されていなかった場合は，受信不可である。【００９７】
出力先コア側へのモジュール送信許可IVは，データの出力側のコアに対し，モジュールを送信してもよいか否かの許可情報が示される。許可と記述されていた場合は，出力側コアへモジュールの送信が可能であり，記述されていなかった場合は，送信不可である。また，出力側がプロセッサ部２の送信バッファ１５である場合はモジュールの送信が不可なため，この許可情報は破棄する。【００９８】
出力先コア側からのモジュール受信許可Ｖは，データの出力側のコアから，モジュールを送信された場合に，受信してもよいかの許可情報が示される。許可と記述されていた場合は，出力側コアからのモジュール受信が可能であり，記述されていなかった場合は，受信不可である。【００９９】
他コア側へのモジュール退避の有無VIは，対象コア内で動作している基本モジュールを他のコアに退避させたい場合に「有り」と記述する。退避ありの場合は，先述の入力先コア側へのモジュール送信許可及び出力先コア側へのモジュール送信許可の内容を判断しつつ，基本モジュールを他のコアに配置する。【０１００】
よって，他コア側へのモジュール退避有りの場合は，入力先コア側へのモジュール送信許可及び出力先コア側へのモジュール送信許可のいずれかの許可を行わなければならない。
[基本モジュールの引き渡し要求/応答のメッセージ形式]
基本モジュールの引き渡し要求/応答のメッセージ形式について，実施形態の一例を以下に示す。【０１０１】
モジュール配置情報の各種許可情報を受信した際に，モジュールの再配置許可があった場合は，コア情報のデータを基に，基本モジュールの再配置が可能となる。仮にコア情報のデータから，自己のコアの処理能力よりも，他のコアの処理能力の方が余裕があると認識した場合は，自己の中の基本モジュールの一部を，他のコアに引き渡す（配置する）処理を行い，処理量の均衡化を行う。【０１０２】
その際の引き渡し要求と，要求を受け付けたコアの応答，及び実際の配置完了のメッセージ形式について，以下に示す。【０１０３】
図１５は，基本モジュールの引き渡し要求メッセージ形式の実施例である。図１５において，宛先コアNo.：Ｉ，送信元コアNo.：II，基本モジュール名III，モジュールサイズIVから構成される。【０１０４】
宛先コアNo.：Ｉは，基本モジュールの引き渡し希望先のコア番号を示す。【０１０５】
送信元コアNo.：IIは，基本モジュールの引き渡し元のコア番号を示す。【０１０６】
基本モジュール名IIIは，引き渡し対象の基本モジュール名称を示す。【０１０７】
モジュールサイズIVは，引き渡し対象の基本モジュール名称のプログラムサイズを示す。【０１０８】
一方，基本モジュールの引き渡し応答メッセージは，実施例として図１６に示すようである。図１６において，宛先コアNo.：I，送信元コアNo.:II，基本モジュール名III，引き渡し応答の可否IVから構成される。【０１０９】
宛先コアNo.：Ｉは，基本モジュールの引き渡し元のコア番号を示す。【０１１０】
送信元コアNo.:IIは，基本モジュールの引き渡し希望先である，自己のコア番号を示す。【０１１１】
基本モジュール名IIIは引き渡し対象の基本モジュール名称を示す。【０１１２】
引き渡し応答の可否IVは，引き渡しが可能かどうかの可否が示される。
[基本モジュールの引き渡し完了メッセージ形式]
図１７は，上記の基本モジュールの引き渡し及び応答メッセージによる処理が完了したときのメッセージの形式を示す。図１７に示すように，基本モジュールの引き渡し完了メッセージは，宛先コアNo.：I，送信元コアNo.：II，基本モジュール名III，引き渡し完了の情報IVから構成される。【０１１３】
宛先コアNo.：Iは，基本モジュールの引き渡し元のコア番号を示す。【０１１４】
送信元コアNo.：IIは，基本モジュールの引き渡し希望先である，自己のコア番号を示す。【０１１５】
基本モジュール名IIIは引き渡し対象の基本モジュール名称を示す。【０１１６】
引き渡し完了の情報はIV，引き渡しが完了したかどうかの情報が示される。
[基本モジュールの引き受け要求/応答のメッセージ形式]
モジュール配置情報の各種許可情報を受信した際に，モジュールの再配置許可があった場合は，コア情報のデータを基に，基本モジュールの再配置が可能となる。仮にコア情報のデータから，他のコアの処理能力よりも，自己のコアの処理能力の方が余裕があると認識した場合は，他の基本モジュールの一部を，自己のコアに引き受ける（受信する）処理を行い，処理量の均衡化を行う。【０１１７】
その際の引き受け要求と，要求を受け付けたコアの応答のメッセージ及び，基本モジュールの引き受け完了メッセージの形式について，以下に説明する。【０１１８】
図１８は，基本モジュールの引き受け要求メッセージ形式を示す図であり，宛先コアNo.：I，送信元コアNo.：II，基本モジュール名III，モジュールサイズIVから構成される。【０１１９】
宛先コアNo.：Iは，基本モジュールの引き受け希望先のコア番号を示す。【０１２０】
送信元コアNo.：IIは，基本モジュールの引き受け元のコア番号を示す。【０１２１】
基本モジュール名IIIは，引き受け対象の基本モジュール名称を示す。【０１２２】
モジュールサイズIVは，引き受け対象の基本モジュール名称のプログラムサイズを示す。【０１２３】
図１９は，以下に，基本モジュールの引き受け応答メッセージの形態例を示す図である。宛先コアNo.：I，送信元コアNo.：II，基本モジュール名III，引き渡し応答の可否IVにより構成される。
宛先コアNo.：Iは，基本モジュールの引き受け元のコア番号を示す。【０１２４】
送信元コアNo.:IIは，基本モジュールの引き受け希望先である，自己のコア番号を示す。【０１２５】
基本モジュール名は引き受け対象の基本モジュール名称IIIを示す。【０１２６】
引き渡し応答の可否IVは，引き受けが可能かどうかの可否が示される。【０１２７】
図２０は，基本モジュールの引き受け完了メッセージの実施例形式を示す図である。宛先コアNo.：I，送信元コアNo.：II，基本モジュール名III，引き渡し完了の情報IVから構成される。
宛先コアNo.：Iは，基本モジュールの引き受け元のコア番号を示す。【０１２８】
送信元コアNo.：IIは，基本モジュールの引き受け希望先である，自己のコア番号を示す。【０１２９】
基本モジュール名IIIは引き受け対象の基本モジュール名称を示す。【０１３０】
引き渡し完了の情報IVは，引き受けが可能かどうかの情報が示される。
[プロセッサ起動時の基本モジュール配置方法]
上記の対応するメッセージフォーマットに従って実行される，プロセッサ起動時の基本モジュール配置方法について，図２１（その１），図２２（その２）に示す実施例シーケンスフローを参照して説明する。
処理工程Ｐ１：プロセッサ１の外部の基本モジュール配置制御部１０ａから，プロセッサ１内部の基本モジュール配置制御部１０ｂ経由で，各コアに対し，コア内の通信部３８を通して，モジュール配置制御部３７にモジュール配置情報を送信する。
処理工程Ｐ２：モジュール配置情報送信が，コア個数分送信完了すると，プロセッサ１外部の基本モジュール送信部１１ａから，プロセッサ１内部の基本モジュール送信部１１ｂ経由で，各コアに対し，コア内のモジュール入出力部３０を通して，プログラム実行エリア３１に基本モジュールプログラムを配置する。この処理工程Ｐ２は，各コアに対し，各コアの対応する基本モジュール個数分繰り返して行われる。【０１３１】
例えば，図２１において，コアＣ１に対し，基本モジュール個数ｍに対応して，処理が繰り返される（Ｐ２−１）。【０１３２】
このようにして，基本モジュールプログラムの送信が完了したら，実行準備完了である。
[コア内の基本モジュールの再配置方法]
コア内の基本モジュールの再配置方法について，３パターンの動作について，実施形態の一例を以下に示す。
パターン１：他のコアに基本モジュールを引き渡す場合の例をコアＣ２からコアＣ３に基本モジュールを引き渡す例で説明する。
処理１：
プロセッサ１の起動が完了し，通常の動作を行っているコアＣ２は，入力データを取得する先のコアＣ１及び，演算結果のデータを出力する先のコアＣ３のコア情報を定期的に取得している。【０１３３】
この情報を通信部３８のコア情報データベース（ＤＢ）３９に蓄積する。また同様に，通常の動作を行っているコアＣ２は，入力データの取得先のコアＣ１及び，演算結果のデータの出力先のコアＣ３に対し，定期的にコア情報をコア状態送信部３５→モジュール配置制御部３７→通信部３８を経由し送信している。
処理２：
コアＣ２は，プロセッサ起動時に取得した，図２３に示すモジュール配置情報を参照する。図２３に示すモジュール配置情報では，モジュールの送信可能コアを特定している。したがって，モジュールの送信可能コアから送信される情報と自己のコア情報とを比較する。
処理３：
各コア情報として，コアＣ１，コアＣ２及びコアＣ３のコア情報が，それぞれ対応する図２４Ａ，図２４Ｂ，図２４Ｃに示される。【０１３４】
そして上記コア情報の比較として，図２５に示す入力判定アルゴリズムに従い，コアＣ１とコアＣ２を比較する。【０１３５】
図２４Ａ，図２４Ｂに示すコアＣ１とコアＣ２のコア情報の例では，図２５の入力判定アルゴリズムにおいて，ステップＳ１０１において，送信ハ゛ッファの出力量−送信ハ゛ッファの入力量）＜０でないと判定されるので，コアを引き渡すべきではないと判断される。【０１３６】
そして，入力側のコア情報もしくは自己（コアＣ２）のコア情報がアップデートされるまで待機する（ステップＳ１０７）。【０１３７】
一方，図２４Ｂ，図２４Ｃに示すコアＣ２とコアＣ３のコア情報の例では，図２６に示す出力判定アルゴリズムにおいて，ステップＳ１１１からＳ１１５の判定において，全てＹｅｓと判定されるので，コアＣ３に引き渡すべきと判定され，基本モジュールを対象コアＣ３に送信する（ステップＳ１１６）。
処理４：
上記処理３において，コアＣ２は，コアＣ３に対して，基本モジュール４を引き渡すことが確定される。よって，コアＣ３に対して，基本モジュール４を引き渡す内容が記載された，図２７に示す基本モジュールの引き渡し要求メッセージを，コアＣ２のモジュール配置制御部３７で作成し，通信部３８を経由して，コアＣ３に送信する。
処理５：
これに対し，図２７に示す基本モジュールの引き渡し要求メッセージを，コアＣ３の通信部３８経由でモジュール配置制御部３７より受信したコアＣ３は，モジュールサイズが自己のプログラム実行エリアの空き容量よりも小さいことを確認し，小さかった場合は，コアＣ２に対して図２８に示す基本モジュールの引き渡し応答メッセージを，モジュール配置制御部３７で作成し，通信部３８を経由でコアＣ２に送信する。
処理６：
処理５の基本モジュールの引き渡し応答メッセージを，コアＣ２は，その通信部３８経由でモジュール配置制御部３７により受信すると，モジュール入出力部３０に対して，基本モジュール４の動作停止命令と共に，コアＣ３向けに基本モジュール４の基本モジュール入出力データを作成するように指示を行う。
処理７：
指示を受けたコアＣ２のモジュール入出力部３０は，プログラム実行エリア３１内で動作を行っていたモジュール４に対し動作停止命令を行い，その後，プログラム実行エリア３１内のモジュール4の基本モジュール入出力データを参考に，図２９に示すようなデータを作成し，コアＣ３に送信する。
処理８：
処理７における図２９に示した基本モジュール入出力データをモジュール入出力部３０で受信したコアＣ３は，プログラム実行エリア３１内に，この基本モジュール４を配置し，動作を開始する。
処理９：
コアＣ３における基本モジュール４の動作開始をモジュール入出力部３０より通知されたコアＣ３のモジュール配置制御部３７は，図３０に示す基本モジュールの引き渡し応答メッセージを通信部３８経由でコアＣ２に送信する。
処理１０：
処理９における図３０に示した基本モジュールの引き渡し完了メッセージを通信部３８経由でモジュール配置制御部３７で受信したコアＣ２は，モジュール入出力部３０に対し，プログラム実行エリア３１内の動作停止状態のモジュール４を削除する様に指示を行う。
処理１１：
モジュール４を削除指示に対し，コアＣ２のモジュール入出力部３０は，プログラム実行エリア３１内のモジュール４の削除を実行する。【０１３８】
図３１Ａ（その１），図３１Ｂ（その２）は，他のコアに基本モジュールを引き渡す場合の上記処理１から処理１１までの内容をまとめたシーケンスフロー図である。図３１Ａ，図３１Ｂにおいて処理番号は，上記に説明した処理１から処理１１に対応する。
パターン２：他のコアから基本モジュールを引き受ける場合を，コアＣ２がコアＣ３から基本モジュールを引き受ける例により説明する。
処理２１：
プロセッサ１の起動が完了し，通常の動作を行っているコアＣ２は，入力データを取得する先のコアＣ１及び，演算結果のデータを出力する先のコアＣ３のコア情報を定期的に取得しており，通信部３８のコア情報データベース（ＤＢ）３９に蓄積する。【０１３９】
また同様に，通常の動作を行っているコアＣ２は，入力データを取得する先のコアＣ１及び，演算結果のデータを出力する先のコアＣ３に対し，定期的にコア情報をコア状態送信部３５→モジュール配置制御部３７→通信部３８を経由し送信している。
処理２２：
コアＣ２は，プロセッサ１の起動時に取得した，図３２に示すモジュール配置情報を基に，モジュールの送信可能コアを特定している（例として，コアＣ１又はコアＣ２）。そのコアから送信されるコア情報と自己のコア情報とを比較する。
処理２３：
各コア情報として，コアＣ１，コアＣ２及びコアＣ３のコア情報が，それぞれ対応する図３３Ａ，図３３Ｂ，図３３Ｃに示される。そして上記コア情報の比較として，図３４に示す入力側判定アルゴリズムに従い，コアＣ１とコアＣ２を比較する。
処理２３：
図３３Ａ，図３３Ｂに示すコアＣ１とコアＣ２のコア情報の例では，図３４の入力側判定アルゴリズムにおいて，ステップＳ２０２の判定即ち，自己のコアのコア情報において，（受信ハ゛ッファの出力量−受信ハ゛ッファの入力量）＞０とならないので，コアを引き受けるべきではないと判断される。そして，入力側のコア情報もしくは自己（コアＣ２）のコア情報がアップデートされるまで待機する（ステップＳ２０７）。【０１４０】
一方，図３３Ｂ，図３３Ｃに示すコアＣ２とコアＣ３のコア情報の例では，図３５の出力側判定アルゴリズムにおいて，ステップＳ２１１からＳ２１５の判定において，全てＹｅｓと判定されるので，入力側の自己に出力を行っている基本モジュールを対象コアＣ３から引き受ける（ステップＳ２１６）。
処理２４：
上記処理２３において，図３５に示す出力側判定アルゴリズムに従い，コアＣ２は，コアＣ３の基本モジュール５を引き受けることが確定される。よって，コアＣ３に対して，基本モジュール５を引き受ける内容が記載された，図３６に示す基本モジュールの引き受け要求メッセージを，コアＣ２のモジュール配置制御部３７で作成し，通信部３８を経由して，コアＣ３に送信する。
処理２５：
これに対し，図３６に示す基本モジュールの引き受け要求メッセージを，コアＣ３は，通信部３８経由でモジュール配置制御部３７にて受信し，モジュールサイズが自己のプログラム実行エリア３１内の該当するモジュール５と同一であることを確認し，同一であった場合は，コアＣ２に対して，図３７に基本モジュールの引き受け応答メッセージを，モジュール配置制御部３７で作成し，通信部３８を経由して，コアＣ２に送信する。
処理２６：
処理２５の基本モジュールの引き受け応答メッセージを，コアＣ２は，その通信部３８経由でモジュール配置制御部３７により受信すると，モジュール入出力部３０に対して，追加のモジュールが送信されることを通知する。
処理２７：
基本モジュールの引き受け応答メッセージを送信したコアＣ３は，モジュール入出力部３０に対して，モジュール５の動作停止命令と共に，コアＣ２向けにモジュール５の基本モジュール入出力データを作成するように指示を行う。指示を受けたモジュール入出力部３０は，プログラム実行エリア３１内で動作を行っていたモジュール５に対し動作停止命令を行い，その後，プログラム実行エリア３１内のモジュール５の基本モジュール入出力データを参考に，図３８に示すような基本モジュール入出力データを作成し，コアＣ２に送信する。
処理２８：
処理２７における図３８に示した基本モジュール入出力データをモジュール入出力部３０で受信したコアＣ２は，プログラム実行エリア３１内に，この基本モジュールを配置し，動作を開始する。
処理２９：
モジュール５の動作開始をモジュール入出力部３０より通知されたコアＣ３のモジュール配置制御部３７は，図３９に示す基本モジュールの引き受け完了メッセージを通信部３８経由でコアＣ３に送信する。
処理３０：
処理２９における図３９に示した基本モジュールの引き受け完了メッセージを通信部３８経由のモジュール配置制御部３７で受信したコアＣ３は，モジュール入出力部３０に対し，プログラム実行エリア３１内の動作停止状態のモジュール５を削除する様に指示を行う。
処理３１：
モジュール削除指示に対し，コアＣ３のモジュール入出力部３０は，プログラム実行エリア３１内のモジュール５の削除を実行する。【０１４１】
図４０Ａ（その１），図４０Ｂ（その２）は，他のコアから基本モジュールを引き受ける場合の上記処理２１から処理３１まで内容をまとめたシーケンスフロー図である。図４０Ａ，図４０Ｂにおける処理番号は，上記に説明した処理２１から処理３１に対応する。
パターン３：他コア側へのモジュール退避が発生した場合をコアＣ２からコアＣ１，コアＣ３に基本モジュールを引き渡す例により説明する。
処理４１：
プロセッサ１の起動が完了し，通常の動作を行っているコアＣ２は，入力データを取得する先のコアＣ１及び，演算結果のデータを出力する先のコアＣ３のコア情報を定期的に取得しており，通信部３８のコア情報データベース（ＤＢ）３９に蓄積する。また同様に，通常の動作を行っているコアＣ２は，入力データを取得する先のコアＣ１及び，演算結果のデータを出力する先のコアＣ３に対し，定期的にコア情報をコア状態送信部３５→モジュール配置制御部３７→通信部３８を経由し送信している。
処理４２：
特定の条件により，コアＣ２に対し，モジュール退避を行わなければならなくなった場合，プロセッサ外部の基本モジュール配置制御部１０ａから，プロセッサ内部の基本モジュール配置制御部１０ｂ経由でコアＣ２に対し，図４１に示すモジュール配置情報を送信する。
処理４３：
コアＣ２は，プロセッサ起動時に取得した，図４１のモジュール配置情報を基に，モジュールの送信可能コアを特定しており（例として，コアＣ１orコアＣ２），そのコアから送信されるコア情報と自己のコア情報とを比較する。このときの，コアＣ１，コアＣ２及びコアＣ３のそれぞれのコア情報は，先に示した図２４Ａ（入力側コアＣ１のコア情報），図２４Ｂ（自己コアＣ２のコア情報），図２４Ｃ（出力側コアＣ３のコア情報）に示すごとくである。
処理４４：
このコア情報に基づき，図４２に示す退避判定アルゴリズムに従い判定すると，モジュール３をコアＣ１に引き渡し，モジュール４をコアＣ３に引き渡すことになる。
処理４５：
処理４４の工程において，コアＣ２は，モジュール３をコアＣ１に引き渡し，モジュール４をコアＣ３に引き渡すことになる。これよって，コアＣ１に対して，基本モジュール３を引き渡す内容が記載された図４３Ａの基本モジュールの引き渡し要求メッセージ（その１）をコアＣ２のモジュール配置制御部３７により作成し，通信部３８を経由して，コアＣ１に送信する。同様に，コアＣ３に対して，基本モジュール４を引き渡す内容が記載された図４３Ｂの基本モジュールの引き渡し要求メッセージ（その２）をコアＣ２のモジュール配置制御部３７により作成し，通信部３８を経由して，コアＣ３に送信する。
処理４６：
処理４５における基本モジュールの引き渡し要求メッセージを，通信部３８経由でモジュール配置制御部３７で受信したコアＣ１及びコアＣ３は，それぞれモジュールサイズが自己のプログラム実行エリア３１の空き容量よりも小さいことを確認する。【０１４２】
小さいことが確認されれば，コアＣ２に対して，それぞれ図４４Ａ（コアＣ１からの送信用），図４４Ｂ（コアＣ３から送信用）に示す基本モジュールの引き渡し応答メッセージを，モジュール配置制御部３７で作成し，通信部３８を経由して，コアＣ２に送信する。
処理４７：
処理４６における図４４Ａ，図４４Ｂに示した二つの基本モジュールの引き渡し応答メッセージを，コアＣ２は，通信部３８経由でモジュール配置制御部３７で受信する。ついで，コアＣ２は，モジュール入出力部３０に対して，モジュール４の動作停止命令と共に，コアＣ１及びコアＣ３向けにモジュール３及びモジュール４の基本モジュール入出力データを作成するように指示を行う。
処理４８：
指示を受けたモジュール入出力部３０は，プログラム実行エリア３１内で動作を行っていたモジュール３及びモジュール４に対し動作停止命令を行う。その後，プログラム実行エリア３１内のモジュール３及びモジュール４の基本モジュール入出力データを参考に，図４５Ａ，図４５Ｂに示す基本モジュール入出力データを作成し，コアＣ１及びコアＣ３に送信する。【０１４３】
図４５Ａは，コアＣ１に送られる基本モジュール入出力データであり，図４５Ｂは，コアＣ３に送られる基本モジュール入出力データである。
処理４９：
処理４８の基本モジュール入出力データをモジュール入出力部３０で受信したコアＣ１及びコアＣ３は，プログラム実行エリア３１内に，この基本モジュールを配置し，動作を開始する。
処理５０：
モジュール３及びモジュール４の動作開始をモジュール入出力部３０より通知されたコアＣ１及びコアＣ３のモジュール配置制御部３７は，それぞれ図４６Ａ，図４６Ｂに示す基本モジュールの引き渡し応答メッセージを通信部３８経由でコアＣ２に送信する。【０１４４】
図４６Ａは，コアＣ１向け，図４６Ｂは，コアＣ３向けの基本モジュールの引き渡し応答メッセージである。
処理５１：
処理５０の二つの基本モジュールの引き渡し完了メッセージを通信部３８経由のモジュール配置制御部３７で受信したコアＣ２は，モジュール入出力部３０に対し，プログラム実行エリア３１内の動作停止状態のモジュール３及びモジュール４を削除する様に指示を行う。
処理５２：
処理５１においてモジュールの削除指示を受けたコアＣ２のモジュール入出力部３０は，プログラム実行エリア３１内のモジュール３及びモジュール４の削除を実行する。【０１４５】
図４７Ａ（その１），図４７Ｂ（その２）及び図４７（その３）は，上記処理４１から処理５２をまとめた対応するシーケンスフローである。シーケンスフローにおける処理番号は，上記処理４１から処理５２に対応している。
【産業上の利用可能性】
【０１４６】
以上図面に従い，本発明の実施の形態を説明したように，プロセッサ全体に要求されている処理内容を入出力形式インタフェースの統一された最小構成単位に分割して基本モジュールを構成している。【０１４７】
マルチプロセッサの各コアには，自コアの使用率等の情報を知り得る機能を一以上実装して各コアがこの情報を基に，定期的もしくは，必要に応じて基本モジュールの再配置を行うように構成される。
これにより，現在の処理状況に合わせ各コアの処理内容を適切にコントロールし，各コアへの処理内容を自動的に決めることが出来る。さらに，各コアへの処理割り当てを決定するために必要なアルゴリズムであって，ソフトウェア技術者にとって簡単であり，かつ効率的な処理割り当てアルゴリズムが確立出来る。【０１４８】
よって，マルチプロセッサにおいて，時間と共に変わりゆく各アプリケーションの負荷状態に対し，動的なリソース配分を可能とすることが出来，産業上寄与するところ大である。【０１４９】
ここで，上記実施の形態についての説明は，本発明の理解のためのものであって，本発明の技術的範囲は，かかる実施の形態に限定されるものではなく，特許請求の範囲に記載の事項及びそれに均等の範囲の事項に及ぶものである。
【図１】
0004777994.tif 000002
【図２】
0004777994.tif 000003
【図３】
0004777994.tif 000004
【図４】
0004777994.tif 000005
【図５】
0004777994.tif 000006
【図６】
0004777994.tif 000007
【図７】
0004777994.tif 000008
【図８】
0004777994.tif 000009
【図９】
0004777994.tif 000010
【図１０】
0004777994.tif 000011
【図１１】
0004777994.tif 000012
【図１２】
0004777994.tif 000013
【図１３】
0004777994.tif 000014
【図１４】
0004777994.tif 000015
【図１５】
0004777994.tif 000016
【図１６】
0004777994.tif 000017
【図１７】
0004777994.tif 000018
【図１８】
0004777994.tif 000019
【図１９】
0004777994.tif 000020
【図２０】
0004777994.tif 000021
【図２１】
0004777994.tif 000022
【図２２】
0004777994.tif 000023
【図２３】
0004777994.tif 000024
【図２４Ａ】
0004777994.tif 000025
【図２４Ｂ】
0004777994.tif 000026
【図２４Ｃ】
0004777994.tif 000027
【図２５】
0004777994.tif 000028
【図２６】
0004777994.tif 000029
【図２７】
0004777994.tif 000030
【図２８】
0004777994.tif 000031
【図２９】
0004777994.tif 000032
【図３０】
0004777994.tif 000033
【図３１Ａ】
0004777994.tif 000034
【図３１Ｂ】
0004777994.tif 000035
【図３２】
0004777994.tif 000036
【図３３Ａ】
0004777994.tif 000037
【図３３Ｂ】
0004777994.tif 000038
【図３３Ｃ】
0004777994.tif 000039
【図３４】
0004777994.tif 000040
【図３５】
0004777994.tif 000041
【図３６】
0004777994.tif 000042
【図３７】
0004777994.tif 000043
【図３８】
0004777994.tif 000044
【図３９】
0004777994.tif 000045
【図４０Ａ】
0004777994.tif 000046
【図４０Ｂ】
0004777994.tif 000047
【図４１】
0004777994.tif 000048
【図４２】
0004777994.tif 000049
【図４３Ａ】
0004777994.tif 000050
【図４３Ｂ】
0004777994.tif 000051
【図４４Ａ】
0004777994.tif 000052
【図４４Ｂ】
0004777994.tif 000053
【図４５Ａ】
0004777994.tif 000054
【図４５Ｂ】
0004777994.tif 000055
【図４６Ａ】
0004777994.tif 000056
【図４６Ｂ】
0004777994.tif 000057
【図４７Ａ】
0004777994.tif 000058
【図４７Ｂ】
0004777994.tif 000059
【図４７Ｃ】
0004777994.tif 000060