(57)【要約】【課題】複数プロセッサ間の情報共有のための共有メモリに対し、不要なアクセスを削減することで共有メモリを使用する両プロセッサの処理効率を向上する事が可能となる共有メモリのアクセス方式を得る。【解決手段】共有メモリ３にデータを書込む側の処理装置に書込み要否判定機能７と、該処理装置側で占有できる書込み要否判定機能用ローカルバッファ８とを備え、共有メモリにデータを書込む際に、書込み要否判定機能が書込み要否判定機能用ローカルバッファの内容を用いて書込みデータに変化があるか無いかを書込みデータ毎に判定し、データに変化があった場合にのみ実際に共有メモリにデータを書込むとともに、共有メモリの書込みアドレスに対応した書込み要否判定機能用ローカルバッファのアドレスに書込みデータに対応した値を書込む。【選択図】図１
2007279884.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理装置が情報を共有するための共有メモリシステムおいて、
前記共有メモリにデータを書込む側の処理装置に書込み要否判定機能と、該処理装置側で占有できる書込み要否判定機能用ローカルバッファとを備え、
前記共有メモリにデータを書込む際に、前記書込み要否判定機能が前記書込み要否判定機能用ローカルバッファの内容を用いて書込みデータに変化があるか無いかを書込みデータ毎に判定し、データに変化があった場合にのみ実際に共有メモリにデータを書込むとともに、共有メモリの書込みアドレスに対応した書込み要否判定機能用ローカルバッファのアドレスに書込みデータに対応した値を書込むことを特徴とする共有メモリのアクセス方式。
【請求項２】
書込みデータに変化があるか無いかを判定するデータ変化有無判定を、単一データ毎ではなく複数のデータを纏めて一括で判定することを特徴とする請求項１記載の共有メモリのアクセス方式。
【請求項３】
データ生成側でデータ変化毎に更新する識別情報を本来の書込みデータとは別に付加し、その付加された情報をデータ変化有無判定に用いることを特徴とする請求項１又は請求項２記載の共有メモリのアクセス方式。
【請求項４】
共有メモリのデータ読込み側の処理装置に読出し要否判定機能と、該処理装置側で占有できる読出し要否判定機能用ローカルバッファと、実データを書込む共有メモリの内容に変化があったか否かを示す付加レジスタとを備え、
データを書込む側の処理装置が共有メモリへの実データ書込み時に、共有メモリへの書込みアドレスまたはアドレス群に対応した前記付加レジスタ上のアドレスに対してデータ変化有りを書込み、データ読出し側がデータ読出し時に前記付加レジスタ内容によりデータに変化があるかを読出し要否判定機能で判定し、データに変化があった場合にのみ実際に共有メモリからデータを読出し、付加レジスタのデータ変化有りをリセットするとともに、読出し要否判定機能用ローカルバッファにデータを書込み、変化が無かった時は読出し要否判定機能用ローカルバッファからデータを読出すことを特徴とする請求項１〜請求項３のいずれかに記載の共有メモリのアクセス方式。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、サイクリック通信（サイクリック伝送、スキャン伝送とも言う。以降はサイクリック通信で統一する）を有する制御ネットワーク上データの送受信を行う通信プロセッサと、実際にサイクリック通信データを使用する制御プロセッサ間等に使用すると好適な、マルチプロセッサ間の情報交換を行う共有メモリのアクセス方式に関するものである。
【背景技術】
【０００２】
まず、サイクリック通信について説明する。サイクリック通信とは、プラントを制御する際などによく使用される通信方式で、複数のプラント制御機器等からなる処理装置（ノード）間で伝送コモンメモリ上の情報を共有し、プラントを制御するソフトウェアからは、メモリ読み書きイメージで共有された情報に対してアクセスするため通信方式であり、伝送コモンメモリ上の情報は定周期（サイクリック）に各ノードから送信されるデータにより更新される。図３は、例えばＪＩＳ  Ｂ３５２１で規格化されているＦＬ−ｎｅｔなどにおけるサイクリック通信の概念図である。各ノード（１〜ｎ）上に存在する伝送コモンメモリ上の状態がサイクリック通信により同一化される様子を示している。伝送コモンメモリ上には各ノード（１〜ｎ）用の領域(出力エリア)が設定されており、各ノード（１〜ｎ）が順番に自ノード用の領域の内容を定周期でブロードキャストにより送信する。他ノードからのサイクリック通信を受け取った各ノードは、自ノード内にある伝送コモンエリア上の、送信元ノード用にアサインされている領域に受信データを保存することで、各ノード（１〜ｎ）上のコモンエリアの内容が同一化される。
また、ネットワークにおいては、一般的に外来ノイズや中継機器の障害、ノード自身の障害などにより一時的にデータ送受信不可な状態になることがあるため、このような送受信不可状態から復帰した際にはデータの再送などにより欠落データを補う必要がある。ただし、サイクリック通信に於いては、前記のような伝送異常を検出して再送するのではなく、通常時も定周期でデータを送信することでデータ欠落が継続しないようにしている。
【０００３】
次に各ノード内の動きについて説明する。図４は各ノード内のデータ流れを示したイメージ図である。各ノードには、伝送コモンメモリ２０を挟んで、上記で説明した伝送データの送受信と伝送コモンメモリとの読み書きを行う通信プロセッサ２１の他に、伝送コモンメモリ２０上の情報を実際に使って制御対象２３であるプラントの制御を行う制御プロセッサ２２が存在する。
制御プロセッサ２２は、制御対象２３に対する制御周期で受信領域２４や制御対象２３からデータを読出し、演算を行った後、必要に応じて制御対象２３または送信領域２５にデータを書込む。一方、通信プロセッサ２１は、伝送コモンメモリ内容が制御プロセッサ２２により変更されたか否かに関係なく、自分の送信周期で送信領域２５からデータを読出し他ノードに送信する。他ノードからデータを受信した場合は、そのデータを受信領域２４に書込む。通常これらの通信プロセッサ２１、制御プロセッサ２２は非同期に動作しており、非同期に伝送コモンメモリ２０にアクセスしている。このように、伝送コモンメモリ２０は、各ノード間の共有メモリであると同時に、１ノード内においては通信プロセッサ２１と制御プロセッサ２２間の共有メモリでもある。
【０００４】
また、図５は、図４の伝送コモンメモリ２０の受信領域２４に対して、従来の一般的な共有メモリのアクセス方式を適用した場合のブロック図である。図５において、一方の側のＣＰＵ−Ａ３１と他方の側のＣＰＵ−Ｂ３２がそれぞれ図４の通信プロセッサ２１と制御プロセッサ２２に対応し、共有メモリ３３が図４の伝送コモンメモリ２０に対応する。一方の側のＣＰＵ−Ａ３１のアドレス、データ、制御線を含んだＣＰＵバス３５は、共有メモリ調停機能３４を経由して共有メモリ３３に接続されている。また、他方の側のＣＰＵ−Ｂ３２のアドレス、データ、制御線を含んだＣＰＵバス３６も、共有メモリ調停機能３４を経由して共有メモリ３３に接続されている。共有メモリ調停機能３４は、共有メモリ３３に対してＣＰＵ−Ａ３１とＣＰＵ−Ｂ３２が同時にアクセスすることにより発生するデータ化けなどを防ぐためのアクセス調停を行うものであり、通常ＣＰＵ−Ａ３１かＣＰＵ−Ｂ３２のどちらかが先に共有メモリ３３へのアクセス要求を出した場合には、要求を先に出した方にアクセスを許可し、他方には相手がアクセス終了するまでアクセスしないようにする。また、ＣＰＵ−Ａ３１とＣＰＵ−Ｂ３２が共有メモリ３３へのアクセス要求を同時に出した場合は、一般的に通信プロセッサ（ＣＰＵ−Ａ３１）の方が通信の送受信タイミング時点で共有メモリ３３に対してアクセスする必要があるため、制御プロセッサ（ＣＰＵ−Ｂ３２）よりも優先して共有メモリ３３にアクセスできるようにする事が多い。したがって、ここでは共有メモリ調停機能３４は、同時要求時はＣＰＵ−Ａ３１優先となっているものとする。つまり、ＣＰＵ−Ａ３１とＣＰＵ−Ｂ３２が共有メモリ３３へのアクセス要求を同時に出した場合は、ＣＰＵ−Ａ３１がアクセス権を獲得してＣＰＵ−Ｂ３２はＣＰＵ−Ａ３１がアクセス終了するまで待たされることになる。
【０００５】
また、従来技術として、マイクロプロセッサ、共有メモリ、データ転送バスに接続され、データ転送経路の接続制御を行うアクセス制御部と、上記マイクロプロセッサ、上記共有メモリ、上記データ転送バスに接続され、いずれの共有メモリへのアクセスであるかを判断し、上記アクセス制御部に接続経路の指示を与えるアクセス調停部とを、それぞれの上記プロセッサシステムに備え、アクセス要求発生毎に、上記データ転送経路の接続を行い、アクセス要求の競合時には上記アクセス調停部が競合しているアクセス要求の調停を行うものがある（例えば、特許文献１参照）。また、他の従来技術として、共有メモリに調停部で競合を防止して複数のデバイスによりアクセスする場合、共有メモリと同じアドレス領域に同じデータを１つのデバイスからの書込み要求信号により同時に書込まれるコピーメモリを追加し、１つのデバイスからの読み出し要求信号をコピーメモリにのみ、他のデバイスからの読み出し要求信号を共有メモリにのみ与えるようにしたものがある（例えば、特許文献２参照）。
【０００６】
【特許文献１】特開平７−５６８７３号公報
【特許文献２】特開平８−３３５１８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の共有メモリのアクセス方式は、以上のように構成されており、特にサイクリック通信を行うノード内の通信プロセッサ１１と制御プロセッサ１２間の共有メモリアクセスにおいては、通信プロセッサ１１が他ノードから送信されてきたデータを受信した際にデータの内容が変わっていなくても自ノード内における伝送コモンメモリ１０の他ノード送信領域１５に受信データを書込むように構成されているので、実際には自ノードの共有メモリに書込む必要のないデータを受信した場合でも、通信プロセッサ１１が共有メモリにデータを書込んでいる間、制御プロセッサ１２は共有メモリへのアクセスを待たされることになる。
【０００８】
また、特許文献１に記載された従来技術は、共有メモリ自体を複数に分割し、各プロセッサが異なった共有メモリにアクセスする際には競合が起きないものであるが、同じ共有メモリに対する競合を軽減させるものではない。また特許文献２に記載された従来技術は、共有メモリに対して読出す際はローカルメモリから読出すようにしているが、共有メモリに対する書込み条件としては使用していない。
【０００９】
この発明は上記のような課題を解決するためになされたものであり、複数プロセッサ間の情報共有のための共有メモリに対し、不要なアクセスを削減することで共有メモリを使用する両プロセッサの処理効率を向上する事が可能となる共有メモリのアクセス方式を得ることを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る共有メモリのアクセス方式においては、複数の処理装置が情報を共有するための共有メモリシステムおいて、共有メモリにデータを書込む側の処理装置に書込み要否判定機能と、該処理装置側で占有できる書込み要否判定機能用ローカルバッファとを備え、共有メモリにデータを書込む際に、書込み要否判定機能が書込み要否判定機能用ローカルバッファの内容を用いて書込みデータに変化があるか無いかを書込みデータ毎に判定し、データに変化があった場合にのみ実際に共有メモリにデータを書込むとともに、共有メモリの書込みアドレスに対応した書込み要否判定機能用ローカルバッファのアドレスに書込みデータに対応した値を書込むものである。
【発明の効果】
【００１１】
この発明によれば、データ内容に変化がある場合のみ共有メモリに対して読み書きアクセスを行うように構成したので、データ内容に関係なく共有メモリに対して読み書きアクセスを行う場合と比較して、不要な共有メモリアクセスを削減することが可能で、その結果、複数プロセッサ間の共有メモリアクセスにおける競合発生を削減することが可能となり、プロセッサ処理能力を有効に活用することが可能となる。
【発明を実施するための最良の形態】
【００１２】
実施の形態１．
以下、この発明の実施の形態１を図１に基づいて説明する。図１はこの発明の実施の形態１における共有メモリのアクセス方式を示すブロック図である。
図１において、一方の側のＣＰＵ−Ａ１と他方の側のＣＰＵ−Ｂ２がそれぞれ図４の通信プロセッサ１１と制御プロセッサ１２に対応し、共有メモリ３が図４の伝送コモンメモリ１０に対応する。一方の側のＣＰＵ−Ａ１は共有メモリ３に対してデータを書込む側であり、他方の側のＣＰＵ−Ｂ２は共有メモリ３からデータを読出す側である。一方の側のＣＰＵ−Ａ１のアドレス、データ、制御線を含んだＣＰＵ−Ａ側ＣＰＵバス５は、共有メモリ調停機能４を経由して共有メモリ３に接続されている。また、他方の側のＣＰＵ−Ｂ２のアドレス、データ、制御線を含んだＣＰＵ−Ｂ側ＣＰＵバス６も、共有メモリ調停機能４を経由して共有メモリ３に接続されている。共有メモリ調停機能４は、共有メモリ３に対してＣＰＵ−Ａ１とＣＰＵ−Ｂ２が同時にアクセスすることにより発生するデータ化けなどを防ぐためのアクセス調停を行うものである。また、この発明の実施の形態１においては、一方の側のＣＰＵ−Ａ１と共有メモリ調停機能４の間に設けられた書込み要否判定機能７と、ＣＰＵ−Ａ１側で占有でき、ＣＰＵ−Ｂ２側からはアクセスできない書込み要否判定機能用ローカルバッファ８と、書込み要否判定機能７と共有メモリ調停機能４の間を接続する共有メモリ書込み用バス９とを備えた構成に特徴がある。なお、書込み要否判定機能用ローカルバッファ８には、一方の側のＣＰＵ−Ａ１が共有メモリ３に書込もうとするデータを、実際に書込む必要があるか無いかを判定するための情報を保存しておくようにする。
【００１３】
次に、図１に基づいて一方の側のＣＰＵ−Ａ１が共有メモリ３にデータを書込む際の動作について説明する。この説明では、書込み要否判定機能用ローカルバッファ８内の情報構造の１例として、共有メモリ３に書込むものと同じ情報を書込み要否判定機能用ローカルバッファ８の同じアドレスに書込むものとして説明を行う。
まず一方の側のＣＰＵ−Ａ１は、電源投入時やリセット時に実行する初期化処理で書込み要否判定機能用ローカルバッファ８と共有メモリ３内容を初期状態（例えば、全て０）とする。次に一方の側のＣＰＵ−Ａ１が他ノードからのサイクリック通信データ受信などにより共有メモリ３に書込みたいデータを持った場合、一方の側のＣＰＵ−Ａ１はＣＰＵ−Ａ側ＣＰＵバス５に共有メモリ３の書込みアドレスと書込みデータを出力する。書込み要否判定機能７は、書込み要否判定機能用ローカルバッファ８の該アドレスからデータを読出し、書込みデータと比較する。一方の側のＣＰＵ−Ａ１がＣＰＵ−Ａ側ＣＰＵバス５に出力したデータと書込み要否判定機能用ローカルバッファ８から読出したデータが一致した場合、書込み要否判定機能７は該データの共有メモリ３への書込みを不要と判定し、共有メモリ３および書込み要否判定機能用ローカルバッファ８の内容は変化させずに一方の側のＣＰＵ−Ａ１に書込み正常終了の応答を返す。一方、ＣＰＵ−Ａ１がＣＰＵ−Ａ側ＣＰＵバス５に出力したデータと書込み要否判定機能用ローカルバッフア８から読出したデータが一致しなかった場合、書込み要否判定機能７は該データの共有メモリ３への書込みを必要と判定し、共有メモリ３および書込み要否判定機能用ローカルバッファ８に対してＣＰＵ−Ａ１の出力したデータを書込んだ後、ＣＰＵ−Ａ１に書込み正常終了の応答を返す。
【００１４】
なお、上記の例では書込み要否判定機能用ローカルバッファ８内情報を、共有メモリ３に書込むものと同じ情報としたが、書込み要否判定機能用ローカルバッフア８には、共有メモリ３に書込む情報を反転するなどの入出力が一対一で対応する演算を実施した後の情報を保存しても良く、この場合、上記の例の「データ比較」は該一対一対応演算をＣＰＵ−Ａ１の出力したデータに施しても良いし、該一対一対応演算の逆演算を書込み要否判定機能用ローカルバッファ内データに施しても良い。また情報を保存する書込み要否判定機能用ローカルバッフア内の位置も、上記の例では共有メモリと同じアドレスとしたが、共有メモリ上のアドレスが決まると書込み要否判定機能用ローカルバッファ上のアドレスが一意に決まる他の対応付け(一対一でなくとも良い)でも良い。
【００１５】
実施の形態２．
なお、上記の実施の形態１では、一方の側のＣＰＵ−Ａ１が出力する単一データ毎に書込み要否判定機能用ローカルバッファ内容と比較する場合について述べたが、ＣＰＵ−Ａ１が出力する複数データを纏めて書込み要否判定機能用ローカルバッファ内容と比較しても良い。これにより、書込み要否判定機能用ローカルバッファのサイズを小さくしたり、比較回数を減らしたりする事が可能となる。複数データの纏め方としては、「共有メモリ」全体一括で行っても良いし、「共有メモリ」を伝送単位などの複数のブロックに分け、それぞれのブロック毎に対して行っても良いし、単純にアクセスの最小単位(ワードやバイトなど)の整数倍などとしても良い。
この場合の書込み要否判定機能用ローカルバッファに保存する情報の例としては、ＣＰＵ−Ａ１が出力する複数データを圧縮したもの、圧縮データを一対一演算したもの、または一対一演算したものを圧縮したものなどが考えられる。
【００１６】
実施の形態３．
また、上記の実施の形態１の説明では、書込み要否判定機能用ローカルバッファ８に保存する比較用データを書込み要否判定機能単独で生成する場合について述べたが、データ生成側（サイクリック通信データなどの場合はデータ送信側）でデータ変化毎に値を更新する識別子情報を付加することとし、この付加された識別子、または識別子を一対一演算したもの、さらには、複数の識別子を纏めて演算したものを書込み要否判定機能用ローカルバッファに保存し「データ変化有無」を検出するための情報としても良い。このことにより、元データ生成側でない部分で比較用データを生成することが不要となる。
【００１７】
実施の形態４．
図２はこの発明の実施の形態４における共有メモリのアクセス方式を示すブロック図である。
今までの説明では、共有メモリ３にデータを書込む側での対策についてのみ述べてきたが、共有メモリ３からデータを読出す側での対策も実施した場合について図２に基づいて説明する。なお、実施の形態１と同一又は相当部分には同一符号を付して説明を省略する。
【００１８】
この発明の実施の形態４においては、共有メモリ３の読出し側である他方の側のＣＰＵ−Ｂ２と共有メモリ調停機能４の間に設けられた読出し要否判定機能１０と、ＣＰＵ−Ｂ２側で占有でき、ＣＰＵ−Ａ１側からはアクセスできない読出し要否判定機能用ローカルバッファ１１と、読出し要否判定機能１０と共有メモリ調停機能４の間を接続する共有メモリ読出し用バス１２と、実データを書込む共有メモリ３の内容に変化があったか否かを示す付加レジスタ１３とを備えた構成に特徴がある。なお、読出し要否判定機能用ローカルバッファ１１には、他方の側のＣＰＵ−Ｂ２が共有メモリ３から読出そうとするデータを生成可能な情報と付加レジスタ１３の内容の変化を検出するための情報を保存しておくようにする。
【００１９】
次に、図２に基づいて他方の側のＣＰＵ−Ｂ２が共有メモリ３からデータを読出す際の動作について説明する。この説明では、読出し要否判定機能用ローカルバッファ１１内の情報構造の１例として、共有メモリ３の内容と同じ情報を読出し要否判定機能用ローカルバッフア１１の同じアドレスに、付加レジスタ１３の内容と同じ情報を該アドレスから一意に求められるアドレスに書込むものとして説明を行う。
まず一方の側のＣＰＵ−Ａ１は、電源投入時やリセット時に実行する初期化処理で書込み要否判定機能用ローカルバッフア８や共有メモリ３と同様に付加レジスタ１３内容も初期状態（例えば、全て０）とする。他方の側のＣＰＵ−Ｂ２は、電源投入時やリセット時に実行する初期化処理で読出し要否判定機能用ローカルバッファ１１の内容を初期状態（例えば、全て０）とする。ＣＰＵ−Ａ１側が共有メモリ３の内容を実際に更新する際には、付加レジスタ１３の内容も変化（例えばインクリメント）させる。次に、他方の側のＣＰＵ−Ｂ２が共有メモリ３のデータを読出したい場合、ＣＰＵ−Ｂ２はＣＰＵ−Ｂ側ＣＰＵバス６に共有メモリ３に対する読出しアドレスを出力する。読出し要否判定機能１０は、共有メモリ読出しアドレスに対応した付加レジスタ１３と、読出し要否判定機能用ローカルバッファ１１上の付加レジスタ１３に対応した位置からデータを読出して比較する。付加レジスタ１３の内容と書込み要否判定機能用ローカルバッフア８から読出した付加レジスタ相当のデータが一致した場合、読出し要否判定機能１０は該データの共有メモリ３からの読出しを不要と判定し、読出し要否判定機能用ローカルバッファ１１からデータを読出し、共有メモリ３および読出し要否判定機能用ローカルバッファ１１の内容は変化させずにＣＰＵ−Ｂ２に読出し正常終了の応答を返す。一方、付加レジスタ１３の内容と書込み要否判定機能用ローカルバッフア８から読出した付加レジスタ相当のデータが一致しなかった場合、読出し要否判定機能１０は該データの共有メモリ３からの読出しを必要と判定し、共有メモリ３および付加レジスタ１３の内容を読出し、読出し要否判定機能用ローカルバッファ１１に保存すると共にＣＰＵ−Ｂ２に読出し正常終了の応答を返す。
【００２０】
なお、この実施の形態４においても、一方の側のＣＰＵ−Ａ１が付加レジスタ１３の内容を変化させるのは共有メモリ３上の単一データ毎でも良いし、複数データを纏めても良い。また、実施の形態１における説明と同様、共有メモリ３や付加レジスタ１３上の情報と書込み要否判定機能用ローカルバッファ１１上の情報の対応も、単一データ毎でも良いし、複数データを纏めても良い。
【図面の簡単な説明】
【００２１】
【図１】この発明の実施の形態１における共有メモリのアクセス方式を示すブロック図である。
【図２】この発明の実施の形態４における共有メモリのアクセス方式を示すブロック図である。
【図３】規格化されているＦＬ−ｎｅｔなどにおけるサイクリック通信の概念図である。
【図４】図３の各ノード内のデータ流れを示したイメージ図である。
【図５】従来の一般的な共有メモリのアクセス方式を示すブロック図である。
【符号の説明】
【００２２】
１  ＣＰＵ−Ａ
２  ＣＰＵ−Ｂ
３  共有メモリ
４  共有メモリ調停機能
５  ＣＰＵ−Ａ側ＣＰＵバス
６  ＣＰＵ−Ｂ側ＣＰＵバス
７  書込み要否判定機能
８  書込み要否判定機能用ローカルバッファ
９  共有メモリ書込み用バス
１０  読出し要否判定機能
１１  読出し要否判定機能用ローカルバッファ
１２  共有メモリ読出し用バス
１３  付加レジスタ
【図１】
2007279884.tif 000003
【図２】
2007279884.tif 000004
【図３】
2007279884.tif 000005
【図４】
2007279884.tif 000006
【図５】
2007279884.tif 000007