電子制御装置
【課題】メモリ使用量を抑えることができる高信頼なメモリを備えた電子制御装置を提供する。
【解決手段】本発明に係る電子制御装置は、データ誤りを検出した第1記憶領域とは異なる第2記憶領域に、誤り訂正後のデータを保存し、第2記憶領域上のデータを制御処理のために用いるとともに、第1記憶領域上のデータも制御処理のために継続して用いる。
【解決手段】本発明に係る電子制御装置は、データ誤りを検出した第1記憶領域とは異なる第2記憶領域に、誤り訂正後のデータを保存し、第2記憶領域上のデータを制御処理のために用いるとともに、第1記憶領域上のデータも制御処理のために継続して用いる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機器の動作を電子的に制御する電子制御装置に関するものである。
【背景技術】
【0002】
近年、自動車、建設機械、昇降機等の機器は、入力回路、マイクロコントローラ、出力回路、および電源回路から構成された電子制御装置を用いて電子的に制御することが一般的になっている。電子制御装置は、各種センサからの入力信号を受け取り、マイクロコントローラが、メモリに内蔵されたプログラムやデータに基づき制御演算を実施し、機器が最適な動作状態になるように、出力回路を駆動して各種アクチュエータやスイッチ等を制御する装置である。
【0003】
最近はメモリの微細化が進み、製造時の不具合、ノイズ、放射線等の影響により、メモリに内蔵されたプログラムやデータの値が意図せず変化する故障が発生する可能性が増大している。電子制御装置は当該プログラムやデータに基づき制御演算を実施するため、メモリが故障すると、機器を安全に制御できなくなるおそれがある。
【0004】
下記特許文献1では、上記のような不具合を回避するため、制御に使用するデータを保存する通常のデータ領域とは別に、誤り検出用冗長データ領域を備え、データ領域のデータを冗長データ領域のデータに基づき検査する。これにより、データ領域のデータの誤りを検出することができる。誤りが検出された場合は、誤りが生じているデータに代えて、あらかじめ定められた固定データを出力する。
【0005】
下記特許文献2では、公知の誤り検出/訂正(ECC:Error Checking and Correction)機能を備えるメモリにおいて、誤りが検出されたアドレス上のデータを、誤り訂正した上で当該メモリの空き領域の別アドレスに保存する方法が開示されている。誤りが検出された記憶領域は、それ以後は使用しない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2010−102686号公報
【特許文献2】特表2009−506445号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
近年は電子制御化の進展により、機器の安全な制御のために信頼性を保証すべきデータが増える傾向にある。したがって、上記特許文献1に記載されている技術のように、通常のデータ領域とは別に冗長データ領域を設ける方式では、メモリ使用量が増えてしまうという課題がある。
【0008】
一方、上記特許文献2に記載されている方式では、全てのメモリセルに故障が発生するわけではないため、特許文献1のように全データを冗長化して保存するよりは、メモリ使用量を少なくすることができる。ただし上記特許文献2では、故障が一度発生すると当該故障が発生したメモリセルを使用不可とし、さらには故障率に応じた一定量の空き領域をあらかじめ確保しておく必要がある。メモリ故障では、永続的なハードウェア故障は少なく、ノイズや放射線等による一時的な故障が大半を占めることを考慮すると、このような方式は、メモリの利用効率の観点で改善の余地があると考えられる。
【0009】
本発明は、以上のような課題に鑑みてなされたものであり、メモリ使用量を抑えることができる高信頼なメモリを備えた電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係る電子制御装置は、データ誤りを検出した第1記憶領域とは異なる第2記憶領域に、誤り訂正後のデータを保存し、第2記憶領域上のデータを制御処理のために用いるとともに、第1記憶領域上のデータも制御処理のために継続して用いる。
【発明の効果】
【0011】
本発明に係る電子制御装置によれば、データ誤りを検出したときに誤り訂正後のデータを第2記憶領域へ格納するので、誤り訂正後のデータを格納するための記憶領域をあらかじめ確保しておく必要はない。また、データ誤りを検出した第1記憶領域も継続して使用するので、データ誤りの原因が上述のように一時的なものであった場合には、誤り発生率が低下した時点で第2記憶領域上の保存データを削除するなどして、記憶領域の使用状況をデータ誤り発生前の状態に復帰させることができる。したがって、メモリの信頼性を確保しつつ、メモリ使用量を抑えることができる。
【図面の簡単な説明】
【0012】
【図1】実施形態1に係る電子制御装置1の機能ブロック図である。
【図2】ROM11が格納するプログラムおよびデータの構成を示す図である。
【図3】メモリ故障が発生する前後のROM11内のデータ配置を示す図である。
【図4】電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。
【図5】図4の処理フローによって第2記憶領域A2に訂正後のデータが保存した後、電子制御装置1がそのデータを使用する際の処理フローを示す図である。
【図6】実施形態2に係る電子制御装置1が備えるROM11格納するプログラムおよびデータの構成を示す図である。
【図7】実施形態2において、メモリ故障が発生する前後のROM11内のデータ配置を示す図である。
【図8】実施形態2において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。
【図9】実施形態3において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。
【発明を実施するための形態】
【0013】
<実施の形態1>
図1は、本発明の実施形態1に係る電子制御装置1の機能ブロック図である。電子制御装置1は、機器を電子的に制御する装置であり、マイクロコントローラ2、入力回路3、出力回路4、電源回路5を備える。
【0014】
マイクロコントローラ2は、CPU(Central Processing Unit)10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、周辺バスコントローラ13、A/D変換器14、タイマ15、通信インタフェース(I/F)16、発振器17を備える。CPU10、ROM11、RAM12、周辺バスコントローラ13は、内部バス18に接続されている。A/D変換器14、タイマ15、通信インタフェース(I/F)16、発振器17、周辺バスコントローラ13は、周辺バス19に接続されている。
【0015】
CPU10は、入力回路3を介して各種センサや他の電子制御装置からの入力信号を受け取り、A/D変換器14、タイマ15、通信インタフェース(I/F)16などの機能を利用して、ROM11やRAM12に格納されているプログラムを実行し、これらに格納されているデータを用いて制御処理を実施する。また、制御処理の一貫として、機器が最適に動作するように、出力回路4を駆動して各種アクチュエータやスイッチ等を制御したり、通信インタフェース16を介して他の電子制御装置に制御データを送信したりする場合もある。
【0016】
ROM11は、CPU10が実行するプログラムおよび同プログラム中で用いられるデータを格納する。ROM11が格納するデータ等を書き換える必要がある場合は、フラッシュROMなどの書き換え可能なROMを用いる。RAM12は、CPU10がプログラムを実行する過程で用いるデータを一時的に格納する。例えばCPU10は、ROM11が格納しているプログラムやデータをRAM12上に展開して使用する。図1では、ROM11とRAM12はマイクロコントローラ2に内蔵されているが、これらはマイクロコントローラ2の外部に設けられていてもよい。
【0017】
周辺バスコントローラ13、A/D変換器14、タイマ15、通信インタフェース(I/F)16、発振器17は、電子制御装置が一般的に備えているものである。出力回路4は、電子制御装置1から制御信号を受け取り、電子制御装置1が制御する機器に対して駆動信号を出力する。
【0018】
図2は、ROM11が格納するプログラムおよびデータの構成を示す図である。ROM11は、データ保存部21、誤り検出/訂正部22、データ保存/消去実行部23、アドレス管理部24を格納する。ROM11が格納するデータ等をRAM12上に展開する場合は、RAM12も図2と同様のデータ等を格納する。
【0019】
データ保存部21は、複数のデータ記憶領域、すなわちメモリセルを備えている。データ保存部21は、CPU10が制御処理を実施する際に用いるデータを格納する。データ保存部21は、後述する第1記憶領域A1と第2記憶領域A2を有する。
【0020】
誤り検出/訂正部22は、データ保存部21が格納するデータに付加されている誤り検出/訂正コードを用いて、当該データにデータ誤りが生じているか否かを検査する。誤りが生じており、かつ誤りが生じているビット数が誤り検出/訂正コードによって訂正できる範囲内の場合は、当該誤りを訂正する。この誤り検出/訂正機能は公知であるため、詳細な説明は割愛する。
【0021】
データ保存/消去実行部23は、データ保存部21内の第1記憶領域A1においてデータ誤りを検出した旨の通知を誤り検出/訂正部22から受けると、第1記憶領域A1に格納されているデータを第2記憶領域A2へ保存する。また、所定条件の下で、第2記憶領域A2に保存されているデータを消去する。これらの処理フローについては後述する。
【0022】
アドレス管理部24は、データ保存/消去実行部23から、第2記憶領域A2のアドレス、第2記憶領域A2に保存されているデータを消去した旨の通知などを受け取り、第1記憶領域A1が格納しているデータのアドレスと第2記憶領域A2が格納している対応するデータのアドレスとの対応関係を管理する。CPU10は、これらデータの対応関係をアドレス管理部24に問い合わせることにより、後述する処理フローによってデータ配置が変わったことを意識せずに、これらデータにアクセスすることができる。
【0023】
誤り検出/訂正部22、データ保存/消去実行部23、アドレス管理部24は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、これらの処理を記述したソフトウェアをCPU10が実行することによって実現することもできる。これら機能部をソフトウェアとして実装した場合は、図2に示すようにこれら機能部をメモリ上に格納することができる。
【0024】
図3は、メモリ故障が発生する前後のROM11内のデータ配置を示す図である。故障発生前の時点では、データ保存部21のアドレス0、アドレス1、・・・にそれぞれデータ0、データ1、・・・が格納されており、アドレス1(=第1記憶領域A1)のメモリセルに故障が発生したとする。
【0025】
誤り検出/訂正部22は、データ1のデータ誤りを検出し、誤りを訂正した後、正しいデータ1をアドレス1に保存する。アドレス1のメモリセルに故障が発生したということは、当該メモリセルは脆弱性が増している可能性があるので、データ保存/消去実行部23は、誤り訂正後のデータ1を、空き領域であるアドレスn(第2記憶領域A2)にも保存する。詳細処理は図4で改めて説明する。
【0026】
第2記憶領域A2は、第1記憶領域A1を有するデータ保存部21内の空き領域であることを想定しているが、これに代えて、別のメモリ上の空き領域、周辺モジュール内のレジスタ、電子制御装置1が実装している別のマイクロコンピュータが備えるメモリ上の空き領域、などを用いることもできる。また、第2記憶領域A2のアドレスは、あらかじめ設計時に静的に定めておいてもよいし、第2記憶領域A2が必要になった時点で動的に探索して定めてもよい。
【0027】
ROM11がフラッシュメモリで構成されている場合は、第1記憶領域A1と第2記憶領域A2は、データ書き込み/データ消去の単位であるブロックに相当する。あるブロックのいずれかのメモリセルに故障が発生した時は、当該メモリセルのデータ誤りを訂正した後、そのブロックごと第2記憶領域A2に保存する。
【0028】
なお、データ誤りが生じた第1記憶領域A1の近傍にあるメモリセルにも同様のデータ誤りが生じている可能性があるため、第2記憶領域A2は、ROM11上のアドレスができる限り第1記憶領域A1から遠いものを選ぶことが望ましいと考えられる。
【0029】
図4は、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。以下、図4の各ステップについて説明する。
【0030】
(図4:ステップS10)
CPU10は、データ保存部21が格納しているデータを読み出す。このデータが格納されている記憶領域は、図3で説明した第1記憶領域A1に相当する。誤り検出/訂正部22は、CPU10が読み出したデータにデータ誤りが生じているか否かを検査する。誤りがない場合はステップS12へ進み、誤りが生じている場合はステップS11へ進む。
【0031】
(図4:ステップS10:補足)
誤りのあるビット数が誤り検出/訂正部22によって訂正できるビット数範囲を超えている場合は、S11以降の処理を実施しない。この場合、誤り検出/訂正部22は、機器を安全に制御できるようにあらかじめ設定されているデフォルト値を、CPU10に出力する。
【0032】
(図4:ステップS11)
誤り検出/訂正部22は、S10で検出したデータ誤りを訂正し、訂正したデータをCPU10に出力する。CPU10は、そのデータを用いてひとまず制御処理を継続することができる。
【0033】
(図4:ステップS12)
誤り検出/訂正部22は、データ誤りを検査したデータを、そのままCPU10に出力する。CPU10は、そのデータを用いて制御処理を継続する。本ステップの後は、本処理フローを終了する。
【0034】
(図4:ステップS13)
データ保存/消去実行部23は、誤り検出/訂正部22が誤り訂正したデータを第2記憶領域A2に保存する。
【0035】
(図4:ステップS14)
データ保存/消去実行部23は、ステップS13でデータを保存した第2記憶領域A2のアドレスを、アドレス管理部24に通知する。アドレス管理部24は、本処理フローにおける第1記憶領域A1と第2記憶領域A2の対応関係を管理する。すなわち、第1記憶領域A1に格納されているデータと第2記憶領域A2に格納されているデータは、互いに対応する同じデータである旨を管理する。
【0036】
図5は、図4の処理フローによって第2記憶領域A2に訂正後のデータが保存した後、電子制御装置1がそのデータを使用する際の処理フローを示す図である。以下、図5の各ステップについて説明する。
【0037】
(図5:ステップS18)
CPU10は、データ保存部21が格納しているデータを読み出す際に、当該記憶領域上(図3で説明した第1記憶領域A1に相当)のデータ誤りを訂正して生成した対応するデータを第2記憶領域A2に保存しているか否かを、アドレス管理部24に問い合わせて確認する。第2記憶領域A2に対応するデータが保存されている場合はステップS19へ進み、保存されていない場合は図4で説明したステップS10〜S14に進む。
【0038】
(図5:ステップS19)
CPU10は、第1記憶領域A1上のデータと第2記憶領域A2上のデータが一致するか否かを判定する。両者が一致する場合はステップS20へ進み、一致しない場合はステップS23へ進む。
【0039】
(図5:ステップS19:補足)
本ステップは、第1記憶領域A1のメモリセルにおいて既にメモリ故障が発生しているため、当該メモリセルが脆弱になっている可能性を考慮したものである。誤りのあるビット数が誤り検出/訂正部22によって検出できる範囲を超えている場合は、たとえデータ誤りが生じていたとしても、これを検出できない。第1記憶領域A1に格納されているデータと第2記憶領域A2に格納されているデータを互いに比較することにより、誤り検出機能によっても検出することのできないデータ誤りが生じていることを発見し、データの信頼性を高めることができる。
【0040】
(図5:ステップS20)
CPU10は、第1記憶領域A1上のデータを制御処理内で用いる。
【0041】
(図5:ステップS21)
CPU10は、第1記憶領域A1上のデータに、あらかじめ定めた所定時間以上データ誤りが検出されていないか否かを判定する。所定時間以上誤りが検出されていない場合はステップS22へ進み、データ誤りが最後に検出されてから上記所定時間が経過していない場合は本処理フローを終了する。
【0042】
(図5:ステップS22)
CPU10は、ステップS21において所定時間以上誤りが検出されていないと判断した場合は、当該第1記憶領域A1のメモリセルが再度正常に使用することができる状態になったと判断する。データ保存/消去実行部23は、その旨の通知をCPU10から受け取り、第2記憶領域A2に保存した誤り訂正後のデータを消去する。
【0043】
(図5:ステップS22:補足)
本ステップでは、データ誤りを最後に検出してから所定時間以上経過しているか否かに代えて、例えば所定時間内に発生するデータ誤りの頻度が閾値を下回った時点で、第2記憶領域A2に保存した誤り訂正後のデータを消去するようにしてもよい。
【0044】
(図5:ステップS23)
誤り検出/訂正部22は、第2記憶領域A2上のデータにデータ誤りが検出されていないことを確認したうえで、第2記憶領域A2上のデータをCPU10に出力する。第2記憶領域A2上のデータにデータ誤りが検出された場合は、ステップ10と同様に、機器を安全に制御できるようにあらかじめ設定されたデフォルト値をCPU10に出力する。ただし、第1記憶領域A1のメモリセルと第2記憶領域A2のメモリセルにおいて同時にビット誤りが発生する確率は、極めて小さいと考えられる。
【0045】
<実施の形態1:まとめ>
以上のように、本実施形態1に係る電子制御装置1は、第1記憶領域A1上でデータ誤りが発生したときは、誤り訂正したデータを第2記憶領域A2に保存し、アドレス管理部24が両者の対応関係を管理している下で、両データを併用する。誤り訂正したデータを第2記憶領域A2に保存することにより、データの信頼性を確保することができる。また、データ誤りが発生した時点で第2記憶領域A2に訂正データを格納するので、訂正データを格納するための記憶領域をあらかじめ確保する必要はなく、メモリ使用量を抑えることができる。
【0046】
また、本実施形態1に係る電子制御装置1は、第1記憶領域A1が格納しているデータと第2記憶領域A2が格納しているデータを比較し、両者が一致するか否かを検証する。これにより、誤り検出機能によって検出することができないデータ誤りが生じている場合でも、正しいデータを使用することができる。
【0047】
また、本実施形態1に係る電子制御装置1は、第1記憶領域A1が格納しているデータと第2記憶領域A2が格納しているデータが一致しないときは、より信頼性が高いと思われる第2記憶領域A2上のデータを用いる。これにより、第1記憶領域A1上のデータを誤り訂正してもなおデータ誤りが生じている場合でも、正しいデータを用いて制御処理を実施することができる。
【0048】
<実施の形態2>
図6は、本発明の実施形態2に係る電子制御装置1が備えるROM11が格納するプログラムおよびデータの構成を示す図である。本実施形態2におけるROM11は、実施形態1で説明したデータ保存/消去実行部23に代えて、データ入替実行部25を格納する。電子制御装置1が備えるその他の機能部については実施形態1と同様である。RAM12についても同様である。
【0049】
データ入替実行部25は、誤り検出/訂正部22からデータ誤りを検出した旨の通知を受け取ると、第1記憶領域A1に格納されたデータと第2記憶領域A2に格納されたデータを入れ替える。すなわち、本実施形態2においては、第2記憶領域A2は空き領域である必要はない。具体的な処理フローについては後述する。本実施形態2における「データ保存」は、データ入替実行部25が相当する。
【0050】
データ入替実行部25は、その機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、その処理を記述したソフトウェアをCPU10が実行することによって実現することもできる。データ入替実行部25をソフトウェアとして実装した場合は、図2に示すようにメモリ上に格納することができる。
【0051】
アドレス管理部24は、データ入替実行部25から、第1記憶領域A1内のデータと第2記憶領域A2内のデータを入れ替えた旨の通知を受け取り、第1記憶領域A1が格納しているデータのアドレスと第2記憶領域A2が格納している対応するデータのアドレスとの対応関係を管理する。CPU10は、これらデータの対応関係をアドレス管理部24に問い合わせることにより、後述する処理フローによってデータ配置が変わったことを意識せずに、これらデータにアクセスすることができる。
【0052】
図7は、本実施形態2において、メモリ故障が発生する前後のROM11内のデータ配置を示す図である。本実施形態2では、データ保存部21が格納する各データには、そのデータの重要度を示す重要度情報が付加されている。ここでは、データの重要度は4が最も高く、3、2、1の順で低くなっていくものとする。
【0053】
アドレス1(第1記憶領域A1)のメモリセルに故障が発生したとする。誤り検出/訂正部22は、データ1(重要度4)のデータ誤りを検出し、誤りを訂正した後、正しいデータ1をアドレス1に保存する。
【0054】
アドレス1のメモリセルに故障が発生したということは、当該メモリセルは脆弱性が増している可能性があるので、データ入替実行部25は、誤り訂正後のデータ1を、重要度が当該データより低いデータn(重要度1)が保存されているアドレスn(第2記憶領域A2)に保存する。データnは重要度が相対的に低いため、データ1が保存されていたアドレス1(第1記憶領域A1)に保存する。以上の処理により、第1記憶領域A1に格納されていたデータと第2記憶領域A2に格納されていたデータが入れ替えられる。
【0055】
なお、実施形態1と同様に、第2記憶領域A2は、第1記憶領域A1からなるべく物理的に離れた領域であることが望ましい。さらには、その中で重要度が相対的に低いデータを格納している記憶領域であることが望ましい。第2記憶領域A2の候補が複数存在する場合には、格納しているデータの重要度がより低いものを優先的に選択するとよい。重要度が同じ第2記憶領域A2の候補が複数存在する場合は、第1記憶領域A1からの距離ができる限り離れているものを優先的に選択するとよい。
【0056】
ROM11がフラッシュメモリで構成されている場合は、第1記憶領域A1と第2記憶領域A2は、データ書き込み/データ消去の単位であるブロックに相当する。あるブロックのいずれかのメモリセルに故障が発生した時は、当該メモリセルのデータ誤りを訂正した後、そのブロックと、当該ブロックより相対的に重要度が低いデータが保存されているブロックとを入れ替える。
【0057】
図8は、本実施形態2において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。以下、図8の各ステップについて説明する。
【0058】
(図8:ステップS10〜S12)
これらのステップは、実施形態1の図4で説明したステップS10〜S12と同様である。ただしステップS11の次は、ステップS13に代えてステップS25〜S27を実行する。
【0059】
(図8:ステップS25)
データ入替実行部25は、ステップS10でCPU10が読み出したデータの重要度を判定する。重要度が最低レベルである場合は、当該データと記憶領域を入れ替えるべきデータが存在しないため、そのまま本処理を終了する。重要度が最低レベルでない場合は、ステップS26へ進む。
【0060】
(図8:ステップS26)
データ入替実行部25は、ステップS10でCPU10が読み出したデータが保存されている第1記憶領域A1から物理的に遠い順に、当該データよりも重要度の低いデータを検索する。
【0061】
(図8:ステップS27)
データ入替実行部25は、ステップS26の検索によって発見した第2記憶領域A2内のデータを、第1記憶領域A1内のデータと入れ替える。
【0062】
(図8:ステップS27:補足)
本実施形態2では、重要度が相対的に低いデータは、脆弱性が増している可能性のあるメモリセル内に配置されることになる。誤り検出/訂正部22によって誤り訂正することができる範囲以上の多ビット誤りが発生した場合は、ステップS10と同様に、機器を安全に制御できるようにあらかじめ設定されているデフォルト値を、CPU10に出力すればよい。
【0063】
(図8:ステップS14)
データ入替実行部25は、ステップS26で入れ替えた各データの保存先アドレスをアドレス管理部24に通知する。アドレス管理部24は、本処理フローにおける第1記憶領域A1と第2記憶領域A2の対応関係を管理する。すなわち、第1記憶領域A1に格納されているデータと第2記憶領域A2に格納されているデータが入れ替わっている旨を管理する。
【0064】
<実施の形態2:まとめ>
以上のように、本実施形態2に係る電子制御装置1は、データ誤りが発生した第1記憶領域A1と、当該データよりも重要度の低い第2記憶領域A2とを入れ替える。これにより、第2記憶領域A2を空き領域のなかから選ぶ必要がなくなるので、訂正データを保存するための空き領域を冗長的に確保する必要がなくなり、メモリ使用量をさらに抑えることができる。
【0065】
<実施の形態3>
本発明の実施形態3では、第1記憶領域A1においてデータ誤りが検出されたとき、即座に第2記憶領域A2へ訂正データを保存するのではなく、データ誤りがある程度継続した時点で訂正データを保存する動作例を説明する。電子制御装置1の構成は実施形態1と同様であるため、以下では差異点を中心に説明する。
【0066】
図9は、本実施形態3において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。以下、図9の各ステップについて説明する。
【0067】
(図9:ステップS10〜S12)
これらのステップは、実施形態1の図4で説明したステップS10〜S12と同様である。ただし、ステップS11とステップS13の間でステップS15〜S16を実行し、ステップS12の次にステップS17を実行する。
【0068】
(図9:ステップS15)
誤り検出/訂正部22は、内部的に保持する故障カウンタの値を増加させる。
【0069】
(図9:ステップS16)
誤り検出/訂正部22は、故障カウンタ値があらかじめ定めた閾値を超えたか否かを判断する。閾値を超えている場合はステップS13へ進む。閾値を超えていない場合は、誤り訂正したデータを第2記憶領域A1に保存することなく、本処理を終了する。第1記憶領域A1からデータを読み出す毎に本ステップを実施することにより、データ誤りが一時的な原因によって生じている場合には、即座に第2記憶領域A2へデータを保存するのではなく、継続してデータ誤りが生じるか否かをいったん様子見することができる。
【0070】
(図9:ステップS17)
誤り検出/訂正部22は、ステップS10においてデータ誤りが検出されず、故障カウンタ値が1以上である場合は、故障カウンタ値を減少させる。第1記憶領域A1からデータを読み出す毎に本ステップを実施することにより、データ誤りが一時的な原因によって生じている場合には、故障カウンタが最終的には0になるので、それ以後は第1記憶領域A1にデータ誤りが生じていないものとして取り扱うことができる。
【0071】
<実施の形態3:まとめ>
以上のように、本実施形態3に係る電子制御装置1は、CPU10が第1記憶領域A1からデータを読み出す時点でデータ誤りが生じているか否かを判定し、データ誤りが発生した回数をカウントする。カウンタ値が閾値を超えている場合は第2記憶領域A2に訂正データを保存し、そうでなければ保存しない。これにより、一時的なメモリ故障によってデータ誤りが発生したデータを、不要に第2記憶領域A2へ保存することを防止し、処理負荷やメモリ容量の浪費を抑えることができる。
【0072】
<実施の形態4>
実施形態1〜3は、適宜組み合わせて用いることもできる。また、構成要素の一部を変形することもできる。例えば以下のような組み合わせ例や変形例が考えられる。
【0073】
(実施形態の組み合わせ:例1)
実施形態2で説明した、第1記憶領域A1と第2記憶領域A2を入れ替える処理を、実施形態3で説明した故障カウンタが閾値を超えた時点で実行する。
【0074】
(実施形態の組み合わせ:例2)
実施形態2で説明したデータの重要度情報を実施形態1に導入し、誤り訂正後のデータを第2記憶領域A2に冗長的に保存するか否かを、誤り訂正後のデータの重要度に応じて判定する。
【0075】
(実施形態の変形例)
実施形態2で故障カウンタの閾値や、実施形態1のステップS21で説明した所定時間を、データの重要度に応じて可変にする。
【0076】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【0077】
また、上記各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。各機能を実現するプログラム、テーブルなどの情報は、メモリやハードディスクなどの記憶装置、ICカード、DVDなどの記憶媒体に格納することができる。
【符号の説明】
【0078】
1:電子制御装置、2:マイクロコントローラ、3:入力回路、4:出力回路、5:電源回路、10:CPU、11:ROM、12:RAM、13:周辺バスコントローラ、14:A/D変換器、15:タイマ、16:通信インタフェース、17:発振器、18:内部バス、19:周辺バス、21:データ保存部、22:誤り検出/訂正部、23:データ保存/消去実行部、24:アドレス管理部、25:データ入替実行部、A1:第1記憶領域、A2:第2記憶領域。
【技術分野】
【0001】
本発明は、機器の動作を電子的に制御する電子制御装置に関するものである。
【背景技術】
【0002】
近年、自動車、建設機械、昇降機等の機器は、入力回路、マイクロコントローラ、出力回路、および電源回路から構成された電子制御装置を用いて電子的に制御することが一般的になっている。電子制御装置は、各種センサからの入力信号を受け取り、マイクロコントローラが、メモリに内蔵されたプログラムやデータに基づき制御演算を実施し、機器が最適な動作状態になるように、出力回路を駆動して各種アクチュエータやスイッチ等を制御する装置である。
【0003】
最近はメモリの微細化が進み、製造時の不具合、ノイズ、放射線等の影響により、メモリに内蔵されたプログラムやデータの値が意図せず変化する故障が発生する可能性が増大している。電子制御装置は当該プログラムやデータに基づき制御演算を実施するため、メモリが故障すると、機器を安全に制御できなくなるおそれがある。
【0004】
下記特許文献1では、上記のような不具合を回避するため、制御に使用するデータを保存する通常のデータ領域とは別に、誤り検出用冗長データ領域を備え、データ領域のデータを冗長データ領域のデータに基づき検査する。これにより、データ領域のデータの誤りを検出することができる。誤りが検出された場合は、誤りが生じているデータに代えて、あらかじめ定められた固定データを出力する。
【0005】
下記特許文献2では、公知の誤り検出/訂正(ECC:Error Checking and Correction)機能を備えるメモリにおいて、誤りが検出されたアドレス上のデータを、誤り訂正した上で当該メモリの空き領域の別アドレスに保存する方法が開示されている。誤りが検出された記憶領域は、それ以後は使用しない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2010−102686号公報
【特許文献2】特表2009−506445号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
近年は電子制御化の進展により、機器の安全な制御のために信頼性を保証すべきデータが増える傾向にある。したがって、上記特許文献1に記載されている技術のように、通常のデータ領域とは別に冗長データ領域を設ける方式では、メモリ使用量が増えてしまうという課題がある。
【0008】
一方、上記特許文献2に記載されている方式では、全てのメモリセルに故障が発生するわけではないため、特許文献1のように全データを冗長化して保存するよりは、メモリ使用量を少なくすることができる。ただし上記特許文献2では、故障が一度発生すると当該故障が発生したメモリセルを使用不可とし、さらには故障率に応じた一定量の空き領域をあらかじめ確保しておく必要がある。メモリ故障では、永続的なハードウェア故障は少なく、ノイズや放射線等による一時的な故障が大半を占めることを考慮すると、このような方式は、メモリの利用効率の観点で改善の余地があると考えられる。
【0009】
本発明は、以上のような課題に鑑みてなされたものであり、メモリ使用量を抑えることができる高信頼なメモリを備えた電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係る電子制御装置は、データ誤りを検出した第1記憶領域とは異なる第2記憶領域に、誤り訂正後のデータを保存し、第2記憶領域上のデータを制御処理のために用いるとともに、第1記憶領域上のデータも制御処理のために継続して用いる。
【発明の効果】
【0011】
本発明に係る電子制御装置によれば、データ誤りを検出したときに誤り訂正後のデータを第2記憶領域へ格納するので、誤り訂正後のデータを格納するための記憶領域をあらかじめ確保しておく必要はない。また、データ誤りを検出した第1記憶領域も継続して使用するので、データ誤りの原因が上述のように一時的なものであった場合には、誤り発生率が低下した時点で第2記憶領域上の保存データを削除するなどして、記憶領域の使用状況をデータ誤り発生前の状態に復帰させることができる。したがって、メモリの信頼性を確保しつつ、メモリ使用量を抑えることができる。
【図面の簡単な説明】
【0012】
【図1】実施形態1に係る電子制御装置1の機能ブロック図である。
【図2】ROM11が格納するプログラムおよびデータの構成を示す図である。
【図3】メモリ故障が発生する前後のROM11内のデータ配置を示す図である。
【図4】電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。
【図5】図4の処理フローによって第2記憶領域A2に訂正後のデータが保存した後、電子制御装置1がそのデータを使用する際の処理フローを示す図である。
【図6】実施形態2に係る電子制御装置1が備えるROM11格納するプログラムおよびデータの構成を示す図である。
【図7】実施形態2において、メモリ故障が発生する前後のROM11内のデータ配置を示す図である。
【図8】実施形態2において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。
【図9】実施形態3において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。
【発明を実施するための形態】
【0013】
<実施の形態1>
図1は、本発明の実施形態1に係る電子制御装置1の機能ブロック図である。電子制御装置1は、機器を電子的に制御する装置であり、マイクロコントローラ2、入力回路3、出力回路4、電源回路5を備える。
【0014】
マイクロコントローラ2は、CPU(Central Processing Unit)10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、周辺バスコントローラ13、A/D変換器14、タイマ15、通信インタフェース(I/F)16、発振器17を備える。CPU10、ROM11、RAM12、周辺バスコントローラ13は、内部バス18に接続されている。A/D変換器14、タイマ15、通信インタフェース(I/F)16、発振器17、周辺バスコントローラ13は、周辺バス19に接続されている。
【0015】
CPU10は、入力回路3を介して各種センサや他の電子制御装置からの入力信号を受け取り、A/D変換器14、タイマ15、通信インタフェース(I/F)16などの機能を利用して、ROM11やRAM12に格納されているプログラムを実行し、これらに格納されているデータを用いて制御処理を実施する。また、制御処理の一貫として、機器が最適に動作するように、出力回路4を駆動して各種アクチュエータやスイッチ等を制御したり、通信インタフェース16を介して他の電子制御装置に制御データを送信したりする場合もある。
【0016】
ROM11は、CPU10が実行するプログラムおよび同プログラム中で用いられるデータを格納する。ROM11が格納するデータ等を書き換える必要がある場合は、フラッシュROMなどの書き換え可能なROMを用いる。RAM12は、CPU10がプログラムを実行する過程で用いるデータを一時的に格納する。例えばCPU10は、ROM11が格納しているプログラムやデータをRAM12上に展開して使用する。図1では、ROM11とRAM12はマイクロコントローラ2に内蔵されているが、これらはマイクロコントローラ2の外部に設けられていてもよい。
【0017】
周辺バスコントローラ13、A/D変換器14、タイマ15、通信インタフェース(I/F)16、発振器17は、電子制御装置が一般的に備えているものである。出力回路4は、電子制御装置1から制御信号を受け取り、電子制御装置1が制御する機器に対して駆動信号を出力する。
【0018】
図2は、ROM11が格納するプログラムおよびデータの構成を示す図である。ROM11は、データ保存部21、誤り検出/訂正部22、データ保存/消去実行部23、アドレス管理部24を格納する。ROM11が格納するデータ等をRAM12上に展開する場合は、RAM12も図2と同様のデータ等を格納する。
【0019】
データ保存部21は、複数のデータ記憶領域、すなわちメモリセルを備えている。データ保存部21は、CPU10が制御処理を実施する際に用いるデータを格納する。データ保存部21は、後述する第1記憶領域A1と第2記憶領域A2を有する。
【0020】
誤り検出/訂正部22は、データ保存部21が格納するデータに付加されている誤り検出/訂正コードを用いて、当該データにデータ誤りが生じているか否かを検査する。誤りが生じており、かつ誤りが生じているビット数が誤り検出/訂正コードによって訂正できる範囲内の場合は、当該誤りを訂正する。この誤り検出/訂正機能は公知であるため、詳細な説明は割愛する。
【0021】
データ保存/消去実行部23は、データ保存部21内の第1記憶領域A1においてデータ誤りを検出した旨の通知を誤り検出/訂正部22から受けると、第1記憶領域A1に格納されているデータを第2記憶領域A2へ保存する。また、所定条件の下で、第2記憶領域A2に保存されているデータを消去する。これらの処理フローについては後述する。
【0022】
アドレス管理部24は、データ保存/消去実行部23から、第2記憶領域A2のアドレス、第2記憶領域A2に保存されているデータを消去した旨の通知などを受け取り、第1記憶領域A1が格納しているデータのアドレスと第2記憶領域A2が格納している対応するデータのアドレスとの対応関係を管理する。CPU10は、これらデータの対応関係をアドレス管理部24に問い合わせることにより、後述する処理フローによってデータ配置が変わったことを意識せずに、これらデータにアクセスすることができる。
【0023】
誤り検出/訂正部22、データ保存/消去実行部23、アドレス管理部24は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、これらの処理を記述したソフトウェアをCPU10が実行することによって実現することもできる。これら機能部をソフトウェアとして実装した場合は、図2に示すようにこれら機能部をメモリ上に格納することができる。
【0024】
図3は、メモリ故障が発生する前後のROM11内のデータ配置を示す図である。故障発生前の時点では、データ保存部21のアドレス0、アドレス1、・・・にそれぞれデータ0、データ1、・・・が格納されており、アドレス1(=第1記憶領域A1)のメモリセルに故障が発生したとする。
【0025】
誤り検出/訂正部22は、データ1のデータ誤りを検出し、誤りを訂正した後、正しいデータ1をアドレス1に保存する。アドレス1のメモリセルに故障が発生したということは、当該メモリセルは脆弱性が増している可能性があるので、データ保存/消去実行部23は、誤り訂正後のデータ1を、空き領域であるアドレスn(第2記憶領域A2)にも保存する。詳細処理は図4で改めて説明する。
【0026】
第2記憶領域A2は、第1記憶領域A1を有するデータ保存部21内の空き領域であることを想定しているが、これに代えて、別のメモリ上の空き領域、周辺モジュール内のレジスタ、電子制御装置1が実装している別のマイクロコンピュータが備えるメモリ上の空き領域、などを用いることもできる。また、第2記憶領域A2のアドレスは、あらかじめ設計時に静的に定めておいてもよいし、第2記憶領域A2が必要になった時点で動的に探索して定めてもよい。
【0027】
ROM11がフラッシュメモリで構成されている場合は、第1記憶領域A1と第2記憶領域A2は、データ書き込み/データ消去の単位であるブロックに相当する。あるブロックのいずれかのメモリセルに故障が発生した時は、当該メモリセルのデータ誤りを訂正した後、そのブロックごと第2記憶領域A2に保存する。
【0028】
なお、データ誤りが生じた第1記憶領域A1の近傍にあるメモリセルにも同様のデータ誤りが生じている可能性があるため、第2記憶領域A2は、ROM11上のアドレスができる限り第1記憶領域A1から遠いものを選ぶことが望ましいと考えられる。
【0029】
図4は、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。以下、図4の各ステップについて説明する。
【0030】
(図4:ステップS10)
CPU10は、データ保存部21が格納しているデータを読み出す。このデータが格納されている記憶領域は、図3で説明した第1記憶領域A1に相当する。誤り検出/訂正部22は、CPU10が読み出したデータにデータ誤りが生じているか否かを検査する。誤りがない場合はステップS12へ進み、誤りが生じている場合はステップS11へ進む。
【0031】
(図4:ステップS10:補足)
誤りのあるビット数が誤り検出/訂正部22によって訂正できるビット数範囲を超えている場合は、S11以降の処理を実施しない。この場合、誤り検出/訂正部22は、機器を安全に制御できるようにあらかじめ設定されているデフォルト値を、CPU10に出力する。
【0032】
(図4:ステップS11)
誤り検出/訂正部22は、S10で検出したデータ誤りを訂正し、訂正したデータをCPU10に出力する。CPU10は、そのデータを用いてひとまず制御処理を継続することができる。
【0033】
(図4:ステップS12)
誤り検出/訂正部22は、データ誤りを検査したデータを、そのままCPU10に出力する。CPU10は、そのデータを用いて制御処理を継続する。本ステップの後は、本処理フローを終了する。
【0034】
(図4:ステップS13)
データ保存/消去実行部23は、誤り検出/訂正部22が誤り訂正したデータを第2記憶領域A2に保存する。
【0035】
(図4:ステップS14)
データ保存/消去実行部23は、ステップS13でデータを保存した第2記憶領域A2のアドレスを、アドレス管理部24に通知する。アドレス管理部24は、本処理フローにおける第1記憶領域A1と第2記憶領域A2の対応関係を管理する。すなわち、第1記憶領域A1に格納されているデータと第2記憶領域A2に格納されているデータは、互いに対応する同じデータである旨を管理する。
【0036】
図5は、図4の処理フローによって第2記憶領域A2に訂正後のデータが保存した後、電子制御装置1がそのデータを使用する際の処理フローを示す図である。以下、図5の各ステップについて説明する。
【0037】
(図5:ステップS18)
CPU10は、データ保存部21が格納しているデータを読み出す際に、当該記憶領域上(図3で説明した第1記憶領域A1に相当)のデータ誤りを訂正して生成した対応するデータを第2記憶領域A2に保存しているか否かを、アドレス管理部24に問い合わせて確認する。第2記憶領域A2に対応するデータが保存されている場合はステップS19へ進み、保存されていない場合は図4で説明したステップS10〜S14に進む。
【0038】
(図5:ステップS19)
CPU10は、第1記憶領域A1上のデータと第2記憶領域A2上のデータが一致するか否かを判定する。両者が一致する場合はステップS20へ進み、一致しない場合はステップS23へ進む。
【0039】
(図5:ステップS19:補足)
本ステップは、第1記憶領域A1のメモリセルにおいて既にメモリ故障が発生しているため、当該メモリセルが脆弱になっている可能性を考慮したものである。誤りのあるビット数が誤り検出/訂正部22によって検出できる範囲を超えている場合は、たとえデータ誤りが生じていたとしても、これを検出できない。第1記憶領域A1に格納されているデータと第2記憶領域A2に格納されているデータを互いに比較することにより、誤り検出機能によっても検出することのできないデータ誤りが生じていることを発見し、データの信頼性を高めることができる。
【0040】
(図5:ステップS20)
CPU10は、第1記憶領域A1上のデータを制御処理内で用いる。
【0041】
(図5:ステップS21)
CPU10は、第1記憶領域A1上のデータに、あらかじめ定めた所定時間以上データ誤りが検出されていないか否かを判定する。所定時間以上誤りが検出されていない場合はステップS22へ進み、データ誤りが最後に検出されてから上記所定時間が経過していない場合は本処理フローを終了する。
【0042】
(図5:ステップS22)
CPU10は、ステップS21において所定時間以上誤りが検出されていないと判断した場合は、当該第1記憶領域A1のメモリセルが再度正常に使用することができる状態になったと判断する。データ保存/消去実行部23は、その旨の通知をCPU10から受け取り、第2記憶領域A2に保存した誤り訂正後のデータを消去する。
【0043】
(図5:ステップS22:補足)
本ステップでは、データ誤りを最後に検出してから所定時間以上経過しているか否かに代えて、例えば所定時間内に発生するデータ誤りの頻度が閾値を下回った時点で、第2記憶領域A2に保存した誤り訂正後のデータを消去するようにしてもよい。
【0044】
(図5:ステップS23)
誤り検出/訂正部22は、第2記憶領域A2上のデータにデータ誤りが検出されていないことを確認したうえで、第2記憶領域A2上のデータをCPU10に出力する。第2記憶領域A2上のデータにデータ誤りが検出された場合は、ステップ10と同様に、機器を安全に制御できるようにあらかじめ設定されたデフォルト値をCPU10に出力する。ただし、第1記憶領域A1のメモリセルと第2記憶領域A2のメモリセルにおいて同時にビット誤りが発生する確率は、極めて小さいと考えられる。
【0045】
<実施の形態1:まとめ>
以上のように、本実施形態1に係る電子制御装置1は、第1記憶領域A1上でデータ誤りが発生したときは、誤り訂正したデータを第2記憶領域A2に保存し、アドレス管理部24が両者の対応関係を管理している下で、両データを併用する。誤り訂正したデータを第2記憶領域A2に保存することにより、データの信頼性を確保することができる。また、データ誤りが発生した時点で第2記憶領域A2に訂正データを格納するので、訂正データを格納するための記憶領域をあらかじめ確保する必要はなく、メモリ使用量を抑えることができる。
【0046】
また、本実施形態1に係る電子制御装置1は、第1記憶領域A1が格納しているデータと第2記憶領域A2が格納しているデータを比較し、両者が一致するか否かを検証する。これにより、誤り検出機能によって検出することができないデータ誤りが生じている場合でも、正しいデータを使用することができる。
【0047】
また、本実施形態1に係る電子制御装置1は、第1記憶領域A1が格納しているデータと第2記憶領域A2が格納しているデータが一致しないときは、より信頼性が高いと思われる第2記憶領域A2上のデータを用いる。これにより、第1記憶領域A1上のデータを誤り訂正してもなおデータ誤りが生じている場合でも、正しいデータを用いて制御処理を実施することができる。
【0048】
<実施の形態2>
図6は、本発明の実施形態2に係る電子制御装置1が備えるROM11が格納するプログラムおよびデータの構成を示す図である。本実施形態2におけるROM11は、実施形態1で説明したデータ保存/消去実行部23に代えて、データ入替実行部25を格納する。電子制御装置1が備えるその他の機能部については実施形態1と同様である。RAM12についても同様である。
【0049】
データ入替実行部25は、誤り検出/訂正部22からデータ誤りを検出した旨の通知を受け取ると、第1記憶領域A1に格納されたデータと第2記憶領域A2に格納されたデータを入れ替える。すなわち、本実施形態2においては、第2記憶領域A2は空き領域である必要はない。具体的な処理フローについては後述する。本実施形態2における「データ保存」は、データ入替実行部25が相当する。
【0050】
データ入替実行部25は、その機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、その処理を記述したソフトウェアをCPU10が実行することによって実現することもできる。データ入替実行部25をソフトウェアとして実装した場合は、図2に示すようにメモリ上に格納することができる。
【0051】
アドレス管理部24は、データ入替実行部25から、第1記憶領域A1内のデータと第2記憶領域A2内のデータを入れ替えた旨の通知を受け取り、第1記憶領域A1が格納しているデータのアドレスと第2記憶領域A2が格納している対応するデータのアドレスとの対応関係を管理する。CPU10は、これらデータの対応関係をアドレス管理部24に問い合わせることにより、後述する処理フローによってデータ配置が変わったことを意識せずに、これらデータにアクセスすることができる。
【0052】
図7は、本実施形態2において、メモリ故障が発生する前後のROM11内のデータ配置を示す図である。本実施形態2では、データ保存部21が格納する各データには、そのデータの重要度を示す重要度情報が付加されている。ここでは、データの重要度は4が最も高く、3、2、1の順で低くなっていくものとする。
【0053】
アドレス1(第1記憶領域A1)のメモリセルに故障が発生したとする。誤り検出/訂正部22は、データ1(重要度4)のデータ誤りを検出し、誤りを訂正した後、正しいデータ1をアドレス1に保存する。
【0054】
アドレス1のメモリセルに故障が発生したということは、当該メモリセルは脆弱性が増している可能性があるので、データ入替実行部25は、誤り訂正後のデータ1を、重要度が当該データより低いデータn(重要度1)が保存されているアドレスn(第2記憶領域A2)に保存する。データnは重要度が相対的に低いため、データ1が保存されていたアドレス1(第1記憶領域A1)に保存する。以上の処理により、第1記憶領域A1に格納されていたデータと第2記憶領域A2に格納されていたデータが入れ替えられる。
【0055】
なお、実施形態1と同様に、第2記憶領域A2は、第1記憶領域A1からなるべく物理的に離れた領域であることが望ましい。さらには、その中で重要度が相対的に低いデータを格納している記憶領域であることが望ましい。第2記憶領域A2の候補が複数存在する場合には、格納しているデータの重要度がより低いものを優先的に選択するとよい。重要度が同じ第2記憶領域A2の候補が複数存在する場合は、第1記憶領域A1からの距離ができる限り離れているものを優先的に選択するとよい。
【0056】
ROM11がフラッシュメモリで構成されている場合は、第1記憶領域A1と第2記憶領域A2は、データ書き込み/データ消去の単位であるブロックに相当する。あるブロックのいずれかのメモリセルに故障が発生した時は、当該メモリセルのデータ誤りを訂正した後、そのブロックと、当該ブロックより相対的に重要度が低いデータが保存されているブロックとを入れ替える。
【0057】
図8は、本実施形態2において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。以下、図8の各ステップについて説明する。
【0058】
(図8:ステップS10〜S12)
これらのステップは、実施形態1の図4で説明したステップS10〜S12と同様である。ただしステップS11の次は、ステップS13に代えてステップS25〜S27を実行する。
【0059】
(図8:ステップS25)
データ入替実行部25は、ステップS10でCPU10が読み出したデータの重要度を判定する。重要度が最低レベルである場合は、当該データと記憶領域を入れ替えるべきデータが存在しないため、そのまま本処理を終了する。重要度が最低レベルでない場合は、ステップS26へ進む。
【0060】
(図8:ステップS26)
データ入替実行部25は、ステップS10でCPU10が読み出したデータが保存されている第1記憶領域A1から物理的に遠い順に、当該データよりも重要度の低いデータを検索する。
【0061】
(図8:ステップS27)
データ入替実行部25は、ステップS26の検索によって発見した第2記憶領域A2内のデータを、第1記憶領域A1内のデータと入れ替える。
【0062】
(図8:ステップS27:補足)
本実施形態2では、重要度が相対的に低いデータは、脆弱性が増している可能性のあるメモリセル内に配置されることになる。誤り検出/訂正部22によって誤り訂正することができる範囲以上の多ビット誤りが発生した場合は、ステップS10と同様に、機器を安全に制御できるようにあらかじめ設定されているデフォルト値を、CPU10に出力すればよい。
【0063】
(図8:ステップS14)
データ入替実行部25は、ステップS26で入れ替えた各データの保存先アドレスをアドレス管理部24に通知する。アドレス管理部24は、本処理フローにおける第1記憶領域A1と第2記憶領域A2の対応関係を管理する。すなわち、第1記憶領域A1に格納されているデータと第2記憶領域A2に格納されているデータが入れ替わっている旨を管理する。
【0064】
<実施の形態2:まとめ>
以上のように、本実施形態2に係る電子制御装置1は、データ誤りが発生した第1記憶領域A1と、当該データよりも重要度の低い第2記憶領域A2とを入れ替える。これにより、第2記憶領域A2を空き領域のなかから選ぶ必要がなくなるので、訂正データを保存するための空き領域を冗長的に確保する必要がなくなり、メモリ使用量をさらに抑えることができる。
【0065】
<実施の形態3>
本発明の実施形態3では、第1記憶領域A1においてデータ誤りが検出されたとき、即座に第2記憶領域A2へ訂正データを保存するのではなく、データ誤りがある程度継続した時点で訂正データを保存する動作例を説明する。電子制御装置1の構成は実施形態1と同様であるため、以下では差異点を中心に説明する。
【0066】
図9は、本実施形態3において、電子制御装置1がデータ保存部21内に格納されているデータを読み出すときの処理フローを示す図である。以下、図9の各ステップについて説明する。
【0067】
(図9:ステップS10〜S12)
これらのステップは、実施形態1の図4で説明したステップS10〜S12と同様である。ただし、ステップS11とステップS13の間でステップS15〜S16を実行し、ステップS12の次にステップS17を実行する。
【0068】
(図9:ステップS15)
誤り検出/訂正部22は、内部的に保持する故障カウンタの値を増加させる。
【0069】
(図9:ステップS16)
誤り検出/訂正部22は、故障カウンタ値があらかじめ定めた閾値を超えたか否かを判断する。閾値を超えている場合はステップS13へ進む。閾値を超えていない場合は、誤り訂正したデータを第2記憶領域A1に保存することなく、本処理を終了する。第1記憶領域A1からデータを読み出す毎に本ステップを実施することにより、データ誤りが一時的な原因によって生じている場合には、即座に第2記憶領域A2へデータを保存するのではなく、継続してデータ誤りが生じるか否かをいったん様子見することができる。
【0070】
(図9:ステップS17)
誤り検出/訂正部22は、ステップS10においてデータ誤りが検出されず、故障カウンタ値が1以上である場合は、故障カウンタ値を減少させる。第1記憶領域A1からデータを読み出す毎に本ステップを実施することにより、データ誤りが一時的な原因によって生じている場合には、故障カウンタが最終的には0になるので、それ以後は第1記憶領域A1にデータ誤りが生じていないものとして取り扱うことができる。
【0071】
<実施の形態3:まとめ>
以上のように、本実施形態3に係る電子制御装置1は、CPU10が第1記憶領域A1からデータを読み出す時点でデータ誤りが生じているか否かを判定し、データ誤りが発生した回数をカウントする。カウンタ値が閾値を超えている場合は第2記憶領域A2に訂正データを保存し、そうでなければ保存しない。これにより、一時的なメモリ故障によってデータ誤りが発生したデータを、不要に第2記憶領域A2へ保存することを防止し、処理負荷やメモリ容量の浪費を抑えることができる。
【0072】
<実施の形態4>
実施形態1〜3は、適宜組み合わせて用いることもできる。また、構成要素の一部を変形することもできる。例えば以下のような組み合わせ例や変形例が考えられる。
【0073】
(実施形態の組み合わせ:例1)
実施形態2で説明した、第1記憶領域A1と第2記憶領域A2を入れ替える処理を、実施形態3で説明した故障カウンタが閾値を超えた時点で実行する。
【0074】
(実施形態の組み合わせ:例2)
実施形態2で説明したデータの重要度情報を実施形態1に導入し、誤り訂正後のデータを第2記憶領域A2に冗長的に保存するか否かを、誤り訂正後のデータの重要度に応じて判定する。
【0075】
(実施形態の変形例)
実施形態2で故障カウンタの閾値や、実施形態1のステップS21で説明した所定時間を、データの重要度に応じて可変にする。
【0076】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【0077】
また、上記各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。各機能を実現するプログラム、テーブルなどの情報は、メモリやハードディスクなどの記憶装置、ICカード、DVDなどの記憶媒体に格納することができる。
【符号の説明】
【0078】
1:電子制御装置、2:マイクロコントローラ、3:入力回路、4:出力回路、5:電源回路、10:CPU、11:ROM、12:RAM、13:周辺バスコントローラ、14:A/D変換器、15:タイマ、16:通信インタフェース、17:発振器、18:内部バス、19:周辺バス、21:データ保存部、22:誤り検出/訂正部、23:データ保存/消去実行部、24:アドレス管理部、25:データ入替実行部、A1:第1記憶領域、A2:第2記憶領域。
【特許請求の範囲】
【請求項1】
データを記憶するメモリと、
前記メモリが格納しているデータを用いて制御処理を実施するプロセッサと、
前記メモリに格納されているデータのデータ誤りを検出する誤り検出部と、
前記データ誤りを訂正する誤り訂正部と、
前記メモリが格納しているデータを前記メモリ上の別の記憶領域に保存するデータ保存部と、
を備え、
前記データ保存部は、
前記誤り検出部が前記データ誤りを検出したとき、前記データ誤りが検出された前記メモリ上の第1記憶領域とは異なる第2記憶領域に、前記誤り訂正部が前記データ誤りを訂正したデータを保存し、
前記プロセッサは、
前記データ保存部が前記第2記憶領域にデータを保存した後は、前記第2記憶領域上のデータを前記制御処理のために用いるとともに、前記第1記憶領域上のデータも前記制御処理のために継続して用いる
ことを特徴とする電子制御装置。
【請求項2】
前記メモリ上における前記第1記憶領域のアドレスと前記第2記憶領域のアドレスとの対応関係を管理するアドレス管理部を備え、
前記プロセッサは、
前記データ保存部が前記第1記憶領域上のデータを誤り訂正したデータを前記第2記憶領域保存したか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、前記第1記憶領域上のデータと前記第2記憶領域上のデータを併用する
ことを特徴とする請求項1記載の電子制御装置。
【請求項3】
前記データ保存部は、前記第2記憶領域に保存した前記訂正後のデータを、前記第1記憶領域にも保存する
ことを特徴とする請求項2記載の電子制御装置。
【請求項4】
前記プロセッサは、
前記制御処理内で前記第1記憶領域上のデータを使用する場合は、前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在するか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、両データを比較し、両者が一致している場合は、前記第1記憶領域が格納しているデータを用いる
ことを特徴とする請求項3記載の電子制御装置。
【請求項5】
前記プロセッサは、
前記制御処理内で前記第1記憶領域上のデータを使用する場合は、前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在するか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、両データを比較し、両者が一致していない場合は、前記第2記憶領域が格納している対応するデータを用いる
ことを特徴とする請求項3記載の電子制御装置。
【請求項6】
前記プロセッサは、
前記制御処理内で前記第1記憶領域上のデータを使用する場合は、前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在するか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、両データを比較し、両者が一致していない場合は、前記第2記憶領域が格納している対応するデータについてデータ誤りが生じているか否かを前記誤り検出部に問い合わせ、
データ誤りが生じていない場合は前記第2記憶領域が格納している対応するデータを用い、データ誤りが生じている場合は所定のデフォルト値を用いる
ことを特徴とする請求項3記載の電子制御装置。
【請求項7】
前記データ保存部は、
前記第1記憶領域において所定時間内に発生するデータ誤りの頻度、または前記第1記憶領域において最後にデータ誤りが発生した時点からの経過時間を計測し、
前記頻度が所定閾値より低いとき、または前記経過時間が所定の基準時間以上であるときは、前記第1記憶領域上のデータを誤り訂正した上で前記第2記憶領域上に保存したデータを消去する
ことを特徴とする請求項1記載の電子制御装置。
【請求項8】
前記データ保存部は、
前記メモリ上のアドレスが前記第1記憶領域からできる限り遠い記憶領域を、前記第2記憶領域として優先的に用いる
ことを特徴とする請求項1記載の電子制御装置。
【請求項9】
前記データ保存部は、
前記誤り検出部が前記データ誤りを検出したとき、
前記誤り訂正部が誤り訂正したデータを前記第2記憶領域に保存し、それ以前に前記第2記憶領域に格納されていたデータを前記第1記憶領域に保存する
ことを特徴とする請求項2記載の電子制御装置。
【請求項10】
前記メモリは、
前記データの重要度を示す重要度情報を前記データとともに格納し、
前記データ保存部は、
前記第1記憶領域が格納しているデータについて前記誤り検出部が前記データ誤りを検出したとき、前記データ誤りが検出されたデータの重要度を前記重要度情報に基づき特定し、
その重要度よりも低い重要度を有するデータを格納している前記第2記憶領域に、前記誤り訂正部が誤り訂正したデータを保存し、それ以前に前記第2記憶領域に格納されていたデータを前記第1記憶領域に保存することにより、前記第1記憶領域が格納しているデータと前記第2記憶領域が格納しているデータを入れ替える
ことを特徴とする請求項9記載の電子制御装置。
【請求項11】
前記データ保存部は、
前記メモリ上のアドレスが前記第1記憶領域からできる限り遠い記憶領域を、前記第2記憶領域として優先的に用いる
ことを特徴とする請求項9記載の電子制御装置。
【請求項12】
前記データ保存部は、
前記重要度ができる限り低いデータを格納している記憶領域を、前記第2記憶領域として優先的に用い、
前記第2記憶領域の候補として、前記重要度が等しいデータを格納している記憶領域が複数存在する場合は、前記メモリ上のアドレスが前記第1記憶領域からより遠い記憶領域を、前記第2記憶領域として優先的に用いる
ことを特徴とする請求項10記載の電子制御装置。
【請求項13】
前記データ保存部は、
前記プロセッサが前記第1記憶領域からデータを読み出す時点で、前記誤り検出部が検出したデータ誤りの発生回数が所定閾値を超えている場合のみ、前記第2記憶領域に、前記誤り訂正部が前記データ誤りを訂正したデータを保存する
ことを特徴とする請求項1記載の電子制御装置。
【請求項14】
前記データ保存部は、前記誤り検出部が前記データ誤りを検出しなかった場合は、前記発生回数のカウンタ値を減算する
ことを特徴とする請求項13記載の電子制御装置。
【請求項15】
前記メモリとは異なる第2メモリを備え、
前記データ保存部は、前記第2メモリ上の記憶領域を前記第2記憶領域として用いる
ことを特徴とする請求項1記載の電子制御装置。
【請求項1】
データを記憶するメモリと、
前記メモリが格納しているデータを用いて制御処理を実施するプロセッサと、
前記メモリに格納されているデータのデータ誤りを検出する誤り検出部と、
前記データ誤りを訂正する誤り訂正部と、
前記メモリが格納しているデータを前記メモリ上の別の記憶領域に保存するデータ保存部と、
を備え、
前記データ保存部は、
前記誤り検出部が前記データ誤りを検出したとき、前記データ誤りが検出された前記メモリ上の第1記憶領域とは異なる第2記憶領域に、前記誤り訂正部が前記データ誤りを訂正したデータを保存し、
前記プロセッサは、
前記データ保存部が前記第2記憶領域にデータを保存した後は、前記第2記憶領域上のデータを前記制御処理のために用いるとともに、前記第1記憶領域上のデータも前記制御処理のために継続して用いる
ことを特徴とする電子制御装置。
【請求項2】
前記メモリ上における前記第1記憶領域のアドレスと前記第2記憶領域のアドレスとの対応関係を管理するアドレス管理部を備え、
前記プロセッサは、
前記データ保存部が前記第1記憶領域上のデータを誤り訂正したデータを前記第2記憶領域保存したか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、前記第1記憶領域上のデータと前記第2記憶領域上のデータを併用する
ことを特徴とする請求項1記載の電子制御装置。
【請求項3】
前記データ保存部は、前記第2記憶領域に保存した前記訂正後のデータを、前記第1記憶領域にも保存する
ことを特徴とする請求項2記載の電子制御装置。
【請求項4】
前記プロセッサは、
前記制御処理内で前記第1記憶領域上のデータを使用する場合は、前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在するか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、両データを比較し、両者が一致している場合は、前記第1記憶領域が格納しているデータを用いる
ことを特徴とする請求項3記載の電子制御装置。
【請求項5】
前記プロセッサは、
前記制御処理内で前記第1記憶領域上のデータを使用する場合は、前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在するか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、両データを比較し、両者が一致していない場合は、前記第2記憶領域が格納している対応するデータを用いる
ことを特徴とする請求項3記載の電子制御装置。
【請求項6】
前記プロセッサは、
前記制御処理内で前記第1記憶領域上のデータを使用する場合は、前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在するか否かを前記アドレス管理部に問い合わせ、
前記第1記憶領域上のデータに対応するデータが前記第2記憶領域上に存在する場合は、両データを比較し、両者が一致していない場合は、前記第2記憶領域が格納している対応するデータについてデータ誤りが生じているか否かを前記誤り検出部に問い合わせ、
データ誤りが生じていない場合は前記第2記憶領域が格納している対応するデータを用い、データ誤りが生じている場合は所定のデフォルト値を用いる
ことを特徴とする請求項3記載の電子制御装置。
【請求項7】
前記データ保存部は、
前記第1記憶領域において所定時間内に発生するデータ誤りの頻度、または前記第1記憶領域において最後にデータ誤りが発生した時点からの経過時間を計測し、
前記頻度が所定閾値より低いとき、または前記経過時間が所定の基準時間以上であるときは、前記第1記憶領域上のデータを誤り訂正した上で前記第2記憶領域上に保存したデータを消去する
ことを特徴とする請求項1記載の電子制御装置。
【請求項8】
前記データ保存部は、
前記メモリ上のアドレスが前記第1記憶領域からできる限り遠い記憶領域を、前記第2記憶領域として優先的に用いる
ことを特徴とする請求項1記載の電子制御装置。
【請求項9】
前記データ保存部は、
前記誤り検出部が前記データ誤りを検出したとき、
前記誤り訂正部が誤り訂正したデータを前記第2記憶領域に保存し、それ以前に前記第2記憶領域に格納されていたデータを前記第1記憶領域に保存する
ことを特徴とする請求項2記載の電子制御装置。
【請求項10】
前記メモリは、
前記データの重要度を示す重要度情報を前記データとともに格納し、
前記データ保存部は、
前記第1記憶領域が格納しているデータについて前記誤り検出部が前記データ誤りを検出したとき、前記データ誤りが検出されたデータの重要度を前記重要度情報に基づき特定し、
その重要度よりも低い重要度を有するデータを格納している前記第2記憶領域に、前記誤り訂正部が誤り訂正したデータを保存し、それ以前に前記第2記憶領域に格納されていたデータを前記第1記憶領域に保存することにより、前記第1記憶領域が格納しているデータと前記第2記憶領域が格納しているデータを入れ替える
ことを特徴とする請求項9記載の電子制御装置。
【請求項11】
前記データ保存部は、
前記メモリ上のアドレスが前記第1記憶領域からできる限り遠い記憶領域を、前記第2記憶領域として優先的に用いる
ことを特徴とする請求項9記載の電子制御装置。
【請求項12】
前記データ保存部は、
前記重要度ができる限り低いデータを格納している記憶領域を、前記第2記憶領域として優先的に用い、
前記第2記憶領域の候補として、前記重要度が等しいデータを格納している記憶領域が複数存在する場合は、前記メモリ上のアドレスが前記第1記憶領域からより遠い記憶領域を、前記第2記憶領域として優先的に用いる
ことを特徴とする請求項10記載の電子制御装置。
【請求項13】
前記データ保存部は、
前記プロセッサが前記第1記憶領域からデータを読み出す時点で、前記誤り検出部が検出したデータ誤りの発生回数が所定閾値を超えている場合のみ、前記第2記憶領域に、前記誤り訂正部が前記データ誤りを訂正したデータを保存する
ことを特徴とする請求項1記載の電子制御装置。
【請求項14】
前記データ保存部は、前記誤り検出部が前記データ誤りを検出しなかった場合は、前記発生回数のカウンタ値を減算する
ことを特徴とする請求項13記載の電子制御装置。
【請求項15】
前記メモリとは異なる第2メモリを備え、
前記データ保存部は、前記第2メモリ上の記憶領域を前記第2記憶領域として用いる
ことを特徴とする請求項1記載の電子制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2013−88978(P2013−88978A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−228173(P2011−228173)
【出願日】平成23年10月17日(2011.10.17)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願日】平成23年10月17日(2011.10.17)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】
[ Back to top ]