マルチプロセッサシステムおよびマルチプロセッサシステムのプログラム
【課題】 マルチプロセッサシステムの計算処理の効率を向上させる。
【解決手段】 マルチプロセッサシステムは、第1メモリと、第1メモリに接続され、第1メモリに記憶されたデータを用いて処理を実施する処理部とを有している。処理部は、第2メモリと、データおよび処理の結果である処理データの少なくとも一方を第1メモリと第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、第1メモリと第2メモリとの間でのデータ転送と処理とを切り替え可能に実施する第2プロセッサと、第2メモリに転送されたデータを用いて、処理を実施する第3プロセッサとを有している。
【解決手段】 マルチプロセッサシステムは、第1メモリと、第1メモリに接続され、第1メモリに記憶されたデータを用いて処理を実施する処理部とを有している。処理部は、第2メモリと、データおよび処理の結果である処理データの少なくとも一方を第1メモリと第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、第1メモリと第2メモリとの間でのデータ転送と処理とを切り替え可能に実施する第2プロセッサと、第2メモリに転送されたデータを用いて、処理を実施する第3プロセッサとを有している。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチプロセッサシステムおよびマルチプロセッサシステムのプログラムに関する。
【背景技術】
【0002】
高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが用いられている(例えば、特許文献1−4参照。)。例えば、コンピュータの処理をサポートするアクセラレータ等のマルチプロセッサシステムは、マルチプロセッサシステムおよびコンピュータ間で転送されるデータを記憶するメモリを有している。一般に、この種のメモリには、記憶容量の大きい低速なメモリが使用される。
【0003】
各プロセッサは、例えば、コンピュータからマルチプロセッサシステムのメモリに転送された入力データを用いて計算処理を実施する。そして、各プロセッサは、計算処理の結果である出力データをメモリに転送する。このように、各プロセッサは、計算処理を実施するたびに、低速なメモリにアクセスする。
【0004】
また、記憶容量の大きな大容量メモリおよび大容量メモリより高速なアクセスが可能な高速メモリを有するマルチプロセッサシステムでは、各プロセッサは、高速メモリにアクセスして、計算処理を実施する。なお、一般に、高速メモリの記憶容量は、大容量メモリの記憶容量より小さい。また、この種のマルチプロセッサシステムでは、高速メモリとコンピュータとの間でデータ転送を直接実施せず、各プロセッサの計算処理に必要な入力データは、大容量メモリに一旦記憶される。
【0005】
例えば、各プロセッサは、大容量メモリに記憶された入力データを高速メモリに転送し、高速メモリに記憶された入力データを用いて計算処理を実施する。そして、各プロセッサは、計算処理の結果である出力データを高速メモリに一旦格納し、高速メモリに記憶された出力データを大容量メモリに転送する。
【0006】
各プロセッサは、上述したように、計算処理を実施するたびに、低速な大容量メモリにアクセスする。大容量メモリへのアクセス回数が増加すると、メモリアクセスの時間が増加する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開昭56−164464号公報
【特許文献2】特開昭63−156268号公報
【特許文献3】特開平1−134657号公報
【特許文献4】特開平2−184958号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目的は、マルチプロセッサシステムの計算処理能力と、マルチプロセッサとメモリとのデータ転送の処理能力の調整を行うことである。
【課題を解決するための手段】
【0009】
本発明の一形態では、マルチプロセッサシステムは、第1メモリと、第1メモリに接続され、第1メモリに記憶されたデータを用いて処理を実施する処理部とを有している。処理部は、第2メモリと、データおよび処理の結果である処理データの少なくとも一方を第1メモリと第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、第1メモリと第2メモリとの間でのデータ転送と処理とを切り替え可能に実施する第2プロセッサと、第2メモリに転送されたデータを用いて、処理を実施する第3プロセッサとを有している。
【発明の効果】
【0010】
マルチプロセッサシステムの計算処理の効率を向上させることができる。
【図面の簡単な説明】
【0011】
【図1】一実施形態におけるマルチプロセッサシステムの例を示している。
【図2】図1に示したマルチプロセッサシステムの動作の例を示している。
【図3】図1に示したマルチプロセッサシステムの動作の別の例を示している。
【図4】図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムの動作の例を示している。
【図5】図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムの動作の別の例を示している。
【図6】図1に示したプロセッサPU1の動作の例を示している。
【図7】図1に示したプロセッサPU2の動作の例を示している。
【図8】図1に示したプロセッサPU1、PU2以外のプロセッサPUの動作の例を示している。
【図9】別の実施形態におけるマルチプロセッサシステムの例を示している。
【図10】別の実施形態におけるマルチプロセッサシステムの動作の例を示している。
【図11】上述した実施形態のマルチプロセッサシステムが搭載されるシステムの例を示している。
【発明を実施するための形態】
【0012】
以下、実施形態を図面を用いて説明する。
【0013】
図1は、一実施形態におけるマルチプロセッサシステムPSYSの例を示している。なお、図中の破線は、データの流れの一例を示している。マルチプロセッサシステムPSYSは、外部メモリMEMと、外部メモリMEMに接続された処理部MPとを有している。外部メモリMEMは、例えば、DRAM(Dynamic RAM)等で形成されたメモリであり、コンピュータ等の外部装置とマルチプロセッサシステムPSYSとの間で転送されるデータを記憶する。本実施例では、外部メモリMEMの記憶容量は、後述する内部メモリIMEMの記憶容量より大きい。
【0014】
処理部MPは、外部メモリMEMに記憶されたデータを用いて計算処理を実施する。処理部MPは、内部メモリIMEMと、内部メモリIMEMに接続された複数のプロセッサPU(PU1、PU2、PU3、PU4、・・・)とを有している。内部メモリIMEMは、各プロセッサPUからアクセスされ、外部メモリMEMより高速に動作する。
【0015】
各プロセッサPUは、外部メモリMEMに接続され、例えば、外部メモリMEMに記憶されたプログラムに基づいて動作する。例えば、処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPUの1つ(図1では、プロセッサPU1)は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施する(図1(a、b))。例えば、処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPU1は、計算処理を実施せずに、外部メモリMEMおよび内部メモリIMEM間のデータ転送を繰り返し実施する。プロセッサPU1は、計算処理の入力データおよび出力データの少なくとも一方を外部メモリMEMおよび内部メモリIMEM間で転送するデータ転送を実施する。なお、例えば、入力データは、計算処理に用いられるデータであり、出力データは、計算処理の結果である。
【0016】
また、処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPUの1つ(図1では、プロセッサPU2)は、外部メモリMEMおよび内部メモリIMEM間のデータ転送(図1(c))と、計算処理とを切り替え可能に実施する。言い換えれば、処理部MPの計算処理能力と、処理部MPと外部メモリMEMとのデータ転送能力を調整するように、プロセッサPU2は、データ転送と計算処理とを切り替えて実施する。
【0017】
例えば、計算処理に必要な時間が、データ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、内部メモリIMEMにアクセスして(図1(d))、計算処理を実施する。また、例えば、計算処理に必要な時間が、データ転送に必要な時間に対して相対的に短いとき、プロセッサPU2は、プロセッサPU1の代わりに、外部メモリMEMから内部メモリIMEMにデータを転送する(図1(c))。
【0018】
処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPU1、PU2以外のプロセッサPU(図1では、PU3、PU4、・・・)は、内部メモリIMEMにアクセスして(図1(d))、計算処理を実施する。すなわち、プロセッサPU1、PU2以外のプロセッサPU(図1では、PU3、PU4、・・・)は、内部メモリIMEMに記憶された入力データを用いて、計算処理を実施する。プロセッサPU3等は、例えば、低速な外部メモリMEMにアクセスせずに計算処理を実施するため、計算処理を効率よく実施できる。なお、プロセッサPU1の処理をプロセッサPU1以外のいずれかのプロセッサPUが実施し、プロセッサPU2の処理をプロセッサPU2以外のいずれかのプロセッサPUが実施してもよい。また、処理部MP内のプロセッサPUの数は、4つ以上に限定されず、例えば、3つでもよい。
【0019】
図2は、図1に示したマルチプロセッサシステムPSYSの動作の例を示している。なお、図2は、外部メモリMEMに記憶されたデータを用いた計算処理を実施するときのプロセッサPU1、PU2、PU3、PU4の動作を示している。また、例えば、プロセッサPU1、PU2、PU3、PU4以外のプロセッサPUの動作は、プロセッサPU3と同じである。
【0020】
図中の符号Rは、外部メモリMEMからデータを読み出す処理が実施されていることを示している。符号Wは、外部メモリMEMにデータを書き込む処理が実施されていることを示している。符号rは、内部メモリIMEMからデータを読み出す処理が実施されていることを示している。符号wは、内部メモリIMEMにデータを書き込む処理が実施されていることを示している。符号CALは、計算処理が実施されていることを示している。
【0021】
また、図中の時間を示す矢印以外の実線の矢印は、計算処理の入力データIDATAの流れを示している。破線の矢印は、計算処理の結果である出力データODATAの流れを示している。また、太い矢印は、細い矢印に比べて低速でアクセスされることを示している。出力データODATAの符号の末尾の数字は、入力データIDATAの符号の末尾の数字に対応している。例えば、出力データODATA1は、入力データIDATA1を用いた計算処理の結果である。
【0022】
外部メモリMEMは、計算処理に用いられる入力データIDATAを予め記憶している。例えば、マルチプロセッサシステムPSYSを使用するコンピュータは、マルチプロセッサシステムPSYSに計算処理を実施させる前に、入力データIDATAをマルチプロセッサシステムPSYSの外部メモリMEMに転送する。
【0023】
先ず、プロセッサPU1は、入力データIDATA1を外部メモリMEMから読み込み(図2(a))、読み込んだ入力データIDATA1を内部メモリIMEMに書き込む(図2(b))。そして、プロセッサPU2、PU3、PU4は、入力データIDATA1を内部メモリIMEMから読み込み(図2(c))、入力データIDATA1を用いた計算処理CALを実施する。
【0024】
また、プロセッサPU1は、プロセッサPU2、PU3、PU4の計算処理CALの終了を待たずに、入力データIDATA1の次の入力データIDATA2を外部メモリMEMから読み込む(図2(d))。そして、プロセッサPU1は、読み込んだ入力データIDATA2を内部メモリIMEMに書き込む(図2(e))。このように、プロセッサPU1は、最初に、計算処理CALの2回分の入力データIDATA1、IDATA2を外部メモリMEMから内部メモリIMEMに転送する。
【0025】
入力データIDATA1を用いた計算処理CALが終了したとき、プロセッサPU2、PU3、PU4は、計算結果である出力データODATA1を内部メモリIMEMに書き込む(図2(f))。そして、プロセッサPU2、PU3、PU4は、入力データIDATA2を内部メモリIMEMから読み込み(図2(g))、入力データIDATA2を用いた計算処理CALを実施する。
【0026】
入力データIDATA2は、入力データIDATA1を用いた計算処理CALが終了する前に、プロセッサPU1により内部メモリIMEMに書き込まれている。これにより、プロセッサPU2、PU3、PU4は、出力データODATA1を内部メモリIMEMに書き込んだ直後に、入力データIDATA2を内部メモリIMEMから読み込むことができる。また、内部メモリIMEMは、外部メモリMEMに比べて、高速に動作する。したがって、この実施形態では、1回目の計算処理CALの終了から2回目の計算処理CALの開始までの間隔を短くできる。
【0027】
出力データODATA1が内部メモリIMEMに書き込まれたとき、プロセッサPU1は、出力データODATA1を内部メモリIMEMから読み込み(図2(h))、読み込んだ出力データODATA1を外部メモリMEMに書き込む(図2(i))。そして、プロセッサPU1は、入力データIDATA2の次の入力データIDATA3を外部メモリMEMから読み込み(図2(j))、読み込んだ入力データIDATA3を内部メモリIMEMに書き込む(図2(k))。
【0028】
例えば、プロセッサPU1は、プロセッサPU2、PU3、PU4による出力データODATA2の内部メモリIMEMへの書き込みが終了する前に、入力データIDATA3を内部メモリIMEMに書き込む。すなわち、プロセッサPU1は、プロセッサPU2、PU3、PU4が入力データODATA3の読み出し動作を実施する前に、入力データIDATA3を内部メモリIMEMに書き込む。
【0029】
このように、例えば、プロセッサPU1は、自身では計算処理を行わず、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送と、出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送とを繰り返し実施する。
【0030】
また、例えば、プロセッサPU2、PU3、PU4は、入力データIDATAが内部メモリIMEMに転送されるたびに、内部メモリIMEMに記憶された入力データIDATAを用いて、計算処理CALを実施する。プロセッサPU1が低速な外部メモリMEMと高速な内部メモリIMEMとの間のデータ転送を専門に実施するために、プロセッサPU2、PU3、PU4は、低速な外部メモリMEMにアクセスせずに計算処理CALを実施できる。
【0031】
図3は、図1に示したマルチプロセッサシステムPSYSの動作の別の例を示している。図中の矢印の意味は、上述した図2と同じである。図3に示したマルチプロセッサシステムPSYSの動作は、プロセッサPU1、PU2の動作を除いて、図2と同じである。
【0032】
例えば、プロセッサPU2は、プロセッサPU1の代わりに、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する(図3(a、b))。したがって、プロセッサPU1は、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送している期間では、入力データIDATAの読み込みを実施せずに、出力データODATAを内部メモリIMEMから外部メモリMEMに転送する(図3(c、d))。
【0033】
例えば、マルチプロセッサシステムPSYSは、プロセッサPU1による外部メモリMEMへの出力データODATAの書き込み処理と、プロセッサPU2による外部メモリMEMからの入力データIDATAの読み込み処理とを並列に実施する。これにより、この実施形態では、各プロセッサPUの計算処理CALの時間が短いときにも、計算処理CALに必要な入力データIDATAを内部メモリIMEMに予め書き込むことができる。
【0034】
例えば、入力データIDATA12は、入力データIDATA11を用いた計算処理CALの出力データODATA11が内部メモリIMEMに全て書き込まれる前に、プロセッサPU2により内部メモリIMEMに書き込まれる。したがって、この実施形態では、計算処理CALが終了してから次の計算処理CALを開始するまでの間隔を短くできる。
【0035】
図4は、図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムPSYSの動作の例を示している。なお、図4は、図2に示した動作から図3に示した動作に切り替わるときのプロセッサPU1、PU2、PU3、PU4の動作を示している。また、例えば、プロセッサPU1、PU2、PU3、PU4以外のプロセッサPUの動作は、プロセッサPU3と同じである。図中の二重線の矢印以外の矢印の意味は、上述した図2と同じである。なお、図中の二重線の矢印は、プロセッサPU2の処理が切り替わることを示している。また、括弧付きの符合PU2は、処理が切り替わった後のプロセッサPU2の動作を示している。
【0036】
プロセッサPU2、PU3、PU4は、例えば、出力データODATA2を内部メモリIMEMに書き込む(図4(a))。そして、プロセッサPU2、PU3、PU4は、出力データODATA2を内部メモリIMEMに書き込んだ後、入力データIDATA3を読み込むために内部メモリIMEMにアクセスする。このとき、入力データIDATA3が内部メモリIMEMに記憶されていないため、プロセッサPU2、PU3、PU4は、入力データIDATA3が内部メモリIMEMに書き込まれるまで待機する(図4(b))。
【0037】
プロセッサPU1は、入力データIDATA3を外部メモリMEMから内部メモリIMEMに転送する(図4(c、d))。入力データIDATA3が内部メモリIMEMに書き込まれたため、プロセッサPU2、PU3、PU4は、入力データIDATA3を内部メモリIMEMから読み込み(図4(e))、入力データIDATA3を用いた計算処理CALを実施する。そして、入力データIDATA3を用いた計算処理CALが終了したとき、プロセッサPU2、PU3、PU4は、出力データODATA3を内部メモリIMEMに書き込む(図4(f))。
【0038】
なお、プロセッサPU1は、入力データIDATA3を外部メモリMEMから内部メモリIMEMに転送した後、出力データODATA2を内部メモリIMEMから外部メモリMEMに転送する(図4(g、h))。そして、プロセッサPU1は、入力データIDATA4を外部メモリMEMから内部メモリIMEMに転送する(図4(i、j))。さらに、プロセッサPU1は、出力データODATA3を内部メモリIMEMから外部メモリMEMに転送する(図4(k、l))。
【0039】
ここで、例えば、プロセッサPU2は、入力データIDATA3を読み込むときに待ち状態が発生したため、出力データODATA3を内部メモリIMEMに書き込んだ後に実施する処理を、計算処理CALからデータ転送に切り替える(図4の二重線の矢印)。例えば、プロセッサPU2は、プロセッサPU1が出力データODATA3を内部メモリIMEMから読み込んだ後、入力データIDATA5を外部メモリMEMから内部メモリIMEMに転送する(図4(m、n))。このように、内部メモリIMEMからの入力データIDATAの読み込みで待ち状態が発生したとき、プロセッサPU2の処理は、計算処理CALからデータ転送に切り替わる。
【0040】
プロセッサPU3、PU4は、入力データIDATA4が内部メモリIMEMに書き込まれた後に、入力データIDATA4を内部メモリIMEMから読み込み(図4(o))、入力データIDATA4を用いた計算処理CALを実施する。なお、入力データIDATA4は、プロセッサPU2の処理がデータ転送に切り替わる前に、プロセッサPU1により外部メモリMEMから内部メモリIMEMに転送される。
【0041】
入力データIDATA4を用いた計算処理CALが終了したとき、プロセッサPU3、PU4は、出力データODATA4を内部メモリIMEMに書き込む(図4(p))。このとき、入力データIDATA5は、プロセッサPU2により内部メモリIMEMに既に書き込まれている。このため、プロセッサPU3、PU4は、出力データODATA4を内部メモリIMEMに書き込んだ後、入力データIDATA5が内部メモリIMEMに書き込まれるのを待つ状態は発生せず、入力データIDATA5を内部メモリIMEMから読み込むことができる(図4(q))。これにより、プロセッサPU3、PU4は、計算処理CALを効率よく実施できる。
【0042】
なお、プロセッサPU2が入力データIDATA5を外部メモリMEMから内部メモリIMEMに転送した後の各プロセッサPUの動作は、例えば、上述した図3と同じである。例えば、プロセッサPU1は、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送している期間では、出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送を繰り返し実施する。
【0043】
図5は、図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムPSYSの動作の別の例を示している。なお、図5は、図3に示した動作から図2に示した動作に切り替わるときのプロセッサPU1、PU2、PU3、PU4の動作を示している。また、例えば、プロセッサPU1、PU2、PU3、PU4以外のプロセッサPUの動作は、プロセッサPU3と同じである。図中の矢印の意味は、上述した図4と同じである。また、括弧付きの符合PU2は、処理が切り替わった後のプロセッサPU2の動作を示している。
【0044】
プロセッサPU1は、例えば、出力データODATA20を外部メモリMEMに書き込む(図5(a))。そして、例えば、プロセッサPU1による出力データODATA20の外部メモリMEMへの書き込みが開始されたとき、プロセッサPU2は、入力データIDATA22を外部メモリMEMから内部メモリIMEMに転送する(図5(b、c))。また、例えば、プロセッサPU3、PU4は、出力データODATA21を内部メモリIMEMに書き込む(図5(d))。
【0045】
出力データODATA21が内部メモリIMEMに書き込まれたとき、プロセッサPU1は、出力データODATA21を内部メモリIMEMから外部メモリMEMに転送する(図5(e、f))。ここで、例えば、プロセッサPU1による出力データODATA20の外部メモリMEMへの書き込みが終了したとき、プロセッサPU3、PU4による出力データODATA21の内部メモリIMEMへの書き込みは、終了していない。このため、プロセッサPU1が出力データODATA21を内部メモリIMEMから読み込むとき、待ち状態が発生している(図5(g))。
【0046】
例えば、プロセッサPU1の待機時間(待ち状態の時間)が予め設定された閾値時間T1より長いとき、プロセッサPU2の処理は、データ転送から計算処理CALに切り替わる(図5の二重線の矢印)。すなわち、計算処理CALの時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、計算処理CALを実施する。また、プロセッサPU1は、プロセッサPU2の処理がデータ転送から計算処理CALに切り替わるため、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を再開する。例えば、プロセッサPU1は、出力データODATA21を内部メモリIMEMから外部メモリMEMに転送した後、入力データIDATA23を外部メモリMEMから内部メモリIMEMに転送する(図5(h、i))。
【0047】
プロセッサPU3、PU4は、入力データIDATA22を内部メモリIMEMから読み込み(図5(j))、入力データIDATA22を用いた計算処理CALの結果である出力データODATA22を内部メモリIMEMに書き込む(図5(k))。そして、プロセッサPU2、PU3、PU4は、入力データIDATA23が内部メモリIMEMに書き込まれた後に、入力データIDATA23を内部メモリIMEMから読み込み(図5(l))、入力データIDATA23を用いた計算処理CALを実施する。
【0048】
このように、プロセッサPU1の待機時間が予め設定された閾値時間T1より長いとき、計算処理CALを実施するプロセッサPUにプロセッサPU2が加わるため、マルチプロセッサシステムPSYSは、計算処理CALを効率よく実施できる。すなわち、この実施形態では、計算処理CALの時間がデータ転送に必要な時間に対して相対的に長いとき、計算処理CALを実施するプロセッサPUの数が減ることを防止できる。このため、マルチプロセッサシステムPSYSは、計算処理CALを効率よく実施できる。
【0049】
出力データODATA22が内部メモリIMEMに書き込まれたとき、プロセッサPU1は、出力データODATA22を内部メモリIMEMから外部メモリMEMに転送する(図5(m、n))。そして、例えば、プロセッサPU1は、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送と、出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送とを繰り返し実施する。また、例えば、プロセッサPU2、PU3、PU4は、入力データIDATAが内部メモリIMEMに転送されるたびに、計算処理CALを実施する。
【0050】
図6は、図1に示したプロセッサPU1の動作の例を示している。処理S100−S126は、例えば、外部メモリMEMに記憶されたプログラムに基づいて実施される。なお、処理S100の前に、入力データIDATAは、外部メモリMEMに記憶されている。また、例えば、最後の入力データIDATAを読み込んだプロセッサPU(PU1あるいはPU2)は、最後の入力データIDATAを読み込んだことを示す最終フラグを外部メモリMEMに書き込む。なお、最終フラグ以外のフラグ(IDATA転送許可フラグ等)は、例えば、内部メモリIMEMに記憶される。例えば、各フラグの初期値は、“0”である。
【0051】
処理S100では、プロセッサPU1は、最初の入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する。処理S102では、プロセッサPU1は、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたか否かを判定する。例えば、プロセッサPU1は、最後の入力データIDATAを読み込んだことを示す最終フラグが外部メモリMEMに書き込まれているか否かを判定する。
【0052】
最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されているとき(処理S102のYes)、プロセッサPU1の動作は、処理S120に移る。一方、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されていないとき(処理S102のNo)、プロセッサPU1の動作は、処理S104に移る。
【0053】
処理S104では、プロセッサPU1は、外部メモリMEMおよび内部メモリIMEM間のデータ転送をプロセッサPU1のみが実施しているか否かを判定する。すなわち、プロセッサPU1は、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するか否かを判定する。例えば、プロセッサPU1は、プロセッサPU2が実施する処理を示すPU2データ転送フラグを参照することにより、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するか否かを判定する。
【0054】
ここで、例えば、プロセッサPU2の処理が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送のとき、PU2データ転送フラグは、“1”にセット(後述する図7の処理S218)される。また、例えば、プロセッサPU2の処理が計算処理のとき、PU2データ転送フラグは、“0”にクリア(図7の処理S228)される。
【0055】
外部メモリMEMおよび内部メモリIMEM間のデータ転送をプロセッサPU1のみが実施しているとき(処理S104のYes)、プロセッサPU1の動作は、処理S106に移る。すなわち、プロセッサPU2の処理が計算処理のとき、プロセッサPU1の動作は、処理S106に移る。一方、プロセッサPU2の処理が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送のとき(処理S104のNo)、プロセッサPU1の動作は、処理S108に移る。
【0056】
処理S106では、プロセッサPU1は、IDATA転送許可フラグを“0”にクリアし、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する。ここで、IDATA転送許可フラグは、プロセッサPU2が入力データIDATAを外部メモリMEMから読み込むタイミングを判定するために、プロセッサPU2に参照されるフラグである。例えば、IDATA転送許可フラグは、後述する図7の処理S222において、プロセッサPU2に参照される。
【0057】
処理S108では、プロセッサPU1は、評価値EV1を“0”にする。ここで、評価値EV1は、例えば、プロセッサPU2に参照される情報であり、内部メモリIMEMに記憶される。例えば、評価値EV1は、プロセッサPU2がデータ転送を継続するか否かを判定するために、図7の処理S226において、プロセッサPU2に参照される。
【0058】
処理S110では、プロセッサPU1は、出力データODATAを内部メモリIMEMから読み込む。処理S112では、プロセッサPU1は、出力データODATAの読み込みが成功したか否かを判定する。例えば、プロセッサPU1は、読み込み対象の出力データODATAが内部メモリIMEMに書き込まれる前の期間では、出力データODATAの読み込みを失敗する。
【0059】
出力データODATAの読み込みが失敗したとき(処理S112のNo)、プロセッサPU1は、処理S114において、評価値EV1を“1”増加する。そして、プロセッサPU1の動作は、処理S110に移る。このように、プロセッサPU1は、出力データODATAの読み込みが成功するまで、処理S110、S112、S114の動作を繰り返し実施する。
【0060】
一方、出力データODATAの読み込みが成功したとき(処理S112のYes)、プロセッサPU1は、処理S116において、評価値EV1を“1”減算し、IDATA転送許可フラグを“1”にセットする。なお、プロセッサPU1は、処理S116でIDATA転送許可フラグを“1”にセットする代わりに、処理S108でIDATA転送許可フラグを“1”にセットしてもよい。
【0061】
処理S118では、プロセッサPU1は、出力データODATAを外部メモリMEMに書き込む。そして、プロセッサPU1の動作は、処理S102に戻る。このように、プロセッサPU1は、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されるまで、処理S102−S118の動作を繰り返し実施する。
【0062】
なお、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたとき(処理S102のYes)、プロセッサPU1は、処理S120において、出力データODATAを内部メモリIMEMから読み込む。
【0063】
処理S122では、プロセッサPU1は、出力データODATAの読み込みが成功したか否かを判定する。出力データODATAの読み込みが失敗したとき(処理S122のNo)、プロセッサPU1の動作は、処理S120に戻る。一方、出力データODATAの読み込みが成功したとき(処理S122のYes)、プロセッサPU1は、処理S124において、計算処理の終了を示すデータ(例えば、“1”)に終了フラグをセットする。
【0064】
ここで、終了フラグは、例えば、外部メモリMEMに記憶された入力データIDATAを用いた計算処理が終了したか否かを判定するために、計算処理を実施するプロセッサPU(PU2、PU3、PU4等)に参照されるフラグである。例えば、プロセッサPU1は、計算処理を実施するプロセッサPUの入力データIDATAとして、終了フラグを内部メモリIMEMに書き込む。これにより、例えば、終了フラグは、プロセッサPU2、PU3等に参照される(後述する図7の処理S212、図8の処理S304)。
【0065】
処理S126では、プロセッサPU1は、出力データODATAを外部メモリMEMに書き込む。これにより、プロセッサPU1の処理は、終了する。なお、プロセッサPU1の動作は、この例に限定されない。プロセッサPU1は、プロセッサPU2の処理に応じて、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を実施するか否かを切り替えればよい。
【0066】
図7は、図1に示したプロセッサPU2の動作の例を示している。処理S200−S228は、例えば、外部メモリMEMに記憶されたプログラムに基づいて実施される。例えば、PU2データ転送フラグは、内部メモリIMEMに記憶される。なお、PU2データ転送フラグの初期値は、例えば、“0”である。
【0067】
処理S200では、プロセッサPU2は、最初の入力データIDATAを内部メモリIMEMから読み込み、読み込んだ入力データIDATAを用いて、計算処理を実施する。そして、プロセッサPU2は、計算処理の結果である出力データODATAを内部メモリIMEMに書き込む。
【0068】
処理S202では、プロセッサPU2は、評価値EV2を“0”にする。ここで、評価値EV2は、例えば、入力データIDATAの読み込みが失敗したか否かを判定するための情報であり、内部メモリIMEMに記憶される。処理S204では、プロセッサPU2は、入力データIDATAを内部メモリIMEMから読み込む。
【0069】
処理S206では、プロセッサPU2は、入力データIDATAの読み込みが成功したか否かを判定する。例えば、プロセッサPU2は、読み込み対象の入力データIDATAが内部メモリIMEMに書き込まれる前の期間では、入力データIDATAの読み込みを失敗する。
【0070】
入力データIDATAの読み込みが失敗したとき(処理S206のNo)、プロセッサPU2は、処理S208において、評価値EV2を“1”増加する。そして、プロセッサPU2の動作は、処理S204に移る。このように、プロセッサPU2は、入力データIDATAの読み込みが成功するまで、処理S204、S206、S208の動作を繰り返し実施する。一方、入力データIDATAの読み込みが成功したとき(処理S206のYes)、プロセッサPU2は、処理S210において、評価値EV2を“1”減算する。
【0071】
処理S212では、プロセッサPU2は、読み込んだ入力データIDATAが終了フラグか否かを判定する。終了フラグは、図6で説明したように、全ての計算処理が終了したことを示している。したがって、読み込んだ入力データIDATAが終了フラグのとき(処理S212のYes)、プロセッサPU2の処理は、終了する。一方、読み込んだ入力データIDATAが終了フラグでないとき(処理S212のNo)、プロセッサPU2の動作は、処理S214に移る。
【0072】
処理S214では、プロセッサPU2は、読み込んだ入力データIDATAを用いて、計算処理を実施する。そして、プロセッサPU2は、計算処理の結果である出力データODATAを内部メモリIMEMに書き込む。処理S216では、プロセッサPU2は、評価値EV2が“0”以上か否かを判定する。すなわち、プロセッサPU2は、入力データIDATAの読み込みに1回以上失敗したか否かを判定する。
【0073】
なお、処理S216の判定の基準として、“0”以上の値が予め設定されてもよい。このときの処理S216では、例えば、プロセッサPU2は、評価値EV2が予め設定された値以上か否かを判定する。すなわち、プロセッサPU2は、入力データIDATAの読み込みに予め設定された回数以上失敗したか否かを判定してもよい。
【0074】
入力データIDATAの読み込みに1回も失敗していないとき(処理S216のNo)、プロセッサPU2の動作は、処理S202に戻る。一方、入力データIDATAの読み込みに1回以上失敗したとき(処理S216のYes)、プロセッサPU2の動作は、処理S218に移る。このように、プロセッサPU2は、入力データIDATAを読み込むときに待ち状態が発生しない期間では、計算処理(処理S202−S216の動作)を繰り返し実施する。すなわち、プロセッサPU2は、入力データIDATAを読み込むときに待ち状態が発生するまで、計算処理(処理S202−S216の動作)を繰り返し実施する。
【0075】
処理S218では、プロセッサPU2は、PU2データ転送フラグを“1”にセットする。これにより、プロセッサPU1は、図6に示した処理S104において、プロセッサPU2の処理が計算処理からデータ転送(入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送)に切り替わったことを検出できる。
【0076】
処理S220では、プロセッサPU2は、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたか否かを判定する。例えば、プロセッサPU2は、最後の入力データIDATAを読み込んだことを示す最終フラグが外部メモリMEMに書き込まれているか否かを判定する。
【0077】
最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されているとき(処理S220のYes)、プロセッサPU2の処理は、終了する。なお、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されているとき、プロセッサPU2の動作は、処理S202に移ってもよい。一方、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されていないとき(処理S220のNo)、プロセッサPU2の動作は、処理S222に移る。
【0078】
処理S222では、プロセッサPU2は、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が許可されているか否かを判定する。例えば、IDATA転送許可フラグが“0”のとき、プロセッサPU2は、入力データIDATAの転送が許可されていないと判定する。また、例えば、IDATA転送許可フラグが“1”のとき、プロセッサPU2は、入力データIDATAの転送が許可されていると判定する。
【0079】
外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が許可されていないとき(処理S222のNo)、プロセッサPU2の動作は、処理S222に戻る。すなわち、プロセッサPU2は、入力データIDATAの転送が許可されるまで待機する。これにより、この実施形態では、プロセッサPU3等の計算処理に対して、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が先行し過ぎることを防止できる。
【0080】
一方、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が許可されているとき(処理S222のYes)、プロセッサPU2の動作は、処理S224に移る。処理S224では、プロセッサPU2は、IDATA転送許可フラグを“0”にクリアし、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する。
【0081】
処理S226では、プロセッサPU2は、評価値EV1が閾値TH以上か否かを判定する。ここで、閾値THは、例えば、アプリケーションの実行時にユーザ等により設定される“0”以上の値である。例えば、閾値THは、内部メモリIMEMに記憶される。すなわち、プロセッサPU2は、プロセッサPU1による出力データODATAの読み込みが閾値THの回数以上失敗したか否かを判定する。
【0082】
出力データODATAの読み込みの失敗回数が閾値THより少ないとき(処理S226のNo)、プロセッサPU2の動作は、処理S220に戻る。すなわち、プロセッサPU1の待機時間(上述した図5(g)等)が予め設定された閾値時間より短いとき、例えば、プロセッサPU2は、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送を継続して実施する。
【0083】
一方、出力データODATAの読み込みの失敗回数が閾値TH以上のとき(処理S226のYes)、プロセッサPU2は、処理S228において、PU2データ転送フラグを“0”にクリアする。そして、プロセッサPU2の動作は、処理S202の処理に戻る。すなわち、プロセッサPU1の待機時間が予め設定された閾値時間より長いとき、例えば、プロセッサPU2の処理は、データ転送から計算処理に切り替わる。
【0084】
このように、計算処理の時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、計算処理を実施する。そして、計算処理の時間がデータ転送に必要な時間に対して相対的に短いとき、プロセッサPU2は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施する。これにより、マルチプロセッサシステムPSYSは、計算処理を効率よく実施できる。なお、プロセッサPU2の動作は、この例に限定されない。プロセッサPU2は、プロセッサPU1のデータ転送の時間と計算処理の時間とに応じて、外部メモリMEMおよび内部メモリIMEM間のデータ転送と計算処理とを切り替えて実施できればよい。
【0085】
図8は、図1に示したプロセッサPU1、PU2以外のプロセッサPUの動作の例を示している。処理S300−S306は、例えば、外部メモリMEMに記憶されたプログラムに基づいて実施される。なお、プロセッサPU1、PU2以外のプロセッサPUの動作は、プロセッサPU3と同じである。このため、プロセッサPU3の動作について説明する。
【0086】
処理S300では、プロセッサPU3は、入力データIDATAを内部メモリIMEMから読み込む。処理S302では、プロセッサPU3は、入力データIDATAの読み込みが成功したか否かを判定する。入力データIDATAの読み込みが失敗したとき(処理S302のNo)、プロセッサPU3の動作は、処理S300に戻る。すなわち、プロセッサPU3は、入力データIDATAの読み込みが成功するまで、待機する。
【0087】
一方、入力データIDATAの読み込みが成功したとき(処理S302のYes)、プロセッサPU3は、処理S304において、読み込んだ入力データIDATAが終了フラグか否かを判定する。読み込んだ入力データIDATAが終了フラグのとき(処理S304のYes)、プロセッサPU3の処理は、終了する。一方、読み込んだ入力データIDATAが終了フラグでないとき(処理S304のNo)、プロセッサPU3の動作は、処理S306に移る。
【0088】
処理S306では、プロセッサPU3は、読み込んだ入力データIDATAを用いて、計算処理を実施し、計算処理の結果である出力データODATAを内部メモリIMEMに書き込む。そして、プロセッサPU3の動作は、処理S300に戻る。このように、例えば、プロセッサPU3は、終了フラグを読み込むまで、計算処理を繰り返し実施する。
【0089】
以上、この実施形態では、プロセッサPU1は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施し、プロセッサPU2は、計算処理の時間に応じて、計算処理とデータ転送とを切り替えて実施する。例えば、計算処理の時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、計算処理を実施する。そして、計算処理の時間がデータ転送に必要な時間に対して相対的に短いとき、プロセッサPU2は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施する。また、プロセッサPU1、PU2以外のプロセッサは、低速な外部メモリMEMにアクセスせずに計算処理を実施する。この結果、この実施形態では、マルチプロセッサシステムPSYSの計算処理の効率を向上させることができる。
【0090】
図9は、別の実施形態におけるマルチプロセッサシステムPSYSの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムPSYSは、例えば、複数の処理部MPを有している。その他の構成は、上述した実施形態と同じである。なお、各処理部MPのプロセッサPUの動作は、上述した実施形態と同じである。
【0091】
例えば、図6で説明したように、最後の入力データIDATAを読み込んだプロセッサPU(PU1あるいはPU2)は、最後の入力データIDATAを読み込んだことを示す最終フラグを外部メモリMEMに書き込む。このため、各処理部MPのプロセッサPU1、PU2は、外部メモリMEMに記憶された最終フラグを参照することにより、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたか否かを判定できる。換言すれば、処理部MPが1つの構成では、最終フラグは、内部メモリIMEMに記憶されてもよい。
【0092】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、複数の処理部MPが計算処理を並列に実施できるため、マルチプロセッサシステムPSYSの計算処理の効率をさらに向上させることができる。
【0093】
図10は、別の実施形態におけるマルチプロセッサシステムPSYSの動作の例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムPSYSは、プロセッサPU1、PU2の動作を除いて、上述した実施形態と同じである。なお、図中の矢印の意味は、上述した図4と同じである。また、括弧付きの符合PU2は、処理が切り替わった後のプロセッサPU2の動作を示している。
【0094】
例えば、プロセッサPU2は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施するときの動作を除いて、上述した実施形態と同じである。例えば、計算処理CALで待ち状態が発生したとき、プロセッサPU2は、図4に示した入力データIDATAの外部メモリMEMから内部メモリIMEMへの転送の代わりに、出力データODATAの内部メモリIMEMから外部メモリMEMへの転送を実施する(図10の二重線の矢印)。
【0095】
すなわち、プロセッサPU2は、計算処理CALで待ち状態が発生したときに実施するデータ転送として、内部メモリIMEMから外部メモリMEMに出力データODATAを転送するデータ転送を実施する。したがって、図6に示した評価値EV1の更新およびIDATA転送許可フラグのセットは、プロセッサPU2により実施される。
【0096】
また、例えば、プロセッサPU2の処理が出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送のとき、プロセッサPU1は、IDATA転送許可フラグを参照し、入力データIDATAの転送が許可されるまで待機する。そして、例えば、IDATA転送許可フラグが“1”のとき、プロセッサPU1は、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を開始する。このように、例えば、プロセッサPU2の処理が計算処理CALでないとき、プロセッサPU1は、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を繰り返し実施する。プロセッサPU1のその他の動作は、上述した実施形態と同じである。
【0097】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【0098】
図11は、上述した実施形態のマルチプロセッサシステムPSYSが搭載されるシステムSYSの例を示している。システムSYSは、例えば、マルチプロセッサシステムPSYSと、マルチプロセッサシステムPSYSに接続されたコンピュータCSYSを有している。コンピュータCSYSは、例えば、システムSYSの動作を制御する中央処理装置CPUと、中央処理装置CPUに接続されたハードディスクHDDと、中央処理装置CPUに接続されたメインメモリMMとを有している。例えば、中央処理装置CPUは、メインメモリMMに記憶された入力データをマルチプロセッサシステムPSYSの外部メモリMEMに転送する。
【0099】
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
第1メモリと、
前記第1メモリに接続され、前記第1メモリに記憶されたデータを用いて処理を実施する処理部とを備え、
前記処理部は、
第2メモリと、
前記データおよび前記処理の結果である処理データの少なくとも一方を前記第1メモリと前記第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、
前記第1メモリと前記第2メモリとの間でのデータ転送と前記処理とを切り替え可能に実施する第2プロセッサと、
前記第2メモリに転送された前記データを用いて、前記処理を実施する第3プロセッサと
を備えていることを特徴とするマルチプロセッサシステム。
(付記2)
前記第1プロセッサは、前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データを前記第1メモリから前記第2メモリに転送した後、前記処理の最初の前記処理データを前記第2メモリから前記第1メモリに転送する前に、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする付記1記載のマルチプロセッサシステム。
(付記3)
前記第2プロセッサは、連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、実施する処理を前記処理から前記データ転送に切り替えること
を特徴とする付記1または付記2記載のマルチプロセッサシステム。
(付記4)
前記第2プロセッサは、前記データ転送として、前記第1メモリから前記第2メモリに前記データを転送し、
前記第1プロセッサは、前記第2プロセッサが前記データ転送を実施するとき、前記第2メモリから前記第1メモリに前記処理データを転送すること
を特徴とする付記3記載のマルチプロセッサシステム。
(付記5)
前記第2プロセッサは、前記データ転送として、前記第2メモリから前記第1メモリに前記処理データを転送し、
前記第1プロセッサは、前記第2プロセッサが前記データ転送を実施するとき、前記第1メモリから前記第2メモリに前記データを転送すること
を特徴とする付記3記載のマルチプロセッサシステム。
(付記6)
前記第2プロセッサは、前記第1プロセッサが前記第2メモリから前記処理データを読み出すときの待ち時間が予め設定された閾値時間より長いとき、実施する処理を前記データ転送から前記処理に切り替えること
を特徴とする付記3記載のマルチプロセッサシステム。
(付記7)
第1メモリと、前記第1メモリに接続され、第2メモリおよび複数のプロセッサを含む処理部とを備えたマルチプロセッサシステムに、前記第1メモリに記憶されたデータを用いて処理を実行させるマルチプロセッサシステムのプログラムにおいて、
前記複数のプロセッサの1つである第1プロセッサが、前記データを前記第1メモリから前記第2メモリに転送し、
前記複数のプロセッサの1つである第2プロセッサおよび第3プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第2メモリに格納し、
前記第1プロセッサが、前記第2メモリにアクセスし、格納された前記処理データを前記第1メモリに転送し、
前記第2プロセッサおよび第3プロセッサが前記処理データを前記第2メモリに格納するタイミングが、前記第1プロセッサが前記第2メモリに前記アクセスするタイミングよりも早い場合には、前記第2プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムのプログラム。
(付記8)
第1メモリと、前記第1メモリに接続され、第2メモリおよび複数のプロセッサを含む処理部とを備え、前記第1メモリに記憶されたデータを用いて処理を実施するマルチプロセッサシステムの動作方法において、
前記複数のプロセッサの1つである第1プロセッサが、前記データを前記第1メモリから前記第2メモリに転送し、
前記複数のプロセッサの1つである第2プロセッサおよび第3プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第2メモリに格納し、
前記第1プロセッサが、前記第2メモリにアクセスし、格納された前記処理データを前記第1メモリに転送し、
前記第2プロセッサおよび第3プロセッサが前記処理データを前記第2メモリに格納するタイミングが、前記第1プロセッサが前記第2メモリに前記アクセスするタイミングよりも早い場合には、前記第2プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムの動作方法。
(付記9)
前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データが前記第1メモリから前記第2メモリに転送された後、前記処理の最初の前記処理データが前記第2メモリから前記第1メモリに転送される前に、前記第1プロセッサが、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする付記8記載のマルチプロセッサシステムの動作方法。
(付記10)
連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、前記第2プロセッサに実施させる処理を前記処理から前記転送に切り替えること
を特徴とする付記8または付記9記載のマルチプロセッサシステムの動作方法。
【0100】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0101】
CPU‥中央処理装置;CSYS‥コンピュータ;HDD‥ハードディスク;IMEM、MEM、MM‥メモリ;MP‥処理部;PSYS‥マルチプロセッサシステム;PU‥プロセッサ
【技術分野】
【0001】
本発明は、マルチプロセッサシステムおよびマルチプロセッサシステムのプログラムに関する。
【背景技術】
【0002】
高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが用いられている(例えば、特許文献1−4参照。)。例えば、コンピュータの処理をサポートするアクセラレータ等のマルチプロセッサシステムは、マルチプロセッサシステムおよびコンピュータ間で転送されるデータを記憶するメモリを有している。一般に、この種のメモリには、記憶容量の大きい低速なメモリが使用される。
【0003】
各プロセッサは、例えば、コンピュータからマルチプロセッサシステムのメモリに転送された入力データを用いて計算処理を実施する。そして、各プロセッサは、計算処理の結果である出力データをメモリに転送する。このように、各プロセッサは、計算処理を実施するたびに、低速なメモリにアクセスする。
【0004】
また、記憶容量の大きな大容量メモリおよび大容量メモリより高速なアクセスが可能な高速メモリを有するマルチプロセッサシステムでは、各プロセッサは、高速メモリにアクセスして、計算処理を実施する。なお、一般に、高速メモリの記憶容量は、大容量メモリの記憶容量より小さい。また、この種のマルチプロセッサシステムでは、高速メモリとコンピュータとの間でデータ転送を直接実施せず、各プロセッサの計算処理に必要な入力データは、大容量メモリに一旦記憶される。
【0005】
例えば、各プロセッサは、大容量メモリに記憶された入力データを高速メモリに転送し、高速メモリに記憶された入力データを用いて計算処理を実施する。そして、各プロセッサは、計算処理の結果である出力データを高速メモリに一旦格納し、高速メモリに記憶された出力データを大容量メモリに転送する。
【0006】
各プロセッサは、上述したように、計算処理を実施するたびに、低速な大容量メモリにアクセスする。大容量メモリへのアクセス回数が増加すると、メモリアクセスの時間が増加する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開昭56−164464号公報
【特許文献2】特開昭63−156268号公報
【特許文献3】特開平1−134657号公報
【特許文献4】特開平2−184958号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目的は、マルチプロセッサシステムの計算処理能力と、マルチプロセッサとメモリとのデータ転送の処理能力の調整を行うことである。
【課題を解決するための手段】
【0009】
本発明の一形態では、マルチプロセッサシステムは、第1メモリと、第1メモリに接続され、第1メモリに記憶されたデータを用いて処理を実施する処理部とを有している。処理部は、第2メモリと、データおよび処理の結果である処理データの少なくとも一方を第1メモリと第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、第1メモリと第2メモリとの間でのデータ転送と処理とを切り替え可能に実施する第2プロセッサと、第2メモリに転送されたデータを用いて、処理を実施する第3プロセッサとを有している。
【発明の効果】
【0010】
マルチプロセッサシステムの計算処理の効率を向上させることができる。
【図面の簡単な説明】
【0011】
【図1】一実施形態におけるマルチプロセッサシステムの例を示している。
【図2】図1に示したマルチプロセッサシステムの動作の例を示している。
【図3】図1に示したマルチプロセッサシステムの動作の別の例を示している。
【図4】図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムの動作の例を示している。
【図5】図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムの動作の別の例を示している。
【図6】図1に示したプロセッサPU1の動作の例を示している。
【図7】図1に示したプロセッサPU2の動作の例を示している。
【図8】図1に示したプロセッサPU1、PU2以外のプロセッサPUの動作の例を示している。
【図9】別の実施形態におけるマルチプロセッサシステムの例を示している。
【図10】別の実施形態におけるマルチプロセッサシステムの動作の例を示している。
【図11】上述した実施形態のマルチプロセッサシステムが搭載されるシステムの例を示している。
【発明を実施するための形態】
【0012】
以下、実施形態を図面を用いて説明する。
【0013】
図1は、一実施形態におけるマルチプロセッサシステムPSYSの例を示している。なお、図中の破線は、データの流れの一例を示している。マルチプロセッサシステムPSYSは、外部メモリMEMと、外部メモリMEMに接続された処理部MPとを有している。外部メモリMEMは、例えば、DRAM(Dynamic RAM)等で形成されたメモリであり、コンピュータ等の外部装置とマルチプロセッサシステムPSYSとの間で転送されるデータを記憶する。本実施例では、外部メモリMEMの記憶容量は、後述する内部メモリIMEMの記憶容量より大きい。
【0014】
処理部MPは、外部メモリMEMに記憶されたデータを用いて計算処理を実施する。処理部MPは、内部メモリIMEMと、内部メモリIMEMに接続された複数のプロセッサPU(PU1、PU2、PU3、PU4、・・・)とを有している。内部メモリIMEMは、各プロセッサPUからアクセスされ、外部メモリMEMより高速に動作する。
【0015】
各プロセッサPUは、外部メモリMEMに接続され、例えば、外部メモリMEMに記憶されたプログラムに基づいて動作する。例えば、処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPUの1つ(図1では、プロセッサPU1)は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施する(図1(a、b))。例えば、処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPU1は、計算処理を実施せずに、外部メモリMEMおよび内部メモリIMEM間のデータ転送を繰り返し実施する。プロセッサPU1は、計算処理の入力データおよび出力データの少なくとも一方を外部メモリMEMおよび内部メモリIMEM間で転送するデータ転送を実施する。なお、例えば、入力データは、計算処理に用いられるデータであり、出力データは、計算処理の結果である。
【0016】
また、処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPUの1つ(図1では、プロセッサPU2)は、外部メモリMEMおよび内部メモリIMEM間のデータ転送(図1(c))と、計算処理とを切り替え可能に実施する。言い換えれば、処理部MPの計算処理能力と、処理部MPと外部メモリMEMとのデータ転送能力を調整するように、プロセッサPU2は、データ転送と計算処理とを切り替えて実施する。
【0017】
例えば、計算処理に必要な時間が、データ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、内部メモリIMEMにアクセスして(図1(d))、計算処理を実施する。また、例えば、計算処理に必要な時間が、データ転送に必要な時間に対して相対的に短いとき、プロセッサPU2は、プロセッサPU1の代わりに、外部メモリMEMから内部メモリIMEMにデータを転送する(図1(c))。
【0018】
処理部MPが外部メモリMEMに記憶されたデータを用いた計算処理を実施するとき、プロセッサPU1、PU2以外のプロセッサPU(図1では、PU3、PU4、・・・)は、内部メモリIMEMにアクセスして(図1(d))、計算処理を実施する。すなわち、プロセッサPU1、PU2以外のプロセッサPU(図1では、PU3、PU4、・・・)は、内部メモリIMEMに記憶された入力データを用いて、計算処理を実施する。プロセッサPU3等は、例えば、低速な外部メモリMEMにアクセスせずに計算処理を実施するため、計算処理を効率よく実施できる。なお、プロセッサPU1の処理をプロセッサPU1以外のいずれかのプロセッサPUが実施し、プロセッサPU2の処理をプロセッサPU2以外のいずれかのプロセッサPUが実施してもよい。また、処理部MP内のプロセッサPUの数は、4つ以上に限定されず、例えば、3つでもよい。
【0019】
図2は、図1に示したマルチプロセッサシステムPSYSの動作の例を示している。なお、図2は、外部メモリMEMに記憶されたデータを用いた計算処理を実施するときのプロセッサPU1、PU2、PU3、PU4の動作を示している。また、例えば、プロセッサPU1、PU2、PU3、PU4以外のプロセッサPUの動作は、プロセッサPU3と同じである。
【0020】
図中の符号Rは、外部メモリMEMからデータを読み出す処理が実施されていることを示している。符号Wは、外部メモリMEMにデータを書き込む処理が実施されていることを示している。符号rは、内部メモリIMEMからデータを読み出す処理が実施されていることを示している。符号wは、内部メモリIMEMにデータを書き込む処理が実施されていることを示している。符号CALは、計算処理が実施されていることを示している。
【0021】
また、図中の時間を示す矢印以外の実線の矢印は、計算処理の入力データIDATAの流れを示している。破線の矢印は、計算処理の結果である出力データODATAの流れを示している。また、太い矢印は、細い矢印に比べて低速でアクセスされることを示している。出力データODATAの符号の末尾の数字は、入力データIDATAの符号の末尾の数字に対応している。例えば、出力データODATA1は、入力データIDATA1を用いた計算処理の結果である。
【0022】
外部メモリMEMは、計算処理に用いられる入力データIDATAを予め記憶している。例えば、マルチプロセッサシステムPSYSを使用するコンピュータは、マルチプロセッサシステムPSYSに計算処理を実施させる前に、入力データIDATAをマルチプロセッサシステムPSYSの外部メモリMEMに転送する。
【0023】
先ず、プロセッサPU1は、入力データIDATA1を外部メモリMEMから読み込み(図2(a))、読み込んだ入力データIDATA1を内部メモリIMEMに書き込む(図2(b))。そして、プロセッサPU2、PU3、PU4は、入力データIDATA1を内部メモリIMEMから読み込み(図2(c))、入力データIDATA1を用いた計算処理CALを実施する。
【0024】
また、プロセッサPU1は、プロセッサPU2、PU3、PU4の計算処理CALの終了を待たずに、入力データIDATA1の次の入力データIDATA2を外部メモリMEMから読み込む(図2(d))。そして、プロセッサPU1は、読み込んだ入力データIDATA2を内部メモリIMEMに書き込む(図2(e))。このように、プロセッサPU1は、最初に、計算処理CALの2回分の入力データIDATA1、IDATA2を外部メモリMEMから内部メモリIMEMに転送する。
【0025】
入力データIDATA1を用いた計算処理CALが終了したとき、プロセッサPU2、PU3、PU4は、計算結果である出力データODATA1を内部メモリIMEMに書き込む(図2(f))。そして、プロセッサPU2、PU3、PU4は、入力データIDATA2を内部メモリIMEMから読み込み(図2(g))、入力データIDATA2を用いた計算処理CALを実施する。
【0026】
入力データIDATA2は、入力データIDATA1を用いた計算処理CALが終了する前に、プロセッサPU1により内部メモリIMEMに書き込まれている。これにより、プロセッサPU2、PU3、PU4は、出力データODATA1を内部メモリIMEMに書き込んだ直後に、入力データIDATA2を内部メモリIMEMから読み込むことができる。また、内部メモリIMEMは、外部メモリMEMに比べて、高速に動作する。したがって、この実施形態では、1回目の計算処理CALの終了から2回目の計算処理CALの開始までの間隔を短くできる。
【0027】
出力データODATA1が内部メモリIMEMに書き込まれたとき、プロセッサPU1は、出力データODATA1を内部メモリIMEMから読み込み(図2(h))、読み込んだ出力データODATA1を外部メモリMEMに書き込む(図2(i))。そして、プロセッサPU1は、入力データIDATA2の次の入力データIDATA3を外部メモリMEMから読み込み(図2(j))、読み込んだ入力データIDATA3を内部メモリIMEMに書き込む(図2(k))。
【0028】
例えば、プロセッサPU1は、プロセッサPU2、PU3、PU4による出力データODATA2の内部メモリIMEMへの書き込みが終了する前に、入力データIDATA3を内部メモリIMEMに書き込む。すなわち、プロセッサPU1は、プロセッサPU2、PU3、PU4が入力データODATA3の読み出し動作を実施する前に、入力データIDATA3を内部メモリIMEMに書き込む。
【0029】
このように、例えば、プロセッサPU1は、自身では計算処理を行わず、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送と、出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送とを繰り返し実施する。
【0030】
また、例えば、プロセッサPU2、PU3、PU4は、入力データIDATAが内部メモリIMEMに転送されるたびに、内部メモリIMEMに記憶された入力データIDATAを用いて、計算処理CALを実施する。プロセッサPU1が低速な外部メモリMEMと高速な内部メモリIMEMとの間のデータ転送を専門に実施するために、プロセッサPU2、PU3、PU4は、低速な外部メモリMEMにアクセスせずに計算処理CALを実施できる。
【0031】
図3は、図1に示したマルチプロセッサシステムPSYSの動作の別の例を示している。図中の矢印の意味は、上述した図2と同じである。図3に示したマルチプロセッサシステムPSYSの動作は、プロセッサPU1、PU2の動作を除いて、図2と同じである。
【0032】
例えば、プロセッサPU2は、プロセッサPU1の代わりに、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する(図3(a、b))。したがって、プロセッサPU1は、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送している期間では、入力データIDATAの読み込みを実施せずに、出力データODATAを内部メモリIMEMから外部メモリMEMに転送する(図3(c、d))。
【0033】
例えば、マルチプロセッサシステムPSYSは、プロセッサPU1による外部メモリMEMへの出力データODATAの書き込み処理と、プロセッサPU2による外部メモリMEMからの入力データIDATAの読み込み処理とを並列に実施する。これにより、この実施形態では、各プロセッサPUの計算処理CALの時間が短いときにも、計算処理CALに必要な入力データIDATAを内部メモリIMEMに予め書き込むことができる。
【0034】
例えば、入力データIDATA12は、入力データIDATA11を用いた計算処理CALの出力データODATA11が内部メモリIMEMに全て書き込まれる前に、プロセッサPU2により内部メモリIMEMに書き込まれる。したがって、この実施形態では、計算処理CALが終了してから次の計算処理CALを開始するまでの間隔を短くできる。
【0035】
図4は、図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムPSYSの動作の例を示している。なお、図4は、図2に示した動作から図3に示した動作に切り替わるときのプロセッサPU1、PU2、PU3、PU4の動作を示している。また、例えば、プロセッサPU1、PU2、PU3、PU4以外のプロセッサPUの動作は、プロセッサPU3と同じである。図中の二重線の矢印以外の矢印の意味は、上述した図2と同じである。なお、図中の二重線の矢印は、プロセッサPU2の処理が切り替わることを示している。また、括弧付きの符合PU2は、処理が切り替わった後のプロセッサPU2の動作を示している。
【0036】
プロセッサPU2、PU3、PU4は、例えば、出力データODATA2を内部メモリIMEMに書き込む(図4(a))。そして、プロセッサPU2、PU3、PU4は、出力データODATA2を内部メモリIMEMに書き込んだ後、入力データIDATA3を読み込むために内部メモリIMEMにアクセスする。このとき、入力データIDATA3が内部メモリIMEMに記憶されていないため、プロセッサPU2、PU3、PU4は、入力データIDATA3が内部メモリIMEMに書き込まれるまで待機する(図4(b))。
【0037】
プロセッサPU1は、入力データIDATA3を外部メモリMEMから内部メモリIMEMに転送する(図4(c、d))。入力データIDATA3が内部メモリIMEMに書き込まれたため、プロセッサPU2、PU3、PU4は、入力データIDATA3を内部メモリIMEMから読み込み(図4(e))、入力データIDATA3を用いた計算処理CALを実施する。そして、入力データIDATA3を用いた計算処理CALが終了したとき、プロセッサPU2、PU3、PU4は、出力データODATA3を内部メモリIMEMに書き込む(図4(f))。
【0038】
なお、プロセッサPU1は、入力データIDATA3を外部メモリMEMから内部メモリIMEMに転送した後、出力データODATA2を内部メモリIMEMから外部メモリMEMに転送する(図4(g、h))。そして、プロセッサPU1は、入力データIDATA4を外部メモリMEMから内部メモリIMEMに転送する(図4(i、j))。さらに、プロセッサPU1は、出力データODATA3を内部メモリIMEMから外部メモリMEMに転送する(図4(k、l))。
【0039】
ここで、例えば、プロセッサPU2は、入力データIDATA3を読み込むときに待ち状態が発生したため、出力データODATA3を内部メモリIMEMに書き込んだ後に実施する処理を、計算処理CALからデータ転送に切り替える(図4の二重線の矢印)。例えば、プロセッサPU2は、プロセッサPU1が出力データODATA3を内部メモリIMEMから読み込んだ後、入力データIDATA5を外部メモリMEMから内部メモリIMEMに転送する(図4(m、n))。このように、内部メモリIMEMからの入力データIDATAの読み込みで待ち状態が発生したとき、プロセッサPU2の処理は、計算処理CALからデータ転送に切り替わる。
【0040】
プロセッサPU3、PU4は、入力データIDATA4が内部メモリIMEMに書き込まれた後に、入力データIDATA4を内部メモリIMEMから読み込み(図4(o))、入力データIDATA4を用いた計算処理CALを実施する。なお、入力データIDATA4は、プロセッサPU2の処理がデータ転送に切り替わる前に、プロセッサPU1により外部メモリMEMから内部メモリIMEMに転送される。
【0041】
入力データIDATA4を用いた計算処理CALが終了したとき、プロセッサPU3、PU4は、出力データODATA4を内部メモリIMEMに書き込む(図4(p))。このとき、入力データIDATA5は、プロセッサPU2により内部メモリIMEMに既に書き込まれている。このため、プロセッサPU3、PU4は、出力データODATA4を内部メモリIMEMに書き込んだ後、入力データIDATA5が内部メモリIMEMに書き込まれるのを待つ状態は発生せず、入力データIDATA5を内部メモリIMEMから読み込むことができる(図4(q))。これにより、プロセッサPU3、PU4は、計算処理CALを効率よく実施できる。
【0042】
なお、プロセッサPU2が入力データIDATA5を外部メモリMEMから内部メモリIMEMに転送した後の各プロセッサPUの動作は、例えば、上述した図3と同じである。例えば、プロセッサPU1は、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送している期間では、出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送を繰り返し実施する。
【0043】
図5は、図1に示したプロセッサPU2の処理が切り替わるときのマルチプロセッサシステムPSYSの動作の別の例を示している。なお、図5は、図3に示した動作から図2に示した動作に切り替わるときのプロセッサPU1、PU2、PU3、PU4の動作を示している。また、例えば、プロセッサPU1、PU2、PU3、PU4以外のプロセッサPUの動作は、プロセッサPU3と同じである。図中の矢印の意味は、上述した図4と同じである。また、括弧付きの符合PU2は、処理が切り替わった後のプロセッサPU2の動作を示している。
【0044】
プロセッサPU1は、例えば、出力データODATA20を外部メモリMEMに書き込む(図5(a))。そして、例えば、プロセッサPU1による出力データODATA20の外部メモリMEMへの書き込みが開始されたとき、プロセッサPU2は、入力データIDATA22を外部メモリMEMから内部メモリIMEMに転送する(図5(b、c))。また、例えば、プロセッサPU3、PU4は、出力データODATA21を内部メモリIMEMに書き込む(図5(d))。
【0045】
出力データODATA21が内部メモリIMEMに書き込まれたとき、プロセッサPU1は、出力データODATA21を内部メモリIMEMから外部メモリMEMに転送する(図5(e、f))。ここで、例えば、プロセッサPU1による出力データODATA20の外部メモリMEMへの書き込みが終了したとき、プロセッサPU3、PU4による出力データODATA21の内部メモリIMEMへの書き込みは、終了していない。このため、プロセッサPU1が出力データODATA21を内部メモリIMEMから読み込むとき、待ち状態が発生している(図5(g))。
【0046】
例えば、プロセッサPU1の待機時間(待ち状態の時間)が予め設定された閾値時間T1より長いとき、プロセッサPU2の処理は、データ転送から計算処理CALに切り替わる(図5の二重線の矢印)。すなわち、計算処理CALの時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、計算処理CALを実施する。また、プロセッサPU1は、プロセッサPU2の処理がデータ転送から計算処理CALに切り替わるため、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を再開する。例えば、プロセッサPU1は、出力データODATA21を内部メモリIMEMから外部メモリMEMに転送した後、入力データIDATA23を外部メモリMEMから内部メモリIMEMに転送する(図5(h、i))。
【0047】
プロセッサPU3、PU4は、入力データIDATA22を内部メモリIMEMから読み込み(図5(j))、入力データIDATA22を用いた計算処理CALの結果である出力データODATA22を内部メモリIMEMに書き込む(図5(k))。そして、プロセッサPU2、PU3、PU4は、入力データIDATA23が内部メモリIMEMに書き込まれた後に、入力データIDATA23を内部メモリIMEMから読み込み(図5(l))、入力データIDATA23を用いた計算処理CALを実施する。
【0048】
このように、プロセッサPU1の待機時間が予め設定された閾値時間T1より長いとき、計算処理CALを実施するプロセッサPUにプロセッサPU2が加わるため、マルチプロセッサシステムPSYSは、計算処理CALを効率よく実施できる。すなわち、この実施形態では、計算処理CALの時間がデータ転送に必要な時間に対して相対的に長いとき、計算処理CALを実施するプロセッサPUの数が減ることを防止できる。このため、マルチプロセッサシステムPSYSは、計算処理CALを効率よく実施できる。
【0049】
出力データODATA22が内部メモリIMEMに書き込まれたとき、プロセッサPU1は、出力データODATA22を内部メモリIMEMから外部メモリMEMに転送する(図5(m、n))。そして、例えば、プロセッサPU1は、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送と、出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送とを繰り返し実施する。また、例えば、プロセッサPU2、PU3、PU4は、入力データIDATAが内部メモリIMEMに転送されるたびに、計算処理CALを実施する。
【0050】
図6は、図1に示したプロセッサPU1の動作の例を示している。処理S100−S126は、例えば、外部メモリMEMに記憶されたプログラムに基づいて実施される。なお、処理S100の前に、入力データIDATAは、外部メモリMEMに記憶されている。また、例えば、最後の入力データIDATAを読み込んだプロセッサPU(PU1あるいはPU2)は、最後の入力データIDATAを読み込んだことを示す最終フラグを外部メモリMEMに書き込む。なお、最終フラグ以外のフラグ(IDATA転送許可フラグ等)は、例えば、内部メモリIMEMに記憶される。例えば、各フラグの初期値は、“0”である。
【0051】
処理S100では、プロセッサPU1は、最初の入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する。処理S102では、プロセッサPU1は、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたか否かを判定する。例えば、プロセッサPU1は、最後の入力データIDATAを読み込んだことを示す最終フラグが外部メモリMEMに書き込まれているか否かを判定する。
【0052】
最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されているとき(処理S102のYes)、プロセッサPU1の動作は、処理S120に移る。一方、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されていないとき(処理S102のNo)、プロセッサPU1の動作は、処理S104に移る。
【0053】
処理S104では、プロセッサPU1は、外部メモリMEMおよび内部メモリIMEM間のデータ転送をプロセッサPU1のみが実施しているか否かを判定する。すなわち、プロセッサPU1は、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するか否かを判定する。例えば、プロセッサPU1は、プロセッサPU2が実施する処理を示すPU2データ転送フラグを参照することにより、プロセッサPU2が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するか否かを判定する。
【0054】
ここで、例えば、プロセッサPU2の処理が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送のとき、PU2データ転送フラグは、“1”にセット(後述する図7の処理S218)される。また、例えば、プロセッサPU2の処理が計算処理のとき、PU2データ転送フラグは、“0”にクリア(図7の処理S228)される。
【0055】
外部メモリMEMおよび内部メモリIMEM間のデータ転送をプロセッサPU1のみが実施しているとき(処理S104のYes)、プロセッサPU1の動作は、処理S106に移る。すなわち、プロセッサPU2の処理が計算処理のとき、プロセッサPU1の動作は、処理S106に移る。一方、プロセッサPU2の処理が入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送のとき(処理S104のNo)、プロセッサPU1の動作は、処理S108に移る。
【0056】
処理S106では、プロセッサPU1は、IDATA転送許可フラグを“0”にクリアし、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する。ここで、IDATA転送許可フラグは、プロセッサPU2が入力データIDATAを外部メモリMEMから読み込むタイミングを判定するために、プロセッサPU2に参照されるフラグである。例えば、IDATA転送許可フラグは、後述する図7の処理S222において、プロセッサPU2に参照される。
【0057】
処理S108では、プロセッサPU1は、評価値EV1を“0”にする。ここで、評価値EV1は、例えば、プロセッサPU2に参照される情報であり、内部メモリIMEMに記憶される。例えば、評価値EV1は、プロセッサPU2がデータ転送を継続するか否かを判定するために、図7の処理S226において、プロセッサPU2に参照される。
【0058】
処理S110では、プロセッサPU1は、出力データODATAを内部メモリIMEMから読み込む。処理S112では、プロセッサPU1は、出力データODATAの読み込みが成功したか否かを判定する。例えば、プロセッサPU1は、読み込み対象の出力データODATAが内部メモリIMEMに書き込まれる前の期間では、出力データODATAの読み込みを失敗する。
【0059】
出力データODATAの読み込みが失敗したとき(処理S112のNo)、プロセッサPU1は、処理S114において、評価値EV1を“1”増加する。そして、プロセッサPU1の動作は、処理S110に移る。このように、プロセッサPU1は、出力データODATAの読み込みが成功するまで、処理S110、S112、S114の動作を繰り返し実施する。
【0060】
一方、出力データODATAの読み込みが成功したとき(処理S112のYes)、プロセッサPU1は、処理S116において、評価値EV1を“1”減算し、IDATA転送許可フラグを“1”にセットする。なお、プロセッサPU1は、処理S116でIDATA転送許可フラグを“1”にセットする代わりに、処理S108でIDATA転送許可フラグを“1”にセットしてもよい。
【0061】
処理S118では、プロセッサPU1は、出力データODATAを外部メモリMEMに書き込む。そして、プロセッサPU1の動作は、処理S102に戻る。このように、プロセッサPU1は、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されるまで、処理S102−S118の動作を繰り返し実施する。
【0062】
なお、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたとき(処理S102のYes)、プロセッサPU1は、処理S120において、出力データODATAを内部メモリIMEMから読み込む。
【0063】
処理S122では、プロセッサPU1は、出力データODATAの読み込みが成功したか否かを判定する。出力データODATAの読み込みが失敗したとき(処理S122のNo)、プロセッサPU1の動作は、処理S120に戻る。一方、出力データODATAの読み込みが成功したとき(処理S122のYes)、プロセッサPU1は、処理S124において、計算処理の終了を示すデータ(例えば、“1”)に終了フラグをセットする。
【0064】
ここで、終了フラグは、例えば、外部メモリMEMに記憶された入力データIDATAを用いた計算処理が終了したか否かを判定するために、計算処理を実施するプロセッサPU(PU2、PU3、PU4等)に参照されるフラグである。例えば、プロセッサPU1は、計算処理を実施するプロセッサPUの入力データIDATAとして、終了フラグを内部メモリIMEMに書き込む。これにより、例えば、終了フラグは、プロセッサPU2、PU3等に参照される(後述する図7の処理S212、図8の処理S304)。
【0065】
処理S126では、プロセッサPU1は、出力データODATAを外部メモリMEMに書き込む。これにより、プロセッサPU1の処理は、終了する。なお、プロセッサPU1の動作は、この例に限定されない。プロセッサPU1は、プロセッサPU2の処理に応じて、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を実施するか否かを切り替えればよい。
【0066】
図7は、図1に示したプロセッサPU2の動作の例を示している。処理S200−S228は、例えば、外部メモリMEMに記憶されたプログラムに基づいて実施される。例えば、PU2データ転送フラグは、内部メモリIMEMに記憶される。なお、PU2データ転送フラグの初期値は、例えば、“0”である。
【0067】
処理S200では、プロセッサPU2は、最初の入力データIDATAを内部メモリIMEMから読み込み、読み込んだ入力データIDATAを用いて、計算処理を実施する。そして、プロセッサPU2は、計算処理の結果である出力データODATAを内部メモリIMEMに書き込む。
【0068】
処理S202では、プロセッサPU2は、評価値EV2を“0”にする。ここで、評価値EV2は、例えば、入力データIDATAの読み込みが失敗したか否かを判定するための情報であり、内部メモリIMEMに記憶される。処理S204では、プロセッサPU2は、入力データIDATAを内部メモリIMEMから読み込む。
【0069】
処理S206では、プロセッサPU2は、入力データIDATAの読み込みが成功したか否かを判定する。例えば、プロセッサPU2は、読み込み対象の入力データIDATAが内部メモリIMEMに書き込まれる前の期間では、入力データIDATAの読み込みを失敗する。
【0070】
入力データIDATAの読み込みが失敗したとき(処理S206のNo)、プロセッサPU2は、処理S208において、評価値EV2を“1”増加する。そして、プロセッサPU2の動作は、処理S204に移る。このように、プロセッサPU2は、入力データIDATAの読み込みが成功するまで、処理S204、S206、S208の動作を繰り返し実施する。一方、入力データIDATAの読み込みが成功したとき(処理S206のYes)、プロセッサPU2は、処理S210において、評価値EV2を“1”減算する。
【0071】
処理S212では、プロセッサPU2は、読み込んだ入力データIDATAが終了フラグか否かを判定する。終了フラグは、図6で説明したように、全ての計算処理が終了したことを示している。したがって、読み込んだ入力データIDATAが終了フラグのとき(処理S212のYes)、プロセッサPU2の処理は、終了する。一方、読み込んだ入力データIDATAが終了フラグでないとき(処理S212のNo)、プロセッサPU2の動作は、処理S214に移る。
【0072】
処理S214では、プロセッサPU2は、読み込んだ入力データIDATAを用いて、計算処理を実施する。そして、プロセッサPU2は、計算処理の結果である出力データODATAを内部メモリIMEMに書き込む。処理S216では、プロセッサPU2は、評価値EV2が“0”以上か否かを判定する。すなわち、プロセッサPU2は、入力データIDATAの読み込みに1回以上失敗したか否かを判定する。
【0073】
なお、処理S216の判定の基準として、“0”以上の値が予め設定されてもよい。このときの処理S216では、例えば、プロセッサPU2は、評価値EV2が予め設定された値以上か否かを判定する。すなわち、プロセッサPU2は、入力データIDATAの読み込みに予め設定された回数以上失敗したか否かを判定してもよい。
【0074】
入力データIDATAの読み込みに1回も失敗していないとき(処理S216のNo)、プロセッサPU2の動作は、処理S202に戻る。一方、入力データIDATAの読み込みに1回以上失敗したとき(処理S216のYes)、プロセッサPU2の動作は、処理S218に移る。このように、プロセッサPU2は、入力データIDATAを読み込むときに待ち状態が発生しない期間では、計算処理(処理S202−S216の動作)を繰り返し実施する。すなわち、プロセッサPU2は、入力データIDATAを読み込むときに待ち状態が発生するまで、計算処理(処理S202−S216の動作)を繰り返し実施する。
【0075】
処理S218では、プロセッサPU2は、PU2データ転送フラグを“1”にセットする。これにより、プロセッサPU1は、図6に示した処理S104において、プロセッサPU2の処理が計算処理からデータ転送(入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送)に切り替わったことを検出できる。
【0076】
処理S220では、プロセッサPU2は、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたか否かを判定する。例えば、プロセッサPU2は、最後の入力データIDATAを読み込んだことを示す最終フラグが外部メモリMEMに書き込まれているか否かを判定する。
【0077】
最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されているとき(処理S220のYes)、プロセッサPU2の処理は、終了する。なお、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されているとき、プロセッサPU2の動作は、処理S202に移ってもよい。一方、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されていないとき(処理S220のNo)、プロセッサPU2の動作は、処理S222に移る。
【0078】
処理S222では、プロセッサPU2は、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が許可されているか否かを判定する。例えば、IDATA転送許可フラグが“0”のとき、プロセッサPU2は、入力データIDATAの転送が許可されていないと判定する。また、例えば、IDATA転送許可フラグが“1”のとき、プロセッサPU2は、入力データIDATAの転送が許可されていると判定する。
【0079】
外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が許可されていないとき(処理S222のNo)、プロセッサPU2の動作は、処理S222に戻る。すなわち、プロセッサPU2は、入力データIDATAの転送が許可されるまで待機する。これにより、この実施形態では、プロセッサPU3等の計算処理に対して、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が先行し過ぎることを防止できる。
【0080】
一方、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送が許可されているとき(処理S222のYes)、プロセッサPU2の動作は、処理S224に移る。処理S224では、プロセッサPU2は、IDATA転送許可フラグを“0”にクリアし、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送する。
【0081】
処理S226では、プロセッサPU2は、評価値EV1が閾値TH以上か否かを判定する。ここで、閾値THは、例えば、アプリケーションの実行時にユーザ等により設定される“0”以上の値である。例えば、閾値THは、内部メモリIMEMに記憶される。すなわち、プロセッサPU2は、プロセッサPU1による出力データODATAの読み込みが閾値THの回数以上失敗したか否かを判定する。
【0082】
出力データODATAの読み込みの失敗回数が閾値THより少ないとき(処理S226のNo)、プロセッサPU2の動作は、処理S220に戻る。すなわち、プロセッサPU1の待機時間(上述した図5(g)等)が予め設定された閾値時間より短いとき、例えば、プロセッサPU2は、外部メモリMEMから内部メモリIMEMへの入力データIDATAの転送を継続して実施する。
【0083】
一方、出力データODATAの読み込みの失敗回数が閾値TH以上のとき(処理S226のYes)、プロセッサPU2は、処理S228において、PU2データ転送フラグを“0”にクリアする。そして、プロセッサPU2の動作は、処理S202の処理に戻る。すなわち、プロセッサPU1の待機時間が予め設定された閾値時間より長いとき、例えば、プロセッサPU2の処理は、データ転送から計算処理に切り替わる。
【0084】
このように、計算処理の時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、計算処理を実施する。そして、計算処理の時間がデータ転送に必要な時間に対して相対的に短いとき、プロセッサPU2は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施する。これにより、マルチプロセッサシステムPSYSは、計算処理を効率よく実施できる。なお、プロセッサPU2の動作は、この例に限定されない。プロセッサPU2は、プロセッサPU1のデータ転送の時間と計算処理の時間とに応じて、外部メモリMEMおよび内部メモリIMEM間のデータ転送と計算処理とを切り替えて実施できればよい。
【0085】
図8は、図1に示したプロセッサPU1、PU2以外のプロセッサPUの動作の例を示している。処理S300−S306は、例えば、外部メモリMEMに記憶されたプログラムに基づいて実施される。なお、プロセッサPU1、PU2以外のプロセッサPUの動作は、プロセッサPU3と同じである。このため、プロセッサPU3の動作について説明する。
【0086】
処理S300では、プロセッサPU3は、入力データIDATAを内部メモリIMEMから読み込む。処理S302では、プロセッサPU3は、入力データIDATAの読み込みが成功したか否かを判定する。入力データIDATAの読み込みが失敗したとき(処理S302のNo)、プロセッサPU3の動作は、処理S300に戻る。すなわち、プロセッサPU3は、入力データIDATAの読み込みが成功するまで、待機する。
【0087】
一方、入力データIDATAの読み込みが成功したとき(処理S302のYes)、プロセッサPU3は、処理S304において、読み込んだ入力データIDATAが終了フラグか否かを判定する。読み込んだ入力データIDATAが終了フラグのとき(処理S304のYes)、プロセッサPU3の処理は、終了する。一方、読み込んだ入力データIDATAが終了フラグでないとき(処理S304のNo)、プロセッサPU3の動作は、処理S306に移る。
【0088】
処理S306では、プロセッサPU3は、読み込んだ入力データIDATAを用いて、計算処理を実施し、計算処理の結果である出力データODATAを内部メモリIMEMに書き込む。そして、プロセッサPU3の動作は、処理S300に戻る。このように、例えば、プロセッサPU3は、終了フラグを読み込むまで、計算処理を繰り返し実施する。
【0089】
以上、この実施形態では、プロセッサPU1は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施し、プロセッサPU2は、計算処理の時間に応じて、計算処理とデータ転送とを切り替えて実施する。例えば、計算処理の時間がデータ転送に必要な時間に対して相対的に長いとき、プロセッサPU2は、計算処理を実施する。そして、計算処理の時間がデータ転送に必要な時間に対して相対的に短いとき、プロセッサPU2は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施する。また、プロセッサPU1、PU2以外のプロセッサは、低速な外部メモリMEMにアクセスせずに計算処理を実施する。この結果、この実施形態では、マルチプロセッサシステムPSYSの計算処理の効率を向上させることができる。
【0090】
図9は、別の実施形態におけるマルチプロセッサシステムPSYSの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムPSYSは、例えば、複数の処理部MPを有している。その他の構成は、上述した実施形態と同じである。なお、各処理部MPのプロセッサPUの動作は、上述した実施形態と同じである。
【0091】
例えば、図6で説明したように、最後の入力データIDATAを読み込んだプロセッサPU(PU1あるいはPU2)は、最後の入力データIDATAを読み込んだことを示す最終フラグを外部メモリMEMに書き込む。このため、各処理部MPのプロセッサPU1、PU2は、外部メモリMEMに記憶された最終フラグを参照することにより、最後の入力データIDATAが外部メモリMEMから内部メモリIMEMに転送されたか否かを判定できる。換言すれば、処理部MPが1つの構成では、最終フラグは、内部メモリIMEMに記憶されてもよい。
【0092】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、複数の処理部MPが計算処理を並列に実施できるため、マルチプロセッサシステムPSYSの計算処理の効率をさらに向上させることができる。
【0093】
図10は、別の実施形態におけるマルチプロセッサシステムPSYSの動作の例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムPSYSは、プロセッサPU1、PU2の動作を除いて、上述した実施形態と同じである。なお、図中の矢印の意味は、上述した図4と同じである。また、括弧付きの符合PU2は、処理が切り替わった後のプロセッサPU2の動作を示している。
【0094】
例えば、プロセッサPU2は、外部メモリMEMおよび内部メモリIMEM間のデータ転送を実施するときの動作を除いて、上述した実施形態と同じである。例えば、計算処理CALで待ち状態が発生したとき、プロセッサPU2は、図4に示した入力データIDATAの外部メモリMEMから内部メモリIMEMへの転送の代わりに、出力データODATAの内部メモリIMEMから外部メモリMEMへの転送を実施する(図10の二重線の矢印)。
【0095】
すなわち、プロセッサPU2は、計算処理CALで待ち状態が発生したときに実施するデータ転送として、内部メモリIMEMから外部メモリMEMに出力データODATAを転送するデータ転送を実施する。したがって、図6に示した評価値EV1の更新およびIDATA転送許可フラグのセットは、プロセッサPU2により実施される。
【0096】
また、例えば、プロセッサPU2の処理が出力データODATAを内部メモリIMEMから外部メモリMEMに転送するデータ転送のとき、プロセッサPU1は、IDATA転送許可フラグを参照し、入力データIDATAの転送が許可されるまで待機する。そして、例えば、IDATA転送許可フラグが“1”のとき、プロセッサPU1は、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を開始する。このように、例えば、プロセッサPU2の処理が計算処理CALでないとき、プロセッサPU1は、入力データIDATAを外部メモリMEMから内部メモリIMEMに転送するデータ転送を繰り返し実施する。プロセッサPU1のその他の動作は、上述した実施形態と同じである。
【0097】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【0098】
図11は、上述した実施形態のマルチプロセッサシステムPSYSが搭載されるシステムSYSの例を示している。システムSYSは、例えば、マルチプロセッサシステムPSYSと、マルチプロセッサシステムPSYSに接続されたコンピュータCSYSを有している。コンピュータCSYSは、例えば、システムSYSの動作を制御する中央処理装置CPUと、中央処理装置CPUに接続されたハードディスクHDDと、中央処理装置CPUに接続されたメインメモリMMとを有している。例えば、中央処理装置CPUは、メインメモリMMに記憶された入力データをマルチプロセッサシステムPSYSの外部メモリMEMに転送する。
【0099】
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
第1メモリと、
前記第1メモリに接続され、前記第1メモリに記憶されたデータを用いて処理を実施する処理部とを備え、
前記処理部は、
第2メモリと、
前記データおよび前記処理の結果である処理データの少なくとも一方を前記第1メモリと前記第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、
前記第1メモリと前記第2メモリとの間でのデータ転送と前記処理とを切り替え可能に実施する第2プロセッサと、
前記第2メモリに転送された前記データを用いて、前記処理を実施する第3プロセッサと
を備えていることを特徴とするマルチプロセッサシステム。
(付記2)
前記第1プロセッサは、前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データを前記第1メモリから前記第2メモリに転送した後、前記処理の最初の前記処理データを前記第2メモリから前記第1メモリに転送する前に、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする付記1記載のマルチプロセッサシステム。
(付記3)
前記第2プロセッサは、連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、実施する処理を前記処理から前記データ転送に切り替えること
を特徴とする付記1または付記2記載のマルチプロセッサシステム。
(付記4)
前記第2プロセッサは、前記データ転送として、前記第1メモリから前記第2メモリに前記データを転送し、
前記第1プロセッサは、前記第2プロセッサが前記データ転送を実施するとき、前記第2メモリから前記第1メモリに前記処理データを転送すること
を特徴とする付記3記載のマルチプロセッサシステム。
(付記5)
前記第2プロセッサは、前記データ転送として、前記第2メモリから前記第1メモリに前記処理データを転送し、
前記第1プロセッサは、前記第2プロセッサが前記データ転送を実施するとき、前記第1メモリから前記第2メモリに前記データを転送すること
を特徴とする付記3記載のマルチプロセッサシステム。
(付記6)
前記第2プロセッサは、前記第1プロセッサが前記第2メモリから前記処理データを読み出すときの待ち時間が予め設定された閾値時間より長いとき、実施する処理を前記データ転送から前記処理に切り替えること
を特徴とする付記3記載のマルチプロセッサシステム。
(付記7)
第1メモリと、前記第1メモリに接続され、第2メモリおよび複数のプロセッサを含む処理部とを備えたマルチプロセッサシステムに、前記第1メモリに記憶されたデータを用いて処理を実行させるマルチプロセッサシステムのプログラムにおいて、
前記複数のプロセッサの1つである第1プロセッサが、前記データを前記第1メモリから前記第2メモリに転送し、
前記複数のプロセッサの1つである第2プロセッサおよび第3プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第2メモリに格納し、
前記第1プロセッサが、前記第2メモリにアクセスし、格納された前記処理データを前記第1メモリに転送し、
前記第2プロセッサおよび第3プロセッサが前記処理データを前記第2メモリに格納するタイミングが、前記第1プロセッサが前記第2メモリに前記アクセスするタイミングよりも早い場合には、前記第2プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムのプログラム。
(付記8)
第1メモリと、前記第1メモリに接続され、第2メモリおよび複数のプロセッサを含む処理部とを備え、前記第1メモリに記憶されたデータを用いて処理を実施するマルチプロセッサシステムの動作方法において、
前記複数のプロセッサの1つである第1プロセッサが、前記データを前記第1メモリから前記第2メモリに転送し、
前記複数のプロセッサの1つである第2プロセッサおよび第3プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第2メモリに格納し、
前記第1プロセッサが、前記第2メモリにアクセスし、格納された前記処理データを前記第1メモリに転送し、
前記第2プロセッサおよび第3プロセッサが前記処理データを前記第2メモリに格納するタイミングが、前記第1プロセッサが前記第2メモリに前記アクセスするタイミングよりも早い場合には、前記第2プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムの動作方法。
(付記9)
前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データが前記第1メモリから前記第2メモリに転送された後、前記処理の最初の前記処理データが前記第2メモリから前記第1メモリに転送される前に、前記第1プロセッサが、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする付記8記載のマルチプロセッサシステムの動作方法。
(付記10)
連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、前記第2プロセッサに実施させる処理を前記処理から前記転送に切り替えること
を特徴とする付記8または付記9記載のマルチプロセッサシステムの動作方法。
【0100】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0101】
CPU‥中央処理装置;CSYS‥コンピュータ;HDD‥ハードディスク;IMEM、MEM、MM‥メモリ;MP‥処理部;PSYS‥マルチプロセッサシステム;PU‥プロセッサ
【特許請求の範囲】
【請求項1】
第1メモリと、
前記第1メモリに接続され、前記第1メモリに記憶されたデータを用いて処理を実施する処理部とを備え、
前記処理部は、
第2メモリと、
前記データおよび前記処理の結果である処理データの少なくとも一方を前記第1メモリと前記第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、
前記第1メモリと前記第2メモリとの間でのデータ転送と前記処理とを切り替え可能に実施する第2プロセッサと、
前記第2メモリに転送された前記データを用いて、前記処理を実施する第3プロセッサと
を備えていることを特徴とするマルチプロセッサシステム。
【請求項2】
前記第1プロセッサは、前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データを前記第1メモリから前記第2メモリに転送した後、前記処理の最初の前記処理データを前記第2メモリから前記第1メモリに転送する前に、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする請求項1記載のマルチプロセッサシステム。
【請求項3】
前記第2プロセッサは、連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、実施する処理を前記処理から前記データ転送に切り替えること
を特徴とする請求項1または請求項2記載のマルチプロセッサシステム。
【請求項4】
第1メモリと、前記第1メモリに接続され、第2メモリおよび複数のプロセッサを含む処理部とを備え、前記第1メモリに記憶されたデータを用いて処理を実施するマルチプロセッサシステムの動作方法において、
前記複数のプロセッサの1つである第1プロセッサが、前記データを前記第1メモリから前記第2メモリに転送し、
前記複数のプロセッサの1つである第2プロセッサおよび第3プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第2メモリに格納し、
前記第1プロセッサが、前記第2メモリにアクセスし、格納された前記処理データを前記第1メモリに転送し、
前記第2プロセッサおよび第3プロセッサが前記処理データを前記第2メモリに格納するタイミングが、前記第1プロセッサが前記第2メモリに前記アクセスするタイミングよりも早い場合には、前記第2プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムの動作方法。
【請求項5】
前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データが前記第1メモリから前記第2メモリに転送された後、前記処理の最初の前記処理データが前記第2メモリから前記第1メモリに転送される前に、前記第1プロセッサが、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする請求項4記載のマルチプロセッサシステムの動作方法。
【請求項6】
連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、前記第2プロセッサに実施させる処理を前記処理から前記転送に切り替えること
を特徴とする請求項4または請求項5記載のマルチプロセッサシステムの動作方法。
【請求項1】
第1メモリと、
前記第1メモリに接続され、前記第1メモリに記憶されたデータを用いて処理を実施する処理部とを備え、
前記処理部は、
第2メモリと、
前記データおよび前記処理の結果である処理データの少なくとも一方を前記第1メモリと前記第2メモリとの間で転送するデータ転送を実施する第1プロセッサと、
前記第1メモリと前記第2メモリとの間でのデータ転送と前記処理とを切り替え可能に実施する第2プロセッサと、
前記第2メモリに転送された前記データを用いて、前記処理を実施する第3プロセッサと
を備えていることを特徴とするマルチプロセッサシステム。
【請求項2】
前記第1プロセッサは、前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データを前記第1メモリから前記第2メモリに転送した後、前記処理の最初の前記処理データを前記第2メモリから前記第1メモリに転送する前に、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする請求項1記載のマルチプロセッサシステム。
【請求項3】
前記第2プロセッサは、連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、実施する処理を前記処理から前記データ転送に切り替えること
を特徴とする請求項1または請求項2記載のマルチプロセッサシステム。
【請求項4】
第1メモリと、前記第1メモリに接続され、第2メモリおよび複数のプロセッサを含む処理部とを備え、前記第1メモリに記憶されたデータを用いて処理を実施するマルチプロセッサシステムの動作方法において、
前記複数のプロセッサの1つである第1プロセッサが、前記データを前記第1メモリから前記第2メモリに転送し、
前記複数のプロセッサの1つである第2プロセッサおよび第3プロセッサが、前記処理を行い、前記処理の結果である処理データを前記第2メモリに格納し、
前記第1プロセッサが、前記第2メモリにアクセスし、格納された前記処理データを前記第1メモリに転送し、
前記第2プロセッサおよび第3プロセッサが前記処理データを前記第2メモリに格納するタイミングが、前記第1プロセッサが前記第2メモリに前記アクセスするタイミングよりも早い場合には、前記第2プロセッサの動作を前記転送に切り替えること
を特徴とするマルチプロセッサシステムの動作方法。
【請求項5】
前記第2プロセッサおよび前記第3プロセッサに実施される前記処理の最初の前記データが前記第1メモリから前記第2メモリに転送された後、前記処理の最初の前記処理データが前記第2メモリから前記第1メモリに転送される前に、前記第1プロセッサが、前記最初のデータの次の前記データを前記第1メモリから前記第2メモリに転送すること
を特徴とする請求項4記載のマルチプロセッサシステムの動作方法。
【請求項6】
連続する前記処理のうちの先の前記処理の前記処理データを前記第2メモリに書き込んでから次の前記処理の前記データを前記第2メモリから読み込むまでに待ち時間が発生したとき、前記第2プロセッサに実施させる処理を前記処理から前記転送に切り替えること
を特徴とする請求項4または請求項5記載のマルチプロセッサシステムの動作方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−180680(P2011−180680A)
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願番号】特願2010−42195(P2010−42195)
【出願日】平成22年2月26日(2010.2.26)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願日】平成22年2月26日(2010.2.26)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]