Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7694064B2 - Data processing device, data processing method and program - Google Patents
[go: Go Back, main page]

JP7694064B2 - Data processing device, data processing method and program - Google Patents

Data processing device, data processing method and program Download PDF

Info

Publication number
JP7694064B2
JP7694064B2 JP2021035290A JP2021035290A JP7694064B2 JP 7694064 B2 JP7694064 B2 JP 7694064B2 JP 2021035290 A JP2021035290 A JP 2021035290A JP 2021035290 A JP2021035290 A JP 2021035290A JP 7694064 B2 JP7694064 B2 JP 7694064B2
Authority
JP
Japan
Prior art keywords
calculation
data
nth
sub
area
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.)
Active
Application number
JP2021035290A
Other languages
Japanese (ja)
Other versions
JP2022135468A (en
Inventor
大輝 伊達
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
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 filed Critical Omron Corp
Priority to JP2021035290A priority Critical patent/JP7694064B2/en
Priority to PCT/JP2021/034456 priority patent/WO2022185582A1/en
Publication of JP2022135468A publication Critical patent/JP2022135468A/en
Application granted granted Critical
Publication of JP7694064B2 publication Critical patent/JP7694064B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)

Description

本開示は、データ処理装置、データ処理方法およびプログラムに関する。 The present disclosure relates to a data processing device, a data processing method, and a program.

半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって生じる。ソフトエラーの起こりうるメモリをシステムに適用すると、ソフトエラーによるシステムの一時的な停止が生じうる。 As semiconductor devices become more highly integrated and miniaturized, there has been a sharp increase in transient bit errors (soft errors) in memory. Soft errors are caused by collisions with alpha particles or cosmic ray neutrons, for example. When memory susceptible to soft errors is used in a system, the soft errors can cause the system to temporarily stop working.

ソフトエラーによるシステムの一時的な停止を回避するための技術が開発されている。例えば、特許第6733843号公報(特許文献1)には、メモリに対して指定された変数の書き込みおよび読み出しを実行する処理部を備えるデータ処理装置が開示される。処理部は、書込指示を受けると、指定された変数の値を示すデータを、メモリの3個の領域の各々に書き込む。これにより、メモリ内においてデータが三重化され、1つのデータにソフトエラーが生じても、残り2つのデータを用いて処理を継続できる。 Technologies have been developed to avoid temporary system shutdowns due to soft errors. For example, Japanese Patent No. 6733843 (Patent Document 1) discloses a data processing device equipped with a processing unit that writes and reads specified variables to memory. When the processing unit receives a write instruction, it writes data indicating the value of the specified variable to each of three areas of the memory. This results in triplicate data in the memory, and even if a soft error occurs in one piece of data, processing can continue using the remaining two pieces of data.

特許第6733843号公報Patent No. 6733843

特許6733843号公報に記載の技術では、処理部は、読出指示を受けると、メモリにおける3個の領域の各々からデータを順次読み出す。それから、読み出したデータを用いて演算処理が順次実行される。そのため、同一の演算処理が3回繰り返して実行され、演算処理に要する時間が長くなる。すなわち、処理速度が低下する。 In the technology described in Patent Publication No. 6733843, when a read instruction is received, the processing unit sequentially reads data from each of the three areas in the memory. Then, the read data is used to sequentially execute arithmetic processing. As a result, the same arithmetic processing is executed three times repeatedly, which lengthens the time required for the arithmetic processing. In other words, the processing speed decreases.

本開示は、上記の問題に鑑みてなされたものであり、その目的は、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できるデータ処理装置、データ処理方法およびプログラムを提供することである。 The present disclosure has been made in consideration of the above problems, and its purpose is to provide a data processing device, a data processing method, and a program that are capable of continuing operation even if a soft error occurs and that can suppress a decrease in processing speed.

本開示の一例によれば、少なくとも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の領域のいずれかのデータと一致するように書き換える。 According to an example of the present disclosure, a data processing device that executes at least one arithmetic process includes first to Nth arithmetic units and a memory. N is an integer equal to or greater than 3. One of the first to Nth arithmetic units is a main arithmetic unit. The memory has first to Nth areas in which identical data is stored. The first to Nth arithmetic units each execute at least one arithmetic process using the data stored in the first to Nth areas. The main arithmetic unit compares the arithmetic results of the first to Nth arithmetic units for each of the at least one arithmetic process. The main arithmetic unit continues the operation of the first to Nth arithmetic units in response to a match between a predetermined number or more of the arithmetic results of the first to Nth arithmetic units. In response to a mismatch between the arithmetic results of the first arithmetic unit and the arithmetic results of the second to Nth arithmetic units, the main arithmetic unit rewrites at least a portion of the data in the first area so that it matches any of the data in the second to Nth areas.

この開示によれば、第1~第Nの演算部がメモリの第1~第Nの領域を用いて演算処理を並行して実行できるため、演算に要する処理時間の長期化が抑制される。すなわち、処理速度の低下が抑制される。 According to this disclosure, the first to Nth calculation units can execute calculation processes in parallel using the first to Nth areas of the memory, which prevents the processing time required for calculation from increasing. In other words, the decrease in processing speed is prevented.

さらに、第1~第Nの演算部の演算結果が照合され、予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作が継続される。そのため、ソフトエラーが生じたことにより予め定められた数未満の演算結果が他の演算結果と一致しなくても動作の継続が可能である。 Furthermore, the calculation results of the first to Nth calculation units are compared, and if a predetermined number or more of the calculation results match, the operation of the first to Nth calculation units continues. Therefore, even if a soft error occurs and the calculation results are less than the predetermined number and do not match other calculation results, it is possible to continue operation.

さらに、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しない場合、第1の領域においてソフトエラーが生じていると推定される。そのため、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータは、第2~第Nの領域のいずれかのデータと一致するように書き換えられる。このようにしてソフトエラーによって破損したデータが正しいデータに修復されることにより、ソフトエラーに起因するシステムの一時的な停止が抑制される。 Furthermore, if the calculation result of the first calculation unit does not match the calculation results of the second to Nth calculation units, it is presumed that a soft error has occurred in the first region. Therefore, in response to a mismatch between the calculation result of the first calculation unit and the calculation results of the second to Nth calculation units, at least a portion of the data in the first region is rewritten to match any of the data in the second to Nth regions. In this way, data corrupted by a soft error is restored to correct data, thereby suppressing temporary system shutdowns caused by soft errors.

このように、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できる。 In this way, even if a soft error occurs, operation can continue and a decrease in processing speed can be suppressed.

上述の開示において、メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第2~第Nの領域のいずれかの全てのデータと一致するように、第1の領域の全てのデータを書き換える。 In the above disclosure, the main calculation unit rewrites all data in the first area so that it matches all data in any of the second to Nth areas in response to a mismatch between the calculation results of the first calculation unit and the calculation results of the second to Nth calculation units.

上記の開示によれば、ソフトエラーが生じていると推定される第1の領域のデータが、第2~第Nの領域のいずれかの全てのデータと一致するように書き換えられる。これにより、ソフトエラーによって破損したデータが正しいデータに修復される。 According to the above disclosure, the data in the first region where a soft error is presumed to have occurred is rewritten so that it matches all of the data in any of the second through Nth regions. This allows the data corrupted by the soft error to be restored to the correct data.

上述の開示において、少なくとも1つの演算処理は、複数の演算処理を含む。第1~第Nの領域の各々は、複数の演算処理の実行によって上書きされるデータをそれぞれ記憶する複数のサブ領域を有する。メイン演算部は、複数の演算処理のうちの対象演算処理について、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、複数のサブ領域のうち対象演算処理に対応する対象サブ領域を特定する。メイン演算部は、第2~第Nの演算部のいずれかが用いる対象サブ領域のデータと一致するように、第1の演算部が用いる対象サブ領域のデータを書き換える。 In the above disclosure, at least one arithmetic process includes multiple arithmetic processes. Each of the first to Nth regions has multiple sub-regions that respectively store data to be overwritten by the execution of the multiple arithmetic processes. The main arithmetic unit identifies a target sub-region among the multiple sub-regions that corresponds to a target arithmetic process in response to a mismatch between the arithmetic results of the first arithmetic unit and the arithmetic results of the second to Nth arithmetic units for a target arithmetic process among the multiple arithmetic processes. The main arithmetic unit rewrites the data in the target sub-region used by the first arithmetic unit so that it matches the data in the target sub-region used by any of the second to Nth arithmetic units.

上記の開示によれば、第1の領域のうちソフトエラーが生じていると推定される対象サブ領域が特定される。そして、対象サブ領域のデータが正しいデータに修復される。その結果、第1の領域の全てのデータを書き換える場合に比べて、データの修復に要する時間が短縮される。 According to the above disclosure, a target sub-area in the first area in which a soft error is presumed to have occurred is identified. Then, the data in the target sub-area is repaired to the correct data. As a result, the time required to repair the data is reduced compared to when all data in the first area is rewritten.

上述の開示において、複数のサブ領域の各々は、複数のブロックに分割される。メイン演算部は、対象サブ領域の複数のブロックの各々の誤り検出符号を演算する。メイン演算部は、対象サブ領域の複数のブロックのうち、第1の演算部が用いる対象サブ領域と第2~第Nの演算部が用いる対象サブ領域との間で誤り検出符号が一致しない対象ブロックを特定する。メイン演算部は、第2~第Nの演算部が用いる対象ブロックのデータと一致するように、第1の演算部が用いる対象ブロックのデータを書き換える。 In the above disclosure, each of the multiple sub-regions is divided into multiple blocks. The main calculation unit calculates an error detection code for each of the multiple blocks of the target sub-region. The main calculation unit identifies a target block, among the multiple blocks of the target sub-region, for which the error detection code does not match between the target sub-region used by the first calculation unit and the target sub-regions used by the second to Nth calculation units. The main calculation unit rewrites the data of the target block used by the first calculation unit so that it matches the data of the target block used by the second to Nth calculation units.

上記の開示によれば、対象サブ領域のうちソフトエラーが生じていると推定される対象ブロックが特定される。そして、対象ブロックのデータが正しいデータに修復される。その結果、対象サブ領域の全てのデータを書き換える場合に比べて、データの修復に要する時間がさらに短縮される。 According to the above disclosure, a target block in the target sub-area in which a soft error is estimated to have occurred is identified. Then, the data in the target block is repaired to the correct data. As a result, the time required to repair the data is further reduced compared to when all data in the target sub-area is rewritten.

上述の開示において、第1~第Nの演算部は、演算結果を第1~第Nの領域にそれぞれ書き込む。メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第2~第Nの演算部の演算結果と一致するように、第1の領域に書き込まれた演算結果を書き換える。 In the above disclosure, the first to Nth calculation units write the calculation results to the first to Nth areas, respectively. In response to a mismatch between the calculation results of the first calculation unit and the calculation results of the second to Nth calculation units, the main calculation unit rewrites the calculation result written in the first area so that it matches the calculation results of the second to Nth calculation units.

上記の開示によれば、演算結果のみが修復される。そのため、修復に要する時間がさらに短縮される。また、演算結果のみを修復する場合であっても、下記に説明するように、ソフトエラーによって破損の生じたデータが修復され得る。 According to the above disclosure, only the calculation results are repaired. This further reduces the time required for repair. Even when only the calculation results are repaired, data that has been corrupted due to a soft error can be repaired, as described below.

上述の開示において、第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の領域のデータと一致するように書き換える。 In the above disclosure, each of the first to Nth regions has a first sub-region and a second sub-region in which the same data is written. Each of the first to Nth arithmetic units reads data from one of the first sub-region and the second sub-region to execute at least one arithmetic process. Each of the first to Nth arithmetic units updates data in both the first sub-region and the second sub-region in response to the execution of the at least one arithmetic process. The at least one arithmetic process includes a first arithmetic process and a second arithmetic process executed after the first arithmetic process. In response to a result of the first arithmetic process performed by the first arithmetic unit using the data in the first sub-region not matching a result of the first arithmetic process performed by the second to Nth arithmetic units using the data in the first sub-region, the main arithmetic unit switches the region from which the first arithmetic unit reads data in the second arithmetic process from the first sub-region to the second sub-region. The main calculation unit rewrites at least a portion of the data in the first region to match the data in the second to Nth regions in response to a calculation result of the second calculation process by the first calculation unit using the data in the second sub-region not matching the calculation result of the second calculation process by the second to Nth calculation units using the data in the first sub-region.

上記の開示によれば、第1の演算部による第1のサブ領域を用いた演算結果が第2~第Nの演算部による第1のサブ領域を用いた演算結果と不一致であったとしても、データの修復は行われない。そのため、データの修復処理を行なう頻度を下げることができる。すなわち、データの修復のために演算処理の実行が待機される頻度を下げることができる。さらに、下記に説明するように、演算処理の内容によっては、ソフトエラーによって破損したデータが通常の演算処理によって自動的に修復され得る。 According to the above disclosure, even if the result of the calculation by the first calculation unit using the first sub-region is inconsistent with the result of the calculation by the second to Nth calculation units using the first sub-region, data repair is not performed. Therefore, the frequency of data repair processing can be reduced. In other words, the frequency with which the execution of the calculation processing is put on hold in order to repair data can be reduced. Furthermore, as described below, depending on the content of the calculation processing, data corrupted by a soft error can be automatically repaired by normal calculation processing.

本開示の一例によれば、上記のデータ処理装置のデータ処理方法は、第1~第4のステップを備える。第1のステップは、第1~第Nの演算部が、第1~第Nの領域に格納されたデータを用いて少なくとも1つの演算処理をそれぞれ実行するステップである。第2のステップは、メイン演算部が、少なくとも1つの演算処理の各々について、第1~第Nの演算部による演算結果を照合するステップである。第3のステップは、メイン演算部が、第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作を継続させるステップである。第4のステップは、メイン演算部が、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータを第2~第Nの領域のいずれかのデータと一致するように書き換えるステップである。 According to an example of the present disclosure, the data processing method of the data processing device includes first to fourth steps. The first step is a step in which the first to Nth calculation units each execute at least one calculation process using the data stored in the first to Nth areas. The second step is a step in which the main calculation unit compares the calculation results by the first to Nth calculation units for each of the at least one calculation process. The third step is a step in which the main calculation unit continues the operation of the first to Nth calculation units in response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units. The fourth step is a step in which the main calculation unit rewrites at least a portion of the data in the first area so that it matches any of the data in the second to Nth areas in response to a mismatch between the calculation results of the first calculation unit and the calculation results of the second to Nth calculation units.

本開示の一例によれば、プログラムは、上記のデータ処理方法を第1~第Nの演算部に実行させるコンピュータ読取可能なプログラムである。 According to one example of the present disclosure, the program is a computer-readable program that causes the first to Nth calculation units to execute the above data processing method.

これらの開示によっても、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できる。 These disclosures also make it possible to continue operation even if a soft error occurs, and to prevent a decrease in processing speed.

本開示によれば、ソフトエラーが生じたとしても動作の継続が可能であるとともに、処理速度の低下を抑制できる。 According to the present disclosure, even if a soft error occurs, operation can be continued and a decrease in processing speed can be suppressed.

実施の形態に係る安全IOユニットの構成を示す概略図である。FIG. 2 is a schematic diagram illustrating a configuration of a safety IO unit according to an embodiment. ソフトエラーの修復方法の一例を示す図である。FIG. 1 is a diagram illustrating an example of a method for repairing a soft error. 実施形態に係る制御システムの全体構成を示す概略図である。1 is a schematic diagram showing an overall configuration of a control system according to an embodiment; 安全IOユニットのハードウェア構成例を示す模式図である。FIG. 2 is a schematic diagram illustrating an example of a hardware configuration of a safety IO unit. 修復対象領域におけるデータの修復方法の第2の例を説明する図である。11A and 11B are diagrams illustrating a second example of a method for recovering data in a region to be recovered. 修復対象領域におけるデータの修復方法の第3の例を説明する図である。13A and 13B are diagrams illustrating a third example of a method for repairing data in a repair target area. 演算処理「プロセスA」が終了したときのメインメモリの状態の一例を示す図である。FIG. 13 is a diagram showing an example of a state of the main memory when the arithmetic processing "process A" is terminated. 図7に示す演算処理「プロセスA」の後の修復処理の様子を示す図である。FIG. 8 is a diagram showing a state of restoration processing after the calculation processing "process A" shown in FIG. 7; 図8に示す修復処理の後に演算処理「プロセスB」が実行されたときのメインメモリの状態の一例を示す図である。FIG. 9 is a diagram showing an example of a state of the main memory when a calculation process "process B" is executed after the restoration process shown in FIG. 8. 図9に示す演算処理「プロセスB」の後の修復処理の様子を示す図である。FIG. 10 is a diagram showing the state of restoration processing after the calculation processing "process B" shown in FIG. 9; 演算処理「プロセスA」が終了したときのメインメモリの状態の別の例を示す図である。FIG. 13 is a diagram showing another example of the state of the main memory when the arithmetic processing "process A" is terminated. 図11に示す演算処理「プロセスA」の後の照合処理の様子を示す図である。FIG. 12 is a diagram showing the state of the collation process after the calculation process "process A" shown in FIG. 11. 図12に示す照合処理の後に演算処理「プロセスB」が実行されたときのメインメモリ104の状態の一例を示す図である。13 is a diagram showing an example of a state of the main memory 104 when a calculation process "process B" is executed after the matching process shown in FIG. 12. FIG. 図13に示す演算処理「プロセスB」の後に演算処理「プロセスC」が実行されたときのメインメモリの状態の一例を示す図である。14 is a diagram showing an example of a state of the main memory when the arithmetic process "process C" is executed after the arithmetic process "process B" shown in FIG. 13. 図13に示す演算処理「プロセスB」の後に演算処理「プロセスC’」が実行されたときのメインメモリの状態の一例を示す図である。FIG. 14 is a diagram showing an example of a state of the main memory when the arithmetic process "process C'" is executed after the arithmetic process "process B" shown in FIG. 13. 図15に示す演算処理「プロセスC’」の後の照合修復処理の様子を示す図である。FIG. 16 is a diagram showing the state of the matching and repair process after the calculation process “process C′” shown in FIG. 15 .

本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。 The embodiment of the present invention will be described in detail with reference to the drawings. Note that the same or corresponding parts in the drawings will be given the same reference numerals and their description will not be repeated.

§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのソフトエラーに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、データ処理装置の適用例として、FA(ファクトリオートメーション)分野の制御システムに組み込まれる安全IOユニットについて説明する。しかしながら、データ処理装置の適用例は、制御システムに組み込まれる安全IOユニットに限定されない。
§1 Application Examples In various fields such as aerospace systems, automobiles, medical devices, communication devices, and industrial devices, it is desirable to suppress temporary system shutdowns caused by memory soft errors. The present disclosure can be applied to systems in such various fields. In the following, a safety IO unit incorporated in a control system in the FA (factory automation) field will be described as an application example of a data processing device. However, application examples of the data processing device are not limited to safety IO units incorporated in control systems.

図1および図2を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態に係る安全IOユニット100の構成を示す概略図である。安全IOユニット100は、データ処理装置の一例である。安全IOユニット100は、安全デバイスからの入力信号を受け付けて、当該入力信号をPLC(プログラマブルロジックコントローラ)に提供する。安全IOユニット100は、安全デバイスから受けた入力信号等を用いて、少なくとも1つの演算処理を周期的に実行する。 An example of a situation in which the present invention is applied will be described with reference to Figures 1 and 2. Figure 1 is a schematic diagram showing the configuration of a safety IO unit 100 according to an embodiment. The safety IO unit 100 is an example of a data processing device. The safety IO unit 100 receives an input signal from a safety device and provides the input signal to a PLC (programmable logic controller). The safety IO unit 100 periodically executes at least one arithmetic process using the input signal received from the safety device, etc.

図1に示されるように、安全IOユニット100は、マルチコアプロセッサ102とメインメモリ104とを備える。 As shown in FIG. 1, the safety IO unit 100 includes a multi-core processor 102 and a main memory 104.

マルチコアプロセッサ102は、コアが複数搭載されたプロセッサである。コアの個数Nは、3以上の整数である。図1に示す例では、マルチコアプロセッサ102は、3個のコア11,12,13を有する。 The multi-core processor 102 is a processor equipped with multiple cores. The number of cores, N, is an integer equal to or greater than 3. In the example shown in FIG. 1, the multi-core processor 102 has three cores, 11, 12, and 13.

コア11,12,13の各々は、上記の少なくとも1つの演算処理を実行する演算部として動作する。コア11は、メイン演算部として動作するマスターコアである。コア12,13は、スレーブコアとして動作する。コア12,13は、コア11からの指示に応じて、動作の停止および再開を行なう。 Each of cores 11, 12, and 13 operates as a calculation unit that executes at least one of the above-mentioned calculation processes. Core 11 is a master core that operates as a main calculation unit. Cores 12 and 13 operate as slave cores. Cores 12 and 13 stop and resume operation in response to instructions from core 11.

メインメモリ104は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような揮発性メモリによって構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMをメインメモリ104として用いることが好ましい。 The main memory 104 is composed of a volatile memory such as a dynamic random access memory (DRAM) or a static random access memory (SRAM). SRAM uses flip-flops as the storage structure, and has the advantage that it does not require a refresh operation and can operate faster than DRAM. For this reason, it is preferable to use an SRAM as the main memory 104.

積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、大容量化のために高集積化されたSRAMによって構成されるメインメモリ104を用いる場合、メインメモリ104にソフトエラーが起こりやすい。以下、メインメモリ104がSRAMであるとものとして説明する。 DRAMs with a stacked structure have high soft error resistance. On the other hand, SRAMs with a flip-flop structure have a lower soft error resistance due to miniaturization. Therefore, when using a main memory 104 made of highly integrated SRAMs to increase capacity, soft errors are likely to occur in the main memory 104. In the following description, it is assumed that the main memory 104 is an SRAM.

メインメモリ104は、互いに同一のデータが格納される、マルチコアプロセッサ102のコアの個数Nと同数の領域を有する。図1に示す例では、メインメモリ104は、3個の領域21,22,23を有する。 The main memory 104 has the same number of areas as the number N of cores of the multi-core processor 102, in which the same data is stored. In the example shown in FIG. 1, the main memory 104 has three areas 21, 22, and 23.

コア11,12,13は、領域21,22,23に格納されたデータを用いて、同一の演算処理をそれぞれ実行する。図1には、コア11,12,13が領域21,22,23のデータを用いて演算処理「プロセスA」をそれぞれ実行している様子が示される。コア11,12,13が領域21,22,23に格納されたデータをそれぞれ用いるため、コア11,12,13の演算処理は、並行して実行される。したがって、演算処理に要する時間の長期化を避けることができる。すなわち、処理速度の低下が抑制される。 Cores 11, 12, and 13 each execute the same arithmetic processing using data stored in areas 21, 22, and 23. FIG. 1 shows cores 11, 12, and 13 each executing arithmetic processing "Process A" using data in areas 21, 22, and 23. Because cores 11, 12, and 13 each use data stored in areas 21, 22, and 23, the arithmetic processing of cores 11, 12, and 13 is executed in parallel. This makes it possible to avoid an increase in the time required for arithmetic processing. In other words, a decrease in processing speed is suppressed.

メイン演算部であるコア11は、各演算処理について、コア11~13による演算結果を照合する。コア11~13による演算結果は、領域21~23にそれぞれ書き込まれる。コア11は、領域21~23に書き込まれた演算結果を照合すればよい。 Core 11, which is the main calculation unit, collates the calculation results by cores 11 to 13 for each calculation process. The calculation results by cores 11 to 13 are written to areas 21 to 23, respectively. Core 11 simply collates the calculation results written in areas 21 to 23.

図1に示す例では、コア11,12は、領域21,22のデータを用いて演算処理「プロセスA」をそれぞれ実行することにより、演算結果(=9)を領域21,22に書き込む。コア13も、領域23のデータを用いて演算処理「プロセスA」を実行し、演算結果を領域23に書き込む。ただし、領域23においてソフトエラーが生じ、演算処理「プロセスA」の実行に使用されるデータに破損(データ化け)が発生している。そのため、コア13による演算結果(=15)は、コア11,12による演算結果(=9)と異なる。 In the example shown in FIG. 1, cores 11 and 12 execute the calculation process "process A" using data in areas 21 and 22, respectively, and write the calculation result (=9) to areas 21 and 22. Core 13 also executes the calculation process "process A" using data in area 23, and writes the calculation result to area 23. However, a soft error has occurred in area 23, causing corruption (garbled data) in the data used to execute the calculation process "process A". Therefore, the calculation result (=15) by core 13 differs from the calculation result (=9) by cores 11 and 12.

コア11は、コア11~13の演算結果のうちの予め定められた数以上の演算結果が一致するか否かを判断する。予め定められた数は、マルチコアプロセッサ102のコアの個数Nの過半数の整数である。 Core 11 determines whether or not a predetermined number or more of the calculation results of cores 11 to 13 match. The predetermined number is an integer that is a majority of the number N of cores in multi-core processor 102.

予め定められた数以上の演算結果が一致する場合、当該演算結果は、ソフトエラーの生じていないデータを用いて生成されたものと推定される。そのため、コア11は、コア11~13の演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、コア11~13の動作を継続させる。たとえば、N=3の場合、コア11は、コア11~13の演算結果のうちの2個以上の演算結果が一致することに応じて、コア11~13の動作を継続させる。 When a predetermined number or more of the calculation results match, it is presumed that the calculation result was generated using data that did not contain a soft error. Therefore, core 11 allows cores 11 to 13 to continue operation in response to a predetermined number or more of the calculation results of cores 11 to 13 matching. For example, when N=3, core 11 allows cores 11 to 13 to continue operation in response to two or more of the calculation results of cores 11 to 13 matching.

なお、コア11は、演算結果を外部に出力する場合、コア11~13の演算結果のうち一致する予め定められた数以上の演算結果を出力する。あるいは、コア11は、演算結果に応じた指令を外部に出力する場合、コア11~13の演算結果のうち一致する予め定められた数以上の演算結果に応じた指令を出力する。 When core 11 outputs a calculation result to the outside, it outputs a predetermined number or more of the calculation results of cores 11 to 13 that match. Alternatively, when core 11 outputs a command corresponding to the calculation result to the outside, it outputs a command corresponding to a predetermined number or more of the calculation results of cores 11 to 13 that match.

予め定められた数以上の演算結果が一致しない場合、ソフトエラーの生じていないデータを用いて生成された演算結果を推定できない。そのため、コア11は、コア11~13の演算結果のうちの予め定められた数以上の演算結果が一致しないことに応じて、コア11~13の動作を停止させる。 If a predetermined number or more of the calculation results do not match, it is not possible to estimate the calculation results generated using data that is not affected by soft errors. Therefore, core 11 stops the operation of cores 11 to 13 in response to a predetermined number or more of the calculation results of cores 11 to 13 not matching.

さらに、コア11は、予め定められた数未満の演算結果が予め定められた数以上の演算結果と一致しないことに応じて、予め定められた数以上の演算結果と一致しない演算結果が書き込まれている領域の少なくとも一部のデータを、他の領域のいずれかのデータと一致するように書き換える。これにより、ソフトエラーによって破損したデータが修復され得る。 Furthermore, in response to the fact that the operation result less than the predetermined number does not match the operation result equal to or greater than the predetermined number, the core 11 rewrites at least a portion of the data in the area in which the operation result that does not match the operation result equal to or greater than the predetermined number is written so that the data matches any of the data in the other areas. This makes it possible to repair data that has been corrupted by a soft error.

図2は、ソフトエラーの修復方法の一例を示す図である。コア11は、コア13の演算結果(=15)とコア11,12の演算結果(=9)とが一致しないことに応じて、コア13に対応する領域23の少なくとも一部のデータを領域21,22のいずれかのデータと一致するように書き換える。図2に示す例では、コア11は、領域21のデータと一致するように領域23のデータを書き換える。すなわち、コア11は、領域21のデータを領域23にコピーする。このように、3個の領域21~23のうちの1個の領域にソフトエラーが発生したとしても、ソフトエラーの生じた領域のデータが修復され得る。 Figure 2 is a diagram showing an example of a method for repairing a soft error. In response to a discrepancy between the calculation result of core 13 (=15) and the calculation results of cores 11 and 12 (=9), core 11 rewrites at least a portion of the data in region 23 corresponding to core 13 so that it matches the data in either region 21 or 22. In the example shown in Figure 2, core 11 rewrites the data in region 23 so that it matches the data in region 21. In other words, core 11 copies the data in region 21 to region 23. In this way, even if a soft error occurs in one of the three regions 21 to 23, the data in the region where the soft error occurred can be repaired.

このように、本実施の形態によれば、N個(Nは3以上の整数)の演算部(コア)がメインメモリ104のN個の領域を用いて演算処理を実行するため、演算に要する処理時間の長期化が抑制される。すなわち、処理速度の低下が抑制される。 In this way, according to this embodiment, N (N is an integer equal to or greater than 3) arithmetic units (cores) execute arithmetic processing using N areas of the main memory 104, so that the processing time required for the calculation is prevented from increasing. In other words, the decrease in processing speed is prevented.

さらに、N個の演算結果が照合され、予め定められた数以上の演算結果が一致することに応じて、N個の演算部(コア)の動作が継続される。そのため、ソフトエラーが生じたとしても動作の継続が可能である。 Furthermore, the N calculation results are compared, and if a predetermined number or more of the calculation results match, the operation of the N calculation units (cores) continues. Therefore, operation can continue even if a soft error occurs.

さらに、コア13の演算結果(=15)とコア11,12の演算結果(=9)とが一致しないことに応じて、コア13に対応する領域23の少なくとも一部のデータは、領域21,22のいずれかのデータと一致するように書き換えられる。このようにしてソフトエラーによって破損したデータが正しいデータに修復されることにより、ソフトエラーに起因するシステムの一時的な停止が抑制される。 Furthermore, in response to a mismatch between the calculation result (=15) of core 13 and the calculation results (=9) of cores 11 and 12, at least a portion of the data in area 23 corresponding to core 13 is rewritten to match the data in either area 21 or 22. In this way, data corrupted by a soft error is restored to the correct data, thereby preventing temporary system shutdowns caused by soft errors.

§2 具体例
<制御システムの全体構成>
図3は、実施形態に係る制御システムの全体構成を示す概略図である。図3に例示される制御システム1は、主要なコンポーネントとして、1以上の安全IOユニット100と、標準PLC200と、安全PLC300と、1以上のカプラ400と、を含む。制御システム1に含まれるこれらの装置は、各種の演算処理を実行するデータ処理装置である。
§2 Specific example <Overall configuration of the control system>
Fig. 3 is a schematic diagram showing an overall configuration of a control system according to an embodiment. The control system 1 illustrated in Fig. 3 includes, as main components, one or more safety IO units 100, a standard PLC 200, a safety PLC 300, and one or more couplers 400. These devices included in the control system 1 are data processing devices that execute various types of arithmetic processing.

標準PLC200は、予め作成された標準制御プログラムに従って、任意の制御対象に対する標準制御を実行する。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。制御対象は、例えばサーボモータ、ロボットなどである。 The standard PLC 200 executes standard control of any control object according to a pre-created standard control program. "Standard control" is a general term for processing to control a control object according to pre-defined required specifications. Control objects are, for example, servo motors, robots, etc.

安全PLC300は、標準PLC200とは独立して、任意の制御対象に対するセーフティ制御を実行する。図3に例示される安全PLC300は、ローカルバスを介して標準PLC200に接続される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理の総称である。「セーフティ制御」は、例えばIEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。 The safety PLC 300 executes safety control for any control object, independent of the standard PLC 200. The safety PLC 300 illustrated in FIG. 3 is connected to the standard PLC 200 via a local bus. "Safety control" is a general term for processing to prevent human safety from being threatened by equipment, machinery, etc. "Safety control" is designed to meet the requirements for realizing safety functions stipulated in, for example, IEC 61508.

カプラ400は、標準PLC200と安全IOユニット100との間のデータの遣り取りを仲介する。カプラ400は、フィールドネットワーク2を介して、標準PLC200と電気的に接続されている。フィールドネットワーク2は、FA用のデータ伝送を実現するための通信媒体である。フィールドネットワーク2において、予め定められた周期でフレーム伝送が可能になっており、ネットワーク内の各ノードに対するデータ到着時間が保証される。このようなデータ到着時間が保証されるプロトコルの一例として、本実施の形態に従う制御システム1においては、フィールドネットワーク2にはEtherCAT(登録商標)を採用する。 The coupler 400 mediates data exchange between the standard PLC 200 and the safety IO unit 100. The coupler 400 is electrically connected to the standard PLC 200 via the field network 2. The field network 2 is a communication medium for realizing data transmission for FA. In the field network 2, frame transmission is possible at a predetermined cycle, and the data arrival time for each node in the network is guaranteed. As an example of a protocol that guarantees such data arrival time, EtherCAT (registered trademark) is adopted for the field network 2 in the control system 1 according to the present embodiment.

カプラ400は、標準PLC200から受信したデータを安全IOユニット100へ送信するとともに、安全IOユニット100からデータを受信すると、当該受信したデータを次に到着するフレームに格納する準備を行なう。 The coupler 400 transmits data received from the standard PLC 200 to the safety IO unit 100, and when it receives data from the safety IO unit 100, it prepares to store the received data in the next arriving frame.

安全IOユニット100は、安全PLC300またはカプラ400にローカルバスを介して接続される。さらに、安全IOユニット100には任意の安全デバイス(図示せず)が接続される。安全デバイスには、ライトカーテン、非常停止ボタン、セーフティドアスイッチなどが含まれる。 The safety IO unit 100 is connected to the safety PLC 300 or the coupler 400 via a local bus. In addition, any safety device (not shown) is connected to the safety IO unit 100. The safety devices include a light curtain, an emergency stop button, a safety door switch, etc.

安全IOユニット100は、安全デバイスからの入力信号を受け付けて、安全PLC300へ当該入力信号を提供する。あるいは、安全IOユニット100は、安全デバイスからの入力信号を受け付けて、カプラ400を介して標準PLC200へ当該入力信号を提供する。標準PLC200へ提供された入力信号は、安全PLC300へ提供される。 The safety IO unit 100 receives an input signal from a safety device and provides the input signal to the safety PLC 300. Alternatively, the safety IO unit 100 receives an input signal from a safety device and provides the input signal to the standard PLC 200 via the coupler 400. The input signal provided to the standard PLC 200 is provided to the safety PLC 300.

さらに、安全IOユニット100は、安全PLC300からの指令に応じて、安全デバイスへ出力信号を出力する。あるいは、安全IOユニット100は、カプラ400および標準PLC200を介した安全PLC300からの指令に応じて、安全デバイスへ出力信号を出力する。 Furthermore, the safety IO unit 100 outputs an output signal to a safety device in response to a command from the safety PLC 300. Alternatively, the safety IO unit 100 outputs an output signal to a safety device in response to a command from the safety PLC 300 via the coupler 400 and the standard PLC 200.

安全IOユニット100は、予め定められた周期ごとに、安全デバイスからの入力信号の受け付け、当該入力信号の提供、安全デバイスへの出力信号の出力などに関する演算処理を実行する。 The safety IO unit 100 performs calculations related to receiving input signals from safety devices, providing the input signals, outputting output signals to the safety devices, etc. at predetermined intervals.

安全PLC300は、安全IOユニット100から提供された入力信号に応じて、セーフティ制御を実行する。例えば、安全PLC300は、ライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されると、標準PLC200の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。あるいは、安全PLC300は、非常停止ボタンである安全デバイスからボタン押下を示す入力信号が提供されると、標準PLC200の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。 The safety PLC 300 executes safety control in response to an input signal provided from the safety IO unit 100. For example, when an input signal indicating a human intrusion is provided from a safety device that is a light curtain, the safety PLC 300 cuts off the power supply to the control target of the standard PLC 200 and temporarily stops the control system 1. Alternatively, when an input signal indicating a button press is provided from a safety device that is an emergency stop button, the safety PLC 300 cuts off the power supply to the control target of the standard PLC 200 and temporarily stops the control system 1.

このように、安全IOユニット100は、人の安全が脅かされることを防止するためのセーフティ制御に直接関わる。従って、安全PLC300は、安全IOユニット100に故障や異常が発生したときにも、制御システム1を一時的に停止させるように設計されている。 In this way, the safety IO unit 100 is directly involved in safety control to prevent threats to human safety. Therefore, the safety PLC 300 is designed to temporarily stop the control system 1 even if a failure or abnormality occurs in the safety IO unit 100.

安全IOユニット100のメインメモリ104においてソフトエラーが発生し、破損したデータが修復されないまま安全IOユニット100が動作し続けると、安全PLC300は、セーフティ制御を正常に実行できない。そのため、安全IOユニット100は、ソフトエラーが発生したとしても、動作を継続させるとともに、破損したデータを修復する機能を有する。 If a soft error occurs in the main memory 104 of the safety IO unit 100 and the safety IO unit 100 continues to operate without repairing the damaged data, the safety PLC 300 will not be able to properly execute safety control. Therefore, even if a soft error occurs, the safety IO unit 100 has the function of continuing operation and repairing the damaged data.

<安全IOユニットのハードウェア構成>
図4は、安全IOユニットのハードウェア構成例を示す模式図である。図4に例示される安全IOユニット100は、上述したマルチコアプロセッサ102およびメインメモリ104の他に、ストレージ110と、ローカルバスコントローラ120と、安全IOモジュール130と、を含む。これらのコンポーネントは、プロセッサバス140を介して接続されている。
<Hardware configuration of safety IO unit>
Fig. 4 is a schematic diagram showing an example of the hardware configuration of a safety IO unit. The safety IO unit 100 shown in Fig. 4 includes a storage 110, a local bus controller 120, and a safety IO module 130 in addition to the multi-core processor 102 and main memory 104 described above. These components are connected via a processor bus 140.

ストレージ110は、例えばSSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。ストレージ110には、IO機能を実現するための実行可能プログラム111と照合修復プログラム112とが格納される。 Storage 110 is composed of a non-volatile storage device such as a solid state drive (SSD) or a hard disk drive (HDD). Executable program 111 for implementing IO functions and a comparison and repair program 112 are stored in storage 110.

ローカルバスコントローラ120は、ローカルバスを介して、安全IOユニット100が接続されるデバイス(例えば安全PLC300、カプラ400)との間でデータを遣り取りする。 The local bus controller 120 exchanges data with devices (e.g., safety PLC 300, coupler 400) to which the safety IO unit 100 is connected via the local bus.

安全IOモジュール130は、安全デバイスと電気的に接続され、安全デバイスによる検出結果などの入力を受け付けたり、安全デバイスへ信号を出力したりする。 The safety IO module 130 is electrically connected to the safety device, and accepts inputs such as detection results from the safety device and outputs signals to the safety device.

<実行可能プログラムの実行>
マルチコアプロセッサ102のコア11~13(図1参照)は、実行可能プログラム111を並行して実行する。コア11~13は、メインメモリ104の領域21~23(図1参照)をそれぞれ用いて、実行可能プログラム111を実行する。
<Running an executable program>
The cores 11 to 13 (see FIG. 1) of the multi-core processor 102 execute in parallel an executable program 111. The cores 11 to 13 execute the executable program 111 using the areas 21 to 23 (see FIG. 1) of the main memory 104, respectively.

コア11~13は、予め定められた制御周期ごとに、実行可能プログラム111を実行する。実行可能プログラム111は、少なくとも1つの演算処理を規定する。そのため、コア11~13は、実行可能プログラム111によって規定される少なくとも1つの演算処理を周期的に実行する。 Cores 11 to 13 execute executable program 111 at each predetermined control period. Executable program 111 defines at least one computational process. Therefore, cores 11 to 13 periodically execute at least one computational process defined by executable program 111.

<演算結果の照合およびデータの修復>
メイン演算部であるコア11は、コア11~13による演算処理が終了するたびに、照合修復プログラム112を実行する。
<Computation results verification and data recovery>
The core 11, which is the main calculation unit, executes the matching and repair program 112 every time the calculation processing by the cores 11 to 13 is completed.

具体的には、コア11は、コア11~13による演算処理の実行によって得られる3つの演算結果を照合する。当該3つの演算結果は、メインメモリ104の領域21~23にそれぞれ書き込まれる。そのため、コア11は、領域21~23に書き込まれた演算結果を照合する。なお、コア11は、演算結果の照合処理を行っている間、処理を待機するようにコア12,13に指示する。 Specifically, core 11 compares three calculation results obtained by the execution of calculation processes by cores 11 to 13. The three calculation results are written to areas 21 to 23 of main memory 104, respectively. Therefore, core 11 compares the calculation results written to areas 21 to 23. Note that core 11 instructs cores 12 and 13 to suspend processing while it is comparing the calculation results.

照合結果として、以下の(1)~(3)のパターンが考えられる。
(1)3つの演算結果が一致する。
(2)2つの演算結果が一致する。残り1つの演算結果は、上記の2つの演算結果と異なる。
(3)3つの演算結果が互いに異なる。
As a result of the comparison, the following patterns (1) to (3) are possible.
(1) The results of the three calculations are the same.
(2) Two of the calculation results match, and the remaining calculation result differs from the two above calculation results.
(3) The results of the three calculations are different from each other.

パターン(1)の場合、メインメモリ104にはソフトエラーが生じていないと推定される。そのため、コア11は、データの修復が不要と判断し、次の演算処理を開始するとともに、コア12,13に次の演算処理の開始を指示する。 In the case of pattern (1), it is estimated that no soft error has occurred in the main memory 104. Therefore, core 11 determines that data recovery is not necessary, and starts the next calculation process while instructing cores 12 and 13 to start the next calculation process.

パターン(3)の場合、メインメモリ104の領域21~23のうちの少なくとも2つにおいてソフトエラーが生じていると推定される。この場合、領域21~23のうちソフトエラーが生じていない領域の特定が困難である。そのため、コア11は、安全IOユニット100が異常状態であると判断し、異常信号を安全PLC300に出力する。安全PLC300は、異常信号を受けると、標準PLC200の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。 In the case of pattern (3), it is estimated that a soft error has occurred in at least two of areas 21 to 23 of the main memory 104. In this case, it is difficult to identify which of areas 21 to 23 has not experienced a soft error. Therefore, the core 11 determines that the safety IO unit 100 is in an abnormal state, and outputs an abnormality signal to the safety PLC 300. Upon receiving the abnormality signal, the safety PLC 300 cuts off the power supply to the controlled object of the standard PLC 200, and temporarily stops the control system 1.

ソフトエラーが発生する頻度は低い。そのため、メインメモリ104の2カ所において、ほぼ同じ時期にソフトエラーが発生する可能性が低い。したがって、パターン(2)の場合、互いに一致する演算結果が書き込まれている2つの領域において、ソフトエラーが生じていないと予想される。一方、領域21~23のうち、2つの領域の演算結果と異なる演算結果が書き込まれた領域(以下、「修復対象領域」と称する。)においてソフトエラーが生じていると推定される。そのため、コア11は、修復対象領域のデータの修復が必要であると判断し、修復対象領域のデータの修復処理を実行する。コア11は、データの修復処理が完了した後、次の演算処理を開始するとともに、コア12,13に次の演算処理の開始を指示する。 Soft errors occur infrequently. Therefore, it is unlikely that soft errors will occur at two locations in main memory 104 at approximately the same time. Therefore, in the case of pattern (2), it is expected that no soft errors have occurred in the two areas in which matching calculation results are written. On the other hand, it is estimated that a soft error has occurred in an area of areas 21 to 23 in which a calculation result different from the calculation results of the two areas is written (hereinafter referred to as the "area to be repaired"). Therefore, core 11 determines that the data in the area to be repaired needs to be repaired, and executes a repair process for the data in the area to be repaired. After completing the data repair process, core 11 starts the next calculation process and instructs cores 12 and 13 to start the next calculation process.

修復対象領域において、ソフトエラーが生じているビットを確認するためには、修復対象領域と残り2つの領域との全ビットの比較が必要となる。当該比較処理には時間がかかる。そのため、コア11は、当該比較処理を実行することなく、修復対象領域における少なくとも一部のデータを、残り2つの領域のいずれかのデータと一致するように書き換える。以下、修復対象領域におけるデータの修復方法の例について説明する。 To identify the bit in the repair target area where a soft error has occurred, it is necessary to compare all bits in the repair target area with the remaining two areas. This comparison process takes time. Therefore, the core 11 rewrites at least a portion of the data in the repair target area so that it matches the data in one of the remaining two areas, without performing this comparison process. An example of a method for repairing data in the repair target area is described below.

(修復対象領域におけるデータの修復方法の第1の例)
コア11は、修復対象領域以外のいずれかの領域の全てのデータと一致するように、修復対象領域の全てのデータを書き換えてもよい。これにより、ソフトエラーによって破損(データ化け)の生じているデータ、および、修復対象領域に書き込まれた演算結果の両者が正しい内容に修復される。
(First Example of Method for Restoring Data in a Region to be Restored)
The core 11 may rewrite all the data in the repair target area so that it matches all the data in any area other than the repair target area. This allows both the data corrupted (garbled) by the soft error and the operation result written in the repair target area to be repaired to the correct content.

(修復対象領域におけるデータの修復方法の第2の例)
上記第1の例では、ソフトエラーによって破損の生じているデータおよび演算結果の両者が正しい内容に修復される。しかしながら、修復対象領域の全てのデータが書き換えられるため、修復に要する時間が長くなる。当該修復を行なっている間、次の演算処理が開始されない。そのため、例えばライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されたとしても、安全IOユニット100から安全PLC300への当該入力信号の転送が遅延する。このような遅延時間を考慮して、安全距離を長くとる必要が生じる。具体的には、設備とライトカーテンとの距離を長く設定する。これにより、設備とライトカーテンとを含む生産ラインの規模が大きくなる。
(Second Example of Method for Restoring Data in a Region to be Restored)
In the first example, both the data corrupted by the soft error and the calculation result are restored to the correct contents. However, since all data in the area to be repaired is rewritten, the time required for the repair is long. During the repair, the next calculation process is not started. Therefore, even if an input signal indicating a human intrusion is provided from a safety device such as a light curtain, the transfer of the input signal from the safety IO unit 100 to the safety PLC 300 is delayed. In consideration of such a delay time, it becomes necessary to set a long safety distance. Specifically, the distance between the equipment and the light curtain is set long. This increases the scale of the production line including the equipment and the light curtain.

そのため、第2の例では、コア11は、修復対象領域のうちの一部のデータのみを、残り2つの領域のいずれかのデータと一致するように書き換える。 Therefore, in the second example, core 11 rewrites only a portion of the data in the area to be repaired so that it matches the data in one of the remaining two areas.

図5は、修復対象領域におけるデータの修復方法の第2の例を説明する図である。図5に示されるように、メインメモリ104の領域21,22,23の各々は、複数の演算処理にそれぞれ対応する複数のサブ領域を有する。領域21は、演算処理「プロセスA」~「プロセスX」にそれぞれ対応するサブ領域21a~21xを有する。同様に、領域22は、演算処理「プロセスA」~「プロセスX」にそれぞれ対応するサブ領域22a~22xを有する。領域23は、演算処理「プロセスA」~「プロセスX」にそれぞれ対応するサブ領域23a~23xを有する。各サブ領域には、対応する演算処理に用いられる変数群が書き込まれる。 Figure 5 is a diagram illustrating a second example of a method for repairing data in an area to be repaired. As shown in Figure 5, each of areas 21, 22, and 23 of main memory 104 has multiple subareas corresponding to multiple arithmetic processes, respectively. Area 21 has subareas 21a to 21x corresponding to arithmetic processes "Process A" to "Process X", respectively. Similarly, area 22 has subareas 22a to 22x corresponding to arithmetic processes "Process A" to "Process X", respectively. Area 23 has subareas 23a to 23x corresponding to arithmetic processes "Process A" to "Process X", respectively. A set of variables used for the corresponding arithmetic process is written into each subarea.

コア11は、複数の演算処理のうちの対象演算処理について、コア11~13の演算結果が上記のパターン(2)を満たすことに応じて、複数のサブ領域のうち対象演算処理に対応する対象サブ領域を特定する。例えば、コア11,12による演算処理「プロセスA」の演算結果が一致し、コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合、サブ領域21a~23aが対象サブ領域として特定される。 Core 11 identifies a target sub-area among the multiple sub-areas that corresponds to a target computation process among the multiple computation processes when the computation results of cores 11 to 13 satisfy the above pattern (2). For example, if the computation results of computation process "process A" by cores 11 and 12 match, and the computation result of computation process "process A" by core 13 does not match the computation result of computation process "process A" by cores 11 and 12, sub-areas 21a to 23a are identified as the target sub-area.

コア11は、互いに一致する2つの演算結果と一致しない演算結果を生成したコアに対応する対象サブ領域のデータを、残り2つのコアのいずれかに対応する対象サブ領域のデータと一致するように書き換える。例えば、コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合、サブ領域21aのデータと一致するようにサブ領域23aのデータが書き換えられる。 Core 11 rewrites the data in the target sub-area corresponding to the core that generated the inconsistent calculation result with the two matching calculation results so that it matches the data in the target sub-area corresponding to one of the remaining two cores. For example, if the calculation result of the calculation process "process A" by core 13 does not match the calculation result of the calculation process "process A" by cores 11 and 12, the data in sub-area 23a is rewritten to match the data in sub-area 21a.

コア13による演算処理「プロセスA」の演算結果がコア11,12による演算処理「プロセスA」の演算結果と一致しない場合、コア13による演算処理「プロセスA」に使用される変数を格納するサブ領域23aにおいてソフトエラーが生じていると推定される。サブ領域21aのデータと一致するようにサブ領域23aのデータが書き換えられることにより、ソフトエラーによって破損したデータが正しいデータに修復される。 If the calculation result of the calculation process "process A" by core 13 does not match the calculation result of the calculation process "process A" by cores 11 and 12, it is presumed that a soft error has occurred in sub-area 23a that stores the variables used in the calculation process "process A" by core 13. The data in sub-area 23a is rewritten so that it matches the data in sub-area 21a, and the data corrupted by the soft error is restored to the correct data.

データが書き換えられる対象は、領域23の全てではなく、領域23の一部であるサブ領域23aのみである。そのため、修復に要する時間が短縮される。その結果、例えば、設備とライトカーテンとを含む生産ラインの規模の増大が抑制される。 The data is rewritten not in the entire area 23, but only in sub-area 23a, which is a part of area 23. This reduces the time required for repairs. As a result, for example, the increase in the scale of the production line, including the equipment and the light curtain, is suppressed.

(修復対象領域におけるデータの修復方法の第3の例)
修復対象領域におけるデータの修復方法の第3の例は、上記の第2の例の変形例である。各サブ領域は、複数のブロックに予め分割されている。
(Third Example of Method for Restoring Data in Restoration Target Area)
The third example of the method for repairing data in the repair target area is a modification of the above-mentioned second example. Each sub-area is divided into a plurality of blocks in advance.

図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に分割される。 Figure 6 is a diagram illustrating a third example of a method for repairing data in an area to be repaired. Figure 6 shows a method for repairing data in an area to be repaired when the calculation result of the calculation process "process A" by core 13 does not match the calculation result of the calculation process "process A" by cores 11 and 12. Sub-area 21a is divided into a plurality of blocks 31_1, 31_2, ..., 31_M. Sub-area 22a is divided into a plurality of blocks 32_1, 32_2, ..., 32_M. Sub-area 23a is divided into a plurality of blocks 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を演算する。 As shown in FIG. 6, the core 11 calculates the error detection code CRC for each of the multiple blocks 31_1 to 31_M, 32_1 to 32_M, and 33_1 to 33_M in the subareas 21a, 22a, and 23a (target subareas) corresponding to the computation process "Process A."

コア11は、対象サブ領域の複数のブロックのうち、コア13が用いるサブ領域23aとコア11,12が用いるサブ領域21a,22aとの間で誤り検出符号CRCが一致しない対象ブロックを特定する。例えば、ブロック33_1の誤り検出符号CRCがブロック31_1,32_1の誤り検出符号CRCと一致しない場合、ブロック31_1,32_1,33_1が対象ブロックとして特定される。 Core 11 identifies a target block among the multiple blocks in the target sub-area for which the error detection code CRC does not match between sub-area 23a used by core 13 and sub-areas 21a and 22a used by cores 11 and 12. For example, if the error detection code CRC of block 33_1 does not match the error detection code CRC of blocks 31_1 and 32_1, blocks 31_1, 32_1, and 33_1 are identified as the target blocks.

コア11は、コア11,12が用いる対象ブロックのデータと一致するように、コア13が用いる対象ブロックのデータを書き換える。例えば、コア11は、コア11,12が用いるブロック31_1,32_1のいずれかのデータと一致するように、コア13が用いるブロック33_1のデータを書き換える。 Core 11 rewrites the data of the target block used by core 13 so that it matches the data of the target block used by cores 11 and 12. For example, core 11 rewrites the data of block 33_1 used by core 13 so that it matches the data of either block 31_1 or 32_1 used by cores 11 and 12.

コア13が用いるサブ領域23aとコア11,12が用いるサブ領域21a,22aとの間で誤り検出符号CRCが一致するブロックでは、ソフトエラーが生じていないと推定される。そのため、このようなブロックは、データが書き換えられる対象から除外される。すなわち、データが書き換えられる対象は、サブ領域23aのうち、誤り検出符号CRCがブロック31_1,32_1と一致しないブロック33_1のみに限定される。その結果、修復に要する時間がさらに短縮される。 In blocks where the error detection code CRC matches between the sub-area 23a used by core 13 and the sub-areas 21a and 22a used by cores 11 and 12, it is presumed that no soft errors have occurred. Therefore, such blocks are excluded from the targets for which data is rewritten. In other words, the targets for which data is rewritten are limited to only block 33_1 in sub-area 23a, whose error detection code CRC does not match blocks 31_1 and 32_1. As a result, the time required for repair is further reduced.

(修復対象領域におけるデータの修復方法の第4の例)
図7~図10を参照して、修復対象領域におけるデータの修復方法の第4の例を説明する。第4の例では、コア11は、あるコア(例えばコア13)の演算結果と残りのコア(例えばコア11,12)の演算結果とが一致しないことに応じて、当該残りのコアの演算結果と一致するように、メインメモリ104の当該あるコアの演算結果を書き換える。
(Fourth Example of Method for Restoring Data in a Restoration Target Area)
7 to 10, a fourth example of the method for recovering data in a region to be recovered will be described. In the fourth example, in response to a discrepancy between the calculation result of a certain core (e.g., core 13) and the calculation result of the remaining cores (e.g., cores 11 and 12), core 11 rewrites the calculation result of the certain core in main memory 104 so that the calculation result of the certain core matches the calculation result of the remaining core.

図7は、演算処理「プロセスA」が終了したときのメインメモリの状態の一例を示す図である。図7に示す例では、メインメモリ104の領域23においてソフトエラーが生じ、変数aが「1」から「3」に化けている。演算処理「プロセスA」は、以下の式(1)に従って変数xを更新する処理である。
x=(a+b)*c・・・式(1)。
7 is a diagram showing an example of the state of the main memory when the arithmetic process "process A" is completed. In the example shown in Fig. 7, a soft error occurs in area 23 of the main memory 104, and the variable a changes from "1" to "3". The arithmetic process "process A" is a process for updating the variable x according to the following formula (1).
x=(a+b)*c...Formula (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」に更新する。 As shown in FIG. 7, cores 11 and 12 read variables (variables a, b, c) used in the calculation from areas 21 and 22, respectively, and update variable x in areas 21 and 22 from "5" to "9" by executing calculation process "Process A". Similarly, core 13 reads variables a, b, c used in the calculation from area 23, and updates variable x in area 23 by executing calculation process "Process A". As mentioned above, data corruption has occurred in variable a in area 23. Therefore, core 13 updates variable x in area 23 from "5" to "15".

図8は、図7に示す演算処理「プロセスA」の後の修復処理の様子を示す図である。図8に示されるように、コア11は、コア11,12,13による演算処理「プロセスA」の演算結果を照合する。コア11は、コア13による演算結果「15」がコア11,12による演算結果「9」と異なることに応じて、領域23に書き込まれた演算結果「15」を、領域21,22に書き込まれた演算結果「9」に書き換える。これにより、領域23において、演算処理「プロセスA」の演算結果である変数xが正しい値に修復される。 Figure 8 is a diagram showing the state of the restoration process after the calculation process "process A" shown in Figure 7. As shown in Figure 8, core 11 collates the calculation results of the calculation process "process A" by cores 11, 12, and 13. In response to the fact that the calculation result "15" by core 13 differs from the calculation result "9" by cores 11 and 12, core 11 rewrites the calculation result "15" written in area 23 to the calculation result "9" written in areas 21 and 22. As a result, the variable x, which is the calculation result of the calculation process "process A", is restored to the correct value in area 23.

なお、コア11は、コア13による演算結果「15」がコア11,12による演算結果「9」と異なる原因まで検証しない。そのため、コア11は、領域23の変数aにデータ化けが発生していることを認識できず、変数aの修復を行なわない。 Note that core 11 does not verify the reason why the calculation result "15" by core 13 differs from the calculation result "9" by cores 11 and 12. Therefore, core 11 does not recognize that data corruption has occurred in variable a in area 23, and does not repair variable a.

図9は、図8に示す修復処理の後に演算処理「プロセスB」が実行されたときのメインメモリの状態の一例を示す図である。演算処理「プロセスB」は、以下の式(2)に従って変数aを更新する処理である。
a=a+1・・・式(2)。
Fig. 9 is a diagram showing an example of the state of the main memory when the calculation process "process B" is executed after the restoration process shown in Fig. 8. The calculation process "process B" is a process for updating the variable a according to the following formula (2).
a = a + 1... equation (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」に更新する。 As shown in FIG. 9, cores 11 and 12 read variable a to be used in the calculation from areas 21 and 22, respectively, and update variable a in areas 21 and 22 from "1" to "2" by executing calculation process "process B". Similarly, core 13 reads variable a to be used in the calculation from area 23, and updates variable a in area 23 by executing calculation process "process B". As mentioned above, data corruption has occurred in variable a in area 23. Therefore, core 13 updates variable x in area 23 from "3" to "4".

図10は、図9に示す演算処理「プロセスB」の後の修復処理の様子を示す図である。図10に示されるように、コア11は、コア11,12,13による演算処理「プロセスB」の演算結果を照合する。コア11は、コア13による演算結果「4」がコア11,12による演算結果「2」と異なることに応じて、領域23に書き込まれた演算結果「4」を、領域21,22に書き込まれた演算結果「2」に書き換える。これにより、領域23において、演算処理「プロセスB」の演算結果である変数aが正しい値に修復される。 Figure 10 is a diagram showing the state of the restoration process after the calculation process "process B" shown in Figure 9. As shown in Figure 10, core 11 collates the calculation results of the calculation process "process B" by cores 11, 12, and 13. In response to the fact that the calculation result "4" by core 13 differs from the calculation result "2" by cores 11 and 12, core 11 rewrites the calculation result "4" written in area 23 to the calculation result "2" written in areas 21 and 22. As a result, variable a, which is the calculation result of the calculation process "process B", is restored to the correct value in area 23.

このように、第4の例では、演算結果のみが修復される。そのため、修復に要する時間が短縮される。また、演算結果のみを修復する場合であっても、図7~10に示されるように、ソフトエラーによって破損(データ化け)の生じたデータについても修復され得る。 In this way, in the fourth example, only the calculation results are repaired. This reduces the time required for repair. Even when only the calculation results are repaired, data that has been corrupted (garbled) due to a soft error can also be repaired, as shown in Figures 7 to 10.

(修復対象領域におけるデータの修復方法の第5の例)
図11~図16を参照して、修復対象領域におけるデータの修復方法の第5の例を説明する。第5の例では、領域21~23の各々は、互いに同一のデータが書き込まれる2つのサブ領域を有する。コア11~13の各々は、2つのサブ領域のうちの一方のデータを読み出して演算処理を実行し、当該演算処理の実行に応じて、2つのサブ領域の両方のデータを更新する。
(Fifth Example of Method for Restoring Data in a Region to be Restored)
A fifth example of a method for repairing data in a repair target area will be described with reference to Figures 11 to 16. In the fifth example, each of areas 21 to 23 has two subareas into which the same data is written. Each of cores 11 to 13 reads data from one of the two subareas to perform arithmetic processing, and updates the data in both of the two subareas in response to the execution of the arithmetic processing.

図11は、演算処理「プロセスA」が終了したときのメインメモリの状態の別の例を示す図である。図11に示されるように、領域21は、互いに同一のデータが書き込まれるサブ領域41a,41bを有する。領域22は、互いに同一のデータが書き込まれるサブ領域42a,42bを有する。領域23は、互いに同一のデータが書き込まれるサブ領域43a,43bを有する。ただし、図11に示す例では、メインメモリ104の領域23のサブ領域43aにおいてソフトエラーが生じ、変数aが「1」から「3」に化けている。 Figure 11 is a diagram showing another example of the state of the main memory when the computation process "Process A" is completed. As shown in Figure 11, area 21 has subareas 41a and 41b in which the same data is written. Area 22 has subareas 42a and 42b in which the same data is written. Area 23 has subareas 43a and 43b in which the same data is written. However, in the example shown in Figure 11, a soft error has occurred in subarea 43a of area 23 in main memory 104, causing variable a to change from "1" to "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」に更新する。 As shown in FIG. 11, the core 11 reads the variables (variables a, b, c) used in the calculation from the sub-area 41a, and updates the variables x in both sub-areas 41a and 41b from "5" to "9" in accordance with the execution of the calculation process "Process A". The core 12 reads the variables (variables a, b, c) used in the calculation from the sub-area 42a, and updates the variables x in both sub-areas 42a and 42b from "5" to "9" in accordance with the execution of the calculation process "Process A". Similarly, the core 13 reads the variables (variables a, b, c) used in the calculation from the sub-area 43a, and updates the variables x in both sub-areas 43a and 43b in accordance with the execution of the calculation process "Process A". As described above, data corruption has occurred in the variable a in the sub-area 43a. Therefore, the core 13 updates the variables x in the sub-areas 43a and 43b from "5" to "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に切り替える。 Figure 12 is a diagram showing the state of the comparison process after the calculation process "process A" shown in Figure 11. As shown in Figure 12, core 11 compares the calculation results of the calculation process "process A" by cores 11, 12, and 13. Since the calculation result "15" by core 13 differs from the calculation result "9" by cores 11 and 12, it is estimated that a soft error has occurred in sub-area 43a. Therefore, in response to the fact that the calculation result "15" by core 13 differs from the calculation result "9" by cores 11 and 12, core 11 switches the area used by core 13 for calculation processing from sub-area 43a to sub-area 43b.

図13は、図12に示す照合処理の後に演算処理「プロセスB」が実行されたときのメインメモリ104の状態の一例を示す図である。 Figure 13 is a diagram showing an example of the state of the main memory 104 when the calculation process "process B" is executed after the matching process shown in Figure 12.

図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の値が正しい値に修復される。 As shown in FIG. 13, the core 11 reads the variable a used in the calculation from the sub-area 41a, and updates the variables a in both sub-areas 41a and 41b from "1" to "2" in accordance with the execution of the calculation process "Process B". The core 12 reads the variable a used in the calculation from the sub-area 42a, and updates the variables a in both sub-areas 42a and 42b from "1" to "2" in accordance with the execution of the calculation process "Process B". The core 13 reads the variable a used in the calculation from the sub-area 43b, and updates the variables a in both sub-areas 43a and 43b in accordance with the execution of the calculation process "Process B". Although data corruption has occurred in the variable a in the sub-area 43a, data corruption has not occurred in the sub-area 43b. Therefore, the core 13 updates the variable a in the sub-area 43a from "3" to "2" and updates the variable a in the sub-area 43b from "1" to "2". This restores the value of variable a in subarea 43a to the correct value.

図14は、図13に示す演算処理「プロセスB」の後に演算処理「プロセスC」が実行されたときのメインメモリの状態の一例を示す図である。演算処理「プロセスC」は、以下の式(3)に従って変数xを更新する処理である。
x=4*c・・・式(3)。
Fig. 14 is a diagram showing an example of the state of the main memory when the arithmetic process "process C" is executed after the arithmetic process "process B" shown in Fig. 13. The arithmetic process "process C" is a process for updating a variable x according to the following formula (3).
x=4*c...Formula (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の値が正しい値に修復される。 As shown in FIG. 14, core 11 reads variable c used in the calculation from sub-area 41a, and updates variable x in both sub-areas 41a and 41b from "9" to "12" in accordance with the execution of calculation process "process C". Core 12 reads variable c used in the calculation from sub-area 42a, and updates variable x in both sub-areas 42a and 42b from "9" to "12" in accordance with the execution of calculation process "process C". Core 13 reads variable c used in the calculation from sub-area 43b, and updates variable x in both sub-areas 43a and 43b from "15" to "12" in accordance with the execution of calculation process "process C". This restores the values of variable x in sub-areas 43a and 43b to their correct values.

図15は、図13に示す演算処理「プロセスB」の後に演算処理「プロセスC’」が実行されたときのメインメモリの状態の一例を示す図である。演算処理「プロセスC’」は、以下の式(4)に従って変数xを更新する処理である。
x=x+1・・・式(4)。
Fig. 15 is a diagram showing an example of the state of the main memory when the arithmetic process "process C'" is executed after the arithmetic process "process B" shown in Fig. 13. The arithmetic process "process C'" is a process that updates a variable x according to the following formula (4).
x=x+1...Formula (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」に更新する。 As shown in FIG. 15, core 11 reads variable x used in the calculation from sub-area 41a, and updates variable x in both sub-areas 41a and 41b from "9" to "10" in accordance with the execution of calculation process "process C'". Core 12 reads variable x used in the calculation from sub-area 42a, and updates variable x in both sub-areas 42a and 42b from "9" to "10" in accordance with the execution of calculation process "process C'". Core 13 reads variable x used in the calculation from sub-area 43b, and updates variable x in both sub-areas 43a and 43b from "15" to "16" in accordance with the execution of calculation process "process C'".

図16は、図15に示す演算処理「プロセスC’」の後の照合修復処理の様子を示す図である。図16に示されるように、コア11は、コア11,12,13による演算処理「プロセスC’」の演算結果を照合する。コア11は、コア13による演算結果「16」がコア11,12による演算結果「10」と異なることに応じて、領域23の修復が必要であると判断する。そして、コア11は、たとえば上記の第1の例に従って、領域21,22のいずれかの全てのデータと一致するように、修復対象領域である領域23の全てのデータを書き換える。これにより、サブ領域43a,43bの変数xの値が正しい値に修復される。 Figure 16 is a diagram showing the state of the comparison and repair process after the calculation process "process C'" shown in Figure 15. As shown in Figure 16, core 11 compares the calculation results of the calculation process "process C'" by cores 11, 12, and 13. Core 11 determines that repair of area 23 is necessary because the calculation result "16" by core 13 differs from the calculation result "10" by cores 11 and 12. Then, core 11 rewrites all data in area 23, which is the area to be repaired, so that it matches all data in either area 21 or 22, for example, according to the first example above. As a result, the values of variables x in subareas 43a and 43b are repaired to the correct value.

第5の例によれば、サブ領域41a~43aを用いた演算結果が不一致であったとしても、データの修復は行われない。そのため、データの修復処理を行なう頻度を下げることができる。すなわち、データの修復のために演算処理の実行が待機される頻度を下げることができる。 According to the fifth example, even if the results of the calculations using the sub-areas 41a to 43a are inconsistent, the data is not repaired. This makes it possible to reduce the frequency with which data repair processing is performed. In other words, it is possible to reduce the frequency with which the execution of calculation processing is put on hold in order to repair data.

さらに、図11~図14に示されるように、演算処理の内容によっては、ソフトエラーによって破損したデータが通常の演算処理によって自動的に修復され得る。 Furthermore, as shown in Figures 11 to 14, depending on the content of the calculation process, data corrupted by a soft error can be automatically repaired by normal calculation processing.

<変形例>
上記の説明では、安全IOユニット100は、複数のコアを有するマルチコアプロセッサ102を備えるものとした。しかしながら、安全IOユニット100は、マルチコアプロセッサ102の代わりに、複数のプロセッサを有するマルチプロセッサを備えてもよい。複数のプロセッサは、演算部として動作する。例えば、安全IOユニット100は、3個のプロセッサを有するマルチプロセッサを備える。3個のプロセッサは、メインメモリ104の領域21,22,23を用いて演算処理をそれぞれ実行する。3個のプロセッサのうちの1つは、メイン演算部として動作する。メイン演算部として動作するプロセッサは、上記のコア11と同様に、照合修復処理を実行する。
<Modification>
In the above description, the safety IO unit 100 is provided with a multi-core processor 102 having multiple cores. However, the safety IO unit 100 may be provided with a multi-processor having multiple processors instead of the multi-core processor 102. The multiple processors operate as a calculation unit. For example, the safety IO unit 100 is provided with a multi-processor having three processors. The three processors each execute a calculation process using areas 21, 22, and 23 of the main memory 104. One of the three processors operates as a main calculation unit. The processor operating as the main calculation unit executes a verification and repair process in the same manner as the above-mentioned core 11.

標準PLC200、安全PLC300およびカプラ400も、安全IOユニット100と同様に、マルチコアプロセッサが搭載され、照合修復プログラムを有していてもよい。これにより、標準PLC200、安全PLC300およびカプラ400も、メインメモリにソフトエラーが生じたとしても動作を継続できる。その結果、制御システム1の停止の頻度が抑制される。 The standard PLC 200, the safety PLC 300, and the coupler 400, like the safety IO unit 100, may also be equipped with a multi-core processor and have a verification and repair program. This allows the standard PLC 200, the safety PLC 300, and the coupler 400 to continue operating even if a soft error occurs in the main memory. As a result, the frequency of stoppages of the control system 1 is reduced.

§3 付記
以上のように、本実施の形態は以下のような開示を含む。
§3 Supplementary Note As described above, the present embodiment includes the following disclosure.

(構成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)。
(Configuration 1)
A data processing device (100) for executing at least one arithmetic process,
First to Nth calculation units (11 to 13),
A memory (104),
N is an integer of 3 or more,
One of the first to Nth calculation units (11 to 13) is a main calculation unit (11),
The memory (104) has first to Nth areas (21 to 23) in which the same data is stored,
the first to Nth calculation units (11 to 13) execute the at least one calculation process using data stored in the first to Nth areas (21 to 23), respectively;
The main calculation unit (11)
collating the calculation results by the first to Nth calculation units (11 to 13) for each of the at least one calculation process;
In response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units (11 to 13), the operation of the first to Nth calculation units (11 to 13) is continued;
a data processing device (100) that rewrites at least a portion of the data in the first area (23) so that it matches any of the data in the second to Nth areas (21, 22) in response to a discrepancy between the calculation result of the first calculation unit (13) and the calculation results of the second to Nth calculation units (11, 12).

(構成2)
前記メイン演算部(11)は、前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11,12)の前記演算結果とが一致しないことに応じて、前記第2~第Nの領域(21,22)のいずれかの全てのデータと一致するように、前記第1の領域(23)の全てのデータを書き換える、構成1に記載のデータ処理装置。
(Configuration 2)
The data processing device of configuration 1, wherein the main calculation unit (11) rewrites all data in the first area (23) to match all data in any of the second to Nth areas (21, 22) in response to a discrepancy between the calculation result of the first calculation unit (13) and the calculation results of the second to Nth calculation units (11, 12).

(構成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)。
(Configuration 3)
The at least one arithmetic operation includes a plurality of arithmetic operations,
Each of the first to Nth regions (21 to 23) has a plurality of sub-regions (21 a to 21 x, 22 a to 22 x, 23 a to 23 x) for storing data to be overwritten by the execution of the plurality of arithmetic processes,
The main calculation unit (11)
identifying a target sub-area (21a, 22a, 23a) corresponding to the target arithmetic process among the plurality of sub-areas (21a to 21x, 22a to 22x, 23a to 23x) in response to a mismatch between the arithmetic result of the first arithmetic unit (13) and the arithmetic result of the second to Nth arithmetic units (11, 12) for a target arithmetic process among the plurality of arithmetic processes;
The data processing device (100) according to configuration 1, wherein data of the target sub-area (23a) used by the first calculation unit (13) is rewritten so as to match data of the target sub-area (21a, 22a) used by any of the second to Nth calculation units (11, 12).

(構成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)。
(Configuration 4)
Each of the plurality of sub-regions (21a to 21x, 22a to 22x, 23a to 23x) is divided into a plurality of blocks (31_1 to 31_M, 32_1 to 32_M, 33_1 to 33_M),
The main calculation unit (11)
Computing an error detection code for each of the blocks of the target sub-region (21 a, 22 a, 23 a);
Identifying a target block (31_1, 32_1, 33_1) among the plurality of blocks of the target sub-area, in which the error detection code does not match between the target sub-area used by the first calculation unit (13) and the target sub-area used by the second to Nth calculation units (11, 12);
The data processing device (100) according to configuration 3, wherein data of the target block (33_1) used by the first calculation unit (13) is rewritten so as to match data of the target block (31_1, 32_1) used by the second to Nth calculation units (11, 12).

(構成5)
前記第1~第Nの演算部(11~13)は、前記演算結果を前記第1~第Nの領域(21~23)にそれぞれ書き込み、
前記メイン演算部(11)は、
前記第1の演算部(13)の前記演算結果と前記第2~第Nの演算部(11,12)の前記演算結果とが一致しないことに応じて、前記第2~第Nの演算部(11,12)の前記演算結果と一致するように、前記第1の領域(23)に書き込まれた前記演算結果を書き換える、構成1に記載のデータ処理装置(100)。
(Configuration 5)
the first to Nth calculation units (11 to 13) write the calculation results into the first to Nth areas (21 to 23), respectively;
The main calculation unit (11)
The data processing device (100) according to configuration 1, wherein, in response to a discrepancy between the calculation result of the first calculation unit (13) and the calculation results of the second to Nth calculation units (11, 12), the calculation result written in the first area (23) is rewritten so as to match the calculation result of the second to Nth calculation units (11, 12).

(構成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)。
(Configuration 6)
Each of the first to Nth regions (21 to 23) has a first sub-region (41a, 42a, 43a) and a second sub-region (41b, 42b, 43b) in which the same data is written,
Each of the first to Nth calculation units (11 to 13)
reading data from one of the first sub-area (41a, 42a, 43a) and the second sub-area (41b, 42b, 43b) to execute the at least one arithmetic process;
updating data of both the first sub-area (41 a, 42 a, 43 a) and the second sub-area (41 b, 42 b, 43 b) in response to execution of the at least one arithmetic process;
the at least one arithmetic process includes a first arithmetic process and a second arithmetic process executed after the first arithmetic process;
The main calculation unit (11)
in response to a result of the first arithmetic process by the first arithmetic unit (13) using the data of the first sub-area (43a) not matching a result of the first arithmetic process by the second to N-th arithmetic units (11, 12) using the data of the first sub-area (41a, 42a), switching an area from which the first arithmetic unit (13) reads data in the second arithmetic process from the first sub-area (43a) to the second sub-area (43b);
The data processing device (100) according to configuration 1, wherein, in response to a result of the second arithmetic processing by the first arithmetic unit (13) using data in the second sub-area (43b) not matching a result of the second arithmetic processing by the second to Nth arithmetic units (11a, 12) using data in the first sub-area (41a, 42a), at least a portion of the data in the first area (23) is rewritten so as to match the data in the second to Nth areas (21, 22).

(構成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)のいずれかのデータと一致するように書き換えるステップと、を備えるデータ処理方法。
(Configuration 7)
A data processing method for a data processing device (100) that executes at least one arithmetic process, comprising the steps of:
The data processing device (100)
First to Nth calculation units (11 to 13),
A memory (104),
N is an integer of 3 or more,
One of the first to Nth calculation units (11 to 13) is a main calculation unit (11),
The memory (104) has first to Nth areas (21 to 23) in which the same data is stored,
The data processing method includes:
a step in which the first to Nth calculation units (11 to 13) execute the at least one calculation process using data stored in the first to Nth areas (21 to 23);
a step in which the main calculation unit (11) checks the calculation results by the first to Nth calculation units (11 to 13) for each of the at least one calculation process;
a step in which the main calculation unit (11) continues the operation of the first to Nth calculation units (11 to 13) in response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units (11 to 13);
a step in which the main calculation unit (11) rewrites at least a portion of the data in the first area (23) so that it matches any of the data in the second to Nth areas (21, 22) in response to a discrepancy between the calculation result of the first calculation unit (13) and the calculation results of the second to Nth calculation units (11a, 12).

(構成8)
構成7に記載のデータ処理方法を前記第1~第Nの演算部(11~13)に実行させるコンピュータ読取可能なプログラム。
(Configuration 8)
A computer-readable program for causing the first to Nth calculation units (11 to 13) to execute the data processing method according to configuration 7.

本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。 Although the embodiments of the present invention have been described, the embodiments disclosed herein should be considered to be illustrative and not restrictive in all respects. The scope of the present invention is defined by the claims, and it is intended to include all modifications within the meaning and scope of the claims.

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 カプラ。 1 Control system, 2 Field network, 11, 12, 13 Core, 21, 22, 23 Area, 21a to 21x, 22a to 22x, 23a to 23x, 41a, 41b, 42a, 42b, 43a, 43b Sub-area, 31_1 to 31_M, 32_1 to 32_M, 33_1 to 33_M Block, 100 Safety IO unit, 102 Multi-core processor, 104 Main memory, 110 Storage, 111 Executable program, 112 Verification repair program, 120 Local bus controller, 130 Safety IO module, 140 Processor bus, 200 Standard PLC, 300 Safety PLC, 400 Coupler.

Claims (6)

少なくとも1つの演算処理を実行するデータ処理装置であって、
第1~第Nの演算部と、
メモリと、を備え、
Nは3以上の整数であり、
前記第1~第Nの演算部のうちの1つは、メイン演算部であり、
前記メモリは、互いに同一のデータが格納される第1~第Nの領域を有し、
前記第1~第Nの演算部は、前記第1~第Nの領域に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行し、
前記メイン演算部は、
前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部による演算結果を照合し、
前記第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部の動作を継続させ、
前記少なくとも1つの演算処理は、複数の演算処理を含み、
前記第1~第Nの領域の各々は、前記複数の演算処理の実行によって上書きされるデータをそれぞれ記憶する複数のサブ領域を有し、
前記メイン演算部は、
前記複数の演算処理のうちの対象演算処理について、前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記複数のサブ領域のうち前記対象演算処理に対応する対象サブ領域を特定し、
前記第2~第Nの演算部のいずれかが用いる前記対象サブ領域のデータと一致するように、前記第1の演算部が用いる前記対象サブ領域のデータを書き換える、データ処理装置。
A data processing device for performing at least one arithmetic operation, comprising:
First to Nth calculation units;
A memory,
N is an integer of 3 or more,
one of the first to Nth calculation units is a main calculation unit;
the memory has first to Nth areas in which the same data is stored;
the first to Nth calculation units respectively execute the at least one calculation process using data stored in the first to Nth areas;
The main calculation unit includes:
collating the calculation results by the first to Nth calculation units for each of the at least one calculation process;
continuing the operation of the first to Nth calculation units in response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units;
The at least one arithmetic operation includes a plurality of arithmetic operations,
each of the first to Nth regions has a plurality of sub-regions for storing data to be overwritten by execution of the plurality of arithmetic operations;
The main calculation unit is
identifying a target sub-area among the plurality of sub-areas corresponding to a target arithmetic process among the plurality of arithmetic processes in response to a discrepancy between the arithmetic result of the first arithmetic unit and the arithmetic results of the second to Nth arithmetic units;
a data processing device that rewrites data of the target sub-region used by the first calculation unit so as to match data of the target sub-region used by any of the second to Nth calculation units .
前記複数のサブ領域の各々は、複数のブロックに分割され、
前記メイン演算部は、
前記対象サブ領域の前記複数のブロックの各々の誤り検出符号を演算し、
前記対象サブ領域の前記複数のブロックのうち、前記第1の演算部が用いる前記対象サブ領域と前記第2~第Nの演算部が用いる前記対象サブ領域との間で前記誤り検出符号が一致しない対象ブロックを特定し、
前記第2~第Nの演算部が用いる前記対象ブロックのデータと一致するように、前記第1の演算部が用いる前記対象ブロックのデータを書き換える、請求項1に記載のデータ処理装置。
Each of the plurality of sub-regions is divided into a plurality of blocks;
The main calculation unit includes:
Computing an error detection code for each of the plurality of blocks of the target sub-region;
Identifying a target block among the plurality of blocks of the target sub-area, in which the error detection code does not match between the target sub-area used by the first calculation unit and the target sub-areas used by the second to Nth calculation units;
2. The data processing device according to claim 1, wherein data of the target block used by said first processing unit is rewritten so as to coincide with data of the target block used by said second to Nth processing units.
少なくとも1つの演算処理を実行するデータ処理装置であって、
第1~第Nの演算部と、
メモリと、を備え、
Nは3以上の整数であり、
前記第1~第Nの演算部のうちの1つは、メイン演算部であり、
前記メモリは、互いに同一のデータが格納される第1~第Nの領域を有し、
前記第1~第Nの演算部は、前記第1~第Nの領域に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行し、
前記メイン演算部は、
前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部による演算結果を照合し、
前記第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部の動作を継続させ、
前記第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の領域のデータと一致するように書き換える、データ処理装置。
A data processing device for performing at least one arithmetic operation, comprising:
First to Nth calculation units;
A memory,
N is an integer of 3 or more,
one of the first to Nth calculation units is a main calculation unit;
the memory has first to Nth areas in which the same data is stored;
the first to Nth calculation units respectively execute the at least one calculation process using data stored in the first to Nth areas;
The main calculation unit is
collating the calculation results by the first to Nth calculation units for each of the at least one calculation process;
continuing the operation of the first to Nth calculation units in response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units;
Each of the first to Nth regions has a first sub-region and a second sub-region in which the same data is written;
Each of the first to Nth calculation units is
reading data from one of the first sub-area and the second sub-area to perform the at least one arithmetic operation;
updating data of both the first sub-region and the second sub-region in response to execution of the at least one arithmetic operation;
the at least one arithmetic process includes a first arithmetic process and a second arithmetic process executed after the first arithmetic process;
The main calculation unit includes:
switching an area from which the first calculation unit reads data to the second sub-area in the second calculation process in response to a result of the first calculation process by the first calculation unit using the data of the first sub-area not matching a result of the first calculation process by the second to Nth calculation units using the data of the first sub-area;
a data processing device which rewrites at least a portion of the data in the first region so that it matches the data in the second to Nth regions in response to a calculation result of the second calculation process by the first calculation unit using the data in the second sub-region not matching a calculation result of the second calculation process by the second to Nth calculation units using the data in the first sub-region.
少なくとも1つの演算処理を実行するデータ処理装置のデータ処理方法であって、
前記データ処理装置は、
第1~第Nの演算部と、
メモリと、を備え、
Nは3以上の整数であり、
前記第1~第Nの演算部のうちの1つは、メイン演算部であり、
前記メモリは、互いに同一のデータが格納される第1~第Nの領域を有し、
前記データ処理方法は、
前記第1~第Nの演算部が、前記第1~第Nの領域に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行するステップと、
前記メイン演算部が、前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部による演算結果を照合するステップと、
前記メイン演算部が、前記第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部の動作を継続させるステップと、を備え、
前記少なくとも1つの演算処理は、複数の演算処理を含み、
前記第1~第Nの領域の各々は、前記複数の演算処理の実行によって上書きされるデータをそれぞれ記憶する複数のサブ領域を有し、
前記データ処理方法は、さらに、
前記メイン演算部が、前記複数の演算処理のうちの対象演算処理について、前記第1の演算部の前記演算結果と前記第2~第Nの演算部の前記演算結果とが一致しないことに応じて、前記複数のサブ領域のうち前記対象演算処理に対応する対象サブ領域を特定するステップと、
前記メイン演算部が、前記第2~第Nの演算部のいずれかが用いる前記対象サブ領域のデータと一致するように、前記第1の演算部が用いる前記対象サブ領域のデータを書き換えるステップと、を備える、データ処理方法。
A data processing method for a data processing device that executes at least one arithmetic process, comprising the steps of:
The data processing device includes:
First to Nth calculation units;
A memory,
N is an integer of 3 or more,
one of the first to Nth calculation units is a main calculation unit;
the memory has first to Nth areas in which the same data is stored;
The data processing method includes:
a step in which the first to Nth calculation units execute the at least one calculation process using data stored in the first to Nth areas, respectively;
a step in which the main calculation unit checks the calculation results by the first to Nth calculation units for each of the at least one calculation process;
a step of causing the main calculation unit to continue the operation of the first to Nth calculation units in response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units ;
The at least one arithmetic operation includes a plurality of arithmetic operations,
each of the first to Nth regions has a plurality of sub-regions for storing data to be overwritten by execution of the plurality of arithmetic operations;
The data processing method further comprises:
the main calculation unit, in response to a mismatch between the calculation result of the first calculation unit and the calculation results of the second to Nth calculation units for a target calculation process among the plurality of calculation processes, identifies a target sub-area among the plurality of sub-areas corresponding to the target calculation process;
A data processing method comprising a step in which the main calculation unit rewrites the data of the target sub-area used by the first calculation unit so that it matches the data of the target sub-area used by any of the second to Nth calculation units .
少なくとも1つの演算処理を実行するデータ処理装置のデータ処理方法であって、A data processing method for a data processing device that executes at least one arithmetic process, comprising the steps of:
前記データ処理装置は、The data processing device includes:
第1~第Nの演算部と、First to Nth calculation units;
メモリと、を備え、A memory,
Nは3以上の整数であり、N is an integer of 3 or more,
前記第1~第Nの演算部のうちの1つは、メイン演算部であり、one of the first to Nth calculation units is a main calculation unit;
前記メモリは、互いに同一のデータが格納される第1~第Nの領域を有し、the memory has first to Nth areas in which the same data is stored;
前記データ処理方法は、The data processing method includes:
前記第1~第Nの演算部が、前記第1~第Nの領域に格納されたデータを用いて前記少なくとも1つの演算処理をそれぞれ実行するステップと、a step in which the first to Nth calculation units execute the at least one calculation process using data stored in the first to Nth areas, respectively;
前記メイン演算部が、前記少なくとも1つの演算処理の各々について、前記第1~第Nの演算部による演算結果を照合するステップと、a step in which the main calculation unit checks the calculation results by the first to Nth calculation units for each of the at least one calculation process;
前記メイン演算部が、前記第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、前記第1~第Nの演算部の動作を継続させるステップと、を備え、a step of causing the main calculation unit to continue the operation of the first to Nth calculation units in response to a match between a predetermined number or more of the calculation results by the first to Nth calculation units;
前記第1~第Nの領域の各々は、互いに同一のデータが書き込まれる第1のサブ領域および第2のサブ領域を有し、Each of the first to Nth regions has a first sub-region and a second sub-region in which the same data is written;
前記データ処理方法は、さらに、The data processing method further comprises:
前記第1~第Nの演算部の各々が、前記第1のサブ領域および前記第2のサブ領域のうちの一方のデータを読み出して前記少なくとも1つの演算処理を実行するステップと、Each of the first to Nth arithmetic units reads data from one of the first sub-area and the second sub-area and executes the at least one arithmetic process;
前記第1~第Nの演算部の各々が、前記少なくとも1つの演算処理の実行に応じて、前記第1のサブ領域および前記第2のサブ領域の両方のデータを更新するステップと、を備え、each of the first to Nth calculation units updates data of both the first sub-region and the second sub-region in response to execution of the at least one calculation process;
前記少なくとも1つの演算処理は、第1の演算処理と、前記第1の演算処理の後に実行される第2の演算処理とを含み、the at least one arithmetic process includes a first arithmetic process and a second arithmetic process executed after the first arithmetic process;
前記データ処理方法は、さらに、The data processing method further comprises:
前記メイン演算部が、前記第1のサブ領域のデータを用いた前記第1の演算部による前記第1の演算処理の演算結果が前記第1のサブ領域のデータを用いた前記第2~第Nの演算部による前記第1の演算処理の前記演算結果と一致しないことに応じて、前記第2の演算処理において、前記第1の演算部がデータを読み出す領域を前記第1のサブ領域から前記第2のサブ領域に切り替えるステップと、a step of the main calculation unit switching an area from which the first calculation unit reads data in the second calculation process from the first sub-area to the second sub-area in response to a result of the first calculation process by the first calculation unit using the data of the first sub-area not matching a result of the first calculation process by the second to Nth calculation units using the data of the first sub-area;
前記メイン演算部が、前記第2のサブ領域のデータを用いた前記第1の演算部による前記第2の演算処理の演算結果が前記第1のサブ領域のデータを用いた前記第2~第Nの演算部による前記第2の演算処理の演算結果と一致しないことに応じて、前記第1の領域の少なくとも一部のデータを前記第2~第Nの領域のデータと一致するように書き換えるステップと、を備える、データ処理方法。a step in which the main calculation unit rewrites at least a portion of the data in the first area to match the data in the second to Nth areas in response to a calculation result of the second calculation process by the first calculation unit using the data in the second sub-area not matching a calculation result of the second calculation process by the second to Nth calculation units using the data in the first sub-area.
請求項4または5に記載のデータ処理方法を前記第1~第Nの演算部に実行させるコンピュータ読取可能なプログラム。 6. A computer-readable program for causing the first to Nth calculation units to execute the data processing method according to claim 4 or 5 .
JP2021035290A 2021-03-05 2021-03-05 Data processing device, data processing method and program Active JP7694064B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021035290A JP7694064B2 (en) 2021-03-05 2021-03-05 Data processing device, data processing method and program
PCT/JP2021/034456 WO2022185582A1 (en) 2021-03-05 2021-09-21 Data processing device, data processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021035290A JP7694064B2 (en) 2021-03-05 2021-03-05 Data processing device, data processing method and program

Publications (2)

Publication Number Publication Date
JP2022135468A JP2022135468A (en) 2022-09-15
JP7694064B2 true JP7694064B2 (en) 2025-06-18

Family

ID=83155242

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021035290A Active JP7694064B2 (en) 2021-03-05 2021-03-05 Data processing device, data processing method and program

Country Status (2)

Country Link
JP (1) JP7694064B2 (en)
WO (1) WO2022185582A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019053617A (en) 2017-09-15 2019-04-04 株式会社東芝 System LSI and system LSI failure detection method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62229333A (en) * 1985-06-17 1987-10-08 Nec Corp Multiplexing processor
JPH04111032A (en) * 1990-08-31 1992-04-13 Toshiba Corp Multiplexed storage device
JP2772713B2 (en) * 1990-11-20 1998-07-09 株式会社次世代航空機基盤技術研究所 Fault-tolerant multiprocessor system
JP3246751B2 (en) * 1991-01-25 2002-01-15 株式会社日立製作所 High-reliability computer system, its recovery method, processor board and its replacement method
JPH05189837A (en) * 1992-01-16 1993-07-30 Sony Corp Electronic equipment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019053617A (en) 2017-09-15 2019-04-04 株式会社東芝 System LSI and system LSI failure detection method

Also Published As

Publication number Publication date
WO2022185582A1 (en) 2022-09-09
JP2022135468A (en) 2022-09-15

Similar Documents

Publication Publication Date Title
US7793147B2 (en) Methods and systems for providing reconfigurable and recoverable computing resources
US10073749B2 (en) Fault tolerant industrial automation control system
TW202429284A (en) Processor and method of detecting soft error using the same
EP3673373A1 (en) Ensuring a correct program sequence in a dual-processor architecture
CN108737153A (en) Block chain disaster recovery and backup systems, method, server and computer readable storage medium
JP7694064B2 (en) Data processing device, data processing method and program
JP2017146833A (en) Monitoring device, fault tolerant system, and method
KR20050121729A (en) Program-controlled unit and method
JP6729825B1 (en) Information processing apparatus, control method, and program
JP2009187373A (en) Programmable controller
JP6733843B1 (en) Data processing device, control method and program
JP4483876B2 (en) Storage device control method in duplex system
JP6721140B1 (en) Data processing device, data processing method and program
JPWO2015068207A1 (en) Programmable device
JP2014229130A (en) Highly reliable processor and highly reliable control device using the same
US11119461B2 (en) Controller
JP2000298594A (en) Controlling method of fault tolerance and redundant computer system
KR20230063247A (en) Fault recovery system
JP4810488B2 (en) Duplex control apparatus and tracking method thereof
JP4867557B2 (en) Programmable controller
US11507478B2 (en) Method for operating a redundant automation system
WO2015011792A1 (en) Field programmable gate array and control apparatus
Gullo Design for Software Maintainability
CN117667508A (en) Processor and method for detecting soft error using the same
Kirrmann 2.5 Dependable Automation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250418

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20250507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250520

R150 Certificate of patent or registration of utility model

Ref document number: 7694064

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150