(57)【要約】【課題】  プロセッサ間通信のスループットを向上させ、送受信するメッセージの優先順位に基づいたプロセッサ間通信を実行する。【解決手段】  複数のプロセッサ２−１〜２−ｎと、メモリ３とを具備するマルチプロセッサシステムを用いる。メモリ３は、複数のプロセッサ２−１〜２−ｎの各々にバス４を介して接続されている。メモリ３は、複数のプロセッサ２−１〜２−ｎの各々から他のものへ送信されるメッセージを格納している。メモリ３は、メッセージを受信する側としての複数のプロセッサ２−１〜２−ｎに対応した複数の第１バッファ領域８−１〜８−ｎを備えている。【選択図】      図３
2006309512.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサの各々に接続され、前記複数のプロセッサの各々から他のものへ送信されるメッセージを格納するメモリと
を具備し、
前記メモリは、前記メッセージを受信する側としての前記複数のプロセッサに対応した複数の第１バッファ領域を備える
マルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムにおいて、
前記複数の第１バッファ領域の各々は、前記メッセージが分類され得る複数の優先度に対応した複数の優先度対応バッファ領域を有する
マルチプロセッサシステム。
【請求項３】
請求項２に記載のマルチプロセッサシステムにおいて、
前記複数の第１バッファ領域の各々は、前記メッセージを送信する側としての前記複数のプロセッサに対応した複数の第２バッファ領域を含む
マルチプロセッサシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のマルチプロセッサシステムにおいて、
前記メモリは、前記複数の第１バッファ領域に対応した複数のメモリチップで形成されている
マルチプロセッサシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のマルチプロセッサシステムにおいて、
前記複数のプロセッサは、一つの半導体チップに搭載されている
マルチプロセッサシステム。
【請求項６】
マルチプロセッサシステムのメッセージ伝達方法であって、
ここで、前記マルチプロセッサシステムは、
複数のプロセッサと、
前記複数のプロセッサの各々に接続され、前記複数のプロセッサの各々から他のものへ送信されるメッセージを格納するメモリと
を具備し、
前記メモリは、前記メッセージを受信する側としての前記複数のプロセッサに対応した複数の第１バッファ領域を備え、
（ａ）前記複数のプロセッサのうちの一つとしての送信側プロセッサが前記複数のプロセッサのうちの一つとしての受信側プロセッサへメッセージを送信するとき、前記複数の第１バッファ領域のうちの前記受信側プロセッサに対応する対応第１バッファ領域に空き領域があるか否かを確認するステップと、
（ｂ）前記空き領域がある場合、前記送信側プロセッサが前記メッセージを前記空き領域に書き込むステップと
を具備する
マルチプロセッサシステムのメッセージ伝達方法。
【請求項７】
請求項６に記載のマルチプロセッサシステムのメッセージ伝達方法において、
前記（ａ）ステップは、
（ａ１）前記送信側プロセッサが、前記複数の第１バッファ領域の各々に格納され、空き領域の大きさを示す第１管理情報のうち、前記対応第１バッファ領域に格納された受信側第１管理情報を読み出すステップを備え、
前記（ｂ）ステップは、
（ｂ１）前記送信側プロセッサが、前記書き込み後に前記受信側第１管理情報を書き換えるステップを備える
マルチプロセッサシステムのメッセージ伝達方法。
【請求項８】
請求項７に記載のマルチプロセッサシステムのメッセージ伝達方法において、
前記複数の第１バッファ領域の各々は、前記メッセージが分類され得る複数の優先度に対応した複数の優先度対応バッファ領域を有し、
前記第１管理情報は、前記複数の第１バッファ領域の各々における前記複数の優先度対応バッファ領域の各々に格納され、
前記（ａ１）ステップは、
（ａ１１）前記送信側プロセッサが、前記メッセージの優先度に基づいて、前記対応第１バッファ領域における前記複数の優先度対応バッファ領域のうちの対応する優先度対応バッファ領域において、前記受信側第１管理情報を読み出すステップを備え、
前記マルチプロセッサシステムのメッセージ伝達方法は、更に、
（ｃ）前記対応第１バッファ領域における前記複数の優先度対応バッファ領域の全てについて、（ａ）及び（ｂ）ステップを繰り返すステップを具備する
マルチプロセッサシステムのメッセージ伝達方法。
【請求項９】
請求項８に記載のマルチプロセッサシステムのメッセージ伝達方法において、
前記複数の第１バッファ領域の各々は、前記メッセージを送信する側としての前記複数のプロセッサに対応した複数の第２バッファ領域を含み、
前記（ａ１１）ステップは、
（ａ１１１）前記送信側プロセッサが、前記複数の第２バッファ領域のうちの送信側プロセッサに対応する送信側第２バッファ領域において、前記送信側第２バッファ領域に格納された前記受信側第１管理情報を読み出すステップを備える
マルチプロセッサシステムのメッセージ伝達方法。
【請求項１０】
請求項６に記載のマルチプロセッサシステムのメッセージ伝達方法において、
（ｄ）前記受信側プロセッサが、前記複数の第１バッファ領域のうちの前記受信側プロセッサに対応する対応第１バッファ領域に前記メッセージがあるか否かを確認するステップと、
（ｅ）前記メッセージがある場合、前記受信側プロセッサが前記メッセージを読み出すステップと
を更に具備する
マルチプロセッサシステムのメッセージ伝達方法。
【請求項１１】
請求項１０に記載のマルチプロセッサシステムのメッセージ伝達方法において、
前記（ｄ）ステップは、
（ｄ１）前記受信側プロセッサが、前記複数の第１バッファ領域の各々に格納され、前記複数の第１バッファ領域に前記メッセージが格納されていることを示す複数の第２管理情報のうち、前記受信側プロセッサに対応する受信側第２管理情報を読み出すステップを備え、
前記（ｅ）ステップは、
（ｅ１）前記受信側プロセッサが、前記メッセージの読み出し後に前記受信側第２管理情報を書き換えるステップを備える
マルチプロセッサシステムのメッセージ伝達方法。
【請求項１２】
請求項１１に記載のマルチプロセッサシステムのメッセージ伝達方法において、
前記複数の第１バッファ領域の各々は、前記メッセージが分類され得る複数の優先度に対応した複数の優先度対応バッファ領域を有し、
前記第２管理情報は、前記複数の第１バッファ領域の各々における前記複数の優先度対応バッファ領域の各々に格納され、
前記（ｄ１）ステップは、
（ｄ１１）前記受信側プロセッサが、前記対応第１バッファ領域における前記複数の優先度対応バッファ領域のうちの最も優先度の高い優先度対応バッファ領域に格納された前記受信側第２管理情報を読み出すステップを備え、
前記マルチプロセッサシステムのメッセージ伝達方法は、更に、
（ｆ）前記複数の優先度対応バッファ領域の全てについて、（ｄ）及び（ｅ）ステップを繰り返すステップを具備する
マルチプロセッサシステムのメッセージ伝達方法。
【請求項１３】
請求項１２に記載のマルチプロセッサシステムのメッセージ伝達方法において、
前記複数の第１バッファ領域の各々は、前記メッセージを送信する側としての前記複数のプロセッサに対応した複数の第２バッファ領域を含み、
前記（ｄ１１）ステップは、
（ｄ１１１）前記受信側プロセッサが、前記送信側プロセッサに対応する送信側第２バッファ領域に格納された前記受信側第２管理情報を読み出すステップを備える
マルチプロセッサシステムのメッセージ伝達方法。
【請求項１４】
マルチプロセッサシステムのメッセージ伝達方法をコンピュータに実行させるプログラムであって、
ここで、前記マルチプロセッサシステムは、
複数のプロセッサと、
前記複数のプロセッサの各々に接続され、前記複数のプロセッサの各々から他のものへ送信されるメッセージを格納するメモリと
を具備し、
前記メモリは、前記メッセージを受信する側としての前記複数のプロセッサに対応した複数の第１バッファ領域を備え、
（ａ）前記複数のプロセッサのうちの一つとしての送信側プロセッサが前記複数のプロセッサのうちの一つとしての受信側プロセッサへメッセージを送信するとき、前記複数の第１バッファ領域のうちの前記受信側プロセッサに対応する対応第１バッファ領域に空き領域があるか否かを確認するステップと、
（ｂ）前記空き領域がある場合、前記送信側プロセッサが前記メッセージを前記空き領域に書き込むステップと
を具備する
プログラム。
【請求項１５】
請求項１４に記載のプログラムにおいて、
前記（ａ）ステップは、
（ａ１）前記送信側プロセッサが、前記複数の第１バッファ領域の各々に格納され、空き領域の大きさを示す第１管理情報のうち、前記対応第１バッファ領域に格納された受信側第１管理情報を読み出すステップを備え、
前記（ｂ）ステップは、
（ｂ１）前記送信側プロセッサが、前記書き込み後に前記受信側第１管理情報を書き換えるステップを備える
プログラム。
【請求項１６】
請求項１５に記載のプログラムにおいて、
前記複数の第１バッファ領域の各々は、前記メッセージが分類され得る複数の優先度に対応した複数の優先度対応バッファ領域を有し、
前記第１管理情報は、前記複数の第１バッファ領域の各々における前記複数の優先度対応バッファ領域の各々に格納され、
前記（ａ１）ステップは、
（ａ１１）前記送信側プロセッサが、前記メッセージの優先度に基づいて、前記対応第１バッファ領域における前記複数の優先度対応バッファ領域のうちの対応する優先度対応バッファ領域において、前記受信側第１管理情報を読み出すステップを備え、
前記マルチプロセッサシステムのメッセージ伝達方法は、更に、
（ｃ）前記対応第１バッファ領域における前記複数の優先度対応バッファ領域の全てについて、（ａ）及び（ｂ）ステップを繰り返すステップを具備する
プログラム。
【請求項１７】
請求項１６に記載のプログラムにおいて、
前記複数の第１バッファ領域の各々は、前記メッセージを送信する側としての前記複数のプロセッサに対応した複数の第２バッファ領域を含み、
前記（ａ１１）ステップは、
（ａ１１１）前記送信側プロセッサが、前記複数の第２バッファ領域のうちの送信側プロセッサに対応する送信側第２バッファ領域において、前記送信側第２バッファ領域に格納された前記受信側第１管理情報を読み出すステップを備える
プログラム。
【請求項１８】
請求項１４に記載のプログラムにおいて、
（ｄ）前記受信側プロセッサが、前記複数の第１バッファ領域のうちの前記受信側プロセッサに対応する対応第１バッファ領域に前記メッセージがあるか否かを確認するステップと、
（ｅ）前記メッセージがある場合、前記受信側プロセッサが前記メッセージを読み出すステップと
を更に具備する
プログラム。
【請求項１９】
請求項１８に記載のプログラムにおいて、
前記（ｄ）ステップは、
（ｄ１）前記受信側プロセッサが、前記複数の第１バッファ領域の各々に格納され、前記複数の第１バッファ領域に前記メッセージが格納されていることを示す複数の第２管理情報のうち、前記受信側プロセッサに対応する受信側第２管理情報を読み出すステップを備え、
前記（ｅ）ステップは、
（ｅ１）前記受信側プロセッサが、前記メッセージの読み出し後に前記受信側第２管理情報を書き換えるステップを備える
プログラム。
【請求項２０】
請求項１９に記載のプログラム法において、
前記複数の第１バッファ領域の各々は、前記メッセージが分類され得る複数の優先度に対応した複数の優先度対応バッファ領域を有し、
前記第２管理情報は、前記複数の第１バッファ領域の各々における前記複数の優先度対応バッファ領域の各々に格納され、
前記（ｄ１）ステップは、
（ｄ１１）前記受信側プロセッサが、前記対応第１バッファ領域における前記複数の優先度対応バッファ領域のうちの最も優先度の高い優先度対応バッファ領域に格納された前記受信側第２管理情報を読み出すステップを備え、
前記マルチプロセッサシステムのメッセージ伝達方法は、更に、
（ｆ）前記複数の優先度対応バッファ領域の全てについて、（ｄ）及び（ｅ）ステップを繰り返すステップを具備する
プログラム。
【請求項２１】
請求項２０に記載のプログラムにおいて、
前記複数の第１バッファ領域の各々は、前記メッセージを送信する側としての前記複数のプロセッサに対応した複数の第２バッファ領域を含み、
前記（ｄ１１）ステップは、
（ｄ１１１）前記受信側プロセッサが、前記送信側プロセッサに対応する送信側第２バッファ領域に格納された前記受信側第２管理情報を読み出すステップを備える
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法に関し、特に複数のプロセッサ間でメッセージを転送するマルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法に関する。
【背景技術】
【０００２】
複数のプロセッサ（例示：ＭＰＵ：Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えるマルチプロセッサシステムが知られている。マルチプロセッサシステムでは、複数のプロセッサが、互いにメッセージを転送する場合がある。メッセージの転送方法としては、各プロセッサが独自に管理するメモリを他のプロセッサが直接アクセスする方法、全てのプロセッサが自由にアクセスできる共有メモリ（Ｓｈａｒｅｄ  Ｍｅｍｏｒｙ）を使用する方法、各プロセッサが独自に管理する領域と全てのプロセッサが自由にアクセスできる領域とに共有メモリを分割する方法などがある。ここで、「メッセージ」は、転送するデータの単位である。
【０００３】
メッセージの転送方法に関する技術として特開平６−４４１９１号公報にバッファ管理方法が開示されている。この技術は、複数のプロセッサ間でデータの転送を行う場合に、当該データをバッファ領域に一時格納するマルチプロセッサシステムのバッファ管理方法である。前記複数のプロセッサ毎に、それぞれのプロセッサが独自に管理する複数のバッファ領域を設ける。各バッファ領域を使用する場合の確保処理および不要となった場合の解放処理を、当該バッファ領域を管理するプロセッサが行うようにしている。
【０００４】
図１は、従来技術（特開平６−４４１９１号）のマルチプロセッサシステムの構成を示すブロック図である。このマルチプロセッサシステム１０１は、複数のプロセッサ（ＭＰＵ）１０２−１〜１０２−ｎと、バス１０４を介して接続された共有メモリ１０３とを具備する。共有メモリ１０３は、複数のプロセッサ１０２−１〜１０２−ｎに対応した複数のメッセージバッファ１０８−１〜１０８−ｎを備える。複数のプロセッサ１０２−１〜１０２−ｎの各々は、複数のメッセージバッファ１０８−１〜１０８−ｎのうちの対応するものを管理する。例えば、メッセージバッファ１０８−１は、プロセッサ１０２−１に対応する。プロセッサ１０２−１は、メッセージバッファ１０８−１を管理する。
【０００５】
図２は、従来技術（特開平６−４４１９１号）のマルチプロセッサシステムの動作を説明するブロック図である。ここでは、プロセッサがプロセッサ１０２−１及び１０２−２の二つで、プロセッサ１０２−１からプロセッサ１０２−２へメッセージを送信する場合を考える。このとき、マルチプロセッサシステム１０１の動作は以下のようになる。（１）プロセッサ１０２−１は、自身が管理するメッセージバッファ１０８−１に対してメッセージ格納領域の確保要求を出す。これにより、メッセージバッファ１０８−１内にメッセージ格納領域が確保される。（２）プロセッサ１０２−１は、メッセージ確保領域へメッセージを転送する。（３）プロセッサ１０２−２は、メッセージバッファ１０８−１に格納された転送すべきメッセージを読み出す。（４）プロセッサ１０２−２は、メッセージバッファ１０８−１のメッセージ格納領域の開放をプロセッサ１０２−１へ通知する。（５）プロセッサ１０２−１は、メッセージバッファ１０８−１のメッセージ格納領域を開放する。このようにメッセージバッファ１０８内でのメッセージ格納領域の確保及び開放は、プロセッサ１０２が管理する。その管理方法としては、「空き／使用中」をビットマップで管理する方法や、チェーン管理方法を用いるとしている。
【０００６】
【特許文献１】特開平６−４４１９１号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の従来技術（特開平６−４４１９１号）におけるメッセージの転送の例では、メッセージバッファ１０８−１を一つしか使用せず、メッセージバッファ１０８−１内のメッセージ管理方法としてＦＩＦＯ方式を用いている。そのため、メッセージの逐次性は保てるが、メッセージの優先順位を反映することができない。メッセージに優先順位を持たせ、アプリケーションのオプションを増やし、マルチプロセッサシステムとしての機能・性能を充実させることが可能な技術が望まれる。
【０００８】
また、上記の従来技術（特開平６−４４１９１号）におけるメッセージの転送では、複数のプロセッサ１０２によるメッセージバッファ１０８の管理情報へのアクセスの競合を避けるために、メッセージバッファ１０８−１の管理情報は、割り当てられたプロセッサ１０２−１のみが管理する。そして、メッセージバッファ１０８−１におけるメッセージ格納領域の確保処理及び開放処理は、管理するプロセッサ１０２−１が独自に行う。そのため、データ送信先（受信側）のプロセッサ１０２−２がメッセージを受信した後にメッセージ格納領域の開放処理を直接行うことができず、プロセッサ１０２−１が開放処理を行うまでに若干の時間差（遅延）が生じる。このような時間差（遅延）を無くし、プロセッサ間通信のスループットを向上することが可能な技術が望まれる。
【０００９】
従って、本発明の目的は、プロセッサ間通信のスループットを向上することが可能なマルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法を提供することにある。
【００１０】
また、本発明の他の目的は、送受信するメッセージに優先順位を持たせて、その優先順位に基づいてプロセッサ間通信を実行することが可能なマルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法を提供することにある。
【課題を解決するための手段】
【００１１】
以下に、発明を実施するための最良の形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための最良の形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
上記課題を解決するために、本発明のマルチプロセッサシステムは、複数のプロセッサ（２−１〜２−ｎ）と、メモリ（３）とを具備する。メモリ（３）は、前記複数のプロセッサ（２−１〜２−ｎ）の各々に接続され、前記複数のプロセッサ（２−１〜２−ｎ）の各々から他のものへ送信されるメッセージを格納する。前記メモリ（３）は、前記メッセージを受信する側としての前記複数のプロセッサ（２−１〜２−ｎ）に対応した複数の第１バッファ領域（８−１〜８−ｎ）を備える。
本発明では、受信側のプロセッサ（２−ｊ）に対応して予め設けられた第１バッファ領域（８−ｊ）を介してメッセージの送受信を行う。そのため、受信側のプロセッサ（２−ｊ）が分かれば、送信側のプロセッサ（２−ｉ）は、メッセージの格納場所（８−ｊ）へ容易にアクセスすることができる。
【００１３】
上記のマルチプロセッサシステムにおいて、前記複数の第１バッファ領域（８−１〜８−ｎ）の各々は、前記メッセージが分類され得る複数の優先度に対応した複数の優先度対応バッファ領域（Ａ／Ｂ）を有する。
本発明では、送信側のプロセッサ（２−ｉ）が、優先度を有するメッセージを、受信側のプロセッサ（２−ｊ）に対応した第１バッファ領域（８−ｊ）内における、その優先度に対応した優先度対応バッファ領域（Ａ／Ｂ）に格納する。そのため、受信側のプロセッサ（２−ｊ）は、優先度対応バッファ領域（Ａ／Ｂ）へ優先度順にアクセスすることで、優先度の高いメッセージから順に読み出すことができる。それにより、受信側のプロセッサ（２−ｊ）は、優先度の高いメッセージを優先的に実行することができる。
【００１４】
上記のマルチプロセッサシステムにおいて、前記複数の第１バッファ領域（８−１〜８−ｎ）の各々は、前記メッセージを送信する側としての前記複数のプロセッサ（２−１〜２−ｎ）に対応した複数の第２バッファ領域（８−１−ａ〜８−１−ｂ、…、８−ｎ−ｃ〜８−ｎ−ｄ）を含む。
本発明では、更に、送信側のプロセッサ（２−ｉ）に対応して予め設けられた第２バッファ領域（８−ｊ−ｉ）を介してメッセージの送受信を行う。そのため、送信側のプロセッサ（２−ｉ）が分かれば、受信側のプロセッサ（２−ｊ）は、メッセージの格納場所（８−ｊ−ｉ）へ更に容易にアクセスすることができる。
【発明の効果】
【００１５】
本発明により、プロセッサ間通信のスループットを向上することが可能となる。送受信するメッセージの優先順位に基づいてプロセッサ間通信を実行することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明のマルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法の実施の形態に関して、添付図面を参照して説明する。まず、本発明のマルチプロセッサシステムの実施の形態の構成について説明する。図３は、本発明のマルチプロセッサシステムの実施の形態の構成を示すブロック図である。マルチプロセッサシステム１は、複数のプロセッサ２−１〜２−ｎと共有メモリ３とを具備する。
【００１７】
複数のプロセッサ２−１〜２−ｎの各々は、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マルチコアプロセッサにおける一つのコアに例示される演算処理装置である。各プロセッサ２−ｉ（ｉ＝１〜ｎ、以下同じ）は、メッセージを格納するメモリ６−ｉを備える。
【００１８】
共有メモリ３は、複数のプロセッサ２−１〜２−ｎの各々に共用され、複数のプロセッサ２−１〜２−ｎの各々から他のものへ送信されるメッセージを格納する。共有メモリ３は、バス４で複数のプロセッサ２−１〜２−ｎに接続されている。ここで、メッセージは、プロセッサ間通信で送受信するデータの単位である。共有メモリ３は、複数の第１メッセージバッファ８−１〜８−ｎを備える。
【００１９】
複数の第１メッセージバッファ８−１〜８−ｎは、メッセージの受信側である複数のプロセッサ２−１〜２−ｎに対応して設けられている。すなわち、第１メッセージバッファ８−ｊは、プロセッサ２−ｊに対応している。例えば、第１メッセージバッファ８−１は、プロセッサ２−１に対応している。プロセッサ２−ｊは、他のプロセッサ２−ｉ（ｊ≠ｉ、ｊ＝１〜ｎ、以下同じ）からメッセージを受信する際、対応する第１メッセージバッファ８−ｊがメッセージを格納する。そのため、受信側のプロセッサ２−ｊが分かれば、送信側のプロセッサ２−ｉは、メッセージの格納場所である第１メッセージバッファ８−ｊへ容易にアクセスすることができる。複数の第１メッセージバッファ８−１〜８−ｎの各々は、複数の第２メッセージバッファ８−（１〜ｎ）−（１〜ｎ）を含む。
【００２０】
複数の第２メッセージバッファ８−（１〜ｎ）−（１〜ｎ）の各々は、メッセージの送信側（送信元）である複数のプロセッサ２−１〜２−ｎに対応して設けられている。すなわち、第１メッセージバッファ８−ｊは、複数の第２メッセージバッファ８−ｊ−１〜ｎ（ただし、１〜ｎにｊを含まない）を含んでいる。第２メッセージバッファ８−ｊ−ｉは、送信側のプロセッサ２−ｉが受信側のプロセッサ２−ｊへ送信するメッセージを格納する。例えば、第１メッセージバッファ８−１は、複数の第２メッセージバッファ８−１−２〜ｎを含んでいる。第２メッセージバッファ８−１−２は、送信側のプロセッサ２−２が受信側のプロセッサ２−１へ送信するメッセージを含んでいる。このため、送信側のプロセッサ２−ｉは受信側のプロセッサ２−ｊに対応する第２メッセージバッファ８−ｊ−ｉへメッセージを入力すればよく、受信側のプロセッサ２−ｊは送信側のプロセッサ２−ｉが分かればメッセージの格納場所へ更に容易にアクセスすることができる。複数の第２メッセージバッファ８−（１〜ｎ）−（１〜ｎ）の各々は、メッセージが分類され得る複数の優先度に対応した高優先度領域Ａと低優先度領域Ｂとを含む。
【００２１】
高優先度領域Ａは、送信されるメッセージのうちの高い優先度のものを格納する。低優先度領域Ｂは、送信されるメッセージのうち低い優先度のものを格納する。ここでは、２種類の優先度の場合を例に説明しているが、優先度の種類は更に多くても良い。その場合、それに対応して複数の第２メッセージバッファ８−（１〜ｎ）−（１〜ｎ）の各々を更に分割する。そのため、送信側のプロセッサ２−ｉが優先度を有するメッセージをその優先度に対応して高優先度領域Ａ又は低優先度領域Ｂへ格納することで、受信側のプロセッサ２−ｊは、優先度順でメッセージへアクセスすることができる。それにより、優先度の高いメッセージから順に読み出し実行することができる。
【００２２】
複数のプロセッサ２−１〜２−ｎはそれぞれが独立した半導体チップに格納されていても良い。複数のプロセッサ２−１〜２−ｎが一つの半導体チップ４１に格納されていても良い。更に、複数のプロセッサ２−１〜２−ｎ及び共有メモリ３が一つの半導体チップ４２に格納されていても良い。
【００２３】
図８は、本発明のマルチプロセッサシステムの実施の形態の構成の変形例を示すブロック図である。図に示すように、マルチプロセッサシステム１ａにおいて、複数の第１メッセージバッファ８−１〜８−ｎは、一つの共有メモリ３ではなく、それぞれが独立した複数のメモリ３−１〜３−ｎに格納されていても良い。
【００２４】
図４は、本発明のマルチプロセッサシステムの実施の形態の構成としてｎ＝３の例を示すブロック図である。マルチプロセッサシステム１は、プロセッサ２−１〜２−３と共有メモリ３とを具備する。それらは、互いにバス４で接続されている。プロセッサ２−１〜２−３は、それぞれメモリ６−１〜６−３を備える。共有メモリ３は、第１メッセージバッファ８−１〜８−３を備える。第１メッセージバッファ８−１〜８−３は、メッセージの受信側である複数のプロセッサ２−１〜２−３に対応してそれぞれ設けられている。第１メッセージバッファ８−１は、第２メッセージバッファ８−１−２、８−１−３を含む。第１メッセージバッファ８−２は、第２メッセージバッファ８−２−１、８−２−３を含む。第１メッセージバッファ８−３は、第２メッセージバッファ８−３−１、８−３−２を含む。
【００２５】
第１メッセージバッファ８−１は、メッセージの受信側（送信先）であるプロセッサ２−１に対応して設けられている。第２メッセージバッファ８−１−２は、送信側のプロセッサ２−２が受信側のプロセッサ２−１へ送信するメッセージを格納する。第２メッセージバッファ８−１−３は、送信側のプロセッサ２−３が受信側のプロセッサ２−１へ送信するメッセージを格納する。
【００２６】
同様に、第１メッセージバッファ８−２は、メッセージの受信側（送信先）であるプロセッサ２−２に対応して設けられている。第２メッセージバッファ８−２−１は、送信側のプロセッサ２−１が受信側のプロセッサ２−２へ送信するメッセージを格納する。第２メッセージバッファ８−２−３は、送信側のプロセッサ２−３が受信側のプロセッサ２−２へ送信するメッセージを格納する。
【００２７】
同様に、第１メッセージバッファ８−３は、メッセージの受信側（送信先）であるプロセッサ２−３に対応して設けられている。第２メッセージバッファ８−３−１は、送信側のプロセッサ２−１が受信側のプロセッサ２−３へ送信するメッセージを格納する。第２メッセージバッファ８−３−２は、送信側のプロセッサ２−２が受信側のプロセッサ２−３へ送信するメッセージを格納する。
【００２８】
第２メッセージバッファ８−１−２、８−１−３、８−２−１、８−２−３、８−３−１、８−３−２の各々は、メッセージが分類され得る複数の優先度に対応した高優先度領域Ａと低優先度領域Ｂとを含む。
【００２９】
図５は、本発明のマルチプロセッサシステムの実施の形態における第２メッセージバッファ及びメッセージの構成を示す図である。この第２メッセージバッファ８−ｊ−ｉの構成は、高優先度領域Ａ及び低優先度領域Ｂにおいて共通であり、本図はそれらのうちのいずれか一方を示している。第２メッセージバッファ８−ｊ−ｉは、管理情報格納領域１１とメッセージ格納領域１２とを備える。
【００３０】
管理情報格納領域１１は、メッセージ格納領域１２を管理するための管理情報を格納する。管理情報格納領域１１は、ｈｅａｄデータを格納するヘッド格納領域２１とｔａｉｌデータを格納するテイル格納領域２２とを有する。ｈｅａｄデータは、受信待ち（未受信：送信側のプロセッサ２−ｉから送信され、受信側のプロセッサ２−ｊに受信されていない）メッセージが格納されている領域の先頭アドレスを含む。ｈｅａｄデータは、メッセージの受信側のプロセッサ２−ｊのみが書き換えるものとする。ｔａｉｌデータは、メッセージ格納領域１２内の未使用領域の先頭アドレスを含む。ｔａｉｌデータは、メッセージの送信側のプロセッサ２−ｉのみが書き換えるものとする。その他、管理情報として、例えば、書込み可能なメッセージの最大の大きさを示すメッセージバッファ残存サイズを含んでいても良い。メッセージバッファ残存サイズは、プロセッサ２間のシェイクハンド方式に応じて適宜使用すればよい。第２メッセージバッファ８−ｊ−ｉを管理するこれらのアドレス情報はリング管理とする。
【００３１】
ｈｅａｄデータの書き換えを受信側のプロセッサ２−ｊのみが行いｔａｉｌデータの書き換えを送信側のプロセッサ２−ｉのみが行うことで、一つの第２メッセージバッファ８−ｊ−ｉにおける管理情報を異なるプロセッサ２で書き込みを行うことが可能となる。それにより、プロセッサ２−ｊだけが書き込みを行うことができる場合に比較して、プロセッサ間通信のスループットを向上することが可能となる。
【００３２】
メッセージ格納領域１２は、メッセージ２５が格納された領域と、メッセージが格納されていない未使用領域２４が存在する。図５は、上下の未使用領域２４に挟まれて、４つのメッセージ２５が格納されている例を示している。ここで、メッセージ格納領域１２の先頭アドレスを示すデータをｂｕｆ＿ｂａｓｅデータ、メッセージ格納領域１２の領域サイズを示すデータをｂｕｆ＿ｓｉｚｅデータとする。ｂｕｆ＿ｂａｓｅデータ及びｂｕｆ＿ｓｉｚｅデータは、各第２メッセージバッファ８−ｊ−ｉに固有の値である。各第２メッセージバッファ８−ｊ−ｉとｂｕｆ＿ｂａｓｅデータ及びｂｕｆ＿ｓｉｚｅデータとの関係は、プロセッサ２−１〜２−ｎのメモリにテーブルとして格納されている。ただし、各第２メッセージバッファ８−ｊ−ｉが自身のｂｕｆ＿ｂａｓｅデータ及びｂｕｆ＿ｓｉｚｅデータを管理情報格納領域１１の所定のアドレス位置に格納していても良い。その場合、各第２メッセージバッファ８−ｊ−ｉへアクセスするプロセッサ２−ｉ、２−ｊはそれらを参照する。
【００３３】
メッセージ２５は、１ワードのヘッダ部２７と任意長のデータ部２８とを備える。ヘッダ部２７は、ｓｔａｔｕｓデータ（ハーフワード）を格納するｓｔａｔｕｓフィールド３１と、ｓｉｚｅデータ（ハーフワード）を格納するｓｉｚｅフィールド３２とを有する。ｓｉｚｅデータは、データ部２８の長さ（メッセージデータ長）を含む。ｓｔａｔｕｓデータは、メッセージ属性を含み、メッセージ２５が受信側のプロセッサ２−ｊにより受信済みかどうかを示す受信確認データを少なくとも含む。受信側のプロセッサ２−ｊは、メッセージ受信時にｓｔａｔｕｓフィールドの受信確認データを書き換える。
【００３４】
メッセージ２５（ヘッダ部２７＋データ部２８）は、ワードアラインされていることが好ましい。本マルチプロセッサシステムを実装する場合、バイトレベルで可変長にしようとすると実装が複雑になり、その処理のためのオーバーヘッドが大きくなってしまうと予想される。ワードアラインとすることで、オーバーヘッドを小さく収めることができる。ただし、ワードアラインされていれば、メッセージデータ長は固定長・可変長どちらにも対応可能とする。
【００３５】
次に、本発明のマルチプロセッサシステムのメッセージ伝達方法の実施の形態について説明する。図６及び図７は、本発明のマルチプロセッサシステムのメッセージ伝達方法を示すフローチャートである。図６は送信動作、図７は受信動作をそれぞれ示す。
【００３６】
メッセージ伝達方法において、第２メッセージバッファ８−ｊ−ｉへのデータ書き込み（メッセージ送信動作）およびデータ読み出し（メッセージ受信動作）は、送信側プロセッサ２−ｉ及び受信側プロセッサ２−ｊのそれぞれが、任意の時刻において、非同期に行ってよいものとする。その際、第２メッセージバッファ８−ｊ−ｉの管理情報に関しては、送信側プロセッサ２−ｉ及び受信側プロセッサ２−ｊがそれぞれ、必要な箇所を更新できることとする。すなわち、片方のプロセッサ２しか更新できない、というような制限は設けないこととする。
【００３７】
ここでは、図４に示すマルチプロセッサシステム１において、送信側のプロセッサ２−１から受信側のプロセッサ２−２へのデータの転送について説明する。この場合、第２メッセージバッファ８−ｊ−ｉとしては、第２メッセージバッファ８−２−１が用いられる。
【００３８】
まず、図６を参照して、プロセッサ２−１の送信動作について説明する。
（１）ステップＳ０１
送信側のプロセッサ２−１は、受信側のプロセッサ２−２へ送信するメッセージを取得する。送信側のプロセッサ２−１は、そのメッセージの優先度を確認する。そして、メッセージを送信すべき第２メッセージバッファ８−２−１のうちの高優先度領域Ａか低優先度領域Ｂかを判定する。メッセージの優先度が「高」の場合、そのメッセージは、第２メッセージバッファ８−２−１の高優先度領域Ａ（以下、「８−２−１−Ａ」と記す）へ格納されることになる。
【００３９】
（２）ステップＳ０２
プロセッサ２−１は、メッセージを格納すべき第２メッセージバッファ８−２−１−Ａへの他タスクからのアクセスの禁止を試みる。ここで他のタスクとは、同じプロセッサ２−１における他のタスクである。
アクセスの禁止方法としては、例えば、第２メッセージバッファ８−２内のメッセージバッファの数（８−２−１−Ａ、及び８−２−１−Ｂの２つ）に応じて、共有メモリアクセスセマフォを用意し、プロセッサ２−１がアクセス権の取得・解放を行う。プロセッサ２−１がスケジューラを直接制御できる場合、スケジューリングを停止するようにしても良い。
なお、同じ第１メッセージバッファ８−２における第２メッセージバッファ８−２−３−Ａ、８−２−３−Ｂへのアクセスについては、送信プロセッサ２−３により管理される。
【００４０】
（３）ステップＳ０３
プロセッサ２−１は、メッセージを格納すべき第２メッセージバッファ８−２−１−Ａへの他タスクからアクセスを抑制できているか否かを判断する。
アクセスを抑制できていない場合（ステップＳ０３：Ｎｏ）、例えば、共有メモリアクセスセマフォを用いているときには、他のタスクにより第２メッセージバッファ８−２−１−Ａへのアクセス権が取得されている。したがって、第２メッセージバッファ８−２−１−Ａへのアクセス権を取得できなかった場合、プロセッサ２−１は、アクセス権取得をリトライする必要がある。例えば、所定の時間経過後、リトライする。
【００４１】
（４）ステップＳ０４
アクセスを抑制できている場合（ステップＳ０３：Ｙｅｓ）、プロセッサ２−１はメッセージの送信動作（書き込み動作）を開始する。
プロセッサ２−１は、まず、第２メッセージバッファ８−２−１−Ａの管理情報格納領域１１における管理情報を参照する。すなわち、ヘッド格納領域２１のｈｅａｄデータとテイル格納領域２２のｔａｉｌデータとを取得する。初期状態では、メッセージ格納領域１２のすべてが未使用領域となっている。そのとき、ｂｕｆ＿ｂａｓｅデータ＝ｈｅａｄデータ＝ｔａｉｌデータである。
【００４２】
（５）ステップＳ０５
プロセッサ２−１は、ｈｅａｄデータとｔａｉｌデータとを比較する。
（ａ）ｈｅａｄデータ＝ｔａｉｌデータの場合、メッセージ格納領域１２の状態は、すべてが受信待ちメッセージ、及び、すべてが未使用領域、のいずれか一方である。プロセッサ２−１は、ｔａｉｌデータの示す先頭アドレスから１ワード読み込み、ヘッダ部２７のｓｔａｔｕｓフィールド３１のｓｔａｔｕｓデータを参照する。
（ａ−１）ｓｔａｔｕｓフィールド３１のｓｔａｔｕｓデータを参照して、メッセージ格納領域１２のすべてが受信待ちメッセージであった場合、プロセッサ２−１は、メッセージ格納領域１２に空き領域が無いと判断する（ステップＳ０５：Ｎｏ）。
（ａ−２）ｓｔａｔｕｓフィールド３１のｓｔａｔｕｓデータを参照して、メッセージ格納領域１２のすべてが未使用領域であった場合、プロセッサ２−１は、メッセージ格納領域１２に空き領域があると判断する（ステップＳ０５：Ｙｅｓ）。
（ｂ）ｈｅａｄデータ≠ｔａｉｌデータの場合、プロセッサ２−１は、直ぐに未使用領域サイズの計算を行う。ｈｅａｄデータ＞ｔａｉｌデータの場合、未使用領域サイズ＝（ｈｅａｄデータ−ｔａｉｌデータ）となる。ｈｅａｄデータ＜ｔａｉｌデータの場合、未使用領域サイズ＝（（ｂｕｆ＿ｂａｓｅデータ＋ｂｕｆ＿ｓｉｚｅデータ−ｔａｉｌデータ）＋（ｈｅａｄデータ−ｂｕｆ＿ｂａｓｅデータ））となる。その後、プロセッサ２−１は、メッセージ２５のｓｉｚｅデータの示すメッセージの長さと計算された未使用領域サイズとを比較する。
（ｂ−１）メッセージ２５の長さが未使用領域サイズを超えている場合、プロセッサ２−１は、メッセージ格納領域１２に空き領域が無いと判断する（ステップＳ０５：Ｎｏ）。
（ｂ−２）メッセージ２５の長さが未使用領域サイズ以下の場合、プロセッサ２−１は、メッセージ格納領域１２に空き領域があると判断する（ステップＳ０５：Ｙｅｓ）。
上記（ａ）及び（ｂ）において、メッセージ格納領域１２に空き領域が無いと判断した場合（ステップＳ０５：Ｎｏ、（ａ−１）、（ｂ−１））、プロセッサ２−１は、メッセージの送信をペンディングさせ、メッセージが受信され未使用領域が確保されたところで再送を試みる。例えば、所定の時間経過後、再送を試みる。その時、第２メッセージバッファ８−２−１−Ａへのアクセス権を解放してもしなくても良い。
【００４３】
（６）ステップＳ０６
上記（ａ）及び（ｂ）において、メッセージ格納領域１２に空き領域があると判断した場合（ステップＳ０５：Ｙｅｓ、（ａ−２）、（ｂ−２））、プロセッサ２−１は、ｔａｉｌデータに基づいて、第２メッセージバッファ８−２−１−Ａのメッセージ格納領域１２へメッセージ２５のヘッダ部２７及びデータ部２８を連続して書き込む。なお、メッセージ２５を書き込む時に、データ部２８がメッセージ格納領域１２の境界（ｂｕｆ＿ｂａｓｅデータ＋ｂｕｆ＿ｓｉｚｅデータのこと）をまたいで（ラップアラウンドして）しまうことがあり得る。その場合、従来知られた方法でデータ部２８のラップアラウンドを処理することができる。プロセッサ２−１は、その後、メッセージ格納領域１２における書き込まれたメッセージ２５のｓｔａｔｕｓフィールド３１のｓｔａｔｕｓデータの受信確認データをクリアする。
【００４４】
（７）ステップＳ０７
プロセッサ２−１は、ｔａｉｌ格納領域２２のｔａｉｌデータ（ｔａｉｌポインタ）を、メッセージ２５を格納した箇所の次の箇所のアドレスに書き換える。
【００４５】
（８）ステップＳ０８
プロセッサ２−１は、メッセージ２５を第２メッセージバッファ８−２−１へ格納したことを示す割り込みをプロセッサ２−２へ通知する。それと共に、プロセッサ２−１は、ステップＳ０２において禁止した第２メッセージバッファ８−２−１−Ａへの他タスクからのアクセスを許可する。例えば、共有メモリアクセスセマフォを用いている場合には、プロセッサ２−１が、そのセマフォを開放する。スケジューリングを停止している場合には、プロセッサ２−１がスケジューリングを許可する。
【００４６】
この後、プロセッサ２−１は、第２メッセージバッファ８−２−１に書き込むべきメッセージ２５が更にあれば、ステップＳ０１に戻り、上記動作（Ｓ０１〜Ｓ０８）を繰り返す。なお、第２メッセージバッファ８−２−１に書き込むべきメッセージ２５が更にある場合において、プロセッサ２−１は、ステップＳ０７の後にステップＳ０４に戻り、上記動作（Ｓ０４〜Ｓ０７）を繰り返しても良い。
【００４７】
以上のようにして、送信側のプロセッサ２−１は、受信側のプロセッサ２−２へ転送するメッセージ２５を、プロセッサ２−２専用の第２メッセージバッファ８−２−１（−Ａ、Ｂ）へ書き込むことができる。
【００４８】
なお、ＯＳが存在せず、高度な排他制御方法（例示：セマフォ管理、スケジュール管理）が使えない場合、タスクという概念が存在しないので複数タスクによる共有メモリ３へのアクセス競合は心配しなくて良い（発生しない）。
【００４９】
次に、図７を参照して、プロセッサ２−２の受信動作について説明する。
（１）ステップＳ２１
受信側のプロセッサ２−２は、送信側のプロセッサ２−１からの割り込み通知に基づいて、データの受信動作（読み出し動作）を開始する。
受信側のプロセッサ２−２は、第２メッセージバッファ８−２−１のうちの最も優先度の高い第２メッセージバッファ８−２−１−Ａへアクセスし、管理情報格納領域１１における管理情報を参照する。すなわち、ヘッド格納領域２１のｈｅａｄデータとテイル格納領域２２のｔａｉｌデータとを取得する。
【００５０】
（２）ステップＳ２２
ヘッド格納領域２１のｈｅａｄデータとテイル格納領域２２のｔａｉｌデータとを参照して、プロセッサ２−２は、第２メッセージバッファ８−２−１−Ａに受信すべきメッセージ２５があるか否かを判断する。
（ａ）ｔａｉｌデータ＝ｈｅａｄデータの場合、メッセージ格納領域１２の状態は、すべてが受信待ちメッセージ、及び、すべてが未使用領域、のいずれか一方である。プロセッサ２−２は、ｈｅａｄデータの示す先頭アドレスから１ワード読み込み、ヘッダ部２７のｓｔａｔｕｓフィールド３１のｓｔａｔｕｓデータを参照する。
（ａ−１）ｓｔａｔｕｓデータに受信済みかどうかを示す受信確認データが無い場合、プロセッサ２−２は、すべて未受信メッセージと判定する（ステップＳ２２：Ｙｅｓ）。
（ａ−２）ｓｔａｔｕｓデータに受信確認データが有る場合、プロセッサ２−２は、すべて未使用領域と判定する（ステップＳ２２：Ｎｏ）。
（ｂ）ｈｅａｄデータ≠ｔａｉｌデータの場合、プロセッサ２−２は、メッセージ格納領域１２の一部に未受信メッセージがあると判定する（ステップＳ２２：Ｙｅｓ）。
【００５１】
（３）ステップＳ２３
（ｃ）すべて未受信メッセージの場合（ステップＳ２２：Ｙｅｓ、（ａ−１））、プロセッサ２−２は、ｈｅａｄデータに基づいて、ｓｉｚｅフィールド３２からデータ部２８のデータサイズ（メッセージデータ長）を取得し、一つのメッセージ２５を受信する（読み出す）。
（ｄ）一部未受信メッセージの場合（ステップＳ２２：Ｙｅｓ、（ｂ））、プロセッサ２−２は、ｈｅａｄデータとｔａｉｌデータとを比較する。
（ｄ−１）ｈｅａｄデータ＞ｔａｉｌデータの場合、プロセッサ２−２は、未受信メッセージが連続して格納されている領域のサイズ（連続格納領域サイズ）を計算する。すなわち、連続格納領域サイズ＝（ｂｕｆ＿ｂａｓｅデータ＋ｂｕｆ＿ｓｉｚｅデータ−ｈｅａｄデータ）を求める。その後、プロセッサ２−２は、ｈｅａｄデータの示す先頭アドレスから１ワード読み込み、ｓｉｚｅフィールド３２からデータ部２８のデータサイズを取得する。そして、プロセッサ２−２は、この連続格納領域サイズとデータ部２８のデータサイズとを比較し、未受信メッセージがランドアップしているか否かを判断する。
（ｄ−１−１）連続格納領域サイズ＞データサイズの場合、ラップアラウンドしていないと判断できる。したがって、プロセッサ２−２は、ｈｅａｄデータに基づいて、データ部２８のデータサイズ分の一つのメッセージ２５を受信する（読み出す）。
（ｄ−１−２）連続格納領域サイズ＜データサイズの場合、ラップアラウンドしていると判断できる。したがって、プロセッサ２−２は、ｈｅａｄデータを先頭とする連続格納領域サイズ分のデータと、ｂｕｆ＿ｂａｓｅデータを先頭とする（データサイズ−連続格納領域サイズ）分のデータとを併せて、一つのメッセージ２５として受信する（読み出す）。
（ｄ−２）ｈｅａｄデータ＜ｔａｉｌデータの場合、ラップアラウンドしていないと判断できる。したがって、プロセッサ２−２は、ｈｅａｄデータに基づいて、ｓｉｚｅフィールド３２からデータ部２８のデータサイズ（メッセージデータ長）を取得し、一つのメッセージ２５を受信する（読み出す）。
【００５２】
（４）ステップＳ２４
プロセッサ２−２は、その後、メッセージ格納領域１２における読み出されたメッセージ２５のｓｔａｔｕｓフィールド３１のｓｔａｔｕｓデータの受信確認データを受信済みに変更する。そして、プロセッサ２−２は、ヘッド格納領域２１のｈｅａｄデータを読み出されたメッセージ２５の次のメッセージ２５を格納した箇所のアドレスに書き換える。プロセスは、ステップＳ２１へ戻り、その第２メッセージバッファ８−２−１−Ａ内にメッセージ２５が無くなるまで読み出しを繰り返す。
【００５３】
プロセッサ２−２は、第２メッセージバッファ８−２−１−Ａのメッセージ２５がなくなった場合（ステップＳ２２：Ｎｏ）、第２メッセージバッファ８−２−１のうちの次に優先度の高い第２メッセージバッファ８−２−１−Ｂについて、上記ステップＳ２１〜Ｓ２４と同様に、ステップＳ２５〜Ｓ２８を実行する。同様にして、最も優先度の低い第２メッセージバッファのメッセージ２５が無くなるまで、メッセージ２５の読出し動作を繰り返す（ステップＳ２９〜Ｓ３２）。
【００５４】
以上のようにして、受信側のプロセッサ２−２は、送信側のプロセッサ２−１から転送されるメッセージ２５を、プロセッサ２−２専用の第２メッセージバッファ８−２−１（−Ａ、Ｂ）から読み出すことができる。そして、送信側のプロセッサ２−ｉや受信側のプロセッサ２−ｊが異なっていても、同様に実施することができる。
【００５５】
なお、ステップＳ２１において、受信側のプロセッサ２−２が、第２メッセージバッファ８−２−１へアクセスするとき、受信側のプロセッサ２−ｊでは、メッセージ受信タスクを用意し、共有メモリ３の第２メッセージバッファ８−２−１へのアクセスはそのタスクのみが行うこととする。受信側のプロセッサ２−２内部で、複数のタスクがそれぞれ共有メモリ３へアクセスしようとするならば、送信動作におけるステップＳ０２のような排他動作にしておく。
【００５６】
上記動作は、図４の場合について説明しているが、図３の場合についても同様に実施することが可能である。
【００５７】
本発明では、メッセージ送信側のプロセッサ２−ｉはテイル格納領域２２のｔａｉｌデータ及びメッセージ２５のｓｔａｔｕｓデータだけを、メッセージ受信側のプロセッサ２−ｊはヘッド格納領域２１のｈｅａｄデータ及びメッセージ２５のｓｔａｔｕｓデータだけをそれぞれ更新することで、送信側のプロセッサ２−ｉと受信側のプロセッサ２−ｊとの間のメッセージバッファ管理情報へのアクセス競合を発生させないようにすることができる。それにより、従来のような開放通知の送信は不要となる。
【００５８】
更に、このｔａｉｌデータ、ｈｅａｄデータ、ｂｕｆ＿ｂａｓｅデータ、及びｂｕｆ＿ｓｉｚｅデータを適切に利用することで、メッセージ２５が可変長の場合にも同様に対応することが可能となる。
【００５９】
本発明により、送信側のプロセッサ２−ｉはメッセージ２５を優先度別に格納することができるので、受信側のプロセッサ２−ｊは優先度の高いものから受信することが可能となる。また、一つの第２メッセージバッファ８−ｊ−ｉにおける管理情報を、受信側のプロセッサ２−ｊが書き換える部分と送信側のプロセッサ２−ｉが書き換える部分とに分けることで、異なるプロセッサ２で書き込みを行うことが可能となり、プロセッサ間通信のスループットを向上することが可能となる。
【図面の簡単な説明】
【００６０】
【図１】図１は、従来技術のマルチプロセッサシステムの構成を示すブロック図である。
【図２】図２は、従来技術のマルチプロセッサシステムの動作を説明するブロック図である。
【図３】図３は、本発明のマルチプロセッサシステムの実施の形態の構成を示すブロック図である。
【図４】図４は、本発明のマルチプロセッサシステムの実施の形態の構成としてｎ＝３の例を示すブロック図である。
【図５】図５は、本発明のマルチプロセッサシステムの実施の形態における第２メッセージバッファ及びメッセージの構成を示す図である。
【図６】図６は、本発明のマルチプロセッサシステムのメッセージ伝達方法を示すフローチャートである。
【図７】図７は、本発明のマルチプロセッサシステムのメッセージ伝達方法を示すフローチャートである。
【図８】図８は、本発明のマルチプロセッサシステムの実施の形態の構成の変形例を示すブロック図である。
【符号の説明】
【００６１】
１、１ａ、１０１    マルチプロセッサシステム
２、２−１〜２−ｎ、１０２−１〜１０２−ｎ    プロセッサ
３、１０３    共有メモリ
４、１０４    バス
８、８−１〜８−ｎ    第１メッセージバッファ
８−（１〜ｎ）−（１〜ｎ）、８−ｉ−ｊ（ｉ、ｊ＝１〜ｎ、ｉ≠ｊ）    第２メッセージバッファ
８−ｊ−ｉ−Ａ、８−ｊ−ｉ−Ｂ（ｉ、ｊ＝１〜ｎ、ｉ≠ｊ）    高優先度領域Ａと低優先度領域Ｂ
１１    管理情報格納領域
１２    メッセージ格納領域
２１    ヘッド格納領域
２２    テイル格納領域
２４    未使用領域
２５    メッセージ
２７    ヘッダ部
２８    データ部
３１    ｓｔａｔｕｓフィールド
３２    ｓｉｚｅフィールド
４１、４２    半導体チップ
１０８、１０８−１〜１０８−ｎ    メッセージバッファ
【図１】
2006309512.tif 000003
【図２】
2006309512.tif 000004
【図３】
2006309512.tif 000005
【図４】
2006309512.tif 000006
【図５】
2006309512.tif 000007
【図６】
2006309512.tif 000008
【図７】
2006309512.tif 000009
【図８】
2006309512.tif 000010