(57)【要約】【課題】  マルチプロセッサシステムの計算処理の効率を向上させる。【解決手段】  マルチプロセッサシステムは、第１メモリと、第１メモリに接続され、第１メモリに記憶されたデータを用いて処理を実施する処理部とを有している。処理部は、第２メモリと、データおよび処理の結果である処理データの少なくとも一方を第１メモリと第２メモリとの間で転送するデータ転送を実施する第１プロセッサと、第１メモリと第２メモリとの間でのデータ転送と処理とを切り替え可能に実施する第２プロセッサと、第２メモリに転送されたデータを用いて、処理を実施する第３プロセッサとを有している。【選択図】    図１
2011180680.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリと、
前記第１メモリに接続され、前記第１メモリに記憶されたデータを用いて処理を実施する処理部とを備え、
前記処理部は、
第２メモリと、
前記データおよび前記処理の結果である処理データの少なくとも一方を前記第１メモリと前記第２メモリとの間で転送するデータ転送を実施する第１プロセッサと、
前記第１メモリと前記第２メモリとの間でのデータ転送と前記処理とを切り替え可能に実施する第２プロセッサと、
前記第２メモリに転送された前記データを用いて、前記処理を実施する第３プロセッサと
を備えていることを特徴とするマルチプロセッサシステム。
【請求項２】
前記第１プロセッサは、前記第２プロセッサおよび前記第３プロセッサに実施される前記処理の最初の前記データを前記第１メモリから前記第２メモリに転送した後、前記処理の最初の前記処理データを前記第２メモリから前記第１メモリに転送する前に、前記最初のデータの次の前記データを前記第１メモリから前記第２メモリに転送すること
を特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記第２プロセッサは、連続する前記処理のうちの先の前記処理の前記処理データを前記第２メモリに書き込んでから次の前記処理の前記データを前記第２メモリから読み込むまでに待ち時間が発生したとき、実施する処理を前記処理から前記データ転送に切り替えること
を特徴とする請求項１または請求項２記載のマルチプロセッサシステム。
【請求項４】
第１メモリと、前記第１メモリに接続され、第２メモリおよび複数のプロセッサを含む処理部とを備え、前記第１メモリに記憶されたデータを用いて処理を実施するマルチプロセッサシステムの動作方法において、
前記複数のプロセッサの１つである第１プロセッサが、前記データを前記第１メモリから前記第２メモリに転送し、
前記複数のプロセッサの１つである第２プロセッサおよび第３プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第２メモリに格納し、
前記第１プロセッサが、前記第２メモリにアクセスし、格納された前記処理データを前記第１メモリに転送し、
前記第２プロセッサおよび第３プロセッサが前記処理データを前記第２メモリに格納するタイミングが、前記第１プロセッサが前記第２メモリに前記アクセスするタイミングよりも早い場合には、前記第２プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムの動作方法。
【請求項５】
前記第２プロセッサおよび前記第３プロセッサに実施される前記処理の最初の前記データが前記第１メモリから前記第２メモリに転送された後、前記処理の最初の前記処理データが前記第２メモリから前記第１メモリに転送される前に、前記第１プロセッサが、前記最初のデータの次の前記データを前記第１メモリから前記第２メモリに転送すること
を特徴とする請求項４記載のマルチプロセッサシステムの動作方法。
【請求項６】
連続する前記処理のうちの先の前記処理の前記処理データを前記第２メモリに書き込んでから次の前記処理の前記データを前記第２メモリから読み込むまでに待ち時間が発生したとき、前記第２プロセッサに実施させる処理を前記処理から前記転送に切り替えること
を特徴とする請求項４または請求項５記載のマルチプロセッサシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムおよびマルチプロセッサシステムのプログラムに関する。
【背景技術】
【０００２】
高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが用いられている（例えば、特許文献１−４参照。）。例えば、コンピュータの処理をサポートするアクセラレータ等のマルチプロセッサシステムは、マルチプロセッサシステムおよびコンピュータ間で転送されるデータを記憶するメモリを有している。一般に、この種のメモリには、記憶容量の大きい低速なメモリが使用される。
【０００３】
各プロセッサは、例えば、コンピュータからマルチプロセッサシステムのメモリに転送された入力データを用いて計算処理を実施する。そして、各プロセッサは、計算処理の結果である出力データをメモリに転送する。このように、各プロセッサは、計算処理を実施するたびに、低速なメモリにアクセスする。
【０００４】
また、記憶容量の大きな大容量メモリおよび大容量メモリより高速なアクセスが可能な高速メモリを有するマルチプロセッサシステムでは、各プロセッサは、高速メモリにアクセスして、計算処理を実施する。なお、一般に、高速メモリの記憶容量は、大容量メモリの記憶容量より小さい。また、この種のマルチプロセッサシステムでは、高速メモリとコンピュータとの間でデータ転送を直接実施せず、各プロセッサの計算処理に必要な入力データは、大容量メモリに一旦記憶される。
【０００５】
例えば、各プロセッサは、大容量メモリに記憶された入力データを高速メモリに転送し、高速メモリに記憶された入力データを用いて計算処理を実施する。そして、各プロセッサは、計算処理の結果である出力データを高速メモリに一旦格納し、高速メモリに記憶された出力データを大容量メモリに転送する。
【０００６】
各プロセッサは、上述したように、計算処理を実施するたびに、低速な大容量メモリにアクセスする。大容量メモリへのアクセス回数が増加すると、メモリアクセスの時間が増加する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭５６−１６４４６４号公報
【特許文献２】特開昭６３−１５６２６８号公報
【特許文献３】特開平１−１３４６５７号公報
【特許文献４】特開平２−１８４９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、マルチプロセッサシステムの計算処理能力と、マルチプロセッサとメモリとのデータ転送の処理能力の調整を行うことである。
【課題を解決するための手段】
【０００９】
本発明の一形態では、マルチプロセッサシステムは、第１メモリと、第１メモリに接続され、第１メモリに記憶されたデータを用いて処理を実施する処理部とを有している。処理部は、第２メモリと、データおよび処理の結果である処理データの少なくとも一方を第１メモリと第２メモリとの間で転送するデータ転送を実施する第１プロセッサと、第１メモリと第２メモリとの間でのデータ転送と処理とを切り替え可能に実施する第２プロセッサと、第２メモリに転送されたデータを用いて、処理を実施する第３プロセッサとを有している。
【発明の効果】
【００１０】
マルチプロセッサシステムの計算処理の効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態におけるマルチプロセッサシステムの例を示している。
【図２】図１に示したマルチプロセッサシステムの動作の例を示している。
【図３】図１に示したマルチプロセッサシステムの動作の別の例を示している。
【図４】図１に示したプロセッサＰＵ２の処理が切り替わるときのマルチプロセッサシステムの動作の例を示している。
【図５】図１に示したプロセッサＰＵ２の処理が切り替わるときのマルチプロセッサシステムの動作の別の例を示している。
【図６】図１に示したプロセッサＰＵ１の動作の例を示している。
【図７】図１に示したプロセッサＰＵ２の動作の例を示している。
【図８】図１に示したプロセッサＰＵ１、ＰＵ２以外のプロセッサＰＵの動作の例を示している。
【図９】別の実施形態におけるマルチプロセッサシステムの例を示している。
【図１０】別の実施形態におけるマルチプロセッサシステムの動作の例を示している。
【図１１】上述した実施形態のマルチプロセッサシステムが搭載されるシステムの例を示している。
【発明を実施するための形態】
【００１２】
以下、実施形態を図面を用いて説明する。
【００１３】
図１は、一実施形態におけるマルチプロセッサシステムＰＳＹＳの例を示している。なお、図中の破線は、データの流れの一例を示している。マルチプロセッサシステムＰＳＹＳは、外部メモリＭＥＭと、外部メモリＭＥＭに接続された処理部ＭＰとを有している。外部メモリＭＥＭは、例えば、ＤＲＡＭ（Dynamic RAM）等で形成されたメモリであり、コンピュータ等の外部装置とマルチプロセッサシステムＰＳＹＳとの間で転送されるデータを記憶する。本実施例では、外部メモリＭＥＭの記憶容量は、後述する内部メモリＩＭＥＭの記憶容量より大きい。
【００１４】
処理部ＭＰは、外部メモリＭＥＭに記憶されたデータを用いて計算処理を実施する。処理部ＭＰは、内部メモリＩＭＥＭと、内部メモリＩＭＥＭに接続された複数のプロセッサＰＵ（ＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４、・・・）とを有している。内部メモリＩＭＥＭは、各プロセッサＰＵからアクセスされ、外部メモリＭＥＭより高速に動作する。
【００１５】
各プロセッサＰＵは、外部メモリＭＥＭに接続され、例えば、外部メモリＭＥＭに記憶されたプログラムに基づいて動作する。例えば、処理部ＭＰが外部メモリＭＥＭに記憶されたデータを用いた計算処理を実施するとき、プロセッサＰＵの１つ（図１では、プロセッサＰＵ１）は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送を実施する（図１（ａ、ｂ））。例えば、処理部ＭＰが外部メモリＭＥＭに記憶されたデータを用いた計算処理を実施するとき、プロセッサＰＵ１は、計算処理を実施せずに、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送を繰り返し実施する。プロセッサＰＵ１は、計算処理の入力データおよび出力データの少なくとも一方を外部メモリＭＥＭおよび内部メモリＩＭＥＭ間で転送するデータ転送を実施する。なお、例えば、入力データは、計算処理に用いられるデータであり、出力データは、計算処理の結果である。
【００１６】
また、処理部ＭＰが外部メモリＭＥＭに記憶されたデータを用いた計算処理を実施するとき、プロセッサＰＵの１つ（図１では、プロセッサＰＵ２）は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送（図１（ｃ））と、計算処理とを切り替え可能に実施する。言い換えれば、処理部ＭＰの計算処理能力と、処理部ＭＰと外部メモリＭＥＭとのデータ転送能力を調整するように、プロセッサＰＵ２は、データ転送と計算処理とを切り替えて実施する。
【００１７】
例えば、計算処理に必要な時間が、データ転送に必要な時間に対して相対的に長いとき、プロセッサＰＵ２は、内部メモリＩＭＥＭにアクセスして（図１（ｄ））、計算処理を実施する。また、例えば、計算処理に必要な時間が、データ転送に必要な時間に対して相対的に短いとき、プロセッサＰＵ２は、プロセッサＰＵ１の代わりに、外部メモリＭＥＭから内部メモリＩＭＥＭにデータを転送する（図１（ｃ））。
【００１８】
処理部ＭＰが外部メモリＭＥＭに記憶されたデータを用いた計算処理を実施するとき、プロセッサＰＵ１、ＰＵ２以外のプロセッサＰＵ（図１では、ＰＵ３、ＰＵ４、・・・）は、内部メモリＩＭＥＭにアクセスして（図１（ｄ））、計算処理を実施する。すなわち、プロセッサＰＵ１、ＰＵ２以外のプロセッサＰＵ（図１では、ＰＵ３、ＰＵ４、・・・）は、内部メモリＩＭＥＭに記憶された入力データを用いて、計算処理を実施する。プロセッサＰＵ３等は、例えば、低速な外部メモリＭＥＭにアクセスせずに計算処理を実施するため、計算処理を効率よく実施できる。なお、プロセッサＰＵ１の処理をプロセッサＰＵ１以外のいずれかのプロセッサＰＵが実施し、プロセッサＰＵ２の処理をプロセッサＰＵ２以外のいずれかのプロセッサＰＵが実施してもよい。また、処理部ＭＰ内のプロセッサＰＵの数は、４つ以上に限定されず、例えば、３つでもよい。
【００１９】
図２は、図１に示したマルチプロセッサシステムＰＳＹＳの動作の例を示している。なお、図２は、外部メモリＭＥＭに記憶されたデータを用いた計算処理を実施するときのプロセッサＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４の動作を示している。また、例えば、プロセッサＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４以外のプロセッサＰＵの動作は、プロセッサＰＵ３と同じである。
【００２０】
図中の符号Ｒは、外部メモリＭＥＭからデータを読み出す処理が実施されていることを示している。符号Ｗは、外部メモリＭＥＭにデータを書き込む処理が実施されていることを示している。符号ｒは、内部メモリＩＭＥＭからデータを読み出す処理が実施されていることを示している。符号ｗは、内部メモリＩＭＥＭにデータを書き込む処理が実施されていることを示している。符号ＣＡＬは、計算処理が実施されていることを示している。
【００２１】
また、図中の時間を示す矢印以外の実線の矢印は、計算処理の入力データＩＤＡＴＡの流れを示している。破線の矢印は、計算処理の結果である出力データＯＤＡＴＡの流れを示している。また、太い矢印は、細い矢印に比べて低速でアクセスされることを示している。出力データＯＤＡＴＡの符号の末尾の数字は、入力データＩＤＡＴＡの符号の末尾の数字に対応している。例えば、出力データＯＤＡＴＡ１は、入力データＩＤＡＴＡ１を用いた計算処理の結果である。
【００２２】
外部メモリＭＥＭは、計算処理に用いられる入力データＩＤＡＴＡを予め記憶している。例えば、マルチプロセッサシステムＰＳＹＳを使用するコンピュータは、マルチプロセッサシステムＰＳＹＳに計算処理を実施させる前に、入力データＩＤＡＴＡをマルチプロセッサシステムＰＳＹＳの外部メモリＭＥＭに転送する。
【００２３】
先ず、プロセッサＰＵ１は、入力データＩＤＡＴＡ１を外部メモリＭＥＭから読み込み（図２（ａ））、読み込んだ入力データＩＤＡＴＡ１を内部メモリＩＭＥＭに書き込む（図２（ｂ））。そして、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ１を内部メモリＩＭＥＭから読み込み（図２（ｃ））、入力データＩＤＡＴＡ１を用いた計算処理ＣＡＬを実施する。
【００２４】
また、プロセッサＰＵ１は、プロセッサＰＵ２、ＰＵ３、ＰＵ４の計算処理ＣＡＬの終了を待たずに、入力データＩＤＡＴＡ１の次の入力データＩＤＡＴＡ２を外部メモリＭＥＭから読み込む（図２（ｄ））。そして、プロセッサＰＵ１は、読み込んだ入力データＩＤＡＴＡ２を内部メモリＩＭＥＭに書き込む（図２（ｅ））。このように、プロセッサＰＵ１は、最初に、計算処理ＣＡＬの２回分の入力データＩＤＡＴＡ１、ＩＤＡＴＡ２を外部メモリＭＥＭから内部メモリＩＭＥＭに転送する。
【００２５】
入力データＩＤＡＴＡ１を用いた計算処理ＣＡＬが終了したとき、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、計算結果である出力データＯＤＡＴＡ１を内部メモリＩＭＥＭに書き込む（図２（ｆ））。そして、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ２を内部メモリＩＭＥＭから読み込み（図２（ｇ））、入力データＩＤＡＴＡ２を用いた計算処理ＣＡＬを実施する。
【００２６】
入力データＩＤＡＴＡ２は、入力データＩＤＡＴＡ１を用いた計算処理ＣＡＬが終了する前に、プロセッサＰＵ１により内部メモリＩＭＥＭに書き込まれている。これにより、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、出力データＯＤＡＴＡ１を内部メモリＩＭＥＭに書き込んだ直後に、入力データＩＤＡＴＡ２を内部メモリＩＭＥＭから読み込むことができる。また、内部メモリＩＭＥＭは、外部メモリＭＥＭに比べて、高速に動作する。したがって、この実施形態では、１回目の計算処理ＣＡＬの終了から２回目の計算処理ＣＡＬの開始までの間隔を短くできる。
【００２７】
出力データＯＤＡＴＡ１が内部メモリＩＭＥＭに書き込まれたとき、プロセッサＰＵ１は、出力データＯＤＡＴＡ１を内部メモリＩＭＥＭから読み込み（図２（ｈ））、読み込んだ出力データＯＤＡＴＡ１を外部メモリＭＥＭに書き込む（図２（ｉ））。そして、プロセッサＰＵ１は、入力データＩＤＡＴＡ２の次の入力データＩＤＡＴＡ３を外部メモリＭＥＭから読み込み（図２（ｊ））、読み込んだ入力データＩＤＡＴＡ３を内部メモリＩＭＥＭに書き込む（図２（ｋ））。
【００２８】
例えば、プロセッサＰＵ１は、プロセッサＰＵ２、ＰＵ３、ＰＵ４による出力データＯＤＡＴＡ２の内部メモリＩＭＥＭへの書き込みが終了する前に、入力データＩＤＡＴＡ３を内部メモリＩＭＥＭに書き込む。すなわち、プロセッサＰＵ１は、プロセッサＰＵ２、ＰＵ３、ＰＵ４が入力データＯＤＡＴＡ３の読み出し動作を実施する前に、入力データＩＤＡＴＡ３を内部メモリＩＭＥＭに書き込む。
【００２９】
このように、例えば、プロセッサＰＵ１は、自身では計算処理を行わず、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送と、出力データＯＤＡＴＡを内部メモリＩＭＥＭから外部メモリＭＥＭに転送するデータ転送とを繰り返し実施する。
【００３０】
また、例えば、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡが内部メモリＩＭＥＭに転送されるたびに、内部メモリＩＭＥＭに記憶された入力データＩＤＡＴＡを用いて、計算処理ＣＡＬを実施する。プロセッサＰＵ１が低速な外部メモリＭＥＭと高速な内部メモリＩＭＥＭとの間のデータ転送を専門に実施するために、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、低速な外部メモリＭＥＭにアクセスせずに計算処理ＣＡＬを実施できる。
【００３１】
図３は、図１に示したマルチプロセッサシステムＰＳＹＳの動作の別の例を示している。図中の矢印の意味は、上述した図２と同じである。図３に示したマルチプロセッサシステムＰＳＹＳの動作は、プロセッサＰＵ１、ＰＵ２の動作を除いて、図２と同じである。
【００３２】
例えば、プロセッサＰＵ２は、プロセッサＰＵ１の代わりに、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送する（図３（ａ、ｂ））。したがって、プロセッサＰＵ１は、プロセッサＰＵ２が入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送している期間では、入力データＩＤＡＴＡの読み込みを実施せずに、出力データＯＤＡＴＡを内部メモリＩＭＥＭから外部メモリＭＥＭに転送する（図３（ｃ、ｄ））。
【００３３】
例えば、マルチプロセッサシステムＰＳＹＳは、プロセッサＰＵ１による外部メモリＭＥＭへの出力データＯＤＡＴＡの書き込み処理と、プロセッサＰＵ２による外部メモリＭＥＭからの入力データＩＤＡＴＡの読み込み処理とを並列に実施する。これにより、この実施形態では、各プロセッサＰＵの計算処理ＣＡＬの時間が短いときにも、計算処理ＣＡＬに必要な入力データＩＤＡＴＡを内部メモリＩＭＥＭに予め書き込むことができる。
【００３４】
例えば、入力データＩＤＡＴＡ１２は、入力データＩＤＡＴＡ１１を用いた計算処理ＣＡＬの出力データＯＤＡＴＡ１１が内部メモリＩＭＥＭに全て書き込まれる前に、プロセッサＰＵ２により内部メモリＩＭＥＭに書き込まれる。したがって、この実施形態では、計算処理ＣＡＬが終了してから次の計算処理ＣＡＬを開始するまでの間隔を短くできる。
【００３５】
図４は、図１に示したプロセッサＰＵ２の処理が切り替わるときのマルチプロセッサシステムＰＳＹＳの動作の例を示している。なお、図４は、図２に示した動作から図３に示した動作に切り替わるときのプロセッサＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４の動作を示している。また、例えば、プロセッサＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４以外のプロセッサＰＵの動作は、プロセッサＰＵ３と同じである。図中の二重線の矢印以外の矢印の意味は、上述した図２と同じである。なお、図中の二重線の矢印は、プロセッサＰＵ２の処理が切り替わることを示している。また、括弧付きの符合ＰＵ２は、処理が切り替わった後のプロセッサＰＵ２の動作を示している。
【００３６】
プロセッサＰＵ２、ＰＵ３、ＰＵ４は、例えば、出力データＯＤＡＴＡ２を内部メモリＩＭＥＭに書き込む（図４（ａ））。そして、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、出力データＯＤＡＴＡ２を内部メモリＩＭＥＭに書き込んだ後、入力データＩＤＡＴＡ３を読み込むために内部メモリＩＭＥＭにアクセスする。このとき、入力データＩＤＡＴＡ３が内部メモリＩＭＥＭに記憶されていないため、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ３が内部メモリＩＭＥＭに書き込まれるまで待機する（図４（ｂ））。
【００３７】
プロセッサＰＵ１は、入力データＩＤＡＴＡ３を外部メモリＭＥＭから内部メモリＩＭＥＭに転送する（図４（ｃ、ｄ））。入力データＩＤＡＴＡ３が内部メモリＩＭＥＭに書き込まれたため、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ３を内部メモリＩＭＥＭから読み込み（図４（ｅ））、入力データＩＤＡＴＡ３を用いた計算処理ＣＡＬを実施する。そして、入力データＩＤＡＴＡ３を用いた計算処理ＣＡＬが終了したとき、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、出力データＯＤＡＴＡ３を内部メモリＩＭＥＭに書き込む（図４（ｆ））。
【００３８】
なお、プロセッサＰＵ１は、入力データＩＤＡＴＡ３を外部メモリＭＥＭから内部メモリＩＭＥＭに転送した後、出力データＯＤＡＴＡ２を内部メモリＩＭＥＭから外部メモリＭＥＭに転送する（図４（ｇ、ｈ））。そして、プロセッサＰＵ１は、入力データＩＤＡＴＡ４を外部メモリＭＥＭから内部メモリＩＭＥＭに転送する（図４（ｉ、ｊ））。さらに、プロセッサＰＵ１は、出力データＯＤＡＴＡ３を内部メモリＩＭＥＭから外部メモリＭＥＭに転送する（図４（ｋ、ｌ））。
【００３９】
ここで、例えば、プロセッサＰＵ２は、入力データＩＤＡＴＡ３を読み込むときに待ち状態が発生したため、出力データＯＤＡＴＡ３を内部メモリＩＭＥＭに書き込んだ後に実施する処理を、計算処理ＣＡＬからデータ転送に切り替える（図４の二重線の矢印）。例えば、プロセッサＰＵ２は、プロセッサＰＵ１が出力データＯＤＡＴＡ３を内部メモリＩＭＥＭから読み込んだ後、入力データＩＤＡＴＡ５を外部メモリＭＥＭから内部メモリＩＭＥＭに転送する（図４（ｍ、ｎ））。このように、内部メモリＩＭＥＭからの入力データＩＤＡＴＡの読み込みで待ち状態が発生したとき、プロセッサＰＵ２の処理は、計算処理ＣＡＬからデータ転送に切り替わる。
【００４０】
プロセッサＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ４が内部メモリＩＭＥＭに書き込まれた後に、入力データＩＤＡＴＡ４を内部メモリＩＭＥＭから読み込み（図４（ｏ））、入力データＩＤＡＴＡ４を用いた計算処理ＣＡＬを実施する。なお、入力データＩＤＡＴＡ４は、プロセッサＰＵ２の処理がデータ転送に切り替わる前に、プロセッサＰＵ１により外部メモリＭＥＭから内部メモリＩＭＥＭに転送される。
【００４１】
入力データＩＤＡＴＡ４を用いた計算処理ＣＡＬが終了したとき、プロセッサＰＵ３、ＰＵ４は、出力データＯＤＡＴＡ４を内部メモリＩＭＥＭに書き込む（図４（ｐ））。このとき、入力データＩＤＡＴＡ５は、プロセッサＰＵ２により内部メモリＩＭＥＭに既に書き込まれている。このため、プロセッサＰＵ３、ＰＵ４は、出力データＯＤＡＴＡ４を内部メモリＩＭＥＭに書き込んだ後、入力データＩＤＡＴＡ５が内部メモリＩＭＥＭに書き込まれるのを待つ状態は発生せず、入力データＩＤＡＴＡ５を内部メモリＩＭＥＭから読み込むことができる（図４（ｑ））。これにより、プロセッサＰＵ３、ＰＵ４は、計算処理ＣＡＬを効率よく実施できる。
【００４２】
なお、プロセッサＰＵ２が入力データＩＤＡＴＡ５を外部メモリＭＥＭから内部メモリＩＭＥＭに転送した後の各プロセッサＰＵの動作は、例えば、上述した図３と同じである。例えば、プロセッサＰＵ１は、プロセッサＰＵ２が入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送している期間では、出力データＯＤＡＴＡを内部メモリＩＭＥＭから外部メモリＭＥＭに転送するデータ転送を繰り返し実施する。
【００４３】
図５は、図１に示したプロセッサＰＵ２の処理が切り替わるときのマルチプロセッサシステムＰＳＹＳの動作の別の例を示している。なお、図５は、図３に示した動作から図２に示した動作に切り替わるときのプロセッサＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４の動作を示している。また、例えば、プロセッサＰＵ１、ＰＵ２、ＰＵ３、ＰＵ４以外のプロセッサＰＵの動作は、プロセッサＰＵ３と同じである。図中の矢印の意味は、上述した図４と同じである。また、括弧付きの符合ＰＵ２は、処理が切り替わった後のプロセッサＰＵ２の動作を示している。
【００４４】
プロセッサＰＵ１は、例えば、出力データＯＤＡＴＡ２０を外部メモリＭＥＭに書き込む（図５（ａ））。そして、例えば、プロセッサＰＵ１による出力データＯＤＡＴＡ２０の外部メモリＭＥＭへの書き込みが開始されたとき、プロセッサＰＵ２は、入力データＩＤＡＴＡ２２を外部メモリＭＥＭから内部メモリＩＭＥＭに転送する（図５（ｂ、ｃ））。また、例えば、プロセッサＰＵ３、ＰＵ４は、出力データＯＤＡＴＡ２１を内部メモリＩＭＥＭに書き込む（図５（ｄ））。
【００４５】
出力データＯＤＡＴＡ２１が内部メモリＩＭＥＭに書き込まれたとき、プロセッサＰＵ１は、出力データＯＤＡＴＡ２１を内部メモリＩＭＥＭから外部メモリＭＥＭに転送する（図５（ｅ、ｆ））。ここで、例えば、プロセッサＰＵ１による出力データＯＤＡＴＡ２０の外部メモリＭＥＭへの書き込みが終了したとき、プロセッサＰＵ３、ＰＵ４による出力データＯＤＡＴＡ２１の内部メモリＩＭＥＭへの書き込みは、終了していない。このため、プロセッサＰＵ１が出力データＯＤＡＴＡ２１を内部メモリＩＭＥＭから読み込むとき、待ち状態が発生している（図５（ｇ））。
【００４６】
例えば、プロセッサＰＵ１の待機時間（待ち状態の時間）が予め設定された閾値時間Ｔ１より長いとき、プロセッサＰＵ２の処理は、データ転送から計算処理ＣＡＬに切り替わる（図５の二重線の矢印）。すなわち、計算処理ＣＡＬの時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサＰＵ２は、計算処理ＣＡＬを実施する。また、プロセッサＰＵ１は、プロセッサＰＵ２の処理がデータ転送から計算処理ＣＡＬに切り替わるため、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送を再開する。例えば、プロセッサＰＵ１は、出力データＯＤＡＴＡ２１を内部メモリＩＭＥＭから外部メモリＭＥＭに転送した後、入力データＩＤＡＴＡ２３を外部メモリＭＥＭから内部メモリＩＭＥＭに転送する（図５（ｈ、ｉ））。
【００４７】
プロセッサＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ２２を内部メモリＩＭＥＭから読み込み（図５（ｊ））、入力データＩＤＡＴＡ２２を用いた計算処理ＣＡＬの結果である出力データＯＤＡＴＡ２２を内部メモリＩＭＥＭに書き込む（図５（ｋ））。そして、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡ２３が内部メモリＩＭＥＭに書き込まれた後に、入力データＩＤＡＴＡ２３を内部メモリＩＭＥＭから読み込み（図５（ｌ））、入力データＩＤＡＴＡ２３を用いた計算処理ＣＡＬを実施する。
【００４８】
このように、プロセッサＰＵ１の待機時間が予め設定された閾値時間Ｔ１より長いとき、計算処理ＣＡＬを実施するプロセッサＰＵにプロセッサＰＵ２が加わるため、マルチプロセッサシステムＰＳＹＳは、計算処理ＣＡＬを効率よく実施できる。すなわち、この実施形態では、計算処理ＣＡＬの時間がデータ転送に必要な時間に対して相対的に長いとき、計算処理ＣＡＬを実施するプロセッサＰＵの数が減ることを防止できる。このため、マルチプロセッサシステムＰＳＹＳは、計算処理ＣＡＬを効率よく実施できる。
【００４９】
出力データＯＤＡＴＡ２２が内部メモリＩＭＥＭに書き込まれたとき、プロセッサＰＵ１は、出力データＯＤＡＴＡ２２を内部メモリＩＭＥＭから外部メモリＭＥＭに転送する（図５（ｍ、ｎ））。そして、例えば、プロセッサＰＵ１は、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送と、出力データＯＤＡＴＡを内部メモリＩＭＥＭから外部メモリＭＥＭに転送するデータ転送とを繰り返し実施する。また、例えば、プロセッサＰＵ２、ＰＵ３、ＰＵ４は、入力データＩＤＡＴＡが内部メモリＩＭＥＭに転送されるたびに、計算処理ＣＡＬを実施する。
【００５０】
図６は、図１に示したプロセッサＰＵ１の動作の例を示している。処理Ｓ１００−Ｓ１２６は、例えば、外部メモリＭＥＭに記憶されたプログラムに基づいて実施される。なお、処理Ｓ１００の前に、入力データＩＤＡＴＡは、外部メモリＭＥＭに記憶されている。また、例えば、最後の入力データＩＤＡＴＡを読み込んだプロセッサＰＵ（ＰＵ１あるいはＰＵ２）は、最後の入力データＩＤＡＴＡを読み込んだことを示す最終フラグを外部メモリＭＥＭに書き込む。なお、最終フラグ以外のフラグ（ＩＤＡＴＡ転送許可フラグ等）は、例えば、内部メモリＩＭＥＭに記憶される。例えば、各フラグの初期値は、“０”である。
【００５１】
処理Ｓ１００では、プロセッサＰＵ１は、最初の入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送する。処理Ｓ１０２では、プロセッサＰＵ１は、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されたか否かを判定する。例えば、プロセッサＰＵ１は、最後の入力データＩＤＡＴＡを読み込んだことを示す最終フラグが外部メモリＭＥＭに書き込まれているか否かを判定する。
【００５２】
最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されているとき（処理Ｓ１０２のＹｅｓ）、プロセッサＰＵ１の動作は、処理Ｓ１２０に移る。一方、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されていないとき（処理Ｓ１０２のＮｏ）、プロセッサＰＵ１の動作は、処理Ｓ１０４に移る。
【００５３】
処理Ｓ１０４では、プロセッサＰＵ１は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送をプロセッサＰＵ１のみが実施しているか否かを判定する。すなわち、プロセッサＰＵ１は、プロセッサＰＵ２が入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するか否かを判定する。例えば、プロセッサＰＵ１は、プロセッサＰＵ２が実施する処理を示すＰＵ２データ転送フラグを参照することにより、プロセッサＰＵ２が入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するか否かを判定する。
【００５４】
ここで、例えば、プロセッサＰＵ２の処理が入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送のとき、ＰＵ２データ転送フラグは、“１”にセット（後述する図７の処理Ｓ２１８）される。また、例えば、プロセッサＰＵ２の処理が計算処理のとき、ＰＵ２データ転送フラグは、“０”にクリア（図７の処理Ｓ２２８）される。
【００５５】
外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送をプロセッサＰＵ１のみが実施しているとき（処理Ｓ１０４のＹｅｓ）、プロセッサＰＵ１の動作は、処理Ｓ１０６に移る。すなわち、プロセッサＰＵ２の処理が計算処理のとき、プロセッサＰＵ１の動作は、処理Ｓ１０６に移る。一方、プロセッサＰＵ２の処理が入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送のとき（処理Ｓ１０４のＮｏ）、プロセッサＰＵ１の動作は、処理Ｓ１０８に移る。
【００５６】
処理Ｓ１０６では、プロセッサＰＵ１は、ＩＤＡＴＡ転送許可フラグを“０”にクリアし、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送する。ここで、ＩＤＡＴＡ転送許可フラグは、プロセッサＰＵ２が入力データＩＤＡＴＡを外部メモリＭＥＭから読み込むタイミングを判定するために、プロセッサＰＵ２に参照されるフラグである。例えば、ＩＤＡＴＡ転送許可フラグは、後述する図７の処理Ｓ２２２において、プロセッサＰＵ２に参照される。
【００５７】
処理Ｓ１０８では、プロセッサＰＵ１は、評価値ＥＶ１を“０”にする。ここで、評価値ＥＶ１は、例えば、プロセッサＰＵ２に参照される情報であり、内部メモリＩＭＥＭに記憶される。例えば、評価値ＥＶ１は、プロセッサＰＵ２がデータ転送を継続するか否かを判定するために、図７の処理Ｓ２２６において、プロセッサＰＵ２に参照される。
【００５８】
処理Ｓ１１０では、プロセッサＰＵ１は、出力データＯＤＡＴＡを内部メモリＩＭＥＭから読み込む。処理Ｓ１１２では、プロセッサＰＵ１は、出力データＯＤＡＴＡの読み込みが成功したか否かを判定する。例えば、プロセッサＰＵ１は、読み込み対象の出力データＯＤＡＴＡが内部メモリＩＭＥＭに書き込まれる前の期間では、出力データＯＤＡＴＡの読み込みを失敗する。
【００５９】
出力データＯＤＡＴＡの読み込みが失敗したとき（処理Ｓ１１２のＮｏ）、プロセッサＰＵ１は、処理Ｓ１１４において、評価値ＥＶ１を“１”増加する。そして、プロセッサＰＵ１の動作は、処理Ｓ１１０に移る。このように、プロセッサＰＵ１は、出力データＯＤＡＴＡの読み込みが成功するまで、処理Ｓ１１０、Ｓ１１２、Ｓ１１４の動作を繰り返し実施する。
【００６０】
一方、出力データＯＤＡＴＡの読み込みが成功したとき（処理Ｓ１１２のＹｅｓ）、プロセッサＰＵ１は、処理Ｓ１１６において、評価値ＥＶ１を“１”減算し、ＩＤＡＴＡ転送許可フラグを“１”にセットする。なお、プロセッサＰＵ１は、処理Ｓ１１６でＩＤＡＴＡ転送許可フラグを“１”にセットする代わりに、処理Ｓ１０８でＩＤＡＴＡ転送許可フラグを“１”にセットしてもよい。
【００６１】
処理Ｓ１１８では、プロセッサＰＵ１は、出力データＯＤＡＴＡを外部メモリＭＥＭに書き込む。そして、プロセッサＰＵ１の動作は、処理Ｓ１０２に戻る。このように、プロセッサＰＵ１は、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されるまで、処理Ｓ１０２−Ｓ１１８の動作を繰り返し実施する。
【００６２】
なお、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されたとき（処理Ｓ１０２のＹｅｓ）、プロセッサＰＵ１は、処理Ｓ１２０において、出力データＯＤＡＴＡを内部メモリＩＭＥＭから読み込む。
【００６３】
処理Ｓ１２２では、プロセッサＰＵ１は、出力データＯＤＡＴＡの読み込みが成功したか否かを判定する。出力データＯＤＡＴＡの読み込みが失敗したとき（処理Ｓ１２２のＮｏ）、プロセッサＰＵ１の動作は、処理Ｓ１２０に戻る。一方、出力データＯＤＡＴＡの読み込みが成功したとき（処理Ｓ１２２のＹｅｓ）、プロセッサＰＵ１は、処理Ｓ１２４において、計算処理の終了を示すデータ（例えば、“１”）に終了フラグをセットする。
【００６４】
ここで、終了フラグは、例えば、外部メモリＭＥＭに記憶された入力データＩＤＡＴＡを用いた計算処理が終了したか否かを判定するために、計算処理を実施するプロセッサＰＵ（ＰＵ２、ＰＵ３、ＰＵ４等）に参照されるフラグである。例えば、プロセッサＰＵ１は、計算処理を実施するプロセッサＰＵの入力データＩＤＡＴＡとして、終了フラグを内部メモリＩＭＥＭに書き込む。これにより、例えば、終了フラグは、プロセッサＰＵ２、ＰＵ３等に参照される（後述する図７の処理Ｓ２１２、図８の処理Ｓ３０４）。
【００６５】
処理Ｓ１２６では、プロセッサＰＵ１は、出力データＯＤＡＴＡを外部メモリＭＥＭに書き込む。これにより、プロセッサＰＵ１の処理は、終了する。なお、プロセッサＰＵ１の動作は、この例に限定されない。プロセッサＰＵ１は、プロセッサＰＵ２の処理に応じて、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送を実施するか否かを切り替えればよい。
【００６６】
図７は、図１に示したプロセッサＰＵ２の動作の例を示している。処理Ｓ２００−Ｓ２２８は、例えば、外部メモリＭＥＭに記憶されたプログラムに基づいて実施される。例えば、ＰＵ２データ転送フラグは、内部メモリＩＭＥＭに記憶される。なお、ＰＵ２データ転送フラグの初期値は、例えば、“０”である。
【００６７】
処理Ｓ２００では、プロセッサＰＵ２は、最初の入力データＩＤＡＴＡを内部メモリＩＭＥＭから読み込み、読み込んだ入力データＩＤＡＴＡを用いて、計算処理を実施する。そして、プロセッサＰＵ２は、計算処理の結果である出力データＯＤＡＴＡを内部メモリＩＭＥＭに書き込む。
【００６８】
処理Ｓ２０２では、プロセッサＰＵ２は、評価値ＥＶ２を“０”にする。ここで、評価値ＥＶ２は、例えば、入力データＩＤＡＴＡの読み込みが失敗したか否かを判定するための情報であり、内部メモリＩＭＥＭに記憶される。処理Ｓ２０４では、プロセッサＰＵ２は、入力データＩＤＡＴＡを内部メモリＩＭＥＭから読み込む。
【００６９】
処理Ｓ２０６では、プロセッサＰＵ２は、入力データＩＤＡＴＡの読み込みが成功したか否かを判定する。例えば、プロセッサＰＵ２は、読み込み対象の入力データＩＤＡＴＡが内部メモリＩＭＥＭに書き込まれる前の期間では、入力データＩＤＡＴＡの読み込みを失敗する。
【００７０】
入力データＩＤＡＴＡの読み込みが失敗したとき（処理Ｓ２０６のＮｏ）、プロセッサＰＵ２は、処理Ｓ２０８において、評価値ＥＶ２を“１”増加する。そして、プロセッサＰＵ２の動作は、処理Ｓ２０４に移る。このように、プロセッサＰＵ２は、入力データＩＤＡＴＡの読み込みが成功するまで、処理Ｓ２０４、Ｓ２０６、Ｓ２０８の動作を繰り返し実施する。一方、入力データＩＤＡＴＡの読み込みが成功したとき（処理Ｓ２０６のＹｅｓ）、プロセッサＰＵ２は、処理Ｓ２１０において、評価値ＥＶ２を“１”減算する。
【００７１】
処理Ｓ２１２では、プロセッサＰＵ２は、読み込んだ入力データＩＤＡＴＡが終了フラグか否かを判定する。終了フラグは、図６で説明したように、全ての計算処理が終了したことを示している。したがって、読み込んだ入力データＩＤＡＴＡが終了フラグのとき（処理Ｓ２１２のＹｅｓ）、プロセッサＰＵ２の処理は、終了する。一方、読み込んだ入力データＩＤＡＴＡが終了フラグでないとき（処理Ｓ２１２のＮｏ）、プロセッサＰＵ２の動作は、処理Ｓ２１４に移る。
【００７２】
処理Ｓ２１４では、プロセッサＰＵ２は、読み込んだ入力データＩＤＡＴＡを用いて、計算処理を実施する。そして、プロセッサＰＵ２は、計算処理の結果である出力データＯＤＡＴＡを内部メモリＩＭＥＭに書き込む。処理Ｓ２１６では、プロセッサＰＵ２は、評価値ＥＶ２が“０”以上か否かを判定する。すなわち、プロセッサＰＵ２は、入力データＩＤＡＴＡの読み込みに１回以上失敗したか否かを判定する。
【００７３】
なお、処理Ｓ２１６の判定の基準として、“０”以上の値が予め設定されてもよい。このときの処理Ｓ２１６では、例えば、プロセッサＰＵ２は、評価値ＥＶ２が予め設定された値以上か否かを判定する。すなわち、プロセッサＰＵ２は、入力データＩＤＡＴＡの読み込みに予め設定された回数以上失敗したか否かを判定してもよい。
【００７４】
入力データＩＤＡＴＡの読み込みに１回も失敗していないとき（処理Ｓ２１６のＮｏ）、プロセッサＰＵ２の動作は、処理Ｓ２０２に戻る。一方、入力データＩＤＡＴＡの読み込みに１回以上失敗したとき（処理Ｓ２１６のＹｅｓ）、プロセッサＰＵ２の動作は、処理Ｓ２１８に移る。このように、プロセッサＰＵ２は、入力データＩＤＡＴＡを読み込むときに待ち状態が発生しない期間では、計算処理（処理Ｓ２０２−Ｓ２１６の動作）を繰り返し実施する。すなわち、プロセッサＰＵ２は、入力データＩＤＡＴＡを読み込むときに待ち状態が発生するまで、計算処理（処理Ｓ２０２−Ｓ２１６の動作）を繰り返し実施する。
【００７５】
処理Ｓ２１８では、プロセッサＰＵ２は、ＰＵ２データ転送フラグを“１”にセットする。これにより、プロセッサＰＵ１は、図６に示した処理Ｓ１０４において、プロセッサＰＵ２の処理が計算処理からデータ転送（入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送）に切り替わったことを検出できる。
【００７６】
処理Ｓ２２０では、プロセッサＰＵ２は、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されたか否かを判定する。例えば、プロセッサＰＵ２は、最後の入力データＩＤＡＴＡを読み込んだことを示す最終フラグが外部メモリＭＥＭに書き込まれているか否かを判定する。
【００７７】
最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されているとき（処理Ｓ２２０のＹｅｓ）、プロセッサＰＵ２の処理は、終了する。なお、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されているとき、プロセッサＰＵ２の動作は、処理Ｓ２０２に移ってもよい。一方、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されていないとき（処理Ｓ２２０のＮｏ）、プロセッサＰＵ２の動作は、処理Ｓ２２２に移る。
【００７８】
処理Ｓ２２２では、プロセッサＰＵ２は、外部メモリＭＥＭから内部メモリＩＭＥＭへの入力データＩＤＡＴＡの転送が許可されているか否かを判定する。例えば、ＩＤＡＴＡ転送許可フラグが“０”のとき、プロセッサＰＵ２は、入力データＩＤＡＴＡの転送が許可されていないと判定する。また、例えば、ＩＤＡＴＡ転送許可フラグが“１”のとき、プロセッサＰＵ２は、入力データＩＤＡＴＡの転送が許可されていると判定する。
【００７９】
外部メモリＭＥＭから内部メモリＩＭＥＭへの入力データＩＤＡＴＡの転送が許可されていないとき（処理Ｓ２２２のＮｏ）、プロセッサＰＵ２の動作は、処理Ｓ２２２に戻る。すなわち、プロセッサＰＵ２は、入力データＩＤＡＴＡの転送が許可されるまで待機する。これにより、この実施形態では、プロセッサＰＵ３等の計算処理に対して、外部メモリＭＥＭから内部メモリＩＭＥＭへの入力データＩＤＡＴＡの転送が先行し過ぎることを防止できる。
【００８０】
一方、外部メモリＭＥＭから内部メモリＩＭＥＭへの入力データＩＤＡＴＡの転送が許可されているとき（処理Ｓ２２２のＹｅｓ）、プロセッサＰＵ２の動作は、処理Ｓ２２４に移る。処理Ｓ２２４では、プロセッサＰＵ２は、ＩＤＡＴＡ転送許可フラグを“０”にクリアし、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送する。
【００８１】
処理Ｓ２２６では、プロセッサＰＵ２は、評価値ＥＶ１が閾値ＴＨ以上か否かを判定する。ここで、閾値ＴＨは、例えば、アプリケーションの実行時にユーザ等により設定される“０”以上の値である。例えば、閾値ＴＨは、内部メモリＩＭＥＭに記憶される。すなわち、プロセッサＰＵ２は、プロセッサＰＵ１による出力データＯＤＡＴＡの読み込みが閾値ＴＨの回数以上失敗したか否かを判定する。
【００８２】
出力データＯＤＡＴＡの読み込みの失敗回数が閾値ＴＨより少ないとき（処理Ｓ２２６のＮｏ）、プロセッサＰＵ２の動作は、処理Ｓ２２０に戻る。すなわち、プロセッサＰＵ１の待機時間（上述した図５（ｇ）等）が予め設定された閾値時間より短いとき、例えば、プロセッサＰＵ２は、外部メモリＭＥＭから内部メモリＩＭＥＭへの入力データＩＤＡＴＡの転送を継続して実施する。
【００８３】
一方、出力データＯＤＡＴＡの読み込みの失敗回数が閾値ＴＨ以上のとき（処理Ｓ２２６のＹｅｓ）、プロセッサＰＵ２は、処理Ｓ２２８において、ＰＵ２データ転送フラグを“０”にクリアする。そして、プロセッサＰＵ２の動作は、処理Ｓ２０２の処理に戻る。すなわち、プロセッサＰＵ１の待機時間が予め設定された閾値時間より長いとき、例えば、プロセッサＰＵ２の処理は、データ転送から計算処理に切り替わる。
【００８４】
このように、計算処理の時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサＰＵ２は、計算処理を実施する。そして、計算処理の時間がデータ転送に必要な時間に対して相対的に短いとき、プロセッサＰＵ２は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送を実施する。これにより、マルチプロセッサシステムＰＳＹＳは、計算処理を効率よく実施できる。なお、プロセッサＰＵ２の動作は、この例に限定されない。プロセッサＰＵ２は、プロセッサＰＵ１のデータ転送の時間と計算処理の時間とに応じて、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送と計算処理とを切り替えて実施できればよい。
【００８５】
図８は、図１に示したプロセッサＰＵ１、ＰＵ２以外のプロセッサＰＵの動作の例を示している。処理Ｓ３００−Ｓ３０６は、例えば、外部メモリＭＥＭに記憶されたプログラムに基づいて実施される。なお、プロセッサＰＵ１、ＰＵ２以外のプロセッサＰＵの動作は、プロセッサＰＵ３と同じである。このため、プロセッサＰＵ３の動作について説明する。
【００８６】
処理Ｓ３００では、プロセッサＰＵ３は、入力データＩＤＡＴＡを内部メモリＩＭＥＭから読み込む。処理Ｓ３０２では、プロセッサＰＵ３は、入力データＩＤＡＴＡの読み込みが成功したか否かを判定する。入力データＩＤＡＴＡの読み込みが失敗したとき（処理Ｓ３０２のＮｏ）、プロセッサＰＵ３の動作は、処理Ｓ３００に戻る。すなわち、プロセッサＰＵ３は、入力データＩＤＡＴＡの読み込みが成功するまで、待機する。
【００８７】
一方、入力データＩＤＡＴＡの読み込みが成功したとき（処理Ｓ３０２のＹｅｓ）、プロセッサＰＵ３は、処理Ｓ３０４において、読み込んだ入力データＩＤＡＴＡが終了フラグか否かを判定する。読み込んだ入力データＩＤＡＴＡが終了フラグのとき（処理Ｓ３０４のＹｅｓ）、プロセッサＰＵ３の処理は、終了する。一方、読み込んだ入力データＩＤＡＴＡが終了フラグでないとき（処理Ｓ３０４のＮｏ）、プロセッサＰＵ３の動作は、処理Ｓ３０６に移る。
【００８８】
処理Ｓ３０６では、プロセッサＰＵ３は、読み込んだ入力データＩＤＡＴＡを用いて、計算処理を実施し、計算処理の結果である出力データＯＤＡＴＡを内部メモリＩＭＥＭに書き込む。そして、プロセッサＰＵ３の動作は、処理Ｓ３００に戻る。このように、例えば、プロセッサＰＵ３は、終了フラグを読み込むまで、計算処理を繰り返し実施する。
【００８９】
以上、この実施形態では、プロセッサＰＵ１は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送を実施し、プロセッサＰＵ２は、計算処理の時間に応じて、計算処理とデータ転送とを切り替えて実施する。例えば、計算処理の時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサＰＵ２は、計算処理を実施する。そして、計算処理の時間がデータ転送に必要な時間に対して相対的に短いとき、プロセッサＰＵ２は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送を実施する。また、プロセッサＰＵ１、ＰＵ２以外のプロセッサは、低速な外部メモリＭＥＭにアクセスせずに計算処理を実施する。この結果、この実施形態では、マルチプロセッサシステムＰＳＹＳの計算処理の効率を向上させることができる。
【００９０】
図９は、別の実施形態におけるマルチプロセッサシステムＰＳＹＳの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムＰＳＹＳは、例えば、複数の処理部ＭＰを有している。その他の構成は、上述した実施形態と同じである。なお、各処理部ＭＰのプロセッサＰＵの動作は、上述した実施形態と同じである。
【００９１】
例えば、図６で説明したように、最後の入力データＩＤＡＴＡを読み込んだプロセッサＰＵ（ＰＵ１あるいはＰＵ２）は、最後の入力データＩＤＡＴＡを読み込んだことを示す最終フラグを外部メモリＭＥＭに書き込む。このため、各処理部ＭＰのプロセッサＰＵ１、ＰＵ２は、外部メモリＭＥＭに記憶された最終フラグを参照することにより、最後の入力データＩＤＡＴＡが外部メモリＭＥＭから内部メモリＩＭＥＭに転送されたか否かを判定できる。換言すれば、処理部ＭＰが１つの構成では、最終フラグは、内部メモリＩＭＥＭに記憶されてもよい。
【００９２】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、複数の処理部ＭＰが計算処理を並列に実施できるため、マルチプロセッサシステムＰＳＹＳの計算処理の効率をさらに向上させることができる。
【００９３】
図１０は、別の実施形態におけるマルチプロセッサシステムＰＳＹＳの動作の例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムＰＳＹＳは、プロセッサＰＵ１、ＰＵ２の動作を除いて、上述した実施形態と同じである。なお、図中の矢印の意味は、上述した図４と同じである。また、括弧付きの符合ＰＵ２は、処理が切り替わった後のプロセッサＰＵ２の動作を示している。
【００９４】
例えば、プロセッサＰＵ２は、外部メモリＭＥＭおよび内部メモリＩＭＥＭ間のデータ転送を実施するときの動作を除いて、上述した実施形態と同じである。例えば、計算処理ＣＡＬで待ち状態が発生したとき、プロセッサＰＵ２は、図４に示した入力データＩＤＡＴＡの外部メモリＭＥＭから内部メモリＩＭＥＭへの転送の代わりに、出力データＯＤＡＴＡの内部メモリＩＭＥＭから外部メモリＭＥＭへの転送を実施する（図１０の二重線の矢印）。
【００９５】
すなわち、プロセッサＰＵ２は、計算処理ＣＡＬで待ち状態が発生したときに実施するデータ転送として、内部メモリＩＭＥＭから外部メモリＭＥＭに出力データＯＤＡＴＡを転送するデータ転送を実施する。したがって、図６に示した評価値ＥＶ１の更新およびＩＤＡＴＡ転送許可フラグのセットは、プロセッサＰＵ２により実施される。
【００９６】
また、例えば、プロセッサＰＵ２の処理が出力データＯＤＡＴＡを内部メモリＩＭＥＭから外部メモリＭＥＭに転送するデータ転送のとき、プロセッサＰＵ１は、ＩＤＡＴＡ転送許可フラグを参照し、入力データＩＤＡＴＡの転送が許可されるまで待機する。そして、例えば、ＩＤＡＴＡ転送許可フラグが“１”のとき、プロセッサＰＵ１は、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送を開始する。このように、例えば、プロセッサＰＵ２の処理が計算処理ＣＡＬでないとき、プロセッサＰＵ１は、入力データＩＤＡＴＡを外部メモリＭＥＭから内部メモリＩＭＥＭに転送するデータ転送を繰り返し実施する。プロセッサＰＵ１のその他の動作は、上述した実施形態と同じである。
【００９７】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【００９８】
図１１は、上述した実施形態のマルチプロセッサシステムＰＳＹＳが搭載されるシステムＳＹＳの例を示している。システムＳＹＳは、例えば、マルチプロセッサシステムＰＳＹＳと、マルチプロセッサシステムＰＳＹＳに接続されたコンピュータＣＳＹＳを有している。コンピュータＣＳＹＳは、例えば、システムＳＹＳの動作を制御する中央処理装置ＣＰＵと、中央処理装置ＣＰＵに接続されたハードディスクＨＤＤと、中央処理装置ＣＰＵに接続されたメインメモリＭＭとを有している。例えば、中央処理装置ＣＰＵは、メインメモリＭＭに記憶された入力データをマルチプロセッサシステムＰＳＹＳの外部メモリＭＥＭに転送する。
【００９９】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
第１メモリと、
前記第１メモリに接続され、前記第１メモリに記憶されたデータを用いて処理を実施する処理部とを備え、
前記処理部は、
第２メモリと、
前記データおよび前記処理の結果である処理データの少なくとも一方を前記第１メモリと前記第２メモリとの間で転送するデータ転送を実施する第１プロセッサと、
前記第１メモリと前記第２メモリとの間でのデータ転送と前記処理とを切り替え可能に実施する第２プロセッサと、
前記第２メモリに転送された前記データを用いて、前記処理を実施する第３プロセッサと
を備えていることを特徴とするマルチプロセッサシステム。
（付記２）
前記第１プロセッサは、前記第２プロセッサおよび前記第３プロセッサに実施される前記処理の最初の前記データを前記第１メモリから前記第２メモリに転送した後、前記処理の最初の前記処理データを前記第２メモリから前記第１メモリに転送する前に、前記最初のデータの次の前記データを前記第１メモリから前記第２メモリに転送すること
を特徴とする付記１記載のマルチプロセッサシステム。
（付記３）
前記第２プロセッサは、連続する前記処理のうちの先の前記処理の前記処理データを前記第２メモリに書き込んでから次の前記処理の前記データを前記第２メモリから読み込むまでに待ち時間が発生したとき、実施する処理を前記処理から前記データ転送に切り替えること
を特徴とする付記１または付記２記載のマルチプロセッサシステム。
（付記４）
前記第２プロセッサは、前記データ転送として、前記第１メモリから前記第２メモリに前記データを転送し、
前記第１プロセッサは、前記第２プロセッサが前記データ転送を実施するとき、前記第２メモリから前記第１メモリに前記処理データを転送すること
を特徴とする付記３記載のマルチプロセッサシステム。
（付記５）
前記第２プロセッサは、前記データ転送として、前記第２メモリから前記第１メモリに前記処理データを転送し、
前記第１プロセッサは、前記第２プロセッサが前記データ転送を実施するとき、前記第１メモリから前記第２メモリに前記データを転送すること
を特徴とする付記３記載のマルチプロセッサシステム。
（付記６）
前記第２プロセッサは、前記第１プロセッサが前記第２メモリから前記処理データを読み出すときの待ち時間が予め設定された閾値時間より長いとき、実施する処理を前記データ転送から前記処理に切り替えること
を特徴とする付記３記載のマルチプロセッサシステム。
（付記７）
第１メモリと、前記第１メモリに接続され、第２メモリおよび複数のプロセッサを含む処理部とを備えたマルチプロセッサシステムに、前記第１メモリに記憶されたデータを用いて処理を実行させるマルチプロセッサシステムのプログラムにおいて、
前記複数のプロセッサの１つである第１プロセッサが、前記データを前記第１メモリから前記第２メモリに転送し、
前記複数のプロセッサの１つである第２プロセッサおよび第３プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第２メモリに格納し、
前記第１プロセッサが、前記第２メモリにアクセスし、格納された前記処理データを前記第１メモリに転送し、
前記第２プロセッサおよび第３プロセッサが前記処理データを前記第２メモリに格納するタイミングが、前記第１プロセッサが前記第２メモリに前記アクセスするタイミングよりも早い場合には、前記第２プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムのプログラム。
（付記８）
第１メモリと、前記第１メモリに接続され、第２メモリおよび複数のプロセッサを含む処理部とを備え、前記第１メモリに記憶されたデータを用いて処理を実施するマルチプロセッサシステムの動作方法において、
前記複数のプロセッサの１つである第１プロセッサが、前記データを前記第１メモリから前記第２メモリに転送し、
前記複数のプロセッサの１つである第２プロセッサおよび第３プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第２メモリに格納し、
前記第１プロセッサが、前記第２メモリにアクセスし、格納された前記処理データを前記第１メモリに転送し、
前記第２プロセッサおよび第３プロセッサが前記処理データを前記第２メモリに格納するタイミングが、前記第１プロセッサが前記第２メモリに前記アクセスするタイミングよりも早い場合には、前記第２プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムの動作方法。
（付記９）
前記第２プロセッサおよび前記第３プロセッサに実施される前記処理の最初の前記データが前記第１メモリから前記第２メモリに転送された後、前記処理の最初の前記処理データが前記第２メモリから前記第１メモリに転送される前に、前記第１プロセッサが、前記最初のデータの次の前記データを前記第１メモリから前記第２メモリに転送すること
を特徴とする付記８記載のマルチプロセッサシステムの動作方法。
（付記１０）
連続する前記処理のうちの先の前記処理の前記処理データを前記第２メモリに書き込んでから次の前記処理の前記データを前記第２メモリから読み込むまでに待ち時間が発生したとき、前記第２プロセッサに実施させる処理を前記処理から前記転送に切り替えること
を特徴とする付記８または付記９記載のマルチプロセッサシステムの動作方法。
【０１００】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１０１】
ＣＰＵ‥中央処理装置；ＣＳＹＳ‥コンピュータ；ＨＤＤ‥ハードディスク；ＩＭＥＭ、ＭＥＭ、ＭＭ‥メモリ；ＭＰ‥処理部；ＰＳＹＳ‥マルチプロセッサシステム；ＰＵ‥プロセッサ
【図１】
2011180680.tif 000003
【図２】
2011180680.tif 000004
【図３】
2011180680.tif 000005
【図４】
2011180680.tif 000006
【図５】
2011180680.tif 000007
【図６】
2011180680.tif 000008
【図７】
2011180680.tif 000009
【図８】
2011180680.tif 000010
【図９】
2011180680.tif 000011
【図１０】
2011180680.tif 000012
【図１１】
2011180680.tif 000013