(57)【要約】【課題】複数のプロセッサが共有メモリへのアクセスを競合することなく共有メモリにアクセスする共有メモリアクセスシステムを提供する。【解決手段】実施形態の共有メモリアクセスシステム２０ａは、演算処理プロセッサ１ａと通信処理プロセッサ２ａと共有メモリ１０ａとを備え、共有メモリ１０ａはアクセスの際に送信データ及び受信データを記憶するバンク手段１０ｒｓａを備える。バンク手段１０ｒｓａは、送信データ及び受信データを記憶しバンク切り替え可能な第１及び第２送受信領域バンク１０ｒｓ１及び１０ｒｓ２と、演算処理プロセッサ１ａからのバンク切替要求フラグをセットしバンク切り替え後にバンク切替要求フラグをリセットするバンク切替要求フラグ手段１１ａと、通信処理プロセッサ２ａからのバンク切替指令に応じてバンク切り替えを制御するバンク切替制御手段１２ａからなるバンク制御手段１５ａを有する。【選択図】図１
2014085820.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサと、第２プロセッサと、前記第１および第２プロセッサによって共有される共有メモリとを備え、前記第２プロセッサと接続された伝送路へ送信データを送信し、前記伝送路から受信データを受信して、前記共有メモリを介して前記第１および第２プロセッサの間で前記送信データと前記受信データとのアクセスを行う共有メモリアクセスシステムであって、
前記共有メモリは、前記アクセスの際に前記送信データおよび前記受信データを記憶する少なくとも１つのバンク手段を備え、
前記バンク手段は、
前記送信データおよび前記受信データを記憶し、バンク切り替え可能な第１および第２送受信領域バンクと、
前記第１および第２送受信領域バンクのバンク切り替えを制御するバンク制御手段と、を有し、
前記第２プロセッサは、前記バンク制御手段にバンク切替指令を送り、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な一方に前記受信データを書き込み、または、前記第１または前記第２送受信領域バンクのアクセス可能な他方から前記送信データを読み出し、
前記第１プロセッサは、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な前記一方から前記受信データを読み出し、または、前記第１または前記第２送受信領域バンクのアクセス可能な前記他方に前記送信データを書き込む
ことを特徴とする共有メモリアクセスシステム。
【請求項２】
前記バンク制御手段は、
前記第１プロセッサからバンク切替要求を受け付けてバンク切替要求フラグをセットし、前記バンク切り替え後に前記バンク切替要求フラグをリセットするバンク切替要求フラグ手段と、
前記第２プロセッサから前記バンク切替指令を受けて、前記第１および第２送受信領域バンクのバンク切り替えを実行するするバンク切替制御手段と、を有し、
前記第２プロセッサは、前記バンク切替要求フラグ手段に前記バンク切替要求フラグがセットされている場合に、前記バンク切替制御手段へ前記バンク切替指令を送る
ことを特徴とする請求項１に記載の共有メモリアクセスシステム。
【請求項３】
前記第１プロセッサが前記バンク手段から前記受信データを読み出す処理および前記バンク手段に前記送信データを書き込む処理を少なくとも含む制御周期として、さらに前記制御周期に次の前記制御周期の待ち時間を含み、前記制御周期における前記受信データを読み出す処理は前記送信データを書き込む処理よりも前の処理であり、
前記第１プロセッサが、次の前記制御周期の前記待ち時間内に前記バンク切替要求を送り、
前記第２プロセッサが、前記バンク切替要求フラグ手段に前記バンク切替要求フラグがセットされている場合に、次の前記制御周期の前記待ち時間内に前記バンク切替制御手段へ前記バンク切替指令を送る
ことを特徴とする請求項２に記載の共有メモリアクセスシステム。
【請求項４】
前記第１プロセッサが前記バンク手段に前記送信データを書き込む処理と前記バンク手段から前記受信データを読み出す処理とこれら以外の他の処理を少なくとも含む制御周期として、さらに前記制御周期に次の前記制御周期の待ち時間を含み、前記制御周期における前記送信データを書き込む処理は前記他の処理よりも後の処理であり、かつ、前記送信データを書き込む処理は前記受信データを読み出す処理よりも前の処理であり、
前記第１プロセッサが、次の前記制御周期の前記待ち時間と前記他の処理との間に前記バンク切替要求を送り、
前記第２プロセッサが、前記バンク切替要求フラグ手段に前記バンク切替要求フラグがセットされている場合に、次の前記制御周期の前記待ち時間と前記他の処理との間に前記バンク切替制御手段へ前記バンク切替指令を送る
ことを特徴とする請求項２に記載の共有メモリアクセスシステム。
【請求項５】
前記第１送受信領域バンクは、前記受信データを記憶するバンク切り替え可能な第１受信領域バンクおよび前記送信データを記憶するバンク切り替え可能な第１送信領域バンクからなり、
前記第２送受信領域バンクは、前記受信データを記憶するバンク切り替え可能な第２受信領域バンクおよび前記送信データを記憶するバンク切り替え可能な第２送信領域バンクからなり、
前記バンク切替指令は、前記第１受信領域バンクと前記第２受信領域バンクとの間でバンク切り替え可能な受信領域バンクに対する受信領域バンク切替指令および前記第１送信領域バンクと前記第２送信領域バンクとの間でバンク切り替え可能な送信領域バンクに対する送信領域バンク切替指令を含み、
前記バンク制御手段は、
前記第２プロセッサからの前記受信領域バンク切替指令に応じて、前記第１および第２プロセッサの各々に対して前記受信領域バンクのアクセス可能なバンクへ排他的に切り替える受信領域バンク切替制御手段と、
前記第２プロセッサからの前記送信領域バンク切替指令に応じて、前記第１および第２プロセッサの各々に対して前記送信領域バンクのアクセス可能なバンクへ排他的に切り替える送信領域バンク切替制御手段と、
前記第１プロセッサから受信領域バンク使用要求を受け付けて、前記第１プロセッサから前記第１または前記第２受信領域バンクに対してアクセスを行っている期間であることを示す受信領域第１プロセッサ使用中フラグをセットし、前記受信領域バンクを切り替え後に前記受信領域第１プロセッサ使用中フラグをリセットする受信領域第１プロセッサ使用中フラグ手段と、
前記第１プロセッサから送信領域バンク使用要求を受け付けて、前記第１プロセッサが前記第１または前記第２送信領域バンクに対してアクセスを行っている期間であることを示す送信領域第１プロセッサ使用中フラグをセットし、前記送信領域バンクを切り替え後に前記送信領域第１プロセッサ使用中フラグをリセットする送信領域第１プロセッサ使用中フラグ手段と、を有し、
前記第１プロセッサは、前記第１または前記第２受信領域バンクのアクセス可能なバンクから前記受信データを読み出し、前記第１または第２送信領域バンクのアクセス可能なバンクへ前記送信データを書き込み、
前記第２プロセッサは、前記第１または前記第２受信領域バンクのアクセス可能なバンクへ前記受信データを書き込み、前記第１または前記第２送信領域バンクのアクセス可能なバンクから前記送信データを読み出す
ことを特徴とする請求項１に記載の共有メモリアクセスシステム。
【請求項６】
前記第１送受信領域バンクには、前記受信データを記憶するバンク切り替え可能な第１ないし第３受信領域バンクからなる受信領域バンクのいずれか一つのバンクと、前記送信データを記憶するバンク切り替え可能な第１ないし第３送信領域バンクからなる送信領域バンクのいずれか一つのバンクとが対応し、
前記第２送受信領域バンクには、前記受信領域バンクのいずれか一つの他のバンクと、前記送信領域バンクのいずれか一つの他のバンクとが対応し、
前記受信領域バンクおよび前記送信領域バンクの残りのバンクが、前記第１および第２送受信領域バンクに含まれない待機バンクに対応するように区分され、
前記第１および第２送受信領域バンクは、さらに、前記受信領域バンクの前記いずれか一つのバンクと前記他のバンクとの間でバンク切り替え可能であり、前記送信領域バンクの前記いずれか一つのバンクと前記他のバンクとの間でバンク切り替え可能であり、
前記バンク切替指令は、前記受信領域バンクに対する受信領域バンク第１切替指令および受信領域バンク第２切替指令と、前記送信領域バンクに対する送信領域バンク第１切替指令および送信領域バンク第２切替指令とを含み、
前記バンク制御手段は、
前記第１プロセッサからの前記受信領域バンク第１切替指令に応じて、前記第１プロセッサがアクセス可能なバンクとして最も直近に前記受信データが書き込まれた前記第１ないし第３受信領域バンクのいずれか一つのバンクに前記受信領域バンクを切り替える受信領域バンク第１切替制御手段と、
前記第２プロセッサからの前記受信領域バンク第２切替指令に応じて、前記第２プロセッサがアクセス可能なバンクとして前記第１ないし第３受信領域バンクのうちの前記待機バンクに前記受信領域バンクを切り替える受信領域バンク第２切替制御手段と、
前記第１プロセッサからの前記送信領域バンク第１切替指令に応じて、前記第１プロセッサがアクセス可能なバンクとして前記第１ないし第３送信領域バンクのうちの前記待機バンクに前記送信領域バンクを切り替える送信領域バンク第１切替制御手段と、
前記第２プロセッサからの前記送信領域バンク第２切替指令に応じて、前記第２プロセッサがアクセス可能なバンクとして最も直近に前記送信データが書き込まれた前記第１ないし第３送信領域バンクのいずれか一つのバンクに前記送信領域バンクを切り替える送信領域バンク第２切替制御手段と、を有し、
前記第１プロセッサは、前記第１ないし第３受信領域バンクのアクセス可能ないずれか一つのバンクから前記受信データを読み出し、前記第１ないし第３送信領域バンクのアクセス可能ないずれか一つのバンクへ前記送信データを書き込み、
前記第２プロセッサは、前記第１ないし第３受信領域バンクのアクセス可能ないずれか一つのバンクへ前記受信データを書き込み、前記第１ないし第３送信領域バンクのアクセス可能ないずれか一つのバンクから前記送信データを読み出す
ことを特徴とする請求項１に記載の共有メモリアクセスシステム。
【請求項７】
前記送信データおよび前記受信データの通信先である相手ノードが前記伝送路に複数接続され、
前記共有メモリは、複数の前記相手ノードに割り当てられる少なくとも同数の複数の前記バンク手段を備え、
各々の前記バンク手段は、前記相手ノードごとに割り当てられ、前記相手ノードごとに前記送信データおよび前記受信データを記憶し、
前記第１プロセッサは、各々の前記相手ノードに送信する前記送信データを前記相手ノードごとに割り当てられた前記バンク手段に書き込み、各々の前記相手ノードから受信した前記受信データを前記相手ノードごとに割り当てられた前記バンク手段から読み出し、
前記第２プロセッサは、各々の前記相手ノードから受信した前記受信データを前記相手ノードごとに割り当てられた前記バンク手段に書き込み、各々の前記相手ノードへ送信する前記送信データを前記相手ノードごとに割り当てられた前記バンク手段から読み出す
ことを特徴とする請求項１ないし請求項６のいずれか一項に記載の共有メモリアクセスシステム。
【請求項８】
前記バンク手段は、前記送信データおよび前記受信データを前記共有メモリに格納する際に、前記送信データおよび前記受信データの更新を確認可能な更新番号を前記送信データおよび前記受信データの各々に付加して記憶し、読み出し時に前記更新番号により前記送信データおよび前記受信データについて更新を確認するデータ更新管理手段をさらに有する
ことを特徴とする請求項１ないし請求項７のいずれか一項に記載の共有メモリアクセスシステム。
【請求項９】
前記第２プロセッサは、前記送信データの更新の有無を所定の周期で監視する送信データ用タイマと、擬似データを記憶する擬似データ記憶手段とを有し、
前記第２プロセッサは、前記送信データ用タイマにより前記所定の周期に前記送信データが更新されない場合に、前記擬似データを前記送信データの代わりに前記伝送路を介して送信する
ことを特徴とする請求項１ないし請求項８のいずれか一項に記載の共有メモリアクセスシステム。
【請求項１０】
前記第２プロセッサは、前記受信データの更新の有無を所定の周期で監視する受信データ用タイマをさらに有し、
前記第２プロセッサは、前記受信データ用タイマにより前記所定の周期に前記受信データが更新されない場合に、前記擬似データを前記受信データの代わりに前記共有メモリに書き込む
ことを特徴とする請求項９に記載の共有メモリアクセスシステム。
【請求項１１】
第１プロセッサと、第２プロセッサと、前記第１および第２プロセッサによって共有される共有メモリとを備え、前記第２プロセッサと接続された伝送路へ送信データを送信し、前記伝送路から受信データを受信するために、前記共有メモリは、前記送信データおよび前記受信データを記憶しバンク切り替え可能な第１および第２送受信領域バンクと、前記第１および第２送受信領域バンクのバンク切り替えを制御するバンク制御手段とを有する少なくとも１つのバンク手段を備え、前記共有メモリを介して、前記第１および第２プロセッサの間で前記送信データと前記受信データとのアクセスを行う共有メモリアクセスシステムに用いられる共有メモリアクセス方法であって、
前記第２プロセッサが、前記バンク制御手段にバンク切替指令を送るバンク切替指令ステップと、
前記第２プロセッサが、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な一方に前記受信データを書き込み、または、前記第１または前記第２送受信領域バンクのアクセス可能な他方から前記送信データを読み出す第２プロセッサアクセスステップと、
前記第１プロセッサが、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な前記一方から前記受信データを読み出し、または、前記第１または前記第２送受信領域バンクのアクセス可能な前記他方に前記送信データを書き込む第１プロセッサアクセスステップと、を含む
ことを特徴とする共有メモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、共有メモリアクセスシステムおよび共有メモリアクセス方法に関する。
【背景技術】
【０００２】
共有メモリアクセスシステムにおいて、例えば外部のネットワークと通信処理プロセッサとを介して送受信データをやり取りし、その送受信データは共有メモリに一時蓄積されて演算処理プロセッサにより処理されるように２つのプロセッサ間で転送されるものがある。
【０００３】
なお、マルチプロセッサ間通信方法において、複数のプロセッサで共通に使用される共有メモリのアクセス時における競合制御を、当該共有メモリ上に設けた排他制御管理エリアのフラグによって行い、また、通信するプロセッサの各組合せ毎に付与した識別番号毎に、あるいは送信と受信とで独立して、交信エリアの使用権の競合制御を行うことが知られている（例えば、特許文献１を参照）。
【０００４】
また、共有メモリのアクセス方式において、共有メモリにデータを書込む側の処理装置が書込み要否判定機能と、該処理装置側で占有できる書込み要否判定機能用ローカルバッファとを備え、共有メモリにデータを書込む際に、書込み要否判定機能が書込み要否判定機能用ローカルバッファの内容を用いて書込みデータに変化があるか無いかを書込みデータ毎に判定し、データに変化があった場合にのみ実際に共有メモリにデータを書込むとともに、共有メモリの書込みアドレスに対応した書込み要否判定機能用ローカルバッファのアドレスに書込みデータに対応した値を書込むことが知られている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−１２３８７号公報
【特許文献２】特開２００７−２７９８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
はじめに、上述した特許文献をはじめとする従来技術の共有メモリアクセスシステムについて説明する。図１８は、従来技術の共有メモリアクセスシステムの構成を示すブロック図である。また、図１９は、従来技術の共有メモリアクセスシステムの制御処理タイミングを示す図である。
【０００７】
図１８に示す共有メモリアクセスシステムは、共有メモリ１００と、共有メモリ１００上のデータを演算処理する演算処理プロセッサ１０１と、伝送路３００を介して送受信される伝送データ（送信データおよび受信データ）を共有メモリ１００に対して読み出しおよび書き出し処理する通信処理プロセッサ２００とを備えている。
【０００８】
図１８に、共有メモリ１００内にあるフラグ領域１３０に割り当てられているフラグの種別を示す。例えば、フラグ領域１３０には、以下の４つのフラグを含んでいる。
【０００９】
受信領域演算処理プロセッサ使用中フラグ１３０ｒ１
受信領域通信処理プロセッサ使用中フラグ１３０ｒ２
送信領域演算処理プロセッサ使用中フラグ１３０ｓ１
送信領域通信処理プロセッサ使用中フラグ１３０ｓ２
演算処理プロセッサ１０１は、受信領域通信処理プロセッサ使用中フラグ１３０ｒ２を読み取り、通信処理プロセッサ２００が受信領域バンク１００ｒを使用中（フラグがセット状態）である場合に、受信領域通信処理プロセッサ使用中フラグ１３０ｒ２がクリアされるまで待つ。
【００１０】
次に、演算処理プロセッサ１０１は、受信領域演算処理プロセッサ使用中フラグ１３０ｒ１をセットし、受信領域バンク１００ｒから受信データを読み出す。その後、受信領域演算処理プロセッサ使用中フラグ１３０ｒ１をクリアする。これにより、演算処理プロセッサ１０１は、共有メモリ１００から読み出した受信データを用いて、演算処理を行う。
【００１１】
また、演算処理プロセッサ１０１は、送信領域通信処理プロセッサ使用中フラグ１３０ｓ２を読み取り、通信処理プロセッサ２００が送信領域バンク１００ｓを使用中である場合に、送信領域通信処理プロセッサ使用中フラグ１３０ｓ２がクリアされるまで待つ。
【００１２】
次に、演算処理プロセッサ１０１は、送信領域演算処理プロセッサ使用中フラグ１３０ｓ１をセットし、送信領域バンク１００ｓに送信データを書き込む。その書き込み後、演算処理プロセッサ１０１は、送信領域演算処理プロセッサ使用中フラグ１３０ｓ１をクリアする。
【００１３】
図１９の制御処理１０３に示すように、演算処理プロセッサ１０１は、制御周期ごとに、上述したような共有メモリ１００内の受信領域バンク１００ｒから受信データを読み出す処理を実行している。さらに、演算処理プロセッサ１０１は、読み出した受信データを用いて演算処理を実行した後、共有メモリ１００内の送信領域バンク１００ｓに送信データを書き込む処理を実行する。その書き込み後に、演算処理プロセッサ１０１は、次の制御周期を待つ。
【００１４】
一方、図１９に示す制御処理１０３の間に、通信処理プロセッサ２００は、送信領域バンク１００ｓから送信データを読み出し、伝送路３００を介して、読み出した送信データを図示しない送信先に送る。また、受信データを受けた場合に、通信処理プロセッサ２００は、その受信データを受信領域バンク１００ｒに書き込む。
【００１５】
上記で説明したように、演算処理プロセッサ１０１および通信処理プロセッサ２００は互いに非同期に動作しているため、演算処理プロセッサ１０１および通信処理プロセッサ２００は、非同期に共有メモリ１００にアクセスすることになる。
【００１６】
上述した共有メモリアクセスシステムにおいては、２つのプロセッサのうちの一方の通信処理プロセッサが共有メモリを使用中の間に、共有メモリへのアクセスが競合した場合に、他方の演算処理プロセッサが共有メモリへのアクセスを待たされることがあった。このため、演算処理プロセッサの動作時間が一定しないということが課題であった。
【００１７】
本発明の実施形態が解決しようとする課題は、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる共有メモリアクセスシステムおよび共有メモリアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記課題を解決するために、実施形態の共有メモリアクセスシステムは、第１プロセッサと、第２プロセッサと、前記第１および第２プロセッサによって共有される共有メモリとを備え、前記第２プロセッサと接続された伝送路へ送信データを送信し、前記伝送路から受信データを受信して、前記共有メモリを介して前記第１および第２プロセッサの間で前記送信データと前記受信データとのアクセスを行う共有メモリアクセスシステムである。前記共有メモリは、前記アクセスの際に前記送信データおよび前記受信データを記憶する少なくとも１つのバンク手段を備え、前記バンク手段は、前記送信データおよび前記受信データを記憶し、バンク切り替え可能な第１および第２送受信領域バンクと、前記第１および第２送受信領域バンクのバンク切り替えを制御するバンク制御手段と、を有し、前記第２プロセッサは、前記バンク制御手段にバンク切替指令を送り、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な一方に前記受信データを書き込み、または、前記第１または前記第２送受信領域バンクのアクセス可能な他方から前記送信データを読み出し、前記第１プロセッサは、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な前記一方から前記受信データを読み出し、または、前記第１または前記第２送受信領域バンクのアクセス可能な前記他方に前記送信データを書き込むことを特徴とする。
【００１９】
また、上記課題を解決するために、実施形態の共有メモリアクセス方法は、第１プロセッサと、第２プロセッサと、前記第１および第２プロセッサによって共有される共有メモリとを備え、前記第２プロセッサと接続された伝送路へ送信データを送信し、前記伝送路から受信データを受信するために、前記共有メモリは、前記送信データおよび前記受信データを記憶しバンク切り替え可能な第１および第２送受信領域バンクと、前記第１および第２送受信領域バンクのバンク切り替えを制御するバンク制御手段とを有する少なくとも１つのバンク手段を備え、前記共有メモリを介して、前記第１および第２プロセッサの間で前記送信データと前記受信データとのアクセスを行う共有メモリアクセスシステムに用いられる共有メモリアクセス方法である。当該共有メモリアクセス方法は、前記第２プロセッサが、前記バンク制御手段にバンク切替指令を送るバンク切替指令ステップと、前記第２プロセッサが、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な一方に前記受信データを書き込み、または、前記第１または前記第２送受信領域バンクのアクセス可能な他方から前記送信データを読み出す第２プロセッサアクセスステップと、前記第１プロセッサが、前記バンク切り替えに応じて、前記第１または前記第２送受信領域バンクのアクセス可能な前記一方から前記受信データを読み出し、または、前記第１または前記第２送受信領域バンクのアクセス可能な前記他方に前記送信データを書き込む第１プロセッサアクセスステップと、を含むことを特徴とする。
【発明の効果】
【００２０】
本発明に係る共有メモリアクセスシステムおよび共有メモリアクセス方法の実施形態によれば、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明に係る共有メモリアクセスシステムの第１および第２の実施形態の構成を示すブロック図。
【図２】第１の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図。
【図３】第１の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図４】第１の実施形態の通信処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図５】第２の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図。
【図６】第２の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図７】本発明に係る共有メモリアクセスシステムの第３の実施形態の構成を示すブロック図。
【図８】第３の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図。
【図９】第３の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図１０】第３の実施形態の通信処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図１１】本発明に係る共有メモリアクセスシステムの第４の実施形態の構成を示すブロック図。
【図１２】第４の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図。
【図１３】第４の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図１４】第４の実施形態の通信処理プロセッサの共有メモリアクセス処理フローを示すフロー図。
【図１５】本発明に係る共有メモリアクセスシステムの第５の実施形態の構成を示すブロック図。
【図１６】本発明に係る共有メモリアクセスシステムの第６の実施形態の構成を示すブロック図。
【図１７】本発明に係る共有メモリアクセスシステムの第７の実施形態の構成を示すブロック図。
【図１８】従来技術の共有メモリアクセスシステムの構成を示すブロック図。
【図１９】従来技術の共有メモリアクセスシステムの制御処理タイミングを示す図。
【発明を実施するための形態】
【００２２】
以下、本発明に係る実施形態の共有メモリアクセスシステムおよび共有メモリアクセス方法について、図面を参照して具体的に説明する。ここで、互いに同一または類似の部分には共通の符号を付して、重複する説明は省略する。ここで説明する下記の実施形態はいずれも、２つのプロセッサを用いた共有メモリアクセスシステムおよび共有メモリアクセス方法の一例をとりあげて説明する。
【００２３】
［第１の実施形態］
図１は、本発明に係る共有メモリアクセスシステムの第１および第２の実施形態の構成を示すブロック図である。図２は、第１の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図である。また、図３は第１の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図であり、図４は第１の実施形態の通信処理プロセッサの共有メモリアクセス処理フローを示すフロー図である。なお、第２の実施形態の共有メモリアクセスシステムについては、後述する。
【００２４】
共有メモリアクセスシステム２０ａは、図１に示すように、演算処理プロセッサ（第１プロセッサ）１ａと、通信処理プロセッサ（第２プロセッサ）２ａと、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａによって共有される共有メモリ１０ａとを備えている。
【００２５】
共有メモリアクセスシステム２０ａは、通信処理プロセッサ２ａと接続された伝送路３を介して図示しない通信先に送信データを送信し、通信先から受信データを受信する。また、共有メモリアクセスシステム２０ａは、共有メモリ１０ａを介して、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａの間で送信データと受信データとのアクセスを行う。
【００２６】
演算処理プロセッサ１ａは、共有メモリアクセスシステム２０ａにおいて、主に受信データを用いて演算処理を実行し、適宜、演算処理の結果を送信データとして生成するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。演算処理プロセッサ１ａは、例えばプラントデータなどの受信データから、所定のプラント予測結果などを算出し、その算出データを送信データとして、伝送路３を介して送信先に送信する。
【００２７】
通信処理プロセッサ２ａは、共有メモリアクセスシステム２０ａにおいて、伝送路３から受信データを受信し、伝送路３へ送信データを送信する通信処理を実行するＣＰＵである。
【００２８】
伝送路３は、データ送受信可能な通信路であり、例えば物理的な構造としては基板上のパターン、集積回路上のパターン、通信ケーブルなどである。また、伝送路３は、伝送方式としては、例えばシリアル通信であってもよく、パラレル通信であってもよい。
【００２９】
共有メモリ１０ａは、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａのいずれからもアクセス可能なメモリである。共有メモリ１０ａは、送信データおよび受信データを記憶する少なくとも１つのバンク手段１０ｒｓａを備えている。
【００３０】
バンク手段１０ｒｓａは、さらに、第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２の少なくとも２つのバンクと、バンク切替要求フラグ手段１１ａおよびバンク切替制御手段１２ａからなるバンク制御手段１５ａを有している。
【００３１】
なお、例えばバンク手段１０ｒｓａが共有メモリ１０ａに備えられ、バンク切替要求フラグ手段１１ａ、バンク切替制御手段１２ａ等が設定レジスタとして構成されても、本実施形態の変形例として構成可能であることは言うまでもない。また、図１に示すバンク制御手段１５ａは、バンク制御手段１５の一つの実施例であり、バンク制御手段１５の他の実施例については、第２の実施形態以降に示す。
【００３２】
第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２は、互いに一方から他方へバンク切り替え可能である。第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２は、各々、送信データおよび受信データを記憶可能である。
【００３３】
ここで、バンクとは、共有メモリ１０ａ内において所定の記憶容量で区分され、割り当てられた記憶領域である。異なるバンクには、異なる記憶領域が割り当てられる。また、例えば第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２の２つのバンクの場合、演算処理プロセッサ１ａが第１送受信領域バンク１０ｒｓ１にＲＤ（読み出し）／ＷＲ（書き込み）アクセスできる状態であり、第２送受信領域バンク１０ｒｓ２にはＲＤ（読み出し）／ＷＲ（書き込み）アクセスできない（アクセス不可）状態にある。したがって、図２に示すようにバンク切り替えによって、アクセス可能なバンクを切り替える。例えば、前述の例では、バンク切り替え後に、演算処理プロセッサ１ａが第１送受信領域バンク１０ｒｓ１にアクセス不可な状態となり、第２送受信領域バンク１０ｒｓ２にはアクセス可能な状態となる。
【００３４】
図１に示すバンク制御手段１５ａは、演算処理プロセッサ１ａがＲＤ／ＷＲアクセス可能なバンクと、通信処理プロセッサ２ａがＲＤ／ＷＲアクセス可能なバンクとを相互に切り替える。すなわち、バンク制御手段１５ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２の一方を演算処理プロセッサ１ａがＲＤ／ＷＲアクセス可能なバンクとし、その他方を通信処理プロセッサ２ａがＲＤ／ＷＲアクセス可能なバンクとする。そのために、バンク切替要求フラグ手段１１ａおよびバンク切替制御手段１２ａが、以下のような処理を実行する。
【００３５】
バンク切替要求フラグ手段１１ａは、演算処理プロセッサ１ａから送られる第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２の間の切替要求（バンク切替要求）を示すフラグを設定（フラグをセット）する。
【００３６】
また、バンク切替要求フラグ手段１１ａは、バンク切り替え後に、設定されたフラグを解除（フラグをクリア）する。すなわち、バンク切替要求フラグ手段１１ａは、演算処理プロセッサ１ａからのバンク切替要求を受け付けてバンク切替要求フラグをセットする。
【００３７】
バンク切替制御手段１２ａは、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａがアクセスするバンクについて、バンク切り替えを制御する。バンク切替制御手段１２ａは、通信処理プロセッサ２ａからのバンク切替指令に応じて、バンク切り替えを制御する。また、バンク切替要求フラグ手段１１ａは、バンク切り替え後、バンク切替要求フラグをクリアする。
【００３８】
例えば、バンク切替制御手段１２ａは、演算処理プロセッサ１ａによりＲＤ／ＷＲアクセスされているバンクが第１送受信領域バンク１０ｒｓ１であり、通信処理プロセッサ２ａによりＲＤ／ＷＲアクセスされているバンクが第２送受信領域バンク１０ｒｓ２である場合に、バンク切替制御により演算処理プロセッサ１ａによりＲＤ／ＷＲアクセスされるバンクを第２送受信領域バンク１０ｒｓ２とし、通信処理プロセッサ２ａによりＲＤ／ＷＲアクセスされるバンクを第１送受信領域バンク１０ｒｓ１とするようにバンクを切り替える。この切り替え後、バンク切替要求フラグ手段１１ａによりバンク切替要求フラグがリセットされる。
【００３９】
次に、図２を参照しながら、共有メモリアクセスシステム２０ａの制御処理タイミングについて説明する。
【００４０】
演算処理プロセッサ１ａは、例えば図２に示す制御処理Ｓ１ａの制御周期中の始めの処理に、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な一方（例えば第１送受信領域バンク１０ｒｓ１とする）から受信データを読み出す。
【００４１】
受信データを読み出し後、制御周期中の次の処理に、演算処理プロセッサ１ａは、受信データを用いて演算処理を実行する。
【００４２】
演算処理プロセッサ１ａは、制御周期中の次々の処理に、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な一方へ送信データを書き込む。送信データを書き込み後、演算処理プロセッサ１ａは、バンク切替要求フラグ手段１１ａにバンク切替要求を送る。
【００４３】
バンク切替要求を送った後、演算処理プロセッサ１ａは、次の制御周期の処理動作まで待つ。
【００４４】
以上説明した制御処理Ｓ１ａを、演算処理プロセッサ１ａは、制御周期ごとに繰り返し実行する。
【００４５】
一方、通信処理プロセッサ２ａでは、前述した演算処理プロセッサ１ａの制御処理Ｓ１ａに並行して、以下の制御処理Ｓ２ａが実行される。
【００４６】
制御処理Ｓ２ａに示すように、通信処理プロセッサ２ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な他方（例えば第２送受信領域バンク１０ｒｓ２とする）に受信データを書き込む。
【００４７】
次に、通信処理プロセッサ２ａは、バンク切替要求をチェックする。すなわち、通信処理プロセッサ２ａは、バンク切替要求フラグ手段１１ａにバンク切替要求フラグがセットされていない場合、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な他方に受信データを書き込む。
【００４８】
一方、通信処理プロセッサ２ａは、バンク切替要求フラグ手段１１ａにバンク切替要求フラグがセットされている場合に、バンク切替制御手段１２ａにバンク切替指令を送る。通信処理プロセッサ２ａは、バンク切り替え後に、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２の一方（例えば第１送受信領域バンク１０ｒｓ１とする）から送信データを読み出す。
【００４９】
以上説明した制御処理Ｓ２ａを、通信処理プロセッサ２ａは、演算処理プロセッサ１ａの制御処理Ｓ１ａに並行して、実行する。
【００５０】
なお、前述した説明では、一方を第１送受信領域バンク１０ｒｓ１とし、他方を第２送受信領域バンク１０ｒｓ２としたが、バンク切り替え後では、一方が第２送受信領域バンク１０ｒｓ２であり、他方が第１送受信領域バンク１０ｒｓ１となる。また、同様に、バンク切り替えの都度、以上のような動作を交互に繰り返す。
【００５１】
以上説明したような処理を、図２に示すように、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａが繰り返す。図２では、受信データを通信処理プロセッサ２ａから演算処理プロセッサ１ａへ伝送する伝送時間ｔｒａである。また、送信データを演算処理プロセッサ１ａから通信処理プロセッサ２ａへ伝送する伝送時間ｔｓａである。
【００５２】
共有メモリアクセスシステム２０ａでは、図２に示すように、「通信処理プロセッサ２ａの受信データ書き込み時間＜演算処理プロセッサ１ａの次の制御周期待ち時間」を満たすように、すなわち、通信処理プロセッサ２ａの受信データ書き込み時間が演算処理プロセッサ１ａの次の制御周期待ち時間より小さくなるようにされている。これにより、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａのアクセスが競合することなく、共有メモリ１０ａにアクセスすることができる。
【００５３】
以下、図１に示す演算処理プロセッサ１ａの共有メモリアクセス処理フローについて、図３を参照しながら説明する。なお、以下のフローの説明と、図３および図４では、ＲＤ／ＷＲアクセス可能をアクセス可能と略して記す。
【００５４】
演算処理プロセッサ１ａの処理が開始されると、演算処理プロセッサ１ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセス可能な一方から受信データを読み出す（ステップＳ１）。
【００５５】
次に、演算処理プロセッサ１ａは、読み出した受信データを用いて演算処理を実行する（ステップＳ２）。
【００５６】
次に、演算処理プロセッサ１ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセス可能な一方へ送信データを書き込む（ステップＳ３）。
【００５７】
次に、演算処理プロセッサ１ａは、バンク切替要求フラグ手段１１ａにバンク切替要求を送る（ステップＳ４）。すなわち、バンク切替要求フラグ手段１１ａによりバンク切替要求フラグがセットされる。
【００５８】
演算処理プロセッサ１ａは、次の制御周期か否か判断する（ステップＳ５）。次の制御周期でない場合（ステップＳ５のＮｏ）、演算処理プロセッサ１ａは、ステップＳ５の処理に戻る。一方、次の制御周期である場合（ステップＳ５のＹｅｓ）、演算処理プロセッサ１ａは、ステップＳ１の処理に戻す。以降、前述したステップＳ１〜Ｓ５の処理を繰り返す。
【００５９】
次に、図１に示す通信処理プロセッサ２ａの共有メモリアクセス処理フローについて図４を参照しながら説明する。
【００６０】
通信処理プロセッサ２ａの処理が開始されると、通信処理プロセッサ２ａは、伝送路３を介して、受信データを受信したか否か判断する（ステップＳ１０）。受信データを受信していない場合（ステップＳ１０のＮｏ）、通信処理プロセッサ２ａは、ステップＳ１２の処理へ進める。一方、受信データを受信した場合（ステップＳ１０のＹｅｓ）、通信処理プロセッサ２ａは、ステップＳ１１の処理へ進める。
【００６１】
通信処理プロセッサ２ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセス可能な他方に受信データを書き込む（ステップＳ１１）。
【００６２】
次に、通信処理プロセッサ２ａは、バンク切替要求があるか否か判断する（ステップＳ１２）。バンク切替要求がない場合（ステップＳ１２のＮｏ）、処理をステップＳ１０に戻す。
【００６３】
一方、バンク切替要求がある場合（ステップＳ１２のＹｅｓ）、通信処理プロセッサ２ａは、バンク切替制御手段１２ａを介して、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセスするバンクを他方から一方へ切り替える（ステップＳ１３）。
【００６４】
バンク切り替え後、通信処理プロセッサ２ａは、バンク切替要求フラグ手段１１ａのフラグクリア（リセット）をチェックする（ステップＳ１４）。
【００６５】
フラグクリアをチェック後、通信処理プロセッサ２ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセス可能な一方から送信データを読み出す（ステップＳ１５）。
【００６６】
次に、通信処理プロセッサ２ａは、送信データの更新がある場合に、伝送路３を介して、送信データを送信する（ステップＳ１６）。この後、通信処理プロセッサ２ａは、処理をステップＳ１０に戻す。以降、前述したステップＳ１０〜Ｓ１６の処理を繰り返す。
【００６７】
以上説明したように、第１の実施形態によれば、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【００６８】
［第２の実施形態］
図５は、第２の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図である。また、図６は、第２の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図である。なお、本発明に係る共有メモリアクセスシステムの第２の実施形態の構成を示すブロック図は、前述した図１と同様である。
【００６９】
以下、図１、図５および図６を参照しながら、第２の実施形態の共有メモリアクセスシステムについて説明する。はじめに、図５を参照しながら、共有メモリアクセスシステム２０ａの制御処理タイミング（他の例）について説明する。
【００７０】
演算処理プロセッサ１ａは、例えば図５に示す制御処理Ｓ１ａ２の制御周期中の始めの処理に、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な一方（例えば第１送受信領域バンク１０ｒｓ１とする）から受信データを読み出す。
【００７１】
受信データを読み出し後、制御周期中の次の処理として、演算処理プロセッサ１ａは、受信データを用いて演算処理を実行する。
【００７２】
演算処理プロセッサ１ａは、制御周期中の次々の処理に、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な一方へ送信データを書き込む。送信データを書き込み後、演算処理プロセッサ１ａは、バンク切替要求フラグ手段１１ａにバンク切替要求を送る。
【００７３】
バンク切替要求を送った後、演算処理プロセッサ１ａは、次の制御周期の処理動作まで待つ。
【００７４】
以上説明した制御処理Ｓ１ａ２を、演算処理プロセッサ１ａは、制御周期ごとに繰り返し実行する。
【００７５】
一方、通信処理プロセッサ２ａでは、前述した演算処理プロセッサ１ａの制御処理Ｓ１ａ２に並行して、以下の制御処理Ｓ２ａ２が実行される。
【００７６】
制御処理Ｓ２ａ２に示すように、通信処理プロセッサ２ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な他方（例えば第２送受信領域バンク１０ｒｓ２とする）に受信データを書き込む。
【００７７】
次に、通信処理プロセッサ２ａは、バンク切替要求をチェックする。すなわち、通信処理プロセッサ２ａは、バンク切替要求フラグ手段１１ａにバンク切替要求フラグがセットされていない場合、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のＲＤ／ＷＲアクセス可能な他方に受信データを書き込む。一方、通信処理プロセッサ２ａは、バンク切替要求フラグ手段１１ａにバンク切替要求フラグがセットされている場合に、バンク切替制御手段１２ａにバンク切替指令を送る。
【００７８】
通信処理プロセッサ２ａは、バンク切り替え後に、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２の一方（例えば第１送受信領域バンク１０ｒｓ１とする）から送信データを読み出す。
【００７９】
以上説明した制御処理Ｓ２ａ２を、通信処理プロセッサ２ａは、演算処理プロセッサ１ａの制御処理Ｓ１ａ２に並行して、実行する。
【００８０】
なお、前述した説明では、一方を第１送受信領域バンク１０ｒｓ１とし、他方を第２送受信領域バンク１０ｒｓ２としたが、バンク切り替え後では、一方が第２送受信領域バンク１０ｒｓ２であり、他方が第１送受信領域バンク１０ｒｓ１となる。また、同様に、バンク切り替えの都度、以上のような動作を交互に繰り返す。
【００８１】
以上説明したような処理を、図５に示すように、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａが繰り返す。図５では、受信データを通信処理プロセッサ２ａから演算処理プロセッサ１ａへ伝送する伝送時間ｔｒａ２である。また、送信データを演算処理プロセッサ１ａから通信処理プロセッサ２ａへ伝送する伝送時間ｔｓａ２である。
【００８２】
共有メモリアクセスシステム２０ａでは、図５に示すように、「通信処理プロセッサ２ａの受信データ書き込み時間＜（演算処理プロセッサ１ａの次の制御周期待ち時間＋演算処理時間）」を満たすように、すなわち、通信処理プロセッサ２ａの受信データ書き込み時間が演算処理プロセッサ１ａの次の制御周期待ち時間と演算処理時間との和より小さくなるようにされている。これにより、演算処理プロセッサ１ａおよび通信処理プロセッサ２ａのアクセスが競合することなく、共有メモリ１０ａにアクセスすることができる。
【００８３】
以下、図１に示す演算処理プロセッサ１ａの他の共有メモリアクセス処理フローについて、図６を参照しながら説明する。なお、以下のフローの説明と、図６では、ＲＤ／ＷＲアクセス可能をアクセス可能と略して記す。
【００８４】
演算処理プロセッサ１ａの処理が開始されると、演算処理プロセッサ１ａは、演算処理を実行する（ステップＳ２０）。
【００８５】
次に、演算処理プロセッサ１ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセス可能な一方へ送信データを書き込む（ステップＳ２１）。
【００８６】
次に、演算処理プロセッサ１ａは、第１送受信領域バンク１０ｒｓ１または第２送受信領域バンク１０ｒｓ２のアクセス可能な一方から受信データを読み出す（ステップＳ２２）。
【００８７】
次に、演算処理プロセッサ１ａは、バンク切替要求フラグ手段１１ａにバンク切替要求を送る（ステップＳ２３）。すなわち、バンク切替要求フラグ手段１１ａによりバンク切替要求フラグがセットされる。
【００８８】
次に、演算処理プロセッサ１ａは、次の制御周期か否か判断する（ステップＳ２４）。次の制御周期でない場合（ステップＳ２４のＮｏ）、演算処理プロセッサ１ａは、ステップＳ２４の処理に戻る。一方、次の制御周期である場合（ステップＳ２４のＹｅｓ）、演算処理プロセッサ１ａは、ステップＳ２０の処理に戻す。以降、前述したステップＳ２０〜Ｓ２４の処理を繰り返す。
【００８９】
なお、本実施形態の通信処理プロセッサの共有メモリアクセス処理フローは、図４に示す処理フローと同様である。
【００９０】
以上説明したように、第２の実施形態によれば、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【００９１】
［第３の実施形態］
図７は本発明に係る共有メモリアクセスシステムの第３の実施形態の構成を示すブロック図であり、図８は第３の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図である。また、図９は、第３の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図である。図１０は、第３の実施形態の通信処理プロセッサの共有メモリアクセス処理フローを示すフロー図である。
【００９２】
共有メモリアクセスシステム２０ｂは、図７に示すように、演算処理プロセッサ１ｂと、通信処理プロセッサ２ｂと、演算処理プロセッサ１ｂおよび通信処理プロセッサ２ｂによって共有される共有メモリ１０ｂとを備えている。
【００９３】
共有メモリ１０ｂは、演算処理プロセッサ１ｂおよび通信処理プロセッサ２ｂのいずれからもアクセス可能なメモリである。共有メモリ１０ｂは、送信データおよび受信データを記憶する少なくとも１つのバンク手段１０ｒｓｂを備えている。
【００９４】
バンク手段１０ｒｓｂは、さらに、受信領域バンク１０ｒｂ、送信領域バンク１０ｓｂ、受信領域バンク切替制御手段１２ｒ、送信領域バンク切替制御手段１２ｓ、受信領域演算処理プロセッサ使用中フラグ手段１３ｒ、および送信領域演算処理プロセッサ使用中フラグ手段１３ｓを有している。
【００９５】
受信領域バンク１０ｒｂは、伝送路３から受信する受信データを記憶可能である。受信領域バンク１０ｒｂは、第１受信領域バンク１０ｒ１および第２受信領域バンク１０ｒ２の少なくとも２つのバンクからなる。受信領域バンク１０ｒｂは、受信領域バンク切替制御手段１２ｒの制御に応じて、互いに一方から他方へＲＤアクセス（読み出し）およびＷＲアクセス（書き込み）可能なバンクを切り替える。例えば、通信処理プロセッサ２ｂによるＷＲアクセス可能なバンクが、受信領域バンク切替制御手段１２ｒの制御によって、第１受信領域バンク１０ｒ１から第２受信領域バンク１０ｒ２へ切り替えられる。また、その逆方向の切り替えも同様である。また、演算処理プロセッサ１ｂによるＲＤアクセス可能なバンクについても同様である。
【００９６】
送信領域バンク１０ｓｂは、伝送路３へ送信する送信データを記憶可能である。送信領域バンク１０ｓｂは、第１送信領域バンク１０ｓ１および第２送信領域バンク１０ｓ２の少なくとも２つのバンクからなる。送信領域バンク１０ｓｂは、送信領域バンク切替制御手段１２ｓの制御に応じて、互いに一方から他方へＲＤアクセスおよびＷＲアクセス可能なバンクを切り替える。例えば、通信処理プロセッサ２ｂによるＲＤアクセス可能なバンクが、送信領域バンク切替制御手段１２ｓの制御によって、第１送信領域バンク１０ｓ１から第２送信領域バンク１０ｓ２へ切り替えられる。また、その逆方向のバンク切り替えも同様である。また、演算処理プロセッサ１ｂによるＷＲアクセス可能なバンクについても同様である。
【００９７】
受信領域バンク切替制御手段１２ｒは、通信処理プロセッサ２ｂからの受信領域バンク切替指令に応じて、受信領域バンク１０ｒｂのバンク切り替えを制御する。すなわち、演算処理プロセッサ１ｂと通信処理プロセッサ２ｂとのＲＤアクセスおよびＷＲアクセス（アクセス）が競合しないように、互いのアクセスを第１受信領域バンク１０ｒ１および第２受信領域バンク１０ｒ２のいずれか一方から他方へバンクを切り替える。すなわち、排他的にバンクを切り替える。
【００９８】
送信領域バンク切替制御手段１２ｓは、通信処理プロセッサ２ｂからの送信領域バンク切替指令に応じて、送信領域バンク１０ｓｂのバンク切り替えを制御する。すなわち、演算処理プロセッサ１ｂと通信処理プロセッサ２ｂとのアクセスが競合しないように、互いのアクセスを第１送信領域バンク１０ｓ１および第２送信領域バンク１０ｓ２のいずれか一方から他方へバンクを切り替える。すなわち、排他的にバンクを切り替える。
【００９９】
受信領域演算処理プロセッサ使用中フラグ手段１３ｒは、演算処理プロセッサ１ｂが受信領域バンク１０ｒｂをアクセス中であることを示すフラグの設定および解除を行う。受信領域演算処理プロセッサ使用中フラグ手段１３ｒは、演算処理プロセッサ１ｂからの受信領域バンク切替要求を受け付けて、受信領域演算処理プロセッサ使用中フラグをセットする。また、演算処理プロセッサ１ｂから受信領域演算処理プロセッサ使用中フラグ解除を受け付けて、受信領域演算処理プロセッサ使用中フラグをリセット（クリア）する。
【０１００】
送信領域演算処理プロセッサ使用中フラグ手段１３ｓは、演算処理プロセッサ１ｂが送信領域バンク１０ｓｂをアクセス中であることを示すフラグの設定および解除を行う。送信領域演算処理プロセッサ使用中フラグ手段１３ｓは、演算処理プロセッサ１ｂからの送信領域バンク切替要求を受け付けて、送信領域演算処理プロセッサ使用中フラグをセットする。また、演算処理プロセッサ１ｂから送信領域演算処理プロセッサ使用中フラグ解除を受け付けて、送信領域演算処理プロセッサ使用中フラグをクリアする。
【０１０１】
なお、図１に示したバンク制御手段１５の他の実施例として、図７に示す受信領域バンク切替制御手段１２ｒ、送信領域バンク切替制御手段１２ｓ、受信領域演算処理プロセッサ使用中フラグ手段１３ｒおよび送信領域演算処理プロセッサ使用中フラグ手段１３ｓの構成が対応する。
【０１０２】
また、図１に示した第１送受信領域バンク１０ｒｓ１には、図７に示す第１受信領域バンク１０ｒ１および第１送信領域バンク１０ｓ１が対応し、図１に示した第２送受信領域バンクｒｓ２には、第２受信領域バンク１０ｒ２および第２送信領域バンク１０ｓ２が対応する。第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２が、さらに、第１受信領域バンク１０ｒ１と第２受信領域バンク１０ｒ２との間でバンク切り替え可能な受信領域バンク１０ｒｂ、および、第１送信領域バンク１０ｓ１と第２送信領域バンク１０ｓ２との間でバンク切り替え可能な送信領域バンク１０ｓｂに区分された構成に対応する。
【０１０３】
次に、図８を参照しながら、共有メモリアクセスシステム２０ｂの制御処理タイミングについて説明する。
【０１０４】
制御処理Ｓ１ｂに示すように、演算処理プロセッサ１ｂは、受信領域演算処理プロセッサ使用中フラグ手段１３ｒを介して当該フラグをセットし、ＲＤアクセス可能な第１受信領域バンク１０ｒ１または第２受信領域バンク１０ｒ２の一方（例えば第１受信領域バンク１０ｒ１とする）から受信データを読み出す。すなわち、当該フラグをセットしている間は、演算処理プロセッサ１ｂにより受信領域バンク１０ｒｂが使用中とされる。
【０１０５】
読み出し後、演算処理プロセッサ１ｂは、受信領域演算処理プロセッサ使用中フラグ手段１３ｒを介して、当該フラグをクリアする。すなわち、当該フラグがクリアされている間は、演算処理プロセッサ１ｂにより受信領域バンク１０ｒｂが使用中でないとされる。クリア後、演算処理プロセッサ１ｂは、演算処理を実行する。
【０１０６】
演算処理プロセッサ１ｂは、送信領域演算処理プロセッサ使用中フラグ手段１３ｓをセットし、第１送信領域バンク１０ｓ１または第２送信領域バンク１０ｓ２のＷＲアクセス可能な一方（例えば第１送信領域バンク１０ｓ１とする）に送信データを書き込む。すなわち、当該フラグをセットしている間は、送信領域バンク１０ｓｂが使用中とされる。
【０１０７】
書き込み後、演算処理プロセッサ１ｂは、送信領域演算処理プロセッサ使用中フラグ手段１３ｓを介して、当該フラグをクリアする。
【０１０８】
フラグのクリア後、演算処理プロセッサ１ｂは、次の制御周期の処理動作まで待つ。
【０１０９】
以上説明した制御処理Ｓ１ｂを、演算処理プロセッサ１ｂは、制御周期ごとに繰り返し実行する。
【０１１０】
一方、通信処理プロセッサ２ｂでは、前述した演算処理プロセッサ１ｂの制御処理Ｓ１ｂに並行して、以下の制御処理Ｓ２ｂが実行される。
【０１１１】
制御処理Ｓ２ｂに示すように、通信処理プロセッサ２ｂは、第１受信領域バンク１０ｒ１または第２受信領域バンク１０ｒ２のＷＲアクセス可能な他方（例えば第２受信領域バンク１０ｒ２とする）に受信データを書き込む。
【０１１２】
書き込み後、通信処理プロセッサ２ｂは、演算処理プロセッサ１ｂにより受信領域バンク１０ｒｂが使用中でない場合、すなわち、受信領域演算処理プロセッサ使用中フラグがクリアされている場合に、受信領域バンク切替制御手段１２ｒに受信領域バンク切替指令を送る。これを受けた受信領域バンク切替制御手段１２ｒは、受信領域バンク１０ｒｂを切り替える。
【０１１３】
バンク切り替え後、通信処理プロセッサ２ｂは、第１受信領域バンク１０ｒ１または第２受信領域バンク１０ｒ２のＷＲアクセス可能な一方（例えば第１受信領域バンク１０ｒ１）に受信データを書き込む。
【０１１４】
書き込み後、通信処理プロセッサ２ｂは、演算処理プロセッサ１ｂにより受信領域バンク１０ｒｂが使用中でない場合、すなわち、受信領域演算処理プロセッサ使用中フラグがクリアされている場合に、受信領域バンク切替制御手段１２ｒに受信領域バンク切替指令を送る。これを受けた受信領域バンク切替制御手段１２ｒは、受信領域バンク１０ｒｂを切り替える。
【０１１５】
次に、通信処理プロセッサ２ｂは、演算処理プロセッサ１ｂにより送信領域バンク１０ｓｂが使用中でない場合、すなわち、送信領域演算処理プロセッサ使用中フラグがクリアされている場合に、送信領域バンク切替制御手段１２ｓに送信領域バンク切替指令を送る。これを受けた送信領域バンク切替制御手段１２ｓは、送信領域バンク１０ｓｂを切り替える。
【０１１６】
これにより、通信処理プロセッサ２ｂは、第１送信領域バンク１０ｓ１または第２送信領域バンク１０ｓ２のＲＤアクセス可能な一方（例えば第１送信領域バンク１０ｓ１）から送信データを読み出す。通信処理プロセッサ２ｂは、伝送路３を介して、図示しない送信先に読み出した送信データを送信する。
【０１１７】
以上説明したように、通信処理プロセッサ２ｂは、第１受信領域バンク１０ｒ１および第２受信領域バンク１０ｒ２の２つのバンクの切り替えにより、受信データの書き込み時間に制限を受けることがない。その結果、通信処理プロセッサ２ｂは、受信データの書き込み処理による負荷を軽減することができる。
【０１１８】
以上説明した制御処理Ｓ２ｂを、通信処理プロセッサ２ｂは、演算処理プロセッサ１ｂの制御処理Ｓ１ｂに並行して、実行する。
【０１１９】
以下、図７に示す演算処理プロセッサ１ｂの共有メモリアクセス処理フローについて、図９を参照しながら説明する。なお、以下のフローの説明と、図９および図１０では、ＲＤアクセス可能およびＷＲアクセス可能をアクセス可能と略して記す。
【０１２０】
演算処理プロセッサ１ｂの処理が開始されると、演算処理プロセッサ１ｂは、受信領域演算処理プロセッサ使用中フラグ手段１３ｒを介して、受信領域演算処理プロセッサ使用中フラグをセットする（ステップＳ３０）。
【０１２１】
次に、演算処理プロセッサ１ｂは、第１受信領域バンク１０ｒ１または第２受信領域バンク１０ｒ２のアクセス可能な一方から受信データを読み出す（ステップＳ３１）。
【０１２２】
受信データを読み出し後、演算処理プロセッサ１ｂは、受信領域演算処理プロセッサ使用中フラグ手段１３ｒを介して、受信領域演算処理プロセッサ使用中フラグをクリアする（ステップＳ３２）。
【０１２３】
フラグのクリア後、演算処理プロセッサ１ｂは、受信データを用いて演算処理を実行する（ステップＳ３３）。
【０１２４】
次に、演算処理プロセッサ１ｂは、送信領域演算処理プロセッサ使用中フラグ手段１３ｓを介して、送信領域演算処理プロセッサ使用中フラグをセットする（ステップＳ３４）。
【０１２５】
次に、演算処理プロセッサ１ｂは、第１送信領域バンク１０ｓ１または第２送信領域バンク１０ｓ２のアクセス可能な一方に送信データを書き込む（ステップＳ３５）。
【０１２６】
書き込み後、演算処理プロセッサ１ｂは、送信領域演算処理プロセッサ使用中フラグをクリアする（ステップＳ３６）。
【０１２７】
次に、演算処理プロセッサ１ｂは、次の制御周期か否か判断する（ステップＳ３７）。次の制御周期でない場合（ステップＳ３７のＮｏ）、演算処理プロセッサ１ｂは、ステップＳ３７の処理に戻る。一方、次の制御周期である場合（ステップＳ３７のＹｅｓ）、演算処理プロセッサ１ｂは、ステップＳ３０の処理に戻す。以降、前述したステップＳ３０〜Ｓ３７の処理を繰り返す。
【０１２８】
続いて、以下、図７に示す通信処理プロセッサ２ｂの共有メモリアクセス処理フローについて、図１０を参照しながら説明する。
【０１２９】
通信処理プロセッサ２ｂの処理が開始されると、通信処理プロセッサ２ｂは、伝送路３から受信データを受信したか否か判断する（ステップＳ４０）。
【０１３０】
受信データを受信していない場合に（ステップＳ４０のＮｏ）、通信処理プロセッサ２ｂは、処理をステップＳ４４に進める。一方、受信データを受信した場合に（ステップＳ４０のＹｅｓ）、通信処理プロセッサ２ｂは、処理を次のステップＳ４１に進める。
【０１３１】
通信処理プロセッサ２ｂは、第１受信領域バンク１０ｒ１または第２受信領域バンク１０ｒ２のアクセス可能な一方に受信データを書き込む（ステップＳ４１）。
【０１３２】
通信処理プロセッサ２ｂは、受信領域演算処理プロセッサ使用中フラグ手段１３ｒから当該フラグを読み取り、受信領域バンク１０ｒｂが使用中であるか否かを判断する（ステップＳ４２）。
【０１３３】
受信領域バンク１０ｒｂが使用中である場合に（ステップＳ４２のＹｅｓ）、通信処理プロセッサ２ｂは、処理をステップＳ４２に戻す。一方、受信領域バンク１０ｒｂが使用中でない場合に（ステップＳ４２のＮｏ）、通信処理プロセッサ２ｂは、処理を次のステップＳ４３に進める。
【０１３４】
通信処理プロセッサ２ｂは、受信領域バンク切替制御手段１２ｒを介して、受信領域バンク１０ｒｂを切り替える（ステップＳ４３）。
【０１３５】
次に、通信処理プロセッサ２ｂは、送信領域演算処理プロセッサ使用中フラグ手段１３ｓから当該フラグを読み取り、送信領域バンク１０ｓｂが使用中であるか否かを判断する（ステップＳ４４）。
【０１３６】
送信領域バンクが使用中である場合に（ステップＳ４４のＹｅｓ）、通信処理プロセッサ２ｂは、処理をステップＳ４４に戻す。一方、送信領域バンク１０ｓｂが使用中でない場合に（ステップＳ４４のＮｏ）、通信処理プロセッサ２ｂは、処理を次のステップＳ４５に進める。
【０１３７】
通信処理プロセッサ２ｂは、送信領域バンク切替制御手段１２ｓを介して、送信領域バンク１０ｓｂを切り替える（ステップＳ４５）。
【０１３８】
次に、通信処理プロセッサ２ｂは、第１送信領域バンク１０ｓ１または第２送信領域バンク１０ｓ２のアクセス可能な一方から送信データを読み出す（ステップＳ４６）。
【０１３９】
次に、通信処理プロセッサ２ｂは、読み出した送信データに更新がある場合に、伝送路３を介して、送信データを送信する（ステップＳ４７）。ステップＳ４７の後、演算処理プロセッサ１ｂは、ステップＳ４０の処理に戻す。以降、前述したステップＳ４０〜Ｓ４７の処理を繰り返す。
【０１４０】
以上説明したように、第３の実施形態によれば、複数のプロセッサが共有メモリへのアクセスを競合することなく、かつ、通信処理プロセッサの受信データ書き込み時間に制限なく、共有メモリにアクセスすることができる。
【０１４１】
［第４の実施形態］
図１１は本発明に係る共有メモリアクセスシステムの第４の実施形態の構成を示すブロック図であり、図１２は第４の実施形態の共有メモリアクセスシステムの制御処理タイミングを示す図である。また、図１３は、第４の実施形態の演算処理プロセッサの共有メモリアクセス処理フローを示すフロー図である。図１４は、第４の実施形態の通信処理プロセッサの共有メモリアクセス処理フローを示すフロー図である。
【０１４２】
共有メモリアクセスシステム２０ｃは、図１１に示すように、演算処理プロセッサ１ｃと、通信処理プロセッサ２ｃと、演算処理プロセッサ１ｃおよび通信処理プロセッサ２ｃによって共有される共有メモリ１０ｃとを備えている。
【０１４３】
共有メモリ１０ｃは、演算処理プロセッサ１ｃおよび通信処理プロセッサ２ｃのいずれからもアクセス可能なメモリである。共有メモリ１０ｃは、送信データおよび受信データを記憶する少なくとも１つのバンク手段１０ｒｓｃを備えている。
【０１４４】
バンク手段１０ｒｓｃは、さらに、受信領域バンク１０ｒｃに第１受信領域バンク１０ｒ１、第２受信領域バンク１０ｒ２および第３受信領域バンク１０ｒ３の３つのバンクと、送信領域バンク１０ｓｃに第１送信領域バンク１０ｓ１、第２送信領域バンク１０ｓ２および第３送信領域バンク１０ｓ３の３つのバンクと、２つの受信領域バンク第１切替制御手段１２ｒ１および受信領域バンク第２切替制御手段１２ｒ２と、２つの送信領域バンク第１切替制御手段１２ｓ１および送信領域バンク第２切替制御手段１２ｓ２とを有している。
【０１４５】
書き込み（ＷＲアクセス）側のバンク切替制御（受信領域バンク第２切替制御手段１２ｒ２、送信領域バンク第１切替制御手段１２ｓ１）は、受信領域バンク１０ｒｃおよび送信領域バンク１０ｓｃの各々について３つのバンクのうち、読み出し（ＲＤアクセス）側が使用していない待機バンクに切り替える制御である。なお、待機バンクは、演算処理プロセッサ１ｃおよび通信処理プロセッサ２ｃからＲＤアクセスおよびＷＲアクセスによるアクセス対象でないバンクである。詳しくは、後述する。
【０１４６】
読み出し側のバンク切替制御（受信領域バンク第１切替制御手段１２ｒ１、送信領域バンク第２切替制御手段１２ｓ２）は、受信領域バンク１０ｒｃおよび送信領域バンク１０ｓｃの各々について３つのバンクのうち、読み出し側が使用していない待機バンクと現在アクセスしているバンクとのうちから最後に書き込みがあったバンクに切り替える制御である。
【０１４７】
なお、図１に示したバンク制御手段１５の他の実施例として、図１１に示す２つの受信領域バンク第１切替制御手段１２ｒ１および受信領域バンク第２切替制御手段１２ｒ２と、２つの送信領域バンク第１切替制御手段１２ｓ１および送信領域バンク第２切替制御手段１２ｓ２の構成が対応する。
【０１４８】
また、図１に示した第１送受信領域バンク１０ｒｓ１には、図１１に示す第１受信領域バンク１０ｒ１ないし第３受信領域バンク１０ｒ３からなる受信領域バンク１０ｒｃのいずれか一つのバンクと、第１送信領域バンク１０ｓ１ないし第３送信領域バンク１０ｓ３からなる送信領域バンク１０ｓｃのいずれか一つのバンクとが対応する。また、第２送受信領域バンク１０ｒｓ２には、受信領域バンク１０ｒｃのいずれか一つの他のバンクと、送信領域バンク１０ｓｃのいずれか一つの他のバンクとが対応する。さらに、受信領域バンク１０ｒｃおよび送信領域バンク１０ｓｃの残りのバンクが、第１送受信領域バンク１０ｒｓ１および第２送受信領域バンク１０ｒｓ２に含まれない待機バンクに対応するように区分されるものである。
【０１４９】
次に、図１２を参照しながら、共有メモリアクセスシステム２０ｃの制御処理タイミングについて説明する。
【０１５０】
制御処理Ｓ１ｃに示すように、演算処理プロセッサ１ｃは、受信領域バンク１０ｒｃを切り替え、第１受信領域バンク１０ｒ１、第２受信領域バンク１０ｒ２および第３受信領域バンク１０ｒ３のＲＤアクセス可能ないずれか一つのバンク（例えば第１受信領域バンク１０ｒ１）から受信データを読み出す。
【０１５１】
演算処理プロセッサ１ｃは、読み出した受信データを用いて演算処理を実行する。
【０１５２】
演算処理プロセッサ１ｃは、第１送信領域バンク１０ｓ１、第２送信領域バンク１０ｓ２および第３送信領域バンク１０ｓ３のＷＲアクセス可能ないずれか一つのバンク（第１送信領域バンク１０ｓ１）に送信データを書き込む。演算処理プロセッサ１ｃは、送信領域バンク第１切替制御手段１２ｓ１を介して、送信領域バンク１０ｓｃを切り替える。
【０１５３】
切り替え後、演算処理プロセッサ１ｃは、次の制御周期の処理動作まで待つ。
【０１５４】
以上説明した制御処理Ｓ１ｃを、演算処理プロセッサ１ｃは、制御周期ごとに繰り返し実行する。
【０１５５】
一方、通信処理プロセッサ２ｃでは、前述した演算処理プロセッサ１ｃの制御処理Ｓ１ｃに並行して、以下の制御処理Ｓ２ｃが実行される。
【０１５６】
制御処理Ｓ２ｃに示すように、通信処理プロセッサ２ｃは、第１受信領域バンク１０ｒ１、第２受信領域バンク１０ｒ２および第３受信領域バンク１０ｒ３のＷＲアクセス可能ないずれか一つのバンク（例えば第３受信領域バンク１０ｒ３）に受信データを書き込む。
【０１５７】
書き込み後、通信処理プロセッサ２ｃは、受信領域バンク第２切替制御手段１２ｒ２を介して、受信領域バンク１０ｒｃを切り替える。さらに、通信処理プロセッサ２ｃは、送信領域バンク第２切替制御手段１２ｓ２を介して、送信領域バンク１０ｓｃを切り替える。
【０１５８】
切り替え後、通信処理プロセッサ２ｃは、第１送信領域バンク１０ｓ１、第２送信領域バンク１０ｓ２および第３送信領域バンク１０ｓ３のＲＤアクセス可能ないずれか一つのバンク（例えば第３送信領域バンク１０ｓ３）から送信データを読み出す。通信処理プロセッサ２ｃは、伝送路３を介して、図示しない送信先へ送信データを送信する。
【０１５９】
以上説明した制御処理Ｓ２ｃを、通信処理プロセッサ２ｃは、演算処理プロセッサ１ｃの制御処理Ｓ１ｃに並行して、実行する。
【０１６０】
なお、図１２に示す待機バンクは、演算処理プロセッサ１ｃおよび通信処理プロセッサ２ｃからＲＤアクセスおよびＷＲアクセスによるアクセス対象でないバンクを示すものである。
【０１６１】
送信領域バンク１０ｓｃにおいて、例えば、演算処理プロセッサ１ｃのＷＲアクセス可能なバンクが第１送信領域バンク１０ｓ１であり、および、通信処理プロセッサ２ｃのＲＤアクセス可能なバンクが第２送信領域バンク１０ｓ２である期間では、待機バンクが第３送信領域バンク１０ｓ３であることを示す。
【０１６２】
また、受信領域バンク１０ｒｃにおいて、例えば、演算処理プロセッサ１ｃのＲＤアクセス可能なバンクが第１受信領域バンク１０ｒ１であり、および、通信処理プロセッサ２ｃのＷＲアクセス可能なバンクが第２受信領域バンク１０ｒ２である期間では、待機バンクが第３受信領域バンク１０ｒ３であることを示す。図１２に示す、その他の待機バンクについても同様である。
【０１６３】
バンク手段１０ｒｓｃが待機バンクを有することにより、バンク切り替え制御においてＲＤアクセスおよびＷＲアクセス可能なバンクを、待機バンクを介してバンク切り替えを実行することができる。これにより、アクセス競合を回避するためのフラグチェック動作が不要となる。これにより、アクセスが競合することなく、かつ、通信処理プロセッサのアクセス待ち時間がなく共有メモリにアクセスすることができる。
【０１６４】
以下、図１３に示す演算処理プロセッサ１ｃの共有メモリアクセス処理フローについて、図１１を参照しながら説明する。なお、以下のフローの説明と、図１３および図１４では、ＲＤアクセス可能およびＷＲアクセス可能をアクセス可能と略して記す。
【０１６５】
演算処理プロセッサ１ｃの処理が開始されると、演算処理プロセッサ１ｃは、受信領域バンク第１切替制御手段１２ｒ１を介して、受信領域バンク１０ｒｃを切り替える（ステップＳ５０）。
【０１６６】
次に、演算処理プロセッサ１ｃは、第１受信領域バンク１０ｒ１、第２受信領域バンク１０ｒ２および第１受信領域バンク１０ｒ３のアクセス可能ないずれか一つのバンクから受信データを読み出す（ステップＳ５１）。
【０１６７】
次に、演算処理プロセッサ１ｃは、読み出した受信データを用いて、演算処理を実行する（ステップＳ５２）。
【０１６８】
次に、演算処理プロセッサ１ｃは、第１送信領域バンク１０ｓ１、第２送信領域バンク１０ｓ２および第３送信領域バンク１０ｓ３のアクセス可能ないずれか一つのバンクに送信データを書き込む（ステップＳ５３）。
【０１６９】
書き込み後、演算処理プロセッサ１ｃは、送信領域バンク第１切替制御手段１２ｓ１を介して、送信領域バンク１０ｓｃを切り替える（ステップＳ５４）。
【０１７０】
切り替え後、演算処理プロセッサ１ｃは、次の制御周期か否か判断する（ステップＳ５５）。次の制御周期でない場合（ステップ５５のＮｏ）、演算処理プロセッサ１ｃは、ステップＳ５５の処理に戻る。一方、次の制御周期である場合（ステップＳ５５のＹｅｓ）、演算処理プロセッサ１ｃは、ステップＳ５０の処理に戻す。以降、前述したステップＳ５０〜Ｓ５５の処理を繰り返す。
【０１７１】
次に、演算処理プロセッサ１ｂは、ステップＳ３０の処理に戻す。
【０１７２】
続いて、以下、図１４に示す通信処理プロセッサ２ｃの共有メモリアクセス処理フローについて、図１１を参照しながら説明する。
【０１７３】
通信処理プロセッサ２ｃの処理が開始されると、通信処理プロセッサ２ｃは、伝送路３から受信データを受けたか否か判断する（ステップＳ６０）。
【０１７４】
受信データを受信していない場合に（ステップＳ６０のＮｏ）、通信処理プロセッサ２ｃは、処理をステップＳ６３に進める。一方、受信データを受信した場合に（ステップＳ６０のＹｅｓ）、通信処理プロセッサ２ｃは、処理を次のステップＳ６１に進める。
【０１７５】
通信処理プロセッサ２ｃは、第１受信領域バンク１０ｒ１、第２受信領域バンク１０ｒ２および第１受信領域バンク１０ｒ３のアクセス可能ないずれか一つのバンクに受信データを書き込む（ステップＳ６１）。
【０１７６】
書き込み後、通信処理プロセッサ２ｃは、受信領域バンク第２切替制御手段１２ｒ２を介して、受信領域バンク１０ｒｃを切り替える（ステップＳ６２）。
【０１７７】
次に、通信処理プロセッサ２ｃは、送信領域バンク第２切替制御手段１２ｓ２を介して、送信領域バンク１０ｓｃを切り替える（ステップＳ６３）。
【０１７８】
次に、通信処理プロセッサ２ｃは、第１送信領域バンク１０ｓ１、第２送信領域バンク１０ｓ２および第３送信領域バンク１０ｓ３のアクセス可能ないずれか一つのバンクから送信データを読み出す（ステップＳ６４）。
【０１７９】
通信処理プロセッサ２ｃは、送信データに更新がある場合に、伝送路３を介して、送信データを送信する（ステップＳ６５）。ステップＳ６５の後、演算処理プロセッサ１ｃは、ステップＳ６０の処理に戻す。以降、前述したステップＳ６０〜Ｓ６５の処理を繰り返す。
【０１８０】
以上説明したように、第４の実施形態によれば、待機バンクを用いることにより、通信処理プロセッサのアクセス待ち時間がなく、かつ、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【０１８１】
［第５の実施形態］
図１５は、本発明に係る共有メモリアクセスシステムの第５の実施形態の構成を示すブロック図である。
【０１８２】
共有メモリアクセスシステム２０ｄは、図１５に示すように、演算処理プロセッサ１ｄと、通信処理プロセッサ２ｄと、演算処理プロセッサ１ｄおよび通信処理プロセッサ２ｄによって共有される共有メモリ１０ｄとを備えている。
【０１８３】
第５の実施形態の共有メモリアクセスシステムの構成は、第１ないし第４の実施形態の共有メモリアクセスシステムのいずれかの構成に加えて、共有メモリ１０ｄが通信先の相手ノード５０（ｍ）（複数の通信先）ごとに割り当てられた第ｍバンク手段１０ｒｓｄ（ｍ）を備えている。なお、ｍは１以上、ｎ以下（ｎは２以上の整数）の整数である。
【０１８４】
すなわち、共有メモリ１０ｄは、通信先の相手ノード５０（１）〜５０（ｎ）に対応した、図１５に示すような第１バンク手段１０ｒｓｄ（１）〜第ｎバンク手段１０ｒｓｄ（ｎ）を少なくとも同数備えている。なお、第ｍバンク手段１０ｒｓｄ（ｍ）の構成は、前述した第１ないし第４の実施形態の構成に示した複数のバンク手段１０ｒｓａ〜１０ｒｓｄなどである。
【０１８５】
送信データおよび受信データの通信先である複数の相手ノード５０（１）〜５０（ｎ）が、伝送路３に複数接続されている。なお、以降では、複数の第１バンク手段１０ｒｓｄ（１）〜第ｎバンク手段１０ｒｓｄ（ｎ）を代表して、バンク手段１０ｒｓｄと示す。また、複数の相手ノード５０（１）〜５０（ｎ）を代表して、相手ノード５０と示す。
【０１８６】
各々のバンク手段１０ｒｓｄは、相手ノード５０ごとに割り当てられ、相手ノード５０ごとに送信データおよび受信データを記憶する。
【０１８７】
演算処理プロセッサ１ｄは、各々の相手ノード５０に送信する送信データを相手ノード５０ごとに割り当てられたバンク手段１０ｒｓｄに書き込む。演算処理プロセッサ１ｄは、各々の相手ノード５０から受信した受信データを、相手ノード５０ごとに割り当てられたバンク手段１０ｒｓｄから読み出す。
【０１８８】
通信処理プロセッサ２ｄは、各々の相手ノード５０から受信した受信データを、相手ノード５０ごとに割り当てられたバンク手段１０ｒｓｄに書き込む。通信処理プロセッサ２ｄは、各々の相手ノード５０へ送信する送信データを、相手ノード５０ごとに割り当てられたバンク手段１０ｒｓｄから読み出す。通信処理プロセッサ２ｄは、読み出した送信データを、それに対応する通信先である相手ノード５０へ送信する。
【０１８９】
図１５は、第３の実施形態の共有メモリアクセスシステムに付加した例を示すものである。
【０１９０】
演算処理プロセッサ１ｄおよび通信処理プロセッサ２ｄは、例えば通信先の相手ノード５０（ｍ）ごとに、受信データおよび送信データのやり取りを、相手ノード５０（ｍ）ごとに対応させた共有メモリ１０ｄ内の第ｍバンク手段１０ｒｓｄ（ｍ）を用いる。
【０１９１】
すなわち、通信処理プロセッサ２ｄは、通信する相手ノード５０（ｍ）ごとに、受信データを第ｍバンク手段１０ｒｓｄ（ｍ）の受信領域バンクに書き込む。演算プロセッサ１ｄは、通信する相手ノード５０（ｍ）ごとに、受信データを第ｍバンク手段１０ｒｓｄ（ｍ）の受信領域バンクから読み出す。
【０１９２】
また、演算処理プロセッサ１ｄは、通信する相手ノード５０（ｍ）ごとに、送信データを第ｍバンク手段１０ｒｓｄ（ｍ）の送信領域バンクに書き込む。通信処理プロセッサ２ｄは、通信する相手ノード５０（ｍ）ごとに、送信データを第ｍバンク手段１０ｒｓｄ（ｍ）の送信領域バンクから読み出す。
【０１９３】
これにより、通信処理プロセッサ２ｄは、通信する相手ノード５０（ｍ）ごとに第ｍバンク手段１０ｒｓｄ（ｍ）を用いて、伝送路３を介して送受信データを送受信する。
【０１９４】
例えば第３および第４の実施形態では、通信先の相手が複数存在する場合、バンク内の送受信データを正確に更新するため、バンクを切り替える前に更新する一つの通信先の送受信データ以外の他の通信先の送受信データについても、そのバンクに書き込む必要がある。このため、送受信データを正確に更新するためにバンクに書き込む処理に余分な時間がかかる。
【０１９５】
しかし、第５の実施形態によれば、通信先の相手が複数存在する場合でも、共有メモリ内に割り当てられた通信先ごとの複数のバンクに格納された送受信データを更新するため、バンクに書き込む処理に余分な時間がかかることなく、かつ、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【０１９６】
［第６の実施形態］
図１６は、本発明に係る共有メモリアクセスシステムの第６の実施形態の構成を示すブロック図である。
【０１９７】
第６の実施形態では、第１ないし第５の実施形態の構成において、送信データおよび受信データが更新されたことを、読み込み（ＲＤアクセス）側で確認（判別）できるように、書き込み（ＷＲアクセス）側で識別番号をデータに付加して管理するデータ更新管理手段をバンク手段がさらに有する。
【０１９８】
なお、図１６の共有メモリアクセスシステム２０ｅは、一例として、図１に示した第１の実施形態の共有メモリアクセスシステム２０ａに、さらに以下に説明する機能部（データ更新管理手段１４ａ１および１４ａ２）と、２つのプロセッサとして演算処理プロセッサ１ａａおよび通信処理プロセッサ２ａａを備えた構成を示す。
【０１９９】
データ更新管理手段１４ａ１は、演算処理プロセッサ１ａａから共有メモリ１０ａａのバンク手段１０ｒｓａａに格納される送信データの更新を確認可能なように、識別番号を送信データに付加し、識別番号を付加した送信データをバンク手段１０ｒｓａａに格納する。
【０２００】
また、データ更新管理手段１４ａ２は、バンク手段１０ｒｓａａから送信データの読み出し時に、識別番号により送信データの更新を確認する。データ更新管理手段１４ａ２は、更新結果について通信処理プロセッサ２ａａに通知する。また、データ更新管理手段１４ａ２は、識別番号を除去した送信データを通信処理プロセッサ２ａａに送る。
【０２０１】
データ更新管理手段１４ａ２は、通信処理プロセッサ２ａａから共有メモリ１０ａａのバンク手段１０ｒｓａａに格納される受信データの更新を確認可能なように、識別番号を受信データに付加し、識別番号を付加した受信データをバンク手段１０ｒｓａａに格納する。
【０２０２】
また、データ更新管理手段１４ａ１は、バンク手段１０ｒｓａａからの受信データの読み出し時に、識別番号により受信データの更新をチェックする。データ更新管理手段１４ａ１は、更新結果について演算処理プロセッサ１ａａに通知する。また、データ更新管理手段１４ａ１は、識別番号を除去した受信データを演算処理プロセッサ１ａａに送る。
【０２０３】
なお、以上説明したデータ更新管理手段は、第２ないし第５の実施形態の構成にも付加することができる。
【０２０４】
以上説明したように、第６の実施形態によれば、共有メモリ内のバンクに新旧の送受信データが混在していた場合でも、更新された送受信データを容易に確認可能であり、かつ、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【０２０５】
［第７の実施形態］（請求項７対応と請求項８とを一つの実施例に）
図１７は、本発明に係る共有メモリアクセスシステムの第７の実施形態の構成を示すブロック図である。
【０２０６】
図１７に示す共有メモリアクセスシステム２０ｆは、図１に示す共有メモリアクセスシステム２０ａの構成中の通信処理プロセッサ２ａを、通信処理プロセッサ２ｆに置き換えた構成である。図１７に示すブロック図において、その他の手段については図１に示す同一符号の手段と同じ機能であるため、ここではその説明を省くものとし、以下では通信処理プロセッサ２ｆについて主に説明する。
【０２０７】
通信処理プロセッサ２ｆは、送信データの更新の有無を所定の周期で監視する送信データ用タイマ２１ｆと、受信データの更新の有無を所定の周期で監視する受信データ用タイマ２２ｆと、擬似データを記憶する擬似データ記憶手段２３ｆとを有する。
【０２０８】
通信処理プロセッサ２ｆは、送信データ用タイマ２１ｆにより定められる所定の周期期間内に共有メモリ１０ａ内に送信する送信データが更新されない場合に、伝送路３を介して送信先に擬似データを送信する。
【０２０９】
擬似データは、予め擬似データ記憶手段２３ｆに記憶されている。擬似データは、例えば実際に用いられる送信データおよび受信データと判別可能で、かつ、伝送路３の異常時や通信処理プロセッサ２ｆの異常時などと判別可能なデータである。
【０２１０】
一方、通信処理プロセッサ２ｆは、送信データ用タイマ２１ｆにより定められる所定の周期期間内に共有メモリ１０ａ内に送信する送信データが更新されている場合に、共有メモリ１０ａから送信データを読み出し、読み出した送信データを送信先に送信する。
【０２１１】
以上により、通信処理プロセッサ２ｆは、共有メモリ１０ａ内に送信データが更新されていない場合でも、一定周期で送信データを送信することができる。
【０２１２】
これにより、例えば演算処理プロセッサ１ｆの動作が非周期的であっても、伝送路３の負荷を一定とした通信を行い、アクセスが競合することなく共有メモリにアクセスすることができる。
【０２１３】
次に、通信処理プロセッサ２ｆは、受信データ用タイマ２２ｆにより定められる所定の周期期間内に伝送路３から受信データを受信しない場合に、擬似データを共有メモリ１０ａに書き込む。
【０２１４】
一方、通信処理プロセッサ２ｆは、受信データ用タイマ２２ｆにより定められる所定の周期期間内に伝送路３から受信データを受信した場合に、受信した受信データを共有メモリ１０ａに書き込む。
【０２１５】
以上により、通信処理プロセッサ２ｆが受信データを受信しない場合でも、一定周期で受信データを共有メモリ１０ａに書き込むことができる。
【０２１６】
これにより、例えば伝送路３等に異常があり受信データを受信できない場合でも、受信領域バンクに擬似データを書き込むことで、通信処理プロセッサ２ｆの健全性を演算処理プロセッサ１ｆに通知することができ、また、通信処理プロセッサ２ｆの処理負荷がほぼ一定となるように動作し、アクセスが競合することなく共有メモリにアクセスすることができる。
【０２１７】
なお、以上説明した送信データ用タイマ２１ｆ、受信データ用タイマ２２ｆおよび擬似データ記憶手段２３ｆは、第２ないし第６の実施形態の構成にも付加することができる。
【０２１８】
以上説明したように、第７の実施形態によれば、演算処理プロセッサの動作が非周期的であっても、伝送路の負荷を一定とするような送信データの通信を行い、かつ、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【０２１９】
また、第７の実施形態によれば、伝送路等に異常があり受信データを受信できない場合でも、共有メモリに擬似データを書き込むことで、通信処理プロセッサの健全性を演算処理プロセッサに確認させることができる。また、通信処理プロセッサの処理負荷が一定となるような動作であり、かつ、複数のプロセッサが共有メモリへのアクセスを競合することなく、共有メモリにアクセスすることができる。
【０２２０】
［他の実施形態］
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。例えば、各実施形態の特徴を組み合わせてもよい。さらに、これらの実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形には、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０２２１】
１ａ、１ｂ、１ｃ、１ｄ、１ｆ、１ａａ、１０１…演算処理プロセッサ、２ａ、２ｂ、２ｃ、２ｄ、２ｆ、２ａａ、２００…通信処理プロセッサ、３、３００…伝送路、１０ａ、１０ｂ、１０ｃ、１０ｄ、１０ａａ、１００…共有メモリ、１０ｒｂ、１０ｒｃ…受信領域バンク、１０ｓｂ、１０ｓｃ…送信領域バンク、１０ｒｓａ、１０ｒｓｂ、１０ｒｓｃ、１０ｒｓａａ…バンク手段、１０ｒｓｄ（１）…第１バンク手段、１０ｒｓｄ（２）…第２バンク手段、１０ｒｓｄ（ｎ）…第ｎバンク手段、１０ｒｓ１…第１送受信領域バンク、１０ｒｓ２…第２送受信領域バンク、１０ｒ１…第１受信領域バンク、１０ｒ２…第２受信領域バンク、１０ｒ３…第３受信領域バンク、１０ｓ１…第１送信領域バンク、１０ｓ２…第２送信領域バンク、１０ｓ３…第３送信領域バンク、１１ａ…バンク切替要求フラグ手段、１２ａ…バンク切替制御手段、１２ｒ…受信領域バンク切替制御手段、１２ｒ１…受信領域バンク第１切替制御手段、１２ｒ２…受信領域バンク第２切替制御手段、１２ｓ…送信領域バンク切替制御手段、１２ｓ１…送信領域バンク第１切替制御手段、１２ｓ２…送信領域バンク第２切替制御手段、１３ｒ…受信領域演算処理プロセッサ使用中フラグ手段、１３ｓ…送信領域演算処理プロセッサ使用中フラグ手段、１４ａ１、１４ａ２…データ更新管理手段、１５、１５ａ…バンク制御手段、２０ａ、２０ｂ、２０ｃ、２０ｄ、２０ｅ、２０ｆ…共有メモリアクセスシステム、２１ｆ…送信データ用タイマ、２２ｆ…受信データ用タイマ、２３ｆ…擬似データ記憶手段、５０（１）、５０（２）、５０（ｎ）…ノード、１００ｒ…受信領域バンク、１００ｓ…送信領域バンク、１０３…制御処理、１３０…フラグ領域、１３０ｒ１…受信領域演算処理プロセッサ使用中フラグ、１３０ｒ２…受信領域通信処理プロセッサ使用中フラグ、１３０ｓ１…送信領域演算処理プロセッサ使用中フラグ、１３０ｓ２…送信領域通信処理プロセッサ使用中フラグ
【図１】
2014085820.tif 000003
【図２】
2014085820.tif 000004
【図３】
2014085820.tif 000005
【図４】
2014085820.tif 000006
【図５】
2014085820.tif 000007
【図６】
2014085820.tif 000008
【図７】
2014085820.tif 000009
【図８】
2014085820.tif 000010
【図９】
2014085820.tif 000011
【図１０】
2014085820.tif 000012
【図１１】
2014085820.tif 000013
【図１２】
2014085820.tif 000014
【図１３】
2014085820.tif 000015
【図１４】
2014085820.tif 000016
【図１５】
2014085820.tif 000017
【図１６】
2014085820.tif 000018
【図１７】
2014085820.tif 000019
【図１８】
2014085820.tif 000020
【図１９】
2014085820.tif 000021