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

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

Info

Publication number
JP2021140642A
JP2021140642A JP2020039749A JP2020039749A JP2021140642A JP 2021140642 A JP2021140642 A JP 2021140642A JP 2020039749 A JP2020039749 A JP 2020039749A JP 2020039749 A JP2020039749 A JP 2020039749A JP 2021140642 A JP2021140642 A JP 2021140642A
Authority
JP
Japan
Prior art keywords
data
area
processor
region
register
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.)
Granted
Application number
JP2020039749A
Other languages
English (en)
Other versions
JP6721140B1 (ja
Inventor
融 村田
Toru Murata
融 村田
大介 八木
Daisuke Yagi
大介 八木
敦史 上村
Atsushi Uemura
敦史 上村
裕 田中
Yutaka Tanaka
裕 田中
拓也 谷口
Takuya Taniguchi
拓也 谷口
雄作 小林
Yusaku Kobayashi
雄作 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2020039749A priority Critical patent/JP6721140B1/ja
Priority to PCT/JP2020/015665 priority patent/WO2021181712A1/ja
Application granted granted Critical
Publication of JP6721140B1 publication Critical patent/JP6721140B1/ja
Publication of JP2021140642A publication Critical patent/JP2021140642A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Abstract

【課題】レジスタからメモリに一時退避されるデータの破損に起因する、システムの一時的な停止を抑制する。【解決手段】プロセッサは、退避命令に応じて、レジスタのデータをメモリの第1の領域に退避させ、復帰命令に応じて、第1の領域のデータをレジスタに復帰させる。プロセッサは、退避命令の実行後に、第1の領域のデータを、メモリにおける第2の領域から第Nの領域の各々に書き込む。プロセッサは、復帰命令の実行前に、第1の領域から第Nの領域のデータを互いに照合し、過半数の領域のデータが一致し、かつ、第1の領域のデータが過半数の領域のデータと一致しないことに応じて、過半数の領域のデータを第1の領域に上書きする。【選択図】図3

Description

本開示は、データ処理装置、データ処理方法およびプログラムに関する。
半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーにより、データが破損する(データ化けが発生する)。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって生じる。ソフトエラーの起こりうるメモリをシステムに適用すると、データの破損によるシステムの一時的な停止が生じうる。
データの破損によるシステムの一時的な停止を回避するための技術が開発されている。例えば、特開2007−18414号公報(特許文献1)には、RAM(Random Access Memory)の変数データを書き換える場合に、同一のデータをRAM内の異なる3以上のアドレスの各々に書き込む制御装置が開示されている。この制御装置は、プログラムの実行によって変数を読み出すとき、RAM内の異なる3以上のアドレスの各々からデータを読み出す。そして、制御装置は、異なる3以上のアドレスからそれぞれ読み出したデータのうち、任意の1個のデータが他の複数個のデータと異なっている場合には、異なっているデータを他の複数個のデータに書き換える。
特開2007−18414号公報
メインルーチンの実行中に関数処理(サブルーチン)が発生すると、メインルーチンを中断させるためにスタック操作が行なわれる。スタック操作は、(1)サブルーチン処理開始時に、プロセッサに内蔵されるレジスタに保持されたデータをRAMのスタック領域に一時退避させる退避操作(いわゆるPush操作)と、(2)サブルーチン処理終了時に、スタック領域に退避させたデータをレジスタに復帰させる復帰操作(いわゆるPop操作)とを含む。スタック操作によってデータが一時退避されるスタック領域についてもソフトエラーが起こり得る。しかしながら、サブルーチン処理に伴うスタック操作のコードは、コンパイラによって自動生成される。そのため、汎用のコンパイラを用いる場合、スタック操作に対して特許文献1に記載の技術を適用することができない。
本開示は、上記の問題に鑑みてなされたものであり、その目的は、レジスタからメモリに一時退避されるデータの破損に起因する、システムの一時的な停止を抑制可能なデータ処理装置、データ処理方法およびプログラムを提供することである。
本開示の一例によれば、データ処理装置は、メモリと、メモリを用いて演算処理を実行するプロセッサとを備える。プロセッサは、レジスタを内蔵する。プロセッサは、退避命令に応じて、レジスタに保持されたデータをメモリの第1の領域に退避させ、復帰命令に応じて、第1の領域のデータをレジスタに復帰させる。プロセッサは、退避命令の実行後に第1の処理を実行し、復帰命令の実行前に第2の処理を実行する。第1の処理は、第1の領域のデータを、メモリにおける第2の領域から第Nの領域の各々に書き込む処理を含む。Nは3以上の整数である。第2の処理は、第1の領域から第Nの領域のデータを互いに照合する処理と、第1の領域から第Nの領域のうち過半数の領域のデータが一致し、かつ、第1の領域のデータが過半数の領域のデータと一致しないことに応じて、過半数の領域のデータを第1の領域に上書きする処理とを含む。
この開示によれば、退避命令に応じてデータが一時退避された第1の領域にソフトエラーが発生したとしても、復帰命令の実行前に、第1の領域のデータが修復される。そのため、復帰命令に応じて、レジスタには正しいデータが復帰される。その結果、レジスタからメモリに一時退避されるデータの破損に起因する、システムの一時的な停止を抑制できる。
上述の開示において、第1の領域は、メモリに設定されたスタック領域に含まれる。プロセッサは、退避命令の実行前後における、スタック領域に設定されたスタックポインタを参照して、第1の領域を特定する。
この開示によれば、プロセッサは、メモリにおいて、レジスタからデータが一時退避された第1の領域を正しく特定できる。
上述の開示において、退避命令は、関数処理の呼び出しのために発行される。復帰命令は、関数処理の完了後に発行される。プロセッサは、関数処理の完了に応じて、第2の処理を開始する。この開示によれば、復帰命令の実行の直前において、第1の領域のデータを修復できる。
本開示の一例によれば、データ処理装置は、メモリと、メモリを用いて演算処理を実行するプロセッサとを備える。プロセッサは、レジスタを内蔵する。データ処理装置のデータ処理方法は、第1〜第4のステップを備える。第1のステップは、プロセッサが、退避命令に応じて、レジスタに保持されたデータをメモリの第1の領域に退避させるステップである。第2のステップは、プロセッサが、退避命令の実行後に第1の処理を実行するステップである。第3のステップは、プロセッサが、復帰命令の実行前に第2の処理を実行するステップである。第4のステップは、プロセッサが、復帰命令に応じて、第1の領域のデータをレジスタに復帰させるステップである。第1の処理は、第1の領域のデータを、メモリにおける第2の領域から第Nの領域の各々に書き込む処理を含む。Nは3以上の整数である。第2の処理は、第1の領域から第Nの領域のデータを互いに照合する処理と、第1の領域から第Nの領域のうち過半数の領域のデータが一致し、かつ、第1の領域のデータが過半数の領域のデータと一致しないことに応じて、過半数の領域のデータを第1の領域に上書きする処理とを含む。
本開示の一例によれば、プログラムは、上記のデータ処理方法をコンピュータに実行させる。これらの開示によっても、レジスタからメモリに一時退避されるデータの破損に起因する、システムの一時的な停止を抑制できる。
本開示によれば、レジスタからメモリに一時退避されるデータの破損に起因する、システムの一時的な停止を抑制できる。
実施形態に係る制御システムの全体構成を示す概略図である。 実施の形態に係る安全IOユニットにおけるデータ修復処理の概要を示す図である。 安全IOユニットのハードウェア構成例を示す模式図である。 メインメモリの領域を示す図である。 メインメモリへのデータの書き込み処理の一例を示す図である。 メインメモリからのデータの読み出し処理の一例を示す図である。 Push操作後に実行される処理を示す図である。 Pop操作前に実行される処理を示す図である。 標準PLCのハードウェア構成例を示す模式図である。 安全PLCのハードウェア構成例を示す模式図である。 カプラのハードウェア構成例を示す模式図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのソフトエラーに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、本開示の適用例として、FA(ファクトリオートメーション)分野に組み込まれる制御システムについて説明するが、本開示の適用例は、当該制御システムに限定されない。
図1は、実施形態に係る制御システムの全体構成を示す概略図である。図1に例示される制御システム1は、主要なコンポーネントとして、標準PLC(プログラマブルロジックコントローラ)100と、安全PLC200と、1以上のカプラ300と、1以上の安全IOユニット400とを含む。制御システム1に含まれるこれらの装置は、各種のタスクを実行するデータ処理装置である。
標準PLC100は、予め作成された標準制御プログラムに従って、任意の制御対象に対する標準制御を実行する。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。制御対象は、例えばサーボモータ、ロボットなどである。
安全PLC200は、標準PLC100とは独立して、任意の制御対象に対するセーフティ制御を実行する。図1に例示される安全PLC200は、ローカルバスを介して標準PLC100に接続される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理の総称である。「セーフティ制御」は、例えばIEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
カプラ300は、標準PLC100と安全IOユニット400との間のデータの遣り取りを仲介する。カプラ300は、フィールドネットワーク2を介して、標準PLC100と電気的に接続されている。フィールドネットワーク2は、FA用のデータ伝送を実現するための通信媒体である。フィールドネットワーク2において、予め定められた周期でフレーム伝送が可能になっており、ネットワーク内の各ノードに対するデータ到着時間が保証される。このようなデータ到着時間が保証されるプロトコルの一例として、本実施の形態に従う制御システム1においては、フィールドネットワーク2にはEtherCAT(登録商標)を採用する。
カプラ300は、標準PLC100から受信したデータを安全IOユニット400へ送信するとともに、安全IOユニット400からデータを受信すると、当該受信したデータを次に到着するフレームに格納する準備を行う。
安全IOユニット400は、安全PLC200またはカプラ300にローカルバスを介して接続される。さらに、安全IOユニット400には任意の安全デバイス(図示せず)が接続される。安全デバイスには、ライトカーテン、非常停止ボタン、セーフティドアスイッチなどが含まれる。
安全IOユニット400は、安全デバイスからの入力信号を受け付けて、安全PLC200へ当該入力信号を提供する。あるいは、安全IOユニット400は、安全デバイスからの入力信号を受け付けて、カプラ300を介して標準PLC100へ当該入力信号を提供する。標準PLC100へ提供された入力信号は、安全PLC200へ提供される。
さらに、安全IOユニット400は、安全PLC200からの指令に応じて、安全デバイスへ出力信号を出力する。あるいは、安全IOユニット400は、カプラ300および標準PLC100を介した安全PLC200からの指令に応じて、安全デバイスへ出力信号を出力する。
安全IOユニット400は、予め定められた周期ごとに、安全デバイスからの入力信号の受け付け、当該入力信号の提供、安全デバイスへの出力信号の出力などに関する演算処理を実行する。
安全PLC200は、安全IOユニット400から提供された入力信号に応じて、セーフティ制御を実行する。例えば、安全PLC200は、ライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されると、標準PLC100の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。あるいは、安全PLC200は、非常停止ボタンである安全デバイスからボタン押下を示す入力信号が提供されると、標準PLC100の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。
このように、安全IOユニット400は、人の安全が脅かされることを防止するためのセーフティ制御に直接関わる。従って、安全PLC200は、安全IOユニット400に故障や異常が発生したときにも、制御システム1を一時的に停止させるように設計されている。
安全IOユニット400において、メインルーチンの実行中に関数処理(サブルーチン)が発生すると、プロセッサに内蔵されるレジスタに保持されたデータがメインメモリに一時退避され、関数処理の完了後に、退避されたデータがレジスタに復帰される。レジスタに保持されたデータのメインメモリへの退避は、退避命令であるPush命令に応じて実行される。退避されたデータのレジスタへの復帰は、復帰命令であるPop命令に応じて実行される。
メインメモリにおいて、データが一時退避された領域にソフトエラーが発生すると、一時退避されたデータが破損する。破損したデータが修復されないまま安全IOユニット400が動作し続けると、安全PLC200は、セーフティ制御を正常に実行できない。そのため、安全IOユニット400は、メインメモリに一時退避されたデータが破損したとしても、当該データを修復する機能を有する。
図2は、実施の形態に係る安全IOユニットにおけるデータ修復処理の概要を示す図である。図2に示されるプロセッサ402およびメインメモリ404は、安全IOユニット400に備えられる。プロセッサ402は、レジスタ403を内蔵する。
プロセッサ402は、Push命令に応じて、レジスタ403に保持されたデータをメインメモリ404の領域404aに退避させる(ステップS1)。
プロセッサ402は、Push命令の実行後に、領域404aのデータを、メインメモリ404における領域404aとは別の2つの領域404b,404cの各々に書き込む(ステップS2)。これにより、メインメモリ404において、レジスタ403から一時退避されたデータが3重化される。
プロセッサ402は、Pop命令の実行前に、領域404a,404b,404cのデータを互いに照合する(ステップS3)。
さらに、プロセッサ402は、領域404a〜404cのうち過半数(すなわち2つ)の領域のデータが一致し、かつ、領域404aのデータが過半数の領域のデータと一致しないことに応じて、過半数の領域のデータを領域404aに上書きする(ステップS4)。ステップS2が完了してからステップS3の開始までの間に、領域404aにソフトエラーが発生した場合、領域404aのデータは、領域404b,404cのデータと一致しない。そのため、領域404b,404cのデータが領域404aに上書きされる。これにより、領域404aにおけるデータの破損が修復される。
その後、プロセッサ402は、Pop命令に応じて、領域404aのデータをレジスタ403に復帰させる(ステップS5)。
上述したように、ステップS2の完了からステップS3の開始までの間に、領域404aにソフトエラーが発生したとしても、ステップS4において、領域404aのデータが修復される。そのため、ステップS4の完了からステップS5の開始までの間に、領域404aにソフトエラーが発生しない限り、レジスタ403には、正しいデータが復帰される。その結果、レジスタ403からメインメモリ404に一時退避されるデータの破損に起因する、システムの一時的な停止を抑制できる。
§2 具体例
<安全IOユニットのハードウェア構成>
図3は、安全IOユニットのハードウェア構成例を示す模式図である。図3に例示される安全IOユニット400は、プロセッサ402と、メインメモリ404と、ストレージ410と、ローカルバスコントローラ420と、安全IOモジュール430とを含む。これらのコンポーネントは、プロセッサバス440を介して接続されている。
プロセッサ402は、セーフティ制御を実現するために必要な信号の入出力および管理機能に係る制御演算を実行する演算処理部に相当し、CPUやMPU(Micro Processing Unit)などによって構成される。プロセッサ402は、レジスタ403を内蔵している。レジスタ403は、プロセッサ402による演算結果を一時的に保持したり、メインメモリ404を読み書きする際のアドレスを保持したりする。
メインメモリ404は、例えばDRAMやSRAMのような揮発性メモリによって構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMをメインメモリ404として用いることが好ましい。
積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、大容量化のために高集積化されたSRAMによって構成されるメインメモリ404を用いる場合、メインメモリ404にソフトエラーが起こりやすい。以下、メインメモリ404がSRAMであるとものとして説明する。
ストレージ410は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ410には、IO機能を実現するための実行可能プログラム41と、書込読出プログラム42と、照合修復プログラム43とが格納される。
ローカルバスコントローラ420は、ローカルバスを介して、安全IOユニット400が接続されるデバイス(例えば安全PLC200、カプラ300)との間でデータを遣り取りする。
安全IOモジュール430は、安全デバイスと電気的に接続され、安全デバイスによる検出結果などの入力を受け付けたり、安全デバイスへ信号を出力したりする。
<メインメモリ>
図4は、メインメモリの領域を示す図である。図4に示されるように、メインメモリ404は、スタック領域405、データ領域406およびテキスト領域407を含む。スタック領域405は、レジスタ403に保持されるデータを一時退避させるための領域である。データ領域406は、変数などが配置される領域である。テキスト領域407は、プログラムが展開される領域である。
プロセッサ402は、テキスト領域407に展開されたプログラムの命令を1行ずつ実行する。プロセッサ402は、命令内容に応じて、データ領域406から変数の値を読み出したり、データ領域406に変数の値を書き込んだりする。
テキスト領域407に展開されるプログラム(図3に示す実行可能プログラム41など)は、コンパイラによって生成される。コンパイラは、メインルーチンの実行中に関数処理(サブルーチン)を呼び出すときにPush命令を生成し、関数処理の完了後にPop命令を生成する。プロセッサ402は、Push命令に従って、レジスタ403に保持されたデータをスタック領域405に一時退避させる。プロセッサ402は、Pop命令に従って、スタック領域405に退避させていたデータをレジスタ403に復帰させる。
スタック領域405には、スタックポインタSPが設定される。スタックポインタSPは、スタック領域405に置かれたデータの先頭のアドレスを示す。言い換えると、スタックポインタSPは、スタック領域405に最後に置かれたデータのアドレスを示す。スタック領域405に新たなデータが置かれると、スタックポインタSPが更新される。
<メインメモリのデータ領域に対する処理>
メインメモリ404のデータ領域406に対するデータの書き込みおよび読み出しは、書込読出プログラム42に従ってプロセッサ402によって実行される。
図5は、メインメモリへのデータの書き込み処理の一例を示す図である。図5に示されるように、プロセッサ402は、指定された変数の値を示す対象データをメインメモリ404のデータ領域406に書き込む際に、対象データを2回コピーし、2つのコピーデータを生成する。
プロセッサ402は、データ領域406の部分領域406aに対象データを書き込むとともに、部分領域406b,406cに2つのコピーデータをそれぞれ書き込む。部分領域406a,406b,406cのアドレスは、変数と対応付けて管理される。プロセッサ402は、当該アドレスを用いて、部分領域406a,406b,406cにデータを書き込む。これにより、メインメモリ404において、データが3重化される。
書き込み直後において、部分領域406a,406b,406cのデータは同一である。しかしながら、例えば宇宙線や中性子線の影響により、部分領域406a,406b,406cのいずれかにおいてソフトエラーが生じ得る。
図6は、メインメモリからのデータの読み出し処理の一例を示す図である。図6に示されるように、プロセッサ402は、メインメモリ404のデータ領域406における部分領域406a,406b,406cからデータを読み出し、部分領域406a,406b,406cから読み出したデータを互いに照合する。具体的には、プロセッサ402は、部分領域406a,406b,406cのデータをレジスタ403にコピーし、レジスタ403にコピーされたデータ同士を照合する。
部分領域406a,406b,406cのいずれにもソフトエラーが発生していない場合、部分領域406a,406b,406cから読み出したデータの全てが一致する。そのため、プロセッサ402は、部分領域406a,406b,406cから読み出したデータの全てが一致することに応じて、部分領域406aから読み出したデータで示される値を用いて演算処理を続行する。
部分領域406a,406b,406cのうちの1つの部分領域にソフトエラーが発生したとしても、残り2つの部分領域から読み出したデータが一致する。そのため、プロセッサ402は、部分領域406a,406b,406cのうち1つの部分領域を除いた2つの領域から読み出したデータが一致することに応じて、当該2つの部分領域から読み出したデータと一致するように当該1つの部分領域から読み出したデータを書き換える。これにより、レジスタ403上において、当該1つの部分領域から読み出されたデータは、修復される。その後、プロセッサ402は、レジスタ403上の部分領域406aから読み出したデータで示される値を用いて演算処理を続行する。
さらに、プロセッサ402は、当該2つの部分領域から読み出したデータを、メインメモリ404のデータ領域406における当該1つの部分領域に上書きする。これにより、メインメモリ404上においても、当該1つの部分領域のデータが修復される。
このように、部分領域406a,406b,406cのうちの1つの部分領域にソフトエラーが発生したとしても、読み出し処理において、当該1つの部分領域のデータが修復される。
<スタック操作に関連付けて実行される処理>
上述したように、プロセッサ402は、Push命令に従って、レジスタ403に保持されたデータをスタック領域405に一時退避させる(Push操作)。プロセッサ402は、Pop命令に従って、スタック領域405に退避させていたデータをレジスタ403に復帰させる(Pop操作)。ここで、Push命令の代わりに、レジスタ403に保持されたデータを、スタック領域405における3つの部分領域に一時退避させる命令を発行することが考えられる。そして、Pop命令の代わりに、スタック領域405における3つの部分領域のデータを互いに照合し、3つの部分領域のうち過半数の部分領域のデータが一致することに応じて、当該過半数の部分領域のデータをレジスタ403に復帰させる命令を発行することが考えられる。しかしながら、Push命令およびPop命令は、コンパイラによって生成される。そのため、汎用のコンパイラを使用する限り、Push命令およびPop命令の代わりに上記のような命令を発行することができない。
そのため、安全IOユニット400では、スタック操作に関連付けて以下のような処理が実行される。スタック操作に関連付けた以下の処理は、照合修復プログラム43に従ってプロセッサ402によって実行される。
図7は、Push操作後に実行される処理を示す図である。図7には、関数処理20を呼び出すためのPush命令が発行され、当該Push命令に応じたPush操作の後に実行される処理が示される。
プロセッサ402は、スタック領域405におけるスタックポインタSPを監視している。プロセッサ402は、スタック操作の前後のスタックポインタSPを参照することにより、スタック領域405のうち、Push操作によってデータが退避された部分領域405aを特定する(ステップS11)。
プロセッサ402は、特定した部分領域405aのデータをコピーすることにより得られる2つのコピーデータを、データ領域406における2つの部分領域406d,406eにそれぞれ書き込む(ステップS12)。
これにより、メインメモリ404において、Push操作によってスタック領域405に一時退避されたデータが3重化される。
図8は、Pop操作前に実行される処理を示す図である。図8には、図7に示すPush操作に対応するPop操作の前に実行される処理が示される。
プロセッサ402は、Push命令の後に呼び出された関数処理20の完了を示す行「functionExit();」を実行することにより、関数処理20の完了を認識する(ステップS21)。関数処理20の完了の後、メインルーチンに戻るためにPop命令が発行される。そのため、プロセッサ402は、関数処理を完了してから以下のステップS22,S23を実行する。
プロセッサ402は、関数処理20の完了を認識すると、スタック領域405の部分領域405aおよびデータ領域406の2つの部分領域406a,406bのデータを互いに照合する(ステップS22)。
プロセッサ402は、部分領域405a,406d,406eのデータの照合結果に応じて、部分領域405a,406d,406eの修復を行なう(ステップS23)。
図7に示すステップS12の完了から図8のステップS22の開始までの間に、部分領域405a,406d,406eのいずれにもソフトエラーが発生していない場合、部分領域405a,406d,406eから読み出したデータの全てが一致する。この場合には、部分領域405a,406d,406eの修復が必要ないため、ステップS23の処理は省略される。
部分領域405a,406d,406eのうちの1つの部分領域にソフトエラーが発生したとしても、残り2つの部分領域から読み出したデータが一致する。そのため、プロセッサ402は、部分領域405a,406d,406eのうち1つの部分領域を除いた2つの部分領域から読み出したデータが一致することに応じて、当該2つの部分領域から読み出したデータを当該1つの部分領域に上書きする。これにより、当該1つの部分領域のデータが修復される。
具体的には、部分領域406d,406eのデータが一致し、部分領域405aのデータが部分領域406d,406eのデータと不一致の場合、部分領域406d,406eのデータが部分領域405aに上書きされる。図8では、部分領域405aにおけるデータ「00103333」が、部分領域406d,406eのデータ「00003333」と一致しない。そのため、部分領域406d,406eのデータ「00003333」が部分領域405aに上書きされる。これにより、部分領域405aのデータが修復される。
なお、部分領域406d,406eのデータは、部分領域405aにソフトエラーが発生しているか否かの判定および部分領域405aの修復に使用される。そのため、部分領域405a,406dのデータが一致し、部分領域406eのデータが部分領域405a,406dのデータと不一致の場合、部分領域406eのデータの修復は省略されてもよい。同様に、部分領域405a,406eのデータが一致し、部分領域406dのデータが部分領域405a,406eのデータと不一致の場合、部分領域406dのデータの修復は省略されてもよい。
その後、プロセッサ402は、Pop命令に応じて、部分領域405aのデータをレジスタ403に復帰させる。上述したように、ステップS12の完了からステップS22の開始までの間に、部分領域405aにソフトエラーが発生したとしても、ステップS22およびステップS23により、部分領域405aのデータが修復される。そのため、スタック操作に応じてデータが一時退避されるスタック領域405のソフトエラーに起因する制御システム1の一時的な停止を抑制できる。
なお、部分領域405a,406d,406eのデータが互いに異なる場合には、どのデータが正しいかを判定できない。そのため、プロセッサ402は、部分領域405a,406d,406eのデータが互いに異なる場合に、エラー通知を行なってもよい。
<その他の装置のハードウェア構成>
(標準PLCのハードウェア構成)
図9は、標準PLCのハードウェア構成例を示す模式図である。図9に例示される標準PLC100は、プロセッサ102と、メインメモリ104と、ストレージ110と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、主として、標準制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成され、レジスタ103を内蔵する。プロセッサ102は、ストレージ110に格納されたプログラム(一例として、システムプログラム1102および標準制御プログラム1104)を読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
メインメモリ104は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような揮発性メモリによって構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などによって構成される。
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、制御対象に応じて作成された標準制御プログラム1104、および標準PLC100での処理を規定するための設定情報1106が格納される。
フィールドネットワークコントローラ108は、フィールドネットワーク2を介して任意のデバイス(例えばカプラ300)との間でデータを遣り取りする。
ローカルバスコントローラ116は、ローカルバスを介して、標準PLC100に接続される任意のユニット(例えば安全PLC200)との間でデータを遣り取りする。
(安全PLCのハードウェア構成)
図10は、安全PLCのハードウェア構成例を示す模式図である。図10に例示される安全PLC200は、プロセッサ202と、メインメモリ204と、ストレージ210と、ローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
プロセッサ202は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。プロセッサ202は、レジスタ203を内蔵する。
メインメモリ204は、例えばDRAMやSRAMのような揮発性メモリによって構成される。ストレージ210は、例えば、SSDやHDDなどの不揮発性記憶装置などによって構成される。
ストレージ210には、基本的な機能を実現するためのシステムプログラム2102、要求されるセーフティ機能に応じた作成された安全プログラム2104、および安全PLC200での処理を規定するための設定情報2106が格納される。
ローカルバスコントローラ216は、ローカルバスを介して、安全PLC200に接続される安全IOユニット400との間でデータを遣り取りする。
(カプラのハードウェア構成)
図11は、カプラのハードウェア構成例を示す模式図である。図11に例示されるカプラ300は、プロセッサ302と、メインメモリ304と、ストレージ310と、フィールドネットワークコントローラ308と、ローカルバスコントローラ316とを含む。これらのコンポーネントは、プロセッサバス318を介して接続されている。
プロセッサ302は、主として、カプラ300を動作させるための制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。プロセッサ302は、レジスタ303を内蔵する。
メインメモリ304は、例えばDRAMやSRAMのような揮発性メモリによって構成される。ストレージ310は、例えば、SSDやHDDなどの不揮発性記憶装置などによって構成される。
ストレージ310には、基本的な機能を実現するためのシステムプログラム3102およびカプラ300での処理を規定するための設定情報3106が格納される。
フィールドネットワークコントローラ308は、フィールドネットワーク2を介して、任意のデバイス(例えば標準PLC100)との間でデータを遣り取りする。
ローカルバスコントローラ316は、ローカルバスを介して、カプラ300に接続される安全IOユニット400との間でデータを遣り取りする。
<作用・効果>
以上のように、データ処理装置である安全IOユニット400は、メインメモリ404と、メインメモリ404を用いて演算処理を実行するプロセッサ402とを備える。プロセッサ402は、レジスタ403を内蔵する。プロセッサ402は、Push命令に応じて、レジスタ403に保持されたデータをメインメモリ404におけるスタック領域405の部分領域405aに退避させる。プロセッサ402は、Pop命令に応じて、部分領域405aのデータをレジスタ403に復帰させる。プロセッサ402は、Push命令の実行後に第1の処理を実行し、Pop命令の実行前に第2の処理を実行する。第1の処理は、部分領域405aのデータを、メインメモリ404におけるデータ領域406の部分領域406d,406eの各々に書き込む処理を含む。第2の処理は、部分領域405a,406d,406eのデータを互いに照合する処理を含む。第2の処理は、さらに、部分領域406d,406eのデータが一致し、かつ、部分領域405aのデータが当該部分領域406d,406eのデータと一致しないことに応じて、当該部分領域406d,406eのデータを部分領域405aに上書きする処理を含む。
上記の構成によれば、Push命令に応じてデータが一時退避された部分領域405aにソフトエラーが発生したとしても、Pop命令の実行前に、部分領域405aのデータが修復される。そのため、Pop命令に応じて、レジスタ403には正しいデータが復帰される。その結果、レジスタ403からメインメモリ404に一時退避されるデータの破損に起因する、システムの一時的な停止を抑制できる。
部分領域405aは、メインメモリ404に設定されたスタック領域405に含まれる。プロセッサ402は、Push命令の実行前後における、スタック領域405に設定されたスタックポインタSPを参照して、部分領域405aを特定する。これにより、プロセッサ402は、メインメモリ404において、レジスタ403からデータが一時退避された部分領域405aを正しく特定できる。
Push命令は、関数処理20の呼び出しのために発行される。Pop命令は、関数処理20の完了後に発行される。プロセッサ402は、関数処理20の完了に応じて、上記の第2の処理を開始する。これにより、Pop命令の実行の直前において、部分領域405aのデータを修復できる。
<変形例1>
上記の説明では、プロセッサ402は、Push命令に応じて部分領域405aに一時退避されたデータをコピーすることにより得られるコピーデータを、データ領域406における2つの部分領域406a,406bにそれぞれ書き込むものとした。しかしながら、プロセッサ402は、部分領域405aのデータのコピーデータを、データ領域406における3つ以上の部分領域に書き込んでもよい。これにより、Push命令に応じてスタック領域405に一時退避されたデータが多重化される。
例えば、プロセッサ402は、部分領域405aのデータのコピーデータを、データ領域406における第2の部分領域〜第Nの部分領域に書き込む。Nは4以上の整数である。そして、プロセッサ402は、Pop命令の実行前に、部分領域405aおよび第2の部分領域〜第Nの部分領域のデータを互いに照合する。プロセッサ402は、部分領域405aおよび第2の部分領域〜第Nの部分領域のうち過半数の部分領域のデータが一致し、かつ、部分領域405aのデータが当該過半数の部分領域のデータと一致しないことに応じて、当該過半数の部分領域のデータを部分領域405aに上書きする。これにより、部分領域405aにソフトエラーが発生したとしても、部分領域405aのデータが修復される。
<変形例2>
標準PLC100、安全PLC200およびカプラ300も、安全IOユニット400と同様に、スタック操作に関連付けて図7および図8に示す処理を行なってもよい。これにより、標準PLC100、安全PLC200およびカプラ300も、スタック操作に応じてスタック領域に一時退避されたデータの破損を修復できる。その結果、制御システム1の停止の頻度が抑制される。
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
(構成1)
データ処理装置(400)であって、
メモリ(404)と、
前記メモリ(404)を用いて演算処理を実行するプロセッサ(402)とを備え、
前記プロセッサ(402)は、レジスタ(403)を内蔵し、
前記プロセッサ(402)は、
退避命令に応じて、前記レジスタ(403)に保持されたデータを前記メモリ(404)の第1の領域(404a,405a)に退避させ、
復帰命令に応じて、前記第1の領域(404a,405a)のデータを前記レジスタ(403)に復帰させ、
前記プロセッサ(402)は、前記退避命令の実行後に第1の処理を実行し、前記復帰命令の実行前に第2の処理を実行し、
前記第1の処理は、前記第1の領域(404a,405a)のデータを、前記メモリ(404)における第2の領域(404b,404c,406d,406e)から第Nの領域(404b,404c,406d,406e)の各々に書き込む処理を含み、
Nは3以上の整数であり、
前記第2の処理は、
前記第1の領域(404a,405a)から前記第Nの領域(404b,404c,406d,406e)のデータを互いに照合する処理と、
前記第1の領域(404a,405a)から前記第Nの領域(404b,404c,406d,406e)のうち過半数の領域のデータが一致し、かつ、前記第1の領域(404a,405a)のデータが前記過半数の領域のデータと一致しないことに応じて、前記過半数の領域のデータを前記第1の領域(404a,405a)に上書きする処理とを含む、データ処理装置。
(構成2)
前記第1の領域(405a)は、前記メモリ(404)に設定されたスタック領域(405)に含まれ、
前記プロセッサ(402)は、前記退避命令の実行前後における、前記スタック領域(405)に設定されたスタックポインタを参照して、前記第1の領域(404a,405a)を特定する、構成1に記載のデータ処理装置。
(構成3)
前記退避命令は、関数処理の呼び出しのために発行され、
前記復帰命令は、前記関数処理(20)の完了後に発行され、
前記プロセッサ(402)は、前記関数処理(20)の完了に応じて、前記第2の処理を開始する、構成1または2に記載のデータ処理装置。
(構成4)
データ処理装置(400)のデータ処理方法であって、
前記データ処理装置(400)は、
メモリ(404)と、
前記メモリ(404)を用いて演算処理を実行するプロセッサ(402)とを備え、
前記プロセッサ(402)は、レジスタ(403)を内蔵し、
前記データ処理方法は、
前記プロセッサ(402)が、退避命令に応じて、前記レジスタ(403)に保持されたデータを前記メモリ(404)の第1の領域(404a,405a)に退避させるステップと、
前記プロセッサ(402)が、前記退避命令の実行後に第1の処理を実行するステップと、
前記プロセッサ(402)が、復帰命令の実行前に第2の処理を実行するステップと、
前記プロセッサ(402)が、前記復帰命令に応じて、前記第1の領域(404a,405a)のデータを前記レジスタに復帰させるステップとを備え、
前記第1の処理は、前記第1の領域(404a,405a)のデータを、前記メモリ(404)における第2の領域(404b,404c,406d,406e)から第Nの領域(404b,404c,406d,406e)の各々に書き込む処理を含み、
Nは3以上の整数であり、
前記第2の処理は、
前記第1の領域(404a,405a)から前記第Nの領域のデータを互いに照合する処理と、
前記第1の領域(404a,405a)から前記第Nの領域(404b,404c,406d,406e)のうち過半数の領域のデータが一致し、かつ、前記第1の領域(404a,405a)のデータが前記過半数の領域のデータと一致しないことに応じて、前記過半数の領域のデータを前記第1の領域(404a,405a)に上書きする処理とを含む、データ処理方法。
(構成5)
構成4に記載のデータ処理方法をコンピュータに実行させるプログラム。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、20 関数処理、41 実行可能プログラム、42 書込読出プログラム、43 照合修復プログラム、100 標準PLC、102,202,302,402 プロセッサ、103,203,303,403 レジスタ、104,204,304,404 メインメモリ、108,308 フィールドネットワークコントローラ、110,210,310,410 ストレージ、116,216,316,420 ローカルバスコントローラ、118,218,318,440 プロセッサバス、200 安全PLC、300 カプラ、400 安全IOユニット、404a〜404c 領域、405 スタック領域、405a,406a〜406e 部分領域、406 データ領域、407 テキスト領域、430 安全IOモジュール、1102,2102,3102 システムプログラム、1104 標準制御プログラム、1106,2106,3106 設定情報、2104 安全プログラム。

Claims (5)

  1. データ処理装置であって、
    メモリと、
    前記メモリを用いて演算処理を実行するプロセッサとを備え、
    前記プロセッサは、レジスタを内蔵し、
    前記プロセッサは、
    退避命令に応じて、前記レジスタに保持されたデータを前記メモリの第1の領域に退避させ、
    復帰命令に応じて、前記第1の領域のデータを前記レジスタに復帰させ、
    前記プロセッサは、前記退避命令の実行後に第1の処理を実行し、前記復帰命令の実行前に第2の処理を実行し、
    前記第1の処理は、前記第1の領域のデータを、前記メモリにおける第2の領域から第Nの領域の各々に書き込む処理を含み、
    Nは3以上の整数であり、
    前記第2の処理は、
    前記第1の領域から前記第Nの領域のデータを互いに照合する処理と、
    前記第1の領域から前記第Nの領域のうち過半数の領域のデータが一致し、かつ、前記第1の領域のデータが前記過半数の領域のデータと一致しないことに応じて、前記過半数の領域のデータを前記第1の領域に上書きする処理とを含む、データ処理装置。
  2. 前記第1の領域は、前記メモリに設定されたスタック領域に含まれ、
    前記プロセッサは、前記退避命令の実行前後における、前記スタック領域に設定されたスタックポインタを参照して、前記第1の領域を特定する、請求項1に記載のデータ処理装置。
  3. 前記退避命令は、関数処理の呼び出しのために発行され、
    前記復帰命令は、前記関数処理の完了後に発行され、
    前記プロセッサは、前記関数処理の完了に応じて、前記第2の処理を開始する、請求項1または2に記載のデータ処理装置。
  4. データ処理装置のデータ処理方法であって、
    前記データ処理装置は、
    メモリと、
    前記メモリを用いて演算処理を実行するプロセッサとを備え、
    前記プロセッサは、レジスタを内蔵し、
    前記データ処理方法は、
    前記プロセッサが、退避命令に応じて、前記レジスタに保持されたデータを前記メモリの第1の領域に退避させるステップと、
    前記プロセッサが、前記退避命令の実行後に第1の処理を実行するステップと、
    前記プロセッサが、復帰命令の実行前に第2の処理を実行するステップと、
    前記プロセッサが、前記復帰命令に応じて、前記第1の領域のデータを前記レジスタに復帰させるステップとを備え、
    前記第1の処理は、前記第1の領域のデータを、前記メモリにおける第2の領域から第Nの領域の各々に書き込む処理を含み、
    Nは3以上の整数であり、
    前記第2の処理は、
    前記第1の領域から前記第Nの領域のデータを互いに照合する処理と、
    前記第1の領域から前記第Nの領域のうち過半数の領域のデータが一致し、かつ、前記第1の領域のデータが前記過半数の領域のデータと一致しないことに応じて、前記過半数の領域のデータを前記第1の領域に上書きする処理とを含む、データ処理方法。
  5. 請求項4に記載のデータ処理方法をコンピュータに実行させるプログラム。
JP2020039749A 2020-03-09 2020-03-09 データ処理装置、データ処理方法およびプログラム Active JP6721140B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020039749A JP6721140B1 (ja) 2020-03-09 2020-03-09 データ処理装置、データ処理方法およびプログラム
PCT/JP2020/015665 WO2021181712A1 (ja) 2020-03-09 2020-04-07 データ処理装置、データ処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020039749A JP6721140B1 (ja) 2020-03-09 2020-03-09 データ処理装置、データ処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP6721140B1 JP6721140B1 (ja) 2020-07-08
JP2021140642A true JP2021140642A (ja) 2021-09-16

Family

ID=71402421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020039749A Active JP6721140B1 (ja) 2020-03-09 2020-03-09 データ処理装置、データ処理方法およびプログラム

Country Status (2)

Country Link
JP (1) JP6721140B1 (ja)
WO (1) WO2021181712A1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040168078A1 (en) * 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7272748B1 (en) * 2004-03-17 2007-09-18 Symantec Corporation Method and apparatus to detect and recover from a stack frame corruption
JP4374476B2 (ja) * 2004-05-24 2009-12-02 独立行政法人科学技術振興機構 キャッシュ・メモリ及びその制御方法

Also Published As

Publication number Publication date
JP6721140B1 (ja) 2020-07-08
WO2021181712A1 (ja) 2021-09-16

Similar Documents

Publication Publication Date Title
WO2021181712A1 (ja) データ処理装置、データ処理方法およびプログラム
JP6733843B1 (ja) データ処理装置、制御方法およびプログラム
WO2021157103A1 (ja) 情報処理装置、制御方法およびプログラム
WO2022185582A1 (ja) データ処理装置、データ処理方法およびプログラム
JP2002351504A (ja) 制御データ保護装置
WO2022085218A1 (ja) 情報処理システムおよびデータベースの構築方法
JPH0317760A (ja) データ書込み確認方式
JPH0728707A (ja) 不揮発性メモリのデ−タ保護方法
JPS60142747A (ja) 命令再実行制御方式
JPH11338712A (ja) 割込順序保存回路
JPS59111501A (ja) シ−ケンスコントロ−ラ
JP3231864B2 (ja) タスク縮退管理装置
TW202001543A (zh) 影像處理電路及其備份/還原方法
JP2001051854A (ja) 情報管理システム
WO2019231691A1 (en) Combinational address repair in memory controller
JPH02178740A (ja) 情報処理装置
JPS62256047A (ja) 擬似障害発生方式
JPS62166451A (ja) 論理装置の履歴解折装置
JP2008242592A (ja) メモリ監視回路、情報処理装置、及びメモリ監視方法
JPS61134850A (ja) 従属プロセツサのデバツグ方法
JPS61101845A (ja) 情報処理装置の試験方式
US20020089772A1 (en) Automation system with a work drive unit
JPH0553925A (ja) マイクロプログラム制御装置
JPH03127241A (ja) ページング仮想記憶方式におけるメモリ管理方式
JPS62209627A (ja) デ−タ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200414

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200414

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200507

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: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200601

R150 Certificate of patent or registration of utility model

Ref document number: 6721140

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250