(57)【要約】【課題】複数のＣＰＵ間で効率よくデータ授受を行うことができる電子機器を提供すること。【解決手段】共有メモリを介して複数のＣＰＵ間でデータの授受を行うように構成された電子機器において、前記共有メモリには、  前記授受されるデータを格納する唯一のＦＩＦＯと、前記ＦＩＦＯのデータ格納位置情報とデータ取り出し位置情報と作業情報としてのデータ取り出し位置情報を含むＦＩＦＯの管理情報を格納するＦＩＦＯ管理情報格納部と、前記データの処理を即座に実行できないときに当該データ処理を保留にするための保留要求管理情報を格納する保留要求管理情報格納部が設けられていることを特徴とするもの。【選択図】図１
2012038187.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリを介して複数のＣＰＵ間でデータの授受を行うように構成された電子機器において、
前記共有メモリには、
前記授受されるデータを格納する唯一のＦＩＦＯと、
前記ＦＩＦＯのデータ格納位置情報とデータ取り出し位置情報と作業情報としてのデータ取り出し位置情報を含むＦＩＦＯの管理情報を格納するＦＩＦＯ管理情報格納部と、
前記データの処理を即座に実行できないときに当該データ処理を保留にするための保留要求管理情報を格納する保留要求管理情報格納部が設けられていることを特徴とする電子機器。
【請求項２】
前記データ送信側のＣＰＵは、前記ＦＩＦＯに送信すべきデータを格納するとともに前記ＦＩＦＯ管理情報格納部に前記ＦＩＦＯのデータ格納位置情報を格納し、
前記データ受信側のＣＰＵは、前記ＦＩＦＯ管理情報格納部に格納されたデータ格納位置情報とデータ取り出し位置情報との差分を検出することにより前記ＦＩＦＯに送信すべきデータが格納されたと判断することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記保留要求管理情報格納部には、前記授受されるデータの種別に、ＲＯＯＴポインタとＣＵＲＲＥＮＴポインタが格納されることを特徴とする請求項１または請求項２に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器に関し、詳しくは、共有メモリを介して複数のＣＰＵ間でデータの授受を行うように構成された電子機器におけるＣＰＵの負荷軽減に関するものである。
【背景技術】
【０００２】
たとえば、生産制御システムを構築するフィールド制御部では、プロセス信号の制御演算を行うＣＰＵモジュールとして、共有メモリを介して複数のＣＰＵ間でデータの授受を行うように構成されたものが用いられている。
【０００３】
図６は、従来から用いられているこのようなＣＰＵモジュールの一例を示すブロック図である。図６において、ＣＰＵ１とＣＰＵ２は、並列に設けられたＲｅａｄ／Ｗｒｉｔｅ可能な複数ｎ個のＦＩＦＯとＦＩＦＯ管理情報格納部ＭＩＭが設けられた共有メモリＳＭを介して相互に接続されている。
【０００４】
ＣＰＵ１とＣＰＵ２の間でデータの授受を行うのにあたっては、たとえばＣＰＵ１は、複数ｎ個のＦＩＦＯのうち、任意の１つのＦＩＦＯに手続きを依頼するための情報を備えた要求データを格納した後、ＦＩＦＯ管理情報格納部ＭＩＭにデータ格納位置（メモリ上のアドレス）を知らせるＰＵＳＨポインタを格納する。
【０００５】
一方、ＣＰＵ２は、ＦＩＦＯ管理情報格納部ＭＩＭのＰＵＳＨポインタとデータ取り出し位置を知らせるＰＯＰポインタの差分を監視することにより、複数ｎ個のＦＩＦＯのうち、どのＦＩＦＯ内にデータが格納されたのかを検出できる。ＰＵＳＨポインタはＣＰＵ１が新しくデータを書き込むためのアドレスを示し、ＰＯＰポインタはＣＰＵ２が新しくデータを取得するためのアドレスを示している。
【０００６】
ＣＰＵ１がＦＩＦＯに新しくデータを書き込む際、書き込んだデータのサイズだけＰＵＳＨポインタを進めるので、現在のＰＯＰポインタとの差分が生じる。一方、ＣＰＵ２がＦＩＦＯからデータを取得する際は、書き込まれたデータサイズ分（ＰＵＳＨポインタとＰＯＰポインタの差分）だけデータを取得してＰＯＰポインタを進めるので、その結果、当該ＦＩＦＯの要求を全て処理した場合はＰＵＳＨとＰＯＰが同じ値を示すことになる。
【０００７】
ところで、図６の構成では、データ種別に応じて、複数ｎ個のＦＩＦＯが設けられている。これは、ＣＰＵ１からＣＰＵ２へ渡される要求は、ＣＰＵ２が他の通信機器との間で通信するための情報を含んでいることに基づく。
【０００８】
ここで、各通信機器には応答時間が遅いなどの固有の事情があるものの、効率的に複数の通信機器と通信する必要がある。そこで、図６に示す従来の構成では、複数の通信機器のそれぞれに対応した複数のＦＩＦＯを設けることで、ある通信機器の応答を待っている時間にも他の通信機器への通信が実行できるようにしている。すなわち、ＦＩＦＯ管理情報格納部ＭＩＭには主に通信先の情報が格納されており、通信先の情報をデータ種別として区別する。つまり、同一ＦＩＦＯには同一通信先の要求だけが書き込まれるように区別される。
【０００９】
特許文献１には、複数のＣＰＵが設けられた電子機器の動作モードの切換方法が記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−２９５７２８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、図６の構成によれば、データ授受のために複数ｎ個のＦＩＦＯを設けていることから、ＣＰＵ１は、要求種別に応じて複数ｎ個のＦＩＦＯから最適なＦＩＦＯを選択しなければならない。
【００１２】
そして、ＣＰＵ２は、ＣＰＵ１が選択したデータ授受に用いるただ１つの任意のＦＩＦＯを特定するために、存在する複数ｎ個のＦＩＦＯすべてについてＦＩＦＯ管理情報格納部ＭＩＭに格納されるＰＵＳＨポインタとＰＯＰポインタの差分を監視する必要があり、ＦＩＦＯの個数が増加するに伴いＣＰＵ２の処理負荷は増大することになる。
【００１３】
本発明は、これらの問題を解決するものであり、その目的は、複数のＣＰＵ間で効率よくデータ授受を行うことができる電子機器を提供することにある。
【課題を解決するための手段】
【００１４】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
共有メモリを介して複数のＣＰＵ間でデータの授受を行うように構成された電子機器において、
前記共有メモリには、
前記授受されるデータを格納する唯一のＦＩＦＯと、
前記ＦＩＦＯのデータ格納位置情報とデータ取り出し位置情報と作業情報としてのデータ取り出し位置情報を含むＦＩＦＯの管理情報を格納するＦＩＦＯ管理情報格納部と、
前記データの処理を即座に実行できないときに当該データ処理を保留にするための保留要求管理情報を格納する保留要求管理情報格納部が設けられていることを特徴とする。
【００１５】
請求項２記載の発明は、請求項１に記載の電子機器において、
前記データ送信側のＣＰＵは、前記ＦＩＦＯに送信すべきデータを格納するとともに前記ＦＩＦＯ管理情報格納部に前記ＦＩＦＯのデータ格納位置情報を格納し、
前記データ受信側のＣＰＵは、前記ＦＩＦＯ管理情報格納部に格納されたデータ格納位置情報とデータ取り出し位置情報との差分を検出することにより前記ＦＩＦＯに送信すべきデータが格納されたと判断することを特徴とする。
【００１６】
請求項３記載の発明は、請求項１または請求項２に記載の電子機器において、
前記保留要求管理情報格納部には、前記授受されるデータの種別に、ＲＯＯＴポインタとＣＵＲＲＥＮＴポインタが格納されることを特徴とする。
【発明の効果】
【００１７】
これらにより、複数のＣＰＵ間で効率よくデータ授受が行える。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施例を示すブロック図である。
【図２】図１におけるデータの格納および取り出し手順の説明図である。
【図３】図１における新規要求処理の流れを説明するフローチャートである。
【図４】図１におけるＰＯＰポインタ更新処理の流れを説明するフローチャートである。
【図５】図１における保留要求処理の流れを説明するフローチャートである。
【図６】従来から用いられているＣＰＵモジュールの一例を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本発明について、図面を用いて詳細に説明する。図１は本発明の一実施例を示すブロック図である。
【００２０】
図１において、共有メモリＳＭには、唯一のＦＩＦＯとＦＩＦＯ管理情報格納部ＭＩＭと保留要求管理情報格納部ＨＩＭが設けられている。そして、ＦＩＦＯ管理情報格納部ＭＩＭには、ＰＵＳＨポインタとＰＯＰポインタとＰＯＰイメージポインタの格納領域が設けられている。保留要求管理情報格納部ＨＩＭには、データの種別毎にＲＯＯＴポインタとＣＵＲＲＥＮＴポインタの格納領域が設けられている。
【００２１】
図２は図１の構成におけるデータの格納および取り出し手順の説明図であり、ＦＩＦＯのデータ構成例を示している。図２において、送信待ちを要求するデータ種別ＡにはポインタＰＴＲ３とＰＴＲ５が割り当てられ、データ種別Ｂの要求にはポインタＰＴＲ４とＰＴＲ６が割り当てられている。
【００２２】
これらデータ種別に応じて割り当てられているポインタＰＴＲ３〜ＰＴＲ６は、データの処理状況に応じて、図１の保留要求管理情報格納部ＨＩＭにおけるデータ種別毎のＲＯＯＴポインタとＣＵＲＲＥＮＴポインタの格納領域にそれぞれ格納される。この実施例では、種別ＡのＲＯＯＴポインタにはポインタＰＴＲ３が格納されてＣＵＲＲＥＮＴポインタにはポインタＰＴＲ５が格納され、種別ＢのＲＯＯＴポインタにはポインタＰＴＲ４が格納されてＣＵＲＲＥＮＴポインタにはポインタＰＴＲ６が格納されている。
【００２３】
図３は新規要求処理の流れを説明するフローチャートである。ＣＰＵ１は、ＦＩＦＯにデータ授受の手続きを依頼するための情報を備えた要求データを格納した後、ＦＩＦＯ管理情報格納部ＭＩＭにデータを格納するためのメモリ上のアドレスを知らせるＰＵＳＨポインタを格納する。
【００２４】
このとき、ＣＰＵ２は、ＦＩＦＯ管理情報格納部ＭＩＭのＰＵＳＨポインタとデータ取り出し位置を知らせるＰＯＰイメージポインタの差分を監視しており、差分が検出された場合にはＦＩＦＯ内にデータが格納されたと判断して（ステップＳ１）、以下に説明する一連の処理を実行するが、差分が検出されなかった場合にはそのまま新規要求処理を終了する。
【００２５】
ＣＰＵ２は、ＦＩＦＯに格納されたデータをＰＯＰイメージポインタの位置から取り出し（ステップＳ２）、即座にデータの処理が可能か否かを試みる（ステップＳ３）。データ処理が即座に可能な場合には処理を実行し（ステップＳ４）、完了後にＦＩＦＯ管理情報格納部ＭＩＭのＰＯＰイメージポインタを作業情報としてデータサイズだけ進めて更新し（ステップＳ５）、さらにＰＯＰポインタも更新して（ステップＳ６）、一連の新規要求処理を終了する。
【００２６】
一方、ステップＳ３においてデータを即座に処理することが不可能な場合には、以下のように当該データ処理を保留にする。すなわち、そのデータ種別が新規データか否かを判断し（ステップＳ７）、新規データの場合にはＦＩＦＯ管理情報格納部ＭＩＭのＰＯＰイメージポインタの値をＲＯＯＴポインタおよびＣＵＲＲＥＮＴポインタとして登録した後（ステップＳ８）、ステップＳ５に遷移する。
【００２７】
これに対し、新規データではない場合には、そのデータ種別のＣＵＲＲＥＮＴポインタが指すデータ位置にＮＥＸＴポインタとしてＦＩＦＯ管理情報格納部ＭＩＭのＰＯＰイメージポインタの値を登録し（ステップＳ９）、そのＰＯＰイメージポインタの値をＣＵＲＲＥＮＴポインタに登録した後（ステップＳ１０）、ステップＳ５に遷移する。
【００２８】
処理が保留されるデータの種別について、ＲＯＯＴポインタおよびＣＵＲＲＥＮＴポインタが未登録の新規の場合には、同時に、保留要求管理情報格納部ＨＩＭに現在のＰＯＰイメージポインタが指すデータ格納位置をＲＯＯＴポインタおよびＣＵＲＲＥＮＴポインタとして登録する。
【００２９】
ここで、ＲＯＯＴポインタは、保留中のデータを辿るためのＲＯＯＴ位置情報としてデータ種別毎に複数個に分けて登録される。ＣＵＲＲＥＮＴポインタは、ＲＯＯＴポインタを起点とした現在位置を示すためのＣＵＲＲＥＮＴ位置情報として登録され、同様にデータ種別毎に複数個に分けて登録される。
【００３０】
一方、新規に保留されるデータではない場合には、当該データ種別のＣＵＲＲＥＮＴポインタが指し示すデータとして、ＰＯＰイメージポインタの値をＮＥＸＴポインタとして格納する。ＮＥＸＴポインタは保留中のデータを紐付けるためのポインタ情報であり、紐付けられた保留中のデータは、ＲＯＯＴポインタからＮＥＸＴポインタ経由でアクセスすることで、保留中のデータを辿ることが可能になる。
【００３１】
図４は、ＰＯＰポインタ更新処理の流れを説明するフローチャートである。ＰＯＰポインタの更新にあたっては、ＰＯＰポインタが指し示すデータのデータ種別に登録されたＲＯＯＴポインタがクリアされているか否かを判断し（ステップＳ１）、ＲＯＯＴポインタがクリアされている場合には、そのデータサイズだけＰＯＰポインタを更新して（ステップＳ２）、ＰＯＰポインタ更新処理を終了する。ＲＯＯＴポインタがクリアされていない場合には、そのままＰＯＰポインタ更新処理を終了する。以降、ＣＰＵ２は、ＰＯＰイメージポインタもしくはＰＯＰポインタを更新しながら、継続してＦＩＦＯからデータの取り出しを試みる。
【００３２】
図５は、図３の新規要求処理で設定された保留要求を処理するための流れを説明するフローチャートである。ＣＰＵ２は、図１の保留要求管理情報格納部ＨＩＭにおけるデータ種別毎のＲＯＯＴポインタがクリアされていないか否かに基づき、保留要求データの有無を判断する（ステップＳ１）。
【００３３】
保留要求が存在する場合、ＲＯＯＴポインタが指し示す位置から保留中のデータを取り出し（ステップＳ２）、データ処理が即座に可能か否かを判断して（ステップＳ３）、即座にデータ処理が可能な場合にはそのデータ処理を実行する（ステップＳ４）。
【００３４】
続いて、当該データにＮＥＸＴポインタが登録されているか否かを判断し（ステップＳ５）、ＮＥＸＴポインタが登録されている場合にはデータに登録されたＮＥＸＴポインタがＣＵＲＲＥＮＴポインタと等しいか否かを判断する（ステップＳ６）。
【００３５】
ここで、データに登録されたＮＥＸＴポインタがＣＵＲＲＥＮＴポインタと等しい場合とは当該データ種別で保留中の要求はＲＯＯＴデータのみの場合であり、この場合にはＣＵＲＲＥＮＴポインタをクリアする（ステップＳ７）。そして、データに登録されたＮＥＸＴポインタを新たなＲＯＯＴポインタとして登録する（ステップＳ８）。
【００３６】
このような一連の保留要求処理ステップを複数回呼び出して繰り返した後、ＰＯＰポインタとＲＯＯＴポインタが等しいか否かを判断する（ステップＳ９）。ＰＯＰポインタとＲＯＯＴポインタが等しくなった場合は当該データ種別の保留中の要求は全て処理されたと判断してＲＯＯＴポインタをクリアし（ステップＳ１０）、図４に示したＰＯＰポインタ更新処理を実行して（ステップＳ１１）、一連の保留データ処理を終了する。
【００３７】
ステップＳ１において、保留要求データがない場合には、そのまま保留データ処理を終了する。
【００３８】
ステップＳ３において、データ処理が即座に実行できない場合には、そのまま保留データ処理を終了する。
【００３９】
ステップＳ５において、ＮＥＸＴポインタが登録されていない場合には、ステップＳ９に遷移する。
【００４０】
ステップＳ６において、データに登録されたＮＥＸＴポインタがＣＵＲＲＥＮＴポインタと等しくない場合には、ステップＳ８に遷移する。
【００４１】
そして、ステップＳ９において、ＰＯＰポインタとＲＯＯＴポインタが等しくない場合には、ステップＳ１１に遷移する。
【００４２】
ＣＰＵ１とＣＰＵ２の間におけるデータ授受を並列して処理するのにあたり、従来の構成では共有メモリ上にデータ種別の要求に応じた複数個のＦＩＦＯを必要としていたが、本発明ではＦＩＦＯをただ１個にまとめて管理することができ、各ＣＰＵはデータ種別とは無関係に、このＦＩＦＯを経由したデータ授受を容易に行うことができる。
【００４３】
また、各ＣＰＵは、唯一のＦＩＦＯを監視するだけで複数種別のデータを授受でき、従来のような複数個のＦＩＦＯ全体を常時監視し続ける処理から開放され、各ＣＰＵの負荷を削減できる。
【００４４】
さらに、一度保留としたデータの処理タイミングを常時監視する必要はなく、たとえば当該要求が処理可能と判断される処理可能通知などのイベントをきっかけとして対象となる保留データの処理を実行すればよいため、各ＣＰＵの負荷を削減しながらも、複数の要求を並列に実行することが可能となる。
【００４５】
これらの説明を、以下のようにまとめることができる。
（１）複数のＣＰＵが相互にＲｅａｄ／Ｗｒｉｔｅ可能な共有メモリ上に、ただ１つの要求ＦＩＦＯとＦＩＦＯ管理情報および保留要求管理情報を備え、前記共有メモリを介し、複数のＣＰＵがデータの授受を行うことを特徴とする電子機器。
【００４６】
（２）複数のＣＰＵ間でデータの授受を行うのにあたり、データ受け渡し側は、前記要求ＦＩＦＯにデータを格納し、前記ＦＩＦＯ管理情報にデータ格納位置（メモリ上のアドレス）を知らせるＰＵＳＨポインタを格納し、データ受け取り側は前記ＦＩＦＯ管理情報のＰＵＳＨポインタと、データ取り出し位置を知らせるＰＯＰポインタの差分を監視することで、前記要求ＦＩＦＯ内にデータが格納されたと判断し、データを前記要求ＦＩＦＯから取り出しデータの処理を試みることを特徴とする（１）に記載の電子機器。
【００４７】
（３）前記データが即座に処理することが不可能な場合には、当該データ処理を保留にすることを特徴とする（２）に記載の電子機器。
【００４８】
（４）前記データのデータ種別で新規に保留されるデータの場合、前記保留要求管理情報に作業情報としてのＰＯＰイメージポインタが指すデータ格納位置をＲＯＯＴポインタおよびＣＵＲＲＥＮＴポインタとして、前記データ種別毎に複数個に分けて登録することで、保留中の要求の起点を格納することを特徴とする（３）に記載の電子機器。
【００４９】
（５）前記データ種別が新規に保留されるデータではない場合、当該データ種別の前記ＣＵＲＲＥＮＴポインタが指し示すデータに前記ＰＯＰイメージポインタの値をＮＥＸＴポインタとして格納することで、紐付けられた保留中のデータを前記ＲＯＯＴポインタから前記ＮＥＸＴポインタ経由でアクセスすることが可能となることを特徴とする前記（４）に記載の電子機器。
【００５０】
（６）前記データ受け取り側は、前記保留要求管理情報の各データ種別における前記ＲＯＯＴポインタが指し示す保留中のデータが処理可能か否かを監視し、当該データが即座に処理可能な場合は、処理実行後に、当該データに付与された前記ＮＥＸＴポインタが存在する場合に、現在のＲＯＯＴポインタとして各データ種別毎に格納することを特徴とする（５）に記載の電子機器。
【００５１】
（７）前記データ受け取り側は、前記ＰＯＰポインタがＲＯＯＴポインタと等しい場合、保留中のデータ処理完了後にＲＯＯＴポインタをクリアすることを特徴とする（６）に記載の電子機器。
【００５２】
以上説明したように、本発明によれば、複数のＣＰＵ間で効率よくデータ授受を行うことができる電子機器が実現できる。
【符号の説明】
【００５３】
ＳＭ  共有メモリ
ＭＩＭ  ＦＩＦＯ管理情報格納部
ＨＩＭ  保留要求管理情報格納部
【図１】
2012038187.tif 000003
【図２】
2012038187.tif 000004
【図３】
2012038187.tif 000005
【図４】
2012038187.tif 000006
【図５】
2012038187.tif 000007
【図６】
2012038187.tif 000008