JP2015176153A - 計算機、障害処理方法及びプログラム - Google Patents

計算機、障害処理方法及びプログラム Download PDF

Info

Publication number
JP2015176153A
JP2015176153A JP2014049418A JP2014049418A JP2015176153A JP 2015176153 A JP2015176153 A JP 2015176153A JP 2014049418 A JP2014049418 A JP 2014049418A JP 2014049418 A JP2014049418 A JP 2014049418A JP 2015176153 A JP2015176153 A JP 2015176153A
Authority
JP
Japan
Prior art keywords
processing
processing unit
stored
cache memory
execution
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
JP2014049418A
Other languages
English (en)
Other versions
JP6218652B2 (ja
Inventor
泰公 渡邉
Taiko Watanabe
泰公 渡邉
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
Priority to JP2014049418A priority Critical patent/JP6218652B2/ja
Publication of JP2015176153A publication Critical patent/JP2015176153A/ja
Application granted granted Critical
Publication of JP6218652B2 publication Critical patent/JP6218652B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】キャッシュメモリにおいてデータに障害が発生した場合でも動作を継続させることができ、コストを低減しつつ信頼性を向上させることができる計算機を提供する。
【解決手段】演算処理部157が、キャッシュメモリに記憶された実行情報をバックアップバッファ156に保存した後に、実行情報を用いて演算処理を実行し、エラー検出部154が、演算処理の実行中にキャッシュメモリから読み出される読出データに障害があるかを判定し、例外処理部155が、読出データに障害があると判定された場合に障害がある読出データがライトバック方式で記憶されているかを判定し、再演算管理部157が、読出データがライトバック方式で記憶されていると判定された場合に、キャッシュメモリを初期化するとともにバックアップバッファ156からキャッシュメモリに実行情報を読み出し、実行情報に基づいて演算処理を再実行する。
【選択図】図5

Description

本発明は、計算機、障害処理方法及びプログラムに関する。特に、規定実行周期で処理が周期実行される計算機と、この計算機における障害処理方法及びプログラムに関する。
計算機では、計算機中に使用されている集積回路の何らかの異常動作により、計算機自体の誤動作を引き起こすことがある。このような障害のうち、集積回路の物理的な破損などを原因とする障害をハードエラーと呼び、アルファ線の衝突等により集積回路のセルの電荷量に発生する乱れなどに起因する一過性の障害をソフトエラーと呼ぶ。
ソフトエラーに対して、計算機の信頼性を確保するために、ECC(Error・Check・and・Correct)機能を持ったメインメモリやキャッシュメモリが用いられている。ECC機能は、メモリセルに生じたメモリエラーの検出及び訂正を行なう機能であり、一般にシングルビットエラーの検出及び訂正、マルチビットエラーの検出が可能である。
しかし近年、集積回路の微細化が飛躍的に進んでおり、アルファ線の1回の衝突で、集積回路の複数のセルが影響を受ける可能性が増加している。ECC機能では、複数のビットにわたってエラーが発生するマルチビットエラーを訂正することはできないため、マルチビットエラーを含むソフトエラーへの対処方法が求められている。
キャッシュメモリの動作方式には、ライトスルーとライトバックの2通りがある。ライトスルーは、CPU(Central・Processing・Unit)からメインメモリへ書き込みアクセスが行われる際に、キャッシュメモリへのデータの書き込みと同時に、メインメモリに対しても同一内容のデータを書き込む方式である。ライトバックは、CPUからメインメモリへ書き込みアクセスが行われる際に、キャッシュメモリに対してのみ書き込みを行ない、キャッシュメモリに格納されているデータの入れ替えが発生する際などに、メインメモリに対して書き込みが行なわれる。
ライトスルーでは、キャッシュメモリに存在するデータは、メインメモリにも必ず存在する。よって、キャッシュメモリのデータが破損した場合は、メインメモリに存在する同一のデータを読み出して復旧することが可能である。
特許文献1では、キャッシュメモリをライトスルーとして扱うことで、メインメモリからのデータの再読み出しを可能としている。しかし、特許文献1の方法では、キャッシュメモリでのソフトエラー発生時にメインメモリからデータを再読み出しすることができるのは、キャッシュメモリをライトスルーとしている領域のデータのみであり、それ以外領域のデータはソフトエラーから保護することができない。
特開2010−237739号公報 特開2000−222232号公報
特許文献1の課題に対して、高い信頼性が要求される産業用計算機では、メインメモリの全ての領域をライトスルーで読み書きを行なうようにすることで、ソフトエラーに対処する例がある。しかし、メインメモリへの読み書きは、CPUの処理速度に比べて非常に低速であり、メインメモリへの書き込み完了を待たなければならないライトスルーは、CPUの能力を有効に活用することができず、CPUのスループットが低下する傾向がある。
この傾向はメモリバスを共有するCPUコアが増えるほど顕著であり、マルチコアCPUによる計算機の高性能化、高機能化を進める際に問題となる。
キャッシュメモリをライトバックで扱うことで、ライトスルーのときに比べてCPUのスループットは向上するが、ソフトエラー発生時にメインメモリからキャッシュメモリへのデータの再読み込みができなくなるため、計算機の動作の信頼性を確保できなくなり、最悪の場合計算機の動作を継続できなくなるという課題がある。
産業用計算機では、外部に接続された機器に対して周期的に制御情報を出力し続ける必要があり、ソフトエラーによる計算機の停止は避けなければならない。また、産業用計算機では、外部機器を制御するための制御情報を規定された実行周期内に演算しており、当該制御情報の欠落や異常値は、外部に接続された機器の異常動作を引き起こす危険がある。
なお、ここで述べる産業用計算機とは、外部に接続された機器を直接操作するコントローラ、このコントローラを監視し制御する計算機など、一般にプラントで使用される計算機を指す。
本発明に係る計算機は、CPU(Central・Processing・Unit)とメインメモリとを備える計算機において、
前記CPUは、演算処理の実行に用いる実行情報を記憶するキャッシュメモリを備え、
前記キャッシュメモリに記憶された前記実行情報を前記メインメモリにバックアップ情報として保存した後に、前記実行情報を用いて前記演算処理を前記CPUにより実行する演算処理部と、
前記演算処理の実行中に、前記CPUにより前記キャッシュメモリから読み出される読出データに障害があるか否かを判定する障害検出部と、
前記読出データに障害があると判定された場合、前記演算処理の実行を停止するとともに、前記障害がある読出データに対応する対応データが前記メインメモリに記憶されているか否かを判定する障害処理部と、
前記対応データが前記メインメモリに記憶されていないと判定された場合に、前記キャッシュメモリを初期化するとともに前記演算処理部により前記メインメモリに保存された前記バックアップ情報を前記実行情報として前記キャッシュメモリに読み出し、読み出した前記実行情報に基づいて前記演算処理を実行する再演算管理部とを備えることを特徴とする。
本発明に係る計算機によれば、演算処理部が、キャッシュメモリに記憶された実行情報をメインメモリにバックアップ情報として保存した後に、実行情報を用いて演算処理をCPUにより実行し、障害検出部が、演算処理の実行中に、CPUによりキャッシュメモリから読み出される読出データに障害があるか否かを判定し、障害処理部が、読出データに障害があると判定された場合、演算処理の実行を停止するとともに、障害がある読出データに対応する対応データがメインメモリに記憶されているか否かを判定し、再演算管理部が、対応データがメインメモリに記憶されていないと判定された場合に、キャッシュメモリを初期化するとともにメインメモリに保存されたバックアップ情報を実行情報としてキャッシュメモリに読み出し、読み出した実行情報に基づいて演算処理を再実行するので、キャッシュメモリにおいてデータに障害が発生した場合でも、ハードウェアを追加することなく、計算機の動作を継続させることができ、コストを低減しつつ信頼性を向上させることができる。
実施の形態1で説明する計算機100,100aの構成の一例を示す図である。 実施の形態1で説明する計算機100,100aの周期実行の動作の一例を示す図である。 比較のための計算機100aのブロック構成の一例を示す図である。 比較のための計算機100aのエラー検出処理(工程)の動作の一例を示すフローチャートである。 実施の形態1に係る計算機100のブロック構成の一例を示す図である。 実施の形態1に係る計算機100の周期処理(工程)の一例を示すフローチャートである。 実施の形態1に係る計算機100の障害対応方法における障害対応処理(工程)の一例を示すフローチャートである。 実施の形態1に係る計算機100のハードウェア構成の一例を示す図である。 実施の形態2に係る計算機101のブロック構成の一例を示す図である。 実施の形態2に係る計算機101の周期処理(工程)の一例を示すフローチャートである。 実施の形態2に係る計算機101の障害対応方法における障害対応処理(工程)の一例を示すフローチャートである。 実施の形態3に係る計算機102のブロック構成の一例を示す図である。 実施の形態3に係る計算機102の周期処理(工程)の一例を示すフローチャートである。 実施の形態3に係る計算機102の障害対応方法における障害対応処理(工程)の一例を示すフローチャートである。 実施の形態4に係る計算機103のブロック構成の一例を示す図である。 実施の形態4に係る計算機103の周期処理(工程)の一例を示すフローチャートである。
実施の形態1.
図1は、本実施の形態で説明する計算機100,100aの構成の一例を示す図である。図1を用いて、本実施の形態で説明する計算機100,100aの構成について説明する。計算機100は本実施の形態に係るであり、計算機100aは計算機100と比較するためのものである。
計算機100,100aは、外部に制御対象である外部機器200が接続される。
計算機100,100aは、入力ポート110、CPU120、メインメモリ130、出力ポート140を備える。CPU120は、キャッシュメモリ121を備える。
外部機器200は、例えば、計算機100,100aが発電プラントで用いるコントローラなどの機器であれば、タービン発電機などである。なお、外部機器200は計算機100,100aと通信を行い、計算機100,100aから操作される機器であれば、タービン発電機に限定しない。
キャッシュメモリ121は、ECC機能を備える。ECC機能は、キャッシュメモリ121においてソフトエラーの発生したキャッシュラインを特定し、特定したキャッシュラインに対応するメインメモリ130のデータのアドレスを特定することができる。また、ECC機能は、シングルビットエラーの検出及び訂正、マルチビットエラーの検出をすることができる。
計算機100,100aと外部機器200とは、情報通信可能な状態で接続されており、相互にデータを送受信可能である。外部機器200は、この外部機器200の動作状況、この外部機器200の周辺状況をセンサ機器などによって取得する。そして、外部機器200は、このセンサで取得した情報(以後、センサ情報と記述)を計算機100,100aに送信する。
入力ポート110は、外部機器200から送られたセンサ情報等のデータをメインメモリ130に保存する。
計算機100,100aのCPU120では、外部機器200から取得したセンサ情報や、計算機100,100aの操作者からの操作情報などから、外部機器200を制御するための制御情報(以後、制御情報と記述)を演算し、その演算結果を出力ポート140を介して外部機器200へ送信する。
図2は、本実施の形態に係る計算機100,100aの周期実行の動作の一例を示す図である。
計算機100,100aでは、外部機器200の動作を制御するためのプログラムが動作している。産業用計算機では規定実行周期以内で規定された処理を実行し、それを周期毎に繰り返す方式が一般的である。図2を用いて、このような周期実行がなされる計算機100,100aの動作例を説明する。
図2は、計算機100,100aで実行されているプログラムの動作を時系列で示したものである。図2の動作例では、規定された実行周期以内に、(1)入出力処理、(2)演算処理、(3)その他の処理が実行されている。実行周期は、例えば、50msecである。
(1)の入出力処理は、計算機100,100aと外部機器200との間で通信を行う処理であり、少なくとも、外部機器200から計算機100,100aに対してセンサ情報が送られる入力処理と、計算機100,100aから外部機器200に対して制御情報が送られる出力処理とが実行される。出力処理で外部機器200に対して出力される制御情報は、前の実行周期にて演算されたものである。入出力処理の中で、前記入力処理と前記出力処理のどちらが先に実行されるかは、特に限定しない。
(2)の演算処理では、センサ情報や、計算機操作者からの操作情報を元に制御情報を演算する。この演算処理で演算された制御情報は、次の演算周期以降の入出力処理により外部機器200に対して出力される。
(3)のその他の処理は、入出力処理、演算処理と比べると優先度の低い処理であり、実行周期の制限を受けない処理などが該当し、実行周期以内に処理が完了しない場合は、処理内容を分割し、複数の実行周期にわたって処理が実行される。
計算機100,100aでは、キャッシュメモリ121上のデータがマルチビットエラーで破損した際に、メインメモリ130から同一のデータを読み出し、破損したデータを訂正できるようにしている。この方式を用いるためには、キャッシュメモリ121が持っているデータが、メインメモリ130にも存在している必要があり、メインメモリの全ての領域をライトスルーで扱う必要がある。ライトスルーとは、CPU120がメインメモリ130に対してデータの読み書きを行なうときの方式であり、CPU120がデータの書き込みを行なう際には、キャッシュメモリ121とメインメモリ130とに対して、同じデータが同時に書き込まれる方式である。
図3は、比較のための計算機100aの機能ブロックの一例を示す図である。
図3に示すように、計算機100aは、演算処理部151、入力処理部152、出力処理部153、エラー検出部154、例外処理部155を備える。
図3では、計算機100の演算処理機能と、ソフトエラーが発生した際のエラー処理に関する機能とを示している。
演算処理部151は、CPU120を用いて、外部機器200へ出力するための制御情報を演算する。
入力処理部152は、入力ポート110を用いて、外部機器200からのセンサ情報を取得し、センサ情報を演算処理部151から参照可能な状態にする。
出力処理部153は、出力ポート140を用いて、外部機器200に対して、演算処理部151で演算された制御情報を出力する。
エラー検出部154は、CPU120がキャッシュメモリ121に対して読み出しを行なった際に、ECC機能によって、キャッシュメモリ121にソフトエラーが発生していないかを確認する。エラー検出部154は、ECC機能により、キャッシュメモリ121にソフトエラーが発生しており、更にそれがシングルビットエラーであった場合は、シングルビットエラーを訂正する。また、エラー検出部154は、ECC機能により、キャッシュメモリ121に発生したソフトエラーがマルチビットエラーであった場合は、CPU120に対して割込みを通知する。エラー検出部154は、ECC機能により、当該割込みに対応して呼び出されるハンドラ(プログラム)に対して、マルチビットエラーが発生したキャッシュラインと、当該キャッシュラインに対応するメインメモリのアドレスとを渡す。
エラー検出部154は、演算処理の実行中に、CPUによりキャッシュメモリ121から読み出される読出データにエラー(障害)があるか否かを判定する障害検出部の一例である。
例外処理部155は、エラー検出部154が通知した割込みに対応して呼び出されるハンドラである。例外処理部155は、マルチビットエラーが発生したキャッシュラインを無効化する。あるいは、例外処理部155は、マルチビットエラーが発生したキャッシュラインに対応するメインメモリのアドレスからデータを読み出す。例外処理部155は、マルチビットエラーが発生したキャッシュラインを無効化し、マルチビットエラーが発生したキャッシュラインに対応するメインメモリのアドレスからデータを読み出すことで、マルチビットエラーを訂正する。
図4は、比較のための計算機100aのエラー検出処理(工程)の動作の一例を示すフローチャートである。
図4を用いて、計算機100aのエラー検出処理(工程)における各部の動作について説明する。計算機100aのエラー検出処理(工程)は、計算機100aの各部が計算機100aの備えるCPU、入出力ポート、メモリなどのハードウェア資源と協働して処理を実行することにより実現される。
エラー検出処理は、CPU120がキャッシュメモリ121のデータの読み出しを行なう際の処理である。
S101において、CPU120がデータの読み出しを要求する。
S102において、エラー検出部154は、ECC機能を用いて、読み出し対象のキャッシュメモリ121のキャッシュラインをチェックする。
S103においてエラー検出部154がキャッシュメモリ121にソフトエラーが発生していないと判定した場合(S103でNO)、CPU120は、キャッシュメモリ121のデータを読み出す。
S103においてエラー検出部154がキャッシュメモリ121にソフトエラーが発生していると判定した場合(S103でYES)、S104に進む。
S104において、エラー検出部154は、キャッシュメモリに発生したソフトエラーはシングルビットエラーか、マルチビットエラーかを判定する。
ソフトエラーがシングルビットエラーであった場合(S104でNO)は、エラー検出部154は、ECC機能によりシングルビットエラーによって破損したデータを訂正する(S106)。
ソフトエラーがマルチビットエラーであった場合(S104でYES)、S105に進む。
S105において、エラー検出部154は、ECC機能により、CPU120に割込みを実行することにより、例外処理部155を呼び出す。エラー検出部154は、ECC機能により、当該割込みに対応して呼び出されるハンドラ(例外処理部155)に対して、マルチビットエラーが発生したキャッシュラインと、当該キャッシュラインに対応するメインメモリ130のアドレスとを渡す。
S107において、例外処理部155は、マルチビットエラーによって破損したデータのキャッシュラインを無効化する。この処理により、CPU120が読み出しを要求したキャッシュメモリのデータが無効化される。
S108において、例外処理部155は、無効化したキャッシュラインに対応するメインメモリ130のアドレスに基づいて、無効化したキャッシュラインに対応するメインメモリ130のデータを、メインメモリ130からキャッシュメモリ121に読み出し(ロードし)、CPU120はキャッシュメモリ121のデータを読み出す。
以上で、比較のための計算機100aのエラー検出処理(工程)を終了する。
以上のように、比較のための計算機100aは、メインメモリ130の全ての領域をライトスルーで扱うものである。
本実施の形態に係る計算機100では、キャッシュメモリ121のデータが破損した場合、計算機100の動作に支障が出るデータなどをライトスルーで扱い、ライトスルーで保護している領域のデータから再計算可能なデータをライトスルーで扱う。
具体的には、本実施の形態に係る計算機100では、メインメモリ130の領域のうち、命令コードのような破損すると計算機の動作に支障の出るデータ、センサ情報などの外部機器から取得したデータ、外部機器との通信に使用するデータ、プログラム実行時に使用するグローバル変数、演算処理で求めた制御情報などのデータなどを記憶する領域をライトスルーで扱う。
また、本実施の形態に係る計算機100では、メインメモリ130の領域のうち、キャッシュメモリ121の演算処理中に使用するスタック領域やヒープ領域、計算途中にデータを保存するバッファなどに対応する領域はライトバックで扱う。
ライトスルーで扱うメモリ領域と、ライトバックで扱うメモリ領域とは、明示的に分割されている。このため、キャッシュメモリ121に保存されているデータが、メインメモリ130上でライトスルーのメモリ領域と、ライトバックのメモリ領域のどちらに属するかを判定することができるものとする。
図5は、本実施の形態に係る計算機100のブロック構成の一例を示す図である。
図5は、本実施の形態に係る計算機100の演算処理機能と、ソフトエラーが発生した際のエラー処理に関する機能を示したブロック図である。図5に示す計算機100では、図3で説明した計算機100aのブロック構成に加えて、バックアップバッファ156、再演算管理部157を備える。
バックアップバッファ156は、演算処理部151による演算処理(図2参照)の初期状態を保存するためのバッファであり、ライトスルーで読み書きを行う。
演算処理部151は、処理開始直後の時点t1(図2参照)で、演算処理部151のスタックフレーム及びスタックフレームのアドレスをバックアップバッファ156へ保存する。このスタックフレームには、演算処理部151完了後の戻り先命令アドレス、演算処理部151が受け取る引数、演算処理部151内で使用するローカル変数や一時変数が含まれる。また、演算処理中で変更を行なうグローバル変数についても、バックアップバッファ156への保存を行なう。
再演算管理部157は、演算処理部151による演算処理の実行中にライトバックで扱っているメモリ領域でマルチビットエラーが起きた際に呼び出される。再演算管理部157は、演算処理の途中演算結果や演算処理開始以降に積み上げられたスタックフレームを破棄する。そして、再演算管理部157は、バックアップバッファ156に保存された演算処理開始時のスタックフレーム及びグローバル変数を読み出し、演算処理を最初から再実行させる。
図6は、本実施の形態に係る計算機100の周期処理の流れの一例を示すフローチャートである。図6を用いて、計算機100の周期処理について説明する。
S201において、計算機100は、外部機器200からセンサ情報を取得する(入力処理)。取得したセンサ情報は、ライトスルーのメモリ領域に保存される。すなわち、キャッシュメモリ121に記憶されるとともにメインメモリ130のライトスルーのメモリ領域に記憶される。
S202において、計算機100は、前の周期の周期処理の実行中に演算された制御情報を、外部機器200に対して出力する(出力処理)。
出力処理が完了すると、S203において、計算機100は演算処理を開始する。演算処理の最初の段階では、演算処理の実行に用いられる、演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数などの実行情報1561がキャッシュメモリ121に記憶されている。
S204において、演算処理部151は、演算処理の最初の段階で、演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数をバックアップバッファ156へ保存する。なお、保存するスタックフレームは、演算処理の関数のもののみであり、それ以前に積まれているスタックフレームは保存する必要はない。ここで、バックアップバッファ156に保存する情報を実行情報1561とする。実行情報1561は、バックアップバッファ156にバックアップ情報として保存される。
計算機100は、バックアップバッファ156はライトスルーで扱う。すなわち、演算処理部151は、スタックフレーム、スタックフレームのアドレス、グローバル変数を、キャッシュメモリ121に記憶するとともにメインメモリ130のライトスルーのメモリ領域に記憶する。
このとき、バックアップバッファ156のデータにソフトエラーが発生した場合には、エラー検出部154は比較のための計算機100aのエラー検出処理で示した方法によってデータの訂正をする。
S205において、演算処理部151は、センサ情報等から制御情報を算出するための演算処理を開始する。演算処理部151は、この演算処理の実行中において使用するスタック領域やヒープ領域、計算途中にデータを保存するバッファなどに対応する領域はライトバックで扱う。
S206において、演算処理部151は、演算処理により制御情報を算出すると、算出した制御情報をライトスルーのメモリ領域に保存する。すなわち、演算処理部151は、算出した制御情報を、キャッシュメモリ121に記憶するとともにメインメモリ130のライトスルーのメモリ領域に記憶する。また、演算処理部151は、キャッシュメモリ121に保存されているライトバック方式により扱われたデータを、メインメモリ130のライトバックのメモリ領域に書き戻す。
S207において、演算処理部151は、演算処理を終了する。
S208において、計算機100は、その他の処理を実行し、その他の処理の実行が終了した時点で1周期の処理が終了となる。
図7は、本実施の形態に係る計算機100の障害対応方法における障害対応処理(工程)の一例を示すフローチャートである。
図7を用いて、計算機100の障害対応処理(工程)における各部の動作について説明する。計算機100の障害対応処理(工程)は、計算機100の各部が計算機100の備えるCPU、入出力ポート、メモリなどのハードウェア資源と協働して処理を実行することにより実現される。
障害対応処理は、キャッシュメモリ121でソフトエラーが発生したときの動作の一例である。図7は、本実施の形態において、例えば、CPU120がキャッシュメモリ121のデータの読み出しを行なう場合の動作フローである。
S301において、CPU120がデータの読み出しを要求する。
S302において、エラー検出部154は、ECC機能を用いて、読み出し対象のキャッシュメモリ121のキャッシュラインをチェックする。
S303においてエラー検出部154がキャッシュメモリ121にソフトエラーが発生していないと判定した場合(S303でNO)、障害対応処理を終了し、CPU120は、キャッシュメモリ121のデータを読み出す。
S303においてエラー検出部154がキャッシュメモリ121にソフトエラーが発生していると判定した場合(S303でYES)、S304に進む。
S304において、エラー検出部154は、キャッシュメモリに発生したソフトエラーはシングルビットエラーか、マルチビットエラーかを判定する。
ソフトエラーがシングルビットエラーであった場合(S304でNO)は、エラー検出部154は、ECC機能によりシングルビットエラーによって破損したデータを訂正する(S307)。その後、障害対応処理を終了する。
ソフトエラーがマルチビットエラーであった場合(S304でYES)、S305に進む。
S305において、エラー検出部154は、ECC機能により、CPU120に割込みを実行することにより、例外処理部155を呼び出す。エラー検出部154は、ECC機能により、当該割込みに対応して呼び出されるハンドラ(例外処理部155)に対して、マルチビットエラーが発生したキャッシュラインと、当該キャッシュラインに対応するメインメモリ130のアドレスとを渡す。マルチビットエラーが発生したキャッシュラインと、当該キャッシュラインに対応するメインメモリ130のアドレスとを含む情報は障害信号の一例である。
S306において、例外処理部155は、マルチビットエラーが発生したキャッシュラインが、メインメモリ130において、ライトバックで扱うメモリ領域か、ライトスルーで扱うメモリ領域かを判定する。
例外処理部155は、キャッシュメモリ121から読み出されたキャッシュライン(読出データ)にエラー(障害)があると判定された場合、エラーがあるキャッシュラインに対応する対応データがメインメモリ130に記憶されているか否かを判定する障害処理部の一例である。例外処理部155は、すなわち、キャッシュライン(読出データ)がライトバック方式で記憶されているか、あるいは、ライトスルー方式で記憶されているかを判定する。このとき、演算処理部151の動作は停止する。演算処理部151の動作を停止するのは、エラー検出部154でもよいし、例外処理部155でもよい。
マルチビットエラーが発生したキャッシュラインがライトスルーで扱うメモリ領域に対応している場合(S306でNO)、S309に進む。
S309において、例外処理部155は、マルチビットエラーによって破損したデータのキャッシュラインを無効化する。この処理により、CPU120が読み出しを要求したキャッシュメモリのデータが無効化される。
S310において、例外処理部155は、障害信号に基づいて、無効化したキャッシュラインに対応するメインメモリ130のアドレスを取得する。例外処理部155は、取得したアドレスから、無効化したキャッシュラインに対応するメインメモリ130のデータをキャッシュメモリ121に読み出す(ロードする)。以上で、障害対応処理を終了し、CPU120はキャッシュメモリ121のデータを読み出す。
マルチビットエラーが発生したキャッシュラインがライトスバックで扱うメモリ領域に対応している場合(S306でYES)、S308に進む。
S308において、例外処理部155は、CPU120に割込みを実行することにより、再演算管理部157を呼び出す。
S311において、再演算管理部157は、キャッシュメモリ121上の全データを無効化する。
S312において、再演算管理部157は、演算処理の最初の段階でバックアップバッファ156に保存した実行情報を読み出す(図6のS204参照)。
再演算管理部157は、バックアップバッファ156に保存されているスタックフレームのアドレスから演算処理開始時のスタックフレームの位置を確認し、バックアップバッファ156に保存されているスタックフレームのデータを読み出して上書きする。また、プログラム中で使用するグローバル変数についても、バックアップバッファ156に保存されているデータへロールバックする。その後、演算処理の最初から演算を再実行させる。
このように、再演算管理部157は、読出データ(対応データ)がメインメモリ130に記憶されていないと判定された場合に、キャッシュメモリ121を初期化するとともにバックアップバッファ156に保存された実行情報1561を前記キャッシュメモリに読み出し、読み出した実行情報1561に基づいて演算処理を再実行する。
以上で、計算機100の障害対応処理(工程)を終了する。
図8は、本実施の形態に係る計算機100,100aのハードウェア構成の一例を示す図である。図8を用いて、計算機100のハードウェア構成例について説明する。
計算機100,100aは、各構成要素をプログラムで実現することができる。
計算機100,100aのハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
図1のCPU120は演算装置901の一例である。メインメモリ130は外部記憶装置902、主記憶装置903の一例である。入力ポート110、出力ポート140は入出力装置905の一例である。
外部記憶装置902は、例えばROM(Read・Only・Memory)やフラッシュメモリ、ハードディスク装置である。主記憶装置903は、RAM(Random・Access・Memory)である。
通信装置904は、例えば通信ボード等であり、LAN(Local・Area・Network)等に接続されている。通信装置904は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図3、図5などのブロック構成図に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図3、図5に示す「〜部」の機能を実現するプログラムを実行する。
また、アプリケーションプログラムも外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901により実行される。
なお、図8の構成は、あくまでも計算機100のハードウェア構成の一例を示すものであり、計算機100のハードウェア構成は図8に記載の構成に限らず、他の構成であっても構わない。
以上のように、本実施の形態に係る計算機100は、一部の命令やデータについてはキャッシュメモリをライトバックで扱うことで、CPUのスループット低下を防ぐ。具体的には、OSやプログラムの命令コードや、外部機器から取得したデータなど、当該データがソフトエラーにより破損した場合、計算機の動作が継続できなくなったり、外部機器から取得し直さなければならないものはライトスルーで扱う。ライトスルーで扱うデータから再演算可能なデータに関してはライトバックで扱う。
また、キャッシュメモリでソフトエラーが発生した場合、それがシングルビットエラーであればECCで訂正を行なう。キャッシュメモリで発生したソフトエラーがマルチビットエラーであり、更にマルチビットエラーの起きたメモリ領域がライトスルーで扱う領域であった場合、エラーの発生したデータをメインメモリからキャッシュメモリへ読み出すことで訂正を行なう。キャッシュメモリで発生したマルチビットエラーがライトバックで扱う領域であった場合、ライトスルーで保護されているデータを再度読み出して、制御情報の演算処理を再実行することで動作を継続させる。
以上のように、本実施の形態に係る計算機100よれば、マルチビットエラーにより破損すると計算機の動作に支障のあるデータや、外部機器から取得しなければならないデータなどをライトスルーで扱い、ライトスルーで扱うデータから再計算可能なデータをライトバックで扱うことによって、CPUのスループットを向上させつつも、マルチビットエラーが発生した際の計算機の動作継続性を高めると共に、外部機器の制御情報の出力の欠落を抑制する効果を得ることができる。また、このような効果は、計算機へのハードウェアの追加を必要とせず、ソフトウェアのみで機能の実現が可能であり、コストを低減することができる。
実施の形態2.
本実施の形態では、主に、実施の形態1との差異点について説明する。
本実施の形態において、実施の形態1で説明した構成部と同様の機能を有する構成部には同一の符号を付し、その説明を省略する場合がある。
上述した実施の形態1の演算処理の再実行では、演算処理を最初から実行し直すため、マルチビットエラーが発生する前に演算した処理を再度処理しなければならない。同じ演算を2回処理することは無駄である。このような無駄を削減する方法として、演算処理の実行中に所定時間間隔でCPUのレジスタとキャッシュメモリのデータをバックアップし、ソフトエラー発生時には直前のチェックポイントまでロールバックを行い、再演算処理を効率化する方法がある。
しかし、この方法では、チェックポイントを作成する度にCPUのレジスタとキャッシュメモリのデータをメインメモリへ書き込まなければならない。メインメモリへの書き込みはCPUの動作速度に比べて極めて低速であるため、CPUに大きな待ち時間が発生し、CPUのスループットが低下してしまう。
そこで、本実施の形態に係る計算機101では、演算処理内の演算内容を複数のステップに分割し、そのステップの間隙にて直前のステップで求められた演算結果をライトスルーのメモリ領域へバックアップする。これにより、キャッシュメモリ全体をバックアップする方式に比べてCPUの待ち時間を短縮することができる。
図9は、本実施の形態に係る計算機101のブロック構成の一例を示す図である。
図9では、計算機101の演算処理部151による演算処理機能と、キャッシュメモリ121にソフトエラーが発生した際のエラー処理に関する機能とを示したブロック図である。
図9に示す計算機101では、実施の形態1で説明した図5に示した計算機100の構成に加えて、演算処理部151を2つ以上の処理セグメントに分割する。すなわち、演算処理部151は、演算処理を複数に分割した複数の処理セグメント(部分演算処理)を順次実行する。
図9に示すように、演算処理部151は、処理セグメント(1)1511、処理セグメント(2)1512、処理セグメント(3)1513を備える。また、計算機101は、各処理セグメントからの演算結果を格納する演算結果バッファ158を備える。
産業用計算機の演算処理では、複数の処理項目を段階的に処理している。例えば、工作機械を制御する計算機であれば、工具の回転速度、工具のX軸移動速度、工具のY軸移動速度、工具のZ軸移動速度、工具のピッチ軸回転速度、工具のロール軸回転速度、工具のヨー軸回転速度などが段階的に計算されている。
計算機101では、これらの処理項目を、互いに影響しない処理セグメントとして分割し、各処理セグメントでの処理が終了した段階で、各処理セグメントの演算結果を個別に演算結果バッファ158へとライトスルーで保存する。
また、各処理セグメントでは、処理セグメントの先頭部分で、当該処理セグメントで使用する変数の初期化、センサ情報等の再読み出しを行なうものとする。
図9では、一例として処理セグメントが3つ存在する場合を示しているが、処理セグメントの数は任意である。
演算結果バッファ158は、各処理セグメントでの演算結果以外に、各処理セグメントが完了しているかを示す、処理セグメント完了フラグ1581(終了フラグ情報)を持つ。
各処理セグメントでは、処理を完了すると、その処理セグメントでの演算結果を演算結果バッファ158に格納するとともに、その処理セグメントの処理セグメント完了フラグをセットする。この処理セグメント完了フラグ1581によって、何番目の処理セグメントまで処理が完了しているかが判別可能となる。この演算結果バッファ158はライトスルーで扱う。
次に、本実施の形態に係る計算機101の動作を説明する。
図10は、本実施の形態に係る計算機101の周期処理(工程)の一例を示すフローチャートである。
図10は、一例として演算処理部151を処理セグメント(1)1511、処理セグメント(2)1512、及び処理セグメント(3)1513の3つの処理セグメントに分割した場合について説明する。
S401の処理は、図6のS201と同様の処理である。すなわち、入力処理部152により入力処理が実行され、外部機器200からセンサ情報を取得する。取得したセンサ情報はライトスルーのメモリ領域に保存される。
S402の処理は、図6のS202と同様の処理である。出力処理部153により、出力処理が実行され、前の周期処理中に演算された制御情報を、外部機器200に対して出力する。本実施の形態では、制御情報は演算結果バッファ158に格納されている。
S403〜S404の処理は、図6のS203〜204と同様の処理である。
すなわち、出力処理が完了すると、演算処理が開始される。
まず、演算処理部151は、処理セグメント(1)1511の演算処理を開始する。その演算処理では、その最初の段階で演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数をバックアップバッファ156へ保存する(S404)。なお、保存するスタックフレームは演算処理の関数のもののみであり、それ以前に積まれているスタックフレームは保存する必要はない。バックアップバッファ156はライトスルーで扱う。バックアップバッファ156のデータにソフトエラーが発生した際は、エラー検出部154は比較のための計算機100aのエラー検出処理で示した方法によってデータの訂正をする。
次に、センサ情報等から制御情報を算出するための演算が開始される。この演算処理の実行中はライトバックで扱う。
演算処理部151では、処理セグメント(1)1511から順次処理が実行される。
処理セグメント(1)1511による処理が完了すると(S405)、その処理セグメント(1)1511での演算結果をライトスルーで演算結果バッファ158へ格納する(S406)。
演算結果の格納が終わると、処理セグメント(2)1512に処理が移る。
次に、演算処理部151は、処理セグメント(2)1512の演算処理を開始する。その演算処理の最初の段階で演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数をバックアップバッファ156へ保存する(S407a)。
処理セグメント(2)1512による処理が完了すると(S407)、その処理セグメント(2)1512での演算結果をライトスルーで演算結果バッファ158へ格納する(S408)。
演算結果の格納が終わると、処理セグメント(3)1513に処理が移る。
次に、演算処理部151は、処理セグメント(3)1513の演算処理を開始する。その演算処理の最初の段階で演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数をバックアップバッファ156へ保存する(S409a)。
処理セグメント(3)1513による処理が完了すると(S409)、その処理セグメント(3)1513での演算結果をライトスルーで演算結果バッファ158へ格納する(S410)。
このように、処理セグメント毎に繰り返される。本実施の形態では、一例として処理セグメントを3つとしているが、処理セグメントの数が4つ以上の場合であっても、上記の処理動作は変わらない。
以上で、処理セグメント(1)1511〜処理セグメント(3)1513の処理が終了する(S411)。
全ての処理セグメントが処理を完了すると、キャッシュメモリ121に保存されているデータを、メインメモリ130へ書き戻す。
S412の処理は、S208の処理と同様である。すなわち、計算機101は、その他の処理を実行し、その他の処理の実行が終了した時点で1周期の処理が終了となる。
図11は、本実施の形態に係る計算機101の障害対応方法における障害対応処理(工程)の一例を示すフローチャートである。
図11を用いて、キャッシュメモリ121でソフトエラーが発生したときの動作例について説明する。図11は、本実施の形態に係る計算機101において、CPU120がキャッシュメモリ121のデータの読み出しを行なう際の動作フローである。
図11のS501から511の処理は、図7のS301からS311の処理と同様である。以下に、S501から511の処理の概要について説明する。
CPU120がデータの読み出しを要求すると、読み出し対象のキャッシュメモリ121のキャッシュラインをECCがチェックする。
この時、キャッシュメモリにソフトエラーが発生していなければ、CPU120はキャッシュメモリ121のデータを読み出す。
キャッシュメモリにソフトエラーが発生していた場合は、エラー検出部154はそのソフトエラーがシングルビットエラーか、マルチビットエラーかの判定を実施する。
当該ソフトエラーがシングルビットエラーであった場合は、ECCの機能によりシングルビットエラーによって破損したデータを訂正する。
当該ソフトエラーがマルチビットエラーであった場合、CPUに対して割込みが通知され、例外処理部155が割込みハンドラとして呼び出される。
例外処理部155は、マルチビットエラーが発生したキャッシュラインが、ライトバックで扱うメモリ領域か、ライトスルーで扱うメモリ領域かを判定する。
マルチビットエラーが発生したキャッシュラインがライトスルーで扱うメモリ領域に対応している場合は、例外処理部155は、当該キャッシュラインを無効化する。CPU120が読み出しを要求したキャッシュメモリのデータが無効化されるため、メインメモリ130に存在する同一のデータがキャッシュメモリ121に読み出されてCPU120に渡される。
マルチビットエラーが発生したキャッシュラインがライトバックで扱うメモリ領域に対応している場合は、再演算管理部157が呼び出される。
再演算管理部157は、キャッシュメモリ上の全データを無効化する。
以上で、S501から511の処理の概要についての説明を終わる。
S512において、再演算管理部157は、演算結果バッファ158に格納されている処理セグメント完了フラグ1581をチェックし、処理セグメントがどこまで完了しているかを判定する。
処理セグメント(1)1511が完了していなかった場合(S512でNO)、S516に進む。
S516において、再演算管理部157は、処理セグメント(1)1511の演算処理の最初の段階でバックアップバッファ156に保存した実行情報1561を読み出す。再演算管理部157は、バックアップバッファ156に保存されているスタックフレームのアドレスから演算処理開始時のスタックフレームの位置を確認し、バックアップバッファ156に保存されているスタックフレームのデータを読み出してキャッシュメモリ121に上書きする。また、再演算管理部157は、プログラム中で使用するグローバル変数についても、バックアップバッファ156に保存されているデータへロールバックし、処理セグメント(1)1511の演算処理を再実行させる。
処理セグメント(1)1511が完了していた場合(S512でYES)、S513に進む。
処理セグメント(1)1511が完了し、処理セグメント(2)1512が完了していなかった場合(S513でNO)、S515へ進む。
S515において、再演算管理部157は、処理セグメント(2)1512の先頭部分から演算を再実行させる。各処理セグメントの演算内容は、他の処理セグメントに影響を受けない形で分割している。更に、各処理セグメントの先頭部分で、変数の初期化及びセンサ情報の再読み出しが行なわれるため、各処理セグメントの先頭部分から再実行させたとしても、問題なく動作を継続可能である。
すなわち、再演算管理部157は、処理セグメント(2)1512の演算処理の最初の段階でバックアップバッファ156に保存した実行情報1561を読み出す。再演算管理部157は、バックアップバッファ156に保存されているスタックフレームのアドレスから演算処理開始時のスタックフレームの位置を確認し、バックアップバッファ156に保存されているスタックフレームのデータを読み出してキャッシュメモリ121に上書きする。また、再演算管理部157は、プログラム中で使用するグローバル変数についても、バックアップバッファ156に保存されているデータへロールバックし、処理セグメント(2)1512の演算処理を再実行させる。
処理セグメント(2)1512が完了していた場合(S513でYES)、S514に進む。これは、処理セグメント(2)1512が完了し、処理セグメント(3)1513が完了していないことを意味する。
S514において、再演算管理部157は、処理セグメント(3)1513の先頭部分から演算を再実行させる。
すなわち、再演算管理部157は、処理セグメント(3)1513の演算処理の最初の段階でバックアップバッファ156に保存した実行情報1561を読み出す。再演算管理部157は、バックアップバッファ156に保存されているスタックフレームのアドレスから演算処理開始時のスタックフレームの位置を確認し、バックアップバッファ156に保存されているスタックフレームのデータを読み出してキャッシュメモリ121に上書きする。また、再演算管理部157は、プログラム中で使用するグローバル変数についても、バックアップバッファ156に保存されているデータへロールバックし、処理セグメント(3)1513の演算処理を再実行させる。
以上で、計算機101の障害対応処理(工程)についての説明を終わる。
本実施の形態では、処理セグメントが3つの場合で説明を実施したが、処理セグメント数が4つ以上となった場合でも動作は同様であり、未完了の処理セグメントの先頭から演算を再実行する処理となる。
以上のように、本実施の形態に係る計算機101によれば、実施の形態1の効果に加え、本実施の形態では、マルチビットエラー発生後の再演算処理の短縮を図ることが可能である。よって、規定実行周期以内に再演算処理が完了する可能性を高める効果がある。このような効果によって、マルチビットエラー発生後の計算機の動作継続性が向上すると共に、外部機器の制御情報の出力の欠落を抑制することができる。
実施の形態3.
本実施の形態では、主に、実施の形態1との差異点について説明する。
本実施の形態において、実施の形態1で説明した構成部と同様の機能を有する構成部には同一の符号を付し、その説明を省略する場合がある。
図12は、本実施の形態に係る計算機102のブロック構成の一例を示す図である。
図12は、本実施の形態において、計算機102の演算処理機能と、ソフトエラーが発生した際のエラー処理に関する機能とを示したブロック図である。
本実施の形態に係る計算機102は、実施の形態1で説明した図5の構成に加えて、軽量演算処理部159を備える。
軽量演算処理部159は、センサ情報等を用いる点では演算処理部151と同様であるが、フィードバック制御等の演算負荷の高い処理を除外したものであり、演算処理部151での演算結果よりも精度は劣るが、短時間での処理が可能である。
以後、軽量演算処理部159での演算処理を軽量演算処理とし、演算結果を軽量演算結果とする。また、演算処理部151での演算処理を通常演算処理とし、演算結果を通常演算結果とする。
また、通常演算結果と軽量演算結果とは、通常演算処理と軽量演算処理とのどちらの演算結果であるか判別可能なフラグを有するものとする。通常演算結果、軽量演算結果のどちらもライトスルーで扱う。通常演算処理と軽量演算処理とを単に演算処理とする場合があり、通常演算結果と軽量演算結果とを単に演算結果とする場合がある。
軽量演算処理の処理時間と軽量演算結果の精度とは、トレードオフの関係になる。この処理時間と精度との配分については、本実施の形態に係る計算機102を適用する適用先の計算機システム、プログラムの要件に合わせて適切に調整する。
次に、本実施の形態に係る計算機102の動作を説明する。
図13は、本実施の形態に係る計算機102の周期処理(工程)の一例を示すフローチャートである。
S601の処理は、図6のS201と同様の処理である。すなわち、入力処理部152により入力処理が実行され、外部機器200からセンサ情報を取得する。取得したセンサ情報はライトスルーのメモリ領域に保存される。
S602〜S605において、出力処理部153は、出力処理を実行し、前の周期処理中に演算された制御情報を、外部機器200に対して出力する。
S602において、出力処理部153は、前の周期の通常演算処理が完了しているか否かを判定する。前の周期の通常演算処理が完了している場合(S602でYES)、出力処理部153は、演算処理部151での通常演算結果を出力する(S603)。前の周期の通常演算処理が完了していない場合(S602でNO)、出力処理部153は、軽量演算処理部159での軽量演算結果を出力する(S604)。
このように、出力処理部153は、制御情報が通常演算結果または軽量演算結果のどちらであるかに関係なく出力する。
S605〜S610の処理は、図6のS203〜208と同様の処理である。
以下に、S605〜S610の処理の概要について説明する。
すなわち、出力処理が完了すると、演算処理が開始される。演算処理では、その最初の段階で演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数をバックアップバッファへ保存する。なお、保存するスタックフレームは演算処理の関数のもののみであり、それ以前に積まれているスタックフレームは保存する必要はない。バックアップバッファ156はライトスルーで扱う。バックアップバッファ156のデータにソフトエラーが発生した際は、エラー検出部154は比較のための計算機100aのエラー検出処理で示した方法によってデータの訂正をする。
次に、センサ情報等から制御情報を算出するための演算が開始される。この演算処理の実行中はライトバックで扱う。制御情報が算出されたら、得られた制御情報をライトスルーのメモリ領域に保存する。また、キャッシュメモリに保存されているデータを、メインメモリへ書き戻す。その後、その他の処理を実施し、1周期の処理が終了となる。
図14は、本実施の形態に係る計算機102の障害対応方法における障害対応処理(工程)の一例を示すフローチャートである。
図14を用いて、キャッシュメモリ121でソフトエラーが発生したときの動作例を説明する。図14は、当実施形態において、CPUがキャッシュメモリ121のデータの読み出しを行なう際の動作フローである。
S701〜S711の処理は、図7のS301〜S311と同様の処理であるため、その説明を省略する。
以下に、S701〜S711の処理の概要について説明する。
CPU120がデータの読み出しを要求すると、エラー検出部154がECC機能を用いて、読み出し対象のキャッシュメモリ121のキャッシュラインをチェックする。
この時、キャッシュメモリ121にソフトエラーが発生していなければ、CPU120はキャッシュメモリ121のデータを読み出す。
キャッシュメモリ121にソフトエラーが発生していた場合は、エラー検出部154はそのソフトエラーがシングルビットエラーか、マルチビットエラーかの判定を実施する。
ソフトエラーがシングルビットエラーであった場合は、ECC機能によりシングルビットエラーによって破損したデータを訂正する。ソフトエラーがマルチビットエラーであった場合、CPUに対して割込みが通知され、例外処理部155が割込みハンドラとして呼び出される。例外処理部155では、マルチビットエラーが発生したキャッシュラインがライトバックで扱うメモリ領域か、ライトスルーで扱うメモリ領域かを判定する。
マルチビットエラーが発生したキャッシュラインがライトスルーで扱うメモリ領域に対応している場合は、このキャッシュラインを無効化する。CPUが読み出しを要求したキャッシュメモリのデータが無効化されるため、メインメモリに存在する同一のデータがキャッシュメモリに読み出されてCPUに渡される。
マルチビットエラーが発生したキャッシュラインがライトバックで扱うメモリ領域に対応している場合は、例外処理部155は、キャッシュメモリ上の全データを無効化する。
以上で、S701〜S711の処理の概要の説明を終わる。
S712において、例外処理部155は、軽量演算処理部159を呼び出す。
軽量演算処理部159は、センサ情報等から軽量演算結果を制御情報として算出し、ライトスルーのメモリ領域に保存する。
軽量演算処理の処理が完了すると、例外処理部155は、再演算管理部157を呼び出す。再演算管理部157は、例えば、軽量演算処理の処理が完了した軽量演算処理部159が呼び出してもよい。
S713において、再演算管理部157は、通常演算処理の最初の段階でバックアップバッファ156に保存した実行情報を読み出す。
再演算管理部157は、バックアップバッファ156に保存されているスタックフレームのアドレスから通常演算処理開始時のスタックフレームの位置を確認し、バックアップバッファ156に保存されているスタックフレームのデータを読み出して上書きする。また、プログラム中で使用するグローバル変数についても、バックアップバッファ156に保存されているデータへロールバックする。その後、通常演算処理の最初から演算を再実行させる。
以上で、計算機102の障害対応処理(工程)を終了する。
例えば、規定実行周期の終了直前にソフトエラーが発生した場合、実行周期以内で制御情報の演算処理(通常演算処理)の再実行が完了せず、制御情報を出力できなくなることがある。本実施の形態に係る計算機102では、通常の演算結果(通常演算結果)の精度を落とした軽量な演算結果(軽量演算結果)を使うことで対応する。一般に、産業用計算機で行なう演算処理は、外部に接続された機器から取得したデータに対して、フィードバック制御や機器使用者からの制御命令を反映した複雑な処理が行われる。このため、演算負荷の高いものとなっている。
本実施の形態に係る計算機102では、マルチビットエラー発生時に演算処理(通常演算処理)の再実行を行なう前に、フィードバック制御等の演算負荷の高い処理を省いた軽量演算処理によって、演算結果の概算値を算出しておき、その後、フィードバック制御等を含めた通常演算処理の再演算処理を実行する。この再演算処理が規定周期時間以内に完了しなかった場合でも、再演算処理の実行前に算出した軽量演算処理の軽量演算結果を代わりに出力することで、計算機102から外部機器200への制御情報出力の欠落を防止することができる。
以上のように、本実施の形態に係る計算機102によれば、実施の形態1の効果に加え、マルチビットエラー発生時に、規定実行周期以内に再演算処理を完了できない状況であっても、軽量演算処理を用いることによって、外部機器に出力する制御情報を短時間で取得可能となる。これによって、マルチビットエラー発生後の計算機の動作継続性が向上すると共に、外部機器の制御情報の出力の欠落を抑制する効果が得られる。
実施の形態4.
本実施の形態では、主に、実施の形態1との差異点について説明する。
本実施の形態において、実施の形態1で説明した構成部と同様の機能を有する構成部には同一の符号を付し、その説明を省略する場合がある。
図15は、本実施の形態に係る計算機103のブロック構成の一例を示す図である。
図15は、本実施の形態において、計算機103の演算処理機能と、ソフトエラーが発生した際のエラー処理に関する機能とを示したブロック図である。
本実施の形態に係る計算機103は、実施の形態1で説明した図5の構成に加えて、過去値バッファ160、演算結果予測部161、予測値バッファ162を備える。
過去値バッファ160は、各実行周期において計算機103が外部機器200へ出力した制御情報のログである。過去値バッファ160に保存される制御情報は、演算処理部151で算出された演算結果、または演算結果予測部161で算出された演算結果予測値のどちらか一方であり、外部機器200に対して出力された方のデータが保存される。なお、過去値バッファ160はライトスルーで扱う。
演算結果予測部161は、過去値バッファ160に保存された制御情報を元に、次の実行周期において演算処理部151により算出される制御情報を予測する。予測値の精度と、演算処理部151の処理時間とはトレードオフの関係となる。この処理時間と精度との配分については、本実施の形態に係る計算機103を適用する適用先の計算機システム、プログラムの要件に合わせて適切に選択する。また、予測値を算出するアルゴリズムについては特に規定しない。
予測値バッファ162は、演算結果予測部161が算出した予測値を格納するためのメモリ領域であり、ライトスルーで扱う。
次に、本実施の形態に係る計算機103の動作を説明する。
図16は、本実施の形態に係る計算機103の周期処理(工程)の一例を示すフローチャートである。
S801の処理は、図6のS201と同様の処理である。すなわち、入力処理部152により入力処理が実行され、外部機器200からセンサ情報を取得する。取得したセンサ情報はライトスルーのメモリ領域に保存される。
S802〜S805において、出力処理部153は、出力処理を実行し、前の周期処理中に演算された制御情報を、外部機器200に対して出力する。
S802において、出力処理部153は、前の周期の演算処理(通常演算処理)が完了しているか否かを判定する。前の周期の演算処理が完了している場合(S802でYES)、出力処理部153は、演算処理部151での演算結果を出力する(S803)。前の周期の演算処理が完了していない場合(S802でNO)、出力処理部153は、前の周期での演算処理の結果予測値を出力する(S804)。
このように、出力処理部153は、制御情報が演算結果または結果予測値のどちらであるかに関係なく出力する。出力処理部153は、出力した制御情報を過去値バッファ160に保存する(S805)。
S806〜S808の処理は、図6のS203〜S205と同様の処理である。
すなわち、演算処理では、演算処理部151は、演算処理の最初の段階で演算処理開始時のスタックフレーム、スタックフレームのアドレス、グローバル変数をバックアップバッファ156へ保存する。なお、保存するスタックフレームは演算処理の関数のもののみであり、それ以前に積まれているスタックフレームは保存する必要はない。バックアップバッファ156はライトスルーで扱うこととし、バックアップバッファのデータにソフトエラーが発生した際は、前記従来例で示した方法によってデータの訂正が可能である。
次に、センサ情報等から制御情報を算出するための演算が開始される。この演算処理の実行中はライトバックで扱う。
S809において、演算処理部151は、制御情報を算出すると、得られた制御情報を、メインメモリ130のライトスルーのメモリ領域に保存する。また、キャッシュメモリ121に保存されているデータを、メインメモリ130へ書き戻す。これにより、演算処理を終了する(S810)。
S811において、演算結果予測部161は、過去値バッファ160に保存されている過去の制御情報から、次の実行周期の演算処理で求められる演算結果、つまり次の実行周期(次演算処理)で算出される制御情報を予測値として予測する。演算結果予測部161は、予測により求めた予測値を、予測値バッファ162へライトスルーで保存する。
S812の処理は、S208の処理と同様である。すなわち、計算機103は、その他の処理を実行し、その他の処理の実行が終了した時点で1周期の処理が終了となる。
本実施の形態に係る計算機103において、キャッシュメモリ121でソフトエラーが発生したときの動作については、実施の形態1の図7と同様の処理であるため、その説明を昇略する。
上述した実施の形態3の方式では、演算処理の完了間際にマルチビットエラーが発生した場合、軽量演算処理すら規定実行周期以内に完了しない場合が想定され、軽量演算処理による制御情報すら出力できなくなる可能性がある。本実施の形態では、各実行周期中において、次の実行周期の演算処理で求められる演算結果を予想しておくようにする。次の実行周期での演算結果を予測するために、現実行周期を含めた各実行周期での演算結果を保存しておく。
本実施の形態に係る計算機103では、演算処理の完了間際にマルチビットエラーが発生し、更にその周期中に演算結果を得ることができなかった場合には、直前の実行周期にて算出した、現実行周期での演算結果の予測値を用いて制御情報の出力が可能となり、計算機から外部機器への制御情報出力の欠落を防止可能である。
以上のように、本実施の形態に係る計算機103によれば、実施の形態1の効果に加え、マルチビットエラー発生時に、規定実行周期以内に再演算処理を完了できない状況であっても、前の実行周期中に予め算出しておいた予測値を、外部機器に出力するための制御情報として使用可能である。これによって、マルチビットエラー発生後の計算機の動作継続性が向上すると共に、外部機器の制御情報の出力の欠落を抑制する効果が得られる。
上記実施の形態の説明では、「入力処理部」、「出力処理部」、「演算処理部」、「エラー検出部」、「例外処理部」、「再演算管理部」、「軽量演算処理部」、「演算結果予測部」がそれぞれ独立した機能ブロックとして計算機100,101,102,103を構成している。しかし、これに限られるわけではなく、例えば、「入力処理部」、「出力処理部」をひとつの機能ブロックで実現し、「エラー検出部」、「例外処理部」をひとつの機能ブロックで実現し、「再演算管理部」、「軽量演算処理部」、「演算結果予測部」をひとつの機能ブロックで実現しても良い。あるいは、ひとつの機能ブロックをさらに複数の機能ブロックに分割して計算機100,101,102,103を構成してもよい。あるいは、これらの機能ブロックを、他のどのような組み合わせで構成しても構わない。これらの機能ブロックは任意であり、実施の形態1〜4に記載した機能を実現することができれば上記構成部はなくてもよく、新たな構成部、あるいは新たな他の組み合わせで構成しても構わない。
また、本発明の実施の形態1〜4について説明したが、この実施の形態のうち、2つの実施の形態を組み合わせて実施してもよい。例えば、実施の形態2と実施の形態3を組み合わせてもよい。また、実施の形態2と実施の形態4を組み合わせてもよい。また、実施の形態3と実施の形態4を組み合わせてもよい。あるいは、1つの部分を実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上の部分を組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100,100a,101,102,103 計算機、110 入力ポート、120 CPU、121 キャッシュメモリ、130 メインメモリ、140 出力ポート、151 演算処理部、152 入力処理部、153 出力処理部、154 エラー検出部、155 例外処理部、156 バックアップバッファ、157 再演算管理部、158 演算結果バッファ、159 軽量演算処理部、160 過去値バッファ、161 演算結果予測部、162 予測値バッファ、200 外部機器、901 演算装置、902 外部記憶装置、903 主記憶装置、904 通信装置、905 入出力装置、1511 処理セグメント(1)、1512 処理セグメント(2)、1513 処理セグメント(3)、1561 実行情報、1581 処理セグメント完了フラグ。

Claims (9)

  1. CPU(Central Processing Unit)とメインメモリとを備える計算機において、
    前記CPUは、演算処理の実行に用いる実行情報を記憶するキャッシュメモリを備え、
    前記キャッシュメモリに記憶された前記実行情報を前記メインメモリにバックアップ情報として保存した後に、前記実行情報を用いて前記演算処理を前記CPUにより実行する演算処理部と、
    前記演算処理の実行中に、前記CPUにより前記キャッシュメモリから読み出される読出データに障害があるかを判定する障害検出部と、
    前記読出データに障害があると判定された場合、前記演算処理の実行を停止するとともに、前記障害がある読出データに対応する対応データが前記メインメモリに記憶されているかを判定する障害処理部と、
    前記対応データが前記メインメモリに記憶されていないと判定された場合に、前記キャッシュメモリを初期化するとともに前記演算処理部により前記メインメモリに保存された前記バックアップ情報を前記実行情報として前記キャッシュメモリに読み出し、読み出した前記実行情報に基づいて前記演算処理を実行する再演算管理部と
    を備えることを特徴とする計算機。
  2. 前記障害処理部は、
    前記読出データに障害があると判定された場合、前記障害がマルチビットエラーであるかを判定し、前記障害がマルチビットエラーであると判定した場合、前記障害がある読出データに対応する対応データが前記メインメモリに記憶されているか否かを判定することを特徴とする請求項1に記載の計算機。
  3. 前記障害処理部は、前記障害がマルチビットエラーであると判定した場合、前記障害がある読出データがライトバック方式で記憶されたデータであるかを判定し、前記障害がある読出データがライトバック方式で記憶されたデータである場合に、前記対応データが前記メインメモリに記憶されていると判定することを特徴とする請求項2に記載の計算機。
  4. 前記演算処理部は、
    前記演算処理を複数に分割した複数の部分演算処理を順次実行し、
    前記キャッシュメモリは、
    前記複数の部分演算処理の各部分演算処理の実行に用いる前記実行情報を記憶し、
    前記演算処理部は、
    前記キャッシュメモリに記憶された前記実行情報を前記メインメモリにバックアップ情報として保存した後に、前記実行情報に基づいて前記CPUを用いて前記複数の部分演算処理の各部分演算処理を実行し、
    前記障害検出部は、
    前記複数の部分演算処理の各部分演算処理の実行中に前記CPUが前記キャッシュメモリから読み出す読出データに障害があるかを判定し、
    前記再演算管理部は、
    前記対応データが前記メインメモリに記憶されていないと判定された場合に、前記バックアップ情報を前記キャッシュメモリに前記実行情報として読みだし、読み出した前記実行情報に基づいて前記複数の部分演算処理の各部分演算処理を実行することを特徴とする請求項1〜3のいずれかに記載の計算機。
  5. 前記複数の部分演算処理の各部分演算処理が終了したか否かを示す終了フラグ情報を備えることを特徴とする請求項4に記載の計算機。
  6. 前記対応データが前記メインメモリに記憶されていないと判定された場合に、前記演算処理の処理負荷よりも小さい処理負荷の軽量演算処理を実行する軽量演算処理部をさらに備え、
    前記演算処理部は、
    前記軽量演算処理部による前記軽量演算処理の実行が完了した後に、前記バックアップ情報を前記実行情報として前記キャッシュメモリに読み出し、読み出した前記実行情報に基づいて前記演算処理を実行することを特徴とする請求項1〜5のいずれかに記載の計算機。
  7. 前記演算処理部により実行された前記演算処理の演算結果を記憶する演算結果バッファと、
    前記演算結果バッファに記憶された前記演算結果を出力情報として出力する出力処理部と、
    前記出力処理部から出力された前記出力情報を記憶する過去値バッファと、
    前記演算処理部による前記演算処理の実行が終了すると、前記過去値バッファに記憶されている前記出力情報に基づいて、前記演算処理の次に実行する次演算処理の演算結果を予測値として算出する演算結果予測部と、
    前記演算結果予測部により算出された前記予測値を記憶する予測値バッファと
    を備え、
    前記出力処理部は、
    前記演算結果バッファに前記出力情報が存在しない場合に、前記予測値バッファに記憶された前記予測値を前記出力情報として出力することを特徴とする請求項1〜6のいずれかに記載の計算機。
  8. 演算処理の実行に用いる実行情報を記憶するキャッシュメモリを備えるCPU(Central・Processing・Unit)と、メインメモリとを備える計算機の障害処理方法において、
    演算処理部が、前記キャッシュメモリに記憶された前記実行情報をバックアップ情報として前記メインメモリに保存した後に、前記実行情報を用いて前記演算処理を前記CPUにより実行し、
    障害検出部が、前記演算処理の実行中に、前記CPUにより前記キャッシュメモリから読み出される読出データに障害があるか否かを判定し、
    障害処理部が、前記読出データに障害があると判定された場合、前記演算処理の実行を停止するとともに、前記障害がある読出データに対応する対応データが前記メインメモリに記憶されているか否かを判定し、
    再演算管理部が、前記対応データが前記メインメモリに記憶されていないと判定された場合に、前記キャッシュメモリを初期化するとともに前記演算処理部により前記メインメモリに保存された前記バックアップ情報を前記実行情報として前記キャッシュメモリに読み出し、読み出した前記実行情報に基づいて前記演算処理を実行することを特徴とする障害処理方法。
  9. 演算処理の実行に用いる実行情報を記憶するキャッシュメモリを備えるCPU(Central・Processing・Unit)と、メインメモリとを備える計算機のプログラムにおいて、
    前記キャッシュメモリに記憶された前記実行情報をバックアップ情報として前記メインメモリに保存した後に、前記キャッシュメモリに記憶された前記実行情報を用いて前記演算処理を前記CPUにより実行する演算実行処理と、
    前記演算処理の実行中に、前記CPUにより前記キャッシュメモリから読み出される読出データに障害があるかを判定する障害検出処理と、
    前記読出データに障害があると判定された場合、前記演算処理の実行を停止するとともに、前記障害がある読出データに対応する対応データが前記メインメモリに記憶されているか否かを判定するデータ判定処理と、
    前記対応データが前記メインメモリに記憶されていないと判定された場合に、前記キャッシュメモリを初期化するとともに前記演算処理部により前記メインメモリに保存された前記バックアップ情報を前記実行情報として前記キャッシュメモリに読み出し、読み出した前記実行情報に基づいて前記演算処理を実行する再演算処理とをコンピュータに実行させるプログラム。
JP2014049418A 2014-03-12 2014-03-12 計算機、障害処理方法及びプログラム Expired - Fee Related JP6218652B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014049418A JP6218652B2 (ja) 2014-03-12 2014-03-12 計算機、障害処理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014049418A JP6218652B2 (ja) 2014-03-12 2014-03-12 計算機、障害処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2015176153A true JP2015176153A (ja) 2015-10-05
JP6218652B2 JP6218652B2 (ja) 2017-10-25

Family

ID=54255355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014049418A Expired - Fee Related JP6218652B2 (ja) 2014-03-12 2014-03-12 計算機、障害処理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6218652B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019175006A (ja) * 2018-03-27 2019-10-10 日本電気株式会社 計算機、半導体装置、制御方法及びプログラム
JP2020057384A (ja) * 2018-10-03 2020-04-09 慧榮科技股▲分▼有限公司 エラー処理方法、並びにデータ記憶装置及びその制御装置
US10990325B2 (en) 2018-10-03 2021-04-27 Silicon Motion, Inc. Write control method, associated data storage device and controller thereof

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05346889A (ja) * 1992-06-15 1993-12-27 Hitachi Ltd キャッシュ制御方法およびキャッシュ制御装置
JPH10240628A (ja) * 1997-02-28 1998-09-11 Nec Corp キャッシュメモリ装置
JP2003015956A (ja) * 2001-07-03 2003-01-17 Nec Corp 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05346889A (ja) * 1992-06-15 1993-12-27 Hitachi Ltd キャッシュ制御方法およびキャッシュ制御装置
JPH10240628A (ja) * 1997-02-28 1998-09-11 Nec Corp キャッシュメモリ装置
JP2003015956A (ja) * 2001-07-03 2003-01-17 Nec Corp 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019175006A (ja) * 2018-03-27 2019-10-10 日本電気株式会社 計算機、半導体装置、制御方法及びプログラム
JP7238262B2 (ja) 2018-03-27 2023-03-14 日本電気株式会社 計算機、半導体装置、及び制御方法
JP2020057384A (ja) * 2018-10-03 2020-04-09 慧榮科技股▲分▼有限公司 エラー処理方法、並びにデータ記憶装置及びその制御装置
US10884856B2 (en) 2018-10-03 2021-01-05 Silicon Motion, Inc. Error-handling method, associated data storage device and controller thereof
US10990325B2 (en) 2018-10-03 2021-04-27 Silicon Motion, Inc. Write control method, associated data storage device and controller thereof

Also Published As

Publication number Publication date
JP6218652B2 (ja) 2017-10-25

Similar Documents

Publication Publication Date Title
EP3238077B1 (en) Fault tolerant automatic dual in-line memory module refresh
US7698594B2 (en) Reconfigurable processor and reconfiguration method executed by the reconfigurable processor
US7886195B2 (en) Apparatus, system, and method of efficiently utilizing hardware resources for a software test
US9063906B2 (en) Thread sparing between cores in a multi-threaded processor
JP2010165251A (ja) 情報処理装置及びプロセッサ並びに情報処理方法
US20190163583A1 (en) Mission-critical computing architecture
CN108694094B (zh) 用于处理存储器访问操作的装置和方法
EP3025233B1 (en) Robust hardware/software error recovery system
JP4465329B2 (ja) コンピュータプロセッサ用の外部状態キャッシュ
JP2022534418A (ja) エラーリカバリ方法及び装置
WO2008101386A1 (fr) Procédé de récupération d'une exception à noyau unique dans un système à plusieurs noyaux
JP6218652B2 (ja) 計算機、障害処理方法及びプログラム
WO2014125606A1 (ja) 制御装置
JP2770913B2 (ja) パリティの置換装置及び方法
JP4376787B2 (ja) イベント通知方法、デバイス及びプロセッサシステム
US20090187903A1 (en) Virtual multiprocessor system
US10289332B2 (en) Apparatus and method for increasing resilience to faults
WO2012137239A1 (ja) 計算機システム
US20130055017A1 (en) Device and method for restoring information in a main storage unit
JP2008003940A (ja) 保護制御装置、保護制御方法及び保護制御プログラム
US10901850B2 (en) Thread checkpoint table for computer processor
CN104657229A (zh) 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法
JP2012103952A (ja) メモリダンプ方法
GB2528901A (en) Uncorrectable memory errors in pipelined CPUs
WO2010109631A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170822

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170926

R150 Certificate of patent or registration of utility model

Ref document number: 6218652

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees