JP6996342B2 - 情報処理装置、及び情報処理方法 - Google Patents
情報処理装置、及び情報処理方法 Download PDFInfo
- Publication number
- JP6996342B2 JP6996342B2 JP2018034519A JP2018034519A JP6996342B2 JP 6996342 B2 JP6996342 B2 JP 6996342B2 JP 2018034519 A JP2018034519 A JP 2018034519A JP 2018034519 A JP2018034519 A JP 2018034519A JP 6996342 B2 JP6996342 B2 JP 6996342B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- volatile memory
- area
- storage area
- spare area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Retry When Errors Occur (AREA)
- Detection And Correction Of Errors (AREA)
Description
一方、このような電子機器では、電源ON時に不揮発メモリからデータをリードして揮発メモリに格納し、通電中は必要に応じて揮発メモリのデータを書き換え、不揮発メモリへのライトを行う。
このような電子機器では、電源OFF時は、揮発メモリ内のデータ(特に書き換えがあったもの)を不揮発メモリにライト(=退避処理)する必要があり、さらに電源ON時にデータ誤り検出としてチェックサム制御を搭載してデータを保証する必要がある。
その退避処理時に、ノイズ重畳の可能性もあるため、ライトしたデータをリード(ライトベリファイ)してデータを保証している。
しかし、不揮発メモリの素子に異常がある場合、データをライトできないことが考えられ、その対応として故障と見なされたアドレスと書こうとしていたデータをメモリ内の別領域(予備エリア)に退避する技術が知られている。
サイクル毎に異なる記憶領域にデータを記録することで、故障情報の記録が失敗しても、それまで蓄積した故障情報がすべて失われることを防止している。つまり、退避先を2重に設けてミラーリングして故障領域を保証する構成が開示されている。
詳しくは、特許文献1には、ある記憶領域に素子固着などの故障が発生すると、その記憶領域に故障情報を正常に記録することができなくなってしまう。故障が発生した記憶領域から故障情報を読み込むときに、チェックサムなどで故障発生が検知されると、故障が発生していない他の記憶領域、例えば、故障が発生した記憶領域の直前に故障情報を書き込んだ記憶領域から故障情報が読み込まれることが開示されている。
また、特許文献1には、プロセッサが、フラッシュメモリの各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印及び終了印が正常である記憶領域のうち、バックアップ領域に故障情報が書き込まれた時期が次に新しいものを選定した後、プロセッサが、変数SUMを0にリセットすることが開示されている。
本発明の一実施形態は、上記に鑑みてなされたもので、その目的は、メモリ容量を極力抑えながら、揮発メモリに復帰したデータの真偽を判断することにある。
本発明は、メモリ容量を極力抑えながら、揮発メモリに復帰したデータの真偽を判断するために、以下の構成を有する。
すなわち、本発明の情報処理装置は、複数の記憶エリア及び予備エリアを有する揮発メモリと、揮発メモリの各記憶エリア及び予備エリアに対応する各記憶エリア及び予備エリアを有する不揮発メモリと、当該情報処理装置の電源オフ時に、揮発メモリの各記憶エリア及び予備エリアから不揮発メモリの各記憶エリア及び予備エリアにデータを退避させるオフ時制御部と、当該情報処理装置の起動時に、不揮発メモリの各記憶エリア及び予備エリアから揮発メモリの各記憶エリア及び予備エリアにデータを展開する起動時制御部と、を備えた情報処理装置において、起動時制御部は、揮発メモリの記憶エリア毎に算出したサム値と、不揮発メモリの記憶エリア毎に算出したサム値とが一致した場合に、揮発メモリの予備エリアのデータの真偽を判断する第1データ判断処理部と、揮発メモリの記憶エリア毎に算出したサム値と、不揮発メモリの記憶エリア毎に算出したサム値とが一致しなかった場合に、揮発メモリの予備エリアのデータの真偽を判断する第2データ判断処理部と、を備えたことを特徴とする。
以上の構成を備えることにより、メモリ容量を極力抑えながら、揮発メモリに復帰したデータの真偽を判断することができる。
上記記載の本発明の特徴について、以下の図面を用いて詳細に解説する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対配置などは特定的な記載がない限り、この発明の範囲をそれのみに限定する主旨ではなく単なる説明例に過ぎない。
上記の本発明の特徴に関して、以下、図面を用いて詳細に説明する。
図1(a)は、本発明の一実施形態に係る情報処理装置が組み込まれた電子機器のハードウエア構成を示すブロック図である。
電子機器1は、CPU10、揮発メモリ11、不揮発メモリ12を備えている。
なお、電子機器1は、不揮発メモリ12を複数備えていてもよい。
CPU10は、データ転送およびエラー検出に関連する全ての処理を制御する。
CPU10は、制御部のー例である。電子機器1の制御部は、FPGA(Field Programmable Gate Array)、ASIC(Application Specified Integrated Circuit)、マイコンなどであつてもよい。CPU10は、プログラムを実行し、電子機器1の機能を実現する。CPU10が実行するプログラムは、不揮発メモリ12に格納されていてもよいし、不揮発メモリ12とは別に設けられたプログラムメモリに格納されていてもよい。また、CPU10は、揮発メモリ11上のプログラムを実行してもよいし、揮発メモリ11とは別に設けられたRAM上でプログラムを実行してもよい。
不揮発メモリ12は、データの保持、かつ、データ復元が行えない場合を想定したデータのデフォルト値を保持する。
電源OFF/停電検知回路13は、情報処理装置が組み込まれた電子機器本体に入カされた電源OFF要求を検知し、CPU10に通知する。また、電源OFF/停電検知回路13は、電子機器本体ヘの電力供給の停止、又は電源系統の停電を検知し、CPU10に通知する。
制御部10aは、オフ時制御部10b、起動時制御部10cを備えている。
オフ時制御部10bは、当該電子機器1の電源オフ時に、揮発メモリ11の各記憶領域から不揮発メモリ12の各記憶領域にデータを退避させる。
起動時制御部10cは、当該電子機器1の起動時に、不揮発メモリ12の各記憶領域から揮発メモリ11の各記憶領域にデータを展開する。
起動時制御部10cは、第1データ判断処理部10d、第2データ判断処理部10eを備えている。
第1データ判断処理部10dは、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致した場合に、揮発メモリ11の予備エリアのデータの真偽を判断する。
第2データ判断処理部10eは、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致しなかった場合に、揮発メモリ11の予備エリアのデータの真偽を判断する。
図2(a)は、不揮発メモリの複数の記憶領域である各エリアの構成を示す図であり、(b)は、揮発メモリの複数の記憶領域である各エリアの構成を示す図である。
図1、図2(b)に示す構成では、電源ON前は保持する必要のあるデータを不揮発メモリ12に保持している。
図2(a)において、111は、揮発メモリ11の全体の領域を複数に分割した一つ一つの固まりであり、本実施形態ではエリアとよぶ。
さらに、必要なデータを保持する各エリアとは別に、退避先のエリアを予備エリア(予備領域)112とする。
エリア毎に、当該エリア内のデータのサム値を保存することで、エリア内のデータの誤り検出に利用される。
なお、図2(b)において、121は、不揮発メモリ12の全体の領域を複数に分割した一つ一つの固まりであり、本実施の形態ではエリアとよび、さらに退避先のエリアを予備エリア(予備領域)122とする。
図3(a)~(f)は、揮発メモリ及び不揮発メモリ12のデータ状態の推移を示す図である。
図3において、揮発メモリ11はエリアX、Y、Zを備え、不揮発メモリ12はエリアA、B、Cを備えることとして説明する。なお、揮発メモリ11のエリアX、Y、Zは、不揮発メモリ12のエリアA、B、Cにそれぞれ対応することとする。
電子機器1において、電源をOFFしても動作時に用いたデータを保持する必要がある場合、図1に示すように、揮発メモリ11と不揮発メモリ12を有する構成とすることが一般的である。
不揮発メモリ12は、電源OFF状態でもデータを保持できる一方、高速アクセスに向かない他、繰り返しのデータ書き換えによってデータ保持機能が劣化するという欠点がある。
このため、電子機器1が通電時(動作時)は、高速アクセスや膨大な書き換え回数に対応できる揮発メモリ11を用いてデータ処理を行うことで、通電時のデータ処理の高速化と、不揮発メモリ12の劣化を防止することに寄与できる。
図3(a)は、電子機器の電源ON前のデータ状態21を示す図である。
図3(a)に示すように、電源ON前では、揮発メモリ11の各エリアには、データが格納されておらず、不揮発メモリ12の各エリアには、それぞれ所定のデータが格納されている。例えば、不揮発メモリ12のエリアAには、データ0xa1、0xa2、0xa3等が格納されている。
図3(b)は、電子機器の電源ON直後のデータ状態22を示す図である。
電子機器1の電源がONすると、CPU10は、揮発メモリ11を利用して処理を実行するため、不揮発メモリ12の各エリアに格納されたデータを読み出し、読み出した各エリアのデータを、揮発メモリ11の対応するエリアに書き込む。
これにより、揮発メモリ11の各エリアには、不揮発メモリ12の対応するエリアに格納されたデータと同一のデータが格納される。図3(a)に示す例では、例えば、揮発メモリ11のエリアXに、不揮発メモリ12のエリアAに格納されたデータと同一のデータ0xa1、0xa2、0xa3が格納されている。
図3(c)は、揮発メモリ11のデータ更新後のデータ状態23を示す図である。
電子機器の電源がONになり、CPU10が通常処理を実行すると、CPU10により揮発メモリ11の各エリアに格納されたデータが更新される。揮発メモリ11のデータが更新されると、揮発メモリ11の更新されたエリアに格納されたデータと、不揮発メモリ12の対応するエリアに格納されたデータとがー致しな<なる。
図3(c)に示す例では、揮発メモリ11のエリアXのデータが更新されており、エリアXにはデータ0xa4、0xa5、0xa6が格納されている。
これに対して、不揮発メモリ12のエリアAには、データ0xa1、0xa2、0xa3が格納されている。
以降は、揮発メモリ11でのデータ処理となるので、例えば揮発メモリ11のエリアXのデータのみ更新されて、これに対応する不揮発メモリ12の領域であるエリアAは更新されない、という状態が存在する。
図3(d)は、不揮発メモリ12のデータ更新後のデータ状態24を示す図である。
CPU10は、通常処理の実行中、所定のタイミングで不揮発メモリ12のデータを更新する。
すなわち、CPU10は、揮発メモリ11のエリアに格納されたデータを読み出し、読み出したデータを、不揮発メモリ12の対応するエリアに書き込む。不揮発メモリ12のデータが更新されると、不揮発メモリ12の更新されたエリアに格納されたデータと、揮発メモリ11の対応するエリアに格納されたデータとが一致する。
図2(d)に示す例では、不揮発メモリ12のエリアAのデータが更新されており、エリアAには、対応する揮発メモリ11のエリアXと同一のデータであるデータ0xa4、0xa5、0xa6が格納されている。
このため、不揮発メモリ12へのライトは、揮発メモリ11が更新される度に常に行うわけではなく、システム要求に応じて適宜行われる。
また、ライトした場合はライトした箇所をリードすることにより、データを保証するケースが多い。これはライト時に外部から飛来する電磁ノイズの影響によりデータを誤認識する場合を想定している。
よって、リードしたデータが本来のデータと異なる場合は、再度ライト、リードを繰り返してデータを保証する。
図3(e)は、不揮発メモリ12ヘのデータ更新多発後のデータ状態25を示す図である。
CPU10が不揮発メモリ12のデータの更新を繰り返し実行すると、外部から飛来する電磁ノイズなどの影響により、データエラーやアドレスエラーなどの書き込み異常が発生することがある。ここで、データエラーとは、書き込み対象のデータの一部のビットが反転するというエラーである。
データエラーが発生すると、不揮発メモリ12の所望のアドレスに誤ったデータが書き込まれる。ここで、アドレスエラーとは、データの書き込み先を示すアドレスの一部のビットが反転するエラーである。
アドレスエラーが発生すると、不揮発メモリ12の誤ったアドレスにデータが書き込まれる。
この結果、揮発メモリ11のエリアZにデータ0xc4、0xc5、0xc6が格納されているのに対して、不揮発メモリ12のエリアCにはデータ0xc4、0xc6、0xc6が格納されている。
すなわち、エラーCには、データ0xc5の代わりに、データ0xc6が誤って書き込まれている。以下では、上記のデータ0xc6のような、書き込み異常によって不揮発メモリ12に誤って書き込まれたデータを誤ライトデータという。
状態25においては、揮発メモリ11のエリアYのデータが更新されているが、これに対応する不揮発メモリ12の領域であるエリアBには、更新データのライトを行っていない。
一方、エリアYと同様にエリアZも更新されており、こちらは対応する不揮発メモリ12の領域であるエリアCへのライトを行っているが、ライト時にアドレスエラーによる誤ライトが発生したために、エリアCの一部データが正常に更新されていない。アドレスエラーはデータエラーと異なり検出・訂正が容易でないため、このようにアドレスエラーによる誤ライトが発生すると、意図しないデータが残ってしまう。
この状態で、CPU10に電源OFF/停電が通知された場合、CPU10は、更新されてないデータや誤ライトにより正しくない誤ライトデータを持つ不揮発メモリ12に対して、揮発メモリ11のデータをライトする必要がある。(電源OFF/停電時に不揮発メモリ12に揮発メモリ11のデータをライトする処理を「退避処理」と呼ぶ。)
そのため、全てのエリアについて退避処理を行おうとすると、制限時間内に退避処理が完了せずに、揮発メモリ11のデータが失われる危険性がある。
さらに言うと、電源OFFの操作ではなく、電子機器1に停電が発生した場合は、さらに処理時間が短くなるため、その危険性もより大きい。
よって、退避処理においては、特定のデータのみを対象とすることで、処理時間を短縮したり、もしくは特定のデータを優先して退避させたりすることで、処理が完了しなかった際のリスクを軽減するような手法を取り入れることが望ましい。
図3(f)は、不揮発メモリのデータ更新中に異常が発生した時のデータ状態26を示す図である。
状態26では、状態24、状態25のような更新があった際に、不揮発メモリ12内のあるエリアが故障した場合には、何度もライトを繰り返すため、更新期間内に更新しきれない場合がある。
その際は、本来ライトするエリアとは別の予備エリアに、不揮発メモリ12内の本来ライトするはずのアドレスとデータを保持しておく技術が知られている。
図4(a)~(d)は、チェックサムによるデータ復元方法について説明するための図である。図4では、チェックサムによるデータ復元時におけるデータ状態の推移を示す。
まず、図4(a)は、データ更新時に不揮発メモリ12に異常が発生した状態27を示す図である。
電源OFF時などデータ更新を行う際、不揮発メモリ12内の特定アドレスが故障してしまった場合は、ライトチェック制御を繰り返すため、一定回数を超えたときは故障であると判断し、不揮発メモリ12内の予備エリアN(予備領域)に特定アドレスと本来ライトするはずのアドレスとデータを保持する。
状態28では、図3(a)に示す状態21と同様に、電源ON前は保持する必要のあるデータを不揮発メモリ12に保持している。
この時、予備エリア内のサム値も保持する。なお、故障と認識されたアドレスには正しいデータがライトできなかったため、ライト誤ったデータが残ったままとなる。ただし、該当エリアのサム値は本来書くはずだったデータを考慮したサム値として更新される。
図4(c)は、電子機器の電源ON時のデータ更新時の不揮発メモリに異常が発生したデータ状態29を示す図である。
状態29では、電源ON時に、CPU10は不揮発メモリ12からデータをリードして、揮発メモリ11に同データをライトする。この時、不揮発メモリ12から読み取ったサム値とCPU10で演算したエリア内のサム値とを比較して、状態27のように不揮発メモリ12で異常と判断された場合に、サム値は一致しない。
図4(d)は、サムチェックNG時のバックアップ処理のデータ状態30を示す図である。
状態30では、状態29のように、サム値が不一致の際は、揮発メモリ11の予備エリアにあるアドレスとデータを書き戻した上でサム値の比較を行う。ここで、サム値が一致した場合、予備エリア(予備領域)のデータを正として判断し、揮発メモリ11内に書き戻す。
図5(a)は、起動時のデータ正誤判断パターンについて説明するための図である。状態29、30の処理は上記パターンの一例であり、全パターンの処理をここに示す。
パターンとしては、予備エリア内のデータの有無と、通常エリアと予備エリアそれぞれサム値に対する正誤判定結果に基づいて、6つのパターン(31~36)が考えられ、そのパターンに応じて正しいデータの判断処理を行う。
<パターン31>
第1データ判断処理部10dでは、パターン31に表す処理を行う。
第1データ判断処理部10dでは、予備エリアにデータがあり、かつ、全ての記憶エリアでサム値が一致した場合には、予備エリアに残されたアドレスから対象アドレスにデータを書き戻し、サム値の比較を再度行う。サム値が一致した場合には、予備エリアのデータを真と判断し、予備エリアのデータを書き戻した後に、予備エリアに残していたデータを消去する。サム値が不一致の場合には、予備エリアのデータを偽と判断し、通常起動する。
第2データ判断処理部10eでは、パターン32に表す処理を行う。
第2データ判断処理部10eでは、予備エリアにデータがあり、かつ、予備エリアのサム値は一致しているが、予備エリア以外のサム値が不一致である場合には、予備エリアのデータを正と判断し、予備エリアに残されたアドレスから対象アドレスにデータを書き戻す。その後、予備エリアに残していたデータを消去する。
第1データ判断処理部10dでは、パターン33に表す処理を行う。
第1データ判断処理部10dでは、予備エリアにデータがあり、かつ、予備エリアのサム値は不一致しているが、予備エリア以外のサム値が一致である場合には、予備エリアのデータを偽と判断し、通常起動する。
第2データ判断処理部10eでは、パターン34に表す処理を行う。
第2データ判断処理部10eでは、予備エリアにデータがあり、かつ、予備エリアと予備エリア以外でサム値が不一致である場合には、ノイズ重畳の可能性もあるため、該当エリア/予備エリアそれぞれ再度、サム値の比較を行う。それでも、両者が不一致である場合は、どちらのデータも信用性がないため、揮発メモリ11に保持したデータをデフォルト値として通常起動する。
第1データ判断処理部10dでは、パターン35に表す処理を行う。
第1データ判断処理部10dでは、予備エリアにデータが無く、かつ、全てのエリアでサム値が一致である場合には、通常起動する。
第2データ判断処理部10eでは、パターン36に表す処理を行う。
第2データ判断処理部10eでは、予備エリアにデータが無く、かつ、エリアでサム値が不一致であった場合には、不一致エリアに対してノイズ重畳の可能性もあるため、リトライを実施し、サム値が一致である場合には、通常起動する。両者が不一致である場合は、エラー停止とする。
図6は、本発明の実施形態に係る電子機器の電源OFF時の動作のー例を示すフローチャートである。
CPU10は、起動処理や初期化処理を完了した後に、通常処理を開始していることとする。ここで、電子機器の電源スイッチがユーザの操作に応じてOFFされた場合に、CPU10は、電源OFF/停電検知回路から電源OFF要求が検知される。
ステップS10では、CPU10は、電源OFF/停電検知回路13から電源OFF要求が入力されたか否かを判定する。CPU10は、電源OFF/停電検知回路13から電源OFF要求が入力されたと判定した場合には、ステップS12に進み、一方、電源OFF要求が入力されていないと判定した場合には、ステップS10に戻る。
ステップS14では、CPU10は、計算したエリア毎のサム値を不揮発メモリ12に書き込む。
ステップS16では、CPU10は、不揮発メモリ12の全領域からデータを読み出す。
ステップS18では、CPU10は、エリア1を対象として揮発メモリ11上のデータと、不揮発メモリ12上のデータとの正誤判定を行う。ここで、両者が不一致である場合は、OFF時同期化処理のサブルーチンとしてステップS20をコールする。一方、両者が一致である場合は、次のステップS22に移行する。
ステップS22では、CPU10は、エリア2を対象として揮発メモリ11上のデータと、不揮発メモリ12上のデータとの正誤判定を行う。ここで、両者が不一致である場合は、OFF時同期化処理のサブルーチンとしてステップS24をコールする。一方、両者が一致である場合は、次のステップS26に移行する。
ステップS30では、CPU10は、予備エリアを対象として揮発メモリ11上のデータと、不揮発メモリ12上のデータとの正誤判定を行う。ここで、両者が不一致である場合は、OFF時同期化処理のサブルーチンとしてステップS32をコールする。一方、両者が一致である場合は、次のステップS34に移行する。
ステップS34では、CPU10は、エンジンをOFFする。
図7は、本発明の実施形態に係る電子機器の電源OFF時の同期化処理(故障判断)の動作のー例を示すサブルーチンのフローチャートである。
ステップS110では、CPU10は、代数N=0に設定する。
ステップS112では、CPU10は、不一致アドレスに対して、揮発メモリ11にデータを書き込む。
ステップS114では、CPU10は、揮発メモリ11に書き込んだデータを読み出す。
ステップS116では、CPU10は、揮発メモリ11に書き込んだデータと、揮発メモリ11から読み出したデータを比較し、両者が一致するか否を判定する。CPU10は、両者が一致する場合には、メインルーチンに復帰(リターン)し、一方、両者が一致しない場合には、ステップS118に進む。
両者が一致しない場合に、ステップS118では、CPU10は、同期を判定するための基準となる同期判定時間Toutを経過したか否を判定する。CPU10は、Toutを経過した場合には、メインルーチンに復帰(リターン)し、一方、Toutを経過していない場合には、ステップS120に進む。
ステップS122では、CPU10は、故障判断として、代数Nが3よりも大きいか否かを判定する。CPU10は、代数Nが3よりも大きい場合には、ステップS124に進み、一方、代数Nが3よりも大きくない場合には、ステップS112に進む。
代数Nが3よりも大きい場合には、ステップS124では、CPU10は、予備エリアに不一致アドレスと揮発メモリ11のデータを書き込む。
ステップS126では、CPU10は、揮発メモリ11に書き込んだデータを読み出す。
ステップS128では、CPU10は、揮発メモリ11に書き込んだデータと、揮発メモリ11から読み出したデータを比較し、両者が一致するか否を判定する。CPU10は、両者が一致する場合には、メインルーチンに復帰する。一方、両者が一致しない場合には、ステップS130に進む。
両者が一致しない場合に、ステップS130では、CPU10は、同期判定時間Toutを経過したか否を判定する。CPU10は、Toutを経過した場合には、メインルーチンに復帰する。一方、Toutを経過していない場合には、ステップS124に戻る。
図8は、本発明の実施形態に係る電子機器の電源ON時のメイン処理のー例を示すフローチャートである。
ステップS210では、CPU10は、不揮発メモリ12から揮発メモリ11へデータを転送して展開する(1回目)。
ステップS212では、CPU10は、不揮発メモリ12と揮発メモリ11からそれぞれデータを読み出し、両者のサム値を計算する。
ステップS214では、CPU10は、両者のサム値を比較する。すなわち、CPU10は、リード値と計算値を比較する。
ステップS216では、CPU10は、チェックサムの結果が正常か否かを判定する。すなわち、リード値と計算値が等しいか否かを判定する。CPU10は、チェックサムの結果が正常である場合には、第1データ判断処理のサブルーチンとしてステップS228をコールする。一方、CPU10は、チェックサムの結果が正常ではない場合には、ステップS218に進む。
ステップS220では、CPU10は、1回目のデータと2回目のデータが同一か否かを判定する。CPU10は、両者が同一である場合には、第1データ判断処理のサブルーチンとしてステップS228をコールする。一方、CPU10は、両者が同一ではない場合には、ステップS222に進む。
次に、ステップS224では、CPU10は、不揮発メモリ12から揮発メモリ11へデータを転送して展開する(4回目)。
ステップS226では、CPU10は、3回目のデータと4回目のデータが同一か否かを判定する。CPU10は、両者が同一である場合には、第1データ判断処理のサブルーチンとしてステップS228をコールする。一方、CPU10は、両者が同一ではない場合には、第2データ判断処理のサブルーチンとしてステップS230をコールする。
図9は、本発明の実施形態に係る電子機器の第1データ判断処理のサブルーチンのー例を示すフローチャートである。
ステップS310では、CPU10は、予備エリアにデータが無いか否かを判定する。CPU10は、予備エリアにデータが無いと判定した場合には、ステップS312に進み、一方、予備エリアにデータがあると判定した場合には、ステップS314に進む。
予備エリアにデータがあると判定した場合には、ステップS314では、CPU10は、予備エリアのサム値は一致しているか否かを判定する。CPU10は、予備エリアのサム値が一致していると判定した場合には、ステップS316に進み、予備エリアのサム値が一致していないと判定した場合には、ステップS312に進む。
予備エリアのサム値が一致していると判定した場合には、ステップS316では、CPU10は、予備エリアのデータを読み出して、このデータを該当エリアに書き込んで移動する。
ステップS318では、CPU10は、予備エリアのデータのサム値、該当エリアのデータのサム値を計算する。
ステップS322では、CPU10は、両者のサム値が一致しているか否かを判定する。CPU10は、両者のサム値が一致していると判定した場合には、ステップS324に進み、両者のサム値が一致していないと判定した場合には、ステップS326に進む。
両者のサム値が一致していると判定した場合には、ステップS324では、CPU10は、予備エリアのデータを真として起動する。
両者のサム値が一致していないと判定した場合には、ステップS326では、CPU10は、元々の該当エリアのデータを真として起動する。
ステップS328では、CPU10は、予備エリアのデータをリフレッシュする。
ステップS312では、CPU10は、通常起動する。
図10は、本発明の実施形態に係る電子機器の第2データ判断処理のサブルーチンのー例を示すフローチャートである。
ステップS410では、CPU10は、予備エリアにデータが無いか否かを判定する。CPU10は、予備エリアにデータが無いと判定した場合には、ステップS412に進み、一方、予備エリアにデータがあると判定した場合には、ステップS420に進む。
予備エリアにデータが無いと判定した場合には、ステップS412では、CPU10は、当該エリアのサムチェックを再度行う。
ステップS414では、CPU10は、当該エリアのサム値は一致しているか否かを判定する。CPU10は、当該エリアのサム値が一致していると判定した場合には、ステップS416に進み、一方、当該エリアのサム値が一致していないと判定した場合には、ステップS418に進む。
当該エリアのサム値が一致していると判定した場合には、ステップS416では、CPU10は、通常起動する。
一方、当該エリアのサム値が一致していないと判定した場合には、ステップS418では、CPU10は、エラーであるため停止する。
予備エリアのサム値が一致していないと判定した場合には、ノイズ重畳による不一致を排除するためステップS422では、本当に予備エリアのサム値が一致しないかを判断する。CPU10は、予備エリアのサム値について、不一致が1回目か否かを判定する。もし一回だけの事象であればノイズの影響と判断し、2回以上発生する場合はノイズの影響ではないと判断する。CPU10は、予備エリアのサム値について、不一致が1回目であると判定した場合には、ステップS424に進み、一方、予備エリアのサム値について、不一致が1回目ではないと判定した場合には、ステップS426に進む。
予備エリアのサム値について、不一致が1回目ではないと判定した場合には、ステップS426では、CPU10は、デフォルト値として起動する。
一方、予備エリアのサム値について、不一致が1回目であると判定した場合には、ステップS424では、CPU10は、当該エリアのサムチェックを行うとともに、予備エリアのサムチェックを行い、ステップS410に戻る。
ステップS430では、CPU10は、予備エリアのデータのサム値、該当エリアのデータのサム値を計算する。
ステップS432では、CPU10は、再度、予備エリアのサム値と該当エリアのサム値を比較する。
両者のサム値が一致していると判定した場合には、ステップS436では、CPU10は、予備エリアのデータを真として起動する。
次に、ステップS444では、CPU10は、予備エリアのデータをリフレッシュする。
ステップS440では、CPU10は、当該エリアのサム値は一致しているか否かを判定する。CPU10は、当該エリアのサム値が一致していると判定した場合には、ステップS442に進み、一方、当該エリアのサム値が一致していないと判定した場合には、ステップS446に進む。
当該エリアのサム値が一致していると判定した場合には、ステップS442では、CPU10は、当該エリアのデータを真として起動する。
次に、ステップS448では、CPU10は、予備エリアのサム値は一致しているか否かを判定する。CPU10は、予備エリアのサム値が一致していると判定した場合には、ステップS450に進み、一方、予備エリアのサム値が一致していないと判定した場合には、ステップS452に進む。
予備エリアのサム値が一致していると判定した場合には、ステップS450では、CPU10は、予備エリアのデータを真として起動する。
一方、予備エリアのサム値が一致していないと判定した場合には、ステップS452では、CPU10は、デフォルト値として起動する。
本実施の形態によれば、電源ON時のデータ誤り検出として実行するチェックサム制御により(退避エリアを含む)リードして読まれたサム値と、計算されたサム値の一致/不一致の条件と、退避先のサム値の一致/不一致の条件と、退避エリア上のデータ有無の条件の全ての条件に基づいて、退避エリアのデータが誤ライトで書かれてしまったデータなのか、退避先データが正しいのか、通常立ち上げで良いのか、ノイズ重畳の可能性があるのかを判断できるので、メモリ容量を増やさずに不揮発メモリ12の領域のデータの真偽を判断することができる。
<第1態様>
本態様の情報処理装置は、複数の記憶エリア及び予備エリアを有する揮発メモリ11と、揮発メモリ11の各記憶エリア及び予備エリアに対応する各記憶エリア及び予備エリアを有する不揮発メモリ12と、当該情報処理装置の電源オフ時に、揮発メモリ11の各記憶エリア及び予備エリアから不揮発メモリ12の各記憶エリア及び予備エリアにデータを退避させるオフ時制御部10bと、当該情報処理装置の起動時に、不揮発メモリ12の各記憶エリア及び予備エリアから揮発メモリ11の各記憶エリア及び予備エリアにデータを展開する起動時制御部10cと、を備えた情報処理装置において、起動時制御部10cは、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致した場合に、揮発メモリ11の予備エリアのデータの真偽を判断する第1データ判断処理部10dと、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致しなかった場合に、揮発メモリ11の予備エリアのデータの真偽を判断する第2データ判断処理部10eと、を備えたことを特徴とする。
本態様によれば、当該情報処理装置の起動時において、起動時制御部10cは、第1データ判断処理部10dが、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致した場合に、揮発メモリ11の予備エリアのデータの真偽を判断する。一方、第2データ判断処理部10eは、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致しなかった場合に、揮発メモリ11の予備エリアのデータの真偽を判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第1データ判断処理部10d(パターン31-1)は、予備エリアにデータがある場合には、予備エリアに残されたアドレスに基づいて、対象アドレスにデータを書き戻し、サム値の比較を再度行うことを特徴とする。
本態様によれば、第1データ判断処理部10dは、予備エリアにデータがある場合には、予備エリアに残されたアドレスに基づいて、対象アドレスにデータを書き戻し、サム値の比較を再度行うことで、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致した場合に、揮発メモリ11の予備エリアのデータの真偽を判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第1データ判断処理部10d(パターン31-2)は、サム値が一致した場合には、予備エリアのデータを真として判断することを特徴とする。
本態様によれば、第1データ判断処理部10dは、サム値が一致した場合には、予備エリアのデータを真として判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第1データ判断処理部10d(パターン31-3)は、サム値が不一致である場合には、元々の当該エリアのデータを真として判断することを特徴とする。
本態様によれば、第1データ判断処理部10dは、サム値が不一致である場合には、元々の当該エリアのデータを真として判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第2データ判断処理部10e(パターン32)は、予備エリアにデータがある場合、かつ予備エリアのサム値が一致である場合に、予備エリアのデータをサム値が不一致であった記憶エリアに移動し、再度、当該記憶エリアのサム値が一致である場合には、予備エリアのデータを真として判断することを特徴とする。
本態様によれば、第2データ判断処理部10eは、予備エリアにデータがある場合、かつ予備エリアのサム値が一致である場合に、予備エリアのデータをサム値が不一致であった記憶エリアに移動し、再度、当該記憶エリアのサム値が一致である場合には、予備エリアのデータを真として判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第1データ判断処理部10d(パターン33)は、予備エリアにデータがある場合、かつ予備エリアのサム値が不一致である場合には、通常起動することを特徴とする。
本態様によれば、第1データ判断処理部10dは、予備エリアにデータがある場合、かつ予備エリアのサム値が不一致である場合には、通常起動する。
これにより、予備エリアにデータがある場合、かつ予備エリアのサム値が不一致である場合には、通常起動することができる。
本態様の第2データ判断処理部10e(パターン34-1)は、予備エリアにデータがある場合、かつ予備エリアのサム値が一致である場合に、予備エリアのデータをサム値が不一致であった記憶エリアに移動し、再度、当該記憶エリアのサム値が不一致である場合に、再再度、当該記憶エリアのサム値が一致である場合には、当該記憶エリアのデータを真として判断することを特徴とする。
本態様によれば、第2データ判断処理部10eは、予備エリアにデータがある場合、かつ予備エリアのサム値が一致である場合に、予備エリアのデータをサム値が不一致であった記憶エリアに移動し、再度、当該記憶エリアのサム値が不一致である場合に、再再度、当該記憶エリアのサム値が一致である場合には、当該記憶エリアのデータを真として判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第2データ判断処理部10e(パターン34-2)は、再再度、当該記憶エリアのサム値が不一致である場合には、予備エリアのサム値が一致である場合には、予備エリアのデータを真として判断することを特徴とする。
本態様によれば、第2データ判断処理部10eは、再再度、当該記憶エリアのサム値が不一致である場合には、予備エリアのサム値が一致である場合には、予備エリアのデータを真として判断する。
これにより、メモリ容量を増やさずに揮発メモリ11に復帰したデータの真偽を判断することができる。
本態様の第2データ判断処理部10e(パターン34-3)は、再再度、当該記憶エリアのサム値が不一致であり。かつ予備エリアのサム値が不一致である場合には、揮発メモリ11に保持したデータをデフォルト値として通常起動することを特徴とする。
本態様によれば、第2データ判断処理部10eは、再再度、当該記憶エリアのサム値が不一致であり、かつ予備エリアのサム値が不一致である場合には、揮発メモリ11に保持したデータをデフォルト値として通常起動する。
これにより、揮発メモリ11に保持したデータをデフォルト値として通常起動することができる。
本態様の第1データ判断処理部10d(パターン35)は、予備エリアにデータが無い場合には、通常起動することを特徴とする。
本態様によれば、第1データ判断処理部10dは、予備エリアにデータが無い場合には、通常起動する。
これにより、通常起動することができる。
本態様の第2データ判断処理部10e(パターン36-1)は、予備エリアにデータが無い場合に、サム値が不一致であった記憶エリアに対して、再度、サム値の比較を行い、サム値が一致である場合には、通常起動することを特徴とする。
本態様によれば、第2データ判断処理部10eは、予備エリアにデータが無い場合に、サム値が不一致であった記憶エリアに対して、再度、サム値の比較を行い、サム値が一致である場合には、通常起動する。
これにより、通常起動することができる。
本態様の第2データ判断処理部10e(パターン36-2)は、サム値が不一致であった記憶エリアに対して、再度、サム値の比較を行い、サム値が不一致である場合は、エラーがあることとして停止することを特徴とする。
本態様によれば、第2データ判断処理部10eは、サム値が不一致であった記憶エリアに対して、再度、サム値の比較を行い、サム値が不一致である場合は、エラーがあることとして停止する。
これにより、起動動作を停止することができる。
本態様の情報処理方法は、複数の記憶エリア及び予備エリアを有する揮発メモリ11と、揮発メモリ11の各記憶エリア及び予備エリアに対応する各記憶エリア及び予備エリアを有する不揮発メモリ12と、当該情報処理装置の電源オフ時に、揮発メモリ11の各記憶エリア及び予備エリアから不揮発メモリ12の各記憶エリア及び予備エリアにデータを退避させるオフ時制御部10bと、当該情報処理装置の起動時に、不揮発メモリ12の各記憶エリア及び予備エリアから揮発メモリ11の各記憶エリア及び予備エリアにデータを展開する起動時制御部10cと、を備えた情報処理装置による情報処理方法において、起動時制御部10cは、
揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致した場合に、揮発メモリ11の予備エリアのデータの真偽を判断する第1データ判断処理ステップと、揮発メモリ11の記憶エリア毎に算出したサム値と、不揮発メモリ12の記憶エリア毎に算出したサム値とが一致しなかった場合に、揮発メモリ11の予備エリアのデータの真偽を判断する第2データ判断処理ステップと、を実行することを特徴とする。
第13態様の作用、及び効果は第1態様と同様であるので、その説明を省略する。
Claims (10)
- 複数の記憶エリア及び予備エリアを有する揮発メモリと、
前記揮発メモリの各記憶エリア及び予備エリアに対応する各記憶エリア及び予備エリアを有する不揮発メモリと、
当該情報処理装置の電源オフ時に、前記揮発メモリの各記憶エリア及び予備エリアから前記不揮発メモリの各記憶エリア及び予備エリアにデータを退避させるオフ時制御部と、
当該情報処理装置の起動時に、前記不揮発メモリの各記憶エリア及び予備エリアから前記揮発メモリの各記憶エリア及び予備エリアにデータを展開する起動時制御部と、を備えた情報処理装置において、
前記起動時制御部は、
前記揮発メモリの記憶エリア毎に算出したサム値と、前記不揮発メモリの記憶エリア毎に算出したサム値とが一致した場合に、前記揮発メモリの予備エリアのデータの真偽を判断する第1データ判断処理部と、
前記揮発メモリの記憶エリア毎に算出したサム値と、前記不揮発メモリの記憶エリア毎に算出したサム値とが一致しなかった場合に、前記揮発メモリの予備エリアのデータの真偽を判断する第2データ判断処理部と、を備えたことを特徴とする情報処理装置。 - 前記第1データ判断処理部は、
前記予備エリアにデータがある場合には、前記予備エリアに残されたアドレスに基づいて、対象アドレスにデータを書き戻し、サム値の比較を再度行うことを特徴とする請求項1記載の情報処理装置。 - 前記第1データ判断処理部は、
前記サム値が一致した場合には、前記予備エリアのデータを真として判断することを特徴とする請求項2記載の情報処理装置。 - 前記第1データ判断処理部は、
前記サム値が不一致である場合には、前記元々の当該エリアのデータを真として判断することを特徴とする請求項2記載の情報処理装置。 - 前記第2データ判断処理部は、
前記予備エリアにデータがある場合、かつ前記予備エリアのサム値が一致である場合に、前記予備エリアのデータを前記サム値が不一致であった記憶エリアに移動し、再度、当該記憶エリアのサム値が一致である場合には、前記予備エリアのデータを真として判断することを特徴とする請求項1記載の情報処理装置。 - 前記第1データ判断処理部は、
前記予備エリアにデータがある場合、かつ前記予備エリアのサム値が不一致である場合には、通常起動することを特徴とする請求項1記載の情報処理装置。 - 前記第1データ判断処理部は、
前記予備エリアにデータが無い場合には、通常起動することを特徴とする請求項1記載の情報処理装置。 - 前記第2データ判断処理部は、
前記予備エリアにデータが無い場合に、前記サム値が不一致であった記憶エリアに対して、再度、サム値の比較を行い、サム値が一致である場合には、通常起動することを特徴とする請求項2記載の情報処理装置。 - 前記第2データ判断処理部は、
前記サム値が不一致であった記憶エリアに対して、再度、サム値の比較を行い、サム値が不一致である場合は、エラーがあることとして停止することを特徴とする請求項7記載の情報処理装置。 - 複数の記憶エリア及び予備エリアを有する揮発メモリと、
前記揮発メモリの各記憶エリア及び予備エリアに対応する各記憶エリア及び予備エリアを有する不揮発メモリと、
当該情報処理装置の電源オフ時に、前記揮発メモリの各記憶エリア及び予備エリアから前記不揮発メモリの各記憶エリア及び予備エリアにデータを退避させるオフ時制御部と、
当該情報処理装置の起動時に、前記不揮発メモリの各記憶エリア及び予備エリアから前記揮発メモリの各記憶エリア及び予備エリアにデータを展開する起動時制御部と、を備えた情報処理装置による情報処理方法において、
前記起動時制御部は、
前記揮発メモリの記憶エリア毎に算出したサム値と、前記不揮発メモリの記憶エリア毎に算出したサム値とが一致した場合に、前記揮発メモリの予備エリアのデータの真偽を判断する第1データ判断処理ステップと、
前記揮発メモリの記憶エリア毎に算出したサム値と、前記不揮発メモリの記憶エリア毎に算出したサム値とが一致しなかった場合に、前記揮発メモリの予備エリアのデータの真偽を判断する第2データ判断処理ステップと、を実行することを特徴とする情報処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018034519A JP6996342B2 (ja) | 2018-02-28 | 2018-02-28 | 情報処理装置、及び情報処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018034519A JP6996342B2 (ja) | 2018-02-28 | 2018-02-28 | 情報処理装置、及び情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019149088A JP2019149088A (ja) | 2019-09-05 |
JP6996342B2 true JP6996342B2 (ja) | 2022-01-17 |
Family
ID=67848705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018034519A Active JP6996342B2 (ja) | 2018-02-28 | 2018-02-28 | 情報処理装置、及び情報処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6996342B2 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007102566A (ja) | 2005-10-05 | 2007-04-19 | Fuji Electric Holdings Co Ltd | メモリバックアップシステム |
JP2017194769A (ja) | 2016-04-19 | 2017-10-26 | 株式会社エルイーテック | ワークramの情報を不揮発性メモリに保存する装置 |
JP2018018207A (ja) | 2016-07-26 | 2018-02-01 | 株式会社リコー | 電子機器、データ退避方法、及びプログラム |
-
2018
- 2018-02-28 JP JP2018034519A patent/JP6996342B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007102566A (ja) | 2005-10-05 | 2007-04-19 | Fuji Electric Holdings Co Ltd | メモリバックアップシステム |
JP2017194769A (ja) | 2016-04-19 | 2017-10-26 | 株式会社エルイーテック | ワークramの情報を不揮発性メモリに保存する装置 |
JP2018018207A (ja) | 2016-07-26 | 2018-02-01 | 株式会社リコー | 電子機器、データ退避方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2019149088A (ja) | 2019-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8812910B2 (en) | Pilot process method for system boot and associated apparatus | |
US7334121B2 (en) | Flash memory system including a duplicate booting program and apparatus and method for protecting the same flash memory | |
US8341386B2 (en) | Method for updating basic input/output system and method for repairing thereof | |
US8689041B2 (en) | Method for protecting data in damaged memory cells by dynamically switching memory mode | |
CN102750191B (zh) | 用于启动固态非易失性存储设备内的刷新操作的方法 | |
US20080141016A1 (en) | Computer System and Related Method for Preventing Failure of Updating BIOS Programs | |
JP4227149B2 (ja) | 電子制御装置の情報記憶方法 | |
JP2020535504A (ja) | システムバージョンをアップグレードする方法及び装置 | |
US20050033954A1 (en) | Computer system having BIOS with multiple memory block | |
KR100703164B1 (ko) | 데이터 처리장치 및 그 제어방법 | |
US20060206764A1 (en) | Memory reliability detection system and method | |
JP2010067098A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
JP6996342B2 (ja) | 情報処理装置、及び情報処理方法 | |
JP2009271737A (ja) | 情報処理装置 | |
US9778981B2 (en) | Microcontroller | |
JP6919156B2 (ja) | 電子機器、データ退避方法、及びプログラム | |
JP6021597B2 (ja) | 情報処理装置、情報処理方法、およびコンピュータプログラム | |
US20080313451A1 (en) | Data recovery method | |
JP2010536112A (ja) | 中断された書込みの回復のためのデータ記憶方法、機器およびシステム | |
JP2008204327A (ja) | 二重化システムにおける記憶装置の制御方法 | |
JP5233869B2 (ja) | 処理システム及び処理装置が実行するプログラムの実行方法 | |
CN101464817B (zh) | 数据恢复方法 | |
JP6011687B1 (ja) | 記憶装置およびその制御方法 | |
US20170010827A1 (en) | File system of controller | |
JP4592280B2 (ja) | データ記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201023 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210826 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210907 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211102 |
|
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: 20211116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211129 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6996342 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |