IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社明電舎の特許一覧

特開2022-191585共有メモリを用いた処理システム、共有メモリを用いた処理方法
<>
  • 特開-共有メモリを用いた処理システム、共有メモリを用いた処理方法 図1
  • 特開-共有メモリを用いた処理システム、共有メモリを用いた処理方法 図2
  • 特開-共有メモリを用いた処理システム、共有メモリを用いた処理方法 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022191585
(43)【公開日】2022-12-28
(54)【発明の名称】共有メモリを用いた処理システム、共有メモリを用いた処理方法
(51)【国際特許分類】
   G06F 15/167 20060101AFI20221221BHJP
   G06F 9/54 20060101ALI20221221BHJP
   G06F 9/48 20060101ALI20221221BHJP
【FI】
G06F15/167 610G
G06F9/54 A
G06F9/48 370
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021099886
(22)【出願日】2021-06-16
(71)【出願人】
【識別番号】000006105
【氏名又は名称】株式会社明電舎
(74)【代理人】
【識別番号】100086232
【弁理士】
【氏名又は名称】小林 博通
(74)【代理人】
【識別番号】100092613
【弁理士】
【氏名又は名称】富岡 潔
(74)【代理人】
【識別番号】100104938
【弁理士】
【氏名又は名称】鵜澤 英久
(74)【代理人】
【識別番号】100210240
【弁理士】
【氏名又は名称】太田 友幸
(72)【発明者】
【氏名】大石 秀雄
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB32
5B045BB44
5B045CC07
(57)【要約】      (修正有)
【課題】ハードウェアでのビジー制御が行われない環境下において、複数ノード間における処理の要求・応答を共有メモリ経由で取りこぼしなく実行する処理システム及び処理方法を提供する。
【解決手段】共有メモリを用いた処理システム10において、コモンRAM3は、データ要求側のCPU1が「55H」をライトするデータ要求フラグ1、2と、応答側のCPU2が「EEH」をライトするデータ応答フラグ1、2とを有している。CPU1はデータ要求フラグ1→2の順でライトし(S13、S14)、CPU2はデータ要求フラグ2→1の順でリードする(S15、S16)。また、CPU2はデータ応答フラグ1→2の順でライトし(S20、S21)、CPU1はデータ応答フラグ2→1の順でリードする(S22、S23)。
【選択図】図3
【特許請求の範囲】
【請求項1】
複数ノード間における処理の要求・応答を共有メモリ経由で実行するシステムであって、
前記共有メモリは、前記処理の要求側が前記要求をライトする複数の要求フラグと、
前記処理の応答側が前記応答をライトする複数の応答フラグと、
を有し、
前記応答側は、いずれかの要求フラグの前記要求をリードすれば、要求内容を前記共有メモリにセットする一方、
前記要求側は、いずれかの応答フラグの前記応答をリードすれば、前記要求内容を前記共有メモリから取得する
ことを特徴とする共有メモリを用いた処理システム。
【請求項2】
前記要求側の前記要求フラグ群へのライト順と、
前記応答側の前記要求フラグ群のリード順と、
が逆であることを特徴とする請求項1記載の共有メモリを用いた処理システム。
【請求項3】
前記応答側の前記応答フラグ群へのライト順と、
前記要求側の前記応答フラグ群のリード順と、
が逆であることを特徴とする請求項1または2記載の共有メモリを用いた処理システム。
【請求項4】
前記要求側は、前記要求フラグ群の順に応じてライトする一方、
前記応答側は、前記要求側のライトと逆の順に前記要求フラグ群をリードする
ことを特徴とする請求項2記載の共有メモリを用いた処理システム。
【請求項5】
前記応答側は、前記応答フラグの順に応じてライトする一方、
前記要求側は、前記応答側のライトと逆の順に前記応答フラグをリードする
ことを特徴とする請求項3記載の共有メモリを用いた処理システム。
【請求項6】
前記要求側は、前記各要求フラグにライトするごとに前記応答側に通知する一方、
前記応答側は、前記各応答フラグにライトするごとに前記要求内容を前記共有メモリにセットして前記要求側に通知する
ことを特徴とする請求項1~5のいずれかに記載の共有メモリを用いた処理システム。
【請求項7】
複数ノード間における処理の要求・応答を共有メモリ経由で実行する方法であって、
前記処理の要求側が、前記要求を複数の要求ライトするステップと、
前記処理の応答側が、前記応答を複数の応答フラグにライトするステップと、
前記応答側が、いずれかの要求フラグの前記要求をリードすれば要求内容を前記共有メモリにセットするステップと、
前記要求側が、いずれかの応答フラグの前記応答をリードすれば前記要求内容を前記共有メモリから取得するステップと、
を有することを特徴とする共有メモリを用いた処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のノード(装置・機器等)間における処理の要求・応答を共有メモリ経由で実行する技術に関する。
【背景技術】
【0002】
複数ノードのそれぞれのCPUで一つの共有メモリを用いてデッドロックなくメモリアクセスできるようにする技術として、特許文献1が公知となっている。
【0003】
例えば「FL-net」などでは、図1に示すように、各ノードのCPU1,2からそれぞれアクセス可能なコモンRAM3が共有メモリとして用いられている。
【0004】
すなわち、コモンRAM3は、例えば「FL-net」などに接続されたすべてのノード(装置,機器)のCPUが共通認識してアクセス可能なメモリブロック、即ちグローバルな共有メモリ空間と捉えられている。このときコモンRAM3は、CPU1,2間におけるデータ要求によるデータ受け渡しなどの処理の要求・応答に用いられる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平06-110848
【発明の概要】
【発明が解決しようとする課題】
【0006】
(1)前述のコモンRAM3は、ハードウェアでのビジー制御(CPU1,2でアクセスが重なってもリード・ライトできる機構)が行われているが、それがないとデータ受け渡しなどに問題が生じるおそれがある。
【0007】
すなわち、同じメモリアドレスへのCPUアクセスが重なった場合(同時アクセスの場合)、例えばCPU1でデータをライトしようとしてもライトできなく、CPU2で前記ライトされるべきデータをリードすることができなくなる。
【0008】
(2)図2に基づき詳細を説明する。ここではCPU1からCPU2へのデータ要求によるデータ受け渡しの手順を示している。なお、コモンRAM3は、初期化処理で「0」クリアされているものとする。
【0009】
S01,S02:処理が開始されるとCPU1は、CPU2にデータ要求する前にコモンRAM(バス幅:8ビット)3のデータ応答フラグ「アドレス:00000001H」をクリアしておく。具体的にはデータ応答フラグに「00H」をライトする(S01)。
【0010】
その後、CPU1は、データ要求フラグ「アドレス:00000000H」に「55H(データ要求)」をライトし、CPU2にデータ要求したことを通知する(S02)。
【0011】
S03,S04:CPU2はデータ要求フラグをポーリング待ちし(S03)、S02でライトされた「55H」をリードすれば受け渡しデータをコモンRAM3の「アドレス:00000100H~000001FFH」にセットする(S04)。
【0012】
S05,S06:CPU2は、データ要求フラグをクリアするため、そこに「00H」をライトする(S05)。その後にデータ応答フラグに「EEH(データ応答)」をライトし、受け渡しデータをセットしたことをCPU1に通知する(S06)。
【0013】
S07,S08:CPU1は、データ応答フラグをボーリング待ちし(S07)、S06でライトされた「EEH」があればコモンRAM3に受け渡しデータがセットされたことを認識する(S07)。その後、CPU1は、受け渡しデータを取り込んで処理を終了する(S08)。
【0014】
(3)しかしながら、S02でCPU1がデータ要求フラグに「55H」をライトするタイミングと、S03でCPU2がポーリングでリードするタイミングとが重なると、CPU1でデータ要求フラグに「55H」をライトできず、データ受け渡しに失敗する場合がある。
【0015】
また、S06でCPU2がデータ応答フラグに「EEH」をライトするタイミングと、S07でCPU1がポーリングでリードするタイミングとが重なると、CPU2でデータ応答フラグに「EEH」をライトできず、データ受け渡しが完了しない場合もある。
【0016】
本発明は、このような従来の問題を解決するためになされ、ハードウェアでのビジー制御が行われない環境下において、複数ノード間における処理の要求・応答を共有メモリ経由で取りこぼしなく実行することを解決課題としている。
【課題を解決するための手段】
【0017】
(1)本発明の一態様は、複数ノード間における処理の要求・応答を共有メモリ経由で実行するシステムであって、
前記共有メモリは、前記処理の要求側が前記要求をライトする複数の要求フラグと、
前記処理の応答側が前記応答をライトする複数の応答フラグと、
を有し、
前記応答側は、いずれかの要求フラグの前記要求をリードすれば、要求内容を前記共有メモリにセットする一方、
前記要求側は、いずれかの応答フラグの前記応答をリードすれば、前記要求内容を前記共有メモリから取得することを特徴としている。
【0018】
(2)本発明の他の態様は、複数ノード間における処理の要求・応答を共有メモリ経由で実行する方法であって、
前記処理の要求側が、前記要求を複数の要求ライトするステップと、
前記処理の応答側が、前記応答を複数の応答フラグにライトするステップと、
前記応答側が、いずれかの要求フラグの前記要求をリードすれば要求内容を前記共有メモリにセットするステップと、
前記要求側が、いずれかの応答フラグの前記応答をリードすれば前記要求内容を前記共有メモリから取得するステップと、
を有することを特徴としている。
【発明の効果】
【0019】
本発明によれば、ハードウェアでのビジー制御を行われていない環境下において、複数ノード間における処理の要求・応答を共有メモリ経由で取りこぼしなく実行することが可能になる。
【図面の簡単な説明】
【0020】
図1】各ノードのCPU間におけるコモンRAMを用いた処理方法の構成図。
図2】従来のコモンRAMを用いたCPU間のデータ受け渡しの手順を示す経過図。
図3】本発明の実施形態の共有メモリを用いたCPU間のデータ受け渡しの手順を示す経過図。
【発明を実施するための形態】
【0021】
図3に基づき本発明の実施形態に係る共有メモリを用いた処理システム10を説明する。ここでは図1および図2と同一の符号を用いる。
【0022】
前記システム10では、各ノードのCPU1,2からアクセス可能なコモンRAM3が共有メモリ空間として設けられている。ただし、ハードウェアによるビジー制御が行われない場合の対策、即ちソフトウェアによるビジー制御が施されている。
【0023】
すなわち、コモンRAM3は、CPU1,2間における処理の要求、例えばデータ要求をライトする一対のデータ要求フラグ1,2と、前記データ要求への応答をライトする一対のデータ応答フラグ1,2とを有している。
【0024】
データ要求フラグ1はコモンRAM3のアドレス「00000000H」に配置されている一方、データ要求フラグ2は同アドレス「00000001H」に配置されている。
【0025】
データ応答フラグ1はコモンRAM3のアドレス「00000002H」に配置されている一方、データ応答フラグ2は同アドレス「00000003H」に配置されている。
【0026】
≪処理手順≫
前記ソフトウェアによるビジー制御を説明する。ここでは一例として、CPU1からCPU2へのデータ要求によるデータ受け渡しの手順を説明する。
【0027】
その際、CPU1をデータ受け渡しの要求側とし、CPU2をデータ受け渡しの応答側とし、また図2と同様にコモンRAM(バス幅:8ビット)3は初期化処理で「0」クリアされているものする。なお、以下のS11~S24は、CPU1,2がコモンRAM3にアクセスして実行される。
【0028】
S11,S12:処理が開始されるとCPU1は、CPU2にデータ要求する前にデータ応答フラグ1,2をクリアにしておく。ここではデータ応答フラグ1を「0」クリアするため、そこに「00H」をライトする(S11)。また、データ応答フラグ2を「0」クリアするため、そこにも「00H」をライトする(S12)。
【0029】
S13,S14:CPU1は、データ要求フラグ1,2の順で「55H(データ要求)」をライトする。すなわち、最初にデータ要求フラグ1に「55H」をライトし、データ要求したことをCPU2に通知する(S13)。つぎにデータ要求フラグ2にも「55H」をライトし、データ要求したことをCPU2に通知する(S14)。
【0030】
S15,S16:CPU2は、S13,S14のライトと逆の順でデータ要求フラグ1,2をリードする。すなわち、最初にデータ要求フラグ2をリードし(S15)、つぎにデータ要求フラグ1をリードする(S16)。
【0031】
このときリードしたデータ要求フラグ1,2のいずれかに「55H」があればS17に進む。一方、リードしたデータ要求フラグ1,2に「55H」がない場合、即ちデータ要求フラグ1,2に「00H」がライトされていれば、S15,S16を繰り返してポーリングする。
【0032】
S17:CPU2は、S15/S16でリードした「55H」のデータ要求に応じた受け渡しデータをコモンRAM3の「アドレス:00000100H~000001FFH」にセットする。
【0033】
S18,S19:CPU2は、データ要求フラグ1を「0」クリアするため、そこに「00H」をライトする(S18)。また、データ要求フラグ2を「0」クリアするため、そこにも「00H」をライトする(S19)。
【0034】
S20,21:CPU2は、コモンCPU1へのデータ応答のため、データ応答フラグ1,2の順で「EEH(データ応答)」をライトする。すなわち、最初にデータ応答フラグ1に「EEH」をライトし、データ応答したことをCPU1に通知する(S20)。つぎにデータ応答フラグ2にも「EEH」をライトし、データ応答したことをCPU1に通知する(S21)。
【0035】
S22,S23:CPU1は、S20,S21のライトと逆の順でデータ応答フラグ1,2をリードする。すなわち、最初にデータ応答フラグ2をリードし(S22)、つぎにデータ応答フラグ1をリードする(S23)。
【0036】
このときリードしたデータ応答フラグ1,2のいずれかに「EEH」があればS24に進む。一方、リードしたデータ応答フラグ1,2に「EEH」がない場合、即ちデータ応答フラグ1,2に「00H」がライトされていれば、S22,S23を繰り返してポーリングする。
【0037】
S24:CPU1は、受け渡しデータを取り込んで取得し、処理を終了する。
【0038】
≪作用効果≫
図3のソフトウェアによるビジー制御によれば、以下の効果が得られる。
【0039】
(1)前述のようにCPU1は、データ要求フラグ1→2の順で「55H(データ要求)」をライトする(S13,S14)。一方、CPU2は、S13,S14のライトと逆の順、即ちデータ要求フラグ2→1の順でリードする(S15,S16)。
【0040】
その結果、データ要求フラグ1,2の少なくとも一方は、「55H」のライト・リードにタイミングずれが生じ、これにより必ず「55H」がライトされてCPU2でリードすることが可能となる。したがって、CPU1からCPU2にデータ要求が確実に伝達され、この点でデータ受け渡しの失敗を回避できる。
【0041】
(2)また、CPU2は、データ応答フラグ1→2の順で「EEH」をライトする(S20,S21)。一方、CPU1は、S20,S21と逆の順、即ちデータ応答フラグ2→1の順でリードする(S22,S23)。
【0042】
その結果、データ応答フラグ1,2の少なくとも一方は、「EEH」のライト・リードにタイミングずれが生じ、これにより必ず「EEH」がライトされてCPU1によりリードすることが可能となる。したがって、CPU2からCPU1へのデータ受け渡しを確実に完了でき、この点でもデータ受け渡しの失敗を回避できる。
【0043】
(3)このようにCPU1,2が「55H」・「EEH」を従来に比べて確実にリード可能なため、ハードウェアによるビジー制御を行われていない環境下においてもデータ受け渡しの失敗を回避でき、CPU1,2間でコモンRAM3経由によるデータ受け渡しを取りこぼしなく実行することができる。
【0044】
なお、本発明は、上記実施形態に限定されるものではなく、各請求項に記載された範囲内で変形して実施することができる。例えばコモンRAM3経由のCPU1,2間の処理は、データ受け渡しにだけでなく、他の処理の要求であってもよい。
【0045】
また、データ要求フラグ1,2は、ライトとリードの順が逆であればよいので、S13~S16の順には限定されない。例えばS13,S14でデータ要求フラグ2→1の順でライトし、S15,S16でデータ要求フラグ1→2の順でリードしてもよい。
【0046】
同様にデータ応答フラグ1,2も、ライトとリードの順が逆であればよいので、S20~S23の順に限定されない。例えばS20,S21でデータ応答フラグ2→1の順でライトし、S22,S23でデータ応答フラグ1→2の順でリードしてもよい。
【符号の説明】
【0047】
1,2…CPU
3…コモンRAM(共有メモリ)
10…共有メモリを用いた処理システム10
図1
図2
図3