説明

電子機器

【課題】複数のCPU間で効率よくデータ授受を行うことができる電子機器を提供すること。
【解決手段】共有メモリを介して複数のCPU間でデータの授受を行うように構成された電子機器において、前記共有メモリには、
前記授受されるデータを格納する唯一のFIFOと、前記FIFOのデータ格納位置情報とデータ取り出し位置情報と作業情報としてのデータ取り出し位置情報を含むFIFOの管理情報を格納するFIFO管理情報格納部と、前記データの処理を即座に実行できないときに当該データ処理を保留にするための保留要求管理情報を格納する保留要求管理情報格納部が設けられていることを特徴とするもの。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子機器に関し、詳しくは、共有メモリを介して複数のCPU間でデータの授受を行うように構成された電子機器におけるCPUの負荷軽減に関するものである。
【背景技術】
【0002】
たとえば、生産制御システムを構築するフィールド制御部では、プロセス信号の制御演算を行うCPUモジュールとして、共有メモリを介して複数のCPU間でデータの授受を行うように構成されたものが用いられている。
【0003】
図6は、従来から用いられているこのようなCPUモジュールの一例を示すブロック図である。図6において、CPU1とCPU2は、並列に設けられたRead/Write可能な複数n個のFIFOとFIFO管理情報格納部MIMが設けられた共有メモリSMを介して相互に接続されている。
【0004】
CPU1とCPU2の間でデータの授受を行うのにあたっては、たとえばCPU1は、複数n個のFIFOのうち、任意の1つのFIFOに手続きを依頼するための情報を備えた要求データを格納した後、FIFO管理情報格納部MIMにデータ格納位置(メモリ上のアドレス)を知らせるPUSHポインタを格納する。
【0005】
一方、CPU2は、FIFO管理情報格納部MIMのPUSHポインタとデータ取り出し位置を知らせるPOPポインタの差分を監視することにより、複数n個のFIFOのうち、どのFIFO内にデータが格納されたのかを検出できる。PUSHポインタはCPU1が新しくデータを書き込むためのアドレスを示し、POPポインタはCPU2が新しくデータを取得するためのアドレスを示している。
【0006】
CPU1がFIFOに新しくデータを書き込む際、書き込んだデータのサイズだけPUSHポインタを進めるので、現在のPOPポインタとの差分が生じる。一方、CPU2がFIFOからデータを取得する際は、書き込まれたデータサイズ分(PUSHポインタとPOPポインタの差分)だけデータを取得してPOPポインタを進めるので、その結果、当該FIFOの要求を全て処理した場合はPUSHとPOPが同じ値を示すことになる。
【0007】
ところで、図6の構成では、データ種別に応じて、複数n個のFIFOが設けられている。これは、CPU1からCPU2へ渡される要求は、CPU2が他の通信機器との間で通信するための情報を含んでいることに基づく。
【0008】
ここで、各通信機器には応答時間が遅いなどの固有の事情があるものの、効率的に複数の通信機器と通信する必要がある。そこで、図6に示す従来の構成では、複数の通信機器のそれぞれに対応した複数のFIFOを設けることで、ある通信機器の応答を待っている時間にも他の通信機器への通信が実行できるようにしている。すなわち、FIFO管理情報格納部MIMには主に通信先の情報が格納されており、通信先の情報をデータ種別として区別する。つまり、同一FIFOには同一通信先の要求だけが書き込まれるように区別される。
【0009】
特許文献1には、複数のCPUが設けられた電子機器の動作モードの切換方法が記載されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2004−295728号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかし、図6の構成によれば、データ授受のために複数n個のFIFOを設けていることから、CPU1は、要求種別に応じて複数n個のFIFOから最適なFIFOを選択しなければならない。
【0012】
そして、CPU2は、CPU1が選択したデータ授受に用いるただ1つの任意のFIFOを特定するために、存在する複数n個のFIFOすべてについてFIFO管理情報格納部MIMに格納されるPUSHポインタとPOPポインタの差分を監視する必要があり、FIFOの個数が増加するに伴いCPU2の処理負荷は増大することになる。
【0013】
本発明は、これらの問題を解決するものであり、その目的は、複数のCPU間で効率よくデータ授受を行うことができる電子機器を提供することにある。
【課題を解決するための手段】
【0014】
このような課題を達成するために、本発明のうち請求項1記載の発明は、
共有メモリを介して複数のCPU間でデータの授受を行うように構成された電子機器において、
前記共有メモリには、
前記授受されるデータを格納する唯一のFIFOと、
前記FIFOのデータ格納位置情報とデータ取り出し位置情報と作業情報としてのデータ取り出し位置情報を含むFIFOの管理情報を格納するFIFO管理情報格納部と、
前記データの処理を即座に実行できないときに当該データ処理を保留にするための保留要求管理情報を格納する保留要求管理情報格納部が設けられていることを特徴とする。
【0015】
請求項2記載の発明は、請求項1に記載の電子機器において、
前記データ送信側のCPUは、前記FIFOに送信すべきデータを格納するとともに前記FIFO管理情報格納部に前記FIFOのデータ格納位置情報を格納し、
前記データ受信側のCPUは、前記FIFO管理情報格納部に格納されたデータ格納位置情報とデータ取り出し位置情報との差分を検出することにより前記FIFOに送信すべきデータが格納されたと判断することを特徴とする。
【0016】
請求項3記載の発明は、請求項1または請求項2に記載の電子機器において、
前記保留要求管理情報格納部には、前記授受されるデータの種別に、ROOTポインタとCURRENTポインタが格納されることを特徴とする。
【発明の効果】
【0017】
これらにより、複数のCPU間で効率よくデータ授受が行える。
【図面の簡単な説明】
【0018】
【図1】本発明の一実施例を示すブロック図である。
【図2】図1におけるデータの格納および取り出し手順の説明図である。
【図3】図1における新規要求処理の流れを説明するフローチャートである。
【図4】図1におけるPOPポインタ更新処理の流れを説明するフローチャートである。
【図5】図1における保留要求処理の流れを説明するフローチャートである。
【図6】従来から用いられているCPUモジュールの一例を示すブロック図である。
【発明を実施するための形態】
【0019】
以下、本発明について、図面を用いて詳細に説明する。図1は本発明の一実施例を示すブロック図である。
【0020】
図1において、共有メモリSMには、唯一のFIFOとFIFO管理情報格納部MIMと保留要求管理情報格納部HIMが設けられている。そして、FIFO管理情報格納部MIMには、PUSHポインタとPOPポインタとPOPイメージポインタの格納領域が設けられている。保留要求管理情報格納部HIMには、データの種別毎にROOTポインタとCURRENTポインタの格納領域が設けられている。
【0021】
図2は図1の構成におけるデータの格納および取り出し手順の説明図であり、FIFOのデータ構成例を示している。図2において、送信待ちを要求するデータ種別AにはポインタPTR3とPTR5が割り当てられ、データ種別Bの要求にはポインタPTR4とPTR6が割り当てられている。
【0022】
これらデータ種別に応じて割り当てられているポインタPTR3〜PTR6は、データの処理状況に応じて、図1の保留要求管理情報格納部HIMにおけるデータ種別毎のROOTポインタとCURRENTポインタの格納領域にそれぞれ格納される。この実施例では、種別AのROOTポインタにはポインタPTR3が格納されてCURRENTポインタにはポインタPTR5が格納され、種別BのROOTポインタにはポインタPTR4が格納されてCURRENTポインタにはポインタPTR6が格納されている。
【0023】
図3は新規要求処理の流れを説明するフローチャートである。CPU1は、FIFOにデータ授受の手続きを依頼するための情報を備えた要求データを格納した後、FIFO管理情報格納部MIMにデータを格納するためのメモリ上のアドレスを知らせるPUSHポインタを格納する。
【0024】
このとき、CPU2は、FIFO管理情報格納部MIMのPUSHポインタとデータ取り出し位置を知らせるPOPイメージポインタの差分を監視しており、差分が検出された場合にはFIFO内にデータが格納されたと判断して(ステップS1)、以下に説明する一連の処理を実行するが、差分が検出されなかった場合にはそのまま新規要求処理を終了する。
【0025】
CPU2は、FIFOに格納されたデータをPOPイメージポインタの位置から取り出し(ステップS2)、即座にデータの処理が可能か否かを試みる(ステップS3)。データ処理が即座に可能な場合には処理を実行し(ステップS4)、完了後にFIFO管理情報格納部MIMのPOPイメージポインタを作業情報としてデータサイズだけ進めて更新し(ステップS5)、さらにPOPポインタも更新して(ステップS6)、一連の新規要求処理を終了する。
【0026】
一方、ステップS3においてデータを即座に処理することが不可能な場合には、以下のように当該データ処理を保留にする。すなわち、そのデータ種別が新規データか否かを判断し(ステップS7)、新規データの場合にはFIFO管理情報格納部MIMのPOPイメージポインタの値をROOTポインタおよびCURRENTポインタとして登録した後(ステップS8)、ステップS5に遷移する。
【0027】
これに対し、新規データではない場合には、そのデータ種別のCURRENTポインタが指すデータ位置にNEXTポインタとしてFIFO管理情報格納部MIMのPOPイメージポインタの値を登録し(ステップS9)、そのPOPイメージポインタの値をCURRENTポインタに登録した後(ステップS10)、ステップS5に遷移する。
【0028】
処理が保留されるデータの種別について、ROOTポインタおよびCURRENTポインタが未登録の新規の場合には、同時に、保留要求管理情報格納部HIMに現在のPOPイメージポインタが指すデータ格納位置をROOTポインタおよびCURRENTポインタとして登録する。
【0029】
ここで、ROOTポインタは、保留中のデータを辿るためのROOT位置情報としてデータ種別毎に複数個に分けて登録される。CURRENTポインタは、ROOTポインタを起点とした現在位置を示すためのCURRENT位置情報として登録され、同様にデータ種別毎に複数個に分けて登録される。
【0030】
一方、新規に保留されるデータではない場合には、当該データ種別のCURRENTポインタが指し示すデータとして、POPイメージポインタの値をNEXTポインタとして格納する。NEXTポインタは保留中のデータを紐付けるためのポインタ情報であり、紐付けられた保留中のデータは、ROOTポインタからNEXTポインタ経由でアクセスすることで、保留中のデータを辿ることが可能になる。
【0031】
図4は、POPポインタ更新処理の流れを説明するフローチャートである。POPポインタの更新にあたっては、POPポインタが指し示すデータのデータ種別に登録されたROOTポインタがクリアされているか否かを判断し(ステップS1)、ROOTポインタがクリアされている場合には、そのデータサイズだけPOPポインタを更新して(ステップS2)、POPポインタ更新処理を終了する。ROOTポインタがクリアされていない場合には、そのままPOPポインタ更新処理を終了する。以降、CPU2は、POPイメージポインタもしくはPOPポインタを更新しながら、継続してFIFOからデータの取り出しを試みる。
【0032】
図5は、図3の新規要求処理で設定された保留要求を処理するための流れを説明するフローチャートである。CPU2は、図1の保留要求管理情報格納部HIMにおけるデータ種別毎のROOTポインタがクリアされていないか否かに基づき、保留要求データの有無を判断する(ステップS1)。
【0033】
保留要求が存在する場合、ROOTポインタが指し示す位置から保留中のデータを取り出し(ステップS2)、データ処理が即座に可能か否かを判断して(ステップS3)、即座にデータ処理が可能な場合にはそのデータ処理を実行する(ステップS4)。
【0034】
続いて、当該データにNEXTポインタが登録されているか否かを判断し(ステップS5)、NEXTポインタが登録されている場合にはデータに登録されたNEXTポインタがCURRENTポインタと等しいか否かを判断する(ステップS6)。
【0035】
ここで、データに登録されたNEXTポインタがCURRENTポインタと等しい場合とは当該データ種別で保留中の要求はROOTデータのみの場合であり、この場合にはCURRENTポインタをクリアする(ステップS7)。そして、データに登録されたNEXTポインタを新たなROOTポインタとして登録する(ステップS8)。
【0036】
このような一連の保留要求処理ステップを複数回呼び出して繰り返した後、POPポインタとROOTポインタが等しいか否かを判断する(ステップS9)。POPポインタとROOTポインタが等しくなった場合は当該データ種別の保留中の要求は全て処理されたと判断してROOTポインタをクリアし(ステップS10)、図4に示したPOPポインタ更新処理を実行して(ステップS11)、一連の保留データ処理を終了する。
【0037】
ステップS1において、保留要求データがない場合には、そのまま保留データ処理を終了する。
【0038】
ステップS3において、データ処理が即座に実行できない場合には、そのまま保留データ処理を終了する。
【0039】
ステップS5において、NEXTポインタが登録されていない場合には、ステップS9に遷移する。
【0040】
ステップS6において、データに登録されたNEXTポインタがCURRENTポインタと等しくない場合には、ステップS8に遷移する。
【0041】
そして、ステップS9において、POPポインタとROOTポインタが等しくない場合には、ステップS11に遷移する。
【0042】
CPU1とCPU2の間におけるデータ授受を並列して処理するのにあたり、従来の構成では共有メモリ上にデータ種別の要求に応じた複数個のFIFOを必要としていたが、本発明ではFIFOをただ1個にまとめて管理することができ、各CPUはデータ種別とは無関係に、このFIFOを経由したデータ授受を容易に行うことができる。
【0043】
また、各CPUは、唯一のFIFOを監視するだけで複数種別のデータを授受でき、従来のような複数個のFIFO全体を常時監視し続ける処理から開放され、各CPUの負荷を削減できる。
【0044】
さらに、一度保留としたデータの処理タイミングを常時監視する必要はなく、たとえば当該要求が処理可能と判断される処理可能通知などのイベントをきっかけとして対象となる保留データの処理を実行すればよいため、各CPUの負荷を削減しながらも、複数の要求を並列に実行することが可能となる。
【0045】
これらの説明を、以下のようにまとめることができる。
(1)複数のCPUが相互にRead/Write可能な共有メモリ上に、ただ1つの要求FIFOとFIFO管理情報および保留要求管理情報を備え、前記共有メモリを介し、複数のCPUがデータの授受を行うことを特徴とする電子機器。
【0046】
(2)複数のCPU間でデータの授受を行うのにあたり、データ受け渡し側は、前記要求FIFOにデータを格納し、前記FIFO管理情報にデータ格納位置(メモリ上のアドレス)を知らせるPUSHポインタを格納し、データ受け取り側は前記FIFO管理情報のPUSHポインタと、データ取り出し位置を知らせるPOPポインタの差分を監視することで、前記要求FIFO内にデータが格納されたと判断し、データを前記要求FIFOから取り出しデータの処理を試みることを特徴とする(1)に記載の電子機器。
【0047】
(3)前記データが即座に処理することが不可能な場合には、当該データ処理を保留にすることを特徴とする(2)に記載の電子機器。
【0048】
(4)前記データのデータ種別で新規に保留されるデータの場合、前記保留要求管理情報に作業情報としてのPOPイメージポインタが指すデータ格納位置をROOTポインタおよびCURRENTポインタとして、前記データ種別毎に複数個に分けて登録することで、保留中の要求の起点を格納することを特徴とする(3)に記載の電子機器。
【0049】
(5)前記データ種別が新規に保留されるデータではない場合、当該データ種別の前記CURRENTポインタが指し示すデータに前記POPイメージポインタの値をNEXTポインタとして格納することで、紐付けられた保留中のデータを前記ROOTポインタから前記NEXTポインタ経由でアクセスすることが可能となることを特徴とする前記(4)に記載の電子機器。
【0050】
(6)前記データ受け取り側は、前記保留要求管理情報の各データ種別における前記ROOTポインタが指し示す保留中のデータが処理可能か否かを監視し、当該データが即座に処理可能な場合は、処理実行後に、当該データに付与された前記NEXTポインタが存在する場合に、現在のROOTポインタとして各データ種別毎に格納することを特徴とする(5)に記載の電子機器。
【0051】
(7)前記データ受け取り側は、前記POPポインタがROOTポインタと等しい場合、保留中のデータ処理完了後にROOTポインタをクリアすることを特徴とする(6)に記載の電子機器。
【0052】
以上説明したように、本発明によれば、複数のCPU間で効率よくデータ授受を行うことができる電子機器が実現できる。
【符号の説明】
【0053】
SM 共有メモリ
MIM FIFO管理情報格納部
HIM 保留要求管理情報格納部

【特許請求の範囲】
【請求項1】
共有メモリを介して複数のCPU間でデータの授受を行うように構成された電子機器において、
前記共有メモリには、
前記授受されるデータを格納する唯一のFIFOと、
前記FIFOのデータ格納位置情報とデータ取り出し位置情報と作業情報としてのデータ取り出し位置情報を含むFIFOの管理情報を格納するFIFO管理情報格納部と、
前記データの処理を即座に実行できないときに当該データ処理を保留にするための保留要求管理情報を格納する保留要求管理情報格納部が設けられていることを特徴とする電子機器。
【請求項2】
前記データ送信側のCPUは、前記FIFOに送信すべきデータを格納するとともに前記FIFO管理情報格納部に前記FIFOのデータ格納位置情報を格納し、
前記データ受信側のCPUは、前記FIFO管理情報格納部に格納されたデータ格納位置情報とデータ取り出し位置情報との差分を検出することにより前記FIFOに送信すべきデータが格納されたと判断することを特徴とする請求項1に記載の電子機器。
【請求項3】
前記保留要求管理情報格納部には、前記授受されるデータの種別に、ROOTポインタとCURRENTポインタが格納されることを特徴とする請求項1または請求項2に記載の電子機器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−38187(P2012−38187A)
【公開日】平成24年2月23日(2012.2.23)
【国際特許分類】
【出願番号】特願2010−179267(P2010−179267)
【出願日】平成22年8月10日(2010.8.10)
【出願人】(000006507)横河電機株式会社 (4,443)
【Fターム(参考)】