(57)【要約】【課題】プロセッサの機能が変更される場合においても、プロセッサの制御を柔軟に、かつ、高速に行うことができるマルチプロセッサを提供する。【解決手段】マルチプロセッサ１は、バスに結合されている複数のプロセッサモジュール１１ａ〜１１ｎと、複数のプロセッサモジュール１１ａ〜１１ｎのそれぞれに対応して設けられ、対応するプロセッサモジュールから初期化時あるいは初期化後に書き込まれたコマンドメッセージ又はグループ情報を保持し、バスを介して受信されるコマンドメッセージと書き込まれたコマンドメッセージ、又はバスを介して受信されるグループ情報と書き込まれたグループ情報を比較し、比較した情報が一致したことを対応するプロセッサモジュールに通知する複数の受信メッセージ比較部２２とを有する。【選択図】図２
2010009576.tif 000002
【特許請求の範囲】
【請求項１】
バスに結合されている複数のプロセッサと、
前記複数のプロセッサのそれぞれに対応して設けられ、対応するプロセッサから初期化時あるいは初期化後に書き込まれたコマンドメッセージ又はグループ情報を保持し、前記バスを介して受信されるコマンドメッセージと前記書き込まれたコマンドメッセージ、又は前記バスを介して受信されるグループ情報と前記書き込まれたグループ情報を比較し、比較した情報が一致したことを前記対応するプロセッサに通知する複数の連想メモリと、
を有することを特徴とするマルチプロセッサ。
【請求項２】
前記複数のプロセッサのそれぞれに対応して設けられ、前記バスを介して受信されるコマンドメッセージ又はグループ情報を保持する複数のFIFOメモリを有し、
前記連想メモリは、前記コマンドメッセージ又はグループ情報の一部をマスクして前記一致を検出することを特徴とする請求項１に記載のマルチプロセッサ。
【請求項３】
バスに結合されている複数のプロセッサのそれぞれに対応して設けられ、対応するプロセッサから初期化時あるいは初期化後に書き込まれたコマンドメッセージ又はグループ情報を保持し、
前記バスを介して受信されるコマンドメッセージと前記書き込まれたコマンドメッセージ、又は前記バスを介して受信されるグループ情報と前記書き込まれたグループ情報を比較し、
比較した情報が一致したことを前記対応するプロセッサに通知することを特徴とするマルチプロセッサの制御方法。
【請求項４】
バスに結合されている複数のプロセッサと、
前記複数のプロセッサのそれぞれに対応して設けられ、バリア同期の対象となっているプロセッサの情報を含む同期グループ情報を前記バスを介して受信し、前記同期グループ情報から対応するプロセッサが前記バリア同期の対象となっているか否かを判定し、前記バリア同期の対象となっている場合、前記同期グループ情報が所定の記憶領域に記憶されているか否かを検出し、前記同期グループ情報が前記所定の記憶領域に記憶されていない場合、前記同期グループ情報と同期プロセッサ数とを前記所定の記憶領域に記憶し、前記同期グループ情報が前記所定の記憶領域に記憶されている場合、前記同期プロセッサ数をデクリメントし、デクリメントした値が所定の値となると前記バリア同期が完了したことを前記対応するプロセッサに通知する複数の連想メモリと、
を有することを特徴とするマルチプロセッサ。
【請求項５】
前記複数の連想メモリは、前記同期グループ情報から対応するプロセッサで実行されるタスクが前記バリア同期の対象になっているか否かを検出することを特徴とする請求項４に記載のマルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサ及びマルチプロセッサの制御方法に関し、特に、連想メモリを有するマルチプロセッサ及びマルチプロセッサの制御方法に関する。
【背景技術】
【０００２】
従来より、複数のプロセッサモジュール（以下、PMという）を有し、この複数のPMが１つのメモリを共有するメモリ共有型マルチプロセッサシステムが知られている。メモリ共有型マルチプロセッサシステムにおけるメッセージの通信、イベントの状態確認等を行う場合、各PM間の同期及び排他制御処理は、共有メモリ上に保持しているフラグ変数を利用して実現される。
【０００３】
各PMから共有メモリへの書き込みアクセスの頻度はそれほど高くないことが多いが、各PMは、システムの状態の確認のため一定間隔のポーリングを行い、フラグ変数の内容を確認する必要があるため、共有メモリへの読み込みアクセスの頻度は高くなることが多い。一般に、メモリ共有型マルチプロセッサシステムでは、PMの個数が増大すると共に、共有メモリへの読み込みアクセスがボトルネックとなり、システムのパフォーマンスが低下するという問題が発生する。
【０００４】
そこで、共有メモリへの読み込みアクセスを低減させるため、PM間に割り込み機能を導入し、割り込みイベントをトリガとして各PMに共有メモリへの割り込みを行わせる割り込み機能を備えたメモリ共有型マルチプロセッサシステムが知られている。そのシステムは、システム全体の制御を行うホスト機能を持ったPM（以下、ホストPMという）と、実際の演算等を行う複数のPM（以下、ゲストPMという）とにより構成されている。
【０００５】
そのシステムにおけるPM間の通信では、ゲストPMは共有メモリを更新作業後、システム全体の制御を行うホストPMへの割り込み信号を発生し、共有メモリを更新したことを通知する。ホストPMは、割り込み信号を受け付けると、共有メモリの確認及び更新を行い、ゲストPM間の同期処理完了など、ゲストPMへ通知すべき条件が成立した場合に各ゲストPMへ共有メモリの内容を確認するように割り込み信号を発行する。割り込み信号を受け取った各ゲストPMは、共有メモリ上のフラグ変数へ読み込みアクセスを行い、システムの状態を確認し処理を継続する。
【０００６】
以上のように、そのシステムは、ホストPMからの割り込み信号に基づいて、各ゲストPMは共有メモリへの読み込みアクセスを行うため、上述した一定間隔のポーリングを行うメモリ共有型マルチプロセッサシステムに比べて共有メモリへの読み込みアクセスを低減することができる。
【０００７】
しかしながら、そのシステムにおいても、常にホストPMを介してシステムの制御を行うため、ゲストPM間のみで十分な通信でもホストPMを介して行う必要がある。ゲストPM間で相互に割り込みによる通知を行えるようにゲストPM間に割り込み機構を備える手法も考えられるが、割り込み処理を実現するためのハードウエアは複雑になり回路規模が増大するという問題がある。
【０００８】
また、ホストPMからゲストPMへの割り込み信号において、割り込みが必要でないゲストPMへも割り込み信号が伝えられてしまう。ホストPMからの割り込み信号に従って、ゲストPMが一斉に共有メモリへアクセスするとバスアクセスの衝突が発生するという問題がある。
【０００９】
そこで、ホストプロセッサと複数のプロセッサエレメントとの間でデータの分散・配置・収集を行うシステムにおいて、ハードウエアの削減とデータ転送の効率化を図るマルチプロセッサシステムが提案されている（例えば、特許文献１参照）。
【００１０】
この提案によると、転送配列データに関する制御パラメータと受信装置に割り当てられた固有認識番号とを予め設定する。データバス上に順次送出されるデータは、制御パラメータ及び固有認識番号に基づいて、データ保持手段に取り込まれる。
【００１１】
しかし、この提案のマルチプロセッサシステムは、プロセッサユニットの機能が、動的に変更される場合には対応できないという問題がある。即ち、各プロセッサユニットの機能が決定されているのではなく、動的に変更される場合には、固有認識番号は使えなくなる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平６−２６６６７５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
そこで、本発明は、プロセッサの機能が変更される場合においても、プロセッサの制御を柔軟に、かつ、高速に行うことができるマルチプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一態様によれば、バスに結合されている複数のプロセッサと、前記複数のプロセッサのそれぞれに対応して設けられ、対応するプロセッサから初期化時あるいは初期化後に書き込まれたコマンドメッセージ又はグループ情報を保持し、前記バスを介して受信されるコマンドメッセージと前記書き込まれたコマンドメッセージ、又は前記バスを介して受信されるグループ情報と前記書き込まれたグループ情報を比較し、比較した情報が一致したことを前記対応するプロセッサに通知する複数の連想メモリとを有するマルチプロセッサを提供することができる。
【発明の効果】
【００１５】
本発明のマルチプロセッサによれば、プロセッサの機能が変更される場合においても、プロセッサの制御を柔軟に、かつ、高速に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態に係るマルチプロセッサの全体構成を説明するためのブロック図である。
【図２】第１の実施の形態に係るマルチプロセッサの詳細な構成を説明するためのブロック図である。
【図３】受信部の初期化及び変更を行う場合のタイミングチャートである。
【図４】メッセージの送信を行う場合のタイミングチャートである。
【図５】メッセージの受信を行う場合のタイミングチャートである。
【図６】PMとメッセージ送受信部の電源及びグランドについて説明するためのブロック図である。
【図７】第２の実施の形態に係るマルチプロセッサの詳細な構成を説明するためのブロック図である。
【図８】マスクの処理の例を説明するための説明図である。
【図９】問い合わせコマンドの場合について説明するための説明図である。
【図１０】第３の実施の形態に係るマルチプロセッサの詳細な構成を説明するためのブロック図である。
【図１１】同期グループ情報の例を説明するための説明図である。
【図１２】送信処理の流れの例を説明するためのフローチャートである。
【図１３】受信処理の流れの例を説明するためのフローチャートである。
【図１４】同期グループ情報の例を説明するための説明図である。
【図１５】受信処理の流れの例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の実施の形態を詳細に説明する。  
（第１の実施の形態）  
まず図１及び図２に基づき、本発明の第１の実施の形態に係るマルチプロセッサの構成を説明する。図１は、第１の実施の形態に係るマルチプロセッサの全体構成を説明するためのブロック図である。
【００１８】
１．全体構成
図１に示すように、マルチプロセッサ１は、複数のPM１１ａ〜１１ｎと、各PM間のメッセージ通信を行うためのメッセージ放送型のメッセージバス１２と、メッセージバス調停部１３と、PM１１ａ〜１１ｎのそれぞれとメッセージバス１２との入出力インターフェースとなるメッセージ送受信部１４ａ〜１４ｎとを有して構成されている。メッセージ送受信部１４ａ〜１４ｎは、それぞれPMからメッセージバス１２上にメッセージを送信する送信部１５ａ〜１５ｎと、メッセージバス１２上のメッセージを受信する受信部１６ａ〜１６ｎとを有している。
【００１９】
なお、マルチプロセッサ１は、共有メモリ４１、メモリバス４２及びメモリバス調停部４３を有する構成にしてもよい。また、マルチプロセッサ１は、図１において点線で示すように、PM１１ａ〜１１ｎにそれぞれローカルメモリ４４ａ〜４４ｎを有する構成にしてもよい。例えば、マルチプロセッサ１は、画像処理等を行う場合、共有メモリ４１を使用し、制御処理等を行う場合、ローカルメモリを使用するというように、目的に応じて構成を変更してもよい。
【００２０】
PM１１ａ〜１１ｎのそれぞれは、システム起動時に、各PMが受信すべきメッセージの情報をそれぞれの受信部１６ａ〜１６ｎに登録する。さらに、PM１１ａ〜１１ｎは、システム稼働中においても、状況に応じてそれぞれ受信部１６ａ〜１６ｎに登録されたメッセージの情報を変更することができる。
【００２１】
PM１１ａ〜１１ｎのそれぞれは、メッセージを送信する場合、それぞれの送信部１５ａ〜１５ｎに対してメッセージの送信要求を発行する。送信部１５ａ〜１５ｎのそれぞれは、メッセージの送信要求が発行されると、メッセージバス調停部１３に対してメッセージバス１２の使用権の取得を要求する。送信部１５ａ〜１５ｎのそれぞれは、メッセージバス１２の使用権を取得すると、送信メッセージをメッセージバス１２上に送信する。
【００２２】
受信部１６ａ〜１６ｎのそれぞれは、メッセージバス１２上に送信されたメッセージの情報と、上述したようにシステム起動時に設定された、あるいは、その後に変更された自己が受信すべきメッセージの情報とを比較し、受信すべきメッセージであるか否かを判定する。受信部１６ａ〜１６ｎは、メッセージバス１２上のメッセージが受信すべきメッセージであると判定すると、メッセージバス１２上のメッセージを受信し、受信したことをそれぞれPM１１ａ〜１１ｎに通知する。
【００２３】
２．詳細構成
次に、本実施の形態のマルチプロセッサの詳細な構成について説明する。なお、詳細な構成については、PM１１ａ及びメッセージ送受信部１４ａを用いて説明するが、他のPM及びメッセージ送受信部についても同様の構成となっている。図２は、第１の実施の形態に係るマルチプロセッサの詳細な構成を説明するためのブロック図である。
【００２４】
図２に示すように、送信部１５ａは、送信処理部２１を有し、受信部１６ａは、連想メモリ（以下、CAMという）により構成されている受信メッセージ比較部２２と、セレクタ２３と、インバータ２４と、信号発生部２５と、レジスタ２６と、FIFO２７とを有して構成されている。
【００２５】
メッセージバス１２は、メッセージを送信するためのMSGBUS、書き込み信号を送信するためのMWR、メッセージの送信要求を送信するためのREQUEST及びメッセージバス１２の使用を許可するための信号を送信するGRANTを有している。
【００２６】
メッセージバス調停部１３は、MSGBUS、MWR、REQUEST[1:n]及びGRANT[1:n]の各種信号のための複数の端子を有している。
【００２７】
メッセージ送受信部１４ａは、PM１１ａとメッセージバス１２との各種信号の送受信のための複数の端子とVDD１及びVSS１の端子を有している。
【００２８】
送信部１５ａの送信処理部２１は、SEND、DIN、WR、DOUT、REQUEST及びGRANTの各種信号のための複数の端子を有している。
【００２９】
受信部１６ａの受信メッセージ比較部２２は、ADDR、WRITE、DIN、MATCH、MOK及びMADDRの各種信号のための複数の端子を有している。
【００３０】
セレクタ２３は、IN０、IN１、SEL及びOUTの各種信号のための複数の端子を有している。
【００３１】
信号発生部２５は、WR、WR０、WR１及びENABLEの各種信号のための複数の端子を有している。
【００３２】
レジスタ２６は、DIN、WR及びDOUTの各種信号のための複数の端子を有している。
【００３３】
FIFO２７は、PUSH、DIN、EMPTY、FULL、POP及びDOUTの各種信号のための複数の端子を有している。
【００３４】
CAMDATA端子は、IN０端子に接続され、CAMWRITE端子は、SEL及びWRITE端子に接続され、CAMADDR端子は、ADDR端子に接続されている。FIFOREAD端子は、POP端子に接続され、MSGSEND端子は、SEND端子に接続され、MSGDATA端子は、送信処理部２１のDIN端子に接続されている。
【００３５】
送信処理部２１のWR端子は、インバータ２４の入力端子及びMWRに接続され、DOUT端子は、MSGBUSに接続され、REQUEST端子は、REQUEST[1:n]端子に接続され、GRANT端子は、GRANT[1:n]端子に接続されている。
【００３６】
インバータ２４の出力端子は、ENABLE端子に接続されている。
【００３７】
MWRは、信号発生部２５のWR端子に接続され、MSGBUSは、レジスタ２６のDIN端子に接続されている。WR０端子は、レジスタ２６のWR端子に接続され、WR１端子は、MATCH端子に接続される。
【００３８】
レジスタ２６のDOUT端子は、IN１端子に接続され、OUT端子は、受信メッセージ比較部２２のDIN端子に接続されている。
【００３９】
MOK端子は、PUSH端子に接続され、MADDR端子は、FIFO２７のDIN端子に接続されている。
【００４０】
EMPTY端子は、PM１１ａのFIFOINT及びWAKEUP端子に接続され、FULL端子は、PM１１ａのFIFOFULLINT及びFIFOSTATUSREAD端子に接続され、DOUT端子は、PM１１ａのFIFODATA端子に接続されている。
【００４１】
３．動作  
３．１  受信部の初期化及び変更時  
図３は、受信部の初期化及び変更を行う場合のタイミングチャートである。  
PM１１ａは、CAM用のアドレスCAMADDRを受信メッセージ比較部２２の入力ADDRに出力し、PM１１ａが受信すべきメッセージである書き込みデータCAMDATAをセレクタ２３の入力IN０に出力する。また、PM１１ａは、書き込み信号CAMWRITEを受信メッセージ比較部２２の入力WRITE及びセレクタ２３の入力SELに出力する。
【００４２】
セレクタ２３は、書き込み信号CAMWRITEに基づいて、書き込みデータCAMDATAを選択し、選択した書き込みデータCAMDATAを受信メッセージ比較部２２の入力DINに出力する。
【００４３】
受信メッセージ比較部２２は、書き込み信号CAMWRITEに基づいて、セレクタ２３からの書き込みデータCAMDATAをCAM用のアドレスCAMADDRに登録する。
【００４４】
また、PM１１ａは、書き込み信号CAMWRITEと、他のCAM用アドレスCAMADDR及び書き込みデータCAMDATAとを出力することにより、受信メッセージ比較部２２に複数の書き込みデータCAMDATAを登録することができる。
【００４５】
受信メッセージ比較部２２に登録された書き込みデータCAMDATAを変更する場合、PM１１ａは、変更するCAM用のアドレスCAMADDR及び書き込みデータCAMDATAをそれぞれ受信メッセージ比較部２２及びセレクタ２３に出力すると共に、書き込み信号CAMWRITEを受信メッセージ比較部２２及びセレクタ２３に出力する。この結果、PM１１ａは、初期化後にも自己が受信すべきメッセージの変更をすることができる。
【００４６】
３．２  メッセージの送信時  
図４は、メッセージの送信を行う場合のタイミングチャートである。  
PM１１ａは、送信部１５ａの送信処理部２１に対してメッセージ送信要求MSGSENDとメッセージMSGDATAを出力する。送信処理部２１は、このメッセージ送信要求MSGSENDが入力されると、メッセージバス調停部１３に対して、メッセージバス１２の使用権の取得を要求する信号REQUESTを出力する。メッセージバス調停部１３は、メッセージバス１２の使用権の取得を要求する信号REQUESTに基づいて、メッセージバス１２の使用権の取得の調停を行い、メッセージバス１２の使用権の取得が可能になると、メッセージバス１２の使用を許可する信号GRANTを送信処理部２１に出力する。送信処理部２１は、メッセージバス１２の使用権を取得後、PM１１ａからのメッセージMSGDATAを出力DOUTからメッセージバス１２上のMSGBUSに送信すると共に、書き込み信号WRをメッセージバス１２上のMWRに送信する。また、送信処理部２１は、この書き込み信号WRを受信部１６ａのインバータ２４にも出力する。
【００４７】
３．３  メッセージの受信時  
図５は、メッセージの受信を行う場合のタイミングチャートである。  
インバータ２４は、送信処理部２１からの書き込み信号WRを反転し、信号発生部２５の入力ENABLEに出力する。書き込み信号WRが有効な場合、インバータ２４により反転された信号が信号発生部２５に入力されるため、信号発生部２５は、無効な状態となり、後述するメッセージ書き込み信号及び一致検出信号を生成しない。即ち、メッセージ送受信部１４ａは、自己がメッセージバス１２に送信したメッセージを受信しないようになっている。
【００４８】
信号発生部２５の入力WRには、メッセージバス１２からの書き込み信号MWRが入力される。信号発生部２５は、この書き込み信号MWRからメッセージ書き込み信号WR０を生成し、生成したメッセージ書き込み信号WR０をレジスタ２６の入力WRに出力する。また、信号発生部２５は、この書き込み信号MWRから一致検出信号WR１を生成し、生成した一致検出信号WR１を受信メッセージ比較部２２の入力MATCHに出力する。
【００４９】
レジスタ２６には、メッセージバス１２上のMSGBUSからメッセージが入力されると共に、信号発生部２５からメッセージ書き込み信号WR０が入力される。レジスタ２６は、このメッセージ書き込み信号WR０に従って、メッセージを読み込み、読み込んだメッセージをセレクタ２３の入力IN１に出力する。
【００５０】
セレクタ２３は、選択信号に基づいて、読み込んだメッセージを受信メッセージ比較部２２の入力DINに出力する。
【００５１】
受信メッセージ比較部２２は、一致検出信号WR１に基づいて、入力されたメッセージと登録された複数のアドレスとの比較を行い、一致するデータのアドレスを検索する。受信メッセージ比較部２２は、一致するアドレスが検索できた場合、検出信号MOKと検出アドレスMADDRをメッセージキューFIFO２７に出力する。
【００５２】
上述したように、本実施の形態では、受信メッセージ比較部２２は、CAMにより構成されている。CAMは、入力データと登録されている全てのデータとの比較を並列に処理することにより、高速に一致するデータを検索することができる。
【００５３】
FIFO２７は、検出信号MOKに基づいて、検出されたアドレスMADDRをキューに保存すると共に、メッセージ受信を通知する割り込み信号EMPTYをPM１１ａの入力FIFOINTに出力する。また、この割り込み信号EMPTYは、後述するPM起動信号にもなるため、PM１１ａの入力WAKEUPにも出力される。
【００５４】
PM１１ａは、割り込み信号EMPTYを受け取ると、FIFO２７を読み込むための読み込み信号FIFOREADをFIFO２７の入力POPに出力する。FIFO２７は、読み込み信号FIFOREADが入力されると、キューに保存されたデータをPM１１ａの入力FIFODATAに出力する。PM１１ａは、FIFO２７からデータを受け取り所定の処理を実行する。
【００５５】
また、FIFO２７は、保存されたデータが一杯になると、一杯になったことを通知する割り込み信号FULLをPM１１ａに出力する。
【００５６】
ここで、PMとメッセージ送受信部の電源及びグランドについて説明する。図６は、PMとメッセージ送受信部の電源及びグランドについて説明するためのブロック図である。なお、図６の例では、PM１１ａ及びメッセージ送受信部１４ａを用いて説明する。また、図２と同様の構成については、同一符号を付して説明を省略する。
【００５７】
図６に示すように、PM１１ａとメッセージ送受信部１４ａの電源及びグランドは、分離されている。PM１１ａの電源及びグランドは、VDD０及びVSS０であり、メッセージ送受信部１４ａの電源及びグランドは、VDD１及びVSS１である。PM１１ａとメッセージ送受信部１４ａの電源を分離することにより、PM１１ａは、アイドル状態などに移行すると、低消費電力モード、或いは、自己の電源をオフにすることができる。PM１１ａは、メッセージ送受信部１４ａからのPM起動信号に基づいて、低消費電力モードからの復帰、或いは、自己の電源をオンにする。
【００５８】
このように、PM１１ａとメッセージ送受信部１４ａの電源を分離した場合、PM１１ａは、処理がないときには低消費電力モード、或いは、自己の電源をオフにすることができ、消費電力を低減することができる。
【００５９】
以上のように、メッセージを送信するPMは、受信相手のPMを特定せずメッセージバス１２上にメッセージを送信する。一方、受信側となる個々のPMでは、受信部の内部にあるCAMが、初期化時、あるいは、初期化後に登録された複数のメッセージの情報と、メッセージバス１２上に送信されているメッセージの情報とを高速に比較判定するようにした。この結果、受信部は、自己が受信すべきメッセージである場合は、受信すべきメッセージを内部のキューへ取り込み、PMに受信したことを通知することができる。
【００６０】
よって、本実施の形態のマルチプロセッサによれば、プロセッサの機能が変更される場合においても、プロセッサの制御を柔軟に、かつ、高速に行うことができる。
【００６１】
（第２の実施の形態）  
次に、第２の実施の形態について説明する。図７は、第２の実施の形態に係るマルチプロセッサの詳細な構成を説明するためのブロック図である。なお、図７において図２と同様の構成には同一符号を付して説明を省略する。また、本実施の形態のマルチプロセッサの全体構成は、第１の実施の形態と同様のため説明を省略する。
【００６２】
図７に示すように、本実施の形態のマルチプロセッサ１ａは、図２の受信メッセージ比較部２２及びFIFO２７に代わり、それぞれ受信メッセージ比較部２２ａ及びFIFO２７ａを用いると共に、マスクレジスタ３１及びAND回路３２を付加して構成されている。
【００６３】
マスクレジスタ３１は、DIN、WR及びDOUTの各種信号のための複数の端子を有している。PM１１ａのMASKWRITE及びMASKDATA端子は、それぞれマスクレジスタ３１のWR及びDIN端子に接続されている。また、マスクレジスタ３１のDOUT端子は、AND回路３２の一方の入力端子に接続されている。
【００６４】
レジスタ２６のDOUT端子は、AND回路３２の他方の入力端子に接続される共に、FIFO２７ａにも接続されている。AND回路３２の出力端子は、セレクタ２３のIN１端子に接続されている。
【００６５】
PM１１ａは、マスクデータMASKDATAとマスク書き込み信号MASKWRITEをマスクレジスタ３１に出力する。マスクレジスタ３１は、このマスク書き込み信号MASKWRITEに基づいて、マスクデータMASKDATAを取り込み、取り込んだマスクデータMASKDATAを出力DOUTからAND回路３２に出力する。
【００６６】
AND回路３２には、さらにレジスタ２６により取り込まれたメッセージも入力される。AND回路３２は、メッセージとマスクデータMASKDATAのAND処理を施し、メッセージの所定数のビットをマスクし、所定数のビットをマスクしたメッセージをセレクタ２３の入力IN１に出力する。
【００６７】
この所定数のビットをマスクしたメッセージは、セレクタ２３の出力OUTを介して受信メッセージ比較部２２ａの入力DINに入力される。受信メッセージ比較部２２ａは、入力されたメッセージの内、マスクされていない部分と登録されているアドレスとの比較を行い、一致するデータのアドレスを検索する。受信メッセージ比較部２２ａは、一致するアドレスが検索できた場合、検出信号MOKをメッセージキューFIFO２７ａに出力する。
【００６８】
FIFO２７ａには、レジスタ２６により取り込まれたメッセージが入力される。FIFO２７ａは、検出信号MOKに基づいて、レジスタ２６により取り込まれたメッセージ、即ち、マスクされる前のメッセージをキューに保存すると共に、PM１１ａに対してメッセージ受信を通知する割り込み信号EMPTYを出力する。
【００６９】
このように、マスクの処理を行うのは、複数あるプロセッサがグループに分けられている場合に有効である。
【００７０】
ここで、マスクの処理について説明する。図８は、マスクの処理の例を説明するための説明図である。なお、説明を簡単にするために、メッセージバス１２のメッセージのビット幅が、４ビットとする。
【００７１】
メッセージバス１２の４ビットのメッセージは、書き込み信号に基づいて、レジスタ２６に取り込まれる。例えば、図８の矢印１０１に示すように、この４ビットのメッセージの内、上位２ビットがグループ識別子（以下、グループIDという）であり、下位２ビットが、処理内容を示す命令であるものとする。この場合、PM１１ａからは、下位２ビットをマスクするためのマスクデータと書き込み信号とがマスクレジスタ３１に出力される。図８の矢印１０２に示すように、マスクデータは、書き込み信号に基づいて、マスクレジスタ３１に取り込まれる。
【００７２】
レジスタ２６及びマスクレジスタ３１に取り込まれたメッセージ及びマスクデータは、AND回路３２に入力され、AND処理が行われる。図８の矢印１０３に示すように、AND回路３２により下位２ビットがマスクされたメッセージは、受信メッセージ比較部２２ａに入力される。受信メッセージ比較部２２ａでは、入力されたメッセージの内、図８の点線矢印に示すマスクされていない上位２ビット、即ち、グループIDだけが、初期化時、あるいは、初期化後に設定された情報と比較される。比較の結果、グループIDが一致すると、検出信号がFIFO２７ａに出力される。
【００７３】
FIFO２７ａには、レジスタ２６からマスクされる前の４ビットのメッセージが入力されており、検出信号に基づいて、この４ビットのメッセージがキューに保存される。
【００７４】
図９は、問い合わせコマンドの場合について説明するための説明図である。例えば、図９の矢印１０４に示すように、４ビットのメッセージの内、上位２ビットが処理内容又は実行状態を問い合わせる問い合わせコマンドであり、下位２ビットが、問い合わせ内容を示す命令であるものとする。
【００７５】
この場合、上述したように、PM１１ａからは、下位２ビットをマスクするためのマスクデータと書き込み信号とがマスクレジスタ３１に出力され、図９の矢印１０５に示すマスクデータがマスクレジスタ３１に取り込まれる。AND回路３２では、このマスクデータと取り込まれたメッセージとのAND処理が行われ、図９の矢印１０６に示す下位２ビットがマスクされたメッセージがセレクタ２３を介して受信メッセージ比較部２２ａに入力される。受信メッセージ比較部２２ａでは、入力されたメッセージの内、マスクされていない上位２ビット、即ち、問い合わせコマンドだけが、初期化時、あるいは、初期化後に設定された情報と比較される。比較の結果、問い合わせコマンドが一致すると、検出信号がFIFO２７ａに出力される。
【００７６】
FIFO２７ａには、レジスタ２６からマスクされる前の４ビットのメッセージが入力されており、検出信号に基づいて、この４ビットのメッセージがキューに保存される。
【００７７】
PM１１ａは、この問い合わせコマンドに対して、図９の矢印１０７に示すように、回答コマンド、問い合わせに対する回答、プロセッサID等の情報を付加したメッセージを生成する。生成されたメッセージは、送信部１５ａを介してメッセージバス１２に送信される。
【００７８】
なお、図９では、処理内容又は実行状態を問い合わせる問い合わせコマンドについて説明したが、特定の処理の実行可能性を問い合わせる問い合わせコマンド、又は、特定の処理を指示する指示コマンドであってもよい。
【００７９】
以上のように、マルチプロセッサ１ａは、メッセージバス１２上のメッセージの内、グループID又は問い合わせコマンドを示す所定のビットのみ比較判定するようにした。この結果、受信部の受信メッセージ比較部内の比較回路は、図８及び図９の例の場合、２ビット分にすることができる。即ち、受信したメッセージを全ビット比較する場合に比べて、比較回路の数量を削減することができる。
【００８０】
よって、本実施の形態のマルチプロセッサによれば、第１の実施の形態と同様に、プロセッサの機能が変更される場合においても、プロセッサの制御を柔軟に、かつ、高速に行うことができると共に、第１の実施の形態のマルチプロセッサに比べて受信メッセージ比較部の回路規模を削減することができる。
【００８１】
（第３の実施の形態）
次に、第３の実施の形態について説明する。本実施の形態では、マルチプロセッサシステムにおけるPM間のバリア同期について説明する。
【００８２】
マルチプロセッサシステムにおいて、ある１つの処理を複数のタスクに分割し、これらの分割した複数のタスクを複数のPMに割り当てて実行することにより、処理の高速化を図っている。各PMに割り当てられたタスク間のデータの教授あるいは実行順序の維持が必要な場合、PM間の同期を取る操作が必要となる。このような同期を取る操作の一種にバリア同期と呼ばれる技術がある。このバリア同期は、同一ジョブに属するタスク処理が終了した時点で、それ以降のタスク処理を継続するものである。
【００８３】
メモリ共有型のマルチプロセッサシステムでは、PM間の同期や排他処理は、共有メモリ上に保持しているフラグ変数を利用して実現される。個々のPMから共有メモリへの書き込みの頻度はそれほど高くないことが多いが、個々のPMはシステムの状態の確認のため一定間隔のポーリングを行い、フラグ変数の内容を確認する必要がある。そのため、メモリ共有型のマルチプロセッサシステムでは、共有メモリへの読み込みアクセスの頻度は高くなることが多い。一般にメモリ共有型マルチプロセッサシステムでは、PMの個数が増大すると共に、共有メモリへの読み込みアクセスがボトルネックとなり、システムのパフォーマンスが低下するという問題が発生する。
【００８４】
この問題を解決するために、共有メモリとは別に、PM間の同期を取るための同期及び通信専用装置を設け、これらの同期及び通信専用装置とPMとの間を専用バスで接続する方法がある。これにより、同期処理に必要な資源に対するアクセスが通常のメモリアクセスとは別になるため、上述したパフォーマンス低下を取り除くことができる。しかし、同期及び通信専用装置がマルチプロセッサシステム内に１つしかない場合、同期回数の多いアプリケーションを実行すると、同期処理のオーバーヘッドが増大する問題がある。
【００８５】
さらに、同期処理のオーバーヘッドを削減するために、同期及び通信専用装置をPM毎に設け、PM毎に設けられた同期及び通信専用装置を専用バスで接続する方法がある。しかし、既存の技術ではハードウエア設計時に同期及び通信専用装置に必要なレジスタあるいはカウンタの数を決定する必要があり、同期に必要な資源数が固定されるためにバリア同期を同時に使用できるグループ数が制限されてしまう。また、バリア同期を同時に使用できるグループ数を増やす場合、ハードウエア設計を見直す必要がある。そこで、本実施の形態では、PM間のバリア同期を効率的、かつ、柔軟に行うことができるマルチプロセッサについて説明する。
【００８６】
図１０は、第３の実施の形態に係るマルチプロセッサの詳細な構成を説明するためのブロック図である。なお、図１０において図２と同様の構成には同一の符号を付して説明を省略する。また、本実施の形態のマルチプロセッサの全体構成は、第１の実施の形態と同様のため説明を省略する。
【００８７】
本実施の形態のマルチプロセッサ１ｂは、マルチプロセッサ１のインバータ２４を削除すると共に、受信メッセージ比較部２２に代わり受信メッセージ比較部２２ｂを用いて構成されている。インバータ２４を削除することにより、メッセージ送受信部１４ａは、自己が送信したメッセージを受信できるようになっている。
【００８８】
受信メッセージ比較部２２ｂは、同期グループ情報記憶部５１と、同期制御部５２とを有して構成されている連想メモリである。
【００８９】
同期グループ情報記憶部５１は、後述するバリア同期PMグループ情報（以下、同期グループ情報という）と、この同期グループ情報に関連付けられるデータとが記憶される。同期制御部５２は、同期グループ情報記憶部５１に同期グループ情報及びデータを記憶する制御を行うと共に、バリア同期が完了すると、同期完了信号をPM１１ａに出力する制御を行う。
【００９０】
図１１は、同期グループ情報の例を説明するための説明図である。図１１に示すように、同期グループ情報は、マルチプロセッサ１ｂ内の全てのPM１１ａ〜１１ｎをビットとして表現できるに、全てのPM１１ａ〜１１ｎの個数と同等のビット幅を有している。同期グループ情報の各ビットには、それぞれPM１１ａ〜PM１１ｎが対応付けられている。ビットの値が１の場合、対応するPMがバリア同期の対象であることを示し、ビットの値が０の場合、対応するPMがバリア同期の対象でないことを示している。
【００９１】
図１１の例では、PM１１ａ、PM１１ｂ及びPM１１ｎに対応するビットの値がそれぞれ１であり、PM１１ｃに対応するビットの値が０である。即ち、図１１に示す同期グループ情報は、PM１１ａ、PM１１ｂ及びPM１１ｎの３つのPM間においてバリア同期を行うための同期グループ情報である。
【００９２】
ここで、PM１１ａ、PM１１ｂ及びPM１１ｎの３つのPM間においてバリア同期を実行する具体例について説明する。即ち、PM１１ａ、PM１１ｂ及びPM１１ｎのそれぞれが同一ジョブに属するタスク処理を終了した時点で、バリア同期を実行し、それ以降のタスク処理を継続する。
【００９３】
PM１１ａは、同一ジョブに属するタスク処理を終了すると、他のPM、ここではPM１１ｂ及びPM１１ｎとバリア同期を行うため、図１１に示す同期グループ情報を送信部１５ａの送信処理部２１に送信する。なお、他のPMは、PM１１ｂ及びPM１１ｎに限定されず、PM１１ｂ〜１１ｎの全て、あるいは、PM１１ｂ〜１１ｎの一部であってもよい。
【００９４】
PM１１ａは、同期グループ情報を送信処理部２１に送信すると、後述する同期完了信号を受信するまで、後続の命令の処理を停止する。PM１１ａとメッセージ送受信部１４ａとの電源及びグランドは、分離されている。そのため、PM１１ａは、後続の命令の処理を停止している期間、低消費電力モードに移行、或いは、自己の電源をオフにして、消費電力を削減することができる。
【００９５】
送信処理部２１は、この同期グループ情報を、受信相手を特定せずにメッセージ放送型のメッセージバス１２に送信する。
【００９６】
受信部１６ａは、メッセージバス１２に送信された同期グループ情報を受信する。受信された同期グループ情報は、レジスタ２６及びセレクタ２３を介して、受信メッセージ比較部２２ｂに供給される。
【００９７】
受信メッセージ比較部２２ｂは、同期グループ情報の同期グループに自己のPM、即ち、PM１１ａが含まれているか否かを検出する。受信メッセージ比較部２２ｂは、同期グループにPM１１ａが含まれている場合、同期グループ情報を受信し、同期グループにPM１１ａが含まれていない場合、同期グループ情報を受信しない。受信メッセージ比較部２２ｂは、同期グループ情報のPM１１ａに対応するビットの値を確認することにより、同期グループにPM１１ａが含まれるか否かを検出することができる。本実施の形態では、PM１１ａに対応するビットの値が１のため、同期グループ情報が受信されることになる。
【００９８】
受信メッセージ比較部２２ｂにより同期グループ情報が受信されると、同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されているか否かを検出する。同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されていない場合、同期グループ情報からバリア同期の対象となっているPM数を算出する。このバリア同期の対象となっているPM数は、例えば、同期グループ情報のビットの値が１となっているPMの個数を加算することにより算出することができる。ここでは、PM１１ａ、PM１１ｂ及びPM１１ｎに対応するビットの値が１となっているため、バリア同期の対象となっているPM数は、３と算出される。以下、バリア同期の対象となっているPM数を単に同期PM数という。
【００９９】
同期制御部５２は、同期グループ情報と、この同期グループ情報に関連付けられるデータとを同期グループ情報記憶部５１に記憶するための記憶領域を確保する。同期制御部５２は、この記憶領域に同期グループ情報と、この同期グループ情報に関連付けられるデータとして、“同期PM数−１”の値を書き込む。ここでは、同期PM数が３のため、“同期PM数−１”の値は、２となる。
【０１００】
このように、同期グループ情報が同期グループ情報記憶部５１に記憶されていない場合、同期グループ情報記憶部５１には、同期グループ情報と“同期PM数−１”の値とが対応付けられて記憶される。同様の受信処理が、バリア同期の対象となっているPM１１ｂに対応する受信部１６ｂ及びPM１１ｎに対応する受信部１６ｎにおいてもそれぞれ実行される。
【０１０１】
次に、PM１１ｂは、同一ジョブに属するタスク処理を終了すると、同期グループ情報を送信部１５ｂに送信し、低消費電力モードに移行、或いは、自己の電源をオフにする。送信部１５ｂは、同期グループ情報をメッセージバス１２に送信する。
【０１０２】
受信部１６ａは、この同期グループ情報を受信し、受信メッセージ比較部２２ｂに供給する。受信メッセージ比較部２２ｂは、PM１１ａが同期グループに含まれているため、同期グループ情報を受信する。
【０１０３】
同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されているか否かを検出する。上述した受信処理により、同期グループ情報記憶部５１に同期グループ情報が記憶されている。そのため、同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されていると検出する。
【０１０４】
同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されている場合、同期グループ情報に関連付けられるデータを読み出して、１だけ減算し、同じ記憶領域に減算した値を書き込む。上述した受信処理により、同期グループ情報に関連付けられるデータとして、２が記憶されている。そのため、同期制御部５２は、同じ記憶領域に減算した値として１を書き込む。
【０１０５】
同期制御部５２は、書き込まれたデータが０か否かを検出する。同期制御部５２は、データが０でない場合、受信処理を終了する。同様の受信処理が、バリア同期の対象となっているPM１１ｂに対応する受信部１６ｂ及びPM１１ｎに対応する受信部１６ｎにおいてもそれぞれ実行される。
【０１０６】
次に、PM１１ｎは、同一ジョブに属するタスク処理を終了すると、同期グループ情報を送信部１５ｎに送信し、低消費電力モードに移行、或いは、自己の電源をオフにする。送信部１５ｎは、同期グループ情報をメッセージバス１２に送信する。
【０１０７】
受信部１６ａは、この同期グループ情報を受信し、受信メッセージ比較部２２ｂに供給する。受信メッセージ比較部２２ｂは、PM１１ａが同期グループに含まれているため、同期グループ情報を受信する。
【０１０８】
同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されているか否かを検出する。上述した受信処理により、同期グループ情報記憶部５１に同期グループ情報が記憶されている。そのため、同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されていると検出する。
【０１０９】
同期制御部５２は、同期グループ情報が同期グループ情報記憶部５１に記憶されている場合、同期グループ情報に関連付けられるデータを読み出して、１だけ減算し、同じ記憶領域に減算した値を書き込む。上述した受信処理により、同期グループ情報に関連付けられるデータとして、１が記憶されている。そのため、同期制御部５２は、同じ記憶領域に減算した値として０を書き込む。
【０１１０】
同期制御部５２は、書き込まれたデータが０か否かを検出する。同期制御部５２は、データが０の場合、同期グループ情報記憶部５１から同期グループ情報と、関連付けられたデータとを削除し、PM１１ａに同期完了信号を送信する。同様の受信処理が、バリア同期の対象となっているPM１１ｂに対応する受信部１６ｂ及びPM１１ｎに対応する受信部１６ｎにおいてもそれぞれ実行される。
【０１１１】
なお、同期制御部５２は、同期グループ情報に関連付けられるデータとして、“同期PM数−１”の値を同期グループ情報記憶部５１の記憶領域に記憶するが、例えば、同期PM数”の値を記憶領域に記憶してもよい。この場合、同期制御部５２は、このデータが１か否かを検出することにより、バリア同期が完了したか否かを判定することができる。
【０１１２】
以上のように、PM１１ａ、１１ｂ及び１１ｎの間においてバリア同期を実行する場合、PM１１ａ、１１ｂ及び１１ｎのそれぞれが、同期グループ情報をメッセージバス１２に送信し、後続の命令の処理を停止して同期待ちの状態に移行する。受信部１６ａ、１６ｂ及び１６ｎのそれぞれが、PM１１ａ、１１ｂ及び１１ｎからの同期グループ情報を受信する。これにより、受信部１６ａ、１６ｂ及び１６ｎのそれぞれは、PM１１ａ、１１ｂ及び１１ｎの全てが同期待ちの状態に移行したことを判定できる。PM１１ａ、１１ｂ及び１１ｎの全てが同期待ちの状態に移行したと判定すると、受信部１６ａ、１６ｂ及び１６ｎは、それぞれPM１１ａ、１１ｂ及び１１ｎに同期完了信号を送信する。例えば、受信部１６ａは、この同期完了信号をPM１１ａのWAKEUP端子に出力する。この結果、PM１１ａ、１１ｂ及び１１ｎのそれぞれは、バリア同期の完了を認識でき、低消費電力モードからの復帰、或いは、自己の電源をオンにし、後続の命令の処理を開始する。
【０１１３】
ここで、送信部１５ａにより実行される送信処理について説明する。図１２は、送信処理の流れの例を説明するためのフローチャートである。
【０１１４】
まず、PM１１ａから送信された同期グループ情報が送信部１５ａにおいて受信される（ステップＳ１）。送信部１５ａにおいて受信された同期グループ情報がメッセージバス１２に送信され（ステップＳ２）、送信処理が終了する。同様の送信処理がバリア同期の対象となっているPMに対応する送信部においても実行される。
【０１１５】
次に、受信部１６ａにより実行される受信処理について説明する。図１３は、受信処理の流れの例を説明するためのフローチャートである。
【０１１６】
まず、受信部１６ａにおいて、メッセージバス１２上に放送された同期グループ情報が受信される（ステップＳ１１）。受信メッセージ比較部２２ｂにおいて、同期グループ情報から自PM、即ち、PM１１ａが同期グループの対象となっているか否かが検出される（ステップＳ１２）。自PMが同期グループの対象となっていない場合、NOとなり、受信した同期グループ情報が削除され、受信処理を終了する。自PMが同期グループの対象となっている場合、YESとなり、同期制御部５２において、受信された同期グループ情報が、同期グループ情報記憶部５１に記憶されているか否かが検出される（ステップＳ１３）。同期グループ情報記憶部５１に同期グループ情報が記憶されていない場合、NOとなり、同期制御部５２において、同期グループ情報から同期PM数が算出される（ステップＳ１４）。
【０１１７】
次に、同期制御部５２によって、同期グループ情報記憶部５１に、同期グループ情報と、同期グループ情報に関連付けられるデータとを格納するための記憶領域が確保される（ステップＳ１５）。同期制御部５２によって、同期グループ情報と、同期グループ情報に関連付けられるデータとして、（同期PM数−１）の値とが確保された記憶領域に書き込まれる（ステップＳ１６）。一方、同期グループ情報記憶部５１に同期グループ情報が記憶されている場合、YESとなり、同期制御部５２によって、同期グループ情報に関連付けられるデータが読み出され、１だけ減算され、同じ記憶領域に再度書き込まれる（ステップＳ１７）。
【０１１８】
次に、このように書き込まれたデータが０か否かが検出される（ステップＳ１８）。データが０でない場合、NOとなり、受信処理を終了する。データが０の場合、同期制御部５２によって、同期グループ情報記憶部５１から同期グループ情報と、この同期グループ情報に関連付けられたデータとが削除され（ステップＳ１９）、PM１１ａに同期完了信号が送信され（ステップＳ２０）、受信処理を終了する。同様の受信処理がバリア同期の対象となっているPMに対応する受信部においても実行される。
【０１１９】
以上の処理により、バリア同期の対象となっている各PMのそれぞれに対応する各受信部は、バリア同期が成立したと判断し、対応する各PMに同期完了信号を送信する。
【０１２０】
以上のように、マルチプロセッサ１ｂは、同期グループ情報記憶部５１及び同期制御部５２により構成されるバリア同期機構を専用通信バス、即ち、メッセージバス１２により接続することで、メモリバス４２及び各PM１１ａ〜１１ｎに負荷をかけず、効率の良いバリア同期が可能となる。また、マルチプロセッサ１ｂは、バリア同期機構を各PM１１ａ〜１１ｎが有しているため、メッセージバス１２上で１つのバリア同期機構へのアクセスが競合することがなく、バリア同期に関するオーバーヘッドが抑えられる。
【０１２１】
よって、本実施の形態のマルチプロセッサによれば、PM間のバリア同期を効率的、かつ、柔軟に行うことができる。
【０１２２】
なお、本実施の形態では、同期制御部５２が同期グループ情報に関連付けられるデータを制御していたが、カウンタを用いて同期グループ情報に関連付けられるデータを制御してもよい。例えば、受信メッセージ比較部２２ｂは、ある同期グループ情報を受信すると、この同期グループ情報に関連付けられるデータとして、（同期PM数−１）の値をカウンタにセットする。その後、受信メッセージ比較部２２ｂは、同一の同期グループ情報を受信する度に、カウンタの値をデクリメントし、カウンタの値が０になったときにバリア同期が成立したと判断し、PM１１ａに同期完了信号を送信する。この結果、各PM１１ａ〜１１ｎが有するバリア同期のためのカウンタ数等が、受信メッセージ比較部２２ｂの大きさ次第で柔軟に拡張できるため、回路規模を抑えつつ、柔軟なバリア同期が可能となる。
【０１２３】
（第４の実施の形態）
次に、第４の実施の形態について説明する。本実施の形態では、マルチプロセッサシステムにおけるPM上で動作するタスク間のバリア同期について説明する。
【０１２４】
プロセッサシステムにおいて、ある処理を効率よく並列処理を実行するために、並列化コンパイラあるいはオペレーティングシステムを利用して、タスクという処理単位に分割して管理し、分割したタスクをPMに割り当てる。本実施の形態では、タスク間のバリア同期を効率的、かつ、柔軟に行うことができるマルチプロセッサについて説明する。
【０１２５】
なお、第４の実施の形態のマルチプロセッサの全体構成は、第１の実施の形態と同様のため説明を省略する。また、本実施の形態のマルチプロセッサの詳細な構成は、第３の実施の形態と同様のため説明を省略する。
【０１２６】
本実施の形態では、あるタスクA、タスクB及びタスクCにおいてバリア同期を実行する場合について説明する。なお、これらの３つのタスクA、B及びCのうち、タスクA及びタスクBがPM１１ａに割り当てられ、タスクCがPM１１ｂに割り当てられているものとする。
【０１２７】
PM１１ａは、ある同期グループのタスク、ここではタスクA及びタスクBが同期待ちの状態になると、同期グループ情報を送信部１５ａを介してメッセージバス１２に送信する。同様に、PM１１ｂは、タスクCが同期待ちの状態になると、同期グループ情報を送信部１５ｂを介してメッセージバス１２に送信する。
【０１２８】
受信部１６ａの同期制御部５２は、メッセージバス１２を介して、これらの同期グループ情報を受信し、自PMのタスクが同期グループの対象となっているか否かを検出する。同期制御部５２は、自PMのタスクが同期グループの対象でなければ、受信した同期グループ情報を破棄し、自PMのタスクが同期グループの対象であれば、同期グループ情報を取り込み、第３の実施の形態の同様の受信処理を行い、タスク間のバリア同期を実行する。
【０１２９】
図１４は、同期グループ情報の例を説明するための説明図である。図１４に示すように、同期グループ情報は、図１１の同期グループ情報に、自PMでの同期待ちのタスク数の情報が対応付けられている。例えば、PM１１ａは、自PMでの同期待ちのタスク数が２となるので、図１４に示す同期グループ情報をメッセージバス１２に送信することになる。
【０１３０】
ここで、受信部１６ａにより実行される受信処理について説明する。図１５は、受信処理の流れの例を説明するためのフローチャートである。なお、図１５において図１３と同一の処理については同一の符号を付して説明を省略する。
【０１３１】
ステップＳ１１において、メッセージバス１２上に放送された同期グループ情報が受信されると、同期制御部５２において、自PMのタスクが同期グループの対象となっているか否かが検出される（ステップＳ２１）。自PMのタスクが同期グループの対象となっていない場合、NOとなり、受信処理を終了する。一方、自PMのタスクが同期グループの対象となっている場合、YESとなり、上述したステップＳ１３以降の処理を実行する。
【０１３２】
なお、ステップＳ１３以降の処理において、同期PM数を算出してバリア同期の完了を判定しているが、同期するタスク数を算出してバリア同期の完了を判定するようにしてもよい。即ち、同期グループ情報の同期待ちのタスク数を算出し、バリア同期を実行する全てのタスクが同期待ちの状態になったと判定した場合に、同期完了信号をPM１１ａに送信する。この結果、図１５の処理と同様に、マルチプロセッサ１ｂは、タスク間のバリア同期を実行することができる。
【０１３３】
以上のように、各受信部は、自PMのタスクが同期グループの対象となっているか否かを検出して、同期グループ情報を受信するか否かを判定することにより、マルチプロセッサ１ｂは、タスク間のバリア同期を実行することができる。
【０１３４】
よって、本実施の形態のマルチプロセッサによれば、タスク間のバリア同期を効率的、かつ、柔軟に行うことができる。
【０１３５】
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【０１３６】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【０１３７】
１，１ａ  マルチプロセッサ、１１ａ〜１１ｎ  プロセッサモジュール、１２  メッセージバス、１３  メッセージバス調停部、１４ａ〜１４ｎ  メッセージ送受信部、１５ａ〜１５ｎ  送信部、１６ａ〜１６ｎ  受信部、２１  送信処理部、２２，２２ａ，２２ｂ  受信メッセージ比較部、２３  セレクタ、２４  インバータ、２５  信号発生部、２６  レジスタ、２７，２７ａ  FIFO、３１  マスクレジスタ、３２  AND回路、４１  共有メモリ、４２  メモリバス、４３  メモリバス調停部、４４ａ〜４４ｎ  ローカルメモリ、５１  同期グループ情報記憶部、５２  同期制御部。
【図１】
2010009576.tif 000003
【図２】
2010009576.tif 000004
【図３】
2010009576.tif 000005
【図４】
2010009576.tif 000006
【図５】
2010009576.tif 000007
【図６】
2010009576.tif 000008
【図７】
2010009576.tif 000009
【図８】
2010009576.tif 000010
【図９】
2010009576.tif 000011
【図１０】
2010009576.tif 000012
【図１１】
2010009576.tif 000013
【図１２】
2010009576.tif 000014
【図１３】
2010009576.tif 000015
【図１４】
2010009576.tif 000016
【図１５】
2010009576.tif 000017