<実施の形態1>
図1は、本発明の実施の形態1に係るデータ記憶装置を示すブロック図である。図に示すように、データ記憶装置51は、中央処理装置(以下、「CPU1」と呼ぶ)と、フラッシュメモリ2と、書き込み可能なメモリであるRAM(Random Access Memory)3とを備える。
CPU1は、動作プログラムを読込んでデータ記憶装置51を統括的に制御する。このCPU1には、プログラムの動作中に必要な値、例えば、データ転送先の開始アドレスが一時的に保持されるレジスタ4,5が設けられている。
フラッシュメモリ2は、EEPROM(Electrically Erasable PROM)の一種である。このフラッシュメモリ2には、CPU1が処理する動作プログラムや設定情報が記憶されている。
RAM3は、一時記憶手段であり、フラッシュメモリ2からの動作プログラムや設定情報が書き込まれるプログラム領域と、動作処理実行中に必要なデータが一時的に書き込まれる作業領域とを有している。
CPU1は、バス50を介してフラッシュメモリ2と接続されており、動作プログラム及び設定情報のデータや、当該データのフラッシュメモリ2上のアドレスなどを、バス50を介してフラッシュメモリ2と入出力可能となっている。また、CPU1は、バス50を介してRAM3と接続されており、動作処理実行中に必要なデータや、当該データのRAM3上のアドレスなどを、バス50を介してRAM3と入出力可能となっている。
さて、一般的なフラッシュメモリは、複数のメモリセル(図示しない)を有し、当該メモリセルにおいて電荷が蓄積された状態を1ビットの「0」などとし、当該メモリセルにおいて電荷が放電された状態を1ビットの「1」などとすることによってデータを記憶している。このようなフラッシュメモリにおいては、メモリセルに蓄積された電荷が時間経過とともに減少することから、例えばビット値が「0」から「1」と変化してデータが誤って変化する「データ化け」が生じてしまうことがある。このデータ化けを防ぐ技術は存在するものの、フラッシュメモリに、データ化け防止専用の記憶容量(記憶領域)を設けることが必要となっている。
そこで、本実施の形態に係るデータ記憶装置51は、フラッシュメモリ2において、データ化け防止専用の記憶容量を設けなくてもデータ化けを防止可能となっている。以下、このようなデータ記憶装置51の動作について説明する。
図2は、本実施の形態に係るデータ記憶装置51の動作を示すフローチャートである。概略について説明すると、ステップS1にてフラッシュメモリ2に記憶されているデータがRAM3に書き込まれ、ステップS2にてRAM3に書き込まれたデータがフラッシュメモリ2の元アドレスに書き込まれる。そして、ステップS3にてステップS1,S2が全データに対して行われたかが判定され、全データに対して行われていない場合には、ステップS4にて読み出し対象となるアドレスが次のアドレスに進められる。この動作は、CPU1により、一日一回など予め決められた周期で行われる。
次に、本実施の形態に係るデータ記憶装置51の動作について図2を用いて詳細に説明する。
まず、ステップS1にて、CPU1は、バス50を介して、フラッシュメモリ2に記憶されている動作プログラム及び設定情報などのデータと、このデータのフラッシュメモリ2上のアドレスとを読み出す。ステップS1が初めて行われる場合には、CPU1は先頭のアドレスを読み出す。それから、CPU1は、読み出したデータをRAM3の空き領域に書き込む。それとともに、CPU1は、当該データが読み出されたフラッシュメモリ2上のアドレス(以下、「元アドレス」と呼ぶこともある)をレジスタ4に記憶し、当該データが書き込まれたRAM3上のアドレスをレジスタ5に記憶する。
ステップS2にて、CPU1は、ステップS1で書き込まれたRAM3上のアドレスをレジスタ5から読み出し、ステップS1でRAM3上の当該アドレスに書き込まれたデータを読み出す。そして、CPU1は、元アドレスをレジスタ4から読み出し、RAM3から読み出したデータをフラッシュメモリ2の当該元アドレスに上書きする。
CPU1は、この上書き動作を、フラッシュメモリ2においてデータ化けが生じる前に行う。したがって、フラッシュメモリ2において時間経過とともに減少していた電荷が、データ化けが生じる前に十分な大きさまで回復する。よって、フラッシュメモリ2におけるデータ化けを防ぐことができる。以下、このデータ化けを防ぐ上書き動作を、「データ化け対策処理」と呼ぶこともある。
次に、RAM3から読み出したデータを元アドレスに上書きする利点について説明する。なお、以下の説明において、「電荷状態」は電荷が蓄積された状態、及び、電荷が放電された状態のいずれかを示すものとする。一般に、フラッシュメモリにおいて、1ビットの「1」を示すデータが書き込まれたときの電荷状態と、1ビットの「0」を示すデータが書き込まれたときの電荷状態とは互いに異なる。そのため、どちらかの電荷状態がメモリセルに蓄積されている場合に、そのまま新しいデータを示す電荷状態を同じメモリセルに蓄積すると、電荷状態が混じってしまい、新しいデータが正しく記憶されなくなる場合がある。
それを防ぐため、一般的なフラッシュメモリにおいては、メモリセル(アドレス)に新しいデータを書き込む際に、当該メモリセル(アドレス)の電荷状態を一度消去してから、新しいデータを示す電荷状態を当該メモリセル(アドレス)に形成している。しかし、メモリセル(アドレス)の電荷状態を消去した後に、停電などが発生して電源供給が急に停止すると、多くのデータが消失してしまい、結果として、プログラムに誤りが生じたり、設定を復元できなかったりしてしまう可能性がある。
それに対し、本実施の形態では、CPU1が、同一アドレスにおいて、元のデータと同じ新しいデータを上書きすることによってデータ化け対策処理を行うことから、フラッシュメモリ2においては、電荷が蓄積されていたメモリセル(アドレス)には電荷が蓄積されたままとなり、電荷が放電されていたメモリセル(アドレス)には電荷が放電されたままとなる。したがって、メモリセルに蓄積されていた電荷状態と、新しいデータの電荷状態とが互いに一致することから、元のデータの電荷を消去する処理を行わずにそのまま新しいデータを上書きしても、新しいデータを正しく記憶することができる。
そこで、本実施の形態に係るCPU1においては、フラッシュメモリ2に存在するデータを消去する処理を行わずに、RAM3から読み出したデータをフラッシュメモリ2の元アドレスに書き込むようにしている。その結果、フラッシュメモリ2のデータ化け対策処理中に停電などが生じても、フラッシュメモリ2の元のデータは消去されずに残ることから、データ化け対策処理中に多くのデータが消失するのを抑制することができる。よって、停電等により、プログラムに誤りが生じたり、設定を復元できなかったりする問題が発生するのを抑制することが可能となっている。
ステップS3にて、CPU1は、フラッシュメモリ2の全アドレスに対して、ステップS1,S2の動作が行われたかを判定する。つまり、CPU1は、フラッシュメモリ2に記憶されている全データが書き戻されたかを判定する。
ステップS3において、CPU1は、全データが書き戻されたと判定した場合には、フラッシュメモリ2においてデータが記憶されている先頭のアドレスから再びステップS1を行う。ステップS3において、CPU1は、全データが書き戻されたと判定しなかった場合には、ステップS4にて読み出す対象のアドレスを次のアドレスに進めた後、再びステップS1を行う。このループ動作により、フラッシュメモリ2に記憶されている全データは書き戻される。つまり、フラッシュメモリ2に記憶されている全データに対して、データ化け対策処理が行われる。
以上のようなデータ記憶装置51によれば、フラッシュメモリ2にデータを二重化して記憶する代わりに、当該データをRAM3に一時的に記憶することから、データ化け防止専用の記憶容量が不要となる。したがって、記憶容量の小さいフラッシュメモリ2を使用することができる。また、本実施の形態では、同一のデータが同一アドレスに上書きされるため、フラッシュメモリ2に存在するデータを消去する処理を行わずに、RAM3から読み出したデータをフラッシュメモリ2の元アドレスに書き込むことが可能となる。したがって、フラッシュメモリ2のデータ化け対策処理中に停電などが発生しても、データが消失するのを抑制することができ、プログラムに誤りが生じたり、設定を復元できなかったりするのを抑制することができる。
なお、フラッシュメモリ2の電荷が減少してデータ化けが生じる期間は、フラッシュメモリ2の酸化膜の劣化特性や製造状の欠陥の状態等に起因することから、個々に差異があるものの、数ヶ月以上の期間でデータ化けが発生する場合が多い。したがって、書き戻しの周期は、データ化けが生じる期間(数ヶ月以上)よりも短いことが必要である。また、フラッシュメモリ2の書き換え保証回数に至る期間が、フラッシュメモリ2を搭載する搭載装置の製品寿命(数十年程度)よりも長くなるように、書き戻しの周期は長くされることが望ましい。
そこで、例えば、書き戻しの周期を一日一回とすると、書き戻しの周期をデータ化けが生じる期間(数ヶ月以上)よりも十分短くすることができる。そして、書き換え保証回数が10万回である場合には、保証回数に至る期間は270年となることから、搭載装置の製品寿命(数十年程度)よりも十分長くすることができる。
また、以上の説明では、本実施の形態に係るデータ記憶装置51は、フラッシュメモリ2を備えるものとした。しかし、これに限ったものではなく、データ記憶装置51は、フラッシュメモリ2を含む、より広い概念であるEEPROMを備えるものであっても、上述と同じ効果を得ることができる。
<実施の形態2>
図3は、本発明の実施の形態2に係る監視記録装置を示すブロック図である。以下、本実施の形態に係る監視記録装置56のブロック構成において、実施の形態1と同一の部分には同一符号を付与し、以下においては実施の形態1と異なる部分を中心に説明する。
図に示すように、監視記録装置56は、実施の形態1に係るデータ記憶装置51に、起動スイッチ6と、記録ボタン7と、カメラ入力端子8と、映像信号アナログデジタル変換回路(以下、「映像信号A/D回路9」と呼ぶ)と、映像圧縮回路10と、データ転送回路11と、ハードディスク装置(以下、「HDD12」と呼ぶ)と、映像伸張回路13と、映像信号デジタルアナログ変換回路(以下、「映像信号D/A回路14」と呼ぶ)と、映像信号出力端子15とが加わったものとなっている。
CPU1は、映像信号A/D回路9、映像圧縮回路10、データ転送回路11、映像伸張回路13及び映像信号D/A回路14のそれぞれとバス50を介して接続されており、これらとの間で、アドレス及びデータが入出力可能となっている。
起動スイッチ6は、監視記録装置56において、映像データの記録等の動作モードを実行可能な待機状態にするためのスイッチである。記録ボタン7は、映像データの記録を開始するためのボタンである。複数のカメラ入力端子8は、複数の監視カメラ(図示しない)から出力されたアナログ形式の映像信号が入力される端子である。
映像信号A/D回路9は、各カメラ入力端子8からのアナログ形式の映像信号を、デジタル形式の映像データに変換する。映像圧縮回路10は、映像データを映像圧縮してデータ量のより少ない映像圧縮データを生成する。データ転送回路11は、映像圧縮回路から映像圧縮データを受け取り、CPU1の制御により、映像圧縮データを必要とする回路に出力する。HDD12は映像圧縮データを記憶する。映像伸張回路13は、映像圧縮データを、元のデータ量を有する映像データに復元する。映像信号D/A回路14は、復元されたデジタル形式の映像データを、アナログ形式の映像信号に変換する。映像信号D/A回路14で生成された映像信号は、映像表示装置(図示しない)などと接続される映像信号出力端子15に出力される。
図4は、本実施の形態に係る監視記録装置56において、監視カメラの映像データをHDD12に記録する際の動作を示すフローチャートである。次に、この動作を図4に示されるフローチャートに沿って説明する。
まず、ステップS11にて監視記録装置56に電源が供給されると、ステップS12にて、CPU1は、以下の処理を開始し、フラッシュメモリ2から動作プログラム及び設定情報などのデータ及びアドレスを読み出し、読み出したデータをRAM3に書き込む。
RAM3へのデータの書込みが完了すると、ステップS13にて、CPU1はRAM3に記憶された動作プログラムの待機処理を実行して待機状態に移行する。CPU1が待機状態となると、ステップS22〜S27においてデータ化け対策処理を行う。
本実施の形態では、CPU1が、ステップS14〜S21において記録処理等を行う場合にも、当該処理の間欠的な合間にデータ化け対策処理を行うことにより、記録処理とデータ化け対策処理とを並行して行うことが可能となっている。以下、このことについて詳細に説明する。
まず、ステップS14〜S21で行われる記録処理について説明する。ステップS14にて、CPU1は、起動スイッチ6の入力を受け付けると、RAM3上の動作プログラムの稼動処理を開始する。そして、ステップS15にて、CPU1は、映像信号A/D回路9、映像圧縮回路10、データ転送回路11、映像伸張回路13及び映像信号D/A回路14の設定レジスタをアドレス指定しながら、初期値を順次書き込んで初期設定を行い、停止状態に移行する。停止状態では、記録処理・バックアップ処理・再生処理などの動作モードを実行することが可能であり、同時に複数の動作モードを実行することも可能である。
ステップS16にて、CPU1は、記録ボタン7の押下げを受け付けると、ステップS17にて、カメラ入力端子8から入力される監視カメラのアナログ映像信号を、映像信号A/D回路9によりデジタル形式の映像データに変換する。そして、CPU1は、映像データを映像圧縮回路10に入力して映像圧縮することにより、映像圧縮データを生成する。ステップS18にて、CPU1は、映像圧縮データの記録日時情報や、HDD12に書き込むときの書き込みの位置情報、前後データのつながり情報などの管理情報を作成し、RAM3の作業領域に記憶する。
ステップS19にて、CPU1は、映像圧縮データ及び管理情報をそれぞれ映像圧縮回路10及びRAM3から読み出し、データ転送回路11を介して、映像圧縮データをHDD12の映像データ領域に記録するとともに、管理情報をHDD12の管理情報領域に記録する。また、同ステップS19にて、CPU1は、映像圧縮回路10からデータ転送回路11に入力する映像圧縮データを映像伸張回路13にも出力する。映像伸張回路13に入力された映像圧縮データは伸張処理されて映像データに復元される。復元された映像データは、CPU1の制御により映像伸張回路13から映像信号D/A回路14に出力され、映像信号D/A回路14によりアナログ形式の映像信号に変換される。映像信号は、映像信号出力端子15に出力された後、外部の表示モニターなどにおいて表示される。映像カメラの映像は使用者によって監視される。
ステップS19の後、ステップS20にて、CPU1は、記録ボタン7の押下げを受け付けるまで、ステップS11からステップS13の処理を繰り返し、監視カメラの映像とその管理情報をHDD12に記録し続ける。ステップS20にて、CPU1は、記録ボタン7の押下げを受け付けると、ステップS21にて記録を停止して、停止状態に移行した後ステップS16に移行する。
次にデータ化け対策処理について説明する。上述したように、ステップS13にて、CPU1がRAM3上の動作プログラムの待機処理を実行して待機状態に移行すると、フラッシュメモリ2のデータ化け対策処理が開始される。その後、待機状態から、停止状態、記録処理、バックアップ処理及び再生処理などの各動作モードに移行しても、CPU1は、これらに並行してデータ化け対策処理を行う。以下、記録処理と並行してデータ化け対策処理を行う動作についてステップS22〜S27に沿って詳細に説明する。
まず、ステップS22にて、CPU1は、記録処理などの他の処理が、データ化け対策処理の実行中にフラッシュメモリ2への読み出しまたは書き込みするのを禁止する排他処理を実施する。これにより、データ化け対策処理の実行中に、他の処理によるフラッシュメモリ2への読み出しまたは書き込みが発生することがなくなることから、データ化け対策処理及び他の処理のそれぞれに予期しない影響が発生することが防止されている。なお、排他処理は、実施後、解除されるまで継続される。
ステップS23にて、CPU1は、フラッシュメモリ2のデータ化け対策処理を時間分割して行うべく、フラッシュメモリ2に記憶されたデータの一部分を読み出す。例えば、CPU1は、フラッシュメモリ2の全記憶容量32メガバイトに対して512バイトのデータを読み出す。そして、CPU1は、読み出したデータをRAM3の空き領域に書き込む。それとともに、CPU1は、当該データが読み出されたフラッシュメモリ2上のアドレスをレジスタ4に記憶し、当該データが書き込まれたRAM3上のアドレスをレジスタ5に記憶する。
ステップS24にて、CPU1は、実施の形態1のステップS2と同様、ステップS1で書き込まれたRAM3上のアドレスをレジスタ5から読み出し、ステップS23でRAM3上の当該アドレスに書き込まれたデータを読み出す。そして、CPU1は、元アドレスをレジスタ4から読み出し、RAM3から読み出したデータをフラッシュメモリ2の当該元アドレスに上書きすることにより、データ化け対策処理を行う。
ステップS25にて、CPU1は、次の512バイトのデータに対してデータ化け対策処理を行う前に、他の処理によるフラッシュメモリ2への読み出しまたは書き込みを許可すべく排他処理を解除する。それと同じタイミングで、ステップS26にて、データ化け対策処理を一定時間、例えば、2秒間停止する。それから、一定時間経過したステップS27にて、CPU1は、フラッシュメモリ2からデータを読み出すべきアドレスを512バイト進めて、フラッシュメモリ2における別のアドレスのデータに対してデータ化け対策処理を行うようにする。そして、CPU1は、再びステップS22〜S27以降の動作を行う。
このように、本実施の形態では、約2秒周期で512バイトのデータごとにフラッシュメモリ2のデータ化け対策処理を行うことにより、CPU1におけるデータ化け対策処理の負荷を分散させている。なお、フラッシュメモリ2の記憶容量が32メガバイトである場合に、データ化け対策処理を全記憶容量に対して行うためには、次の式(1)に示されるように約1.5日かかる。フラッシュメモリ2の後尾のアドレスまでデータ化け対策処理を行った場合には、先頭のアドレスから再びアドレス順にデータ化け対策処理を行う。
以上のような本実施の形態に係る監視記録装置56においても、実施の形態1と同様に、RAM3から読み出したデータをフラッシュメモリ2の元アドレスに上書きすることから、データ化け対策処理中に停電などが発生しても、データが消失するのを抑制することができる。よって、プログラムに誤りが生じたり、設定を復元できなかったりする問題が発生するのを抑制することができる。
さて、一般に、監視記録装置は、監視カメラの映像を休み無く24時間365日、常時記録するような運用で使用される場合が多い。そのため、監視記録装置は、常時記録しながら、複数の処理、例えば、HDDが故障しても情報が取得できるように情報を二重化して別のHDDに映像データを記憶するバックアップ処理や、必要な時刻の映像を検索して再生する再生処理が並行して行えるように構成されている。これら処理が破綻しないで並行して行うことができる最大数(以下、「最大並行処理数」と呼ぶこともある)はCPUの処理能力に依存するが、この最大並行処理数を保ったままデータ化け対策処理を追加して行おうとすると、高い処理能力のCPUが必要となる。しかし、CPUは処理能力が高いほどその価格は高くなる。
そこで、図4を用いて説明したCPU1の処理によれば、フラッシュメモリ2のデータ化け対策処理がCPU1の処理量を一度に占有する時間が短く、かつ、時間的に分散されていることから、CPU1に必要な処理能力が低減可能となっている。つまり、低価格なCPU1を監視記録装置に使用することが可能となっている。以下、このことについて詳細に説明する前に、対比される処理について説明する。
図5は、図4を用いて説明したCPU1の処理と対比される処理を示す図である。図5に示されるCPU1の処理は、図4に係るCPU1の処理と、データ化け対策処理の間隔が異なっている。図5に示される例では、記録処理A及びバックアップ処理Bは常時行われており、再生処理Cは、過去の映像確認が必要になって再生操作が行われた場合に開始される。そして、フラッシュメモリ2の全記憶容量(32メガバイト)に対するデータ化け対策処理Dが、短い時間になるべく集中して実施されており、当該実施が一日間隔で繰り返される。なお、一日におけるデータ化け対策処理Dの開始から終了までの処理時間は、記録処理Aなどの他の処理状況によって異なる。
図5の下側には、時間軸を拡大した拡大図が示されている。データ化け対策処理Dは、記録処理Aなどの他の処理によるフラッシュメモリ2への書き込み及び読み出しが禁止される排他処理とともに実行される。そして、CPU1は、データ化け対策処理Dを、他の処理と時分割で実行することにより、大きな時間単位で見れば、データ化け対策処理Dを他の処理と並行して行うことができるようになっている。
図5の拡大図に示されるように、同図に係るCPU1は、記録処理A1、バックアップ処理B1、再生処理C1、データ化け対策処理D1、記録処理A2、・・・を順次行う。しかし、データ化け対策処理Dが他の処理と同じ割合で行われると、他の処理に破綻が生じる可能性が多少ある。それに対し、図4に係るCPU1では、その可能性が抑制されている。
図6は、図4に係るCPU1の処理を示す図である。図6に示される処理においても記録処理A、バックアップ処理B及び再生処理Cが行われている。そして、データ化け対策処理Dが、フラッシュメモリ2の全記憶容量(32メガバイト)のうち512バイトに対して実施されており、当該実施が約2秒間隔で繰り返される。この場合に、フラッシュメモリ2の全記憶容量(32メガバイト)に対してデータ化け対策処理Dが一巡して実施されるのにかかる時間は、上述の式(1)で示したように約1.5日である。
図6の下側には、時間軸を拡大した拡大図が示されている。図6に係るデータ化け対策処理Dは、図5に係るデータ化け対策処理Dと同様に、記録処理Aなどの他の処理によるフラッシュメモリ2への書き込み及び読み出しが禁止される排他処理とともに実行される。そして、CPU1は、データ化け対策処理Dを、他の処理と時分割で実行することにより、大きな時間単位で見れば、データ化け対策処理Dを他の処理と並行して行うことができるようになっている。
この図6に係るデータ化け対策処理Dが、図5に係るデータ化け対策処理Dと異なる点は、512バイトのデータに対するデータ化け対策処理が例えば約2ミリ秒で終了すると、約2秒経過するまで、次の512バイトのデータに対するデータ化け対策処理を停止する点である。つまり、図6に示される処理においては、図5に示される処理に比べて、データ化け対策処理Dの単位時間当たりの割合が、他の処理(記録処理A、バックアップ処理B、再生処理C)よりも低くなっていることから、他の処理を前倒しで行うことができる。例えば、図5に示される処理では、データ化け対策処理DがD1,D2,D3と三回行われるのに対し、図6に示される処理では、データ化け対策処理DがD11の一回だけ行われる。その結果、図6に示される処理では、図5に示される処理よりも、記録処理A4、バックアップ処理B4、再生処理C4を早いタイミングで行うことができる。したがって、CPU1として処理能力が低いものを用いても、最大並行処理数を保ったままデータ化け対策処理を行うことができる。よって、監視記録装置56のCPU1として低廉なCPUを使用することができる。
以上のような監視記録装置56によれば、実施の形態1に係るデータ記憶装置51と同様の効果を得ることができる。また、データ化け対策処理を、記録処理、バックアップ処理、再生処理などの他の処理と時分割で実行していることから、データ化け対策処理を他の処理と並行して行うことができる。
なお、フラッシュメモリ2の電荷が減少してデータ化けが生じる期間は、フラッシュメモリ2の酸化膜の劣化特性や製造状の欠陥の状態等に起因することから、個々に差異があるものの、数ヶ月以上の期間でデータ化けが発生する場合が多い。したがって、同じアドレスにデータ化け対策処理が行われる周期(以下、「一巡の繰り返し周期」と呼ぶ)は、データ化けが生じる期間(数ヶ月以上)よりも短いことが必要である。また、フラッシュメモリ2の書き換え保証回数に至る期間が、フラッシュメモリ2を搭載する搭載装置の製品寿命(数十年程度)よりも長くなることが望ましい。
ここで、図6に示される処理において、一巡の繰り返し周期が、一度に処理するデータのサイズ、繰り返し間隔、及び、フラッシュメモリ2の全記憶容量のサイズからが決まるものとなっている。例えば、一度に処理するデータのサイズ、繰り返し間隔及び全記憶容量のサイズが、それぞれ512バイト、2秒間隔及び32メガバイトである場合には、一巡の繰り返し周期は上述の式(1)で示した約1.5日となる。この場合には、一巡の繰返し周期(1.5日)を、データ化けが生じる期間(数ヶ月以上)よりも十分短くすることができる。そして、書き換え保証回数が10万回である場合には、保証回数に至る期間は400年となることから、搭載装置の製品寿命(数十年程度)よりも十分長くすることができる。
<実施の形態3>
図3は、本発明の実施の形態3に係る監視記録装置の構成は、実施の形態2に係る監視記録装置56と同じである。以下、本実施の形態に係る監視記録装置の構成において、実施の形態2と同一の部分には同一符号を付与し、以下においては実施の形態2と異なる部分を中心に説明する。
本実施の形態に係る監視記録装置56は、実施の形態2に係る監視記録装置56と同様、データ化け対策処理Dを他の処理と時分割で実行する。ただし、本実施の形態に係る監視記録装置56は、実施の形態2における排他処理の実施ステップS22及び解除ステップS25等を行う代わりに、割り込み禁止処理を行う。そして、データ化け対策処理において一回に処理するデータのサイズを規定して、データ化け対策処理の時間をシステム時間のカウント周期よりも短くすることにより、システム時間の遅延を防止することが可能となっている。以下、本実施の形態に係る監視記録装置56について説明する。
本実施の形態に係るCPU1では、ある処理を実行中でも必要に応じて別の処理を行う割り込み処理が可能となっている。CPU1は、割り込みが入力された場合に、実行中の処理を中断して、割り込み対象の処理を実施した後、中断した元の処理を再開する。ただし、CPU1において割り込み禁止処理が行われている場合には、当該割り込み処理は禁止される。
図7は、CPU1の内部で処理される時計動作とフラッシュメモリ2のデータ化け対策処理時間の関係を示す図である。この図を用いて、データ化け対策処理として要求される時間について説明する。図7に示すように、タイマー割り込み(システムの定周期割り込み)が実施時間間隔10ミリ秒毎に発生している。処理中のCPU1のシステム時間は、このタイマー割り込みが発生するごとに、ソフトウェア的にカウントされる。
本実施の形態では、CPU1は、データ化け対策処理を実施する間、タイマー割り込みの割り込み処理を禁止する割り込み禁止処理を行う。したがって、CPU1は、タイマー割り込みを行うべきタイミングであっても、データ化け対策処理を行っている場合には、当該タイマー割り込みを行わずに、そのままデータ化け対策処理を行う。そして、CPU1は、当該データ化け対策処理が終了した直後に、割り込み処理できなかったタイマー割り込みを行う。
図8は、フラッシュメモリ2のデータ化け対策処理の一回の処理時間が12ミリ秒の場合を示す図である。データ化け対策処理D21が、連続する二つのタイマー割り込みに重なるように発生すると、前の割り込み処理の発生フラグは記憶されるが、後の割り込み処理の発生フラグは既に記憶されている発生フラグに上書きされることになる。そうすると、二つのタイマー割り込みが発生していたにもかかわらず、一方のタイマー割り込みが消滅することとなることから、割り込み禁止処理期間が終了した後には、他方のタイマー割り込みだけが処理されることになる。その結果、例えば、図8に示されるように、システム時間は、本来「0時0分0.05秒」とカウントされるべきであるのにも関わらず、「0時0分0.04秒」とカウントされ、0.01秒の時間の遅れが発生してしまうことになる。
そこで、本実施の形態では、システム時間が遅延しないようにすべく、フラッシュメモリ2のデータ化け対策処理の一回の処理時間は、タイマー割り込みの周期であるシステム時間のカウント周期よりも短く設定されている。処理時間は、CPU1、フラッシュメモリ2及びRAM3の動作仕様から処理時間を加算することにより算出できる。あるいは、処理時間の実機計測によって処理時間を設定する。
図9は、本実施の形態に係るフラッシュメモリ2のデータ化け対策処理が行われるタイミングを示す図である。図に示されるように、フラッシュメモリ2のデータ化け対策処理の一回の処理時間が2ミリ秒となっており、タイマー割り込みの周期であるシステム時間のカウント周期(10ミリ秒)よりも短く設定されている。この場合に、データ化け対策処理D31がタイマー割り込みに重なっても、一つのタイマー割り込みとしか重ならないため、後の割り込み処理の発生フラグは、前の割り込み処理の発生フラグに上書きされることなく、それぞれが記憶される。
そうすると、割り込み禁止処理期間が終了した後には、両方のタイマー割り込みが処理されることになる。その結果、例えば、図9に示されるように、「0時0分0.04秒」のカウントが本来のタイミングから2ミリ秒の範囲で遅れるというように、重なった直後のシステム時間のカウントは多少遅れるものの、その遅れは後のシステム時間のカウント(図9の例では、「0.05秒」)において修正される。したがって、システム時間が正しくカウントされることになる。
以上のような監視記録装置56によれば、実施の形態1に係るデータ記憶装置51と同様の効果を得ることができる。また、データ化け対策処理の一回の処理時間が、タイマー割り込みの周期であるシステム時間のカウント周期よりも短く設定されていることから、データ化け対策処理を行っても、システム時間を正しくカウントすることができる。