(57)【要約】【課題】各処理部間でのデータ通信時におけるデータ保証の冗長性を排したマルチプロセッサシステムを提供する。【解決手段】ネットワーク処理部１０１とリアルタイム処理部２０１間のデータ通信時には、送信側のネットワーク処理部１０１から受信側のリアルタイム処理部２０１への送信完了の割り込み信号出力動作および受信側のリアルタイム処理部２０１による送信完了の割り込み入力検知動作によってのみ共有メモリの排他制御を行い、ＴＣＰ／ＩＰプロトコルスタックソフトウェア２１３によってのみデータ化けとデータ喪失に対するデータ保証を実行する。【選択図】図１
2006172142.tif 000002
【特許請求の範囲】
【請求項１】
データ送信する処理部と、データ受信する処理部と、各処理部間を接続する共有バスと、各処理部から前記共有バス経由でアクセスされる共有メモリとを備え、各処理部間でのデータ通信時に、送信側の処理部が前記共有メモリへ送信データを書き込み、受信側の処理部が前記共有メモリから送信データを読み出すマルチプロセッサシステムであって、
送信側の処理部は、送信データの前記共有メモリへの書き込みを通知する通知信号を受信側の処理部へ出力する通知信号出力手段を有し、かつ各処理部間でのデータ通信の実行とデータ保証が可能な第１のプロトコルソフトウェアと、該第１のプロトコルソフトウェアから受けた送信データの前記共有メモリへの書き込みと前記通知信号出力手段による前記通知信号の出力を実行する第１のデバイスドライバソフトウェアと、を記憶する第１のメモリ手段を有し、
受信側の処理部は、送信側の処理部からの前記通知信号を入力する通知信号入力手段を有し、かつ各処理部間でのデータ通信の実行とデータ保証が可能な第２のプロトコルソフトウェアと、前記通知信号入力手段により前記通知信号が入力された後、前記共有メモリからの送信データの読み出しを実行してその読み出された送信データを該第２のプロトコルソフトウェアに処理させる第２のデバイスドライバソフトウェアと、を記憶する第２のメモリ手段を有し、
前記共有バスは、データ通信時に前記通知信号を送信側の処理部から受信側の処理部へ送信する通知線を有し、
送信側の処理部から受信側の処理部へデータを送信するときには前記通知線を用いた前記通知信号の出力のみによる前記共有メモリの排他制御を行う
ことを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込み完了直後に、前記通知信号出力手段による受信側の処理部への前記通知信号の出力を実行することを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１記載のマルチプロセッサシステムにおいて、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込み開始直前に、前記通知信号出力手段による受信側の処理部への前記通知信号の出力を実行することを特徴とするマルチプロセッサシステム。
【請求項４】
請求項１記載のマルチプロセッサシステムにおいて、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込みが予め定められたデータ量に達した時点で、前記通知信号出力手段による受信側の処理部への前記通知信号の出力を実行することを特徴とするマルチプロセッサシステム。
【請求項５】
請求項１記載のマルチプロセッサシステムであって、
送信側の処理部は、予め定められた所定時間が経過するとタイムアウトを通知するタイマをさらに備え、
送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込み完了後に前記タイマの計時を開始し、前記タイマのタイムアウトの通知を受けた後に次の送信データの前記共有メモリへの書き込みを実行する
ことを特徴とするマルチプロセッサシステム。
【請求項６】
請求項１ないし５のいずれかに記載のマルチプロセッサシステムにおいて、前記共有メモリは、送信側の処理部からの前記共有メモリへのアクセス速度に対して受信側の処理部からのアクセス速度が速くなる位置に装備されることを特徴とするマルチプロセッサシステム。
【請求項７】
請求項６記載のマルチプロセッサシステムにおいて、前記共有メモリは、受信側の処理部が有する前記第２のメモリ手段、あるいは受信側の処理部に前記第２のメモリ手段とは別異に設けた第３のメモリ手段に含まれることを特徴とするマルチプロセッサシステム。
【請求項８】
請求項７記載のマルチプロセッサシステムにおいて、受信側の処理部が搭載する前記第２のデバイスドライバソフトウェアは、前記共有メモリからの送信データの読み出しを実行してその読み出された送信データを前記第２のプロトコルソフトウェアに処理させる代わりに、送信データが書き込まれた前記第２のメモリ手段あるいは前記第３のメモリ手段の領域のポインタを前記第２のプロトコルソフトウェアに指示して処理させることを特徴とするマルチプロセッサシステム。
【請求項９】
データ通信時に１個の送信側の処理部から複数の受信側の処理部へ送信データが送信される請求項１ないし８のいずれかに記載のマルチプロセッサシステムにおいて、送信側の処理部から前記通知信号を受けると、受信側の複数の処理部へ前記通知信号を分配する通知信号分配手段を備えることを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理部（プロセッサ）を備えるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
以下、従来の複数の処理部を備えるマルチプロセッサシステムとして、ネットワーク処理部とリアルタイム処理部を備えるマルチプロセッサシステムについて図面を参照しながら説明する。
【０００３】
図１９は、従来のマルチプロセッサシステムのブロック図である。
図１９において、ネットワーク処理部１０１は、マルチプロセッサシステム１００の通信機能等を実現するものであり、インターネット等の外部ネットワークとの接続・通信を行って、インターネットのウェブサイト等からＡＶデータ（オーディオ・ヴィジュアルデータ）等をダウンロードする。
【０００４】
リアルタイム処理部２０１は、マルチプロセッサシステム１００のＡＶ機能（オーディオ・ヴィジュアルデータを取り込むための機能）、表示機能等を実現するものであり、ネットワーク処理部１０１が外部ネットワークから取得したＡＶデータをデコード処理し、表示処理等を行う。
【０００５】
ＣＰＵ（中央演算装置）１０２はネットワーク処理部１０１全体の制御を司り、ＣＰＵ２０２はリアルタイム処理部２０１全体の制御を司る。メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０３には、ＣＰＵ１０２がネットワーク処理部１０１を制御するのに使用するソフトウェアが記憶されており、メインメモリ２０３には、ＣＰＵ２０２がリアルタイム処理部２０１を制御するのに使用するソフトウェアが記憶されている。ＣＰＵ１０２、２０２は、メインメモリ１０３、２０３に記憶されているソフトウェアを読み出して各種処理を制御する。
【０００６】
オペレーティングシステム（ＯＳ）１０４は、ＣＰＵ１０２がネットワーク処理部１０１を制御するためのソフトウェアであり、メインメモリ１０３に記憶されている。オペレーティングシステム（ＯＳ）２０４は、ＣＰＵ２０２がリアルタイム処理部２０１を制御するためのソフトウェアであり、メインメモリ２０３に記憶されている。
【０００７】
ＯＳ１０４、２０４は、ＴＣＰ／ＩＰプロトコルに基づく通信手順を実現するためのＴＣＰ／ＩＰプロトコルスタック（ＴＣＰ／ＩＰ  Ｓｔａｃｋ）１１３、２１３を搭載している。
【０００８】
ネットワークインターフェース（ネットワークＩ／Ｆ）１０５は、ネットワーク処理部１０１と外部ネットワークとを接続する。ネットワークインターフェースは、例えばイーサネット（登録商標）インターフェース等で実現する。ＯＳ１０４は、ネットワークデバイスドライバ１１５を搭載しており、ＴＣＰ／ＩＰプロトコルスタック１１３の下で、ネットワークインターフェース１０５を制御する。ネットワークデバイスドライバは、例えばイーサネット（登録商標）デバイスドライバ等で実現する。
【０００９】
共有メモリ３０１は、ネットワーク処理部１０１とリアルタイム処理部２０１との間で通信するデータを一時的に記憶する。バスインターフェース（バス  Ｉ／Ｆ）１０６、２０６と共有バス３０２により、ネットワーク処理部１０１、リアルタイム処理部２０１、共有メモリ３０１が相互に接続される。
【００１０】
共有バス３０２はアドレス／データ線３１１を有する。ネットワーク処理部１０１はバスインターフェース１０６とアドレス／データ線３１１により共有メモリ３０１へデータアクセスし、同様に、リアルタイム処理部２０１は、バスインターフェース２０６とアドレス／データ線３１１により共有メモリ３０１へデータアクセスする。
【００１１】
共有バス３０２は割り込み通知線３１４ないし割り込み通知線３１７を有する。割り込み通知線３１４ないし割り込み通知線３１７は、ネットワーク処理部１０１とリアルタイム処理部２０１との間で割り込みを伝える。
【００１２】
バスインターフェース１０６、２０６は送信完了通知出力・受信完了通知入力手段（Ｓｅｎｄ  ＩＮＴ）１１６、２１７を有する。送信完了通知出力・受信完了通知入力手段１１６、２１７は、割り込み通知線３１４、３１７に割り込み信号を出力し、割り込み通知線３１５、３１６から信号を入力してＣＰＵ１０２、２０２に割り込みを発生させる。
【００１３】
また、バスインターフェース１０６、２０６は送信完了通知入力・受信完了通知出力手段（Ｒｅｃｖ  ＩＮＴ）１１７、２１６を有する。送信完了通知入力・受信完了通知出力手段１１７、２１６は、割り込み通知線３１７、３１４から信号を入力してＣＰＵ１０２、２０２に割り込みを発生させ、割り込み通知線３１６、３１５に割り込み信号を出力する。
【００１４】
ＯＳ１０４、２０４は、仮想ネットワークデバイスドライバ１１４、２１４を搭載している。仮想ネットワークデバイスドライバ１１４、２１４は、ＴＣＰ／ＩＰプロトコルスタック１１３、２１３の下で、バスインターフェース１０６、２０６を制御して、ＴＣＰ／ＩＰプロトコルスタック１１３、２１３とのデータの受け渡しや、共有メモリ３０１へのデータアクセス、割り込み信号の入出力を制御する。なお、仮想ネットワークデバイスドライバは、例えばイーサネット（登録商標）デバイスドライバと同一の呼び出しＩ／Ｆ（関数）を実装したデバイスドライバ等で実現する。
【００１５】
このように構成された従来のマルチプロセッサシステム１００の動作について、図２０ないし図２５を用いて説明する。但し、ここでは、ネットワーク処理部１０１をデータ送信側とし、リアルタイム処理部２０１をデータ受信側として説明する。
【００１６】
図２０は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作フローを示す。また、図２１は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作シーケンスを示す。また、図２２ないし図２５はマルチプロセッサシステム１００の動作を説明する動作説明図である。
【００１７】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ＴＣＰ／ＩＰプロトコルスタック１１３から送信要求を受けると（ステップＳ２００１）、ステップＳ２００２において、バスインターフェース１０６、共有バス３０２を経由して、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データの共有メモリ３０１への書き込みを実行する（図２２の（１）参照。）。
【００１８】
書き込みが完了すると、仮想ネットワークデバイスドライバ１１４は、ステップＳ２００３において、送信完了通知出力・受信完了通知入力手段１１６を制御して、割り込み通知線３１４に送信完了の割り込み信号を出力する（ｓ−ＩＮＴ送信）。受信側のリアルタイム処理部２０１の送信完了通知入力・受信完了通知出力手段２１６は、上記の送信完了の割り込み信号を受けた後（ｒ−ＩＮＴ受信）、ＣＰＵ２０２に受信開始の割り込み信号を入力して割り込みを発生させ、仮想ネットワークデバイスドライバ２１４を起動させる（図２３の（２）参照。）。
【００１９】
仮想ネットワークデバイスドライバ２１４は、受信開始の割り込み信号が入力されると（ステップＳ２００５）、ステップＳ２００６において、共有バス３０２、バスインターフェース２０６を経由して、共有メモリ３０１に書き込まれたデータの読み出しを実行して、ＴＣＰ／ＩＰプロトコルスタック２１３に処理させる（図２４の（３）参照。）。
【００２０】
読み出しが完了すると、仮想ネットワークデバイスドライバ２１４は、ステップＳ２００７において、送信完了通知入力・受信完了通知出力手段２１６を制御して、割り込み通知線３１５に受信完了の割り込み信号を出力する（ｒ−ＩＮＴ送信）。送信側のネットワーク処理部１０１の送信完了通知出力・受信完了通知入力手段１１６は、上記の受信完了の割り込み信号を受けた後（ｓ−ＩＮＴ受信）、ＣＰＵ１０２に送信開始の割り込み信号を入力して割り込みを発生させる（図２５の（４）参照。）。
【００２１】
仮想ネットワークデバイスドライバ１１４は、送信開始の割り込み信号が入力されると、データの送信が完了したと判断し、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する（ステップＳ２００４）。
【００２２】
以降、上記の動作を繰り返すことで、ネットワーク処理部１０１からリアルタイム処理部２０１へのデータ送信が可能となり、ネットワーク処理部１０１がウェブサイト等からダウンロードしたＡＶデータをリアルタイム処理部２０１に転送することができる（例えば、特許文献１参照。）。
【００２３】
以上のように、従来のマルチプロセッサシステムでは、送信側から受信側へデータを送信するのに共有メモリを設け、送信側の処理部が共有メモリへ送信データを書き込み、受信側の処理部が共有メモリから送信データを読み出していた。また、送信側から受信側への送信完了の割り込み信号出力動作および受信側による送信完了の割り込み入力検知動作と、受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作と、によって共有メモリを排他制御していた。
【００２４】
図２６は、他の従来のマルチプロセッサシステムのブロック図である。但し、図１９に基づいて説明した部材に対応する部材には同一の符号を付して説明を省略する。当該マルチプロセッサシステムは、リアルタイム処理部を複数備える点が前述した従来のマルチプロセッサシステムと異なる。ここでは、２個のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂを備える場合を例に説明する。
【００２５】
当該マルチプロセッサシステム１００には、１個のネットワーク処理部１０１から２個のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂへデータを送信するために、図１９に示すマルチプロセッサシステムと比べて倍の割り込み通知線が設けられている。また、ネットワーク処理部１０１が２個のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂへデータを送信する場合、送信側の仮想ネットワークデバイスドライバ１１４は、受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂが有する送信完了通知入力・受信完了通知出力手段（Ｒｅｃｖ  ＩＮＴ）２１６ａ、２１６ｂからの信号の入力を全て検知した後、データの送信が完了したと判断し、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【００２６】
このように構成された従来のマルチプロセッサシステム１００の動作について、図２７を用いて説明する。但し、ここでは、ネットワーク処理部１０１をデータ送信側とし、リアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂをデータ受信側として説明する。図２７は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂの仮想ネットワークデバイスドライバ１１４、２１４ａ、２１４ｂの動作フローを示す。
【００２７】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ＴＣＰ／ＩＰプロトコルスタック１１３から送信要求を受けると（ステップＳ２７０１）、ステップＳ２７０２において、バスインターフェース１０６、共有バス３０２を経由して、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データの共有メモリ３０１への書き込みを実行する。
【００２８】
書き込みが完了すると、仮想ネットワークデバイスドライバ１１４は、ステップＳ２７０３において、送信完了通知出力・受信完了通知入力手段１１６を制御して、割り込み通知線３１４ａ、３１４ｂに送信完了の割り込み信号を出力する。
【００２９】
受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂの送信完了通知入力・受信完了通知出力手段２１６ａ、２１６ｂは、上記の送信完了の割り込み信号を受けた後、ＣＰＵ２０２ａ、２０２ｂに受信開始の割り込み信号を入力して割り込みを発生させ、仮想ネットワークデバイスドライバ２１４ａ、２１４ｂを起動させる。
【００３０】
仮想ネットワークデバイスドライバ２１４ａ、２１４ｂは、受信開始の割り込み信号が入力されると（ステップＳ２７０６）、ステップＳ２７０７において、共有バス３０２、バスインターフェース２０６ａ、２０６ｂを経由して、共有メモリ３０１に書き込まれたデータの読み出しを実行して、ＴＣＰ／ＩＰプロトコルスタック２１３ａ、２１３ｂに処理させる。
【００３１】
読み出しが完了すると、仮想ネットワークデバイスドライバ２１４ａ、２１４ｂは、ステップＳ２７０８において、送信完了通知入力・受信完了通知出力手段２１６ａ、２１６ｂを制御して、割り込み通知線３１５ａ、３１５ｂに受信完了の割り込み信号を出力する。
【００３２】
送信側のネットワーク処理部１０１の送信完了通知出力・受信完了通知入力手段１１６は、送信完了通知入力・受信完了通知出力手段２１６ａ、２１６ｂから上記の受信完了の割り込み信号を受ける毎に、ＣＰＵ１０２に割り込みを発生させる。
【００３３】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、受信側の全てのリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂによる受信完了の割り込み入力を検知すると、データの送信が完了したと判断し（ステップＳ２７０４、Ｓ２７０５）、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【００３４】
以降、上記の動作を繰り返すことで、１個のネットワーク処理部１０１から２個のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂへのデータ送信が可能となり、ネットワーク処理部１０１がウェブサイト等からダウンロードしたＡＶデータをリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂに転送することができる。
【００３５】
このように、当該マルチプロセッサシステムでは、図１９に示すマルチプロセッサシステムと異なり、全ての受信側による受信完了の割り込み入力を検知して始めてデータの送信が完了したと判断し、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【００３６】
以上のように、従来のマルチプロセッサシステムでは、システム内の各処理部間で１対ｎのデータ通信を行うのに、（２×ｎ）本の通知線を設け、送信側から受信側への送信完了の割り込み信号出力動作および受信側による送信完了の割り込み入力検知動作と、受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作と、によって共有メモリを排他制御していた。
【００３７】
これらの共有メモリの排他制御動作のうちの後者、すなわち送信側から受信側への送信完了の割り込み信号出力動作および受信側による送信完了の割り込み入力検知動作は、共有メモリ内のデータが次の送信データによって上書きされるのを防止するためのものである。つまり、従来のマルチプロセッサシステムでは、受信側の処理部の読み出し動作が遅れても、読み出しが完了するまでは送信側の処理部が次の送信データを書き込めないようにして、データの上書きによるデータ化けとデータ喪失に対するデータ保証を実現していた。
【００３８】
しかしながら、システム内の各処理部が搭載するデータ通信を実行するためのＴＣＰ／ＩＰプロトコルスタックソフトウェアには、元来、データ化けとデータ喪失に対するデータ保証の仕組みが組み込まれており、従来のマルチプロセッサシステムには、データ保証の仕組みが、上記の共有メモリの排他制御の仕組みと合わせて２つ組み込まれていて冗長であった。
【特許文献１】特表２００１−５２４７１３号公報
【発明の開示】
【発明が解決しようとする課題】
【００３９】
本発明は、上記問題点に鑑み、データ通信時には、送信側から受信側への送信完了の割り込み信号（送信データの共有メモリへの書き込みを通知する信号）出力動作および受信側による送信完了の割り込み入力検知動作のみによって共有メモリの排他制御を行い、データ化けとデータ喪失に対するデータ保証に関してはＴＣＰ／ＩＰプロトコルスタックソフトウェア（プロトコルソフトウェア）によってのみ実行することにより、各処理部間でのデータ通信時におけるデータ保証の冗長性を排したマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【００４０】
本発明の請求項１記載のマルチプロセッサシステムは、データ送信する処理部と、データ受信する処理部と、各処理部間を接続する共有バスと、各処理部から前記共有バス経由でアクセスされる共有メモリとを備え、各処理部間でのデータ通信時に、送信側の処理部が前記共有メモリへ送信データを書き込み、受信側の処理部が前記共有メモリから送信データを読み出すマルチプロセッサシステムであって、送信側の処理部は、送信データの前記共有メモリへの書き込みを通知する通知信号を受信側の処理部へ出力する通知信号出力手段を有し、かつ各処理部間でのデータ通信の実行とデータ保証が可能な第１のプロトコルソフトウェアと、該第１のプロトコルソフトウェアから受けた送信データの前記共有メモリへの書き込みと前記通知信号出力手段による前記通知信号の出力を実行する第１のデバイスドライバソフトウェアと、を記憶する第１のメモリ手段を有し、受信側の処理部は、送信側の処理部からの前記通知信号を入力する通知信号入力手段を有し、かつ各処理部間でのデータ通信の実行とデータ保証が可能な第２のプロトコルソフトウェアと、前記通知信号入力手段により前記通知信号が入力された後、前記共有メモリからの送信データの読み出しを実行してその読み出された送信データを該第２のプロトコルソフトウェアに処理させる第２のデバイスドライバソフトウェアと、を記憶する第２のメモリ手段を有し、前記共有バスは、データ通信時に前記通知信号を送信側の処理部から受信側の処理部へ送信する通知線を有し、送信側の処理部から受信側の処理部へデータを送信するときには前記通知線を用いた前記通知信号の出力のみによる前記共有メモリの排他制御を行うことを特徴とする。
【００４１】
本発明の請求項２記載のマルチプロセッサシステムは、請求項１記載のマルチプロセッサシステムにおいて、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込み完了直後に、前記通知信号出力手段による受信側の処理部への前記通知信号の出力を実行することを特徴とする。
【００４２】
本発明の請求項３記載のマルチプロセッサシステムは、請求項１記載のマルチプロセッサシステムにおいて、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込み開始直前に、前記通知信号出力手段による受信側の処理部への前記通知信号の出力を実行することを特徴とする。
【００４３】
本発明の請求項４記載のマルチプロセッサシステムは、請求項１記載のマルチプロセッサシステムにおいて、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込みが予め定められたデータ量に達した時点で、前記通知信号出力手段による受信側の処理部への前記通知信号の出力を実行することを特徴とする。
【００４４】
本発明の請求項５記載のマルチプロセッサシステムは、請求項１記載のマルチプロセッサシステムであって、送信側の処理部は、予め定められた所定時間が経過するとタイムアウトを通知するタイマをさらに備え、送信側の処理部が搭載する前記第１のデバイスドライバソフトウェアは、前記共有メモリへの送信データの書き込み完了後に前記タイマの計時を開始し、前記タイマのタイムアウトの通知を受けた後に次の送信データの前記共有メモリへの書き込みを実行することを特徴とする。
【００４５】
本発明の請求項６記載のマルチプロセッサシステムは、請求項１ないし５のいずれかに記載のマルチプロセッサシステムにおいて、前記共有メモリは、送信側の処理部からの前記共有メモリへのアクセス速度に対して受信側の処理部からのアクセス速度が速くなる位置に装備されることを特徴とする。
【００４６】
本発明の請求項７記載のマルチプロセッサシステムは、請求項６記載のマルチプロセッサシステムにおいて、前記共有メモリは、受信側の処理部が有する前記第２のメモリ手段、あるいは受信側の処理部に前記第２のメモリ手段とは別異に設けた第３のメモリ手段に含まれることを特徴とする。
【００４７】
本発明の請求項８記載のマルチプロセッサシステムは、請求項７記載のマルチプロセッサシステムにおいて、受信側の処理部が搭載する前記第２のデバイスドライバソフトウェアは、前記共有メモリからの送信データの読み出しを実行してその読み出された送信データを前記第２のプロトコルソフトウェアに処理させる代わりに、送信データが書き込まれた前記第２のメモリ手段あるいは前記第３のメモリ手段の領域のポインタを前記第２のプロトコルソフトウェアに指示して処理させることを特徴とする。
【００４８】
本発明の請求項９記載のマルチプロセッサシステムは、データ通信時に１個の送信側の処理部から複数の受信側の処理部へ送信データが送信される請求項１ないし８のいずれかに記載のマルチプロセッサシステムにおいて、送信側の処理部から前記通知信号を受けると、受信側の複数の処理部へ前記通知信号を分配する通知信号分配手段を備えることを特徴とする。
【発明の効果】
【００４９】
本発明によれば、各処理部間でのデータ通信時に、送信側の処理部から受信側の処理部への通知信号の出力動作および受信側の処理部による通知信号の入力検知動作のみによって共有メモリの排他制御を行い、データ保証に関してはプロトコルソフトウェアによってのみ実行するので、従来のマルチプロセッサシステムと比べて各処理部間でのデータ通信時におけるデータ保証の冗長性を排することができる。
【００５０】
また、従来のマルチプロセッサシステムが行う送信側から受信側への送信完了の割り込み信号出力動作および受信側による送信完了の割り込み入力検知動作を不要としたので、通知線の本数を減少させることができ、マルチプロセッサシステムの回路面積の縮小化に寄与できると同時に、上記動作分の消費電力を削減できる。
【発明を実施するための最良の形態】
【００５１】
以下、本発明の実施の形態について図面を参照しながら説明する。
（実施の形態１）
図１は、本実施の形態１におけるマルチプロセッサシステムのブロック図である。但し、図１９に基づいて説明した部材に対応する部材には同一の符号を付して説明を省略する。
【００５２】
当該マルチプロセッサシステム１００は、図１９に示すマルチプロセッサシステムと同様に、ネットワーク処理部１０１と、リアルタイム処理部２０１と、ネットワーク処理部１０１とリアルタイム処理部２０１間を接続する共有バス３０２と、各処理部から共有バス３０２経由でアクセスされる共有メモリ３０１とを備えるが、図１９に示すマルチプロセッサシステムと比べて割り込み通知線の本数が半分となっている。
【００５３】
図１において、共有バス３０２は割り込み通知線３１２、３１３を有する。割り込み通知線３１２、３１３は、ネットワーク処理部１０１とリアルタイム処理部２０１との間で割り込みを伝える。
【００５４】
また、バスインターフェース１０６、２０６は、送信完了通知出力手段（Ｓｅｎｄ  ＩＮＴ）１１１、２１２を有する。送信完了通知出力手段１１１、２１２は、割り込み通知線３１２、３１３に割り込み信号を出力する。
【００５５】
また、バスインターフェース１０６、２０６は、受信開始通知入力手段（Ｒｅｃｖ  ＩＮＴ）１１２、２１１を有する。受信開始通知入力手段１１２、２１１は、割り込み通知線３１３、３１２から信号を入力してＣＰＵ１０２、２０２に割り込みを発生させる。
【００５６】
仮想ネットワークデバイスドライバ１１４、２１４は、従来のマルチプロセッサシステムと同様に、ＴＣＰ／ＩＰプロトコルスタック１１３、２１３の下で、バスインターフェース１０６、２０６を制御して、ＴＣＰ／ＩＰプロトコルスタック１１３、２１３とのデータの受け渡しや、共有メモリ３０１へのデータアクセス、割り込み信号の入出力を制御する。但し、従来のマルチプロセッサシステムと異なり、データ通信時に、受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作は行わない。
【００５７】
以下、当該マルチプロセッサシステム１００の動作の一例について、図２ないし図６を用いて説明する。但し、ここでは、ネットワーク処理部１０１をデータ送信側とし、リアルタイム処理部２０１をデータ受信側として説明するが、リアルタイム処理部２０１からネットワーク処理部１０１へデータを送信する場合も同様に実施可能である。
【００５８】
図２は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作フローを示す。また、図３は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作シーケンスを示す。また、図４ないし図６はマルチプロセッサシステム１００の動作を説明する動作説明図である。
【００５９】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ＴＣＰ／ＩＰプロトコルスタック１１３から送信要求を受けると（ステップＳ２０１）、ステップＳ２０２において、バスインターフェース１０６、共有バス３０２を経由して、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データの共有メモリ３０１への書き込みを実行する（図４の（１）参照。）。
【００６０】
書き込みが完了すると、仮想ネットワークデバイスドライバ１１４は、ステップＳ２０３において、送信完了通知出力手段（通知信号出力手段）１１１を制御して、割り込み通知線３１２への送信完了の割り込み信号（送信データの共有メモリへの書き込みを通知する通知信号）の出力を実行する（ｓ−ＩＮＴ送信）。受信側のリアルタイム処理部２０１の受信開始通知入力手段（通知信号入力手段）２１１は、割り込み通知線３１２により送信される上記の送信完了の割り込み信号を受けた後（ｒ−ＩＮＴ受信）、ＣＰＵ２０２に受信開始の割り込み信号を入力して割り込みを発生させ、仮想ネットワークデバイスドライバ２１４を起動させる（図５の（２）参照。）。
【００６１】
このように、ここでは、送信完了通知出力手段１１１が通知信号出力手段として、送信データの共有メモリ３０１への書き込みを通知する通知信号としての送信完了の割り込み信号を出力する。また、受信開始通知入力手段２１１が通知信号入力手段として、送信側のネットワーク処理部１０１からの通知信号である送信完了の割り込み信号を入力する。また、割り込み通知線３１２が、データ通信時に通知信号としての送信完了の割り込み信号を送信側のネットワーク処理部１０１から受信側のリアルタイム処理部２０１へ送信する。
【００６２】
仮想ネットワークデバイスドライバ２１４は、受信開始の割り込み信号が入力されると（ステップＳ２０４）、ステップＳ２０５において、共有バス３０２、バスインターフェース２０６を経由して、共有メモリ３０１に書き込まれたデータの読み出しを実行して、その読み出された送信データをＴＣＰ／ＩＰプロトコルスタック２１３に処理させる（図６の（３）参照。）。
【００６３】
一方、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、割り込み通知線３１２に送信完了の割り込み信号を出力した後、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【００６４】
そのため、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ２１４による共有メモリ３０１の読み出し動作が遅れた場合には、共有メモリ３０１上の送信データが、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４による次の送信データの書き込みによって上書きされてしまう可能性がある。
【００６５】
しかし、データ通信を実行するためのソフトウェアであるＴＣＰ／ＩＰプロトコルスタックのＴＣＰプロトコルには、データパケットのデータ化けを検知するためのチェックサムとデータ喪失を検知するためのシーケンスナンバーをチェックし、データの一部および全体の上書きを検知して再送を要求することにより、データ保証を実現する機能があり、最終的には正しいデータを通信することができる。つまり、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４による次の送信データの書き込みによって共有メモリ３０１上のデータが上書きされたとしても、受信側のリアルタイム処理部２０１のＴＣＰ／ＩＰプロトコルスタック２１３が再送を要求するので、正しいデータを通信することができる。
【００６６】
このように、ここでは、送信側のネットワーク処理部１０１のＴＣＰ／ＩＰプロトコルスタック１１３が、各処理部間でのデータ通信の実行とデータ保証が可能な第１のプロトコルソフトウェアとして働き、受信側のリアルタイム処理部２０１のＴＣＰ／ＩＰプロトコルスタック２１３が、各処理部間でのデータ通信の実行とデータ保証が可能な第２のプロトコルソフトウェアとして働く。
【００６７】
また、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４が、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データの共有メモリ３０１への書き込みと送信完了通知出力手段（通知信号出力手段）１１１による送信完了の割り込み信号（通知信号）の出力を実行する第１のデバイスドライバソフトウェアとして働く。
【００６８】
また、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ２１４が、受信開始通知入力手段（通知信号入力手段）２１１により送信完了の割り込み信号（通知信号）が入力された後、共有メモリ３０１からの送信データの読み出しを実行してその読み出された送信データをＴＣＰ／ＩＰプロトコルスタック２１３に処理させる第２のデバイスドライバソフトウェアとして働く。
【００６９】
以上のように、本実施の形態１では、データ通信時に、送信側から受信側への送信完了の割り込み信号出力動作および受信側による送信完了の割り込み入力検知動作のみが実行され、データ保証についてはＴＣＰ／ＩＰプロトコルスタックのみで行うようにするので、共有メモリの排他制御用の割り込み通知線を１本（従来のマルチプロセッサシステムの半分）とすることができ、従来のマルチプロセッサシステムで行われていた受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作を不要とすることができる。
【００７０】
なお、本実施の形態１では、送信側のネットワーク処理部１０１が搭載する仮想ネットワークデバイスドライバ１１４は、共有メモリ３０１への送信データの書き込み完了後（直後を含む）に、送信完了通知出力手段１１１による受信側のリアルタイム処理部２０１への送信完了の割り込み信号の出力を実行して、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行したが、書き込み前（直前を含む）、または送信データの共有メモリ３０１への書き込みが予め定められたデータ量に達した時点で割り込み信号を出力して、送信データの共有メモリ３０１への書き込み完了後にＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行するようにしてもよい。
【００７１】
また、第１のメモリ手段としてのメインメモリ１０３にＴＣＰ／ＩＰプロトコルスタック１１３（第１のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ１１４（第１のデバイスドライバソフトウェア）を格納する構成としたが、例えば、第１のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック１１３と仮想ネットワークデバイスドライバ１１４を別々に格納する２つのメモリを設ける構成としてもよい。
【００７２】
同様に、第２のメモリ手段としてのメインメモリ２０３にＴＣＰ／ＩＰプロトコルスタック２１３（第２のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ２１４（第２のデバイスドライバソフトウェア）を格納する構成としたが、例えば、第２のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック２１３と仮想ネットワークデバイスドライバ２１４を別々に格納する２つのメモリを設ける構成としてもよい。
【００７３】
（実施の形態２）
図７は、本実施の形態２におけるマルチプロセッサシステムのブロック図である。但し、図１、図１９に基づいて説明した部材に対応する部材には同一の符号を付して、説明を省略する。
【００７４】
当該マルチプロセッサシステム１００は、ネットワーク処理部１０１とリアルタイム処理部２０１がタイマ（Ｔｉｍｅｒ）１０７、２０７を備える点が実施の形態１におけるマルチプロセッサシステムと異なる。
【００７５】
図７において、タイマ１０７、２０７は、予め定められた所定時間（予測値）が経過するとタイムアウトを通知する。仮想ネットワークデバイスドライバ１１４、２１４は、各処理部間でのデータ通信時に、共有メモリ３０１への送信データの書き込みが完了した後、タイマ１０７、２０７の計時を開始し、タイマ１０７、２０７からタイムアウトの通知を受けた後にＴＣＰ／ＩＰプロトコルスタック１１３、２１３からの送信要求待ち状態に移行して、次の送信データの共有メモリ３０１への書き込みを実行する。なお、所定時間としては、データの受信側による共有メモリ３０１からのデータの読み出しに要する時間を予測して設定する。
【００７６】
以下、当該マルチプロセッサ１００の動作の一例について、図８、９を用いて説明する。但し、ここでは、ネットワーク処理部１０１をデータ送信側とし、リアルタイム処理部２０１をデータ受信側として説明するが、リアルタイム処理部２０１からネットワーク処理部１０１へデータを送信する場合も同様に実施可能である。また、本実施の形態２では、共有メモリ３０１へのデータの書き込みが完了し、送信完了通知出力手段１１１から送信完了の割り込み信号が出力された直後にタイマ１０７を起動して計時を開始するものとする。
【００７７】
図８は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作フローを示す。また、図９は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作シーケンスを示す。
【００７８】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ＴＣＰ／ＩＰプロトコルスタック１１３から送信要求を受けると（ステップＳ８０１）、ステップＳ８０２において、バスインターフェース１０６、共有バス３０２を経由して、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データの共有メモリ３０１への書き込みを実行する。
【００７９】
書き込みが完了すると、仮想ネットワークデバイスドライバ１１４は、ステップＳ８０３において、送信完了通知出力手段（通知信号出力手段）１１１を制御して、割り込み通知線３１２への送信完了の割り込み信号（送信データの共有メモリへの書き込みを通知する通知信号）の出力を実行する。
【００８０】
受信側のリアルタイム処理部２０１の受信開始通知入力手段（通知信号入力手段）２１１は、割り込み通知線３１２により送信される上記の送信完了の割り込み信号を受けた後、ＣＰＵ２０２に受信開始の割り込み信号を入力して割り込みを発生させ、仮想ネットワークデバイスドライバ２１４を起動させる。
【００８１】
仮想ネットワークデバイスドライバ２１４は、受信開始の割り込み信号が入力されると（ステップＳ８０６）、ステップＳ８０７において、共有バス３０２、バスインターフェース２０６を経由して、共有メモリ３０１に書き込まれたデータの読み出しを実行して、その読み出された送信データをＴＣＰ／ＩＰプロトコルスタック２１３に処理させる。
【００８２】
一方、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、割り込み通知線３１２に送信完了の割り込み信号を出力した後、直ちにタイマ１０７を起動させ、計時をスタートする（ステップＳ８０４）。
【００８３】
タイマ１０７には、上述したように受信側のリアルタイム処理部２０１が共有メモリ３０１からデータを読み出すのに要する時間を予測した予測値が設定してある。予測値の時間が経過すると、タイマ１０７は、仮想ネットワークデバイスドライバ１１４へタイムアウトの通知を行う。仮想ネットワークデバイスドライバ１１４はタイマ１０７からタイムアウトの通知を受けると計時の完了を判断して（ステップＳ８０５）、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【００８４】
本実施の形態２によれば、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４が、タイマ１０７からタイムアウトの通知を受けるまで、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態には移行せず、通知を受けてから送信要求待ち状態に移行するので、共有メモリ３０１に書き込まれた送信データが送信側の仮想ネットワークデバイスドライバ１１４による次の送信データの書き込みによって上書きされてしまう可能性を減らし、ＴＣＰプロトコルによる再送の処理を減らすことが可能となる。
【００８５】
なお、本実施の形態２では、共有メモリ３０１へのデータの書き込みが完了し、送信完了通知出力手段１１１から送信完了の割り込み信号が出力された直後にタイマ１０７を起動して計時を開始する例について説明したが、直後ではなく任意の一定時間経過後に起動させてもよい。また、書き込み前（直前を含む）、または送信データの共有メモリ３０１への書き込みが予め定められたデータ量に達した時点で割り込み信号を出力する場合には、送信データの共有メモリへの書き込み完了後（直後を含む）に起動させるようにしてもよい。
【００８６】
また、実施の形態１と同様に、第１のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック１１３（第１のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ１１４（第１のデバイスドライバソフトウェア）を格納する１つのメモリを設けてもよいし、別々に格納する２つのメモリを設けるようにしてもよい。また、第２のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック２１３（第２のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ２１４（第２のデバイスドライバソフトウェア）を格納する１つのメモリを設けてもよいし、別々に格納する２つのメモリを設けるようにしてもよい。
【００８７】
（実施の形態３）
図１０は、本実施の形態３におけるマルチプロセッサシステムのブロック図である。但し、図１、図１９に基づいて説明した部材に対応する部材には同一の符号を付して、説明を省略する。
【００８８】
当該マルチプロセッサシステム１００は、各処理部間でのデータ通信時に送信されるデータを一時的に記憶するメモリ領域（共有メモリ）を受信側の処理部が有するメインメモリに含ませた点が、実施の形態１、２におけるマルチプロセッサシステムと異なる。
【００８９】
つまり、当該マルチプロセッサシステム１００では、ネットワーク処理部１０１とリアルタイム処理部２０１が備えるメインメモリ１０３、２０３が共有可能であり、送信側から受信側のメインメモリに直接データを書き込めるように構成されている。
【００９０】
図１０において、ネットワーク処理部１０１が有するメインメモリ１０３とリアルタイム処理部２０１が有するメインメモリ２０３は共用可能なメモリである。ネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ネットワーク処理部１０１からリアルタイム処理部２０１へデータ送信を行うとき、バスインターフェース１０６を制御して、受信側のリアルタイム処理部２０１のバスインターフェース２０６を経由してメインメモリ２０３へ送信データを書き込む。同様に、リアルタイム処理部２０１の仮想ネットワークデバイスドライバ２１４は、リアルタイム処理部２０１からネットワーク処理部１０１へデータ送信を行うとき、バスインターフェース２０６を制御して、受信側のネットワーク処理部１０１のバスインターフェース１０６を経由してメインメモリ１０３へ送信データを書き込む。
【００９１】
また、受信側の処理部の仮想ネットワークデバイスドライバは、送信データが書き込まれたメインメモリの領域のポインタをＴＣＰ／ＩＰプロトコルスタックに指示する。ＴＣＰ／ＩＰプロトコルスタックはそのポインタが示す領域のデータをＴＣＰ／ＩＰプロトコルに基づいて処理する。
【００９２】
以下、当該マルチプロセッサ１００の動作の一例について、図１１ないし図１５を用いて説明する。但し、ここでは、ネットワーク処理部１０１をデータ送信側とし、リアルタイム処理部２０１をデータ受信側として説明するが、リアルタイム処理部２０１からネットワーク処理部１０１へデータを送信する場合も同様に実施可能である。
【００９３】
図１１は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作フローを示す。また、図１２は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部２０１の仮想ネットワークデバイスドライバ１１４、２１４の動作シーケンスを示す。また、図１３ないし図１５はマルチプロセッサシステム１００の動作を説明する動作説明図である。
【００９４】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ＴＣＰ／ＩＰプロトコルスタック１１３から送信要求を受けると（ステップＳ１１０１）、ステップＳ１１０２において、バスインターフェース１０６、共有バス３０２、受信側のリアルタイム処理部２０１のバスインターフェース２０６を経由して、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データのメインメモリ２０３への書き込みを実行する（図１３の（１）参照。）。
【００９５】
書き込みが完了すると、仮想ネットワークデバイスドライバ１１４は、ステップＳ１１０３において、送信完了通知出力手段（通知信号出力手段）１１１を制御して、割り込み通知線３１２への送信完了の割り込み信号（送信データの共有メモリへの書き込みを通知する通知信号）の出力を実行する（ｓ−ＩＮＴ送信）。受信側のリアルタイム処理部２０１の受信開始通知入力手段（通知信号入力手段）２１１は、割り込み通知線３１２により送信される上記の送信完了の割り込み信号を受けた後（ｒ−ＩＮＴ受信）、ＣＰＵ２０２に受信開始の割り込み信号を入力して割り込みを発生させ、仮想ネットワークデバイスドライバ２１４を起動させる（図１４の（２）参照。）。
【００９６】
仮想ネットワークデバイスドライバ２１４は、受信開始の割り込み信号が入力されると（ステップＳ１１０４）、ステップＳ１１０５において、メインメモリ２０３に書き込まれたデータのメモリ領域のポインタをＴＣＰ／ＩＰプロトコルスタック２１３に指示して、ＴＣＰ／ＩＰプロトコルスタック２１３に送信データの処理を行わせる（図１５の（３）参照。）。
【００９７】
一方、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、割り込み通知線３１２に送信完了の割り込み信号を出力した後、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【００９８】
以上のように、本実施の形態３によれば、共有メモリから受信側へのコピー動作（読み出し動作）を不要として、仮想ネットワークデバイスドライバの負荷を減らすと同時に、受信に必要なコピーの時間を減らすことで、受信側のメインメモリに書き込まれた送信データが送信側の処理部による次の送信データの書き込みによって上書きされてしまう可能性を減らし、ＴＣＰプロトコルによる再送の処理を減らすことが可能となる。
【００９９】
なお、本実施の形態３では、メインメモリを共有可能としたが、受信側の処理部内にメインメモリとは別異に共有用のメモリ（第３のメモリ手段）を設けるようにしてもよい。この場合であっても、共有メモリは、送信側の処理部からの共有メモリへのアクセス速度に対して受信側の処理部からのアクセス速度が速くなる位置に装備されるので、上記効果を奏することができる。
【０１００】
また、実施の形態１と同様に、送信側のネットワーク処理部１０１が搭載する仮想ネットワークデバイスドライバ１１４は、共有メモリ３０１への送信データの書き込み完了後（直後を含む）に、送信完了通知出力手段１１１による受信側のリアルタイム処理部２０１への送信完了の割り込み信号の出力を実行して、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行してもよいし、書き込み前（直前を含む）、または送信データの共有メモリ３０１への書き込みが予め定められたデータ量に達した時点で割り込み信号を出力して、送信データの共有メモリ３０１への書き込み完了後にＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行するようにしてもよい。また、実施の形態２と同様にタイマを設けてもよい。
【０１０１】
また、実施の形態１と同様に、第１のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック１１３（第１のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ１１４（第１のデバイスドライバソフトウェア）を格納する１つのメモリを設けてもよいし、別々に格納する２つのメモリを設けるようにしてもよい。また、第２のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック２１３（第２のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ２１４（第２のデバイスドライバソフトウェア）を格納する１つのメモリを設けてもよいし、別々に格納する２つのメモリを設けるようにしてもよい。２つのメモリを設ける構成とする場合は、いずれか一方に共有メモリを含ませてもよいし、両方に含ませてもよい。
【０１０２】
（実施の形態４）
図１６は、本実施の形態４におけるマルチプロセッサシステムのブロック図である。但し、図１、図１９に基づいて説明した部材に対応する部材には同一の符号を付して説明を省略する。
【０１０３】
当該マルチプロセッサシステム１００は、リアルタイム処理部を複数備える点が前述した実施の形態１におけるマルチプロセッサシステムと異なる。ここでは、２個のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂを備える場合を例に説明する。
【０１０４】
図１６において、通知信号分配手段３０３は、ネットワーク処理部１０１から２個のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂへデータ送信する場合（１対２のデータ通信）に、ネットワーク処理部１０１から割り込み通知線３１２を経由して送信完了の割り込み信号を受けると、受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂへ割り込み通知線３１２ａ、３１２ｂを経由して上記の送信完了の割り込み信号を分配出力する。
【０１０５】
以下、当該マルチプロセッサシステム１００の動作の一例について、図１７、図１８を用いて説明する。但し、ここでは、ネットワーク処理部１０１をデータ送信側とし、リアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂをデータ受信側として説明する。なお、リアルタイム処理部Ａ２０１ａ、もしくはリアルタイム処理部Ｂ２０１ｂからネットワーク処理部１０１へデータを送信する場合は、実施の形態１と同様に実施可能である。
【０１０６】
図１７は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂの仮想ネットワークデバイスドライバ１１４、２１４ａ、２１４ｂの動作フローを示す。また、図１８は送信側のネットワーク処理部１０１、受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂの仮想ネットワークデバイスドライバ１１４、２１４ａ、２１４ｂの動作シーケンスを示す。
【０１０７】
送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、ＴＣＰ／ＩＰプロトコルスタック１１３から送信要求を受けると（ステップＳ１７０１）、ステップＳ１７０２において、バスインターフェース１０６、共有バス３０２を経由して、ＴＣＰ／ＩＰプロトコルスタック１１３から受けた送信データの共有メモリ３０１への書き込みを実行する。
【０１０８】
書き込みが完了すると、仮想ネットワークデバイスドライバ１１４は、ステップＳ１７０３において、送信完了通知出力手段（通知信号出力手段）１１１を制御して、割り込み通知線３１２への送信完了の割り込み信号（送信データの共有メモリへの書き込みを通知する通知信号）の出力を実行する。
【０１０９】
通知信号分配手段３０３は、送信側のネットワーク処理部１０１からの送信完了の割り込み信号を入力すると、割り込み通知線３１２ａ、３１２ｂへ上記の送信完了割り込み信号と同一の信号を分配出力する。
【０１１０】
受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂの受信開始通知入力手段（通知信号入力手段）２１１ａ、２１１ｂは、割り込み通知線３１２ａ、３１２ｂにより送信される上記の送信完了の割り込み信号を受けた後、ＣＰＵ２０２ａ、２０２ｂに受信開始の割り込み信号を入力して割り込みを発生させ、仮想ネットワークデバイスドライバ２１４ａ、２１４ｂを起動させる。
【０１１１】
仮想ネットワークデバイスドライバ２１４ａ、２１４ｂは、受信開始の割り込み信号が入力されると（ステップＳ１７０４）、ステップＳ１７０５において、共有バス３０２、バスインターフェース２０６ａ、２０６ｂを経由して、共有メモリ３０１に書き込まれたデータの読み出しを実行して、その読み出された送信データをＴＣＰ／ＩＰプロトコルスタック２１３ａ、２１３ｂに処理させる。
【０１１２】
一方、送信側のネットワーク処理部１０１の仮想ネットワークデバイスドライバ１１４は、割り込み通知線３１２に送信完了の割り込み信号を出力した後、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行する。
【０１１３】
なお、本実施の形態４では、１個のネットワーク処理部から２個のリアルタイム処理部へ送信データが送信される場合について説明したが、無論、１対ｎのデータ通信についても同様に実施可能である。さらに、例えば、リアルタイム処理部Ａからネットワーク処理部とリアルタイム処理部Ｂへのデータ送信も行われる場合には、通知信号分配手段にリアルタイム処理部Ａからの割り込み信号をネットワーク処理部とリアルタイム処理部Ｂへ分配する機能を持たせればよい。
【０１１４】
また、実施の形態１と同様に、送信側のネットワーク処理部１０１が搭載する仮想ネットワークデバイスドライバ１１４は、共有メモリ３０１への送信データの書き込み完了後（直後を含む）に、送信完了通知出力手段１１１による受信側のリアルタイム処理部Ａ２０１ａ、Ｂ２０１ｂへの送信完了の割り込み信号の出力を実行して、ＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行してもよいし、書き込み前（直前を含む）、または送信データの共有メモリ３０１への書き込みが予め定められたデータ量に達した時点で割り込み信号を出力して、送信データの共有メモリ３０１への書き込み完了後にＴＣＰ／ＩＰプロトコルスタック１１３からの送信要求待ち状態に移行するようにしてもよい。また、実施の形態２と同様にタイマを設けてもよいし、実施の形態３と同様に、各処理部が有するメインメモリを共有可能なメモリとしてもよい。
【０１１５】
また、実施の形態１と同様に、第１のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック１１３（第１のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ１１４（第１のデバイスドライバソフトウェア）を格納する１つのメモリを設けてもよいし、別々に格納する２つのメモリを設けるようにしてもよい。また、第２のメモリ手段として、ＴＣＰ／ＩＰプロトコルスタック２１３（第２のプロトコルソフトウェア）と仮想ネットワークデバイスドライバ２１４（第２のデバイスドライバソフトウェア）を格納する１つのメモリを設けてもよいし、別々に格納する２つのメモリを設けるようにしてもよい。また、２つのメモリを設ける構成とする場合であって、各処理部でそれらを共有可能とする場合には、いずれか一方に共有メモリを含ませてもよいし、両方に含ませてもよい。
【０１１６】
以上のように、本実施の形態４によれば、１対ｎのデータ通信を実現するために、送信側の１個の処理部が有する送信完了通知手段（通知信号出力手段）に接続する共有メモリの排他制御用の割り込み通知線を１本にでき、受信側のｎ個の処理部へ送信完了の割り込み信号を送信する割り込み通知線を従来のマルチプロセッサシステムの半分とすることができる。
【０１１７】
また、従来のマルチプロセッサシステムで行われていた受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作を不要とすることができる。したがって、従来のマルチプロセッサシステムで行われていた送信側による全ての受信完了の割り込み信号の入力検知動作を不要とすることができる。
【０１１８】
また、実施の形態１ないし４によれば、従来のマルチプロセッサシステムで行われていた受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作を不要とすることができるので、処理部間の通信が高速なマルチプロセッサシステムにおいて有用となる。また、インターネット等と接続するＡＶ機器や、ＡＶ機能を有する携帯電話等に使用されるマルチプロセッサシステムにおいて有用となる。また、ネットワークと接続するロボットや画像処理装置、画像認識装置等の用途にも応用できる。
【０１１９】
なお、上記の実施の形態１ないし４では、説明の簡単化のため、共有メモリ上のバッファを１枚としたが、複数枚のバッファやリングバッファなどでも同様の効果を奏することができる。
【産業上の利用可能性】
【０１２０】
本発明にかかるマルチプロセッサシステムは、各処理部間でのデータ通信時に従来のマルチプロセッサシステムで行われていた受信側から送信側への受信完了の割り込み信号出力動作および送信側による受信完了の割り込み入力検知動作を不要とし、各処理部間でのデータ通信時におけるデータ保証の冗長性を排することができ、例えば、インターネット等と接続するＡＶ機器や、ＡＶ機能を有する携帯電話等、ネットワークと接続するロボットや画像処理装置、画像認識装置等の用途に応用できる。
【図面の簡単な説明】
【０１２１】
【図１】本発明の実施の形態１におけるマルチプロセッサシステムのブロック図
【図２】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作フローを示す図
【図３】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作シーケンスを示す図
【図４】同実施の形態のマルチプロセッサシステムの動作を説明する動作説明図
【図５】同実施の形態のマルチプロセッサシステムの動作を説明する動作説明図
【図６】同実施の形態のマルチプロセッサシステムの動作を説明する動作説明図
【図７】本発明の実施の形態２におけるマルチプロセッサシステムのブロック図
【図８】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作フローを示す図
【図９】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作シーケンスを示す図
【図１０】本発明の実施の形態３におけるマルチプロセッサシステムのブロック図
【図１１】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作フローを示す図
【図１２】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作シーケンスを示す図
【図１３】同実施の形態のマルチプロセッサシステムの動作を説明する動作説明図
【図１４】同実施の形態のマルチプロセッサシステムの動作を説明する動作説明図
【図１５】同実施の形態のマルチプロセッサシステムの動作を説明する動作説明図
【図１６】本発明の実施の形態４におけるマルチプロセッサシステムのブロック図
【図１７】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作フローを示す図
【図１８】同実施の形態のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作シーケンスを示す図
【図１９】従来のマルチプロセッサシステムのブロック図
【図２０】同従来のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作フローを示す図
【図２１】同従来のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作シーケンスを示す図
【図２２】同従来のマルチプロセッサシステムの動作を説明する動作説明図
【図２３】同従来のマルチプロセッサシステムの動作を説明する動作説明図
【図２４】同従来のマルチプロセッサシステムの動作を説明する動作説明図
【図２５】同従来のマルチプロセッサシステムの動作を説明する動作説明図
【図２６】他の従来のマルチプロセッサシステムのブロック図
【図２７】同従来のマルチプロセッサシステムにおける送信側のネットワーク処理部と受信側のリアルタイム処理部の仮想ネットワークデバイスドライバの動作フローを示す図
【符号の説明】
【０１２２】
１００      マルチプロセッサシステム
１０１      ネットワーク処理部
１０２、２０２、２０２ａ、２０２ｂ      ＣＰＵ
１０３、２０３、２０３ａ、２０３ｂ      メインメモリ
１０４、２０４、２０４ａ、２０４ｂ      ＯＳ
１０５      ネットワークインターフェース
１０６、２０６、２０６ａ、２０６ｂ      バスインターフェース
１０７、２０７      タイマ
１１１、２１２、２１２ａ、２１２ｂ      送信完了通知出力手段
１１２、２１１、２１１ａ、２１１ｂ      受信開始通知入力手段
１１３、２１３、２１３ａ、２１３ｂ      ＴＣＰ／ＩＰプロトコルスタックソフトウェア
１１４、２１４、２１４ａ、２１４ｂ      仮想ネットワークデバイスドライバソフトウェア
１１５      ネットワークデバイスドライバソフトウェア
１１６、２１７、２１７ａ、２１７ｂ      送信完了通知出力・受信完了通知入力手段
１１７、２１６、２１６ａ、２１６ｂ      送信完了通知入力・受信完了通知出力手段
２０１、２０１ａ、２０１ｂ      リアルタイム処理部
３０１      共有メモリ
３０２      共有バス
３０３      通知信号分配手段
３１１      アドレス／データ線
３１２、３１２ａ、３１２ｂ、３１３、３１３ａ、３１３ｂ、３１４、３１４ａ、３１４ｂ、３１５、３１５ａ、３１５ｂ、３１６、３１６ａ、３１６ｂ、３１７、３１７ａ、３１７ｂ      割り込み通知線
【図１】
2006172142.tif 000003
【図２】
2006172142.tif 000004
【図３】
2006172142.tif 000005
【図４】
2006172142.tif 000006
【図５】
2006172142.tif 000007
【図６】
2006172142.tif 000008
【図７】
2006172142.tif 000009
【図８】
2006172142.tif 000010
【図９】
2006172142.tif 000011
【図１０】
2006172142.tif 000012
【図１１】
2006172142.tif 000013
【図１２】
2006172142.tif 000014
【図１３】
2006172142.tif 000015
【図１４】
2006172142.tif 000016
【図１５】
2006172142.tif 000017
【図１６】
2006172142.tif 000018
【図１７】
2006172142.tif 000019
【図１８】
2006172142.tif 000020
【図１９】
2006172142.tif 000021
【図２０】
2006172142.tif 000022
【図２１】
2006172142.tif 000023
【図２２】
2006172142.tif 000024
【図２３】
2006172142.tif 000025
【図２４】
2006172142.tif 000026
【図２５】
2006172142.tif 000027
【図２６】
2006172142.tif 000028
【図２７】
2006172142.tif 000029