JP2022135468A - データ処理装置、データ処理方法およびプログラム - Google Patents

データ処理装置、データ処理方法およびプログラム Download PDF

Info

Publication number
JP2022135468A
JP2022135468A JP2021035290A JP2021035290A JP2022135468A JP 2022135468 A JP2022135468 A JP 2022135468A JP 2021035290 A JP2021035290 A JP 2021035290A JP 2021035290 A JP2021035290 A JP 2021035290A JP 2022135468 A JP2022135468 A JP 2022135468A
Authority
JP
Japan
Prior art keywords
data
calculation
nth
sub
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021035290A
Other languages
English (en)
Inventor
大輝 伊達
Taiki Date
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2021035290A priority Critical patent/JP2022135468A/ja
Priority to PCT/JP2021/034456 priority patent/WO2022185582A1/ja
Publication of JP2022135468A publication Critical patent/JP2022135468A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できるデータ処理装置を提供する。【解決手段】第1~第Nの演算部は、メモリの第1~第Nの領域に格納されたデータを用いて少なくとも1つの演算処理をそれぞれ実行する。メイン演算部は、少なくとも1つの演算処理の各々について、第1~第Nの演算部による演算結果を照合する。メイン演算部は、第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作を継続させる。メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータを第2~第Nの領域のいずれかのデータと一致するように書き換える。【選択図】図1

Description

本開示は、データ処理装置、データ処理方法およびプログラムに関する。
半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって生じる。ソフトエラーの起こりうるメモリをシステムに適用すると、ソフトエラーによるシステムの一時的な停止が生じうる。
ソフトエラーによるシステムの一時的な停止を回避するための技術が開発されている。例えば、特許第6733843号公報(特許文献1)には、メモリに対して指定された変数の書き込みおよび読み出しを実行する処理部を備えるデータ処理装置が開示される。処理部は、書込指示を受けると、指定された変数の値を示すデータを、メモリの3個の領域の各々に書き込む。これにより、メモリ内においてデータが三重化され、1つのデータにソフトエラーが生じても、残り2つのデータを用いて処理を継続できる。
特許第6733843号公報
特許6733843号公報に記載の技術では、処理部は、読出指示を受けると、メモリにおける3個の領域の各々からデータを順次読み出す。それから、読み出したデータを用いて演算処理が順次実行される。そのため、同一の演算処理が3回繰り返して実行され、演算処理に要する時間が長くなる。すなわち、処理速度が低下する。
本開示は、上記の問題に鑑みてなされたものであり、その目的は、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できるデータ処理装置、データ処理方法およびプログラムを提供することである。
本開示の一例によれば、少なくとも1つの演算処理を実行するデータ処理装置は、第1~第Nの演算部と、メモリと、を備える。Nは3以上の整数である。第1~第Nの演算部のうちの1つは、メイン演算部である。メモリは、互いに同一のデータが格納される第1~第Nの領域を有する。第1~第Nの演算部は、第1~第Nの領域に格納されたデータを用いて少なくとも1つの演算処理をそれぞれ実行する。メイン演算部は、少なくとも1つの演算処理の各々について、第1~第Nの演算部による演算結果を照合する。メイン演算部は、第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作を継続させる。メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータを第2~第Nの領域のいずれかのデータと一致するように書き換える。
この開示によれば、第1~第Nの演算部がメモリの第1~第Nの領域を用いて演算処理を並行して実行できるため、演算に要する処理時間の長期化が抑制される。すなわち、処理速度の低下が抑制される。
さらに、第1~第Nの演算部の演算結果が照合され、予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作が継続される。そのため、ソフトエラーが生じたことにより予め定められた数未満の演算結果が他の演算結果と一致しなくても動作の継続が可能である。
さらに、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しない場合、第1の領域においてソフトエラーが生じていると推定される。そのため、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータは、第2~第Nの領域のいずれかのデータと一致するように書き換えられる。このようにしてソフトエラーによって破損したデータが正しいデータに修復されることにより、ソフトエラーに起因するシステムの一時的な停止が抑制される。
このように、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できる。
上述の開示において、メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第2~第Nの領域のいずれかの全てのデータと一致するように、第1の領域の全てのデータを書き換える。
上記の開示によれば、ソフトエラーが生じていると推定される第1の領域のデータが、第2~第Nの領域のいずれかの全てのデータと一致するように書き換えられる。これにより、ソフトエラーによって破損したデータが正しいデータに修復される。
上述の開示において、少なくとも1つの演算処理は、複数の演算処理を含む。第1~第Nの領域の各々は、複数の演算処理の実行によって上書きされるデータをそれぞれ記憶する複数のサブ領域を有する。メイン演算部は、複数の演算処理のうちの対象演算処理について、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、複数のサブ領域のうち対象演算処理に対応する対象サブ領域を特定する。メイン演算部は、第2~第Nの演算部のいずれかが用いる対象サブ領域のデータと一致するように、第1の演算部が用いる対象サブ領域のデータを書き換える。
上記の開示によれば、第1の領域のうちソフトエラーが生じていると推定される対象サブ領域が特定される。そして、対象サブ領域のデータが正しいデータに修復される。その結果、第1の領域の全てのデータを書き換える場合に比べて、データの修復に要する時間が短縮される。
上述の開示において、複数のサブ領域の各々は、複数のブロックに分割される。メイン演算部は、対象サブ領域の複数のブロックの各々の誤り検出符号を演算する。メイン演算部は、対象サブ領域の複数のブロックのうち、第1の演算部が用いる対象サブ領域と第2~第Nの演算部が用いる対象サブ領域との間で誤り検出符号が一致しない対象ブロックを特定する。メイン演算部は、第2~第Nの演算部が用いる対象ブロックのデータと一致するように、第1の演算部が用いる対象ブロックのデータを書き換える。
上記の開示によれば、対象サブ領域のうちソフトエラーが生じていると推定される対象ブロックが特定される。そして、対象ブロックのデータが正しいデータに修復される。その結果、対象サブ領域の全てのデータを書き換える場合に比べて、データの修復に要する時間がさらに短縮される。
上述の開示において、第1~第Nの演算部は、演算結果を第1~第Nの領域にそれぞれ書き込む。メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第2~第Nの演算部の演算結果と一致するように、第1の領域に書き込まれた演算結果を書き換える。
上記の開示によれば、演算結果のみが修復される。そのため、修復に要する時間がさらに短縮される。また、演算結果のみを修復する場合であっても、下記に説明するように、ソフトエラーによって破損の生じたデータが修復され得る。
上述の開示において、第1~第Nの領域の各々は、互いに同一のデータが書き込まれる第1のサブ領域および第2のサブ領域を有する。第1~第Nの演算部の各々は、第1のサブ領域および第2のサブ領域のうちの一方のデータを読み出して少なくとも1つの演算処理を実行する。第1~第Nの演算部の各々は、少なくとも1つの演算処理の実行に応じて、第1のサブ領域および第2のサブ領域の両方のデータを更新する。少なくとも1つの演算処理は、第1の演算処理と、第1の演算処理の後に実行される第2の演算処理とを含む。メイン演算部は、第1のサブ領域のデータを用いた第1の演算部による第1の演算処理の演算結果が第1のサブ領域のデータを用いた第2~第Nの演算部による第1の演算処理の演算結果と一致しないことに応じて、第2の演算処理において、第1の演算部がデータを読み出す領域を第1のサブ領域から第2のサブ領域に切り替える。メイン演算部は、第2のサブ領域のデータを用いた第1の演算部による第2の演算処理の演算結果が第1のサブ領域のデータを用いた第2~第Nの演算部による第2の演算処理の演算結果と一致しないことに応じて、第1の領域の少なくとも一部のデータを第2~第Nの領域のデータと一致するように書き換える。
上記の開示によれば、第1の演算部による第1のサブ領域を用いた演算結果が第2~第Nの演算部による第1のサブ領域を用いた演算結果と不一致であったとしても、データの修復は行われない。そのため、データの修復処理を行なう頻度を下げることができる。すなわち、データの修復のために演算処理の実行が待機される頻度を下げることができる。さらに、下記に説明するように、演算処理の内容によっては、ソフトエラーによって破損したデータが通常の演算処理によって自動的に修復され得る。
本開示の一例によれば、上記のデータ処理装置のデータ処理方法は、第1~第4のステップを備える。第1のステップは、第1~第Nの演算部が、第1~第Nの領域に格納されたデータを用いて少なくとも1つの演算処理をそれぞれ実行するステップである。第2のステップは、メイン演算部が、少なくとも1つの演算処理の各々について、第1~第Nの演算部による演算結果を照合するステップである。第3のステップは、メイン演算部が、第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作を継続させるステップである。第4のステップは、メイン演算部が、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータを第2~第Nの領域のいずれかのデータと一致するように書き換えるステップである。
本開示の一例によれば、プログラムは、上記のデータ処理方法を第1~第Nの演算部に実行させるコンピュータ読取可能なプログラムである。
これらの開示によっても、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できる。
本開示によれば、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できる。
実施の形態に係る安全IOユニットの構成を示す概略図である。 ソフトエラーの修復方法の一例を示す図である。 実施形態に係る制御システムの全体構成を示す概略図である。 安全IOユニットのハードウェア構成例を示す模式図である。 修復対象領域におけるデータの修復方法の第2の例を説明する図である。 修復対象領域におけるデータの修復方法の第3の例を説明する図である。 演算処理「プロセスA」が終了したときのメインメモリの状態の一例を示す図である。 図7に示す演算処理「プロセスA」の後の修復処理の様子を示す図である。 図8に示す修復処理の後に演算処理「プロセスB」が実行されたときのメインメモリの状態の一例を示す図である。 図9に示す演算処理「プロセスB」の後の修復処理の様子を示す図である。 演算処理「プロセスA」が終了したときのメインメモリの状態の別の例を示す図である。 図11に示す演算処理「プロセスA」の後の照合処理の様子を示す図である。 図12に示す照合処理の後に演算処理「プロセスB」が実行されたときのメインメモリ104の状態の一例を示す図である。 図13に示す演算処理「プロセスB」の後に演算処理「プロセスC」が実行されたときのメインメモリの状態の一例を示す図である。 図13に示す演算処理「プロセスB」の後に演算処理「プロセスC’」が実行されたときのメインメモリの状態の一例を示す図である。 図15に示す演算処理「プロセスC’」の後の照合修復処理の様子を示す図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのソフトエラーに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、データ処理装置の適用例として、FA(ファクトリオートメーション)分野の制御システムに組み込まれる安全IOユニットについて説明する。しかしながら、データ処理装置の適用例は、制御システムに組み込まれる安全IOユニットに限定されない。
図1および図2を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態に係る安全IOユニット100の構成を示す概略図である。安全IOユニット100は、データ処理装置の一例である。安全IOユニット100は、安全デバイスからの入力信号を受け付けて、当該入力信号をPLC(プログラマブルロジックコントローラ)に提供する。安全IOユニット100は、安全デバイスから受けた入力信号等を用いて、少なくとも1つの演算処理を周期的に実行する。
図1に示されるように、安全IOユニット100は、マルチコアプロセッサ102とメインメモリ104とを備える。
マルチコアプロセッサ102は、コアが複数搭載されたプロセッサである。コアの個数Nは、3以上の整数である。図1に示す例では、マルチコアプロセッサ102は、3個のコア11,12,13を有する。
コア11,12,13の各々は、上記の少なくとも1つの演算処理を実行する演算部として動作する。コア11は、メイン演算部として動作するマスターコアである。コア12,13は、スレーブコアとして動作する。コア12,13は、コア11からの指示に応じて、動作の停止および再開を行なう。
メインメモリ104は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような揮発性メモリによって構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMをメインメモリ104として用いることが好ましい。
積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、大容量化のために高集積化されたSRAMによって構成されるメインメモリ104を用いる場合、メインメモリ104にソフトエラーが起こりやすい。以下、メインメモリ104がSRAMであるとものとして説明する。
メインメモリ104は、互いに同一のデータが格納される、マルチコアプロセッサ102のコアの個数Nと同数の領域を有する。図1に示す例では、メインメモリ104は、3個の領域21,22,23を有する。
コア11,12,13は、領域21,22,23に格納されたデータを用いて、同一の演算処理をそれぞれ実行する。図1には、コア11,12,13が領域21,22,23のデータを用いて演算処理「プロセスA」をそれぞれ実行している様子が示される。コア11,12,13が領域21,22,23に格納されたデータをそれぞれ用いるため、コア11,12,13の演算処理は、並行して実行される。したがって、演算処理に要する時間の長期化を避けることができる。すなわち、処理速度の低下が抑制される。
メイン演算部であるコア11は、各演算処理について、コア11~13による演算結果を照合する。コア11~13による演算結果は、領域21~23にそれぞれ書き込まれる。コア11は、領域21~23に書き込まれた演算結果を照合すればよい。
図1に示す例では、コア11,12は、領域21,22のデータを用いて演算処理「プロセスA」をそれぞれ実行することにより、演算結果(=9)を領域21,22に書き込む。コア13も、領域23のデータを用いて演算処理「プロセスA」を実行し、演算結果を領域23に書き込む。ただし、領域23においてソフトエラーが生じ、演算処理「プロセスA」の実行に使用されるデータに破損(データ化け)が発生している。そのため、コア13による演算結果(=15)は、コア11,12による演算結果(=9)と異なる。
コア11は、コア11~13の演算結果のうちの予め定められた数以上の演算結果が一致するか否かを判断する。予め定められた数は、マルチコアプロセッサ102のコアの個数Nの過半数の整数である。
予め定められた数以上の演算結果が一致する場合、当該演算結果は、ソフトエラーの生じていないデータを用いて生成されたものと推定される。そのため、コア11は、コア11~13の演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、コア11~13の動作を継続させる。たとえば、N=3の場合、コア11は、コア11~13の演算結果のうちの2個以上の演算結果が一致することに応じて、コア11~13の動作を継続させる。
なお、コア11は、演算結果を外部に出力する場合、コア11~13の演算結果のうち一致する予め定められた数以上の演算結果を出力する。あるいは、コア11は、演算結果に応じた指令を外部に出力する場合、コア11~13の演算結果のうち一致する予め定められた数以上の演算結果に応じた指令を出力する。
予め定められた数以上の演算結果が一致しない場合、ソフトエラーの生じていないデータを用いて生成された演算結果を推定できない。そのため、コア11は、コア11~13の演算結果のうちの予め定められた数以上の演算結果が一致しないことに応じて、コア11~13の動作を停止させる。
さらに、コア11は、予め定められた数未満の演算結果が予め定められた数以上の演算結果と一致しないことに応じて、予め定められた数以上の演算結果と一致しない演算結果が書き込まれている領域の少なくとも一部のデータを、他の領域のいずれかのデータと一致するように書き換える。これにより、ソフトエラーによって破損したデータが修復され得る。
図2は、ソフトエラーの修復方法の一例を示す図である。コア11は、コア13の演算結果(=15)とコア11,12の演算結果(=9)とが一致しないことに応じて、コア13に対応する領域23の少なくとも一部のデータを領域21,22のいずれかのデータと一致するように書き換える。図2に示す例では、コア11は、領域21のデータと一致するように領域23のデータを書き換える。すなわち、コア11は、領域21のデータを領域23にコピーする。このように、3個の領域21~23のうちの1個の領域にソフトエラーが発生したとしても、ソフトエラーの生じた領域のデータが修復され得る。
このように、本実施の形態によれば、N個(Nは3以上の整数)の演算部(コア)がメインメモリ104のN個の領域を用いて演算処理を実行するため、演算に要する処理時間の長期化が抑制される。すなわち、処理速度の低下が抑制される。
さらに、N個の演算結果が照合され、予め定められた数以上の演算結果が一致することに応じて、N個の演算部(コア)の動作が継続される。そのため、ソフトエラーが生じたとしても動作の継続が可能である。
さらに、コア13の演算結果(=15)とコア11,12の演算結果(=9)とが一致しないことに応じて、コア13に対応する領域23の少なくとも一部のデータは、領域21,22のいずれかのデータと一致するように書き換えられる。このようにしてソフトエラーによって破損したデータが正しいデータに修復されることにより、ソフトエラーに起因するシステムの一時的な停止が抑制される。
§2 具体例
<制御システムの全体構成>
図3は、実施形態に係る制御システムの全体構成を示す概略図である。図3に例示される制御システム1は、主要なコンポーネントとして、1以上の安全IOユニット100と、標準PLC200と、安全PLC300と、1以上のカプラ400と、を含む。制御システム1に含まれるこれらの装置は、各種の演算処理を実行するデータ処理装置である。
標準PLC200は、予め作成された標準制御プログラムに従って、任意の制御対象に対する標準制御を実行する。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。制御対象は、例えばサーボモータ、ロボットなどである。
安全PLC300は、標準PLC200とは独立して、任意の制御対象に対するセーフティ制御を実行する。図3に例示される安全PLC300は、ローカルバスを介して標準PLC200に接続される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理の総称である。「セーフティ制御」は、例えばIEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
カプラ400は、標準PLC200と安全IOユニット100との間のデータの遣り取りを仲介する。カプラ400は、フィールドネットワーク2を介して、標準PLC200と電気的に接続されている。フィールドネットワーク2は、FA用のデータ伝送を実現するための通信媒体である。フィールドネットワーク2において、予め定められた周期でフレーム伝送が可能になっており、ネットワーク内の各ノードに対するデータ到着時間が保証される。このようなデータ到着時間が保証されるプロトコルの一例として、本実施の形態に従う制御システム1においては、フィールドネットワーク2にはEtherCAT(登録商標)を採用する。
カプラ400は、標準PLC200から受信したデータを安全IOユニット100へ送信するとともに、安全IOユニット100からデータを受信すると、当該受信したデータを次に到着するフレームに格納する準備を行なう。
安全IOユニット100は、安全PLC300またはカプラ400にローカルバスを介して接続される。さらに、安全IOユニット100には任意の安全デバイス(図示せず)が接続される。安全デバイスには、ライトカーテン、非常停止ボタン、セーフティドアスイッチなどが含まれる。
安全IOユニット100は、安全デバイスからの入力信号を受け付けて、安全PLC300へ当該入力信号を提供する。あるいは、安全IOユニット100は、安全デバイスからの入力信号を受け付けて、カプラ400を介して標準PLC200へ当該入力信号を提供する。標準PLC200へ提供された入力信号は、安全PLC300へ提供される。
さらに、安全IOユニット100は、安全PLC300からの指令に応じて、安全デバイスへ出力信号を出力する。あるいは、安全IOユニット100は、カプラ400および標準PLC200を介した安全PLC300からの指令に応じて、安全デバイスへ出力信号を出力する。
安全IOユニット100は、予め定められた周期ごとに、安全デバイスからの入力信号の受け付け、当該入力信号の提供、安全デバイスへの出力信号の出力などに関する演算処理を実行する。
安全PLC300は、安全IOユニット100から提供された入力信号に応じて、セーフティ制御を実行する。例えば、安全PLC300は、ライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されると、標準PLC200の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。あるいは、安全PLC300は、非常停止ボタンである安全デバイスからボタン押下を示す入力信号が提供されると、標準PLC200の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。
このように、安全IOユニット100は、人の安全が脅かされることを防止するためのセーフティ制御に直接関わる。従って、安全PLC300は、安全IOユニット100に故障や異常が発生したときにも、制御システム1を一時的に停止させるように設計されている。
安全IOユニット100のメインメモリ104においてソフトエラーが発生し、破損したデータが修復されないまま安全IOユニット100が動作し続けると、安全PLC300は、セーフティ制御を正常に実行できない。そのため、安全IOユニット100は、ソフトエラーが発生したとしても、動作を継続させるとともに、破損したデータを修復する機能を有する。
<安全IOユニットのハードウェア構成>
図4は、安全IOユニットのハードウェア構成例を示す模式図である。図4に例示される安全IOユニット100は、上述したマルチコアプロセッサ102およびメインメモリ104の他に、ストレージ110と、ローカルバスコントローラ120と、安全IOモジュール130と、を含む。これらのコンポーネントは、プロセッサバス140を介して接続されている。
ストレージ110は、例えばSSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。ストレージ110には、IO機能を実現するための実行可能プログラム111と照合修復プログラム112とが格納される。
ローカルバスコントローラ120は、ローカルバスを介して、安全IOユニット100が接続されるデバイス(例えば安全PLC300、カプラ400)との間でデータを遣り取りする。
安全IOモジュール130は、安全デバイスと電気的に接続され、安全デバイスによる検出結果などの入力を受け付けたり、安全デバイスへ信号を出力したりする。
<実行可能プログラムの実行>
マルチコアプロセッサ102のコア11~13(図1参照)は、実行可能プログラム111を並行して実行する。コア11~13は、メインメモリ104の領域21~23(図1参照)をそれぞれ用いて、実行可能プログラム111を実行する。
コア11~13は、予め定められた制御周期ごとに、実行可能プログラム111を実行する。実行可能プログラム111は、少なくとも1つの演算処理を規定する。そのため、コア11~13は、実行可能プログラム111によって規定される少なくとも1つの演算処理を周期的に実行する。
<演算結果の照合およびデータの修復>
メイン演算部であるコア11は、コア11~13による演算処理が終了するたびに、照合修復プログラム112を実行する。
具体的には、コア11は、コア11~13による演算処理の実行によって得られる3つの演算結果を照合する。当該3つの演算結果は、メインメモリ104の領域21~23にそれぞれ書き込まれる。そのため、コア11は、領域21~23に書き込まれた演算結果を照合する。なお、コア11は、演算結果の照合処理を行っている間、処理を待機するようにコア12,13に指示する。
照合結果として、以下の(1)~(3)のパターンが考えられる。
(1)3つの演算結果が一致する。
(2)2つの演算結果が一致する。残り1つの演算結果は、上記の2つの演算結果と異なる。
(3)3つの演算結果が互いに異なる。
パターン(1)の場合、メインメモリ104にはソフトエラーが生じていないと推定される。そのため、コア11は、データの修復が不要と判断し、次の演算処理を開始するとともに、コア12,13に次の演算処理の開始を指示する。
パターン(3)の場合、メインメモリ104の領域21~23のうちの少なくとも2つにおいてソフトエラーが生じていると推定される。この場合、領域21~23のうちソフトエラーが生じていない領域の特定が困難である。そのため、コア11は、安全IOユニット100が異常状態であると判断し、異常信号を安全PLC300に出力する。安全PLC300は、異常信号を受けると、標準PLC200の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。
ソフトエラーが発生する頻度は低い。そのため、メインメモリ104の2カ所において、ほぼ同じ時期にソフトエラーが発生する可能性が低い。したがって、パターン(2)の場合、互いに一致する演算結果が書き込まれている2つの領域において、ソフトエラーが生じていないと予想される。一方、領域21~23のうち、2つの領域の演算結果と異なる演算結果が書き込まれた領域(以下、「修復対象領域」と称する。)においてソフトエラーが生じていると推定される。そのため、コア11は、修復対象領域のデータの修復が必要であると判断し、修復対象領域のデータの修復処理を実行する。コア11は、データの修復処理が完了した後、次の演算処理を開始するとともに、コア12,13に次の演算処理の開始を指示する。
修復対象領域において、ソフトエラーが生じているビットを確認するためには、修復対象領域と残り2つの領域との全ビットの比較が必要となる。当該比較処理には時間がかかる。そのため、コア11は、当該比較処理を実行することなく、修復対象領域における少なくとも一部のデータを、残り2つの領域のいずれかのデータと一致するように書き換える。以下、修復対象領域におけるデータの修復方法の例について説明する。
(修復対象領域におけるデータの修復方法の第1の例)
コア11は、修復対象領域以外のいずれかの領域の全てのデータと一致するように、修復対象領域の全てのデータを書き換えてもよい。これにより、ソフトエラーによって破損(データ化け)の生じているデータ、および、修復対象領域に書き込まれた演算結果の両者が正しい内容に修復される。
(修復対象領域におけるデータの修復方法の第2の例)
上記第1の例では、ソフトエラーによって破損の生じているデータおよび演算結果の両者が正しい内容に修復される。しかしながら、修復対象領域の全てのデータが書き換えられるため、修復に要する時間が長くなる。当該修復を行なっている間、次の演算処理が開始されない。そのため、例えばライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されたとしても、安全IOユニット100から安全PLC300への当該入力信号の転送が遅延する。このような遅延時間を考慮して、安全距離を長くとる必要が生じる。具体的には、設備とライトカーテンとの距離を長く設定する。これにより、設備とライトカーテンとを含む生産ラインの規模が大きくなる。
そのため、第2の例では、コア11は、修復対象領域のうちの一部のデータのみを、残り2つの領域のいずれかのデータと一致するように書き換える。
図5は、修復対象領域におけるデータの修復方法の第2の例を説明する図である。図5に示されるように、メインメモリ104の領域21,22,23の各々は、複数の演算処理にそれぞれ対応する複数のサブ領域を有する。領域21は、演算処理「プロセスA」~「プロセスX」にそれぞれ対応するサブ領域21a~21xを有する。同様に、領域22は、演算処理「プロセスA」~「プロセスX」にそれぞれ対応するサブ領域22a~22xを有する。領域23は、演算処理「プロセスA」~「プロセスX」にそれぞれ対応するサブ領域23a~23xを有する。各サブ領域には、対応する演算処理に用いられる変数群が書き込まれる。
コア11は、複数の演算処理のうちの対象演算処理について、コア11~13の演算結果が上記のパターン(2)を満たすことに応じて、複数のサブ領域のうち対象演算処理に対応する対象サブ領域を特定する。例えば、コア11,12による演算処理「プロセスA」の演算結果が一致し、コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合、サブ領域21a~23aが対象サブ領域として特定される。
コア11は、互いに一致する2つの演算結果と一致しない演算結果を生成したコアに対応する対象サブ領域のデータを、残り2つのコアのいずれかに対応する対象サブ領域のデータと一致するように書き換える。例えば、コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合、サブ領域21aのデータと一致するようにサブ領域23aのデータが書き換えられる。
コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合、コア13による演算処理「プロセスA」に使用される変数を格納するサブ領域23aにおいてソフトエラーが生じていると推定される。サブ領域21aのデータと一致するようにサブ領域23aのデータが書き換えられることにより、ソフトエラーによって破損したデータが正しいデータに修復される。
データが書き換えられる対象は、領域23の全てではなく、領域23の一部であるサブ領域23aのみである。そのため、修復に要する時間が短縮される。その結果、例えば、設備とライトカーテンとを含む生産ラインの規模の増大が抑制される。
(修復対象領域におけるデータの修復方法の第3の例)
修復対象領域におけるデータの修復方法の第3の例は、上記の第2の例の変形例である。各サブ領域は、複数のブロックに予め分割されている。
図6は、修復対象領域におけるデータの修復方法の第3の例を説明する図である。図6には、コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合における、修復対象領域におけるデータの修復方法が示される。サブ領域21aは、複数のブロック31_1,31_2,・・・,31_Mに分割される。サブ領域22aは、複数のブロック32_1,32_2,・・・,32_Mに分割される。サブ領域23aは、複数のブロック33_1,33_2,・・・,33_Mに分割される。
図6に示されるように、コア11は、演算処理「プロセスA」に対応するサブ領域21a,22a,23a(対象サブ領域)の複数のブロック31_1~31_M,32_1~32_M,33_1~33_Mの各々の誤り検出符号CRCを演算する。
コア11は、対象サブ領域の複数のブロックのうち、コア13が用いるサブ領域23aとコア11,12が用いるサブ領域21a,22aとの間で誤り検出符号CRCが一致しない対象ブロックを特定する。例えば、ブロック33_1の誤り検出符号CRCがブロック31_1,32_1の誤り検出符号CRCと一致しない場合、ブロック31_1,32_1,33_1が対象ブロックとして特定される。
コア11は、コア11,12が用いる対象ブロックのデータと一致するように、コア13が用いる対象ブロックのデータを書き換える。例えば、コア11は、コア11,12が用いるブロック31_1,32_1のいずれかのデータと一致するように、コア13が用いるブロック33_1のデータを書き換える。
コア13が用いるサブ領域23aとコア11,12が用いるサブ領域21a,22aとの間で誤り検出符号CRCが一致するブロックでは、ソフトエラーが生じていないと推定される。そのため、このようなブロックは、データが書き換えられる対象から除外される。すなわち、データが書き換えられる対象は、サブ領域23aのうち、誤り検出符号CRCがブロック31_1,32_1と一致しないブロック33_1のみに限定される。その結果、修復に要する時間がさらに短縮される。
(修復対象領域におけるデータの修復方法の第4の例)
図7~図10を参照して、修復対象領域におけるデータの修復方法の第4の例を説明する。第4の例では、コア11は、あるコア(例えばコア13)の演算結果と残りのコア(例えばコア11,12)の演算結果とが一致しないことに応じて、当該残りのコアの演算結果と一致するように、メインメモリ104の当該あるコアの演算結果を書き換える。
図7は、演算処理「プロセスA」が終了したときのメインメモリの状態の一例を示す図である。図7に示す例では、メインメモリ104の領域23においてソフトエラーが生じ、変数aが「1」から「3」に化けている。演算処理「プロセスA」は、以下の式(1)に従って変数xを更新する処理である。
x=(a+b)*c・・・式(1)。
図7に示されるように、コア11,12は、領域21,22から演算に使用する変数(変数a,b,c)をそれぞれ読み出し、演算処理「プロセスA」の実行により、領域21,22の変数xを「5」から「9」にそれぞれ更新する。同様に、コア13も、領域23から演算に使用する変数a,b,cを読み出し、演算処理「プロセスA」の実行により、領域23の変数xを更新する。上述したように、領域23において、変数aにデータ化けが発生している。そのため、コア13は、領域23の変数xを「5」から「15」に更新する。
図8は、図7に示す演算処理「プロセスA」の後の修復処理の様子を示す図である。図8に示されるように、コア11は、コア11,12,13による演算処理「プロセスA」の演算結果を照合する。コア11は、コア13による演算結果「15」がコア11,12による演算結果「9」と異なることに応じて、領域23に書き込まれた演算結果「15」を、領域21,22に書き込まれた演算結果「9」に書き換える。これにより、領域23において、演算処理「プロセスA」の演算結果である変数xが正しい値に修復される。
なお、コア11は、コア13による演算結果「15」がコア11,12による演算結果「9」と異なる原因まで検証しない。そのため、コア11は、領域23の変数aにデータ化けが発生していることを認識できず、変数aの修復を行なわない。
図9は、図8に示す修復処理の後に演算処理「プロセスB」が実行されたときのメインメモリの状態の一例を示す図である。演算処理「プロセスB」は、以下の式(2)に従って変数aを更新する処理である。
a=a+1・・・式(2)。
図9に示されるように、コア11,12は、領域21,22から演算に使用する変数aをそれぞれ読み出し、演算処理「プロセスB」の実行により、領域21,22の変数aを「1」から「2」にそれぞれ更新する。同様に、コア13も、領域23から演算に使用する変数aを読み出し、演算処理「プロセスB」の実行により、領域23の変数aを更新する。上述したように、領域23において、変数aにデータ化けが発生している。そのため、コア13は、領域23の変数xを「3」から「4」に更新する。
図10は、図9に示す演算処理「プロセスB」の後の修復処理の様子を示す図である。図10に示されるように、コア11は、コア11,12,13による演算処理「プロセスB」の演算結果を照合する。コア11は、コア13による演算結果「4」がコア11,12による演算結果「2」と異なることに応じて、領域23に書き込まれた演算結果「4」を、領域21,22に書き込まれた演算結果「2」に書き換える。これにより、領域23において、演算処理「プロセスB」の演算結果である変数aが正しい値に修復される。
このように、第4の例では、演算結果のみが修復される。そのため、修復に要する時間が短縮される。また、演算結果のみを修復する場合であっても、図7~10に示されるように、ソフトエラーによって破損(データ化け)の生じたデータについても修復され得る。
(修復対象領域におけるデータの修復方法の第5の例)
図11~図16を参照して、修復対象領域におけるデータの修復方法の第5の例を説明する。第5の例では、領域21~23の各々は、互いに同一のデータが書き込まれる2つのサブ領域を有する。コア11~13の各々は、2つのサブ領域のうちの一方のデータを読み出して演算処理を実行し、当該演算処理の実行に応じて、2つのサブ領域の両方のデータを更新する。
図11は、演算処理「プロセスA」が終了したときのメインメモリの状態の別の例を示す図である。図11に示されるように、領域21は、互いに同一のデータが書き込まれるサブ領域41a,41bを有する。領域22は、互いに同一のデータが書き込まれるサブ領域42a,42bを有する。領域23は、互いに同一のデータが書き込まれるサブ領域43a,43bを有する。ただし、図11に示す例では、メインメモリ104の領域23のサブ領域43aにおいてソフトエラーが生じ、変数aが「1」から「3」に化けている。
図11に示されるように、コア11は、サブ領域41aから演算に使用する変数(変数a,b,c)を読み出し、演算処理「プロセスA」の実行に従って、サブ領域41a,41bの両方の変数xを「5」から「9」に更新する。コア12は、サブ領域42aから演算に使用する変数(変数a,b,c)を読み出し、演算処理「プロセスA」の実行に従って、サブ領域42a,42bの両方の変数xを「5」から「9」に更新する。同様に、コア13も、サブ領域43aから演算に使用する変数(変数a,b,c)を読み出し、演算処理「プロセスA」の実行に従って、サブ領域43a,43bの両方の変数xを更新する。上述したように、サブ領域43aにおいて、変数aにデータ化けが発生している。そのため、コア13は、サブ領域43a,43bの変数xを「5」から「15」に更新する。
図12は、図11に示す演算処理「プロセスA」の後の照合処理の様子を示す図である。図12に示されるように、コア11は、コア11,12,13による演算処理「プロセスA」の演算結果を照合する。コア13による演算結果「15」がコア11,12による演算結果「9」と異なるため、サブ領域43aにおいてソフトエラーが生じていることが推定される。そのため、コア11は、コア13による演算結果「15」がコア11,12による演算結果「9」と異なることに応じて、コア13が演算処理のために使用する領域を、サブ領域43aからサブ領域43bに切り替える。
図13は、図12に示す照合処理の後に演算処理「プロセスB」が実行されたときのメインメモリ104の状態の一例を示す図である。
図13に示されるように、コア11は、サブ領域41aから演算に使用する変数aを読み出し、演算処理「プロセスB」の実行に従って、サブ領域41a,41bの両方の変数aを「1」から「2」に更新する。コア12は、サブ領域42aから演算に使用する変数aを読み出し、演算処理「プロセスB」の実行に従って、サブ領域42a,42bの両方の変数aを「1」から「2」に更新する。コア13は、サブ領域43bから演算に使用する変数aを読み出し、演算処理「プロセスB」の実行に従って、サブ領域43a,43bの両方の変数aを更新する。サブ領域43aでは変数aにデータ化けが発生しているものの、サブ領域43bではデータ化けが発生していない。そのため、コア13は、サブ領域43aの変数aを「3」から「2」に更新し、サブ領域43bの変数aを「1」から「2」に更新する。これにより、サブ領域43aの変数aの値が正しい値に修復される。
図14は、図13に示す演算処理「プロセスB」の後に演算処理「プロセスC」が実行されたときのメインメモリの状態の一例を示す図である。演算処理「プロセスC」は、以下の式(3)に従って変数xを更新する処理である。
x=4*c・・・式(3)。
図14に示されるように、コア11は、サブ領域41aから演算に使用する変数cを読み出し、演算処理「プロセスC」の実行に従って、サブ領域41a,41bの両方の変数xを「9」から「12」に更新する。コア12は、サブ領域42aから演算に使用する変数cを読み出し、演算処理「プロセスC」の実行に従って、サブ領域42a,42bの両方の変数xを「9」から「12」に更新する。コア13は、サブ領域43bから演算に使用する変数cを読み出し、演算処理「プロセスC」の実行に従って、サブ領域43a,43bの両方の変数xを「15」から「12」に更新する。これにより、サブ領域43a,43bの変数xの値が正しい値に修復される。
図15は、図13に示す演算処理「プロセスB」の後に演算処理「プロセスC’」が実行されたときのメインメモリの状態の一例を示す図である。演算処理「プロセスC’」は、以下の式(4)に従って変数xを更新する処理である。
x=x+1・・・式(4)。
図15に示されるように、コア11は、サブ領域41aから演算に使用する変数xを読み出し、演算処理「プロセスC’」の実行に従って、サブ領域41a,41bの両方の変数xを「9」から「10」に更新する。コア12は、サブ領域42aから演算に使用する変数xを読み出し、演算処理「プロセスC’」の実行に従って、サブ領域42a,42bの両方の変数xを「9」から「10」に更新する。コア13は、サブ領域43bから演算に使用する変数xを読み出し、演算処理「プロセスC’」の実行に従って、サブ領域43a,43bの両方の変数xを「15」から「16」に更新する。
図16は、図15に示す演算処理「プロセスC’」の後の照合修復処理の様子を示す図である。図16に示されるように、コア11は、コア11,12,13による演算処理「プロセスC’」の演算結果を照合する。コア11は、コア13による演算結果「16」がコア11,12による演算結果「10」と異なることに応じて、領域23の修復が必要であると判断する。そして、コア11は、たとえば上記の第1の例に従って、領域21,22のいずれかの全てのデータと一致するように、修復対象領域である領域23の全てのデータを書き換える。これにより、サブ領域43a,43bの変数xの値が正しい値に修復される。
第5の例によれば、サブ領域41a~43aを用いた演算結果が不一致であったとしても、データの修復は行われない。そのため、データの修復処理を行なう頻度を下げることができる。すなわち、データの修復のために演算処理の実行が待機される頻度を下げることができる。
さらに、図11~図14に示されるように、演算処理の内容によっては、ソフトエラーによって破損したデータが通常の演算処理によって自動的に修復され得る。
<変形例>
上記の説明では、安全IOユニット100は、複数のコアを有するマルチコアプロセッサ102を備えるものとした。しかしながら、安全IOユニット100は、マルチコアプロセッサ102の代わりに、複数のプロセッサを有するマルチプロセッサを備えてもよい。複数のプロセッサは、演算部として動作する。例えば、安全IOユニット100は、3個のプロセッサを有するマルチプロセッサを備える。3個のプロセッサは、メインメモリ104の領域21,22,23を用いて演算処理をそれぞれ実行する。3個のプロセッサのうちの1つは、メイン演算部として動作する。メイン演算部として動作するプロセッサは、上記のコア11と同様に、照合修復処理を実行する。
標準PLC200、安全PLC300およびカプラ400も、安全IOユニット100と同様に、マルチコアプロセッサが搭載され、照合修復プログラムを有していてもよい。これにより、標準PLC200、安全PLC300およびカプラ400も、メインメモリにソフトエラーが生じたとしても動作を継続できる。その結果、制御システム1の停止の頻度が抑制される。
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
(構成1)
少なくとも1つの演算処理を実行するデータ処理装置(100)であって、
第1~第Nの演算部(11~13)と、
メモリ(104)と、を備え、
Nは3以上の整数であり、
前記第1~第Nの演算部(11~13)のうちの1つは、メイン演算部(11)であり、
前記メモリ(104)は、互いに同一のデータが格納される第1~第Nの領域(21~23)を有し、
前記第1~第Nの演算部(11~13)は、前記第1~第Nの領域(21~23)に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行し、
前記メイン演算部(11)は、
前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部(11~13)による演算結果を照合し、
前記第1~第Nの演算部(11~13)による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部(11~13)の動作を継続させ、
前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11,12)の前記演算結果とが一致しないことに応じて、前記第1の領域(23)の少なくとも一部のデータを前記第2~第Nの領域(21,22)のいずれかのデータと一致するように書き換える、データ処理装置(100)。
(構成2)
前記メイン演算部(11)は、前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11,12)の前記演算結果とが一致しないことに応じて、前記第2~第Nの領域(21,22)のいずれかの全てのデータと一致するように、前記第1の領域(23)の全てのデータを書き換える、構成1に記載のデータ処理装置。
(構成3)
前記少なくとも1つの演算処理は、複数の演算処理を含み、
前記第1~第Nの領域(21~23)の各々は、前記複数の演算処理の実行によって上書きされるデータをそれぞれ記憶する複数のサブ領域(21a~21x,22a~22x,23a~23x)を有し、
前記メイン演算部(11)は、
前記複数の演算処理のうちの対象演算処理について、前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11,12)の前記演算結果とが一致しないことに応じて、前記複数のサブ領域(21a~21x,22a~22x,23a~23x)のうち前記対象演算処理に対応する対象サブ領域(21a,22a,23a)を特定し、
前記第2~第Nの演算部(11,12)のいずれかが用いる前記対象サブ領域(21a,22a)のデータと一致するように、前記第1の演算部(13)が用いる前記対象サブ領域(23a)のデータを書き換える、構成1に記載のデータ処理装置(100)。
(構成4)
前記複数のサブ領域(21a~21x,22a~22x,23a~23x)の各々は、複数のブロック(31_1~31_M,32_1~32_M,33_1~33_M)に分割され、
前記メイン演算部(11)は、
前記対象サブ領域(21a,22a,23a)の前記複数のブロックの各々の誤り検出符号を演算し、
前記対象サブ領域の前記複数のブロックのうち、前記第1の演算部(13)が用いる前記対象サブ領域と前記第2~第Nの演算部(11,12)が用いる前記対象サブ領域との間で前記誤り検出符号が一致しない対象ブロック(31_1,32_1,33_1)を特定し、
前記第2~第Nの演算部(11,12)が用いる前記対象ブロック(31_1,32_1)のデータと一致するように、前記第1の演算部(13)が用いる前記対象ブロック(33_1)のデータを書き換える、構成3に記載のデータ処理装置(100)。
(構成5)
前記第1~第Nの演算部(11~13)は、前記演算結果を前記第1~第Nの領域(21~23)にそれぞれ書き込み、
前記メイン演算部(11)は、
前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11,12)の前記演算結果とが一致しないことに応じて、前記第2~第Nの演算部(11,12)の前記演算結果と一致するように、前記第1の領域(23)に書き込まれた前記演算結果を書き換える、構成1に記載のデータ処理装置(100)。
(構成6)
前記第1~第Nの領域(21~23)の各々は、互いに同一のデータが書き込まれる第1のサブ領域(41a,42a,43a)および第2のサブ領域(41b,42b,43b)を有し、
前記第1~第Nの演算部(11~13)の各々は、
前記第1のサブ領域(41a,42a,43a)および前記第2のサブ領域(41b,42b,43b)のうちの一方のデータを読み出して前記少なくとも1つの演算処理を実行し、
前記少なくとも1つの演算処理の実行に応じて、前記第1のサブ領域(41a,42a,43a)および前記第2のサブ領域(41b,42b,43b)の両方のデータを更新し、
前記少なくとも1つの演算処理は、第1の演算処理と、前記第1の演算処理の後に実行される第2の演算処理とを含み、
前記メイン演算部(11)は、
前記第1のサブ領域(43a)のデータを用いた前記第1の演算部(13)による前記第1の演算処理の演算結果が前記第1のサブ領域(41a,42a)のデータを用いた前記第2~第Nの演算部(11,12)による前記第1の演算処理の前記演算結果と一致しないことに応じて、前記第2の演算処理において、前記第1の演算部(13)がデータを読み出す領域を前記第1のサブ領域(43a)から前記第2のサブ領域(43b)に切り替え、
前記第2のサブ領域(43b)のデータを用いた前記第1の演算部(13)による前記第2の演算処理の演算結果が前記第1のサブ領域(41a,42a)のデータを用いた前記第2~第Nの演算部(11a,12)による前記第2の演算処理の演算結果と一致しないことに応じて、前記第1の領域(23)の前記少なくとも一部のデータを前記第2~第Nの領域(21,22)のデータと一致するように書き換える、構成1に記載のデータ処理装置(100)。
(構成7)
少なくとも1つの演算処理を実行するデータ処理装置(100)のデータ処理方法であって、
前記データ処理装置(100)は、
第1~第Nの演算部(11~13)と、
メモリ(104)と、を備え、
Nは3以上の整数であり、
前記第1~第Nの演算部(11~13)のうちの1つは、メイン演算部(11)であり、
前記メモリ(104)は、互いに同一のデータが格納される第1~第Nの領域(21~23)を有し、
前記データ処理方法は、
前記第1~第Nの演算部(11~13)が、前記第1~第Nの領域(21~23)に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行するステップと、
前記メイン演算部(11)が、前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部(11~13)による演算結果を照合するステップと、
前記メイン演算部(11)が、前記第1~第Nの演算部(11~13)による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部(11~13)の動作を継続させるステップと、
前記メイン演算部(11)が、前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11a,12)の前記演算結果とが一致しないことに応じて、前記第1の領域(23)の少なくとも一部のデータを前記第2~第Nの領域(21,22)のいずれかのデータと一致するように書き換えるステップと、を備えるデータ処理方法。
(構成8)
構成7に記載のデータ処理方法を前記第1~第Nの演算部(11~13)に実行させるコンピュータ読取可能なプログラム。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、11,12,13 コア、21,22,23 領域、21a~21x,22a~22x,23a~23x,41a,41b,42a,42b,43a,43b サブ領域、31_1~31_M,32_1~32_M,33_1~33_M ブロック、100 安全IOユニット、102 マルチコアプロセッサ、104 メインメモリ、110 ストレージ、111 実行可能プログラム、112 照合修復プログラム、120 ローカルバスコントローラ、130 安全IOモジュール、140 プロセッサバス、200 標準PLC、300 安全PLC、400 カプラ。

Claims (8)

  1. 少なくとも1つの演算処理を実行するデータ処理装置であって、
    第1~第Nの演算部と、
    メモリと、を備え、
    Nは3以上の整数であり、
    前記第1~第Nの演算部のうちの1つは、メイン演算部であり、
    前記メモリは、互いに同一のデータが格納される第1~第Nの領域を有し、
    前記第1~第Nの演算部は、前記第1~第Nの領域に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行し、
    前記メイン演算部は、
    前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部による演算結果を照合し、
    前記第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部の動作を継続させ、
    前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記第1の領域の少なくとも一部のデータを前記第2~第Nの領域のいずれかのデータと一致するように書き換える、データ処理装置。
  2. 前記メイン演算部は、前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記第2~第Nの領域のいずれかの全てのデータと一致するように、前記第1の領域の全てのデータを書き換える、請求項1に記載のデータ処理装置。
  3. 前記少なくとも1つの演算処理は、複数の演算処理を含み、
    前記第1~第Nの領域の各々は、前記複数の演算処理の実行によって上書きされるデータをそれぞれ記憶する複数のサブ領域を有し、
    前記メイン演算部は、
    前記複数の演算処理のうちの対象演算処理について、前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記複数のサブ領域のうち前記対象演算処理に対応する対象サブ領域を特定し、
    前記第2~第Nの演算部のいずれかが用いる前記対象サブ領域のデータと一致するように、前記第1の演算部が用いる前記対象サブ領域のデータを書き換える、請求項1に記載のデータ処理装置。
  4. 前記複数のサブ領域の各々は、複数のブロックに分割され、
    前記メイン演算部は、
    前記対象サブ領域の前記複数のブロックの各々の誤り検出符号を演算し、
    前記対象サブ領域の前記複数のブロックのうち、前記第1の演算部が用いる前記対象サブ領域と前記第2~第Nの演算部が用いる前記対象サブ領域との間で前記誤り検出符号が一致しない対象ブロックを特定し、
    前記第2~第Nの演算部が用いる前記対象ブロックのデータと一致するように、前記第1の演算部が用いる前記対象ブロックのデータを書き換える、請求項3に記載のデータ処理装置。
  5. 前記第1~第Nの演算部は、前記演算結果を前記第1~第Nの領域にそれぞれ書き込み、
    前記メイン演算部は、
    前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記第2~第Nの演算部の前記演算結果と一致するように、前記第1の領域に書き込まれた前記演算結果を書き換える、請求項1に記載のデータ処理装置。
  6. 前記第1~第Nの領域の各々は、互いに同一のデータが書き込まれる第1のサブ領域および第2のサブ領域を有し、
    前記第1~第Nの演算部の各々は、
    前記第1のサブ領域および前記第2のサブ領域のうちの一方のデータを読み出して前記少なくとも1つの演算処理を実行し、
    前記少なくとも1つの演算処理の実行に応じて、前記第1のサブ領域および前記第2のサブ領域の両方のデータを更新し、
    前記少なくとも1つの演算処理は、第1の演算処理と、前記第1の演算処理の後に実行される第2の演算処理とを含み、
    前記メイン演算部は、
    前記第1のサブ領域のデータを用いた前記第1の演算部による前記第1の演算処理の演算結果が前記第1のサブ領域のデータを用いた前記第2~第Nの演算部による前記第1の演算処理の前記演算結果と一致しないことに応じて、前記第2の演算処理において、前記第1の演算部がデータを読み出す領域を前記第1のサブ領域から前記第2のサブ領域に切り替え、
    前記第2のサブ領域のデータを用いた前記第1の演算部による前記第2の演算処理の演算結果が前記第1のサブ領域のデータを用いた前記第2~第Nの演算部による前記第2の演算処理の演算結果と一致しないことに応じて、前記第1の領域の前記少なくとも一部のデータを前記第2~第Nの領域のデータと一致するように書き換える、請求項1に記載のデータ処理装置。
  7. 少なくとも1つの演算処理を実行するデータ処理装置のデータ処理方法であって、
    前記データ処理装置は、
    第1~第Nの演算部と、
    メモリと、を備え、
    Nは3以上の整数であり、
    前記第1~第Nの演算部のうちの1つは、メイン演算部であり、
    前記メモリは、互いに同一のデータが格納される第1~第Nの領域を有し、
    前記データ処理方法は、
    前記第1~第Nの演算部が、前記第1~第Nの領域に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行するステップと、
    前記メイン演算部が、前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部による演算結果を照合するステップと、
    前記メイン演算部が、前記第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部の動作を継続させるステップと、
    前記メイン演算部が、前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記第1の領域の少なくとも一部のデータを前記第2~第Nの領域のいずれかのデータと一致するように書き換えるステップと、を備えるデータ処理方法。
  8. 請求項7に記載のデータ処理方法を前記第1~第Nの演算部に実行させるコンピュータ読取可能なプログラム。
JP2021035290A 2021-03-05 2021-03-05 データ処理装置、データ処理方法およびプログラム Pending JP2022135468A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021035290A JP2022135468A (ja) 2021-03-05 2021-03-05 データ処理装置、データ処理方法およびプログラム
PCT/JP2021/034456 WO2022185582A1 (ja) 2021-03-05 2021-09-21 データ処理装置、データ処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021035290A JP2022135468A (ja) 2021-03-05 2021-03-05 データ処理装置、データ処理方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2022135468A true JP2022135468A (ja) 2022-09-15

Family

ID=83155242

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021035290A Pending JP2022135468A (ja) 2021-03-05 2021-03-05 データ処理装置、データ処理方法およびプログラム

Country Status (2)

Country Link
JP (1) JP2022135468A (ja)
WO (1) WO2022185582A1 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04111032A (ja) * 1990-08-31 1992-04-13 Toshiba Corp 多重化記憶装置
JP2019053617A (ja) * 2017-09-15 2019-04-04 株式会社東芝 システムlsiおよびシステムlsiの故障検出方法

Also Published As

Publication number Publication date
WO2022185582A1 (ja) 2022-09-09

Similar Documents

Publication Publication Date Title
JP6442843B2 (ja) 制御装置
US7793147B2 (en) Methods and systems for providing reconfigurable and recoverable computing resources
JP2007249976A (ja) システムの安全性を確保する分散制御システムと、制御プロセス
US10073749B2 (en) Fault tolerant industrial automation control system
EP3673373A1 (en) Ensuring a correct program sequence in a dual-processor architecture
WO2022185582A1 (ja) データ処理装置、データ処理方法およびプログラム
JP2022088346A (ja) コア同期のためのデバッグトレースストリーム
JP5012548B2 (ja) プログラマブルコントローラ
KR20050121729A (ko) 프로그램 제어식 유닛 및 방법
JP6733843B1 (ja) データ処理装置、制御方法およびプログラム
WO2021157103A1 (ja) 情報処理装置、制御方法およびプログラム
WO2021181712A1 (ja) データ処理装置、データ処理方法およびプログラム
US11119461B2 (en) Controller
KR101679936B1 (ko) 에너지 및 공정 제어를 위한 이중화된 산업용 제어 시스템 및 그 제어 방법
EP4339782A1 (en) Processor and method of detecting soft error using the same
JPH02194446A (ja) 二重化情報処理システムにおけるモジュール修復方法
JP5136770B2 (ja) 産業用コントローラ
WO2015011792A1 (ja) フィールドプログラマブルゲートアレイおよび制御装置
Gullo Design for Software Maintainability
JP2008090656A (ja) プログラマブルコントローラ
KR20230063247A (ko) 결함 복구 시스템
CN115903629A (zh) 工业控制系统及其控制方法
CN117591014A (zh) 数据读写控制方法、装置、设备及计算机可读存储介质
JPH0368023A (ja) 電子計算機
JPH04304747A (ja) チェックポイントリカバリ方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240116