(57)【要約】【課題】効率的なメモリアクセスとユーザデータの冗長性とのトレードオフを解消する。【解決手段】誤り訂正検出装置２は、ユーザデータの部分書き換えが発生する毎に、その部分書き換えによる差分データを、その部分書き換えが発生したアドレスと対応付けてテーブルに格納する。そして、ユーザデータの誤り訂正検出を行う際には、その部分書き換え後のユーザデータに対して差分データを反映し、その差分データを反映したユーザデータに対して部分書き換え前のパリティデータを適用して当該ユーザデータの誤り訂正検出を行う。ユーザデータの部分書き換え時にＥＣＣパリティの再計算を行う必要がないので、メモリアクセスを効率良く行える。又、ＥＣＣパリティが無効となる期間が発生することもないので、ユーザデータの冗長性による性能低下を防止できる。【選択図】図１
2015138275.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがランダムアクセス可能な複数のメモリセルを有する不揮発性のランダムアクセスメモリ（５）と、
前記メモリセルに格納されているユーザデータに対してＥＣＣパリティを計算してパリティデータを生成するパリティデータ生成手段（６）と、
前記ユーザデータに対して前記パリティデータを適用して当該ユーザデータの誤り訂正検出を行う誤り訂正検出手段（９）と、を備えた誤り訂正検出装置（２）において、
前記メモリセルに格納されているユーザデータの部分書き換えが発生したことに応じて、その部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データを生成する差分データ生成手段（１０）と、
前記差分データ生成手段により生成された差分データを格納可能なテーブルを保持するテーブル保持手段（１１）と、を備え、
前記誤り訂正検出手段は、前記ユーザデータの部分書き換えが発生する毎に、その部分書き換えによる前記差分データを、その部分書き換えが発生したアドレスと対応付けて前記テーブルに格納し、ユーザデータの誤り訂正検出を行う際には、その部分書き換え後のユーザデータに対して前記差分データを反映し、その差分データを反映したユーザデータに対して部分書き換え前に前記パリティデータ生成手段により生成されたパリティデータを適用して当該ユーザデータの誤り訂正検出を行うことを特徴とする誤り訂正検出装置。
【請求項２】
請求項１に記載した誤り訂正検出装置において、
前記誤り訂正検出手段は、前記ユーザデータの誤り訂正検出の要求が発生したこと、及び前記ユーザデータの部分書き換えの発生回数が第１の所定回数に達したことの少なくとも何れかを条件とし、そのユーザデータの誤り訂正検出を行うことを特徴とする誤り訂正検出装置。
【請求項３】
請求項２に記載した誤り訂正検出装置において、
前記誤り訂正検出手段は、前記ユーザデータの誤り訂正検出の要求が発生したことを、前記ユーザデータの部分書き換えの発生回数が第１の所定回数に達したことよりも優先し、そのユーザデータの誤り訂正検出を行うことを特徴とする誤り訂正検出装置。
【請求項４】
請求項１から３の何れか一項に記載した誤り訂正検出装置において、
前記パリティデータ生成手段は、前記ユーザデータのうち少なくとも部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算してパリティデータを再生成し、
前記テーブル保持手段は、テーブルを初期化することを特徴とする誤り訂正検出装置。
【請求項５】
請求項４に記載した誤り訂正検出装置において、
前記パリティデータ生成手段は、前記ＥＣＣパリティの再計算の要求が発生したこと、及び前記ユーザデータの部分書き換えの発生回数が第２の所定回数に達したことの少なくとも何れかを条件とし、前記ユーザデータのうち少なくとも部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算してパリティデータを再生成することを特徴とする誤り訂正検出装置。
【請求項６】
請求項５に記載した誤り訂正検出装置において、
前記パリティデータ生成手段は、前記ＥＣＣパリティの再計算の要求が発生したことを、前記ユーザデータの部分書き換えの発生回数が第２の所定回数に達したことよりも優先し、前記ユーザデータのうち少なくとも部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算してパリティデータを再生成することを特徴とする誤り訂正検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザデータに対してパリティデータを適用して当該ユーザデータの誤り訂正検出を行う誤り訂正検出装置に関する。
【背景技術】
【０００２】
従来より、不揮発性のランダムアクセスメモリに対するメモリアクセスのスループット低下を防止するための手法として、アクセス単位に応じてＥＣＣ（Error Check and Correct）パリティの計算を動的に制御する手法がある。具体的には、ＥＣＣパリティが有効であるか無効であるか示すフラグ（バリッドフラグ）を定義し、そのフラグに応じてＥＣＣパリティの再計算を定期的に行う手法である。この手法では、ＥＣＣパリティの再計算を定期的に行うことで、ユーザデータの部分書き換え時にＥＣＣパリティの再計算を行う必要がなくなる。その結果、効率的なメモリアクセスを実現することができる（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３４５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の手法では、定期的なタイマ割り込みをトリガとしてＥＣＣパリティの再計算を行うので、ユーザデータの部分書き換え後のタイミングから次のタイマ割り込みのタイミングまでの期間では、ＥＣＣパリティが無効となる。その結果、ユーザデータの冗長性の点で性能低下を招くという問題があった。
【０００５】
本発明は、上記した事情に鑑みてなされたものであり、その目的は、効率的なメモリアクセスとユーザデータの冗長性とのトレードオフを解消することができる誤り訂正検出装置を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載した発明によれば、不揮発性のランダムアクセスメモリは、それぞれがランダムアクセス可能な複数のメモリセルを有する。パリティデータ生成手段は、メモリセルに格納されているユーザデータに対してＥＣＣパリティを計算してパリティデータを生成する。誤り訂正検出手段は、ユーザデータに対してパリティデータを適用して当該ユーザデータの誤り訂正検出を行う。差分データ生成手段は、メモリセルに格納されているユーザデータの部分書き換えが発生したことに応じて、その部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データを生成する。テーブル保持手段は、差分データ生成手段により生成された差分データを格納可能なテーブルを保持する。
【０００７】
誤り訂正検出手段は、メモリセルに格納されているユーザデータの部分書き換えが発生する毎に、その部分書き換えによる差分データを、その部分書き換えが発生したアドレスと対応付けてテーブルに格納する。そして、誤り訂正検出手段は、ユーザデータの誤り訂正検出を行う際には、その部分書き換え後のユーザデータに対してテーブルに格納されている差分データを反映し、その差分データを反映したユーザデータに対して部分書き換え前にパリティデータ生成手段により生成されたパリティデータを適用して当該ユーザデータの誤り訂正検出を行う。
【０００８】
即ち、ＥＣＣパリティを計算した時点のユーザデータからの差分を示す差分データを保持し、その差分データを部分書き換え後のユーザデータに対して常に反映可能とすることで、部分書き換え前のユーザデータを常に生成可能とした。これにより、ユーザデータの部分書き換え時にＥＣＣパリティの再計算を行う必要がないので、メモリアクセスを効率良く行うことができる。又、ＥＣＣパリティが無効となる期間が発生することもないので、ユーザデータの冗長性による性能低下を防止することができる。その結果、効率的なメモリアクセスとユーザデータの冗長性とのトレードオフを解消することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態を示す機能ブロック図
【図２】テーブルを示す図
【図３】フローチャート
【図４】ユーザデータの部分書き換えが発生したことに伴うメモリセルの推移を示す図
【図５】ユーザデータの部分書き換えが発生したことに伴うテーブルの推移を示す図
【図６】本発明の第２の実施形態を示すフローチャート
【図７】本発明の第３の実施形態を示すフローチャート
【発明を実施するための形態】
【００１０】
（第１の実施形態）
以下、本発明の第１の実施形態について図１から図５を参照して説明する。マイクロコンピュータ（マイコン）１は、誤り訂正検出装置２と、周辺回路１２とを有する。誤り訂正検出装置２は、ＣＰＵ（Central Processing Unit）３と、ＲＯＭ（Read Only Memory）４と、不揮発性のＲＡＭ（Random Access Memory）５（不揮発性のランダムアクセスメモリ）と、ＥＣＣ（Error Check and Correct）回路６（パリティデータ生成手段）と、メモリデータ監視回路７とを有する。ＣＰＵ３、ＲＯＭ４、不揮発性のＲＡＭ５、ＥＣＣ回路６及びメモリデータ監視回路７は、バス８を介して相互接続されている。又、周辺回路１２も、上記した誤り訂正検出装置２を構成する各回路と共にバス８に接続されている。
【００１１】
ＲＯＭ４は、ＣＰＵ３が実行する制御プログラムを格納している。ＣＰＵ３は、ＲＯＭ４に格納されている制御プログラムを読出して実行することで、マイコン１の動作全体を制御する。不揮発性のＲＡＭ５は、それぞれがランダムアクセス可能な複数のメモリセルを有する。複数のメモリセルは、それぞれユーザデータを格納可能である。ＥＣＣ回路６は、ＣＰＵ３からＥＣＣパリティの計算命令を入力すると、メモリセルに格納されているユーザデータに対してＥＣＣパリティを計算してパリティデータを生成し、その生成したパリティデータをユーザデータに付与する。
【００１２】
メモリデータ監視回路７は、誤り訂正検出回路９（誤り訂正検出手段）と、差分データ生成回路１０（差分データ生成手段）と、テーブル保持回路１１（テーブル保持手段）とを有し、ＲＡＭ５に格納されているユーザデータ及びパリティデータを監視する。誤り訂正検出回路９は、ＣＰＵ３から誤り訂正検出命令を入力すると、ユーザデータに対してパリティデータを適用して当該ユーザデータの誤り訂正検出を行う。誤り訂正検出とは、ユーザデータの１ビット誤りを検出し且つ訂正すること、又はユーザデータの２ビット以上の誤りを検出することである。差分データ生成回路１０は、ユーザデータの部分書き換え（部分更新）が発生する毎に、ＣＰＵ３から差分データ作成命令を入力すると、部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データを生成する。
【００１３】
テーブル保持回路１１は、ＲＡＭ５の記憶領域の一部を用いて図２に示すテーブルを保持する。テーブル保持回路１１は、ユーザデータの部分書き換えが発生する毎に、ＣＰＵ３からレコード追加命令を入力すると、１レコードを追加する。１レコードは、部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データ（０ｂ００００）と、その部分書き換えが発生した領域を示すアドレス（０ｘ００００）と、テーブルを初期化した時点から何回目の書き換えであるかを示す書き換え回数（ｎ（ｎは自然数）、部分書き換えの発生回数）とを含む。又、周辺回路１２は、例えばデータをＡＤ変換するＡＤ変換回路、データ通信を制御するデータ通信回路等である。
【００１４】
次に、上記した構成の作用について、図３から図５を参照して説明する。ＣＰＵ３は、本発明に関連し、図３に示す処理を実行する。ＣＰＵ３は、例えば予め規定されているＥＣＣパリティの計算タイミングになると、ＥＣＣパリティの計算命令をＥＣＣ回路６に出力し、メモリセルに格納されている全てのユーザデータに対してＥＣＣパリティを計算させてパリティデータを生成させる。そして、ＣＰＵ３は、その生成されたパリティデータを該当するユーザデータに付与させる（Ｓ１）。
【００１５】
次いで、ＣＰＵ３は、図２に示したテーブルを初期化し（Ｓ２）、ユーザデータの部分書き換えが発生したか否かを判定する（Ｓ３）。ここで、ＣＰＵ３は、ユーザデータの部分書き換えが発生したと判定すると（Ｓ３：ＹＥＳ）、差分データ作成命令を差分データ生成回路１０に出力し、部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データを生成させる。そして、ＣＰＵ３は、レコード追加命令をテーブル保持回路１１に出力し、部分書き換え情報として１レコードをテーブルに追加させる（Ｓ４）。具体的には、図４及び図５に示すように、ユーザデータの部分書き換えがアドレス「ａｄｄｒ１」で発生すると、ＣＰＵ３は、その部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データ「Δｄ１」、そのアドレス「ａｄｄｒ１」、テーブルを初期化した時点からの発生回数「１」を１レコードとしてテーブルに追加させる。その後、ユーザデータの部分書き換えがアドレス「ａｄｄｒ２」で発生すると、ＣＰＵ３は、その部分書き換え前のユーザデータと部分書き換え後のユーザデータとの差分を示す差分データ「Δｄ２」、そのアドレス「ａｄｄｒ２」、テーブルを初期化した時点からの発生回数「２」を１レコードとしてテーブルに追加させる。これ以降、ＣＰＵ３は、ユーザデータの部分書き換えが発生する毎に同様の処理を繰返して行う。
【００１６】
次いで、ＣＰＵ３は、誤り訂正検出のチェック要求が発生したか否かを判定すると共に（Ｓ５）、書き換え回数が予め規定されている第１の所定回数に達したか否かを判定する（Ｓ６）。この場合、ＣＰＵ３は、例えば誤り訂正検出のチェックを行うためのタイマをカウントし、カウント値が予め規定されている第１の所定値に達した否かを判定することで、誤り訂正検出のチェック要求が発生したか否かを判定する。第１の所定値は、メモリアクセスのスループット（効率的なメモリアクセス）及び誤り訂正検出の能力（ユーザデータの冗長性）のうち何れを優先するかにより設定される。即ち、誤り訂正検出の能力よりもメモリアクセスのスループットを優先する場合であれば、誤り訂正検出を行う頻度は相対的に低く設定され、第１の所定値は相対的に大きな値に設定される。一方、メモリアクセスのスループットよりも誤り訂正検出の能力を優先する場合であれば、誤り訂正検出を行う頻度は相対的に高く設定され、第１の所定値は相対的に小さな値に設定される。第１の所定回数も同様であり、誤り訂正検出の能力よりもメモリアクセスのスループットを優先する場合であれば、第１の所定回数は相対的に大きな値に設定される。一方、メモリアクセスのスループットよりも誤り訂正検出の能力を優先する場合であれば、第１の所定回数は相対的に小さな値に設定される。尚、第１の所定回数が「１」に設定された場合には、ユーザデータの部分書き換えが発生する毎に、誤り訂正検出を行うことになり、誤り訂正検出の能力をより高めることができる。
【００１７】
ＣＰＵ３は、誤り訂正検出のチェックを行うためのタイマをカウント値が第１の所定値に達したと判定し、誤り訂正検出のチェック要求が発生したと判定すると（Ｓ５：ＹＥＳ）、その時点で部分書き換え情報がテーブルに格納されているか否かを判定する（Ｓ７）。ＣＰＵ３は、部分書き換え情報がテーブルに格納されていると判定すると（Ｓ７：ＹＥＳ）、現在のユーザデータ（部分書き換え後のユーザデータ）に対して差分データを反映させる（Ｓ８）。即ち、ＣＰＵ３は、部分書き換え前のユーザデータが「Ａ」、部分書き換え後のユーザデータが「Ｂ」であれば、差分データとして「Ａ−Ｂ」を計算し、「Ｂ＋（Ａ−Ｂ）＝Ａ」を計算させる（差分データを書き戻す）。
【００１８】
そして、ＣＰＵ３は、誤り訂正検出命令を誤り訂正検出回路９に出力し、その差分データを反映したユーザデータに対して、部分書き換え前にＥＣＣ回路６により生成させたパリティデータを適用して当該ユーザデータの誤り訂正検出を行わせる（Ｓ９）。このとき、ＣＰＵ３は、ユーザデータの誤り訂正検出を行わせた後に、第１の所定値を初期化する。これ以降、ＣＰＵ３は、ステップＳ３に戻り、ステップＳ３以降を繰返して行う。尚、ＣＰＵ３は、誤り訂正検出のチェック要求が発生したと判定したが（Ｓ５：ＹＥＳ）、部分書き換え情報がテーブルに格納されていないと判定すると（Ｓ７：ＮＯ）、ユーザデータの誤り訂正検出を行わせることなく、ステップＳ３に戻り、ステップＳ３以降を繰返して行う。
【００１９】
又、ＣＰＵ３は、書き換え回数が第１の所定回数に達した判定すると（Ｓ６：ＹＥＳ）、この場合も、現在のユーザデータ（部分書き換え後のユーザデータ）に対して差分データを反映させる（Ｓ８）。そして、ＣＰＵ３は、誤り訂正検出命令を誤り訂正検出回路９に出力し、その差分データを反映したユーザデータに対して、部分書き換え前にＥＣＣ回路６により生成させたパリティデータを適用して当該ユーザデータの誤り訂正検出を行わせる（Ｓ９）。このとき、ＣＰＵ３は、ユーザデータの誤り訂正検出を行わせた後に、第１の所定回数を初期化する。これ以降、ＣＰＵ３は、ステップＳ３に戻り、ステップＳ３以降を繰返して行う。
【００２０】
以上に説明したように第１の実施形態によれば、誤り訂正検出装置２において、ユーザデータの部分書き換えが発生する毎に、その部分書き換えによる差分データを、その部分書き換えが発生したアドレスと対応付けてテーブルに格納する。そして、ユーザデータの誤り訂正検出を行う際には、その部分書き換え後のユーザデータに対して差分データを反映し、その差分データを反映したユーザデータに対して部分書き換え前のパリティデータを適用して当該ユーザデータの誤り訂正検出を行うようにした。即ち、ＥＣＣパリティを計算した時点のユーザデータからの差分を示す差分データを保持し、その差分データを部分書き換え後のユーザデータに対して常に反映可能とすることで、部分書き換え前のユーザデータを常に生成可能とした。これにより、ユーザデータの部分書き換え時にＥＣＣパリティの再計算を行う必要がないので、メモリアクセスを効率良く行うことができる。又、ＥＣＣパリティが無効となる期間が発生することもないので、ユーザデータの冗長性による性能低下を防止することができる。その結果、効率的なメモリアクセスと、ユーザデータの冗長性とのトレードオフを解消することができる。
【００２１】
又、ユーザデータの誤り訂正検出の要求が発生したこと、又は書き換え回数が第１の所定回数に達したことを条件とし、そのユーザデータの誤り訂正検出を行うようにした。これにより、ユーザデータの誤り訂正検出を行う頻度を、誤り訂正検出の要求や第１の所定回数により調整することができる。即ち、誤り訂正検出の能力よりもメモリアクセスのスループットを優先する場合であれば、誤り訂正検出を行う頻度を相対的に低くするように誤り訂正検出の要求や第１の所定回数を設定すれば良い。一方、メモリアクセスのスループットよりも誤り訂正検出の能力を優先する場合であれば、誤り訂正検出を行う頻度を相対的に高くするように誤り訂正検出の要求や第１の所定回数を設定すれば良い。
【００２２】
尚、以上は、ユーザデータの誤り訂正検出の要求が発生したか否かの判定と、書き換え回数が第１の所定回数に達したか否かの判定とを行うようにしたが、ユーザデータの誤り訂正検出の要求が発生したか否かの判定のみを行うようにしても良い。即ち、ユーザデータの誤り訂正検出の要求が発生したことを、書き換え回数が第１の所定回数に達したことよりも優先しても良い。このように構成すれば、書き換え回数に依存することなく、ユーザデータの誤り訂正検出を行うことができる。
【００２３】
（第２の実施形態）
次に、本発明の第２の実施形態について、図６を参照して説明する。尚、上記した第１の実施形態と同一部分については説明を省略し、異なる部分について説明する。第２の実施形態は、ユーザデータの誤り訂正検出を行うことに加え、ＥＣＣパリティの再計算を行う構成である。
【００２４】
ＣＰＵ３は、ユーザデータの部分書き換えが発生したと判定し（Ｓ３：ＹＥＳ）、部分書き換え情報として１レコードをテーブルに追加させると（Ｓ４）、ＥＣＣパリティの再計算の要求が発生したか否かを判定し（Ｓ１１）、書き換え回数が予め規定されている第２の所定回数に達したか否かを判定する共に（Ｓ１２）、誤り訂正検出のチェック要求が発生したか否かを判定する（Ｓ５）。この場合、ＣＰＵ３は、例えばＥＣＣパリティを再計算させるためのタイマをカウントし、カウント値が予め規定されている第２の所定値に達した否かを判定することで、ＥＣＣパリティの再計算の要求が発生したか否かを判定する。第２の所定値は、テーブルのサイズやユーザデータの部分書き換えが発生する頻度により設定される。即ち、テーブルのサイズが相対的に小さかったりユーザデータの部分書き換えが発生する頻度が相対的に高かったりする場合であれば、ＥＣＣパリティを再計算させる頻度は相対的に高く設定され、第２の所定値は相対的に小さな値に設定される。一方、テーブルのサイズが相対的に大きかったりユーザデータの部分書き換えが発生する頻度が相対的に低かったりする場合であれば、ＥＣＣパリティを再計算させる頻度は相対的に低く設定され、第２の所定値は相対的に大きな値に設定される。第２の所定回数も同様であり、テーブルのサイズが相対的に小さかったりユーザデータの部分書き換えが発生する頻度が相対的に高かったりする場合であれば、第２の所定回数は相対的に小さな値に設定される。一方、テーブルのサイズが相対的に大きかったりユーザデータの部分書き換えが発生する頻度が相対的に低かったりする場合であれば、第２の所定回数は相対的に大きな値に設定される。尚、第２の所定回数が「１」に設定された場合には、ユーザデータの部分書き換えが発生する毎に、ＥＣＣパリティの再計算を行うことになり、この場合も、誤り訂正検出の能力をより高めることができる。
【００２５】
ＣＰＵ３は、ＥＣＣパリティの再計算を行うためのタイマのカウント値が第２の所定値に達したと判定し、ＥＣＣパリティの再計算の要求が発生したと判定すると（Ｓ１１：ＹＥＳ）、その時点で部分書き換え情報がテーブルに格納されているか否かを判定する（Ｓ１３）。ＣＰＵ３は、部分書き換え情報がテーブルに格納されていると判定すると（Ｓ１３：ＹＥＳ）、ＥＣＣパリティの計算命令をＥＣＣ回路６に出力し、その部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算させてパリティデータを再生成させる。そして、ＣＰＵ３は、その再生成されたパリティデータを当該部分書き換えが発生したユーザデータに付与させる（Ｓ１４）。このとき、ＣＰＵ３は、ＥＣＣパリティを再計算させた後に、第２の所定値を初期化する。これ以降、ＣＰＵ３は、ステップＳ２に戻り、図２に示したテーブルを初期化した後に、ステップＳ３以降を繰返して行う。尚、ＣＰＵ３は、ＥＣＣパリティの再計算の要求が発生したと判定したが（Ｓ１１：ＹＥＳ）、部分書き換え情報がテーブルに格納されていないと判定すると（Ｓ１３：ＮＯ）、ＥＣＣパリティを再計算させることなく、ステップＳ３に戻り、ステップＳ３以降を繰返して行う。
【００２６】
又、ＣＰＵ３は、書き換え回数が第２の所定回数に達した判定すると（Ｓ１２：ＹＥＳ）、この場合も、ＥＣＣパリティの計算命令をＥＣＣ回路６に出力し、その部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算させてパリティデータを再生成させる。そして、ＣＰＵ３は、その再生成されたパリティデータを当該部分書き換えが発生したユーザデータに付与させる（Ｓ１４）。このとき、ＣＰＵ３は、ＥＣＣパリティを再計算させた後に、第２の所定回数を初期化する。これ以降、ＣＰＵ３は、ステップＳ２に戻り、図２に示したテーブルを初期化した後に、ステップＳ３以降を繰返して行う。
【００２７】
以上に説明したように第２の実施形態によれば、ユーザデータのうち少なくとも部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算してパリティデータを再生成し、テーブルを初期化するようにした。これにより、効率的なメモリアクセスと、ユーザデータの冗長性とのトレードオフを解消することができることに加え、記憶領域が有限であるテーブルを効率的に利用することができる。
【００２８】
又、ＥＣＣパリティの再計算の要求が発生したこと、又は書き換え回数が第２の所定回数に達したことを条件とし、そのＥＣＣパリティの再計算を行うようにした。これにより、ＥＣＣパリティの再計算を行う頻度を、ＥＣＣパリティの再計算の要求や第２の所定回数により調整することができる。即ち、テーブルのサイズが相対的に小さかったりユーザデータの部分書き換えが発生する頻度が相対的に高かったりする場合であれば、ＥＣＣパリティの再計算を行う頻度を相対的に高くするようにＥＣＣパリティの再計算の要求や第２の所定回数を設定すれば良い。一方、テーブルのサイズが相対的に大きかったりユーザデータの部分書き換えが発生する頻度が相対的に低かったりする場合であれば、ＥＣＣパリティの再計算を行う頻度を相対的に低くするようにＥＣＣパリティの再計算の要求や第２の所定回数を設定すれば良い。
【００２９】
尚、以上は、ＥＣＣパリティの再計算の要求が発生したか否かの判定と、書き換え回数が第２の所定回数に達したか否かの判定とを行うようにしたが、ＥＣＣパリティの再計算の要求が発生したか否かの判定のみを行うようにしても良い。即ち、ＥＣＣパリティの再計算の要求が発生したことを、書き換え回数が第２の所定回数に達したことよりも優先しても良い。このように構成すれば、書き換え回数に依存することなく、ＥＣＣパリティの再計算を行うことができる。
【００３０】
（第３の実施形態）
次に、本発明の第３の実施形態について、図７を参照して説明する。尚、上記した第１の実施形態と同一部分については説明を省略し、異なる部分について説明する。第３の実施形態は、第１の実施形態と第２の実施形態とを組み合わせた構成である。
【００３１】
ＣＰＵ３は、ユーザデータの部分書き換えが発生したと判定し（Ｓ３：ＹＥＳ）、部分書き換え情報として１レコードをテーブルに追加させると（Ｓ４）、ＥＣＣパリティの再計算の要求が発生したか否かを判定し（Ｓ１１）、書き換え回数が第２の所定回数に達したか否かを判定し（Ｓ１２）、誤り訂正検出のチェック要求が発生したか否かを判定すると共に（Ｓ５）、書き換え回数が第１の所定回数に達したか否かを判定する（Ｓ６）。
【００３２】
ＣＰＵ３は、ＥＣＣパリティの再計算の要求が発生したと判定し（Ｓ１１：ＹＥＳ）、その時点で部分書き換え情報がテーブルに格納されていると判定すると（Ｓ１３：ＹＥＳ）、又は書き換え回数が第２の所定回数に達したと判定すると（Ｓ１２：ＹＥＳ）、ＥＣＣパリティの計算命令をＥＣＣ回路６に出力し、その部分書き換えが発生したユーザデータに対してＥＣＣパリティを再計算させてパリティデータを再生成させる。そして、ＣＰＵ３は、その再生成されたパリティデータを当該部分書き換えが発生したユーザデータに付与させる（Ｓ１４）。これ以降、ＣＰＵ３は、ステップＳ２に戻り、図２に示したテーブルを初期化した後に、ステップＳ３以降を繰返して行う。
【００３３】
又、ＣＰＵ３は、誤り訂正検出のチェック要求が発生したと判定し（Ｓ５：ＹＥＳ）、その時点で部分書き換え情報がテーブルに格納されていると判定すると（Ｓ７：ＹＥＳ）、又は書き換え回数が第１の所定回数に達したと判定すると（Ｓ６：ＹＥＳ）、現在のユーザデータ（部分書き換え後のユーザデータ）に対して差分データを反映させる（Ｓ８）。そして、ＣＰＵ３は、誤り訂正検出命令を誤り訂正検出回路９に出力し、その差分データを反映したユーザデータに対して、部分書き換え前にＥＣＣ回路６により生成させたパリティデータを適用して当該ユーザデータの誤り訂正検出を行わせる（Ｓ９）。これ以降、ＣＰＵ３は、ステップＳ３に戻り、ステップＳ３以降を繰返して行う。
【００３４】
以上に説明したように第３の実施形態によれば、上記した第２の実施形態と同様の作用効果を得ることができる。即ち、効率的なメモリアクセスと、ユーザデータの冗長性とのトレードオフを解消することができることに加え、記憶領域が有限であるテーブルを効率的に利用することができる。
【００３５】
（その他の実施形態）
本発明は、上記した実施形態にのみ限定されるものではなく、以下のように変形又は拡張することができる。又、複数の変形例を組み合わせても良い。
ＥＣＣパリティの計算を行うＥＣＣ回路を設けることで、ＥＣＣパリティの計算を行う処理をハードウェアで実現する構成に限らず、ＥＣＣパリティの計算を行うプログラムをＣＰＵ３が実行する制御プログラムに組み込みことで、ＥＣＣパリティの計算を行う処理をソフトウェアで実現しても良い。
ＲＡＭ５の記憶領域の一部にテーブルを保持する構成に限らず、ＲＡＭ５とは別の記憶手段を設け、その別の記憶手段にテーブルを保持しても良い。
【符号の説明】
【００３６】
図面中、２は誤り訂正検出装置、５は不揮発性のＲＡＭ（不揮発性のランダムアクセスメモリ）、６はＥＣＣ回路（パリティデータ生成手段）、９は誤り訂正検出回路（誤り訂正検出手段）、１０は差分データ生成回路（差分データ生成手段）、１１はテーブル保持回路（テーブル保持手段）である。
【図１】
2015138275.tif 000003
【図２】
2015138275.tif 000004
【図３】
2015138275.tif 000005
【図４】
2015138275.tif 000006
【図５】
2015138275.tif 000007
【図６】
2015138275.tif 000008
【図７】
2015138275.tif 000009