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

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

Info

Publication number
WO2022185582A1
WO2022185582A1 PCT/JP2021/034456 JP2021034456W WO2022185582A1 WO 2022185582 A1 WO2022185582 A1 WO 2022185582A1 JP 2021034456 W JP2021034456 W JP 2021034456W WO 2022185582 A1 WO2022185582 A1 WO 2022185582A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
calculation
nth
sub
region
Prior art date
Application number
PCT/JP2021/034456
Other languages
English (en)
French (fr)
Inventor
大輝 伊達
Original Assignee
オムロン株式会社
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 オムロン株式会社 filed Critical オムロン株式会社
Publication of WO2022185582A1 publication Critical patent/WO2022185582A1/ja

Links

Images

Classifications

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

Definitions

  • the present disclosure relates to a data processing device, data processing method and program.
  • Soft errors are caused, for example, by alpha particle or cosmic neutron collisions.
  • the soft error may cause the system to temporarily stop.
  • Patent Document 1 discloses a data processing device that includes a processing unit that writes and reads specified variables from memory. Upon receiving the write instruction, the processing unit writes data indicating the value of the designated variable to each of the three areas of the memory. As a result, data is tripled in the memory, and even if a soft error occurs in one data, processing can be continued using the remaining two data.
  • the processing unit upon receiving a read instruction, sequentially reads data from each of the three areas in the memory. Arithmetic processing is then sequentially executed using the read data. Therefore, the same arithmetic processing is repeated three times, and the time required for the arithmetic processing becomes long. That is, the processing speed is lowered.
  • the present disclosure has been made in view of the above problems, and aims to provide a data processing device and a data processing method capable of continuing operation even if a soft error occurs and suppressing a decrease in processing speed. and to provide programs.
  • a data processing device that executes at least one arithmetic processing includes first to Nth arithmetic units and a memory.
  • N is an integer of 3 or more.
  • One of the first to Nth computing units is the main computing unit.
  • the memory has first to Nth areas in which the same data are stored.
  • the 1st to Nth calculation units each execute at least one calculation process using the data stored in the 1st to Nth areas.
  • the main computing unit collates computation results by the first to Nth computing units for each of at least one computation process.
  • the main computing section continues the operations of the first to Nth computing sections when a predetermined number or more of the computing results from the first to Nth computing sections match.
  • the main computing section converts at least part of the data in the first area to the second to Nth computing sections in response to a mismatch between the computation result of the first computing section and the computation results of the second to Nth computing sections. Rewrite to match any data in the area of .
  • the 1st to Nth calculation units can execute calculation processing in parallel using the 1st to Nth areas of the memory, the processing time required for calculation is suppressed from becoming longer. That is, a decrease in processing speed is suppressed.
  • the calculation results of the first to Nth calculation units are collated, and if a predetermined number or more of calculation results match, the operations of the first to Nth calculation units are continued. Therefore, the operation can be continued even if the result of calculation less than the predetermined number does not match other calculation results due to the occurrence of a soft error.
  • the calculation result of the first calculation unit and the calculation results of the second to Nth calculation units do not match, it is estimated that a soft error has occurred in the first area. Therefore, at least a part of the data in the first region is changed to the second to Nth regions in response to the fact that the calculation result of the first calculation unit and the calculation result of the second to Nth calculation units do not match. is rewritten to match any of the data in In this way, the data corrupted by the soft error is restored to correct data, thereby suppressing a temporary stoppage of the system due to the soft error.
  • the main computing unit selects one of the second to Nth regions in response to a mismatch between the computation result of the first computation unit and the computation result of the second to Nth computation units. All data in the first area are rewritten so as to match all data.
  • the data in the first region where soft errors are presumed to occur is rewritten so as to match all the data in any of the second to Nth regions. As a result, the data corrupted by the soft error is restored to correct data.
  • At least one computation includes a plurality of computations.
  • Each of the 1st to Nth areas has a plurality of sub-areas for storing data overwritten by execution of a plurality of arithmetic processes.
  • the main computing unit generates a plurality of sub-regions in response to a mismatch between the computation result of the first computation unit and the computation results of the second to Nth computation units for the target computation process among the plurality of computation processes. Among them, a target sub-region corresponding to the target operation process is specified.
  • the main calculation unit rewrites the data of the target sub-region used by the first calculation unit so as to match the data of the target sub-region used by any one of the second to Nth calculation units.
  • a target sub-region in which a soft error is estimated to occur is specified in the first region.
  • the data in the target sub-region is then repaired to correct data.
  • the time required for restoring data is shortened compared to the case of rewriting all the data in the first area.
  • each of the multiple sub-regions is divided into multiple blocks.
  • a main computing unit computes an error detection code for each of the plurality of blocks in the target sub-region.
  • the main calculation unit is configured such that among the plurality of blocks of the target sub-region, the target sub-region used by the first calculation unit and the target sub-region used by the second to Nth calculation units do not have the same error detection code. Identify blocks.
  • the main calculation unit rewrites the data of the target block used by the first calculation unit so as to match the data of the target block used by the second to Nth calculation units.
  • a target block in which a soft error is estimated to occur is specified in the target sub-region. Then, the data of the target block is restored to correct data. As a result, the time required for data restoration is further reduced compared to the case where all the data in the target sub-region are rewritten.
  • the 1st to Nth calculation units write the calculation results to the 1st to Nth areas, respectively.
  • the main calculation unit adjusts the calculation results of the second to Nth calculation units so that they match the calculation results of the second to Nth calculation units when the calculation results of the first calculation unit do not match the calculation results of the second to Nth calculation units. , rewrites the operation result written in the first area.
  • each of the 1st to Nth regions has a first sub-region and a second sub-region in which the same data are written.
  • Each of the first to Nth computation units reads data from one of the first sub-region and the second sub-region and executes at least one computation process.
  • Each of the first to Nth computation units updates data in both the first sub-region and the second sub-region in accordance with execution of at least one computation process.
  • the at least one arithmetic processing includes a first arithmetic processing and a second arithmetic processing that is executed after the first arithmetic processing.
  • the main calculation unit is configured such that the calculation result of the first calculation processing by the first calculation unit using the data of the first sub-region is the second to N-th calculation units using the data of the first sub-region.
  • the region from which the first arithmetic unit reads data is switched from the first sub-region to the second sub-region in response to a mismatch with the arithmetic result of the first arithmetic processing.
  • the main calculation unit is configured such that the calculation result of the second calculation processing by the first calculation unit using the data of the second sub-region is the second to N-th calculation units using the data of the first sub-region. At least a part of the data in the first area is rewritten so as to match the data in the second to N-th areas in response to the mismatch with the calculation result of the calculation process of No. 2.
  • the frequency of data restoration processing can be reduced. That is, it is possible to reduce the frequency of waiting for the execution of arithmetic processing for data restoration. Furthermore, as described below, depending on the content of the arithmetic processing, data damaged by soft errors can be automatically restored by normal arithmetic processing.
  • the data processing method for the data processing device includes first to fourth steps.
  • the first step is a step in which the 1st to Nth calculation units each execute at least one calculation process using the data stored in the 1st to Nth areas.
  • the second step is a step in which the main computation unit collates computation results by the first to Nth computation units for each of at least one computation process.
  • the main computing unit selects the first to Nth computing units in response to a match of a predetermined number or more of computation results from the first to Nth computing units.
  • the main computing unit determines at least a part of the data in the first region in response to a mismatch between the computation result of the first computation unit and the computation result of the second to Nth computation units. is rewritten so as to match the data in any one of the second to Nth areas.
  • the program is a computer-readable program that causes the first to Nth computing units to execute the above data processing method.
  • FIG. 1 is a schematic diagram showing the configuration of a safety IO unit according to an embodiment
  • FIG. It is a figure which shows an example of the recovery
  • FIG. 3 is a schematic diagram showing a hardware configuration example of a safety IO unit;
  • FIG. 10 is a diagram illustrating a second example of a method of restoring data in a restoration target area;
  • FIG. 11 is a diagram illustrating a third example of a method of restoring data in a restoration target area;
  • FIG. 10 is a diagram showing an example of the state of the main memory when the arithmetic processing “process A” is completed;
  • FIG. 8 is a diagram showing a state of restoration processing after the arithmetic processing “process A” shown in FIG. 7;
  • FIG. 9 is a diagram showing an example of the state of the main memory when the arithmetic processing "process B” is executed after the recovery processing shown in FIG. 8;
  • FIG. 10 is a diagram showing a state of restoration processing after the arithmetic processing “process B” shown in FIG. 9;
  • FIG. FIG. 10 is a diagram showing another example of the state of the main memory when the arithmetic processing “process A” is completed;
  • FIG. 12 is a diagram showing how collation processing is performed after the arithmetic processing “process A” shown in FIG. 11;
  • FIG. 13 is a diagram showing an example of the state of the main memory 104 when the arithmetic processing "process B" is executed after the matching processing shown in FIG. 12;
  • FIG. 14 is a diagram showing an example of the state of the main memory when the arithmetic processing "process C” is executed after the arithmetic processing "process B” shown in FIG. 13;
  • FIG. 14 is a diagram showing an example of the state of the main memory when the arithmetic processing "process C'” is executed after the arithmetic processing "process B” shown in FIG. 13;
  • FIG. 16 is a diagram showing how the collation/restoration process is performed after the arithmetic process "process C'” shown in FIG. 15;
  • a safety IO unit incorporated in a control system in the field of FA will be described below as an application example of the data processing device.
  • the application of the data processing device is not limited to safety IO units incorporated into control systems.
  • FIG. 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 an input signal or the like received from a safety device.
  • the safety IO unit 100 comprises a multi-core processor 102 and a main memory 104.
  • the multi-core processor 102 is a processor with multiple cores.
  • the number N of cores is an integer of 3 or more. In the example shown in FIG. 1, the multicore processor 102 has three cores 11, 12 and 13.
  • Each of the cores 11, 12, and 13 operates as a computing unit that executes at least one computing process described above.
  • a core 11 is a master core that operates as a main computing unit.
  • Cores 12 and 13 operate as slave cores.
  • Cores 12 and 13 stop and resume operations in accordance with instructions from core 11 .
  • the main memory 104 is composed of volatile memory such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory).
  • DRAM Dynamic Random Access Memory
  • SRAM Static Random Access Memory
  • the SRAM uses flip-flops as the structure of the storage section, and has the advantage of not requiring a refresh operation and being able to operate at a higher speed than the DRAM. Therefore, it is preferable to use SRAM as the main memory 104 .
  • a DRAM with a stacked (stacked) structure has a high resistance to soft errors.
  • the resistance to soft errors decreases due to miniaturization. Therefore, when using the main memory 104 configured by a highly integrated SRAM for increasing the capacity, soft errors are likely to occur in the main memory 104 .
  • the following description assumes that the main memory 104 is an SRAM.
  • 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.
  • the main memory 104 has three areas 21, 22, and 23. Each of the areas 21, 22, and 23 has three areas.
  • FIG. 1 shows how the cores 11, 12, and 13 execute the arithmetic processing "process A" using the data in the areas 21, 22, and 23, respectively. Since the cores 11, 12 and 13 use the data stored in the areas 21, 22 and 23 respectively, the arithmetic processing of the cores 11, 12 and 13 are executed in parallel. Therefore, it is possible to avoid prolongation of the time required for arithmetic processing. That is, a decrease in processing speed is suppressed.
  • the core 13 also executes the arithmetic processing “process A” using the data in the area 23 and writes the arithmetic result to the area 23 .
  • the core 11 determines whether or not a predetermined number or more of the operation results of the cores 11 to 13 match.
  • the predetermined number is an integer that is the majority of the number N of cores of the multi-core processor 102 .
  • the core 11 When the core 11 outputs the calculation result to the outside, the core 11 outputs a predetermined number or more of the calculation results that match among the calculation results of the cores 11 to 13 .
  • the core 11 when the core 11 outputs a command according to the calculation result to the outside, the core 11 outputs a command corresponding to a predetermined number or more of the calculation results that match among the calculation results of the cores 11 to 13 .
  • core 11 stops the operation of cores 11 to 13 in response to a predetermined number or more of the operation results of cores 11 to 13 not matching.
  • the core 11 writes an operation result that does not match the operation result of the predetermined number or more in response to the operation result of the operation result that is less than the predetermined number does not match the operation result of the predetermined number or more. At least part of the data in the area where the This may repair data corrupted by soft errors.
  • FIG. 2 is a diagram showing an example of a soft error recovery method.
  • the core 11 rewrites the data in the area 23 so that it matches the data in the area 21 . That is, the core 11 copies data in the area 21 to the area 23 .
  • the data in the area where the soft error occurred can be recovered.
  • N is an integer of 3 or more arithmetic units (cores) execute arithmetic processing using N areas of the main memory 104. Prolongation of processing time is suppressed. That is, a decrease in processing speed is suppressed.
  • the N calculation results are collated, and if a predetermined number or more of the calculation results match, the operation of the N calculation units (cores) is continued. Therefore, even if a soft error occurs, the operation can be continued.
  • FIG. 3 is a schematic diagram showing the overall configuration of the control system according to the embodiment.
  • the control system 1 illustrated in FIG. 3 includes one or more safety IO units 100, a standard PLC 200, a safety PLC 300, and one or more couplers 400 as main components.
  • These devices included in the control system 1 are data processing devices that perform various kinds of arithmetic processing.
  • the standard PLC 200 executes standard control for any controlled object according to a pre-created standard control program.
  • Standard control is a generic term for processes for controlling controlled objects in accordance with predetermined required specifications.
  • the controlled object is, for example, a servomotor, a robot, or the like.
  • the safety PLC 300 executes safety control for any controlled object independently of the standard PLC 200.
  • Safety PLC 300 illustrated in FIG. 3 is connected to standard PLC 200 via a local bus.
  • "Safety control” is a generic term for processes for preventing human safety from being threatened by facilities, machines, and the like.
  • "Safety control” is designed to meet the requirements for realizing the safety functions specified in IEC 61508, for example.
  • the coupler 400 mediates the exchange of data between the standard PLC 200 and the safety IO unit 100.
  • Coupler 400 is electrically connected to standard PLC 200 via field network 2 .
  • a field network 2 is a communication medium for realizing data transmission for FA.
  • frame transmission is possible at a predetermined cycle, and data arrival time to each node in the network is guaranteed.
  • EtherCAT registered trademark
  • the coupler 400 transmits the data received from the standard PLC 200 to the safety IO unit 100, and when receiving data from the safety IO unit 100, prepares to store the received data in the next arriving frame.
  • the safety IO unit 100 is connected to the safety PLC 300 or coupler 400 via a local bus. Furthermore, any safety device (not shown) is connected to the safety IO unit 100 . Safety devices include light curtains, emergency stop buttons, safety door switches, etc.
  • the safety IO unit 100 receives an input signal from the safety device and provides the input signal to the safety PLC 300.
  • safety IO unit 100 receives input signals from safety devices and provides the input signals to standard PLC 200 via coupler 400 .
  • Input signals provided to standard PLC 200 are provided to safety PLC 300 .
  • safety IO unit 100 outputs output signals to safety devices according to commands from the safety PLC 300.
  • safety IO unit 100 outputs an output signal to a safety device according to a command from safety PLC 300 via coupler 400 and standard PLC 200 .
  • the safety IO unit 100 performs arithmetic processing related to acceptance of input signals from safety devices, provision of the input signals, output of output signals to safety devices, etc., at predetermined intervals.
  • the safety PLC 300 executes safety control according to the input signal provided from the safety IO unit 100. For example, 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 when an input signal indicating human intrusion is provided from a safety device, which is a light curtain. Alternatively, 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 when an input signal indicating button depression is provided from a safety device, which is an emergency stop button.
  • the safety IO unit 100 is directly involved in safety control to prevent human safety from being threatened. Therefore, the safety PLC 300 is designed to temporarily stop the control system 1 even when a failure or abnormality occurs in the safety IO unit 100 .
  • the safety PLC 300 cannot normally perform safety control. Therefore, even if a soft error occurs, the safety IO unit 100 has a function of continuing operation and restoring damaged data.
  • FIG. 4 is a schematic diagram showing a hardware configuration example of the safety IO unit.
  • the safety IO unit 100 illustrated in FIG. 4 includes a storage 110, a local bus controller 120, and a safety IO module 130 in addition to the multicore processor 102 and main memory 104 described above. These components are connected via processor bus 140 .
  • the storage 110 is composed of non-volatile storage devices such as SSD (Solid State Drive) and HDD (Hard Disk Drive).
  • the storage 110 stores an executable program 111 and a collation/repair program 112 for realizing the IO function.
  • the local bus controller 120 exchanges data with devices (eg, safety PLC 300, coupler 400) to which the safety IO unit 100 is connected via the local bus.
  • devices eg, safety PLC 300, coupler 400
  • the safety IO module 130 is electrically connected to the safety device, receives inputs such as detection results from the safety device, and outputs signals to the safety device.
  • Cores 11-13 (see FIG. 1) of multi-core processor 102 execute executable program 111 in parallel. Cores 11-13 execute executable program 111 using areas 21-23 (see FIG. 1) of main memory 104, respectively.
  • the cores 11-13 execute the executable program 111 in each predetermined control cycle.
  • Executable program 111 defines at least one operation. Therefore, the cores 11-13 periodically execute at least one arithmetic process defined by the executable program 111.
  • FIG. 1 A block diagram illustrating an exemplary computing environment in accordance with the present disclosure.
  • the core 11 which is the main computing unit, executes the collation/restoration program 112 each time the cores 11 to 13 finish computing.
  • the core 11 collates the three calculation results obtained by executing the calculation processing by the cores 11-13.
  • the three calculation results are written in areas 21 to 23 of the main memory 104, respectively. Therefore, the core 11 collates the operation results written in the areas 21-23. It should be noted that the core 11 instructs the cores 12 and 13 to wait for processing while performing the comparison processing of the calculation result.
  • the core 11 determines that the data recovery is unnecessary, starts the next arithmetic processing, and instructs the cores 12 and 13 to start the next arithmetic processing.
  • core 11 determines that safety IO unit 100 is in an abnormal state, and outputs an abnormality signal to safety PLC 300 .
  • the safety PLC 300 receives the abnormal signal, it cuts off the power supply to the control target of the standard PLC 200 to temporarily stop the control system 1 .
  • the frequency of soft errors is low. Therefore, it is less likely that soft errors will occur at two locations in the main memory 104 at approximately the same time. Therefore, in the case of pattern (2), it is expected that no soft error has occurred in the two regions in which the computation results that match each other are written.
  • the core 11 determines that the data in the restoration target area needs to be restored, and executes the restoration processing of the data in the restoration target area. After the data restoration processing is completed, the core 11 starts the next arithmetic processing and instructs the cores 12 and 13 to start the next arithmetic processing.
  • the core 11 rewrites at least part of the data in the restoration target area so as to match the data in either of the remaining two areas without executing the comparison process.
  • the core 11 may rewrite all the data in the restoration target area so as to match all the data in any area other than the restoration target area. As a result, both the data corrupted (corrupted) by the soft error and the calculation result written in the restoration target area are restored to correct contents.
  • the core 11 rewrites only part of the data in the restoration target area so that it matches the data in either of the remaining two areas.
  • FIG. 5 is a diagram explaining a second example of a method of restoring data in a restoration target area.
  • each of areas 21, 22 and 23 of main memory 104 has a plurality of sub-areas respectively corresponding to a plurality of arithmetic processes.
  • the area 21 has sub-areas 21a to 21x respectively corresponding to the arithmetic operations "process A" to "process X”.
  • area 22 has sub-areas 22a-22x corresponding to arithmetic operations "process A"-"process X", respectively.
  • the area 23 has sub-areas 23a to 23x respectively corresponding to the arithmetic operations "process A" to "process X".
  • Each sub-area is written with a group of variables used for the corresponding arithmetic processing.
  • the core 11 selects an object corresponding to the target operation process among the plurality of sub-regions according to the operation result of the cores 11 to 13 satisfying the above pattern (2) for the target operation process among the plurality of operation processes. Identify subregions. For example, the calculation results of the calculation process "process A” by the cores 11 and 12 match, and the calculation result of the calculation process "process A” by the core 13 does not match the calculation result of the calculation process "process A” by the cores 11 and 12. In this case, the sub-regions 21a-23a are identified as target sub-regions.
  • the core 11 matches the data of the target sub-region corresponding to the core that generated the two operation results that match each other and the operation result that does not match with the data of the target sub-region corresponding to one of the remaining two cores. rewrite. For example, when the calculation result of the calculation process "process A” by the core 13 does not match the calculation result of the calculation process "process A” by the cores 11 and 12, the data in the sub-region 23a is changed so as to match the data in the sub-region 21a. can be rewritten.
  • the target for data rewriting is not the entire area 23, but only the sub-area 23a that is part of the area 23. Therefore, the time required for repair is shortened. As a result, for example, an increase in scale of a production line including equipment and light curtains is suppressed.
  • a third example of a method of restoring data in a restoration target area is a modification of the above second example.
  • Each sub-region is pre-divided into a plurality of blocks.
  • FIG. 6 is a diagram explaining a third example of a method of restoring data in a restoration target area.
  • FIG. 6 shows a method of restoring data in a restoration target area when the calculation result of the calculation process "process A" by the core 13 does not match the calculation result of the calculation process "process A” by the cores 11 and 12.
  • FIG. The sub-region 21a is divided into a plurality of blocks 31_1, 31_2, . . . , 31_M.
  • the sub-region 22a is divided into a plurality of blocks 32_1, 32_2, . . . , 32_M.
  • the sub-region 23a is divided into a plurality of blocks 33_1, 33_2, . . . , 33_M.
  • the core 11 controls each of a plurality of blocks 31_1 to 31_M, 32_1 to 32_M, and 33_1 to 33_M of sub-regions 21a, 22a, and 23a (target sub-regions) corresponding to the arithmetic processing "process A”.
  • the error detection code CRC of is calculated.
  • the core 11 identifies a target block for which the error detection code CRC does not match between the sub-region 23a used by the core 13 and the sub-regions 21a and 22a used by the cores 11 and 12 among the plurality of blocks of the target sub-region. For example, when the error-detecting code CRC of block 33_1 does not match the error-detecting code CRC of blocks 31_1 and 32_1, blocks 31_1, 32_1 and 33_1 are identified as target blocks.
  • the core 11 rewrites the target block data used by the core 13 so that it matches the target block data used by the cores 11 and 12 .
  • the core 11 rewrites the data of the block 33_1 used by the core 13 so as to match the data of either block 31_1 or 32_1 used by the cores 11 and 12 .
  • FIG. 7 A fourth example of the data recovery method in the recovery target area will be described with reference to FIGS. 7 to 10.
  • FIG. 7 is a diagram showing an example of the state of the main memory when the arithmetic processing "process A” is completed.
  • a soft error has occurred in the area 23 of the main memory 104, and the variable a has changed from "1" to "3".
  • cores 11 and 12 read variables (variables a, b, and c) used for calculation from areas 21 and 22, respectively, and execute arithmetic processing "process A” to read areas 21 and 22. are updated from "5" to "9” respectively.
  • the core 13 also reads the variables a, b, and c used for calculation from the area 23 and updates the variable x in the area 23 by executing the arithmetic processing "process A”. As described above, in the area 23, data corruption occurs in the variable a. Therefore, the core 13 updates the variable x in the area 23 from "5" to "15".
  • FIG. 8 is a diagram showing the state of restoration processing after the arithmetic processing "process A” shown in FIG.
  • the core 11 collates the computation results of the computation processing “process A” by the cores 11 , 12 and 13 .
  • the core 11 writes the calculation result "15" written in the area 23 to the areas 21 and 22 in response to the calculation result "15" by the core 13 being different from the calculation result "9” by the cores 11 and 12.
  • the calculation result is rewritten as "9”.
  • the variable x which is the calculation result of the calculation process "process A" is restored to the correct value.
  • the core 11 does not verify the reason why the calculation result "15" by the core 13 is different from the calculation result "9" by the cores 11 and 12. Therefore, the core 11 cannot recognize that data corruption has occurred in the variable a in the area 23, and does not restore the variable a.
  • the cores 11 and 12 read the variable a used in the calculation from the areas 21 and 22, respectively, and set the variable a of the areas 21 and 22 to "1" by executing the arithmetic processing "process B". to "2" respectively.
  • the core 13 also reads out the variable a used in the calculation from the area 23 and updates the variable a in the area 23 by executing the arithmetic processing "process B". As described above, in the area 23, data corruption occurs in the variable a. Therefore, the core 13 updates the variable x in the area 23 from "3" to "4".
  • FIG. 10 is a diagram showing the state of restoration processing after the arithmetic processing "process B" shown in FIG.
  • the core 11 collates the computation results of the computation processing “process B” by the cores 11 , 12 and 13 .
  • the core 11 writes the calculation result "4" written in the area 23 to the areas 21 and 22 in response to the calculation result "4" by the core 13 being different from the calculation result "2" by the cores 11 and 12. Rewrite to the calculation result "2".
  • the variable a which is the calculation result of the calculation process "process B" is restored to the correct value.
  • each of the regions 21-23 has two sub-regions in which identical data are written.
  • Each of the cores 11 to 13 reads data from one of the two sub-regions, executes arithmetic processing, and updates data in both of the two sub-regions according to the execution of the arithmetic processing.
  • FIG. 11 is a diagram showing another example of the state of the main memory when the arithmetic processing "process A" ends.
  • the area 21 has sub-areas 41a and 41b in which the same data are written.
  • the area 22 has sub-areas 42a and 42b in which identical data are written.
  • the area 23 has sub-areas 43a and 43b in which the same data are written.
  • a soft error has occurred in the sub-area 43a of the area 23 of the main memory 104, and the variable a has changed from "1" to "3".
  • the core 11 reads out the variables (variables a, b, c) used in the calculation from the sub-region 41a, and executes the arithmetic processing "process A". Update the variable x from "5" to "9".
  • the core 12 reads the variables (variables a, b, c) used in the calculation from the sub-region 42a, and changes the variable x in both the sub-regions 42a and 42b from "5" to " 9”.
  • the core 13 also reads the variables (variables a, b, c) used in the calculation from the sub-region 43a, and updates the variable x in both the sub-regions 43a and 43b according to the execution of the calculation processing "process A”. .
  • data corruption occurs in the variable a in the sub-region 43a. Therefore, the core 13 updates the variable x of the sub-regions 43a and 43b from "5" to "15".
  • FIG. 12 is a diagram showing how the matching process is performed after the arithmetic process "process A” shown in FIG.
  • the core 11 collates the computation results of the computation processing “process A” by the cores 11 , 12 and 13 . Since the calculation result "15" by the core 13 is different from the calculation result "9” by the cores 11 and 12, it is presumed that a soft error has occurred in the sub-region 43a. Therefore, in response to the fact that the calculation result "15" by the core 13 is different from the calculation result "9” by the cores 11 and 12, the core 11 shifts the area used by the core 13 for arithmetic processing from the sub-area 43a to the sub-area 43a. Switch to area 43b.
  • FIG. 13 is a diagram showing an example of the state of the main memory 104 when the arithmetic processing "process B" is executed after the collation processing shown in FIG.
  • the core 11 reads the variable a used in the calculation from the sub-region 41a, and changes the variable a of both the sub-regions 41a and 41b from "1" to Update to "2".
  • the core 12 reads the variable a used in the calculation from the sub-region 42a, and updates the variable a in both the sub-regions 42a and 42b from "1" to "2" according to the execution of the calculation processing "process B”.
  • the core 13 reads the variable a used in the calculation from the sub-region 43b, and updates the variable a in both the sub-regions 43a and 43b according to the execution of the calculation process "process B".
  • FIG. 14 is a diagram showing an example of the state of the main memory when the arithmetic processing "process C” is executed after the arithmetic processing "process B” shown in FIG.
  • Arithmetic processing "process C” is processing for updating the variable x according to the following equation (3).
  • x 4*c Expression (3).
  • the core 11 reads the variable c used in the calculation from the sub-region 41a, and changes the variable x of both the sub-regions 41a and 41b from "9” to Update to "12".
  • the core 12 reads the variable c used in the calculation from the sub-region 42a, and updates the variable x in both the sub-regions 42a and 42b from “9” to "12” according to the execution of the calculation process "process C”.
  • the core 13 reads out the variable c used in the calculation from the sub-region 43b, and updates the variable x in both the sub-regions 43a and 43b from "15” to "12” according to the execution of the calculation "process C”. As a result, the value of the variable x in the sub-regions 43a and 43b is restored to the correct value.
  • FIG. 15 is a diagram showing an example of the state of the main memory when the arithmetic processing "process C'” is executed after the arithmetic processing "process B” shown in FIG.
  • Arithmetic processing “process C′” is processing for updating the variable x according to the following equation (4).
  • x x+1 Expression (4).
  • the core 11 reads out the variable x used in the calculation from the sub-region 41a, and sets the variable x of both the sub-regions 41a and 41b to "9” according to the execution of the calculation processing "process C'”. to "10".
  • the core 12 reads out the variable x used in the calculation from the sub-region 42a, and updates the variable x in both the sub-regions 42a and 42b from “9” to "10” according to the execution of the calculation "process C'”.
  • the core 13 reads out the variable x used in the calculation from the sub-region 43b, and updates the variable x in both the sub-regions 43a and 43b from "15” to "16” according to the execution of the calculation "process C'".
  • FIG. 16 is a diagram showing how the matching and repairing process is performed after the arithmetic process "process C'" shown in FIG.
  • the core 11 collates the computation results of the computation processing “process C′” by the cores 11 , 12 and 13 .
  • the core 11 determines that the area 23 needs to be repaired in response to the fact that the calculation result "16" by the core 13 is different from the calculation result "10" by the cores 11 and 12.
  • FIG. the core 11 rewrites all the data in the restoration target area 23 so as to match all the data in either the areas 21 or 22 according to the above first example, for example.
  • the value of the variable x in the sub-regions 43a and 43b is restored to the correct value.
  • the frequency of data restoration processing can be reduced. That is, it is possible to reduce the frequency of waiting for the execution of arithmetic processing for data restoration.
  • safety IO unit 100 is assumed to include multi-core processor 102 having multiple cores. However, instead of the multi-core processor 102, the safety IO unit 100 may comprise a multi-processor having multiple processors. A plurality of processors operate as a computing unit.
  • safety IO unit 100 comprises a multiprocessor with three processors. The three processors use areas 21, 22, and 23 of the main memory 104 to perform arithmetic processing, respectively.
  • One of the three processors operates as a main computing unit. The processor operating as the main computing unit executes matching and repairing processing in the same manner as the core 11 described above.
  • the standard PLC 200, the safety PLC 300 and the coupler 400 may also be equipped with multi-core processors and have verification and repair programs, similar to the safety IO unit 100. As a result, standard PLC 200, safety PLC 300 and coupler 400 can continue to operate even if a soft error occurs in the main memory. As a result, the frequency of stopping the control system 1 is suppressed.
  • the memory (104) has first to Nth areas (21 to 23) in which the same data are stored,
  • the first to Nth calculation units (11 to 13) each execute the at least one calculation process using the data stored in the first to Nth areas (21 to 23),
  • the main calculation unit (11) For each of the at least one arithmetic processing, collating the arithmetic results by the first to Nth arithmetic units (11 to 13), According to a predetermined number or more of the calculation results by the first to Nth calculation units (11 to 13) match, the first to Nth calculation units (11 to 13) ) to continue the operation of In response to the fact that the calculation result of the first calculation unit (13) and the calculation result of the second to Nth
  • the at least one arithmetic processing includes a plurality of arithmetic processing, Each of the first to Nth areas (21 to 23) has a plurality of sub-areas (21a to 21x, 22a to 22x, 23a to 23x) respectively storing data overwritten by execution of the plurality of arithmetic processes.
  • each of the plurality of sub-regions (21a-21x, 22a-22x, 23a-23x) is divided into a plurality of blocks (31_1-31_M, 32_1-32_M, 33_1-33_M),
  • the main calculation unit (11) computing an error detection code for each of the plurality of blocks of the target sub-region (21a, 22a, 23a); between the target sub-region used by the first computing unit (13) and the target sub-region used by the second to Nth computing units (11, 12) among the plurality of blocks of the target sub-region Identify target blocks (31_1, 32_1, 33_1) in which the error detection code does not match between of the target block (33_1) used by the first computation unit (13) so as to match the data of the target block (31_1, 32_1) used by the second to Nth computation units (11, 12)
  • 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 second to N-th computing units in response to a mismatch between the computation result of the first computing unit (13) and the computation result of the second to N-th computing units (11, 12)
  • the data processor (100) according to configuration 1, wherein the operation result written in the first area (23) is rewritten so as to match the operation result of (11,12).
  • Each of the first to Nth regions (21 to 23) includes first subregions (41a, 42a, 43a) and second subregions (41b, 42b, 43b) in which the same data are written. have Each of the first to Nth computing units (11 to 13) reading data from one of the first sub-regions (41a, 42a, 43a) and the second sub-regions (41b, 42b, 43b) to perform the at least one arithmetic processing; updating data in both the first sub-regions (41a, 42a, 43a) and the second sub-regions (41b, 42b, 43b) in accordance with execution of the at least one arithmetic operation;
  • the at least one arithmetic processing includes a first arithmetic processing and a second arithmetic processing executed after the first arithmetic processing,
  • the main calculation unit (11) The calculation result of the first calculation processing by the first calculation unit (13) using the data of the first sub-region (43a) uses the data of
  • Composition 7 A data processing method for a data processing device (100) that executes at least one arithmetic processing,
  • the data processing device (100) 1st to Nth computing units (11 to 13); a memory (104); N is an integer of 3 or more, one of the first to Nth computing units (11 to 13) is a main computing unit (11);
  • the memory (104) has first to Nth areas (21 to 23) in which the same data are stored,
  • the data processing method includes: a step in which the first to Nth computing units (11 to 13) respectively execute the at least one computing process using the data stored in the first to Nth areas (21 to 23); a step in which the main computation unit (11) compares computation results by the first to Nth computation units (11 to 13) for each of the at least one computation process;
  • the main computing section (11) performs the first to a step of continuing the operation of the Nth calculation unit (11 to 13);
  • Composition 8 A computer-readable program that causes the first to Nth computing units (11 to 13) to execute the data processing method according to configuration 7.
  • 1 control system 2 field network, 11, 12, 13 core, 21, 22, 23 area, 21a ⁇ 21x, 22a ⁇ 22x, 23a ⁇ 23x, 41a, 41b, 42a, 42b, 43a, 43b sub-area, 31_1 ⁇ 31_M, 32_1 to 32_M, 33_1 to 33_M blocks, 100 safety IO unit, 102 multi-core processor, 104 main memory, 110 storage, 111 executable program, 112 verification and restoration program, 120 local bus controller, 130 safety IO module, 140 processor bus , 200 standard PLC, 300 safety PLC, 400 coupler.

Landscapes

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

Abstract

第1~第Nの演算部は、メモリの第1~第Nの領域に格納されたデータを用いて少なくとも1つの演算処理をそれぞれ実行する。メイン演算部は、少なくとも1つの演算処理の各々について、第1~第Nの演算部による演算結果を照合する。メイン演算部は、第1~第Nの演算部による演算結果のうちの予め定められた数以上の演算結果が一致することに応じて、第1~第Nの演算部の動作を継続させる。メイン演算部は、第1の演算部の演算結果と第2~第Nの演算部の演算結果とが一致しないことに応じて、第1の領域の少なくとも一部のデータを第2~第Nの領域のいずれかのデータと一致するように書き換える。

Description

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

Claims (8)

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

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2022185582A1 true WO2022185582A1 (ja) 2022-09-09

Family

ID=83155242

Family Applications (1)

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

Country Status (2)

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

Citations (2)

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

Patent Citations (2)

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

Also Published As

Publication number Publication date
JP2022135468A (ja) 2022-09-15

Similar Documents

Publication Publication Date Title
JP6442843B2 (ja) 制御装置
US7793147B2 (en) Methods and systems for providing reconfigurable and recoverable computing resources
JP2007249976A (ja) システムの安全性を確保する分散制御システムと、制御プロセス
US10073749B2 (en) Fault tolerant industrial automation control system
EP3673373A1 (en) Ensuring a correct program sequence in a dual-processor architecture
WO2022185582A1 (ja) データ処理装置、データ処理方法およびプログラム
WO2022142529A1 (zh) 一种安全与常规控制应用间数据隔离的方法及装置
JP2022088346A (ja) コア同期のためのデバッグトレースストリーム
CN108038014B (zh) 一种图像压缩多核并行容错方法、计算机、处理器
WO2021157103A1 (ja) 情報処理装置、制御方法およびプログラム
WO2021181712A1 (ja) データ処理装置、データ処理方法およびプログラム
JP2018200731A (ja) サポート装置およびサポートプログラム
JP2021128420A (ja) データ処理装置、制御方法およびプログラム
JPH01118921A (ja) 二重化デイスク制御方法
JP2001306348A (ja) 冗長系情報処理システム
JP4867557B2 (ja) プログラマブルコントローラ
US11119461B2 (en) Controller
KR101679936B1 (ko) 에너지 및 공정 제어를 위한 이중화된 산업용 제어 시스템 및 그 제어 방법
US11507478B2 (en) Method for operating a redundant automation system
JPH02194446A (ja) 二重化情報処理システムにおけるモジュール修復方法
JP5136770B2 (ja) 産業用コントローラ
Gullo Design for Software Maintainability
JP2022130945A (ja) プラント計装制御システムおよびプラント計装制御システムのプログラムの書換え方法
CN117591014A (zh) 数据读写控制方法、装置、设备及计算机可读存储介质
CN117493071A (zh) 一种用于继电保护装置的抗单粒子防护方法及系统

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21929146

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21929146

Country of ref document: EP

Kind code of ref document: A1