(57)【要約】本発明は、階層的な並列処理を実現するマルチプロセッサシステムの提供を目的とする。係るマルチプロセッサシステムは、各要素プロセッサに対応して同期制御部が設けられている。各同期制御部は、対応する要素プロセッサが次に実行する処理に応じて設定された同期信号を互いに送受するために接続されており、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可部を備える。【特許請求の範囲】
【請求項１】
複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムであって、
いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、
各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止し、
各同期制御部は、
前記設定された同期信号を互いに送受するために接続されており、
対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段を備える
ことを特徴とするマルチプロセッサシステム。
【請求項２】
前記マルチプロセッサシステムは、
各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部の同期選択情報を保持する領域がマッピングされた共有メモリを含み、
各同期制御部は、対応する要素プロセッサと専用線で接続された同期レジスタを備え、
各要素プロセッサは、次に実行する処理に応じて、当該同期レジスタに同期信号の値を設定する
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
いずれかの要素プロセッサは、同期選択情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報を設定することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
いずれかの要素プロセッサは、更に、いずれかの同期制御部に対して、前記所定の値を決める同期モード情報を設定し、
前記同期許可手段は、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した各同期信号のうち、前記設定された同期選択情報に基づいて選択した同期信号が、いずれも前記同期モード情報により決定された所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
前記マルチプロセッサシステムは、
各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部が送信する同期信号の値を保持する領域がマッピングされた共有メモリを含み、
各同期制御部は、
対応する要素プロセッサと専用線で接続された同期選択レジスタと、同期モードレジスタとを備え、
各要素プロセッサは、受信する同期信号のうち注目すべき同期信号の値に応じて、対応する同期制御部の同期選択レジスタに同期選択情報を設定し、対応する同期制御部の同期モードレジスタに同期モード情報を設定する
ことを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項６】
いずれかの要素プロセッサは、前記同期選択情報及び前記同期モード情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報及び当該同期モードを設定することを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項７】
複数の要素プロセッサを含むマルチプロセッサシステムにおいて、各要素プロセッサに対応して設ける同期制御装置であって、
いずれかの要素プロセッサによって設定された値を示す同期信号を他の複数の同期制御装置に送信する手段と、
他の同期制御装置から同期信号を受信する手段と、
対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段とを備える
ことを特徴とする同期制御装置。
【請求項８】
複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムに用いられる同期制御方法であって、
いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、
各同期制御部は、
いずれかの要素プロセッサによって設定された値の同期信号を互いに送受し、
対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力し、
各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止する
ことを特徴とする同期制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、複数の要素プロセッサを含むマルチプロセッサシステムに関し、特に各要素プロセッサがそれぞれ実行するプロセス間の同期制御に関する。
【背景技術】
【０００２】  マルチプロセッサシステムの並列分散処理において、各要素プロセッサが実行するプロセス間でのデータの授受や処理順の一貫性を保つ必要がある場合、各要素プロセッサで同期をとって処理を進めるようにしている。
例えば、下記の特許文献１に開示されているマルチプロセッサシステムでは、各要素プロセッサに対応する同期制御部が備わっており、同期制御部間で同期信号を送受することで、各要素プロセッサが実行するプロセス間の同期を実現している。【０００３】  図１３は、特許文献１に開示されているマルチプロセッサシステム１５００の構成を簡単に示した図である。
マルチプロセッサシステム１５００は、５つの要素プロセッサＰＥ０〜ＰＥ４と、各要素プロセッサに対応して設けられた同期制御部Ｚ０〜Ｚ４とを含む。
各要素プロセッサＰＥ０〜ＰＥ４と各同期制御部Ｚ０〜Ｚ４は、同図に示すように、それぞれＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線で接続されている。【０００４】  ＳＹＮＣＲＥＱ信号線は、要素プロセッサから対応する同期制御部に同期信号のアサート、ディアサートを通知するための信号線であり、ＳＹＮＣＡＣＫ信号線は、同期制御部から対応する要素プロセッサに同期許可信号のアサート、ディアサートを通知するための信号線である。
各同期制御部Ｚ０〜Ｚ４は、同期バス１５０１に接続されており、互いにアサート又はディアサートされた同期信号を送受することができる。【０００５】  ここで、マルチプロセッサシステム１５００に階層的な並列処理を実行させる場合について考える。
図１４は、各要素プロセッサＰＥ０〜ＰＥ４が実行する階層的な並列処理の流れを示す図である。
要素プロセッサＰＥ０にはアプリケーション層のアプリとプロセス層のプロセスＡとスレッド層のスレッドＡの処理が割り当てられており、要素プロセッサＰＥ１にはスレッドＢが、要素プロセッサＰＥ２にはスレッドＣが、要素プロセッサＰＥ３にはプロセスＢとスレッドＤが、要素プロセッサＰＥ４にはスレッドＥが割り当てられている。【０００６】  アプリを実行する要素プロセッサＰＥ０は、ある時点でプロセスＡの処理を開始し、同時に要素プロセッサＰＥ３にプロセスＢの処理を開始させる。
プロセスＡを実行する要素プロセッサＰＥ０は、ある時点でスレッドＡの処理を開始し、要素プロセッサＰＥ１にスレッドＢを、要素プロセッサＰＥ２にスレッドＣの処理を開始させる。【０００７】  プロセスＢを実行する要素プロセッサＰＥ３は、ある時点でスレッドＤの処理を開始し、要素プロセッサＰＥ４にスレッドＥの処理を開始させる。
プロセスＡを実行する要素プロセッサＰＥ０は、スレッドＡ、Ｂ、Ｃの処理が共に終了した時点で、それぞれのスレッドの処理結果を用いた処理を行い、プロセスＢを実行する要素プロセッサＰＥ３は、スレッドＤ、Ｅの処理が共に終了した時点で、それぞれのスレッドの処理結果を用いた処理を行う。【０００８】  そして、アプリを実行する要素プロセッサＰＥ０は、プロセスＡ、Ｂの処理が共に終了した時点で、それぞれの処理結果を用いた処理を行う。
例えば、要素プロセッサＰＥ０がスレッドＡの処理を終了すると、ＳＹＮＣＲＥＱ信号をアサートし、対応する同期制御部Ｚ０は、要素プロセッサＰＥ０が同期待ちであることを示すべく同期信号ＳＹＮＣ０をアサートし、同期バス１５０１を介して他の同期制御部Ｚ１〜Ｚ４に要素プロセッサＰＥ０が同期待ちであることを通知する。【０００９】  要素プロセッサＰＥ０は、同期制御部Ｚ０からＳＹＮＣＡＣＫ信号がアサートされるまで次の処理の実行を停止する。
スレッドＢの処理を実行する要素プロセッサＰＥ１に対応する同期制御部Ｚ１及びスレッドＣの処理を実行する要素プロセッサＰＥ２に対応する同期制御部Ｚ２それぞれからアサートされた同期信号が通知されると、同期制御部Ｚ０は、要素プロセッサＰＥ０に対して、同期待ちの解除を示すアサートされた同期許可信号を通知する。【００１０】  要素プロセッサＰＥ０は、同期制御部Ｚ０からアサートされた同期許可信号の通知を受けると、次のプロセスＡの処理を開始する。
【特許文献１】特許第１９４０５８６号
【発明の開示】
【発明が解決しようとする課題】
【００１１】  しかし、ここで問題となるのは、スレッドＤを実行する要素プロセッサＰＥ３が、スレッドＤを終了した時点でＳＹＮＣＲＥＱ信号をアサートし、これを受けた同期制御部Ｚ３が同期信号をアサートする点である。
もし、この時点で、要素プロセッサＰＥ０がプロセスＡの処理を終えていれば、要素プロセッサＰＥ０は、プロセスＢの処理を実行する要素プロセッサＰＥ３と対応する同期制御部Ｚ３からの同期信号待ちをしていることになり、要素プロセッサＰＥ０と対応する同期制御部Ｚ０は、要素プロセッサＰＥ３のスレッドＤの終了による同期制御部Ｚ３の同期信号のアサートを、プロセスＢの終了による同期信号のアサートと誤認して、要素プロセッサＰＥ０に対して同期許可信号を送出することになる。【００１２】  つまり、上記特許文献１に開示されているマルチプロセッサシステムに階層的な並列処理を行わせた場合、要素プロセッサ間で正しく同期をとることができなくなることが考えられる。
そこで、本発明は、上述のような階層的な並列処理を実現するマルチプロセッサシステム、同期制御装置及び同期制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】  上記目的を達成するために、本発明に係るマルチプロセッサシステムは、複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムであって、いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止し、各同期制御部は、前記設定された同期信号を互いに送受するために接続されており、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段を備えることを特徴とする。【００１４】  また、本発明に係る同期制御装置は、複数の要素プロセッサを含むマルチプロセッサシステムにおいて、各要素プロセッサに対応して設ける同期制御装置であって、いずれかの要素プロセッサによって設定された値を示す同期信号を他の複数の同期制御装置に送信する手段と、他の同期制御装置から同期信号を受信する手段と、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段とを備えることを特徴とする。【００１５】  また、本発明に係る同期制御方法は、複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムに用いられる同期制御方法であって、いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、各同期制御部は、いずれかの要素プロセッサによって設定された値の同期信号を互いに送受し、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力し、各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止することを特徴とする。
【発明の効果】
【００１６】  上記構成のマルチプロセッサシステムを用いれば、階層的な並列処理において、下位層の処理の後、同層の処理を行う他の第１の要素プロセッサの処理を待ってから中位層の処理を行う第２の要素プロセッサが、下位層の処理を終えても、対応する同期制御部が同期信号をアサートしないように設定することができ、反対に、当該第２の要素プロセッサが中位層の処理を終えれば、上位層の処理を行う第３の要素プロセッサに対して中位層の処理が終わったことを通知するべく、同期信号をアサートするように設定することができるので、要素プロセッサ間で正しく同期をとることができなくなるといった問題が生じることなく階層的な並列処理を実現することができる。【００１７】  上記構成の同期制御装置を各要素プロセッサに対応して設けたマルチプロセッサシステムおよび、上記同期制御方法を用いたマルチプロセッサシステムについても同様に、階層的な並列処理を実現することができる。
ここで、前記マルチプロセッサシステムは、各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部の同期選択情報を保持する領域がマッピングされた共有メモリを含み、各同期制御部は、対応する要素プロセッサと専用線で接続された同期レジスタを備え、各要素プロセッサは、次に実行する処理に応じて、当該同期レジスタに同期信号の値を設定するとしてもよい。【００１８】  この構成により、同期選択情報については、いずれかの要素プロセッサが共有メモリに事前に書き込むことで、いずれかの同期制御部の同期選択情報として設定され、同期信号の値については、各要素プロセッサが対応する同期制御部の同期レジスタに値を事前に書き込むことで設定することができるので、各要素プロセッサは、設定のために信号を出し続ける必要がない。【００１９】  例えば、上位層の処理を行う第３の要素プロセッサがその処理中に、中位層及び下位層の処理を行う第２の要素プロセッサに対応する同期制御部の同期選択情報を事前に設定することができる。
ここで、いずれかの要素プロセッサは、同期選択情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報を設定するとしてもよい。【００２０】  この構成により、一命令で同期要求信号の出力と、指定された同期制御部に同期選択情報の設定を行うことができる。
また、いずれかの要素プロセッサは、更に、いずれかの同期制御部に対して、前記所定の値を決める同期モード情報を設定し、前記同期許可手段は、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した各同期信号のうち、前記設定された同期選択情報に基づいて選択した同期信号が、いずれも前記同期モード情報により決定された所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力するとしてもよい。【００２１】  同期モード情報と同期選択情報により、選択した同期信号が決定した所定の値になれば、同期許可信号を出力するように設定することができる。
ここで、前記マルチプロセッサシステムは、各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部が送信する同期信号の値を保持する領域がマッピングされた共有メモリを含み、各同期制御部は、対応する要素プロセッサと専用線で接続された同期選択レジスタと、同期モードレジスタとを備え、各要素プロセッサは、受信する同期信号のうち注目すべき同期信号の値に応じて、対応する同期制御部の同期選択レジスタに同期選択情報を設定し、対応する同期制御部の同期モードレジスタに同期モード情報を設定するとしてもよい。【００２２】  この構成により、同期信号の値については、いずれかの要素プロセッサが共有メモリに事前に書き込むことで、いずれかの同期制御部の同期信号の値として設定され、同期選択情報及び同期モード情報については、各要素プロセッサが対応する同期制御部の同期レジスタに事前に情報を書き込むことで設定することができるので、各要素プロセッサは、設定のために信号を出し続ける必要がない。【００２３】  ここで、いずれかの要素プロセッサは、前記同期選択情報及び前記同期モード情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報及び当該同期モードを設定するとしてもよい。
この構成により、一命令で同期要求信号の出力と、指定された同期制御部に同期選択情報及び同期モード情報の設定を行うことができる。
【図面の簡単な説明】
【００２４】
【図１】マルチプロセッサシステム１の構成を示す図である。
【図２】同期制御部Ｓ０の構成を示した図である。
【図３】同期許可部２０１の論理回路構成を示す図である。
【図４】階層的な並列処理をマルチプロセッサシステム１に実行させた場合のタイムチャート図である。
【図５】同期選択信号フィールドを含む同期命令のフォーマットを示す図である。
【図６】同期命令と同期選択テーブルを示す図である。
【図７】同期制御部Ｓ０Ｘの構成を示す図である。
【図８】同期許可部８０１の論理回路構成を示す図である。
【図９】階層的な並列処理をマルチプロセッサシステム１Ｘに実行させた場合のタイムチャート図である。
【図１０】同期選択信号フィールド及び同期モードビットを含む同期命令のフォーマットを示す図である。
【図１１】同期制御部Ｓ０Ｙの構成を示す図である。
【図１２】同期制御部Ｓ０Ｚの構成を示す図である。
【図１３】従来のマルチプロセッサシステム１５００の構成を示した図である。
【図１４】各要素プロセッサＰＥ０〜ＰＥ４が実行する階層的な並列処理の流れを示す図である。
【符号の説明】
【００２５】１、１５００  マルチプロセッサシステム
２、１５０１  同期バス
３  共有バス
４  共有メモリ
２００  同期レジスタ
２０１、８０１、１３０１、１４０１  同期許可部
８００、１３００  同期信号出力部
８０２  同期選択レジスタ
８０３、１３０２  同期モードレジスタ
ＰＥ０〜ＰＥ４、ＰＥ０Ｘ、ＰＥ０Ｙ、ＰＥ０Ｚ  要素プロセッサ
Ｓ０〜Ｓ４、Ｓ０Ｘ、Ｓ０Ｙ、Ｓ０Ｚ  同期制御部
【発明を実施するための最良の形態】
【００２６】  以下、本発明の一実施形態について、図面を用いて説明する。
＜構成＞
図１は、マルチプロセッサシステム１の構成を示す図である。
マルチプロセッサシステム１は、５つの要素プロセッサＰＥ０〜ＰＥ４と、各要素プロセッサＰＥ０〜ＰＥ４に対応して設けられた同期制御部Ｓ０〜Ｓ４と、各同期制御部Ｓ０〜Ｓ４が接続された同期バス２と、各要素プロセッサＰＥ０〜ＰＥ４と各同期制御部Ｓ０〜Ｓ４と共有メモリが接続された共有バス３とを含む。【００２７】  同期バス２は、要素プロセッサの数と同じ５本の信号線から成る。
各要素プロセッサＰＥ０〜ＰＥ４と対応する各同期制御部Ｓ０〜Ｓ４は、それぞれＳＹＮＣＳＥＴ信号線、ＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線で接続されている。
共有メモリ４には、各同期制御部Ｓ０〜Ｓ４の同期選択情報を保持する領域がマッピングされている。【００２８】  同期選択情報は、最上位ビットからそれぞれの同期信号ＳＹＮＣ４、ＳＹＮＣ３、ＳＹＮＣ２、ＳＹＮＣ１、ＳＹＮＣ０に対応した５ビット２進数の情報であり、いずれかの要素プロセッサが共有メモリ４に書き込むことで設定される。
図２は、各同期制御部の代表として同期制御部Ｓ０の構成を示した図である。
同期制御部Ｓ１〜Ｓ４は、接続されている要素プロセッサ、信号線が異なるだけで、同様の構成であるので説明を省略する。【００２９】  同期制御部Ｓ０は、その内部に同期レジスタ２００、同期許可部２０１を備える。
同期レジスタ２００には、ＳＹＮＣＳＥＴ信号線及びＳＹＮＣ０信号線が接続され、同期許可部２０１には、ＳＹＮＣ０〜ＳＹＮＣ４信号線（同期バス２）、共有バス３、ＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線が接続されている。
ＳＹＮＣＳＥＴ信号線は、要素プロセッサＰＥ０が設定した値を同期レジスタ２００に通知するための信号線である。【００３０】  同期レジスタ２００が保持する値が１であれば、同期制御部Ｓ０は、ＳＹＮＣ０信号線をアサート状態にして出力し、保持する値が０であれば、ＳＹＮＣ０信号線をディアサート状態にして出力する。
ＳＹＮＣＲＥＱ信号線は、要素プロセッサＰＥ０が同期命令を実行したときにアサートされる同期要求信号を、対応する同期制御部Ｓ０に通知するための信号線である。【００３１】  同期許可部２０１は、ＳＹＮＣＲＥＱ信号線より同期要求信号を入力とし、ＳＹＮＣ０〜ＳＹＮＣ４信号線より各同期制御部からの同期信号を受信し、共有バス３を介して、共有メモリ４に書き込まれた同期選択情報ＳＹＮＣＳＥＬ０を読み込み、受信した各同期信号と、同期選択情報ＳＹＮＣＳＥＬ０と、同期要求信号とを用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０に出力する。【００３２】  各要素プロセッサＰＥ０〜ＰＥ４は、同期要求信号をアサートしてから、同期許可信号がアサートされるまでの間、同期待ちとして処理の実行を停止する。
図３は、同期許可部２０１の論理回路構成を示す図である。
点線囲み部分３００で示す各ＯＲ回路素子にはそれぞれ、各同期制御部から受信した同期信号（ＳＹＮＣ０〜ＳＹＮＣ４）と、読み込んだ同期選択情報ＳＹＮＣＳＥＬ０の各ビット（ＳＹＮＣＳＥＬ［０］、ＳＹＮＣＳＥＬ［１］、ＳＹＮＣＳＥＬ［２］、ＳＹＮＣＳＥＬ［３］、ＳＹＮＣＳＥＬ［４］と表す）の反転値とが入力される。【００３３】  そして、各ＯＲ回路素子で論理和をとったそれぞれの結果は、ワイヤードＡＮＤ回路素子３０１に入力される。そして、ワイヤードＡＮＤ回路素子３０１の出力と、同期要求信号をＡＮＤ回路素子３０２に入力し、その結果をＳＹＮＣＡＣＫ信号線に出力する。
＜動作＞
ここで、具体的な動作をタイムチャートを用いて説明する。【００３４】  図４は、背景技術で述べた図１４に示す階層的な並列処理をマルチプロセッサシステム１に実行させた場合のタイムチャート図である。
各要素プロセッサＰＥ０〜ＰＥ４及び同期制御部Ｓ０〜Ｓ４の動作を、同図に示す各時間Ｔ１〜Ｔ７別に説明する。
＜時間Ｔ１＞
要素プロセッサＰＥ０は、時間Ｔ１からアプリの処理を開始し、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ０〜ＳＹＮＣＳＥＬ４をいずれも「００００１」とする設定を行う。要素プロセッサＰＥ０に対応する同期制御部Ｓ０の同期レジスタには、デフォルトの値０が設定されているので、同期信号ＳＹＮＣ０は、ディアサートのままである。【００３５】  要素プロセッサＰＥ１〜ＰＥ４は、時間Ｔ１において、それぞれが対応する同期制御部Ｓ１〜Ｓ４の同期レジスタに値１を設定し、同期要求信号をアサートする。
同期制御部Ｓ１〜Ｓ４は、いずれも同期レジスタに１の値が設定されたので、同期信号ＳＹＮＣ１〜４をアサートする。また、同期選択情報ＳＹＮＣＳＥＬ０〜ＳＹＮＣＳＥＬ４は、いずれも「００００１」と設定されており、要素プロセッサＰＥ０に対応する同期制御部Ｓ０が同期信号ＳＹＮＣ０をアサートしていないので、入力された同期要求信号がアサートされている同期制御部Ｓ１〜Ｓ４が、同期許可信号をアサートすることはない。【００３６】  ＜時間Ｔ２＞
時間Ｔ２の直前、すなわちプロセスＡ及びプロセスＢの開始前に、要素プロセッサＰＥ０は、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ３を「０１０００」とする設定を行い、プロセスＡの処理を開始する。
要素プロセッサＰＥ３に対応する同期制御部Ｓ３は、同期信号ＳＹＮＣ３をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ３が「０１０００」に設定され、要素プロセッサＰＥ３から同期要求信号がアサートされているので、同期制御部Ｓ３の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ３は、プロセスＢの処理を開始する。【００３７】  同期制御部Ｓ３は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ３をディアサートする。
時間Ｔ２において、要素プロセッサＰＥ１、ＰＥ２、ＰＥ４は同期待ち状態を維持する。
＜時間Ｔ３＞
時間Ｔ３の直前、すなわちスレッドＡ、Ｂ、Ｃの開始前に、要素プロセッサＰＥ０は、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ１を「０００１０」、同期選択情報ＳＹＮＣＳＥＬ２を「００１００」とする設定を行い、スレッドＡの処理を開始する。【００３８】  要素プロセッサＰＥ１に対応する同期制御部Ｓ１は、同期信号ＳＹＮＣ１をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ１が「０００１０」に設定され、要素プロセッサＰＥ１から同期要求信号がアサートされているので、同期制御部Ｓ１の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ１は、スレッドＢの処理を開始する。【００３９】  同期制御部Ｓ１は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ１をディアサートする。
要素プロセッサＰＥ２に対応する同期制御部Ｓ２は、同期信号ＳＹＮＣ２をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ２が「００１００」に設定され、要素プロセッサＰＥ２から同期要求信号がアサートされているので、同期制御部Ｓ２の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ２は、スレッドＣの処理を開始する。【００４０】  同期制御部Ｓ２は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ２をディアサートする。
時間Ｔ３において、要素プロセッサＰＥ４は同期待ち状態を維持する。
＜時間Ｔ４＞
時間Ｔ４の直前、すなわちスレッドＤ、Ｅの開始前に、要素プロセッサＰＥ３は、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ４を「１００００」とする設定を行い、スレッドＤの処理を開始する。【００４１】  要素プロセッサＰＥ４に対応する同期制御部Ｓ４は、同期信号ＳＹＮＣ４をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ４が「１００００」に設定され、要素プロセッサＰＥ４から同期要求信号がアサートされているので、同期制御部Ｓ４の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ４は、スレッドＥの処理を開始する。【００４２】  同期制御部Ｓ４は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ４をディアサートする。
＜時間Ｔ５＞
時間Ｔ５の前に、要素プロセッサＰＥ０は、スレッドＡの処理を終えて、ＳＹＮＣＳＥＬ０を「００１１０」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。【００４３】  また、要素プロセッサＰＥ２も時間Ｔ５の前に、スレッドＣの処理を終えて、ＳＹＮＣＳＥＬ０を「０００００」に設定し、同期要求信号をアサートする。その際、要素プロセッサＰＥ２は、同期信号ＳＹＮＣ２の値を１に設定するので、同期制御部Ｓ２は同期信号ＳＹＮＣ２をアサートする。
時間Ｔ５の直前に、要素プロセッサＰＥ１が、スレッドＢの処理を終えて、ＳＹＮＣＳＥＬ１を「０００００」に設定し、時間Ｔ５において、同期要求信号をアサートする。その際、要素プロセッサＰＥ１は、同期信号ＳＹＮＣ１の値を１に設定するので、同期制御部Ｓ１は同期信号ＳＹＮＣ１をアサートする。【００４４】  時間Ｔ５において、同期信号ＳＹＮＣ１、ＳＹＮＣ２がアサートされることにより、同期制御部Ｓ０は、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０は、プロセスＡの処理を開始する。
＜時間Ｔ６＞
時間Ｔ６の前に、要素プロセッサＰＥ３は、スレッドＤの処理を終えて、ＳＹＮＣＳＥＬ３を「１００００」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ３の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ３はディアサートされたままである。【００４５】  時間Ｔ６の直前に、要素プロセッサＰＥ４が、スレッドＥの処理を終えて、ＳＹＮＣＳＥＬ４を「０００００」に設定し、時間Ｔ６において、同期要求信号をアサートする。その際、要素プロセッサＰＥ４は、同期信号ＳＹＮＣ４の値を１に設定するので、同期制御部Ｓ４は同期信号ＳＹＮＣ４をアサートする。
時間Ｔ６において、同期信号ＳＹＮＣ４がアサートされることにより、同期制御部Ｓ３は、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ３は、プロセスＢの処理を開始する。【００４６】  ＜時間Ｔ７＞
時間Ｔ７の前に、要素プロセッサＰＥ０は、プロセスＡの処理を終えて、ＳＹＮＣＳＥＬ０を「０１０００」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。【００４７】  時間Ｔ７の直前に、要素プロセッサＰＥ３が、プロセスＢの処理を終えて、ＳＹＮＣＳＥＬ３を「０００００」に設定し、時間Ｔ７において、同期要求信号をアサートする。その際、要素プロセッサＰＥ３は、同期信号ＳＹＮＣ３の値を１に設定するので、同期制御部Ｓ３は同期信号ＳＹＮＣ３をアサートする。
時間Ｔ７において、同期信号ＳＹＮＣ３がアサートされることにより、同期制御部Ｓ０は、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０は、アプリの処理を開始する。
＜効果＞
以上で述べたマルチプロセッサシステム１を用いれば、各要素プロセッサの実際の同期待ちを示すアサートされた同期要求信号の出力に拠らずに、同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値を設定することができるので、上述のアプリ層、プロセス層、スレッド層といった各階層の処理を並列に実行する場合、スレッド層の処理の後に、同層の処理を行う他の要素プロセッサの処理を待ってから、プロセス層の処理を行う要素プロセッサ、例えば、要素プロセッサＰＥ３について、要素プロセッサＰＥ３がスレッド層の処理を終えても、対応する同期制御部Ｓ３が同期信号をアサートしないようにし、要素プロセッサＰＥ３がプロセス層の処理を終えれば、アプリ層の処理を行う要素プロセッサＰＥ０に対してプロセス層の処理が終わったことを通知するべく、同期信号をアサートするように設定することができる。【００４８】  これにより、要素プロセッサ間で正しく同期をとることができなくなるといった問題を発生することなく階層的な並列処理を実現することができる。
なお、上述のマルチプロセッサシステム１の動作において、いずれかの要素プロセッサは、同期要求信号をアサートする同期命令の実行前に同期選択情報の設定を行っていたが、同期選択情報と同期信号の値は、同じタイミングで変更することが多いので、同期命令に同期選択信号フィールドを設けてもよい。【００４９】  図５は、同期選択信号フィールドを含む同期命令のフォーマットを示す図である。
同期命令の命令長を３２ビットとし、下位の５ビットを同期選択信号フィールドとしている。
いずれかの要素プロセッサが係る同期命令を実行すると、同期選択信号フィールドの値を指定した同期制御部の同期選択情報として、共有メモリ４に設定するとしてもよい。【００５０】  また、要素プロセッサ数が５台以上の場合を考慮して、同期選択信号フィールドとして下位の１０ビットを割り当ててもよい。更に、要素プロセッサ数が３２台以上で、同期命令の命令長に収まらない場合、図６に示すように要素プロセッサ数と同じビット幅の同期選択テーブルを用意し、同期命令の下位ビットでそのテーブルをアドレッシングして同期選択情報を選択するようにしてもよい。【００５１】  また、上述の同期命令を実装していない要素プロセッサについては、データメモリへのロードストア命令をインオーダーで実行し、メモリアクセス待ちでインターロックする要素プロセッサであれば、ロードストア命令を同期命令の代わりに用いることができる。例えば、予め同期制御部に３２ビットメモリ空間上のアドレスを割り付けておき、そこへストア命令でのメモリリクエスト（ストローブ）を同期要求信号として、ストアデータを同期選択情報として同期制御部に出力し、同期許可信号をメモリアクノリッジとして要素プロセッサに返すことで、ストア命令を同期命令として機能させることができる。
＜変形例１＞
図７は変形例１のマルチプロセッサシステム１Ｘ（図示せず）の同期制御部Ｓ０Ｘの構成を示す図である。【００５２】  マルチプロセッサシステム１Ｘは、基本的に図１に示したマルチプロセッサシステム１と同じ構成であるが、各要素プロセッサＰＥ０Ｘ〜ＰＥ４Ｘと各同期制御部Ｓ０Ｘ〜Ｓ４Ｘとの接続関係が異なり、同期制御部Ｓ０Ｘ〜Ｓ４Ｘの内部構成も異なる。
同期制御部Ｓ０Ｘ〜Ｓ４Ｘの代表として同期制御部Ｓ０Ｘについてのみ説明する。
＜変形例１の構成＞
同期制御部Ｓ０Ｘは、その内部に同期信号出力部８００、同期許可部８０１、同期選択レジスタ８０２及び同期モードレジスタ８０３が備わる。【００５３】  上述の同期制御部Ｓ０と異なる点は、いずれかの要素プロセッサによって共有メモリ４に書き込まれた同期信号ＳＹＮＣ０の値が、共有バス２と接続された同期信号出力部８００に入力されるようにしている点と、同期選択レジスタ８０２と同期モードレジスタ８０３を備えた点である、
同期信号出力部８００には共有バス３が接続され、同期許可部８０１には、ＳＹＮＣ０〜ＳＹＮＣ４信号線（同期バス２）、ＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線が接続されている。【００５４】  また、ＳＹＮＣＭＯＤＥ０信号線が、同期モードレジスタ８０３に接続され、ＳＹＮＣＳＥＬ０信号線が同期選択レジスタ８０２接続されている。
同期信号出力部８００は、いずれかの要素プロセッサによって共有メモリ４に書き込まれたＳＹＮＣ０の値が共有バス２を介して入力され、その値が１であれば、ＳＹＮＣ０信号線をアサート状態にして出力し、０であれば、ＳＹＮＣ０信号線をディアサート状態にして出力する。【００５５】  ＳＹＮＣＲＥＱ信号線は、要素プロセッサＰＥ０が同期命令を実行したときにアサートされる信号線である。
ＳＹＮＣＭＯＤＥ０信号線は、要素プロセッサＰＥ０から設定される同期モード情報を同期モードレジスタ８０３に通知する信号線である。
ＳＹＮＣＳＥＬ０信号線は、要素プロセッサＰＥ０から設定される同期選択情報を同期選択レジスタ８０２に通知する信号線である。【００５６】  同期許可部８０１は、ＳＹＮＣＲＥＱ信号線より入力された同期要求信号と、ＳＹＮＣ０〜ＳＹＮＣ４信号線を介して受信した各同期制御部からの同期信号と、同期モードレジスタ８０３に書き込まれた同期モード情報ＳＹＮＣＭＯＤＥ０と、同期選択レジスタ８０２に書き込まれた同期選択情報ＳＹＮＣＳＥＬ０を用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０Ｘに出力する。【００５７】  図８は、同期許可部８０１の論理回路構成を示す図である。
点線囲み部分９００で示す各ＸＯＲ回路素子にはそれぞれ、各同期制御部から受信した同期信号（ＳＹＮＣ０〜ＳＹＮＣ４）と、同期モード情報ＳＹＮＣＭＯＤＥ０が入力される。そして、各ＸＯＲ回路素子で排他的論理和をとったそれぞれの結果は、点線囲み部分９０１で示す各ＯＲ回路素子に入力される。【００５８】  各ＯＲ回路素子には、更に、同期選択情報ＳＹＮＣＳＥＬ０の各ビット（ＳＹＮＣＳＥＬ［０］、ＳＹＮＣＳＥＬ［１］、ＳＹＮＣＳＥＬ［２］、ＳＹＮＣＳＥＬ［３］、ＳＹＮＣＳＥＬ［４］と表す）の反転値が入力される。
そして、各ＯＲ回路素子で論理和をとったそれぞれの結果は、ワイヤードＡＮＤ回路素子９０２に入力される。そして、ワイヤードＡＮＤ回路素子９０２の出力と、同期要求信号をＡＮＤ回路素子９０３に入力し、その結果をＳＹＮＣＡＣＫ信号線に出力する。【００５９】  ここで同期モード情報の役割について説明すると、同期モード情報は、０又は１の値で、同期モード情報が０の場合、同期信号はＸＯＲ回路素子をそのままの値で通過し、同期モード情報が１の場合、同期信号はＸＯＲ回路素子を通過する際にその値が反転される。
よって、同期モード情報を０にすることで、同期選択情報ＳＹＮＣ０において、１になっているビットと対応する同期信号が１であれば、同期許可信号がアサートされるようにすることができ、反対に、同期モード情報を１にすることで、同期選択情報ＳＹＮＣ０において、１になっているビットと対応する同期信号が０であれば、同期許可信号がアサートされるようにすることができるので、選択した同期信号がディアサートからアサートになるタイミングを見たい場合は同期モード情報を０にし、反対にディアサートからアサートになるタイミングを見たい場合は同期モード情報を１にするといった設定ができる。【００６０】  ＜変形例１の動作＞
ここで、具体的な動作をタイムチャートを用いて説明する。
図９は、背景技術で述べた図１４に示す階層的な並列処理をマルチプロセッサシステム１に実行させた場合のタイムチャート図である。
各要素プロセッサＰＥ０Ｘ〜ＰＥ４Ｘ及び同期制御部Ｓ０Ｘ〜Ｓ４Ｘの動作を、同図に示す各時間Ｔ１〜Ｔ７別に説明する。【００６１】  ＜時間Ｔ１＞
要素プロセッサＰＥ０Ｘは、時間Ｔ１からアプリの処理を開始し、共有メモリ４に同期信号ＳＹＮＣ０を０、ＳＹＮＣ１を１、ＳＹＮＣ２を０、ＳＹＮＣ３を１、ＳＹＮＣ４を１とする設定を行い、対応する同期制御部Ｓ０Ｘの同期選択レジスタに同期選択情報ＳＹＮＣＳＥＬ０を「０００００」、同期モードレジスタに同期モード情報を０とする設定を行う。【００６２】  要素プロセッサＰＥ１Ｘは、時間Ｔ１において、対応する同期制御部Ｓ１Ｘの同期選択レジスタに同期選択情報として「０００１０」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。
要素プロセッサＰＥ２Ｘは、時間Ｔ１において、対応する同期制御部Ｓ２Ｘの同期選択レジスタに同期選択情報として「０００１０」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。【００６３】  要素プロセッサＰＥ３Ｘは、時間Ｔ１において、対応する同期制御部Ｓ３Ｘの同期選択レジスタに同期選択情報として「０１０００」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。
要素プロセッサＰＥ４Ｘは、時間Ｔ１において、対応する同期制御部Ｓ４Ｘの同期選択レジスタに同期選択情報として「１００００」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。【００６４】  同期制御部Ｓ０Ｘは、同期信号出力部にＳＹＮＣ０の値０が入力されるので、同期信号ＳＹＮＣ０をディアサートする。
同期制御部Ｓ１Ｘは、同期信号出力部にＳＹＮＣ１の値１が入力されるので、同期信号ＳＹＮＣ１をアサートする。
同期制御部Ｓ２Ｘは、同期信号出力部にＳＹＮＣ２の値０が入力されるので、同期信号ＳＹＮＣ２をディアサートする。【００６５】  同期制御部Ｓ３Ｘは、同期信号出力部にＳＹＮＣ３の値１が入力されるので、同期信号ＳＹＮＣ３をアサートする。
同期制御部Ｓ４Ｘは、同期信号出力部にＳＹＮＣ４の値１が入力されるので、同期信号ＳＹＮＣ４をアサートする。
同期制御部Ｓ０Ｘは、同期モードレジスタに０の値が設定されたので、同期選択レジスタに設定された選択対象の同期信号がアサート（１）されない限り、同期許可信号をアサートすることはない。【００６６】  同期制御部Ｓ１Ｘ〜Ｓ４Ｘは、いずれも同期モードレジスタに１の値が設定されたので、各同期選択レジスタに設定された選択対象の同期信号がディアサート（０）されない限り、同期許可信号をアサートすることはない。
＜時間Ｔ２＞
時間Ｔ２において、要素プロセッサＰＥ０Ｘは、共有メモリ４に同期信号ＳＹＮＣ３の値を０にする設定を行い、プロセスＡの処理を開始する。【００６７】  同期制御部Ｓ３Ｘの同期信号出力部は、共有バス２を介して入力された同期信号ＳＹＮＣ３の値０により、同期信号ＳＹＮＣ３をディアサートする。この同期信号ＳＹＮＣ３のディアサートを同期制御部Ｓ３の同期許可部が受けて、同期許可信号をアサートする。
これにより、要素プロセッサＰＥ３Ｘは、プロセスＢの処理を開始する。
時間Ｔ２において、要素プロセッサＰＥ１、ＰＥ２、ＰＥ４は同期待ち状態を維持する。【００６８】  ＜時間Ｔ３＞
時間Ｔ３において、要素プロセッサＰＥ０は、共有メモリ４に同期信号ＳＹＮＣ１の値を０にする設定を行い、スレッドＡの処理を開始する。
同期制御部Ｓ１Ｘの同期信号出力部は、共有バス２を介して入力された同期信号ＳＹＮＣ１の値０により、同期信号ＳＹＮＣ１をディアサートする。この同期信号ＳＹＮＣ１のディアサートを同期制御部Ｓ１Ｘと同期制御部Ｓ２Ｘのそれぞれの同期許可部が受けて、各同期許可部は、同期許可信号をアサートする。【００６９】  これにより、要素プロセッサＰＥ１Ｘは、スレッドＢの処理を開始し、要素プロセッサＰＥ２Ｘは、スレッドＣの処理を開始する。
時間Ｔ３において、要素プロセッサＰＥ４は同期待ち状態を維持する。
＜時間Ｔ４＞
時間Ｔ４において、要素プロセッサＰＥ３Ｘは、共有メモリ４に同期信号ＳＹＮＣ４の値を０にする設定を行い、スレッドＤの処理を開始する。【００７０】  同期制御部Ｓ４Ｘの同期信号出力部は、共有バス２を介して入力された同期信号ＳＹＮＣ４の値０により、同期信号ＳＹＮＣ４をディアサートする。この同期信号ＳＹＮＣ４のディアサートを同期制御部Ｓ４Ｘの同期許可部が受けて、同期許可信号をアサートする。
これにより、要素プロセッサＰＥ４Ｘは、スレッドＥの処理を開始する。
＜時間Ｔ５＞
時間Ｔ５の前に、要素プロセッサＰＥ０Ｘは、スレッドＡの処理を終えて、ＳＹＮＣＳＥＬ０を「００１１０」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。【００７１】  また、要素プロセッサＰＥ２Ｘも時間Ｔ５の前に、スレッドＣの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ２Ｘは、共有メモリ２に同期信号ＳＹＮＣ２の値を１に設定するので、同期制御部Ｓ２Ｘは同期信号ＳＹＮＣ２をアサートする。
時間Ｔ５において、要素プロセッサＰＥ１Ｘが、スレッドＢの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ１Ｘは、共有メモリ２に同期信号ＳＹＮＣ１の値を１に設定するので、同期制御部Ｓ１Ｘは同期信号ＳＹＮＣ１をアサートする。【００７２】  時間Ｔ５において、同期信号ＳＹＮＣ１、ＳＹＮＣ２がアサートされることにより、同期制御部Ｓ０Ｘは、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０Ｘは、プロセスＡの処理を開始する。
＜時間Ｔ６＞
時間Ｔ６の前に、要素プロセッサＰＥ３Ｘは、スレッドＤの処理を終えて、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ３の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ３はディアサートされたままである。【００７３】  時間Ｔ６において、要素プロセッサＰＥ４Ｘが、スレッドＥの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ４Ｘは、同期信号ＳＹＮＣ４の値を１に設定するので、同期制御部Ｓ４Ｘは同期信号ＳＹＮＣ４をアサートする。
時間Ｔ６において、同期信号ＳＹＮＣ４がアサートされることにより、同期制御部Ｓ３Ｘは、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ３Ｘは、プロセスＢの処理を開始する。【００７４】  ＜時間Ｔ７＞
時間Ｔ７の前に、要素プロセッサＰＥ０Ｘは、プロセスＡの処理を終えて、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。
時間Ｔ７において、要素プロセッサＰＥ３Ｘが、プロセスＢの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ３Ｘは、同期信号ＳＹＮＣ３の値を１に設定するので、同期制御部Ｓ３Ｘは同期信号ＳＹＮＣ３をアサートする。【００７５】  時間Ｔ７において、同期信号ＳＹＮＣ３がアサートされることにより、同期制御部Ｓ０Ｘは、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０Ｘは、アプリの処理を開始する。
＜変形例１の効果＞
以上で述べたマルチプロセッサシステム１Ｘは、マルチプロセッサシステム１に比べると、その同期制御に共有メモリ４及び共有バス２を使用する回数を大幅に減らすことができるので、要素プロセッサの数が増えた場合に発生し得るオーバーヘッドを抑制する効果が期待できる。【００７６】  また、同期命令として、図１０に示す、同期選択フィールドと同期モードビットを含む命令フォーマットを用いてもよい。
更に、図１１及び図１２に示す構成の同期制御部を用いることも考えられる。
＜変形例２＞
図１１は、変形例２のマルチプロセッサシステム１Ｙ（図示せず）の同期制御部Ｓ０Ｙの構成を示す図である。【００７７】  マルチプロセッサシステム１Ｙは、基本的にマルチプロセッサシステム１Ｘと同じ構成であり動作も同じだが、各要素プロセッサＰＥ０Ｙ〜ＰＥ４Ｙと各同期制御部Ｓ０Ｙ〜Ｓ４Ｙとの接続関係が異なり、同期制御部Ｓ０Ｙ〜Ｓ４Ｙの内部構成が異なる。
よって、その異なる点についてのみ、同期制御部Ｓ０Ｙ〜Ｓ４Ｙの代表として同期制御部Ｓ０Ｙを説明する。【００７８】  同期制御部Ｓ０Ｙは、その内部に同期信号出力部１３００、同期許可部１３０１、同期モードレジスタ１３０２が備わる。
上述の同期制御部Ｓ０Ｘと異なる点は、同期選択レジスタ８０２を備えないようにした点である、
ＳＹＮＣＳＥＬ０信号線は、要素プロセッサＰＥ０Ｙから設定される同期選択情報を同期許可部１３０１に通知する信号線である。【００７９】  同期許可部１３０１は、ＳＹＮＣＲＥＱ信号線より入力された同期要求信号と、ＳＹＮＣ０〜ＳＹＮＣ４信号線を介して受信した各同期制御部からの同期信号と、同期モードレジスタ１３０３に書き込まれた同期モード情報ＳＹＮＣＭＯＤＥ０と、要素プロセッサＰＥ０Ｙから直接通知された同期選択情報ＳＹＮＣＳＥＬ０を用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０Ｙに出力する。【００８０】  ＜変形例３＞
図１２は、変形例３のマルチプロセッサシステム１Ｚ（図示せず）の同期制御部Ｓ０Ｚの構成を示す図である。
マルチプロセッサシステム１Ｚは、基本的にマルチプロセッサシステム１Ｘと同じ構成であり動作も同じだが、各要素プロセッサＰＥ０Ｚ〜ＰＥ４Ｚと各同期制御部Ｓ０Ｚ〜Ｓ４Ｚとの接続関係が異なり、同期制御部Ｓ０Ｚ〜Ｓ４Ｚの内部構成が異なる。【００８１】  よって、その異なる点についてのみ、同期制御部Ｓ０Ｚ〜Ｓ４Ｚの代表として同期制御部Ｓ０Ｚを説明する。
同期制御部Ｓ０Ｚは、その内部に同期信号出力部１４００、同期許可部１４０１が備わる。
上述の同期制御部Ｓ０Ｘと異なる点は、同期選択レジスタ８０２、同期モードレジスタ８０３を備えないようにした点である、
ＳＹＮＣＳＥＬ０信号線は、要素プロセッサＰＥ０Ｚから入力される同期選択情報を同期許可部１４０１に通知する信号線である。【００８２】  ＳＹＮＣＭＯＤＥ０信号線は、要素プロセッサＰＥ０Ｚから入力される同期モード情報を同期許可部１４０１に通知する信号線である。
同期許可部１４０１は、ＳＹＮＣＲＥＱ信号線より入力された同期要求信号と、ＳＹＮＣ０〜ＳＹＮＣ４信号線を介して受信した各同期制御部からの同期信号と、要素プロセッサＰＥ０Ｚから直接通知された同期選択情報ＳＹＮＣＳＥＬ０及び同期モード情報ＳＹＮＣＭＯＤＥ０を用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０Ｚに出力する。
【産業上の利用可能性】
【００８３】  本発明は、並列処理を行うマルチプロセッサシステムに有用である。
【図１】
2006046482.tif 000002
【図２】
2006046482.tif 000003
【図３】
2006046482.tif 000004
【図４】
2006046482.tif 000005
【図５】
2006046482.tif 000006
【図６】
2006046482.tif 000007
【図７】
2006046482.tif 000008
【図８】
2006046482.tif 000009
【図９】
2006046482.tif 000010
【図１０】
2006046482.tif 000011
【図１１】
2006046482.tif 000012
【図１２】
2006046482.tif 000013
【図１３】
2006046482.tif 000014
【図１４】
2006046482.tif 000015
【手続補正書】
【提出日】平成19年4月2日(2007.4.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムであって、
いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、
各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止し、
各同期制御部は、
前記設定された同期信号を互いに送受するために接続されており、
対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段を備える
ことを特徴とするマルチプロセッサシステム。
【請求項２】
前記マルチプロセッサシステムは、
各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部の同期選択情報を保持する領域がマッピングされた共有メモリを含み、
各同期制御部は、対応する要素プロセッサと専用線で接続された同期レジスタを備え、
各要素プロセッサは、次に実行する処理に応じて、当該同期レジスタに同期信号の値を設定する
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
いずれかの要素プロセッサは、同期選択情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報を設定することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
いずれかの要素プロセッサは、更に、いずれかの同期制御部に対して、前記所定の値を決める同期モード情報を設定し、
前記同期許可手段は、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した各同期信号のうち、前記設定された同期選択情報に基づいて選択した同期信号が、いずれも前記同期モード情報により決定された所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
前記マルチプロセッサシステムは、
各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部が送信する同期信号の値を保持する領域がマッピングされた共有メモリを含み、
各同期制御部は、
対応する要素プロセッサと専用線で接続された同期選択レジスタと、同期モードレジスタとを備え、
各要素プロセッサは、受信する同期信号のうち注目すべき同期信号の値に応じて、対応する同期制御部の同期選択レジスタに同期選択情報を設定し、対応する同期制御部の同期モードレジスタに同期モード情報を設定する
ことを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項６】
いずれかの要素プロセッサは、前記同期選択情報及び前記同期モード情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報及び当該同期モードを設定することを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項７】
複数の要素プロセッサを含むマルチプロセッサシステムにおいて、各要素プロセッサに対応して設ける同期制御装置であって、
いずれかの要素プロセッサによって設定された値を示す同期信号を他の複数の同期制御装置に送信する手段と、
他の同期制御装置から同期信号を受信する手段と、
対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段とを備える
ことを特徴とする同期制御装置。
【請求項８】
複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムに用いられる同期制御方法であって、
いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、
各同期制御部は、
いずれかの要素プロセッサによって設定された値の同期信号を互いに送受し、
対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力し、
各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止する
ことを特徴とする同期制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の要素プロセッサを含むマルチプロセッサシステムに関し、特に各要素プロセッサがそれぞれ実行するプロセス間の同期制御に関する。
【背景技術】
【０００２】
マルチプロセッサシステムの並列分散処理において、各要素プロセッサが実行するプロセス間でのデータの授受や処理順の一貫性を保つ必要がある場合、各要素プロセッサで同期をとって処理を進めるようにしている。
例えば、下記の特許文献１に開示されているマルチプロセッサシステムでは、各要素プロセッサに対応する同期制御部が備わっており、同期制御部間で同期信号を送受することで、各要素プロセッサが実行するプロセス間の同期を実現している。
【０００３】
図１３は、特許文献１に開示されているマルチプロセッサシステム１５００の構成を簡単に示した図である。
マルチプロセッサシステム１５００は、５つの要素プロセッサＰＥ０〜ＰＥ４と、各要素プロセッサに対応して設けられた同期制御部Ｚ０〜Ｚ４とを含む。
各要素プロセッサＰＥ０〜ＰＥ４と各同期制御部Ｚ０〜Ｚ４は、同図に示すように、それぞれＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線で接続されている。
【０００４】
ＳＹＮＣＲＥＱ信号線は、要素プロセッサから対応する同期制御部に同期信号のアサート、ディアサートを通知するための信号線であり、ＳＹＮＣＡＣＫ信号線は、同期制御部から対応する要素プロセッサに同期許可信号のアサート、ディアサートを通知するための信号線である。
各同期制御部Ｚ０〜Ｚ４は、同期バス１５０１に接続されており、互いにアサート又はディアサートされた同期信号を送受することができる。
【０００５】
ここで、マルチプロセッサシステム１５００に階層的な並列処理を実行させる場合について考える。
図１４は、各要素プロセッサＰＥ０〜ＰＥ４が実行する階層的な並列処理の流れを示す図である。
要素プロセッサＰＥ０にはアプリケーション層のアプリとプロセス層のプロセスＡとスレッド層のスレッドＡの処理が割り当てられており、要素プロセッサＰＥ１にはスレッドＢが、要素プロセッサＰＥ２にはスレッドＣが、要素プロセッサＰＥ３にはプロセスＢとスレッドＤが、要素プロセッサＰＥ４にはスレッドＥが割り当てられている。
【０００６】
アプリを実行する要素プロセッサＰＥ０は、ある時点でプロセスＡの処理を開始し、同時に要素プロセッサＰＥ３にプロセスＢの処理を開始させる。
プロセスＡを実行する要素プロセッサＰＥ０は、ある時点でスレッドＡの処理を開始し、要素プロセッサＰＥ１にスレッドＢを、要素プロセッサＰＥ２にスレッドＣの処理を開始させる。
【０００７】
プロセスＢを実行する要素プロセッサＰＥ３は、ある時点でスレッドＤの処理を開始し、要素プロセッサＰＥ４にスレッドＥの処理を開始させる。
プロセスＡを実行する要素プロセッサＰＥ０は、スレッドＡ、Ｂ、Ｃの処理が共に終了した時点で、それぞれのスレッドの処理結果を用いた処理を行い、プロセスＢを実行する要素プロセッサＰＥ３は、スレッドＤ、Ｅの処理が共に終了した時点で、それぞれのスレッドの処理結果を用いた処理を行う。
【０００８】
そして、アプリを実行する要素プロセッサＰＥ０は、プロセスＡ、Ｂの処理が共に終了した時点で、それぞれの処理結果を用いた処理を行う。
例えば、要素プロセッサＰＥ０がスレッドＡの処理を終了すると、ＳＹＮＣＲＥＱ信号をアサートし、対応する同期制御部Ｚ０は、要素プロセッサＰＥ０が同期待ちであることを示すべく同期信号ＳＹＮＣ０をアサートし、同期バス１５０１を介して他の同期制御部Ｚ１〜Ｚ４に要素プロセッサＰＥ０が同期待ちであることを通知する。
【０００９】
要素プロセッサＰＥ０は、同期制御部Ｚ０からＳＹＮＣＡＣＫ信号がアサートされるまで次の処理の実行を停止する。
スレッドＢの処理を実行する要素プロセッサＰＥ１に対応する同期制御部Ｚ１及びスレッドＣの処理を実行する要素プロセッサＰＥ２に対応する同期制御部Ｚ２それぞれからアサートされた同期信号が通知されると、同期制御部Ｚ０は、要素プロセッサＰＥ０に対して、同期待ちの解除を示すアサートされた同期許可信号を通知する。
【００１０】
要素プロセッサＰＥ０は、同期制御部Ｚ０からアサートされた同期許可信号の通知を受けると、次のプロセスＡの処理を開始する。
【特許文献１】特許第１９４０５８６号
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、ここで問題となるのは、スレッドＤを実行する要素プロセッサＰＥ３が、スレッドＤを終了した時点でＳＹＮＣＲＥＱ信号をアサートし、これを受けた同期制御部Ｚ３が同期信号をアサートする点である。
もし、この時点で、要素プロセッサＰＥ０がプロセスＡの処理を終えていれば、要素プロセッサＰＥ０は、プロセスＢの処理を実行する要素プロセッサＰＥ３と対応する同期制御部Ｚ３からの同期信号待ちをしていることになり、要素プロセッサＰＥ０と対応する同期制御部Ｚ０は、要素プロセッサＰＥ３のスレッドＤの終了による同期制御部Ｚ３の同期信号のアサートを、プロセスＢの終了による同期信号のアサートと誤認して、要素プロセッサＰＥ０に対して同期許可信号を送出することになる。
【００１２】
つまり、上記特許文献１に開示されているマルチプロセッサシステムに階層的な並列処理を行わせた場合、要素プロセッサ間で正しく同期をとることができなくなることが考えられる。
そこで、本発明は、上述のような階層的な並列処理を実現するマルチプロセッサシステム、同期制御装置及び同期制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明に係るマルチプロセッサシステムは、複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムであって、いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止し、各同期制御部は、前記設定された同期信号を互いに送受するために接続されており、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段を備えることを特徴とする。
【００１４】
また、本発明に係る同期制御装置は、複数の要素プロセッサを含むマルチプロセッサシステムにおいて、各要素プロセッサに対応して設ける同期制御装置であって、いずれかの要素プロセッサによって設定された値を示す同期信号を他の複数の同期制御装置に送信する手段と、他の同期制御装置から同期信号を受信する手段と、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力する同期許可手段とを備えることを特徴とする。
【００１５】
また、本発明に係る同期制御方法は、複数の要素プロセッサと、各要素プロセッサに対応して設けられた複数の同期制御部とを含むマルチプロセッサシステムに用いられる同期制御方法であって、いずれかの要素プロセッサは、いずれかの同期制御部に対して、当該同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値と、受信した同期信号の選択に用いられる同期選択情報とを設定し、各同期制御部は、いずれかの要素プロセッサによって設定された値の同期信号を互いに送受し、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した同期信号のうち、いずれかの要素プロセッサによって設定された同期選択情報に基づいて選択した同期信号が、いずれも所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力し、各要素プロセッサは、他の要素プロセッサと同期をとる必要のある処理を開始する前に、対応する同期制御部に対して同期要求信号を出力し、当該同期制御部から同期許可信号が入力されるまで当該処理の実行を停止することを特徴とする。
【発明の効果】
【００１６】
上記構成のマルチプロセッサシステムを用いれば、階層的な並列処理において、下位層の処理の後、同層の処理を行う他の第１の要素プロセッサの処理を待ってから中位層の処理を行う第２の要素プロセッサが、下位層の処理を終えても、対応する同期制御部が同期信号をアサートしないように設定することができ、反対に、当該第２の要素プロセッサが中位層の処理を終えれば、上位層の処理を行う第３の要素プロセッサに対して中位層の処理が終わったことを通知するべく、同期信号をアサートするように設定することができるので、要素プロセッサ間で正しく同期をとることができなくなるといった問題が生じることなく階層的な並列処理を実現することができる。
【００１７】
上記構成の同期制御装置を各要素プロセッサに対応して設けたマルチプロセッサシステムおよび、上記同期制御方法を用いたマルチプロセッサシステムについても同様に、階層的な並列処理を実現することができる。
ここで、前記マルチプロセッサシステムは、各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部の同期選択情報を保持する領域がマッピングされた共有メモリを含み、各同期制御部は、対応する要素プロセッサと専用線で接続された同期レジスタを備え、各要素プロセッサは、次に実行する処理に応じて、当該同期レジスタに同期信号の値を設定するとしてもよい。
【００１８】
この構成により、同期選択情報については、いずれかの要素プロセッサが共有メモリに事前に書き込むことで、いずれかの同期制御部の同期選択情報として設定され、同期信号の値については、各要素プロセッサが対応する同期制御部の同期レジスタに値を事前に書き込むことで設定することができるので、各要素プロセッサは、設定のために信号を出し続ける必要がない。
【００１９】
例えば、上位層の処理を行う第３の要素プロセッサがその処理中に、中位層及び下位層の処理を行う第２の要素プロセッサに対応する同期制御部の同期選択情報を事前に設定することができる。
ここで、いずれかの要素プロセッサは、同期選択情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報を設定するとしてもよい。
【００２０】
この構成により、一命令で同期要求信号の出力と、指定された同期制御部に同期選択情報の設定を行うことができる。
また、いずれかの要素プロセッサは、更に、いずれかの同期制御部に対して、前記所定の値を決める同期モード情報を設定し、前記同期許可手段は、対応する要素プロセッサから同期要求信号が入力され、且つ、受信した各同期信号のうち、前記設定された同期選択情報に基づいて選択した同期信号が、いずれも前記同期モード情報により決定された所定の値を示す場合に、対応する要素プロセッサに対して同期許可信号を出力するとしてもよい。
【００２１】
同期モード情報と同期選択情報により、選択した同期信号が決定した所定の値になれば、同期許可信号を出力するように設定することができる。
ここで、前記マルチプロセッサシステムは、各要素プロセッサ及び各同期制御部からアクセス可能で、各同期制御部が送信する同期信号の値を保持する領域がマッピングされた共有メモリを含み、各同期制御部は、対応する要素プロセッサと専用線で接続された同期選択レジスタと、同期モードレジスタとを備え、各要素プロセッサは、受信する同期信号のうち注目すべき同期信号の値に応じて、対応する同期制御部の同期選択レジスタに同期選択情報を設定し、対応する同期制御部の同期モードレジスタに同期モード情報を設定するとしてもよい。
【００２２】
この構成により、同期信号の値については、いずれかの要素プロセッサが共有メモリに事前に書き込むことで、いずれかの同期制御部の同期信号の値として設定され、同期選択情報及び同期モード情報については、各要素プロセッサが対応する同期制御部の同期レジスタに事前に情報を書き込むことで設定することができるので、各要素プロセッサは、設定のために信号を出し続ける必要がない。
【００２３】
ここで、いずれかの要素プロセッサは、前記同期選択情報及び前記同期モード情報を特定する情報を含む同期命令を実行することで、同期要求信号を対応する同期制御部に出力し、指定された同期制御部に対して当該同期選択情報及び当該同期モードを設定するとしてもよい。
この構成により、一命令で同期要求信号の出力と、指定された同期制御部に同期選択情報及び同期モード情報の設定を行うことができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の一実施形態について、図面を用いて説明する。
＜構成＞
図１は、マルチプロセッサシステム１の構成を示す図である。
マルチプロセッサシステム１は、５つの要素プロセッサＰＥ０〜ＰＥ４と、各要素プロセッサＰＥ０〜ＰＥ４に対応して設けられた同期制御部Ｓ０〜Ｓ４と、各同期制御部Ｓ０〜Ｓ４が接続された同期バス２と、各要素プロセッサＰＥ０〜ＰＥ４と各同期制御部Ｓ０〜Ｓ４と共有メモリが接続された共有バス３とを含む。
【００２５】
同期バス２は、要素プロセッサの数と同じ５本の信号線から成る。
各要素プロセッサＰＥ０〜ＰＥ４と対応する各同期制御部Ｓ０〜Ｓ４は、それぞれＳＹＮＣＳＥＴ信号線、ＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線で接続されている。
共有メモリ４には、各同期制御部Ｓ０〜Ｓ４の同期選択情報を保持する領域がマッピングされている。
【００２６】
同期選択情報は、最上位ビットからそれぞれの同期信号ＳＹＮＣ４、ＳＹＮＣ３、ＳＹＮＣ２、ＳＹＮＣ１、ＳＹＮＣ０に対応した５ビット２進数の情報であり、いずれかの要素プロセッサが共有メモリ４に書き込むことで設定される。
図２は、各同期制御部の代表として同期制御部Ｓ０の構成を示した図である。
同期制御部Ｓ１〜Ｓ４は、接続されている要素プロセッサ、信号線が異なるだけで、同様の構成であるので説明を省略する。
【００２７】
同期制御部Ｓ０は、その内部に同期レジスタ２００、同期許可部２０１を備える。
同期レジスタ２００には、ＳＹＮＣＳＥＴ信号線及びＳＹＮＣ０信号線が接続され、同期許可部２０１には、ＳＹＮＣ０〜ＳＹＮＣ４信号線（同期バス２）、共有バス３、ＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線が接続されている。
ＳＹＮＣＳＥＴ信号線は、要素プロセッサＰＥ０が設定した値を同期レジスタ２００に通知するための信号線である。
【００２８】
同期レジスタ２００が保持する値が１であれば、同期制御部Ｓ０は、ＳＹＮＣ０信号線をアサート状態にして出力し、保持する値が０であれば、ＳＹＮＣ０信号線をディアサート状態にして出力する。
ＳＹＮＣＲＥＱ信号線は、要素プロセッサＰＥ０が同期命令を実行したときにアサートされる同期要求信号を、対応する同期制御部Ｓ０に通知するための信号線である。
【００２９】
同期許可部２０１は、ＳＹＮＣＲＥＱ信号線より同期要求信号を入力とし、ＳＹＮＣ０〜ＳＹＮＣ４信号線より各同期制御部からの同期信号を受信し、共有バス３を介して、共有メモリ４に書き込まれた同期選択情報ＳＹＮＣＳＥＬ０を読み込み、受信した各同期信号と、同期選択情報ＳＹＮＣＳＥＬ０と、同期要求信号とを用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０に出力する。
【００３０】
各要素プロセッサＰＥ０〜ＰＥ４は、同期要求信号をアサートしてから、同期許可信号がアサートされるまでの間、同期待ちとして処理の実行を停止する。
図３は、同期許可部２０１の論理回路構成を示す図である。
点線囲み部分３００で示す各ＯＲ回路素子にはそれぞれ、各同期制御部から受信した同期信号（ＳＹＮＣ０〜ＳＹＮＣ４）と、読み込んだ同期選択情報ＳＹＮＣＳＥＬ０の各ビット（ＳＹＮＣＳＥＬ［０］、ＳＹＮＣＳＥＬ［１］、ＳＹＮＣＳＥＬ［２］、ＳＹＮＣＳＥＬ［３］、ＳＹＮＣＳＥＬ［４］と表す）の反転値とが入力される。
【００３１】
そして、各ＯＲ回路素子で論理和をとったそれぞれの結果は、ワイヤードＡＮＤ回路素子３０１に入力される。そして、ワイヤードＡＮＤ回路素子３０１の出力と、同期要求信号をＡＮＤ回路素子３０２に入力し、その結果をＳＹＮＣＡＣＫ信号線に出力する。
＜動作＞
ここで、具体的な動作をタイムチャートを用いて説明する。
【００３２】
図４は、背景技術で述べた図１４に示す階層的な並列処理をマルチプロセッサシステム１に実行させた場合のタイムチャート図である。
各要素プロセッサＰＥ０〜ＰＥ４及び同期制御部Ｓ０〜Ｓ４の動作を、同図に示す各時間Ｔ１〜Ｔ７別に説明する。
＜時間Ｔ１＞
要素プロセッサＰＥ０は、時間Ｔ１からアプリの処理を開始し、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ０〜ＳＹＮＣＳＥＬ４をいずれも「００００１」とする設定を行う。要素プロセッサＰＥ０に対応する同期制御部Ｓ０の同期レジスタには、デフォルトの値０が設定されているので、同期信号ＳＹＮＣ０は、ディアサートのままである。
【００３３】
要素プロセッサＰＥ１〜ＰＥ４は、時間Ｔ１において、それぞれが対応する同期制御部Ｓ１〜Ｓ４の同期レジスタに値１を設定し、同期要求信号をアサートする。
同期制御部Ｓ１〜Ｓ４は、いずれも同期レジスタに１の値が設定されたので、同期信号ＳＹＮＣ１〜４をアサートする。また、同期選択情報ＳＹＮＣＳＥＬ０〜ＳＹＮＣＳＥＬ４は、いずれも「００００１」と設定されており、要素プロセッサＰＥ０に対応する同期制御部Ｓ０が同期信号ＳＹＮＣ０をアサートしていないので、入力された同期要求信号がアサートされている同期制御部Ｓ１〜Ｓ４が、同期許可信号をアサートすることはない。
【００３４】
＜時間Ｔ２＞
時間Ｔ２の直前、すなわちプロセスＡ及びプロセスＢの開始前に、要素プロセッサＰＥ０は、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ３を「０１０００」とする設定を行い、プロセスＡの処理を開始する。
要素プロセッサＰＥ３に対応する同期制御部Ｓ３は、同期信号ＳＹＮＣ３をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ３が「０１０００」に設定され、要素プロセッサＰＥ３から同期要求信号がアサートされているので、同期制御部Ｓ３の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ３は、プロセスＢの処理を開始する。
【００３５】
同期制御部Ｓ３は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ３をディアサートする。
時間Ｔ２において、要素プロセッサＰＥ１、ＰＥ２、ＰＥ４は同期待ち状態を維持する。
＜時間Ｔ３＞
時間Ｔ３の直前、すなわちスレッドＡ、Ｂ、Ｃの開始前に、要素プロセッサＰＥ０は、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ１を「０００１０」、同期選択情報ＳＹＮＣＳＥＬ２を「００１００」とする設定を行い、スレッドＡの処理を開始する。
【００３６】
要素プロセッサＰＥ１に対応する同期制御部Ｓ１は、同期信号ＳＹＮＣ１をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ１が「０００１０」に設定され、要素プロセッサＰＥ１から同期要求信号がアサートされているので、同期制御部Ｓ１の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ１は、スレッドＢの処理を開始する。
【００３７】
同期制御部Ｓ１は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ１をディアサートする。
要素プロセッサＰＥ２に対応する同期制御部Ｓ２は、同期信号ＳＹＮＣ２をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ２が「００１００」に設定され、要素プロセッサＰＥ２から同期要求信号がアサートされているので、同期制御部Ｓ２の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ２は、スレッドＣの処理を開始する。
【００３８】
同期制御部Ｓ２は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ２をディアサートする。
時間Ｔ３において、要素プロセッサＰＥ４は同期待ち状態を維持する。
＜時間Ｔ４＞
時間Ｔ４の直前、すなわちスレッドＤ、Ｅの開始前に、要素プロセッサＰＥ３は、共有メモリ４に同期選択情報ＳＹＮＣＳＥＬ４を「１００００」とする設定を行い、スレッドＤの処理を開始する。
【００３９】
要素プロセッサＰＥ４に対応する同期制御部Ｓ４は、同期信号ＳＹＮＣ４をアサートしており、且つ、同期選択情報ＳＹＮＣＳＥＬ４が「１００００」に設定され、要素プロセッサＰＥ４から同期要求信号がアサートされているので、同期制御部Ｓ４の同期許可部は、同期許可信号をアサートする。これにより、要素プロセッサＰＥ４は、スレッドＥの処理を開始する。
【００４０】
同期制御部Ｓ４は、同期許可信号をアサートすると直ちに、同期信号ＳＹＮＣ４をディアサートする。
＜時間Ｔ５＞
時間Ｔ５の前に、要素プロセッサＰＥ０は、スレッドＡの処理を終えて、ＳＹＮＣＳＥＬ０を「００１１０」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。
【００４１】
また、要素プロセッサＰＥ２も時間Ｔ５の前に、スレッドＣの処理を終えて、ＳＹＮＣＳＥＬ０を「０００００」に設定し、同期要求信号をアサートする。その際、要素プロセッサＰＥ２は、同期信号ＳＹＮＣ２の値を１に設定するので、同期制御部Ｓ２は同期信号ＳＹＮＣ２をアサートする。
時間Ｔ５の直前に、要素プロセッサＰＥ１が、スレッドＢの処理を終えて、ＳＹＮＣＳＥＬ１を「０００００」に設定し、時間Ｔ５において、同期要求信号をアサートする。その際、要素プロセッサＰＥ１は、同期信号ＳＹＮＣ１の値を１に設定するので、同期制御部Ｓ１は同期信号ＳＹＮＣ１をアサートする。
【００４２】
時間Ｔ５において、同期信号ＳＹＮＣ１、ＳＹＮＣ２がアサートされることにより、同期制御部Ｓ０は、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０は、プロセスＡの処理を開始する。
＜時間Ｔ６＞
時間Ｔ６の前に、要素プロセッサＰＥ３は、スレッドＤの処理を終えて、ＳＹＮＣＳＥＬ３を「１００００」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ３の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ３はディアサートされたままである。
【００４３】
時間Ｔ６の直前に、要素プロセッサＰＥ４が、スレッドＥの処理を終えて、ＳＹＮＣＳＥＬ４を「０００００」に設定し、時間Ｔ６において、同期要求信号をアサートする。その際、要素プロセッサＰＥ４は、同期信号ＳＹＮＣ４の値を１に設定するので、同期制御部Ｓ４は同期信号ＳＹＮＣ４をアサートする。
時間Ｔ６において、同期信号ＳＹＮＣ４がアサートされることにより、同期制御部Ｓ３は、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ３は、プロセスＢの処理を開始する。
【００４４】
＜時間Ｔ７＞
時間Ｔ７の前に、要素プロセッサＰＥ０は、プロセスＡの処理を終えて、ＳＹＮＣＳＥＬ０を「０１０００」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。
【００４５】
時間Ｔ７の直前に、要素プロセッサＰＥ３が、プロセスＢの処理を終えて、ＳＹＮＣＳＥＬ３を「０００００」に設定し、時間Ｔ７において、同期要求信号をアサートする。その際、要素プロセッサＰＥ３は、同期信号ＳＹＮＣ３の値を１に設定するので、同期制御部Ｓ３は同期信号ＳＹＮＣ３をアサートする。
時間Ｔ７において、同期信号ＳＹＮＣ３がアサートされることにより、同期制御部Ｓ０は、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０は、アプリの処理を開始する。
＜効果＞
以上で述べたマルチプロセッサシステム１を用いれば、各要素プロセッサの実際の同期待ちを示すアサートされた同期要求信号の出力に拠らずに、同期制御部と対応する要素プロセッサが次に実行する処理に応じて、当該同期制御部が送信する同期信号の値を設定することができるので、上述のアプリ層、プロセス層、スレッド層といった各階層の処理を並列に実行する場合、スレッド層の処理の後に、同層の処理を行う他の要素プロセッサの処理を待ってから、プロセス層の処理を行う要素プロセッサ、例えば、要素プロセッサＰＥ３について、要素プロセッサＰＥ３がスレッド層の処理を終えても、対応する同期制御部Ｓ３が同期信号をアサートしないようにし、要素プロセッサＰＥ３がプロセス層の処理を終えれば、アプリ層の処理を行う要素プロセッサＰＥ０に対してプロセス層の処理が終わったことを通知するべく、同期信号をアサートするように設定することができる。
【００４６】
これにより、要素プロセッサ間で正しく同期をとることができなくなるといった問題を発生することなく階層的な並列処理を実現することができる。
なお、上述のマルチプロセッサシステム１の動作において、いずれかの要素プロセッサは、同期要求信号をアサートする同期命令の実行前に同期選択情報の設定を行っていたが、同期選択情報と同期信号の値は、同じタイミングで変更することが多いので、同期命令に同期選択信号フィールドを設けてもよい。
【００４７】
図５は、同期選択信号フィールドを含む同期命令のフォーマットを示す図である。
同期命令の命令長を３２ビットとし、下位の５ビットを同期選択信号フィールドとしている。
いずれかの要素プロセッサが係る同期命令を実行すると、同期選択信号フィールドの値を指定した同期制御部の同期選択情報として、共有メモリ４に設定するとしてもよい。
【００４８】
また、要素プロセッサ数が５台以上の場合を考慮して、同期選択信号フィールドとして下位の１０ビットを割り当ててもよい。更に、要素プロセッサ数が３２台以上で、同期命令の命令長に収まらない場合、図６に示すように要素プロセッサ数と同じビット幅の同期選択テーブルを用意し、同期命令の下位ビットでそのテーブルをアドレッシングして同期選択情報を選択するようにしてもよい。
【００４９】
また、上述の同期命令を実装していない要素プロセッサについては、データメモリへのロードストア命令をインオーダーで実行し、メモリアクセス待ちでインターロックする要素プロセッサであれば、ロードストア命令を同期命令の代わりに用いることができる。例えば、予め同期制御部に３２ビットメモリ空間上のアドレスを割り付けておき、そこへストア命令でのメモリリクエスト（ストローブ）を同期要求信号として、ストアデータを同期選択情報として同期制御部に出力し、同期許可信号をメモリアクノリッジとして要素プロセッサに返すことで、ストア命令を同期命令として機能させることができる。
＜変形例１＞
図７は変形例１のマルチプロセッサシステム１Ｘ（図示せず）の同期制御部Ｓ０Ｘの構成を示す図である。
【００５０】
マルチプロセッサシステム１Ｘは、基本的に図１に示したマルチプロセッサシステム１と同じ構成であるが、各要素プロセッサＰＥ０Ｘ〜ＰＥ４Ｘと各同期制御部Ｓ０Ｘ〜Ｓ４Ｘとの接続関係が異なり、同期制御部Ｓ０Ｘ〜Ｓ４Ｘの内部構成も異なる。
同期制御部Ｓ０Ｘ〜Ｓ４Ｘの代表として同期制御部Ｓ０Ｘについてのみ説明する。
＜変形例１の構成＞
同期制御部Ｓ０Ｘは、その内部に同期信号出力部８００、同期許可部８０１、同期選択レジスタ８０２及び同期モードレジスタ８０３が備わる。
【００５１】
上述の同期制御部Ｓ０と異なる点は、いずれかの要素プロセッサによって共有メモリ４に書き込まれた同期信号ＳＹＮＣ０の値が、共有バス２と接続された同期信号出力部８００に入力されるようにしている点と、同期選択レジスタ８０２と同期モードレジスタ８０３を備えた点である、
同期信号出力部８００には共有バス３が接続され、同期許可部８０１には、ＳＹＮＣ０〜ＳＹＮＣ４信号線（同期バス２）、ＳＹＮＣＲＥＱ信号線及びＳＹＮＣＡＣＫ信号線が接続されている。
【００５２】
また、ＳＹＮＣＭＯＤＥ０信号線が、同期モードレジスタ８０３に接続され、ＳＹＮＣＳＥＬ０信号線が同期選択レジスタ８０２接続されている。
同期信号出力部８００は、いずれかの要素プロセッサによって共有メモリ４に書き込まれたＳＹＮＣ０の値が共有バス２を介して入力され、その値が１であれば、ＳＹＮＣ０信号線をアサート状態にして出力し、０であれば、ＳＹＮＣ０信号線をディアサート状態にして出力する。
【００５３】
ＳＹＮＣＲＥＱ信号線は、要素プロセッサＰＥ０が同期命令を実行したときにアサートされる信号線である。
ＳＹＮＣＭＯＤＥ０信号線は、要素プロセッサＰＥ０から設定される同期モード情報を同期モードレジスタ８０３に通知する信号線である。
ＳＹＮＣＳＥＬ０信号線は、要素プロセッサＰＥ０から設定される同期選択情報を同期選択レジスタ８０２に通知する信号線である。
【００５４】
同期許可部８０１は、ＳＹＮＣＲＥＱ信号線より入力された同期要求信号と、ＳＹＮＣ０〜ＳＹＮＣ４信号線を介して受信した各同期制御部からの同期信号と、同期モードレジスタ８０３に書き込まれた同期モード情報ＳＹＮＣＭＯＤＥ０と、同期選択レジスタ８０２に書き込まれた同期選択情報ＳＹＮＣＳＥＬ０を用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０Ｘに出力する。
【００５５】
図８は、同期許可部８０１の論理回路構成を示す図である。
点線囲み部分９００で示す各ＸＯＲ回路素子にはそれぞれ、各同期制御部から受信した同期信号（ＳＹＮＣ０〜ＳＹＮＣ４）と、同期モード情報ＳＹＮＣＭＯＤＥ０が入力される。そして、各ＸＯＲ回路素子で排他的論理和をとったそれぞれの結果は、点線囲み部分９０１で示す各ＯＲ回路素子に入力される。
【００５６】
各ＯＲ回路素子には、更に、同期選択情報ＳＹＮＣＳＥＬ０の各ビット（ＳＹＮＣＳＥＬ［０］、ＳＹＮＣＳＥＬ［１］、ＳＹＮＣＳＥＬ［２］、ＳＹＮＣＳＥＬ［３］、ＳＹＮＣＳＥＬ［４］と表す）の反転値が入力される。
そして、各ＯＲ回路素子で論理和をとったそれぞれの結果は、ワイヤードＡＮＤ回路素子９０２に入力される。そして、ワイヤードＡＮＤ回路素子９０２の出力と、同期要求信号をＡＮＤ回路素子９０３に入力し、その結果をＳＹＮＣＡＣＫ信号線に出力する。
【００５７】
ここで同期モード情報の役割について説明すると、同期モード情報は、０又は１の値で、同期モード情報が０の場合、同期信号はＸＯＲ回路素子をそのままの値で通過し、同期モード情報が１の場合、同期信号はＸＯＲ回路素子を通過する際にその値が反転される。
よって、同期モード情報を０にすることで、同期選択情報ＳＹＮＣ０において、１になっているビットと対応する同期信号が１であれば、同期許可信号がアサートされるようにすることができ、反対に、同期モード情報を１にすることで、同期選択情報ＳＹＮＣ０において、１になっているビットと対応する同期信号が０であれば、同期許可信号がアサートされるようにすることができるので、選択した同期信号がディアサートからアサートになるタイミングを見たい場合は同期モード情報を０にし、反対にディアサートからアサートになるタイミングを見たい場合は同期モード情報を１にするといった設定ができる。
【００５８】
＜変形例１の動作＞
ここで、具体的な動作をタイムチャートを用いて説明する。
図９は、背景技術で述べた図１４に示す階層的な並列処理をマルチプロセッサシステム１に実行させた場合のタイムチャート図である。
各要素プロセッサＰＥ０Ｘ〜ＰＥ４Ｘ及び同期制御部Ｓ０Ｘ〜Ｓ４Ｘの動作を、同図に示す各時間Ｔ１〜Ｔ７別に説明する。
【００５９】
＜時間Ｔ１＞
要素プロセッサＰＥ０Ｘは、時間Ｔ１からアプリの処理を開始し、共有メモリ４に同期信号ＳＹＮＣ０を０、ＳＹＮＣ１を１、ＳＹＮＣ２を０、ＳＹＮＣ３を１、ＳＹＮＣ４を１とする設定を行い、対応する同期制御部Ｓ０Ｘの同期選択レジスタに同期選択情報ＳＹＮＣＳＥＬ０を「０００００」、同期モードレジスタに同期モード情報を０とする設定を行う。
【００６０】
要素プロセッサＰＥ１Ｘは、時間Ｔ１において、対応する同期制御部Ｓ１Ｘの同期選択レジスタに同期選択情報として「０００１０」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。
要素プロセッサＰＥ２Ｘは、時間Ｔ１において、対応する同期制御部Ｓ２Ｘの同期選択レジスタに同期選択情報として「０００１０」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。
【００６１】
要素プロセッサＰＥ３Ｘは、時間Ｔ１において、対応する同期制御部Ｓ３Ｘの同期選択レジスタに同期選択情報として「０１０００」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。
要素プロセッサＰＥ４Ｘは、時間Ｔ１において、対応する同期制御部Ｓ４Ｘの同期選択レジスタに同期選択情報として「１００００」を設定し、同期モードレジスタに同期モード情報として１を設定し、同期要求信号をアサートする。
【００６２】
同期制御部Ｓ０Ｘは、同期信号出力部にＳＹＮＣ０の値０が入力されるので、同期信号ＳＹＮＣ０をディアサートする。
同期制御部Ｓ１Ｘは、同期信号出力部にＳＹＮＣ１の値１が入力されるので、同期信号ＳＹＮＣ１をアサートする。
同期制御部Ｓ２Ｘは、同期信号出力部にＳＹＮＣ２の値０が入力されるので、同期信号ＳＹＮＣ２をディアサートする。
【００６３】
同期制御部Ｓ３Ｘは、同期信号出力部にＳＹＮＣ３の値１が入力されるので、同期信号ＳＹＮＣ３をアサートする。
同期制御部Ｓ４Ｘは、同期信号出力部にＳＹＮＣ４の値１が入力されるので、同期信号ＳＹＮＣ４をアサートする。
同期制御部Ｓ０Ｘは、同期モードレジスタに０の値が設定されたので、同期選択レジスタに設定された選択対象の同期信号がアサート（１）されない限り、同期許可信号をアサートすることはない。
【００６４】
同期制御部Ｓ１Ｘ〜Ｓ４Ｘは、いずれも同期モードレジスタに１の値が設定されたので、各同期選択レジスタに設定された選択対象の同期信号がディアサート（０）されない限り、同期許可信号をアサートすることはない。
＜時間Ｔ２＞
時間Ｔ２において、要素プロセッサＰＥ０Ｘは、共有メモリ４に同期信号ＳＹＮＣ３の値を０にする設定を行い、プロセスＡの処理を開始する。
【００６５】
同期制御部Ｓ３Ｘの同期信号出力部は、共有バス２を介して入力された同期信号ＳＹＮＣ３の値０により、同期信号ＳＹＮＣ３をディアサートする。この同期信号ＳＹＮＣ３のディアサートを同期制御部Ｓ３の同期許可部が受けて、同期許可信号をアサートする。
これにより、要素プロセッサＰＥ３Ｘは、プロセスＢの処理を開始する。
時間Ｔ２において、要素プロセッサＰＥ１、ＰＥ２、ＰＥ４は同期待ち状態を維持する。
【００６６】
＜時間Ｔ３＞
時間Ｔ３において、要素プロセッサＰＥ０は、共有メモリ４に同期信号ＳＹＮＣ１の値を０にする設定を行い、スレッドＡの処理を開始する。
同期制御部Ｓ１Ｘの同期信号出力部は、共有バス２を介して入力された同期信号ＳＹＮＣ１の値０により、同期信号ＳＹＮＣ１をディアサートする。この同期信号ＳＹＮＣ１のディアサートを同期制御部Ｓ１Ｘと同期制御部Ｓ２Ｘのそれぞれの同期許可部が受けて、各同期許可部は、同期許可信号をアサートする。
【００６７】
これにより、要素プロセッサＰＥ１Ｘは、スレッドＢの処理を開始し、要素プロセッサＰＥ２Ｘは、スレッドＣの処理を開始する。
時間Ｔ３において、要素プロセッサＰＥ４は同期待ち状態を維持する。
＜時間Ｔ４＞
時間Ｔ４において、要素プロセッサＰＥ３Ｘは、共有メモリ４に同期信号ＳＹＮＣ４の値を０にする設定を行い、スレッドＤの処理を開始する。
【００６８】
同期制御部Ｓ４Ｘの同期信号出力部は、共有バス２を介して入力された同期信号ＳＹＮＣ４の値０により、同期信号ＳＹＮＣ４をディアサートする。この同期信号ＳＹＮＣ４のディアサートを同期制御部Ｓ４Ｘの同期許可部が受けて、同期許可信号をアサートする。
これにより、要素プロセッサＰＥ４Ｘは、スレッドＥの処理を開始する。
＜時間Ｔ５＞
時間Ｔ５の前に、要素プロセッサＰＥ０Ｘは、スレッドＡの処理を終えて、ＳＹＮＣＳＥＬ０を「００１１０」に設定し、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。
【００６９】
また、要素プロセッサＰＥ２Ｘも時間Ｔ５の前に、スレッドＣの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ２Ｘは、共有メモリ２に同期信号ＳＹＮＣ２の値を１に設定するので、同期制御部Ｓ２Ｘは同期信号ＳＹＮＣ２をアサートする。
時間Ｔ５において、要素プロセッサＰＥ１Ｘが、スレッドＢの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ１Ｘは、共有メモリ２に同期信号ＳＹＮＣ１の値を１に設定するので、同期制御部Ｓ１Ｘは同期信号ＳＹＮＣ１をアサートする。
【００７０】
時間Ｔ５において、同期信号ＳＹＮＣ１、ＳＹＮＣ２がアサートされることにより、同期制御部Ｓ０Ｘは、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０Ｘは、プロセスＡの処理を開始する。
＜時間Ｔ６＞
時間Ｔ６の前に、要素プロセッサＰＥ３Ｘは、スレッドＤの処理を終えて、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ３の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ３はディアサートされたままである。
【００７１】
時間Ｔ６において、要素プロセッサＰＥ４Ｘが、スレッドＥの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ４Ｘは、同期信号ＳＹＮＣ４の値を１に設定するので、同期制御部Ｓ４Ｘは同期信号ＳＹＮＣ４をアサートする。
時間Ｔ６において、同期信号ＳＹＮＣ４がアサートされることにより、同期制御部Ｓ３Ｘは、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ３Ｘは、プロセスＢの処理を開始する。
【００７２】
＜時間Ｔ７＞
時間Ｔ７の前に、要素プロセッサＰＥ０Ｘは、プロセスＡの処理を終えて、同期要求信号をアサートする。その際、同期信号ＳＹＮＣ０の値は１に設定されることなく、０のままであるので、同期信号ＳＹＮＣ０はディアサートされたままである。
時間Ｔ７において、要素プロセッサＰＥ３Ｘが、プロセスＢの処理を終えて、同期要求信号をアサートする。その際、要素プロセッサＰＥ３Ｘは、同期信号ＳＹＮＣ３の値を１に設定するので、同期制御部Ｓ３Ｘは同期信号ＳＹＮＣ３をアサートする。
【００７３】
時間Ｔ７において、同期信号ＳＹＮＣ３がアサートされることにより、同期制御部Ｓ０Ｘは、同期許可信号をアサートし、これを受けた要素プロセッサＰＥ０Ｘは、アプリの処理を開始する。
＜変形例１の効果＞
以上で述べたマルチプロセッサシステム１Ｘは、マルチプロセッサシステム１に比べると、その同期制御に共有メモリ４及び共有バス２を使用する回数を大幅に減らすことができるので、要素プロセッサの数が増えた場合に発生し得るオーバーヘッドを抑制する効果が期待できる。
【００７４】
また、同期命令として、図１０に示す、同期選択フィールドと同期モードビットを含む命令フォーマットを用いてもよい。
更に、図１１及び図１２に示す構成の同期制御部を用いることも考えられる。
＜変形例２＞
図１１は、変形例２のマルチプロセッサシステム１Ｙ（図示せず）の同期制御部Ｓ０Ｙの構成を示す図である。
【００７５】
マルチプロセッサシステム１Ｙは、基本的にマルチプロセッサシステム１Ｘと同じ構成であり動作も同じだが、各要素プロセッサＰＥ０Ｙ〜ＰＥ４Ｙと各同期制御部Ｓ０Ｙ〜Ｓ４Ｙとの接続関係が異なり、同期制御部Ｓ０Ｙ〜Ｓ４Ｙの内部構成が異なる。
よって、その異なる点についてのみ、同期制御部Ｓ０Ｙ〜Ｓ４Ｙの代表として同期制御部Ｓ０Ｙを説明する。
【００７６】
同期制御部Ｓ０Ｙは、その内部に同期信号出力部１３００、同期許可部１３０１、同期モードレジスタ１３０２が備わる。
上述の同期制御部Ｓ０Ｘと異なる点は、同期選択レジスタ８０２を備えないようにした点である、
ＳＹＮＣＳＥＬ０信号線は、要素プロセッサＰＥ０Ｙから設定される同期選択情報を同期許可部１３０１に通知する信号線である。
【００７７】
同期許可部１３０１は、ＳＹＮＣＲＥＱ信号線より入力された同期要求信号と、ＳＹＮＣ０〜ＳＹＮＣ４信号線を介して受信した各同期制御部からの同期信号と、同期モードレジスタ１３０３に書き込まれた同期モード情報ＳＹＮＣＭＯＤＥ０と、要素プロセッサＰＥ０Ｙから直接通知された同期選択情報ＳＹＮＣＳＥＬ０を用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０Ｙに出力する。
【００７８】
＜変形例３＞
図１２は、変形例３のマルチプロセッサシステム１Ｚ（図示せず）の同期制御部Ｓ０Ｚの構成を示す図である。
マルチプロセッサシステム１Ｚは、基本的にマルチプロセッサシステム１Ｘと同じ構成であり動作も同じだが、各要素プロセッサＰＥ０Ｚ〜ＰＥ４Ｚと各同期制御部Ｓ０Ｚ〜Ｓ４Ｚとの接続関係が異なり、同期制御部Ｓ０Ｚ〜Ｓ４Ｚの内部構成が異なる。
【００７９】
よって、その異なる点についてのみ、同期制御部Ｓ０Ｚ〜Ｓ４Ｚの代表として同期制御部Ｓ０Ｚを説明する。
同期制御部Ｓ０Ｚは、その内部に同期信号出力部１４００、同期許可部１４０１が備わる。
上述の同期制御部Ｓ０Ｘと異なる点は、同期選択レジスタ８０２、同期モードレジスタ８０３を備えないようにした点である、
ＳＹＮＣＳＥＬ０信号線は、要素プロセッサＰＥ０Ｚから入力される同期選択情報を同期許可部１４０１に通知する信号線である。
【００８０】
ＳＹＮＣＭＯＤＥ０信号線は、要素プロセッサＰＥ０Ｚから入力される同期モード情報を同期許可部１４０１に通知する信号線である。
同期許可部１４０１は、ＳＹＮＣＲＥＱ信号線より入力された同期要求信号と、ＳＹＮＣ０〜ＳＹＮＣ４信号線を介して受信した各同期制御部からの同期信号と、要素プロセッサＰＥ０Ｚから直接通知された同期選択情報ＳＹＮＣＳＥＬ０及び同期モード情報ＳＹＮＣＭＯＤＥ０を用いて論理演算をすることにより、０（ディアサート）又は１（アサート）の同期許可信号をＳＹＮＣＡＣＫ信号線を介して要素プロセッサＰＥ０Ｚに出力する。
【産業上の利用可能性】
【００８１】
本発明は、並列処理を行うマルチプロセッサシステムに有用である。
【図面の簡単な説明】
【００８２】
【図１】マルチプロセッサシステム１の構成を示す図である。
【図２】同期制御部Ｓ０の構成を示した図である。
【図３】同期許可部２０１の論理回路構成を示す図である。
【図４】階層的な並列処理をマルチプロセッサシステム１に実行させた場合のタイムチャート図である。
【図５】同期選択信号フィールドを含む同期命令のフォーマットを示す図である。
【図６】同期命令と同期選択テーブルを示す図である。
【図７】同期制御部Ｓ０Ｘの構成を示す図である。
【図８】同期許可部８０１の論理回路構成を示す図である。
【図９】階層的な並列処理をマルチプロセッサシステム１Ｘに実行させた場合のタイムチャート図である。
【図１０】同期選択信号フィールド及び同期モードビットを含む同期命令のフォーマットを示す図である。
【図１１】同期制御部Ｓ０Ｙの構成を示す図である。
【図１２】同期制御部Ｓ０Ｚの構成を示す図である。
【図１３】従来のマルチプロセッサシステム１５００の構成を示した図である。
【図１４】各要素プロセッサＰＥ０〜ＰＥ４が実行する階層的な並列処理の流れを示す図である。
【符号の説明】
【００８３】
１、１５００  マルチプロセッサシステム
２、１５０１  同期バス
３  共有バス
４  共有メモリ
２００  同期レジスタ
２０１、８０１、１３０１、１４０１  同期許可部
８００、１３００  同期信号出力部
８０２  同期選択レジスタ
８０３、１３０２  同期モードレジスタ
ＰＥ０〜ＰＥ４、ＰＥ０Ｘ、ＰＥ０Ｙ、ＰＥ０Ｚ  要素プロセッサ
Ｓ０〜Ｓ４、Ｓ０Ｘ、Ｓ０Ｙ、Ｓ０Ｚ  同期制御部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2006046482.tif 000016
【図２】
2006046482.tif 000017
【図３】
2006046482.tif 000018
【図４】
2006046482.tif 000019
【図５】
2006046482.tif 000020
【図６】
2006046482.tif 000021
【図７】
2006046482.tif 000022
【図８】
2006046482.tif 000023
【図９】
2006046482.tif 000024
【図１０】
2006046482.tif 000025
【図１１】
2006046482.tif 000026
【図１２】
2006046482.tif 000027
【図１３】
2006046482.tif 000028
【図１４】
2006046482.tif 000029
【国際調査報告】
2006046482.tif 000030
2006046482.tif 000031
2006046482.tif 000032
2006046482.tif 000033
2006046482.tif 000034