(57)【要約】【課題】経年変化に起因して生じず誤りの誤り訂正を行う。【解決手段】本発明の情報処理装置は、データを格納する複数のブロックからなり、前記複数のブロックの各々に対するデータの再書込みが可能な記憶部と、前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行う処理部と、を有する。【選択図】図２
2012243141.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する複数のブロックからなり、前記複数のブロックの各々に対するデータの再書込みが可能な記憶部と、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行う処理部と、を有することを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記処理部は、前記複数のブロックの各々について、該ブロックに格納されているデータの誤り数を定期的に検出し、該検出した誤り数が多いブロックから順に再書込みを行うことを特徴とする情報処理装置。
【請求項３】
請求項２記載の情報処理装置において、
前記処理部は、前記検出した誤り数に応じて前記複数のブロックをグループ分けし、前記検出した誤り数が多いブロックが属するグループから順に、該グループに属するブロックに対する再書込みを行うことを特徴とする情報処理装置。
【請求項４】
請求項３記載の情報処理装置において、
前記ブロックに対する再書込みを行っている場合に再書込みの中断の要求が入力されると、前記ブロックが属するグループに属する全てのブロックに対する再書込みを行った後に、処理を中断することを特徴とする情報処理装置。
【請求項５】
情報処理装置の制御方法であって、
複数のブロックの各々にデータを格納し、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行うことを特徴とする情報処理装置の制御方法。
【請求項６】
請求項５記載の情報処理装置の制御方法において、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り数を定期的に検出し、該検出した誤り数が多いブロックから順に再書込みを行うことを特徴とする情報処理装置の制御方法。
【請求項７】
請求項６記載の情報処理装置の制御方法において、
前記検出した誤り数に応じて前記複数のブロックをグループ分けし、前記検出した誤り数が多いブロックが属するグループから順に、該グループに属するブロックに対する再書込みを行うことを特徴とする情報処理装置の制御方法。
【請求項８】
請求項７記載の情報処理装置の制御方法において、
前記ブロックに対する再書込みを行っている場合に再書込みの中断の要求が入力されると、前記ブロックが属するグループに属する全てのブロックに対する再書込みを行った後に、処理を中断することを特徴とする情報処理装置の制御方法。
【請求項９】
情報処理装置に、
複数のブロックの各々にデータを格納する処理と、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行う処理と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを格納する情報処理装置、情報処理装置の制御方法、および、プログラムに関する。
【背景技術】
【０００２】
携帯電話、スマートフォンなどの情報処理装置は、一般に、プログラムを実行するＣＰＵ（Central Processing Unit）と、ＣＰＵが実行するプログラムなどのデータ（以下、プログラムデータと称する）を格納するメモリと、を有する。
【０００３】
近年、上述したメモリがＲＡＭ（Random Access Memory）およびＮＡＮＤフラッシュメモリで構成される情報処理装置が主流となりつつある。このような情報処理装置においては、ＣＰＵは、ＲＡＭおよびＮＡＮＤフラッシュメモリと接続され、ＮＡＮＤフラッシュメモリに格納されているプログラムデータを読み出し、読み出したプログラムデータをＲＡＭに転送してプログラムを実行する。
【０００４】
一般に、ＮＡＮＤフラッシュメモリは、メモリセルの構造上、プログラムデータの読み出しを繰り返し行うと誤りが発生することがある。このプログラムデータの読み出しを繰り返し行うことにより誤りが発生する現象は、リードディスターブ現象と呼ばれる。プログラムデータに誤りがあると、ＣＰＵがプログラムを正しく実行できなくなることがある。
【０００５】
そこで、一般に、ＮＡＮＤフラッシュメモリにおいては、プログラムデータとそのプログラムデータの誤り訂正を行うためのＥＣＣ（Error Check and Correction）データとが対応つけて格納される。
【０００６】
図９は、ＮＡＮＤフラッシュメモリの一般的なデータ構成を示す図である。
【０００７】
図９に示すように、ＮＡＮＤフラッシュメモリは、プログラムデータを格納する領域Ｐとそのプログラムデータの誤り訂正を行うためのＥＣＣデータを格納する領域Ｅとからなるページをｍ個まとめたブロックを複数有する。このようなデータ構成とすることで、数ビットの誤りであれば、プログラムデータと同じページに格納されているＥＣＣデータを用いて誤り訂正を行うことができる。ＮＡＮＤフラッシュメモリにおいては、データの書込みはページ単位で行われ、格納されているデータの消去はブロック単位で行われる。なお、ＥＣＣデータを用いて誤り訂正を行うことができるビット数には上限がある。
【０００８】
特許文献１（特開２００８−１９８３１０号公報）には、プログラムを実行するためにプログラムデータを読み出すとともに、そのプログラムデータの誤り検出を行い、誤りがあると誤り訂正を行った誤り訂正後のプログラムデータの、そのプログラムデータが格納されているブロックに対する再書込みを行う情報処理装置が開示されている。なお、再書込みとは、ブロックに格納されているプログラムデータを一時的に別の未使用ブロックに退避し、そのブロックに格納されているデータの消去後に元のプログラムデータ（誤り訂正後のデータ）をそのブロックに書き込むことである。この情報処理装置によれば、上述したリードディスターブ現象に起因するプログラムデータの誤りの誤り訂正を行い、誤りの無いリフレッシュされたプログラムデータをブロックに格納することができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１９８３１０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＮＡＮＤフラッシュメモリにおいては、上述したリードディスターブ現象に起因する誤りのほかに、経年変化に起因する誤りも生じる。特許文献１に開示の情報処理装置においては、プログラムデータの読み出しを契機として誤り訂正が行われる。そのため、頻繁に読み出しが行われるプログラムデータについては、頻繁に誤り訂正も行われるのに対し、頻繁に読み出しが行われないプログラムデータについては、誤り訂正も長期間にわたって行われないことがある。長期間にわたって誤り訂正が行われないと、経年変化に起因して生じる誤りが蓄積し、ＥＣＣデータを用いて誤り訂正を行うことができるビット数の上限を超えてしまい、誤り訂正を行うことができなくなるおそれがある。
【００１１】
本発明の目的は、経年変化に起因して生じる誤りの誤り訂正を行うことができる情報処理装置、情報処理装置の制御方法、および、プログラムを提供することになる。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明の情報処理装置は、
データを格納する複数のブロックからなり、前記複数のブロックの各々に対するデータの再書込みが可能な記憶部と、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行う処理部と、を有する。
【００１３】
上記目的を達成するために本発明の情報処理装置の制御方法は、
情報処理装置の制御方法であって、
複数のブロックの各々にデータを格納し、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行う。
【００１４】
上記目的を達成するために本発明のプログラムは、
情報処理装置に、
複数のブロックの各々にデータを格納する処理と、
前記複数のブロックの各々について、該ブロックに格納されているデータの誤り検出を定期的に行い、誤りを検出すると、該検出した誤りの誤り訂正を行い、誤り訂正後のデータの前記ブロックに対する再書込みを行う処理と、を実行させる。
【発明の効果】
【００１５】
本発明によれば、経年変化に起因して生じる誤りの誤り訂正を行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態の情報処理装置の構成を示すブロック図である。
【図２】図１に示す制御部の構成を示すブロック図である。
【図３】図２に示す制御部のチェックサム計算時の動作を示すフローチャートである。
【図４】図２に示すＮＡＮＤフラッシュメモリが格納する管理テーブルの構成の一例を示す図である。
【図５】図２に示すＮＡＮＤフラッシュメモリが格納する管理テーブルの状態の一例を示す図である。
【図６】図２に示す制御部の再書込み時の動作を示すフローチャートである。
【図７】図２に示すＮＡＮＤフラッシュメモリが格納する管理テーブルの状態の他の一例を示す図である。
【図８】本発明の第２の実施形態の情報処理装置の構成を示すブロック図である。
【図９】ＮＡＮＤフラッシュメモリのデータ構成を示す図である。
【発明を実施するための形態】
【００１７】
以下に、本発明を実施するための形態について図面を参照して説明する。
【００１８】
（第１の実施形態）
図１は、本発明の第１の実施形態の情報処理装置１００の構成を示すブロック図である。なお、図１においては、情報処理装置１００が携帯電話である場合を例として説明するが、本発明はこれに限られるものではなく、情報処理装置１００としては、スマートフォン、ＰＤＡ（Personal Digital Assistants）、ポータブル音楽プレーヤー、電子手帳、パーソナルコンピュータ、トランシーバ、携帯型ゲーム機など種々のものがある。
【００１９】
図１に示す情報処理装置１００は、アンテナ１０１と、送受信部１０２と、スピーカ１０３と、マイク１０４と、表示部１０５と、操作部１０６と、制御部１０７と、電源部１０８と、を有する。
【００２０】
送受信部１０２は、制御部１０７の制御に従い、アンテナ１０１を介して電波を送受信する。
【００２１】
スピーカ１０３は、制御部１０７の制御に従い、音を出力する。
【００２２】
マイク１０４は、制御部１０７の制御に従い、周辺の音を集音し、音データを制御部１０７に出力する。
【００２３】
表示部１０５は、制御部１０７の制御に従い、種々の映像を表示する。
【００２４】
操作部１０６は、ユーザーの操作入力に応じた信号を制御部１０７に出力する。なお、操作部１０６の具体例としては、タッチパネルなどがある。
【００２５】
制御部１０７は、操作部１０６から出力される信号に応じて種々のプログラムを実行し、送受信部１０２、スピーカ１０３、マイク１０４、表示部１０５などを制御する。
【００２６】
電源部１０８は、上述した各部に電力を供給する。
【００２７】
次に、制御部１０７の内部構成について説明する。
【００２８】
図２は、制御部１０７の構成を示すブロック図である。
【００２９】
図２に示す制御部１０７は、ＮＡＮＤフラッシュメモリ２０１と、ＣＰＵ２０２と、ＲＡＭ２０３と、を有する。ＣＰＵ２０２は、処理部の一例である。
【００３０】
ＮＡＮＤフラッシュメモリ２０１は、図９に示すように、プログラムデータを格納する領域Ｐとそのプログラムデータの誤り訂正を行うためのＥＣＣデータを格納するための領域Ｅとからなるページをｍ個まとめたブロックを複数有する。なお、ＥＣＣデータは、プログラムデータの書き込み時に計算され、そのプログラムデータと同じページの領域Ｅに書き込まれる。一般に、１つのページの容量は、領域Ｐおよび領域Ｅを合わせて２１１２バイトである。ＥＣＣデータを用いて誤り訂正を行う方式には、一例として、プログラムデータ５１２バイトに対して１６ビットのＥＣＣデータを付加して１ビットの誤り訂正を行う方式や、４ビットの誤り訂正を行う方式などがある。また、プログラムデータの書込みはページ単位で行われ、格納されているプログラムデータの消去はブロック単位で行われ、各ブロックに対してはプログラムデータの再書込みが可能である。
【００３１】
また、ＮＡＮＤフラッシュメモリ２０１は、複数のブロックの各々について、そのブロックのブロック番号とそのブロックに格納されているプログラムデータの誤りビット数とを対応つけた管理テーブルを格納する。
【００３２】
ＣＰＵ２０２は、ＮＡＮＤフラッシュメモリ２０１に格納されているプログラムデータを読み出し、ＲＡＭ２０３に転送してプログラムを実行する。
【００３３】
また、ＣＰＵ２０２は、定期的に、ＮＡＮＤフラッシュメモリ２０１を構成する複数のブロックの各々について、そのブロックに含まれるページ毎に、そのページに格納されているプログラムデータのチェックサムを計算して誤り検出を行い、誤りを検出すると、そのプログラムデータと同じページに格納されているＥＣＣデータを用いて誤り訂正を行い、誤り訂正後のデータの再書込みを行う。
【００３４】
ＲＡＭ２０３は、ＣＰＵＰ２０２から転送されたプログラムデータを一時的に格納する。
【００３５】
次に、本実施形態の制御部１０７の動作について説明する。
【００３６】
図３は、制御部１０７のチェックサムの計算時の動作を示すフローチャートである。
【００３７】
なお、以下では、ＥＣＣデータを用いたプログラムデータの誤り訂正能力は４ビットであるとする。
【００３８】
ＣＰＵ２０２は、定期的に、ＮＡＮＤフラッシュメモリ２０１を構成する複数のブロックの各々について、そのブロックに含まれるページ毎に、そのページに格納されているプログラムデータのチェックサムを計算し（ステップＳ１０１）、計算結果に応じて、そのプログラムデータの誤りビット数を検出し、検出した誤りビット数をＲＡＭ２０３に一時的に格納させる。
【００３９】
全てのブロックについて、各ブロックに含まれる全てのページに格納されているプログラムデータの誤りビット数の検出が終了すると、ＣＰＵ２０２は、各ブロックにおけるプログラムデータの誤りビット数の合計を、そのブロックのブロック番号に対応させて管理テーブルに格納する（ステップＳ１０２）。
【００４０】
図４は、管理テーブル４０１の構成の一例を示す図である。
【００４１】
図４に示すように、ＮＡＮＤフラッシュメモリ２０１は、各ブロックのブロック番号と、そのブロックに格納されているプログラムデータの誤りビット数とを対応させた管理テーブル４０１を格納する。
【００４２】
なお、上述したように、ＣＰＵ２０２は、定期的に、各ブロックに格納されているプログラムデータのチェックサムの計算を行い、誤りビット数の検出を行う。管理テーブル４０１においては、直近の誤りビット数の検出の結果（最新）に加えて、過去４回分の誤りビット数の検出の結果（＋１〜＋４）が格納される。
【００４３】
図４においては、例えば、ブロック番号Ｍ＝０のブロックは、最新の（最後のチェックサムの計算を行った際の）誤りビット数が０であり、また、１回前から４回前のチャックサムの計算を行った際の誤りビット数も０であることを示す。また、例えば、ブロック番号Ｍ＝１００のブロックは、最新の（最後のチェックサムの計算を行った際の）誤りビット数が３であり、また、１回前から４回前のチェックサムの計算を行った際の誤りビット数が２であることを示す。
【００４４】
再び、図３を参照すると、ＣＰＵ２０２は、ブロック番号Ｍ＝０とし（ステップＳ１０３）、図４に示す管理テーブル４０１において、ブロック番号Ｍに対応して格納されている誤りビット数が５回連続して４ビット以上であるか否かを判定する（ステップＳ１０４）。なお、上記の判定基準は一例であり、例えば、最新の誤りビット数が４ビット以上であるか否かなどを判定基準としてもよい。また、本実施形態においては、誤りビット数が５回連続して４ビット以上であるか否かを判定基準としているため、管理テーブルにおいては過去４回分の誤りビット数を格納することとしているが、判定基準に応じて管理テーブルが何回分の誤りビット数を格納するか変えてもよい。
【００４５】
ブロック番号Ｍに対応して格納されている誤りビット数が５回連続して４ビット以上である場合には（ステップＳ１０４：Ｙｅｓ）、ＣＰＵ２０２は、ブロック番号Ｍをグループ１に設定する（ステップＳ１０５）。
【００４６】
ブロック番号Ｍに対応して格納されている誤りビット数が５回連続して４ビット以上でない場合には（ステップＳ１０４：Ｎｏ）、ＣＰＵ２０２は、ブロック番号Ｍに対応して格納されている最新の誤りビット数が３ビット以上であるか否かを判定する（ステップＳ１０６）。
【００４７】
ブロック番号Ｍに対応して格納されている最新の誤りビット数が３ビット以上である場合には（ステップＳ１０６：Ｙｅｓ）、ＣＰＵ２０２は、ブロック番号Ｍをグループ２に設定する（ステップＳ１０７）。
【００４８】
ブロック番号Ｍに対応して格納されている最新の誤りビット数が３ビット以上でない場合には（ステップＳ１０６：Ｎｏ）、ＣＰＵ２０２は、ブロック番号Ｍに対応して格納されている最新の誤りビット数が２ビット以上であるか否かを判定する（ステップＳ１０８）。
【００４９】
ブロック番号Ｍに対応して格納されている最新の誤りビット数が２ビット以上である場合には（ステップＳ１０８：Ｙｅｓ）、ＣＰＵ２０２は、ブロック番号Ｍをグループ３に設定する（ステップＳ１０９）。
【００５０】
ブロック番号Ｍに対応して格納されている最新の誤りビット数が２ビット以上でない場合には（ステップＳ１０８：Ｎｏ）、ＣＰＵ２０２は、ブロック番号Ｍに対応して格納されている最新の誤りビット数が１ビット以上であるか否かを判定する（ステップＳ１１０）。
【００５１】
ブロック番号Ｍに対応して格納されている最新の誤りビット数が１ビット以上である場合には（ステップＳ１１０：Ｙｅｓ）、ＣＰＵ２０２は、ブロックＭをグループ４に設定する（ステップＳ１１１）。
【００５２】
ブロック番号Ｍに対応して格納されている最新の誤りビット数が１ビット以上でない場合には（ステップＳ１１０：Ｎｏ）、ＣＰＵ２０２は、ブロック番号Ｍのグループ分けを行わず、グループ番号Ｍ＝Ｍ＋１とし（ステップＳ１１２）、グループ番号Ｍが最終のブロック番号よりも大きいか否かを判定する（ステップＳ１１３）。
【００５３】
グループ番号Ｍが最終のブロック番号よりも大きくない場合には（ステップＳ１１３：Ｎｏ）、ＣＰＵ２０２は、ステップＳ１０４の処理に戻る。
【００５４】
グループ番号Ｍが最終のブロック番号よりも大きい場合には（ステップＳ１１３：Ｙｅｓ）、ＣＰＵ２０２は、ブロック毎に設定したグループを各ブロックに対応させて管理テーブル４０１に格納する。
【００５５】
なお、上述したように、本実施形態においては、ＥＣＣデータを用いたプログラムデータの誤り訂正能力は４ビットであるとする。したがって、プログラムデータの誤りビット数が５ビット以上になると誤り訂正を行うことができなくなるおそれがある。そこで、ＣＰＵ２０２は、各ブロックの誤りビット数を常に監視しており、誤りビット数が５回連続して４ビット以上であるブロックを検出した時点で、図３に示す各ブロックのグループ分けを行う。
【００５６】
図５は、グループ分け後の管理テーブル４０１の状態を示す図である。
【００５７】
図５に示すように、ＮＡＮＤフラッシュメモリ２０１は、各ブロックのブロック番号と、そのブロック番号に対して設定したグループを示す情報とを対応させて格納する。ここで、例えば、ブロック１およびブロック３は、最新のビット誤り数が１であるので、図３に示すフローに従い、グループ４に分類される。また、ブロック１００は、最新のビット誤り数が２であるので、図３に示すフローに従い、グループ３に分類される。また、ブロック１０１は、誤りビット数が５回連続して４ビット以上であるので、図３に示すフローに従い、グループ１に分類される。また、ブロック１０２は、最新のビット誤り数が２であるので、図３に示すフローに従い、グループ３に分類される。また、ブロック０およびブロック２は、最新の誤りビット数が０であるので、いずれのグループにも分類されない。
【００５８】
図６は、制御部１０７の再書込み時の動作を示すフローチャートである。
【００５９】
図３に示すステップＳ１１４の処理の終了後、ＣＰＵ２０２は、管理テーブル４０１に格納されている、ブロック番号とそのブロック番号に対して設定されたグループを示す情報とを読み出す（ステップＳ２０１）。
【００６０】
次に、ＣＰＵ２０２は、設定されたグループを示す情報に応じてブロック番号を並べなおす（ステップＳ２０２）。その結果、ＣＰＵ２０２は、例えば、グループ１＝ブロック番号１０１、グループ２＝ブロック番号１００、グループ３＝ブロック番号１０２、グループ４＝ブロック番号１、ブロック番号３というように、グループ毎に、そのグループに属するブロック番号を管理する。
【００６１】
次に、ＣＰＵ２０２は、グループ１にブロック番号が属するブロックについて、誤りが検出されたプログラムデータの誤り訂正を行い、そのブロックに対する再書込みを行う（ステップＳ２０３）。ここで、上述したように、グループ１に属するブロックにおいては、４ビットのビット誤りが検出されているため、さらに誤りが発生すると、ＥＣＣデータを用いた誤り訂正能力を超え、誤り訂正ができなくなる。そこで、グループ１にブロック番号が属するブロックから優先的に再書込みを行うことで、ＥＣＣデータを用いた誤り訂正能力を超え、誤り訂正ができなくなるおそれを低減することができる。
【００６２】
１つのブロックに対する再書込みが終了すると、ＣＰＵ２０２は、グループ１にブロック番号が属する全てのブロックに対する再書込みが終了したか否かを判定する（ステップＳ２０４）。
【００６３】
グループ１にブロック番号が属する全てのブロックに対する再書込みが終了していない場合には（ステップＳ２０４：Ｎｏ）、ステップＳ２０３の処理に戻り、再書込みが終了していないブロックに対する再書込みを行う。
【００６４】
グループ１にブロック番号が属する全てのブロックに対する再書込みが終了した場合には（ステップＳ２０４：Ｙｅｓ）、ＣＰＵ２０２は、グループ１に属する全てのブロック番号に対応して格納されているブロック情報をクリアする（ステップＳ２０５）。なお、ブロック番号に対応して格納されているブロック情報をクリアするとは、そのブロック番号に対応して格納されている最新の誤りビット数を０にすることを示す。再書込みが終了したブロックのブロック番号に対応するブロック情報をクリアすることで、例えば、後述する再書込みの中断後に、再書込みを再開する場合に、管理テーブル４０１を参照し、再書込みを行っていないブロックを特定することができる。
【００６５】
次に、ＣＰＵ２０２は、再書込みの中断の要求があり、再書込みを中断する必要があるか否かを判定する（ステップＳ２０６）。なお、再書込みの中断の要求としては、例えば、操作部１０６を介して、優先順位の高い所定のプログラムの実行の要求などがある。
【００６６】
再書込みを中断する必要がある場合には（ステップＳ２０６：Ｙｅｓ）、ＣＰＵ２０２は、処理を終了する。
【００６７】
再書込みを中断する必要がない場合には（ステップＳ２０６：Ｎｏ）、ＣＰＵ２０２は、グループ２にブロック番号が属するブロックについて、誤りが検出されたプログラムデータの誤り訂正を行い、そのブロックに対する再書込みを行う（ステップＳ２０７）。ここで、上述したように、グループ２にブロック番号が属するブロックは、グループ３およびグループ４にブロック番号が属するブロックよりも誤りビット数が多いため、グループ３およびグループ４にブロック番号が属するブロックよりも優先的に再書込みを行う必要がある。
【００６８】
１つのブロックに対する再書込みが終了すると、ＣＰＵ２０２は、グループ２にブロック番号が属する全てのブロックに対する再書込みが終了したか否かを判定する（ステップＳ２０８）。
【００６９】
グループ２にブロック番号が属する全てのブロックに対する再書込みが終了していない場合には（ステップＳ２０８：Ｎｏ）、ステップＳ２０７の処理に戻り、再書込みが終了していないブロックに対する再書込みを行う。
【００７０】
グループ２にブロック番号が属する全てのブロックに対する再書込みが終了した場合には（ステップＳ２０８：Ｙｅｓ）、ＣＰＵ２０２は、グループ２に属する全てのブロック番号に対応して格納されているブロック情報をクリアする（ステップＳ２０９）。
【００７１】
次に、ＣＰＵ２０２は、再書込みを中断する必要があるか否かを判定する（ステップＳ２１０）。
【００７２】
再書込みを中断する必要がある場合には（ステップＳ２１０：Ｙｅｓ）、ＣＰＵ２０２は、処理を終了する。
【００７３】
再書込みを中断する必要がない場合には（ステップＳ２１０：Ｎｏ）、ＣＰＵ２０２は、グループ３にブロック番号が属するブロックについて、誤りが検出されたプログラムデータの誤り訂正を行い、そのブロックに対する再書込みを行う（ステップＳ２１１）。ここで、上述したように、グループ３にブロック番号が属するブロックは、グループ４にグループ番号が属するブロックよりも誤りビット数が多いため、グループ４にブロック番号が属するブロックよりも優先的に再書込みを行う必要がある。
【００７４】
１つのブロックに対する再書込みが終了すると、ＣＰＵ２０２は、グループ３にブロック番号が属する全てのブロックに対する再書込みが終了したか否かを判定する（ステップＳ２１２）。
【００７５】
グループ３にブロック番号が属する全てのブロックに対する再書込みが終了していない場合には（ステップＳ２１２：Ｎｏ）、ステップＳ２１１の処理に戻り、再書込みが終了していないブロックに対する再書込みを行う。
【００７６】
グループ３にブロック番号が属する全てのブロックに対する再書込みが終了した場合には（ステップＳ２１２：Ｙｅｓ）、ＣＰＵ２０２は、グループ３に属する全てのブロック番号に対応して格納されているブロック情報をクリアする（ステップＳ２１３）。
【００７７】
次に、ＣＰＵ２０２は、再書込みを中断する必要があるか否かを判定する（ステップＳ２１４）。
【００７８】
再書込みを中断する必要がある場合には（ステップＳ２１４：Ｙｅｓ）、ＣＰＵ２０２は、処理を終了する。
【００７９】
再書込みを中断する必要がない場合には（ステップＳ２１４：Ｎｏ）、ＣＰＵ２０２は、グループ４にブロック番号が属するブロックについて、誤りが検出されたプログラムデータの誤り訂正を行い、そのブロックに対する再書込みを行う（ステップＳ２１５）。ここで、上述したように、グループ４にブロック番号が属するブロックは、グループ１からグループ３にブロック番号が属するブロックよりも誤りビット数が少なく、再書込みを行う必要性は低いため、グループ１からグループ４にブロック番号が属するブロックの中で最後に再書込みが行われる。
【００８０】
１つのブロックに対する再書込みが終了すると、ＣＰＵ２０２は、グループ４にブロック番号が属する全てのブロックに対する再書込みが終了したか否かを判定する（ステップＳ２１６）。
【００８１】
グループ４にブロック番号が属する全てのブロックに対する再書込みが終了していない場合には（ステップＳ２１６：Ｎｏ）、ステップＳ２１５の処理に戻り、再書込みが終了していないブロックに対する再書込みを行う。
【００８２】
グループ４にブロック番号が属する全てのブロックに対する再書込みが終了した場合には（ステップＳ２１６：Ｙｅｓ）、ＣＰＵ２０２は、グループ４に属する全てのブロック番号に対応して格納されているブロック情報をクリアして（ステップＳ２１７）、処理を終了する。
【００８３】
図７は、グループ４に属するブロック番号が属する全てのブロックに対する再書込みが終了した後に、チェックサムの計算が行われた際の管理テーブル４０１の状態を示す図である。
【００８４】
図７に示すように、誤りが検出されたブロックに対する再書込みが行われることで、各ブロックに格納されているプログラムデータに誤りが検出されなくなる。
【００８５】
このように本実施形態の情報処理装置１００によれば、ＮＡＮＤフラッシュメモリ２０１を構成する複数のブロックの各々について、ブロックに格納されているプログラムデータの誤り検出を定期的に行い、誤りを検出すると誤り訂正を行い、誤り訂正後のプログラムデータをそのブロックに対して再書込みする。
【００８６】
ＮＡＮＤフラッシュメモリ２０１を構成する複数のブロックの各々について、定期的に格納されているデータの誤り検出および誤り訂正を行うため、経年変化に起因して生じる誤りも検出し、訂正することができる。
【００８７】
また、本実施形態の情報処理装置１００によれば、複数のブロックの各々について誤りビット数を検出し、検出した誤りビット数が多いブロックから順に再書込みを行うため、再書込みを中断しても、ＥＣＣデータを用いて誤りを訂正することができるビット数を超えて、プログラムデータに誤りが生じてしまう可能性を低減することができる。
【００８８】
（第２の実施形態）
図８は、本発明の第２の実施形態の情報処理装置８００の構成を示すブロック図である。なお、本発明は、情報処理装置に格納されているデータの誤り訂正を如何に適切に行うかに関するものであるため、本発明に直接関係しない構成については記載を省略する。
【００８９】
図８に示す情報処理装置８００は、記憶部８０１と、処理部８０２と、を有する。
【００９０】
記憶部８０１は、データを格納するとともに、データの再書込みが可能なメモリである。なお、記憶部８０１の具体例としては、ＮＡＮＤフラッシュメモリがある。また、記憶部８０１は、図９に示すＮＡＮＤフラッシュメモリの一般的なデータ構成と同様に、データを格納する所定の容量の複数のブロックからなる。
【００９１】
処理部８０２は、記憶部８０１を構成する複数のブロックの各々について、そのブロックに格納されているデータの誤り検出を定期的に行い、検出した誤りの誤り訂正を行い、誤り訂正後のデータのそのブロックに対する再書込みを行う。
【００９２】
このように本実施形態によれば、情報処理装置８００は、記憶部８０１を構成する複数のブロックの各々について、ブロックに格納されているデータの誤り検出を定期的に行い、検出した誤りの誤り訂正を行い、誤り訂正後のデータのそのブロックに対する再書込みを行う。
【００９３】
複数のブロックの各々について、定期的に格納されているデータの誤り検出を行うため、経年変化に起因する誤りについても、その誤りを検出し、訂正することができる。
【００９４】
なお、本発明の情報処理装置において行われる方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
【符号の説明】
【００９５】
１００，８００    情報処理装置
１０１    アンテナ
１０２    送受信部
１０３    スピーカ
１０４    マイク
１０５    表示部
１０６    操作部
１０７    制御部
１０８    電源部
２０１    ＮＡＮＤフラッシュメモリ
２０２    ＣＰＵ
２０３    ＲＡＭ
４０１    管理テーブル
８０１    記憶部
８０２    処理部
【図１】
2012243141.tif 000003
【図２】
2012243141.tif 000004
【図３】
2012243141.tif 000005
【図４】
2012243141.tif 000006
【図５】
2012243141.tif 000007
【図６】
2012243141.tif 000008
【図７】
2012243141.tif 000009
【図８】
2012243141.tif 000010
【図９】
2012243141.tif 000011