JP5985121B1 - プログラム実行装置及びプログラム実行システム及びプログラム実行方法 - Google Patents

プログラム実行装置及びプログラム実行システム及びプログラム実行方法 Download PDF

Info

Publication number
JP5985121B1
JP5985121B1 JP2016525120A JP2016525120A JP5985121B1 JP 5985121 B1 JP5985121 B1 JP 5985121B1 JP 2016525120 A JP2016525120 A JP 2016525120A JP 2016525120 A JP2016525120 A JP 2016525120A JP 5985121 B1 JP5985121 B1 JP 5985121B1
Authority
JP
Japan
Prior art keywords
program
information
program execution
execution device
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016525120A
Other languages
English (en)
Other versions
JPWO2017017829A1 (ja
Inventor
西川 浩司
浩司 西川
貴廣 上野
貴廣 上野
橋本 茂
茂 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5985121B1 publication Critical patent/JP5985121B1/ja
Publication of JPWO2017017829A1 publication Critical patent/JPWO2017017829A1/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
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

プログラム実行装置(100X)において、メモリ(110)は、1つ以上のプログラムを指定する第1情報(101X)と、第1情報(101X)によって指定されたプログラムと他のプログラム実行装置(100Y)により実行されるプログラムとのうち、他のプログラム実行装置(100Y)により実行されるプログラムを少なくとも1つ含む一部のプログラムを指定する第2情報(102X)とを記憶する。命令処理部(120)は、エラー処理部(123)により他のプログラム実行装置(100Y)のエラーが検知されていない場合、第1情報(101X)によって指定されたプログラムを実行する。命令処理部(120)は、エラー処理部(123)により他のプログラム実行装置(100Y)のエラーが検知された場合、第2情報(102X)によって指定されたプログラムを実行する。

Description

本発明は、プログラム実行装置及びプログラム実行システム及びプログラム実行方法に関するものである。
高信頼が要求される組み込みシステムでは、マルチCPU(Central・Processing・Unit)構成が採用される。マルチCPU構成では、1個のCPUが故障しても、組み込みシステムを停止させないように、故障したCPUが実行していた処理を他のCPUが引き継ぐ(例えば、特許文献1参照)。
特開2012−73748号公報
特許文献1に記載のシステムでは、故障したCPUが実行していた処理を引き継いだ代替CPUが、故障したCPUが実行していた処理よりも低負荷で、その処理を実行する。代替CPUは、予め決められた周期時間で、元々実行していた処理に加えて、故障したCPUの処理を実行することが求められる。そのため、代替CPUは、追加の処理を実行するための余裕を持っていなければならない。余裕とは、処理を実行するための時間又はリソースのことである。
本発明は、プログラムを実行するシステムの信頼性の向上を目的とする。
本発明の一態様に係るプログラム実行装置は、
他のプログラム実行装置にエラーが発生した場合に前記他のプログラム実行装置から少なくとも1つのプログラムの実行を引き継ぐプログラム実行装置であって、
1つ以上のプログラムを指定する第1情報と、前記第1情報によって指定されたプログラムと前記他のプログラム実行装置により実行されるプログラムとのうち、前記他のプログラム実行装置により実行されるプログラムを少なくとも1つ含む一部のプログラムを指定する第2情報とを記憶するメモリと、
前記エラーを検知するエラー処理部を有し、前記エラー処理部により前記エラーが検知されていない場合、前記メモリに記憶された第1情報によって指定されたプログラムを実行し、前記エラー処理部により前記エラーが検知された場合、前記メモリに記憶された第2情報によって指定されたプログラムを実行する命令処理部とを備える。
本発明では、プログラム実行装置が、他のプログラム実行装置のエラーを検知した場合、予め定義された情報に基づいて、実行中のプログラムと他のプログラム実行装置のプログラムとのうち、他のプログラム実行装置のプログラムを少なくとも1つ含む一部のプログラムを実行する。プログラム実行装置が、実行中のプログラムと他のプログラム実行装置のプログラムとの全てを実行できるほどの余裕を持っていなくても、他のプログラム実行装置からプログラムの実行を引き継ぐことができるため、プログラムを実行するシステムの信頼性が向上する。
実施の形態1に係るプログラム実行システムの構成を示すブロック図。 実施の形態1に係るプログラム実行装置が保持するプログラムテーブルの例を示す図。 実施の形態1に係る他のプログラム実行装置が保持するプログラムテーブルの例を示す図。 実施の形態1に係るプログラム実行装置の動作を示すフローチャート。 実施の形態1に係るプログラム実行装置の動作を示すフローチャート。 実施の形態2に係るプログラム実行装置が保持するプログラムテーブルの例を示す図。 実施の形態2に係る他のプログラム実行装置が保持するプログラムテーブルの例を示す図。 実施の形態2に係るプログラム実行装置の動作を示すフローチャート。 実施の形態2に係るプログラム実行装置の動作を示すフローチャート。 本発明の実施の形態に係るプログラム実行システムのハードウェア構成例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施の形態に係るシステム及び装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
***構成の説明***
図1を参照して、本実施の形態に係るシステムであるプログラム実行システム500の構成を説明する。
プログラム実行システム500は、本実施の形態に係る装置である複数のプログラム実行装置を備える。それぞれのプログラム実行装置は、通常は個別にプログラムを実行する。本実施の形態では、それぞれのプログラム実行装置は、個別に複数のプログラムを実行する。それぞれのプログラム実行装置は、いずれかのプログラム実行装置にエラーが発生した場合には、そのプログラム実行装置から少なくとも1つのプログラムの実行を引き継ぐ。
プログラム実行装置の数は適宜変更することができるが、本実施の形態において、プログラム実行システム500は、2つのプログラム実行装置100X,100Yを備える。プログラム実行装置100Xは、他のプログラム実行装置100Yにエラーが発生した場合に、他のプログラム実行装置100Yから少なくとも1つのプログラムの実行を引き継ぐ。プログラム実行装置100Xにエラーが発生した場合には、他のプログラム実行装置100Yが同じように動作する。
プログラム実行システム500は、プログラムを実行するシステムであれば、どのようなシステムであってもよいが、本実施の形態では、複数のCPUを用いて、一定の周期で予め決められた処理を実行する組み込みシステムである。1個のCPUが故障した場合には、組み込みシステムを停止させないように、故障したCPUが実行していた処理を他のCPUが引き継ぐ。前述したように、CPUとは、プログラム実行装置100X,100Yのことである。
プログラム実行システム500は、さらに、プログラム実行システム500のI/O(Input/Output)を制御するI/O部200と、プログラム実行装置100X,100Yによって共用されるデータを保持する共有メモリ300とを備える。また、プログラム実行システム500は、プログラム実行装置100X,100YとI/O部200と共有メモリ300とを接続するシステムバス400を備える。
プログラム実行装置100Xは、メモリ110と、命令処理部120とを備える。本実施の形態において、命令処理部120は、CPUに実装される。メモリ110は、CPUにより専用されるローカルメモリである。ローカルメモリは、CPUの内外どちらにあってもよいが、本実施の形態ではCPUの内部にある。
メモリ110は、処理を実行するためのプログラム及びデータを記憶する。メモリ110に記憶されるプログラム及びデータには、エラーを検知できるようにパリティビットが付加される。
メモリ110は、さらに、処理を実行するためのプログラムを定義するプログラムテーブル111Xを保持する。
ここで、プログラムテーブル111Xの例を図2に示す。
プログラムテーブル111Xは、第1プログラムテーブル112Xと、第2プログラムテーブル113Xと、プログラムテーブルポインタ114Xと、ポインタ更新履歴115Xとを有する。
第1プログラムテーブル112Xは、通常動作時用のプログラムテーブルである。「通常動作時」とは、他のプログラム実行装置100Yにエラーが発生したことが検知されていないときのことである。第1プログラムテーブル112Xは、通常動作時にプログラム実行装置100Xが実行するプログラムを定義する。「プログラムを定義する」とは、実際には、プログラムへのポインタを格納することであり、プログラム本体は、共有メモリ300にある。プログラムへのポインタは、第1情報101Xとして第1プログラムテーブル112Xに保持される。
図2の例では、第1プログラムテーブル112Xが、プログラムA−1,A−2,A−3,A−4、終了プログラムを順番に示す第1情報101Xを保持する。よって、プログラム実行装置100Xは、通常動作時にはプログラムA−1,A−2,A−3,A−4を実行する。プログラム実行装置100Xは、プログラムA−4の実行が終わった後は、終了プログラムを実行する。終了プログラムは、次の定周期割り込みを待つプログラムである。
第2プログラムテーブル113Xは、エラー検知時用のプログラムテーブルである。「エラー検知時」とは、他のプログラム実行装置100Yにエラーが発生したことが検知されたときのことである。第2プログラムテーブル113Xは、エラー検知時にプログラム実行装置100Xが実行するプログラムを定義する。前述したように、「プログラムを定義する」とは、実際には、プログラムへのポインタを格納することであり、プログラム本体は、共有メモリ300にある。プログラムへのポインタは、第2情報102Xとして第2プログラムテーブル113Xに保持される。
図2の例では、第2プログラムテーブル113Xが、プログラムA−1,A−2,A−4L,B−1,B−3L、終了プログラムを順番に示す第2情報102Xを保持する。よって、プログラム実行装置100Xは、エラー検知時には、通常動作時に実行するプログラムの一部であるプログラムA−1,A−2,A−4Lと、プログラム実行装置100Yが実行していたプログラムの一部であるプログラムB−1,B−3Lを実行する。プログラム実行装置100Xは、プログラムB−3Lの実行が終わった後は、終了プログラムを実行する。前述したように、終了プログラムは、次の定周期割り込みを待つプログラムである。
なお、プログラムA−4Lのように「L」が付くプログラムは、本来実行するプログラムに比較して、処理の精度を落としたプログラム、或いは、周期によっては実行しないプログラムである。
プログラムテーブルポインタ114Xは、第1プログラムテーブル112Xと第2プログラムテーブル113Xとのいずれかを指す。
ポインタ更新履歴115Xは、プログラムテーブルポインタ114Xが第1プログラムテーブル112Xを指すときにクリアされ、プログラムテーブルポインタ114Xが第2プログラムテーブル113Xを指すときにセットされるフラグである。
命令処理部120は、メモリ110に記憶されたプログラムを実行する。命令処理部120は、故障検知のための比較回路を有する。
命令処理部120は、さらに、初期化部121と、通常処理部122と、エラー処理部123とを有する。初期化部121、通常処理部122、エラー処理部123の機能を実現するプログラムは、共有メモリ300にあり、CPUの起動時にメモリ110にロードされるが、予めメモリ110にあってもよい。
初期化部121は、後述する初期化処理を実行する。
通常処理部122は、通常動作時に、第1プログラムテーブル112Xで定義されたプログラムを実行する。
エラー処理部123は、命令処理部120がメモリ110にアクセスした際のパリティチェックによってプログラム実行装置100Xの故障を検知する。エラー処理部123は、プログラム実行装置100Xの故障を検知すると、他のプログラム実行装置100Yにエラーを通知する。また、エラー処理部123は、他のプログラム実行装置100Yからエラーが通知されると、他のプログラム実行装置100Yの処理を引き継ぐ。即ち、エラー処理部123は、エラー検知時に、第2プログラムテーブル113Xで定義されたプログラムを実行する。
上記のように、メモリ110は、第1情報101Xと、第2情報102Xとを記憶する。第1情報101Xは、1つ以上のプログラムを指定する情報である。第2情報102Xは、第1情報101Xによって指定されたプログラムと他のプログラム実行装置100Yにより実行されるプログラムとのうち、他のプログラム実行装置100Yにより実行されるプログラムを少なくとも1つ含む一部のプログラムを指定する情報である。
本実施の形態では、第1情報101Xは、2つ以上のプログラムを指定する情報である。図2の例では、プログラムA−1,A−2,A−3,A−4が、「2つ以上のプログラム」に相当する。第2情報102Xは、第1情報101Xによって指定されたプログラムのうち一部のプログラムと他のプログラム実行装置100Yにより実行されるプログラムのうち一部のプログラムとを指定する情報である。図2の例では、プログラムA−1,A−2,A−4Lが、前者の「一部のプログラム」に相当し、プログラムB−1,B−3Lが、後者の「一部のプログラム」に相当する。
命令処理部120は、エラーを検知するエラー処理部123を有する。命令処理部120は、エラー処理部123によりエラーが検知されていない場合、メモリ110に記憶された第1情報101Xによって指定されたプログラムを実行する。命令処理部120は、エラー処理部123によりエラーが検知された場合、メモリ110に記憶された第2情報102Xによって指定されたプログラムを実行する。
メモリ110は、さらに、第2情報102Xの付加情報として、第2情報102Xによって指定されたプログラムごとに、プログラムにおける処理の精度を下げてもよいかどうかを示す情報、或いは、周期によってはプログラムを実行しないことがあるかどうかを示す情報を記憶する。図2の例では、プログラムA−4L,B−3Lにおける処理の精度を下げてもよいことを示す付加情報が記憶されるが、周期によってはプログラムA−4L,B−3Lを実行しないことを示す付加情報が代わりに記憶されてもよい。
命令処理部120は、第2情報102Xによって指定されたプログラムを実行する際に、第2情報102Xの付加情報を参照して、プログラムにおける処理の精度を下げるかどうかを決定する。処理の精度を下げる場合、命令処理部120は、プログラムに含まれる浮動小数点型の変数を整数型の変数に変換して処理を実行したり、プログラムに含まれるルーティンのうち一部のルーティンを省略したりする。
プログラム実行装置100Yは、プログラムテーブル111Xに代えて、プログラムテーブル111Yをメモリ110に保持する点を除き、プログラム実行装置100Xと同じように構成される。
ここで、プログラムテーブル111Yの例を図3に示す。
プログラムテーブル111Yは、第1プログラムテーブル112Yと、第2プログラムテーブル113Yと、プログラムテーブルポインタ114Yと、ポインタ更新履歴115Yとを有する。
第1プログラムテーブル112Yは、第1プログラムテーブル112Xと同じように、通常動作時用のプログラムテーブルである。
図3の例では、第1プログラムテーブル112Yが、プログラムB−1,B−2,B−3、終了プログラムを順番に示す第1情報101Yを保持する。よって、プログラム実行装置100Yは、通常動作時にはプログラムB−1,B−2,B−3を実行する。プログラム実行装置100Yは、プログラムB−3の実行が終わった後は、終了プログラムを実行する。
第2プログラムテーブル113Yは、第2プログラムテーブル113Xと同じように、エラー検知時用のプログラムテーブルである。
図3の例では、第2プログラムテーブル113Yが、プログラムB−1,B−2L,B−3,A−1,A−3L,A−4、終了プログラムを順番に示す第2情報102Yを保持する。よって、プログラム実行装置100Yは、エラー検知時には、通常動作時に実行するプログラムであるプログラムB−1,B−2L,B−3と、プログラム実行装置100Xが実行していたプログラムの一部であるプログラムA−1,A−3L,A−4を実行する。プログラム実行装置100Yは、プログラムA−4の実行が終わった後は、終了プログラムを実行する。
プログラムテーブルポインタ114Yは、第1プログラムテーブル112Yと第2プログラムテーブル113Yとのいずれかを指す。
ポインタ更新履歴115Yは、プログラムテーブルポインタ114Yが第1プログラムテーブル112Yを指すときにクリアされ、プログラムテーブルポインタ114Yが第2プログラムテーブル113Yを指すときにセットされるフラグである。
***動作の説明***
図4及び図5を参照して、本実施の形態に係るプログラム実行装置100Xの動作を説明する。プログラム実行装置100Xの動作は、本実施の形態に係るプログラム実行方法に相当する。なお、他のプログラム実行装置100Yの動作については、プログラム実行装置100Xの動作と同様であるため、説明を省略する。
図4は、CPUの起動時のフロー、即ち、初期化処理の手順を示している。
ステップS10において、初期化部121は、ハードウェアの初期化を実行する。
ステップS11において、初期化部121は、ポインタ更新履歴115Xをクリアする。
ステップS12において、初期化部121は、プログラムテーブルポインタ114Xが第1プログラムテーブル112Xを指すように、プログラムテーブルポインタ114Xを設定する。
ステップS13において、初期化部121は、図示していない定周期割り込み用のタイマーを設定する。
ステップS14において、命令処理部120は、待機ループに入り、定周期割り込みの発生を待つ。
図5は、CPUの定周期割り込み発生時のフローを示している。
ステップS20において、命令処理部120は、図示していないポインタオフセットをクリアする。
ステップS21において、命令処理部120は、ポインタ更新履歴115Xがクリアされているか、セットされているかをチェックする。ポインタ更新履歴115Xがクリアされていれば、プログラムテーブルポインタ114Xは、ステップS12で設定された状態、即ち、第1プログラムテーブル112Xを指したままである。この場合、フローは、ステップS30に進む。ポインタ更新履歴115Xがセットされていれば、プログラムテーブルポインタ114Xは、第2プログラムテーブル113Xを指した状態になっている。この場合、フローはステップS22に進む。
ステップS22において、エラー処理部123は、他のCPUからのエラー通知の有無を確認する。他のCPUとは、他のプログラム実行装置100Yのことである。
ステップS23において、エラー通知がなかった場合には、プログラムテーブルポインタ114Xが第1プログラムテーブル112Xを指したまま、フローはステップS30に進む。エラー通知があった場合には、フローはステップS24に進む。
ステップS24において、エラー処理部123は、他のCPUの処理を引き継ぐため、プログラムテーブルポインタ114Xが第2プログラムテーブル113Xを指すように、プログラムテーブルポインタ114Xを更新する。以降の定周期割り込み発生時は、フローがステップS21からステップS30のパスを通ることとなる。
ステップS25において、エラー処理部123は、ポインタ更新履歴115Xをセットする。
ステップS30において、命令処理部120は、プログラムテーブルポインタ114Xにポインタオフセットを加算した場所から、プログラムをロードする。図2の例では、プログラムテーブルポインタ114Xが第1プログラムテーブル112Xを指しており、ポインタオフセットがクリアされている場合、通常処理部122が、プログラムA−1をロードする。プログラムテーブルポインタ114Xが第2プログラムテーブル113Xを指しており、ポインタオフセットがクリアされている場合、エラー処理部123が、プログラムA−1をロードする。
ステップS31において、命令処理部120は、プログラムテーブルポインタ114Xにポインタオフセットを加算した場所からロードしたプログラムが終了プログラムかどうかを確認する。終了プログラムである場合には、フローはステップS34に進む。終了プログラムでない場合には、フローはステップS32に進む。
ステップS32において、命令処理部120は、ロードしたプログラムを実行する。
ステップS33において、命令処理部120は、ポインタオフセットを更新し、次のプログラムのロードを準備する。命令処理部120は、終了プログラムをロードするまで、ステップS30からステップS33の処理を繰り返す。
ステップS34において、命令処理部120は、待機ループに入り、次の定周期割り込みの発生を待つ。
***効果の説明***
本実施の形態では、プログラム実行装置100Xが、他のプログラム実行装置100Yのエラーを検知した場合、予め定義された情報に基づいて、実行中のプログラムと他のプログラム実行装置100Yのプログラムとのうち、他のプログラム実行装置100Yのプログラムを少なくとも1つ含む一部のプログラムを実行する。プログラム実行装置100Xが、実行中のプログラムと他のプログラム実行装置100Yのプログラムとの全てを実行できるほどの余裕を持っていなくても、他のプログラム実行装置100Yからプログラムの実行を引き継ぐことができるため、プログラム実行システム500の信頼性が向上する。
本実施の形態では、1つのCPUが故障したときでも、他のCPUが故障したCPUの処理を引き継ぐことで、組み込みシステムを停止させないため、高信頼組み込みシステムを実現することができる。処理を引き継ぐCPUは、元々実行していた処理について、一部のみを継続したり、精度を落としたり、周期によっては実行しなかったり(即ち、実行すべき周期に制約を加えたり)する。処理を引き継ぐCPUは、さらに、新たに追加される処理についても、一部のみを引き継いだり、精度を落としたり、実行すべき周期に制約を加えたりする。これにより、予め決められた周期時間内で、システム動作を継続させるための処理を実行することが可能となる。
本実施の形態によれば、故障したCPUを代替するCPUは、追加の処理を実行するための余裕を持っている必要がなくなる。また、プログラムテーブルを使用しているので、エラー検知時に実行するプログラムが通常動作時と同じである場合、プログラムを格納する領域を増大させる必要がない。プログラムを格納する領域を共通化することで、システム開発効率を上げることもできる。
***他の構成***
本実施の形態において、プログラム実行装置100X,100Yは、ローカルメモリが搭載されたCPUであるが、プログラム実行装置100X,100Yは、ローカルメモリが搭載されていないCPUとCPUに接続されたローカルメモリとの組み合わせであってもよい。或いは、プログラム実行装置100X,100Yは、プログラムを実行可能な他の要素又は他の要素の組み合わせであってもよい。
実施の形態2.
本実施の形態に係るシステム及び装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。主に実施の形態1との差異を説明する。
本実施の形態では、故障したCPUから処理が引き継がれる際に、処理の精度を落としたり、実行すべき周期に制約を加えたりするだけでなく、予め決められた周期時間を変更することができる。
***構成の説明***
本実施の形態に係るシステムであるプログラム実行システム500の構成については、図1に示した実施の形態1のものと同じであるため、説明を省略する。
ここで、プログラムテーブル111Xの例を図6に示す。
図2の例と図6の例との違いは、プログラムテーブル111Xが、第1タイマー116Xと、第2タイマー117Xとを有する点である。
第1タイマー116Xは、プログラム実行装置100Xが通常動作時に使用する周期タイマーである。第1タイマー116Xの値は、第3情報103Xとしてプログラムテーブル111Xに保持される。
第2タイマー117Xは、プログラム実行装置100Xがエラー検知時に使用する周期タイマーである。第2タイマー117Xの値は、第4情報104Xとしてプログラムテーブル111Xに保持される。
上記のように、メモリ110は、第3情報103Xと、第4情報104Xとを記憶する。第3情報103Xは、第1情報101Xに対応し、第1情報101Xによって指定されたプログラムを実行する周期を指定する情報である。第4情報104Xは、第2情報102Xに対応し、第2情報102Xによって指定されたプログラムを実行する周期を指定する情報である。
本実施の形態では、第4情報104Xは、第3情報103Xによって指定された周期よりも長い周期を指定する情報である。
命令処理部120は、エラー処理部123によりエラーが検知されていない場合、メモリ110に記憶された第3情報103Xによって指定された周期で、第1情報101Xによって指定されたプログラムを実行する。命令処理部120は、エラー処理部123によりエラーが検知された場合、メモリ110に記憶された第4情報104Xによって指定された周期で、第2情報102Xによって指定されたプログラムを実行する。
ここで、プログラムテーブル111Yの例を図7に示す。
図3の例と図7の例との違いは、プログラムテーブル111Yが、第1タイマー116Yと、第2タイマー117Yとを有する点である。
第1タイマー116Yは、プログラム実行装置100Yが通常動作時に使用する周期タイマーである。第1タイマー116Yの値は、第3情報103Yとしてプログラムテーブル111Yに保持される。
第2タイマー117Yは、プログラム実行装置100Yがエラー検知時に使用する周期タイマーである。第2タイマー117Yの値は、第4情報104Yとしてプログラムテーブル111Yに保持される。
***動作の説明***
図8及び図9を参照して、本実施の形態に係るプログラム実行装置100Xの動作を説明する。プログラム実行装置100Xの動作は、本実施の形態に係るプログラム実行方法に相当する。なお、他のプログラム実行装置100Yの動作については、プログラム実行装置100Xの動作と同様であるため、説明を省略する。
図8は、CPUの起動時のフロー、即ち、初期化処理の手順を示している。
ステップS10からステップS12の処理は、図4に示したフローと同じである。
図4に示したフローのステップS13では、システムで予め決められた周期のタイマーが設定される。これに対し、図8に示したフローのステップS33では、初期化部121が、通常動作時用に決められた周期のタイマーである第1タイマー116Xを設定する。
ステップS14の処理は、図4に示したフローと同じである。
図9は、CPUの定周期割り込み発生時のフローを示している。
ステップS20からステップS25の処理は、図5に示したフローと同じである。
本実施の形態では、ステップS25とステップS30との間に、ステップS46の処理が実行される。
ステップS25でポインタ更新履歴115Xがセットされた後、ステップS46において、エラー処理部123は、エラー検知時用に決められた周期のタイマーである第2タイマー117Xを設定する。
ステップS30からステップS34の処理は、図5に示したフローと同じである。
***効果の説明***
本実施の形態では、1つのCPUが故障したときでも、他のCPUが故障したCPUの処理を引き継ぐことで、組み込みシステムを停止させないため、高信頼組み込みシステムを実現することができる。処理を引き継ぐCPUは、新たに追加される処理について、一部のみを引き継いだり、精度を落としたり、実行すべき周期に制約を加えたりするだけでなく、予め決められた周期時間を変更する。具体的には、処理を引き継ぐCPUは、周期時間の変更が許される処理について、周期時間を長めに変更する。これにより、システム動作を継続させるための処理を実行することが可能となる。
以下では、図10を参照して、本発明の実施の形態に係るプログラム実行システム500のハードウェア構成例を説明する。
プログラム実行システム500は、コンピュータである。プログラム実行システム500は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース905は、入力装置907に接続されている。ディスプレイインタフェース906は、ディスプレイ908に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated・Circuit)である。プロセッサ901は、具体的には、CPUである。プロセッサ901は、図1に示したプログラム実行装置100X,100Yに相当する。
補助記憶装置902は、具体的には、ROM(Read・Only・Memory)、フラッシュメモリ、又は、HDD(Hard・Disk・Drive)である。
メモリ903は、具体的には、RAM(Random・Access・Memory)である。メモリ903は、図1に示した共有メモリ300に相当する。
通信装置904は、データを受信するレシーバ921及びデータを送信するトランスミッタ922を含む。通信装置904は、具体的には、通信チップ又はNIC(Network・Interface・Card)である。
入力インタフェース905は、入力装置907のケーブル911が接続されるポートである。入力インタフェース905は、具体的には、USB(Universal・Serial・Bus)端子である。入力インタフェース905は、図1に示したI/O部200に相当する。
ディスプレイインタフェース906は、ディスプレイ908のケーブル912が接続されるポートである。ディスプレイインタフェース906は、具体的には、USB端子又はHDMI(登録商標)(High・Definition・Multimedia・Interface)端子である。ディスプレイインタフェース906は、図1に示したI/O部200に相当する。
入力装置907は、具体的には、マウス、タッチペン、キーボード、又は、タッチパネルである。
ディスプレイ908は、具体的には、LCD(Liquid・Crystal・Display)である。
記録媒体である補助記憶装置902には、初期化部121、通常処理部122、エラー処理部123といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。補助記憶装置902には、OS(Operating・System)も記憶されている。OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図10では、1つのプロセッサ901が示されているが、プログラム実行システム500は、実際には複数のプロセッサ901を備えている。そして、複数のプロセッサ901が「部」の機能を実現するプログラムを個別に実行する。
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置902、メモリ903、又は、プロセッサ901内のレジスタ又はキャッシュメモリに記憶される。
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ901だけでなく、ロジックIC、GA(Gate・Array)、ASIC(Application・Specific・Integrated・Circuit)、FPGA(Field−Programmable・Gate・Array)といった他の種類の処理回路をも包含する概念である。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか1つ又はいくつかを部分的に実施しても構わない。具体的には、これらの実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100X,100Y プログラム実行装置、101X,101Y 第1情報、102X,102Y 第2情報、103X,103Y 第3情報、104X,104Y 第4情報、110 メモリ、111X,111Y プログラムテーブル、112X,112Y 第1プログラムテーブル、113X,113Y 第2プログラムテーブル、114X,114Y プログラムテーブルポインタ、115X,115Y ポインタ更新履歴、116X,116Y 第1タイマー、117X,117Y 第2タイマー、120 命令処理部、121 初期化部、122 通常処理部、123 エラー処理部、200 I/O部、300 共有メモリ、400 システムバス、500 プログラム実行システム、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911 ケーブル、912 ケーブル、921 レシーバ、922 トランスミッタ。

Claims (7)

  1. 他のプログラム実行装置にエラーが発生した場合に前記他のプログラム実行装置から少なくとも1つのプログラムの実行を引き継ぐプログラム実行装置であって、
    1つ以上のプログラムを指定する第1情報と、前記第1情報によって指定されたプログラムと前記他のプログラム実行装置により実行されるプログラムとのうち、前記他のプログラム実行装置により実行されるプログラムを少なくとも1つ含む一部のプログラムを指定する第2情報とを記憶するメモリと、
    前記エラーを検知するエラー処理部を有し、前記エラー処理部により前記エラーが検知されていない場合、前記メモリに記憶された第1情報によって指定されたプログラムを実行し、前記エラー処理部により前記エラーが検知された場合、前記メモリに記憶された第2情報によって指定されたプログラムを実行する命令処理部と
    を備え
    前記メモリは、前記第2情報の付加情報として、前記第2情報によって指定されたプログラムごとに、プログラムにおける処理の精度を下げてもよいかどうかを示す情報を記憶し、
    前記命令処理部は、前記第2情報によって指定されたプログラムを実行する際に、前記第2情報の付加情報を参照して、プログラムにおける処理の精度を下げるかどうかを決定するプログラム実行装置。
  2. 前記他のプログラム実行装置は、複数のプログラムを実行し、
    前記メモリは、前記第1情報として、2つ以上のプログラムを指定する情報を記憶し、前記第2情報として、前記第1情報によって指定されたプログラムのうち一部のプログラムと前記他のプログラム実行装置により実行されるプログラムのうち一部のプログラムとを指定する情報を記憶する請求項1に記載のプログラム実行装置。
  3. 前記メモリは、さらに、前記第1情報に対応し、前記第1情報によって指定されたプログラムを実行する周期を指定する第3情報と、前記第2情報に対応し、前記第2情報によって指定されたプログラムを実行する周期を指定する第4情報とを記憶し、
    前記命令処理部は、前記エラー処理部により前記エラーが検知されていない場合、前記メモリに記憶された第3情報によって指定された周期で、前記第1情報によって指定されたプログラムを実行し、前記エラー処理部により前記エラーが検知された場合、前記メモリに記憶された第4情報によって指定された周期で、前記第2情報によって指定されたプログラムを実行する請求項1又は2に記載のプログラム実行装置。
  4. 前記メモリは、前記第4情報として、前記第3情報によって指定された周期よりも長い周期を指定する情報を記憶する請求項に記載のプログラム実行装置。
  5. 前記命令処理部は、CPUに実装され、
    前記メモリは、前記CPUにより専用されるローカルメモリである請求項1からのいずれか1項に記載のプログラム実行装置。
  6. 請求項1からのいずれか1項に記載のプログラム実行装置である複数のプログラム実行装置
    を備え、
    それぞれのプログラム実行装置は、いずれかのプログラム実行装置にエラーが発生した場合にそのプログラム実行装置から少なくとも1つのプログラムの実行を引き継ぐプログラム実行システム。
  7. 他のプログラム実行装置にエラーが発生した場合に前記他のプログラム実行装置から少なくとも1つのプログラムの実行を引き継ぐプログラム実行装置が、前記エラーを検知していない場合、1つ以上のプログラムを指定する第1情報をメモリから読み取り、読み取った第1情報によって指定されたプログラムを実行し、
    前記プログラム実行装置が、前記エラーを検知した場合、前記第1情報によって指定されたプログラムと前記他のプログラム実行装置により実行されるプログラムとのうち、前記他のプログラム実行装置により実行されるプログラムを少なくとも1つ含む一部のプログラムを指定する第2情報をメモリから読み取り、読み取った第2情報によって指定されたプログラムを実行し、
    前記プログラム実行装置が、前記第2情報によって指定されたプログラムを実行する際に、前記第2情報の付加情報としてメモリに記憶され、前記第2情報によって指定されたプログラムごとに、プログラムにおける処理の精度を下げてもよいかどうかを示す情報を参照して、プログラムにおける処理の精度を下げるかどうかを決定するプログラム実行方法。
JP2016525120A 2015-07-30 2015-07-30 プログラム実行装置及びプログラム実行システム及びプログラム実行方法 Active JP5985121B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/071594 WO2017017829A1 (ja) 2015-07-30 2015-07-30 プログラム実行装置及びプログラム実行システム及びプログラム実行方法

Publications (2)

Publication Number Publication Date
JP5985121B1 true JP5985121B1 (ja) 2016-09-06
JPWO2017017829A1 JPWO2017017829A1 (ja) 2017-07-27

Family

ID=56843300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525120A Active JP5985121B1 (ja) 2015-07-30 2015-07-30 プログラム実行装置及びプログラム実行システム及びプログラム実行方法

Country Status (5)

Country Link
US (1) US10579489B2 (ja)
JP (1) JP5985121B1 (ja)
CN (1) CN107851055B (ja)
DE (1) DE112015006749T5 (ja)
WO (1) WO2017017829A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58107978A (ja) * 1981-12-21 1983-06-27 Fuji Facom Corp ロ−ドシエアデユプレツクスシステムの運用方式
JPH10124338A (ja) * 1996-10-23 1998-05-15 Mitsubishi Electric Corp 並列処理装置
JP2004310252A (ja) * 2003-04-03 2004-11-04 Matsushita Electric Ind Co Ltd マルチプロセッサシステムの故障復帰方法
JP2012073748A (ja) * 2010-09-28 2012-04-12 Denso Corp 制御装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6054052A (ja) 1983-09-02 1985-03-28 Nec Corp 処理継続方式
JP3296378B2 (ja) 1993-08-27 2002-06-24 株式会社東芝 コンピュータバックアップシステム
JPH07114521A (ja) 1993-10-20 1995-05-02 Hitachi Ltd マルチマイクロコンピュータシステム
JP3345626B2 (ja) 1994-09-29 2002-11-18 富士通株式会社 マルチプロセッサシステムにおけるプロセッサ異常対策装置およびマルチプロセッサシステムにおけるプロセッサ異常対策方法
US5978933A (en) * 1996-01-11 1999-11-02 Hewlett-Packard Company Generic fault tolerant platform
JP2853654B2 (ja) 1996-04-17 1999-02-03 日本電気株式会社 密結合マルチプロセッサシステムにおける代替処理方式
DE19780639C2 (de) * 1996-06-20 2003-12-04 Fujitsu Ltd Arbeitsübernahmesystem
US6671704B1 (en) * 1999-03-11 2003-12-30 Hewlett-Packard Development Company, L.P. Method and apparatus for handling failures of resource managers in a clustered environment
JP2001022599A (ja) 1999-07-06 2001-01-26 Fujitsu Ltd フォールトトレラント・システム,フォールトトレラント処理方法およびフォールトトレラント制御用プログラム記録媒体
US6947752B2 (en) * 2001-12-31 2005-09-20 Samsung Electronics Co., Ltd. System and method for distributed call processing using load sharing groups
US20030172106A1 (en) * 2002-02-14 2003-09-11 Iti, Inc. Method of increasing system availability by assigning process pairs to processor pairs
JP4708088B2 (ja) 2005-05-17 2011-06-22 富士通テン株式会社 障害復旧方法およびマイクロコンピュータ
US9043640B1 (en) * 2005-08-26 2015-05-26 Open Invention Network, LLP System and method for event-driven live migration of multi-process applications
US7966514B2 (en) * 2005-09-19 2011-06-21 Millennium It (Usa), Inc. Scalable fault tolerant system
US7930684B2 (en) * 2005-10-12 2011-04-19 Symantec Operating Corporation System and method for logging and replaying asynchronous events
US9384103B2 (en) * 2006-05-16 2016-07-05 Oracle International Corporation EJB cluster timer
JP4458119B2 (ja) 2007-06-11 2010-04-28 トヨタ自動車株式会社 マルチプロセッサシステム及びその制御方法
US20090019258A1 (en) * 2007-07-09 2009-01-15 Shi Justin Y Fault tolerant self-optimizing multi-processor system and method thereof
JP4420944B2 (ja) 2007-07-27 2010-02-24 三菱電機株式会社 車載エンジン制御装置
JP5644380B2 (ja) 2010-11-04 2014-12-24 トヨタ自動車株式会社 情報処理装置
JP5545250B2 (ja) 2011-03-22 2014-07-09 株式会社デンソー 制御装置
JP5434942B2 (ja) 2011-03-22 2014-03-05 株式会社デンソー 制御装置
JP6024138B2 (ja) * 2012-03-21 2016-11-09 日本電気株式会社 クラスタシステム
US9027098B2 (en) * 2013-03-14 2015-05-05 Genband Us Llc Systems, methods, and computer program products for recording service status of applications
CN103440173B (zh) * 2013-08-23 2016-09-21 华为技术有限公司 一种多核处理器的调度方法和相关装置
CN103870350A (zh) * 2014-03-27 2014-06-18 浪潮电子信息产业股份有限公司 一种基于watchdog的微处理器多核加固方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58107978A (ja) * 1981-12-21 1983-06-27 Fuji Facom Corp ロ−ドシエアデユプレツクスシステムの運用方式
JPH10124338A (ja) * 1996-10-23 1998-05-15 Mitsubishi Electric Corp 並列処理装置
JP2004310252A (ja) * 2003-04-03 2004-11-04 Matsushita Electric Ind Co Ltd マルチプロセッサシステムの故障復帰方法
JP2012073748A (ja) * 2010-09-28 2012-04-12 Denso Corp 制御装置

Also Published As

Publication number Publication date
JPWO2017017829A1 (ja) 2017-07-27
DE112015006749T5 (de) 2018-04-12
WO2017017829A1 (ja) 2017-02-02
CN107851055B (zh) 2021-06-29
US20180150366A1 (en) 2018-05-31
CN107851055A (zh) 2018-03-27
US10579489B2 (en) 2020-03-03

Similar Documents

Publication Publication Date Title
AU2012398458B2 (en) Recovery after input/output error-containment events
KR20170003356A (ko) 악성 취약점 파일을 검출하기 위한 방법, 장치 및 단말기
EP3734466A1 (en) Apparatus, systems, and methods to detect and/or correct bit errors using an in band link over a serial peripheral interface
US10909247B2 (en) Computing device having two trusted platform modules
TWI510912B (zh) 多核電路中之容錯
US20210208923A1 (en) Method and apparatus for handling memory failure, electronic device and storage medium
EP2615551B1 (en) Abnormality inspection device, central processing unit, and abnormality inspection method
CN115934389A (zh) 用于错误报告和处理的系统和方法
US8850273B2 (en) Dynamic hardware watchpoint
US8769333B2 (en) Application reliability and fault tolerant chip configurations
US20170308454A1 (en) Adaptive debug tracing for microprocessors
WO2013008326A1 (ja) ソフトウェア検証方法、およびソフトウェア検証システム
JP5985121B1 (ja) プログラム実行装置及びプログラム実行システム及びプログラム実行方法
TW201346529A (zh) 訊號處理電路以及使用該訊號處理電路的測試裝置
US10635444B2 (en) Shared compare lanes for dependency wake up in a pair-based issue queue
US11182316B2 (en) Program interrupt code conversion
JP5440673B1 (ja) プログラマブルロジックデバイス、情報処理装置、被疑箇所指摘方法およびプログラム
JP2013175076A (ja) 情報処理装置および情報処理装置における異常分析方法
US20170371710A1 (en) Detecting and enforcing control-loss restrictions within an application programming interface
KR101064650B1 (ko) 리눅스 운영체제 기반의 시스템에서 usb 디바이스 드라이버의 커널 하드닝을 수행하는 방법 및 그 장치
KR100668676B1 (ko) 기지국 보드 장애 검출 및 상태 변화 감지 장치 및 방법
JPWO2013008326A1 (ja) ソフトウェア検証方法、およびソフトウェア検証システム
JP2013175077A (ja) 情報処理装置および情報処理装置における異常分析方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160629

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160802

R150 Certificate of patent or registration of utility model

Ref document number: 5985121

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350