(57)【特許請求の範囲】
【請求項１】
メモリに対してデータの書込又は読出制御を行うメモリ制御装置であって、
前記メモリに接続され、前記メモリに対して前記データの書込み又は読出しを行うインタフェース部と、
前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶する記憶部と、
前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第１の閾値を越えているブロックに対してリフレッシュ処理を行う制御部と、 を有し、
前記制御部は、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が前記第１の閾値以下で且つ第２の閾値よりも大きいブロックに対してメモリチェック処理を行うことを特徴とするメモリ制御装置。
【請求項２】
前記メモリチェック処理は、前記メモリから読み出されたデータに対して、誤り検出を施して誤りビット数を示す情報を生成する誤り検出処理を含み、
前記制御部は、前記複数のブロックのうち前記エラービット数が所定のエラー閾値を超えたデータを含むブロックに対して、前記リフレッシュ処理を行なうことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
電源投入に応じて第１リセット信号を生成する第１リセット信号生成部と、
リセット要求に応じて第２リセット信号を生成する第２リセット信号生成部と、
前記第１リセット信号又は前記第２リセット信号を、前記インタフェース部が有する前記書込み又は読出しの制御情報を初期化する初期化信号として、前記インタフェース部に送出する初期化信号供給部と、
を有し、
前記制御部は、前記初期化信号に応じて前記インタフェース部の前記制御情報が初期化された後に、前記初期化信号が前記第１リセット信号に基づくものであるか否かを判定し、前記第１リセット信号に基づくものであると判定した場合に、前記ブロックアクセス回数情報に基づいて、前記メモリの各々のブロックの前記データの読出し回数が前記第１の閾値又は前記第２の閾値を越えているか否かの判定を行うことを特徴とする請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記記憶部は、電源投入後の最初の前記初期化信号が送出済であることを示すパワーオンリセット済コードを記憶する記憶領域を備え、
前記制御部は、前記初期化信号に応じて前記記憶領域に前記パワーオンリセット済コードが記憶されているか否かを判別し、記憶されていないと判別した場合に、前記レジスタに前記パワーオンリセット済コードを書き込むとともに、前記初期化信号が前記第１リセット信号に基づくものであると判定することを特徴とする請求項３に記載のメモリ制御装置。
【請求項５】
前記データの読出し回数に応じて前記リフレッシュ処理又は前記メモリチェック処理を行う第１のモードと、
前記データの読出し回数に拘わらず前記メモリの各ブロックに対して前記メモリチェック処理を行う第２のモードと、
を備え、
前記制御部は、前記ブロックアクセス回数情報に基づいて、前記第１のモードおよび前記第２のモードのうちの一方を選択して前記メモリチェック処理又は前記リフレッシュ処理を実行することを特徴とする請求項１乃至４のいずれか１に記載のメモリ制御装置。
【請求項６】
前記インタフェース部は、前記ブロックアクセス情報を含む管理情報を前記メモリに書き込み、電源投入に応じて前記管理情報を前記メモリから読み出して前記記憶部に記憶させることを特徴とする請求項１乃至５のいずれか１に記載のメモリ制御装置。
【請求項７】
前記インタフェース部は、前記メモリの全ブロックに対するデータの読出し回数が第３の閾値を越えている場合に、前記ブロックアクセス情報を前記メモリに書き込むことを特徴とする請求項６に記載のメモリ制御装置。
【請求項８】
前記インタフェース部は、前記メモリの複数のブロックうち、データの読出しがあったブロックに対する前記読出し回数が第４の閾値を越えている場合に、前記ブロックアクセス情報を前記メモリに書き込むことを特徴とする請求項６に記載のメモリ制御装置。
【請求項９】
メモリに対してデータの書込又は読出制御を行うメモリ制御方法であって、
前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶するステップと、
前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第１の閾値を越えているブロックに対してリフレッシュ処理を行うステップと、
前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が前記第１の閾値以下で且つ第２の閾値よりも大きいブロックに対してメモリチェック処理を行うステップと、
を含むことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対してデータのアクセスを行うメモリ制御装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
近年、メモリ容量の増大化に伴い、ビット単価で優れているＮＡＮＤ型フラッシュメモリが普及している。かかるＮＡＮＤ型フラッシュメモリでは、大容量化、高集積化に伴い、書き込んだデータの経年劣化の問題や、集中した読出し動作によりデータが正しく読み出せなくなるという問題が顕著化している。これらの問題は、データ保持を担う電荷が年数経過に伴い低下することや、読み出し動作に伴う隣接メモリセルへの微量な電荷蓄積によって保存データが破壊されてしまうことによって、生じるものである。
【０００３】
そこで、このような不具合を回避すべく、データの誤りを訂正する誤り訂正符号（ＥＣＣ：Error Correcting Code）をデータに付加してデータとともに書き込み、これを読み出すことによりデータの誤り箇所を訂正する処理が行われる。しかし、訂正符号を用いて訂正できるビット数には限界があり、限界以上のビット数のエラーが発生した場合には訂正を行うことができない。そのため、訂正できるビット数が限界に達する前に誤りを検出し、訂正を行う必要がある。そこで、訂正できるビット数の限界前に誤りを検出する方法として、通常のデータ読出しがなされていないときにメモリチェックを行い、リフレッシュ処理を行う必要があるかどうか判別する装置が考えられた（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１２８７５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
かかる装置においては、メモリの待機時（アイドリング時）にメモリチェックを行って、リフレッシュ処理が必要な領域を判別する。しかしながら、メモリチェックの開始時点でメモリが待機状態であったとしても、その後、メモリチェック処理の最中にデータ読み出しが要求される場合がある。このような場合には、メモリチェック処理が完了してからデータの読み出し処理を行う必要があるため、データの読出し処理が遅延する等、メモリの動作が阻害されてしまうという問題があった。
【０００６】
また、特定のメモリセルへのアクセスが集中した場合、アクセスが集中したメモリセルだけではなく、同じメモリブロック内の隣接するメモリセルにビットエラーが多く発生する場合があり、エラーチェックを実行した時には既に誤り訂正符号で訂正できる限界以上のビット数のエラーが生じている可能性があるという問題があった。
【０００７】
本発明は、上記問題を解決するべくなされたものであり、メモリの動作を阻害することなく、メモリのエラーチェック及びリフレッシュ処理を行うことが可能なメモリ制御装置及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るメモリ制御装置は、メモリに対してデータの書込又は読出制御を行うメモリ制御装置であって、前記メモリに接続され、前記メモリに対して前記データの書込み又は読出しを行うインタフェース部と、前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶する記憶部と、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第１の閾値を越えているブロックに対してリフレッシュ処理を行う制御部と、 を有し、前記制御部は、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が前記第１の閾値以下で且つ第２の閾値よりも大きいブロックに対してメモリチェック処理を行うことを特徴とする。
【０００９】
また、本発明に係るメモリ制御装置は、メモリに対してデータの書込又は読出制御を行うメモリ制御方法であって、前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶するステップと、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第１の閾値を越えているブロックに対してリフレッシュ処理を行うステップと、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が前記第１の閾値以下で且つ第２の閾値よりも大きいブロックに対してメモリチェック処理を行うステップと、を含むことを特徴とする。
【発明の効果】
【００１０】
本発明においては、メモリ内の各メモリブロックへのアクセス回数に応じて、リフレッシュ処理及びメモリチェック処理を行うか否かを判別する。そして、アクセス回数が所定の閾値を越えている場合にのみ、リフレッシュ処理又はメモリチェック処理を行う。アクセス回数の少ないメモリブロックに対しては処理を行わないため、メモリチェック及びリフレッシュ処理に要する時間を短縮することができる。
【００１１】
また、リセット信号を受信した際、このリセット信号がパワーオンリセット信号であるか否かを判別し、パワーオンリセット信号を受けたと判別した場合のみ、メモリチェック処理及びリフレッシュ処理を行うか否かの判別を行う。これにより、電源投入直後以外のリセット時にはメモリチェック及びリフレッシュ処理の為の待機状態が無いため、フラッシュメモリに対して高速アクセスを行うことが可能となる。
【００１２】
よって、本発明によれば、メモリの動作を阻害することなく、メモリのエラーチェック及びリフレッシュ処理を行うことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明に係る情報処理装置の構成を示すブロック図である。
【図２】ページ／ブロック情報及び管理情報に含まれる情報を示す図である。
【図３】フラッシュメモリを構成する複数のブロック及びページを模式的に示す図である。
【図４】起動チェックルーチンを示すフローチャートである。
【図５】メモリチェック対象オフセットページ更新ルーチンを示すフローチャートである。
【図６】エラー発生確認ルーチンを示すフローチャートである。
【図７】ブロックアクセス回数情報オフセット更新ルーチンを示すフローチャートである。
【図８】リフレッシュルーチンを示すフローチャートである。
【図９】ブロックアクセス回数情報更新ルーチンを示すフローチャートである。
【図１０】本発明の実施例２におけるブロックアクセス回数情報更新ルーチンを示すフローチャートである。
【図１１】本発明の実施例３におけるページ／ブロック情報及び管理情報に含まれる情報を示す図である。
【図１２】本発明の実施例３における起動チェックルーチンを示すフローチャートである。
【図１３】本発明の実施例３における第２モード処理ルーチンを示すフローチャートである。
【図１４】本発明の実施例３における優先メモリチェック対象オフセットページ更新ルーチンを示すフローチャートである。
【図１５】本発明の実施例３におけるメモリチェック対象ブロック及びオフセットページ更新ルーチンを示すフローチャートである。
【図１６】本発明の実施例３におけるエラー発生確認ルーチンを示すフローチャートである。
【図１７】本発明の実施例３におけるリフレッシュルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【実施例１】
【００１５】
図１は、本発明に係るメモリ制御装置を含む情報処理装置１０の構成を示すブロック図である。図１に示すように、情報処理装置１０は、ＣＰＵ（Central Processing Unit）１１、インタフェース部１２、ＲＡＭ（Random Access Memory）１３、フラッシュメモリ１４、ＣＰＵバス１５、パワーオンリセット生成部１６、オアゲート１７及び内部リセット生成部１８を含む。
【００１６】
ＣＰＵ１１は、ＣＰＵバス１５を介してインタフェース部１２、ＲＡＭ１３及び内部リセット生成部１８に接続されている。ＣＰＵ１１は、ＣＰＵバス１５及びインタフェース部１２を介してフラッシュメモリ１４に対してデータの読出し・書き込みアクセスを行う。
【００１７】
すなわち、ＣＰＵ１１は、フラッシュメモリ１４に格納されているプログラムデータ（図示せず）、つまり情報処理装置１０の主機能を実現する為の主プログラムをインタフェース部１２を介して読み出し、この主プログラムに従った主制御を実行する制御部である。更に、ＣＰＵ１１は、フラッシュメモリ１４に格納されているリフレッシュプログラムデータ及びメモリチェックプログラムデータをインタフェース部１２を介して読み出し、このリフレッシュプログラムデータに従ったリフレッシュ処理及びメモリチェックプログラムデータに従ったメモリチェック処理を実行する。このリフレッシュ処理は、対象のメモリブロックから符号化データ片を読み出し、誤り訂正処理を施して異なるメモリブロックに書き込む処理である。またメモリチェック処理は、フラッシュメモリ１４内に記憶されたデータを正しく読み出せるか否かを検査する処理である。尚、リフレッシュ処理及びメモリチェック処理の詳細については後述する。
【００１８】
インタフェース部１２は、エラー検出訂正部２０、ステータスレジスタ２１及びメモリチェック領域指定レジスタ２２を含む。エラー検出訂正部２０は、後述するメモリチェック処理の対象となるメモリブロック（以下、単にブロックと称する）のチェック対象のページ（以下、オフセットページと称する）に含まれるエラーを検出する。また、エラー検出訂正部２０は、指定されたブロックについて、エラーの訂正を行う。ステータスレジスタ２１は、エラー検出訂正部２０が検出したエラーのビット数等の情報を保持する。メモリチェック領域指定レジスタ２２は、メモリチェック処理の対象として指定されたメモリ領域を示す情報を保持する。また、インタフェース部１２は、フラッシュメモリ１４に対する読み出し、書き込み等のアクセス用の制御情報を有する。インタフェース部１２が有するこれらの制御情報は、リセット信号Ｒに応じてリセット（初期化）される。
【００１９】
ＲＡＭ１３は、記憶部としてのパワーオンリセットチェック領域３０を含む。パワーオンリセットチェック領域３０には、電源投入後の最初のリセット信号であるパワーオンリセット信号ＰＲを受信したことを示す情報として例えば１バイトの値「0x5A」（パワーオンリセット済コード）が、ＣＰＵ１１によって書き込まれる。一旦「0x5A」が書き込まれると、パワーオンリセットチェック領域３０は、電源がオフになるまで「0x5A」の値を保持する。また、ＲＡＭ１３には、ページ／ブロック情報３１が格納される。ページ／ブロック情報３１は、図２（ａ）に示すように、ブロックアクセス回数情報３０１、リフレッシュ対象ブロック情報３０２、メモリチェック対象ブロック情報３０３及びメモリチェック対象オフセットページ情報３０４を含む。
【００２０】
フラッシュメモリ１４は、図３（ａ）に示すように、１ブロックがＫ個のページ１〜Ｋ（Ｋ；自然数）からなる、Ｌ個のブロック１〜Ｌ（Ｌ；自然数）のアクセス領域に区分けされている。また、フラッシュメモリ１４は、管理情報４０を記憶する領域を有する。管理情報４０は、図２（ｂ）に示すように、ブロックアクセス回数情報４０１、リフレッシュ対象ブロック情報４０２及びメモリチェック対象ブロック情報４０３を含む。
【００２１】
ブロックアクセス回数情報３０１及び４０１は、フラッシュメモリ１４の各ブロックに対するリードアクセスの累積回数をブロック毎に示す情報である。尚、ブロックアクセス回数情報の更新処理については後述する。
【００２２】
パワーオンリセット生成部１６は、情報処理装置１０の電源投入時に１パルスのリセット信号ＰＲ（第１リセット信号）を生成し、これをオアゲート１７に供給する。内部リセット生成部１８は、主制御の実行時に発令されたリセット要求指令、又はプログラムタイマ（図示せず）によるタイムアウトエラーに応じて１パルスのリセット信号ＩＲ（第２リセット信号）を生成し、これをオアゲート１７に供給する。オアゲート１７は、パワーオンリセット生成部１６からリセット信号ＰＲが供給された場合には、これをリセット信号Ｒ（初期化信号）としてＣＰＵ１１及びインタフェース部１２に供給する。また、オアゲート１７は、内部リセット生成部１８からリセット信号ＩＲが供給された場合には、これをリセット信号ＲとしてＣＰＵ１１及びインタフェース部１２に供給する。
【００２３】
ＣＰＵ１１は、リセット信号Ｒに応じて、図４に示す起動チェックルーチンに従って、起動チェック処理を実行する。起動チェック処理は、リフレッシュ処理、メモリチェック処理及びこれらの処理を行うか否かの判定処理を含む処理である。
【００２４】
まず、ＣＰＵ１１は、ＲＡＭ１３のパワーオンリセットチェック領域３０に保持されている値が「0x5A」であるか否かを判定する（ステップＳ１）。ステップＳ１においてパワーオンリセットチェック領域３０に保持されている値が「0x5A」であると判定された場合、ＣＰＵ１１は、受信したリセット信号Ｒがパワーオンリセット信号ＰＲに基づくものではないと判定して、この起動チェックルーチンを終了する。他方、ステップＳ１においてパワーオンリセットチェック領域３０に「0x5A」が保持されていないと判定した場合、ＣＰＵ１１は、受信したリセット信号Ｒがパワーオンリセット信号ＰＲに基づくものであると判定して、ＲＡＭ１３のパワーオンリセットチェック領域３０に「0x5A」を書き込む（ステップＳ２）。
【００２５】
次に、ＣＰＵ１１は、インタフェース部１２を介してフラッシュメモリ１４から図２（ｂ）に示す管理情報４０を読み出し、これをページ／ブロック情報３１としてＲＡＭ１３に書き込む（ステップＳ３）。これにより、管理情報４０中のブロックアクセス回数情報４０１が、ブロックアクセス回数情報３０１としてＲＡＭ１３に格納される。また、管理情報４０中のリフレッシュ対象ブロック情報４０２が、リフレッシュ対象ブロック情報３０２としてＲＡＭ１３に格納される。さらに、メモリチェック対象ブロック情報４０３が、メモリチェック対象ブロック情報３０３としてＲＡＭ１３に格納される。
【００２６】
ＣＰＵ１１は、ＲＡＭ１３に格納されているブロックアクセス回数情報３０１に基づき、フラッシュメモリ１４内の対象ブロック（例えば、ブロック１）のリードアクセスの回数が第１のアクセス閾値ＴＡ１を越えているか否か、すなわちＴＡ１よりも大きいか否かを判定する（ステップＳ４）。なお、このステップＳ４における判定は、リフレッシュ対象ブロック情報の追加及び保存処理を経て、ブロック１〜ブロックＬの全てのブロックについて行われる。
【００２７】
ステップＳ４の判定の結果、対象ブロックのリードアクセスの回数が第１のアクセス閾値ＴＡ１よりも大きかった場合、ＣＰＵ１１は、当該ブロックをリフレッシュ対象ブロックとして、リフレッシュ対象ブロック情報３０２に追加する（ステップＳ５）。また、ＣＰＵ１１は、当該情報をリフレッシュ対象ブロック情報４０２としてフラッシュメモリ１４に保存する（ステップＳ６）。
【００２８】
一方、ステップＳ４の判定の結果、対象ブロックのリードアクセスの回数が第１のアクセス閾値ＴＡ１を越えていなかった場合、ＣＰＵ１１は、対象ブロックのリードアクセスの回数が第２のアクセス閾値ＴＡ２（ＴＡ２＜ＴＡ１）よりも大きいか否かを判定する（ステップＳ７）。
【００２９】
ステップＳ７の判定の結果、対象ブロックのリードアクセスの回数が第２のアクセス閾値ＴＡ２よりも大きかった場合、ＣＰＵ１１は、当該ブロックをメモリチェックの対象領域として、インタフェース部１２のメモリチェック領域指定レジスタ２２に設定する（ステップＳ８）。ステップＳ８の実行後、ＣＰＵ１１は、メモリチェックの対象ブロックについて、図５に示すメモリチェック対象オフセットページの更新処理を実行する（ステップＳ９）。
【００３０】
図５は、かかるメモリチェック対象オフセットページ更新処理のルーチンを示すフローチャートである。ＣＰＵ１１は、まずＲＡＭ１３に記憶されているメモリチェック対象オフセットページ情報３０４にて示される番号を１だけインクリメントした番号を、新たなメモリチェック対象オフセットページを示すページ番号としてＲＡＭ１３のメモリチェック対象オフセットページ情報３０４に上書き記憶させる（ステップＳ２１）。例えば、ページ番号「Ｎ」が記憶されていた場合、これに１をインクリメントしたページ番号「Ｎ＋１」を新たなページ番号として上書き記憶させる。次に、ＣＰＵ１１は、インクリメントされたページ番号が最終ページの番号Ｋを超えたか否かの判定を行う（ステップＳ２２）。ステップＳ２２において最終ページの番号Ｋを超えたと判定された場合、つまりメモリチェック対象ブロック内でのメモリチェック処理が全て終了している場合には、ＣＰＵ１１は、ＲＡＭ１３に記憶されているメモリチェック対象オフセットページ情報３０４のページ番号を０に設定する（ステップＳ２３）。
【００３１】
図４におけるメモリチェック対象オフセットページ情報更新処理（ステップＳ９）の実行後、ＣＰＵ１１は、指定メモリ領域のメモリ読み出しチェック処理（メモリチェック処理）を実行する（ステップＳ１０）。
【００３２】
すなわち、ＣＰＵ１１は、フラッシュメモリ１４内のアドレスを指定して、読み出し指令信号をインタフェース部１２に供給する。インタフェース部１２は、かかる読み出し指令信号に応じて、指定されたアドレスに対応したページに記憶されている符号化データ片を、フラッシュメモリ１４から読み出す。インタフェース部１２のエラー検出訂正部２０は、かかる符号化データ片に対してエラー検出処理を実行し、エラービットの数を示すエラー情報を生成する。ＣＰＵ１１は、かかるエラー情報を、エラーの検出された符号化データ片が保持されているフラッシュメモリ１４内のブロックの番号と対応付けて、インタフェース部１２のステータスレジスタ２１に記憶させる。
【００３３】
なお、メモリチェック処理は、図３（ｂ）に示すように、ページ数をインクリメントしつつ、対象ブロック（例えば、ブロックＭ）のＫページ目までの全てのページについて行われる。
【００３４】
ＣＰＵ１１は、ステップＳ１０の指定メモリ領域のメモリ読出しチェック処理中に、図６に示すようなエラー発生確認処理を実行する。
【００３５】
ＣＰＵ１１は、ステータスレジスタ２１に記憶されているエラー情報に基づいて、エラービットの数が第１のエラー閾値ＴＥ１を越えているか否か、すなわちＴＥ１よりも大きいか否かを判定する（ステップＳ３１）。この第１のエラー閾値ＴＥ１は、誤り訂正処理によって訂正可能なエラービット数の限界値に近い値であり、リフレッシュ処理が必要なビット数の目安となる数値である。
【００３６】
エラービットの数が第１のエラー閾値ＴＥ１よりも大きいと判定された場合、ＣＰＵ１１は、当該ブロックをＲＡＭ１３のリフレッシュ対象ブロック情報３０２に追加する（ステップＳ３２）。また、ＣＰＵ１１は、当該情報をリフレッシュ対象ブロック情報４０２としてフラッシュメモリ１４に保存する（ステップＳ３３）。
【００３７】
一方、ステップＳ３１においてエラービットの数が第１のエラー閾値ＴＥ１を越えていないと判定された場合、ＣＰＵ１１は、エラービットの数が第２のエラー閾値ＴＥ２（ＴＥ２＜ＴＥ１）よりも大きいか否かを判定する（ステップＳ３４）。この第２のエラー閾値ＴＥ２は、リフレッシュ処理が必要な数には至らないものの経過観測が必要なエラービット数の目安となる数値である。
【００３８】
エラービットの数が第２のエラー閾値ＴＥ２を越えていないと判定された場合、ＣＰＵ１１は、ＲＡＭ１３のメモリチェック対象ブロック情報３０３から当該ブロックをクリアする（ステップＳ３５）。これに対し、エラービットの数が第２のエラー閾値ＴＥ２よりも大きいと判定された場合、ＣＰＵ１１は、当該ブロックのクリアを行わない。すなわち、ＲＡＭ１３は従前のメモリチェック対象ブロック情報３０３をそのまま保持する。
【００３９】
図４に示すステップＳ１０において、ＣＰＵ１１は以上のようなエラー発生確認ルーチンを含む指定メモリ領域のメモリ読出しチェック処理を実行する。
【００４０】
一方、ステップＳ７において、対象ブロックのリードアクセスの回数が閾値ＴＡ２を越えていないと判定された場合、ＣＰＵ１１は対象ブロックがインタフェース部１２のメモリチェック領域指定レジスタ２２に登録されているか否かを判定する（ステップＳ１１）。この判定処理は、対象ブロックが、例えば前回の起動チェック処理時にメモリチェック処理の対象領域としてレジスタに登録されたにもかかわらず不慮の動作によってメモリチェック処理がなされなかったメモリブロックに該当するか否かを判定する処理である。メモリチェック領域指定レジスタ２２に登録されていると判定された場合、ＣＰＵ１１は、ステップＳ９のメモリチェック対象オフセットページの更新処理の実行に移る。
【００４１】
ステップＳ１１において対象ブロックがメモリチェック領域指定レジスタ２２に登録されていないと判定された場合、又はリフレッシュ対象ブロック情報４０２のフラッシュメモリ１４への保存処理（ステップＳ６）若しくは指定メモリ領域のメモリ読み出しチェック処理（ステップＳ１０）の実行後、ＣＰＵ１１は、ブロックアクセス回数情報オフセットの更新処理を実行する（ステップＳ１２）。
【００４２】
図７は、ブロックアクセス回数情報オフセットの更新処理のルーチンを示すフローチャートである。
【００４３】
ＣＰＵ１１は、まずＲＡＭ１３に記憶されているブロックアクセス回数情報３０１にて示される対象ブロック番号を１だけインクリメントした番号を、アクセス回数のチェック対象としての新たなブロック番号として設定する（ステップＳ４１）。例えば、アクセス回数のチェック対象がブロック番号「Ｍ」であった場合、これに１をインクリメントしたブロック番号「Ｍ＋１」を新たなブロック番号として設定する。次に、ＣＰＵ１１は、インクリメントされたブロック番号が最終ブロックの番号Ｌを超えたか否かの判定を行う（ステップＳ４２）。ステップＳ４２において最終ブロックの番号Ｌを超えたと判定された場合、つまり全ブロックのアクセス回数のチェックが全て終了している場合には、ＣＰＵ１１は、ブロックアクセス回数情報のオフセットを０に設定する（ステップＳ４３）。
【００４４】
ＣＰＵ１１は、ステップＳ４〜Ｓ１２のチェック処理が全ブロックについて完了したか否かを判定する（ステップＳ１３）。完了したと判定すると、ＣＰＵ１１は、リフレッシュ処理（ステップＳ１４）の実行に移る。完了していないと判定すると、ＣＰＵ１１は、ステップＳ４に戻って、ステップＳ４〜Ｓ１２の処理を再び実行する。
【００４５】
図８は、リフレッシュ処理のルーチンを示すフローチャートである。ＣＰＵ１１は、ＲＡＭ１３のリフレッシュ対象ブロック情報３０２に基づき、リフレッシュ対象ブロックがあるか否かを判定する（ステップＳ５１）。リフレッシュ対象ブロックがないと判定した場合、ＣＰＵ１１は、このリフレッシュ処理を終了する。
【００４６】
リフレッシュ対象ブロックがあると判定した場合、ＣＰＵ１１は、インタフェース部１２に対してリフレッシュ処理の実行命令を送出する（ステップＳ５２）。
【００４７】
すなわち、インタフェース部１２は、まずリフレッシュ処理の対象ブロックから符号化データ片を読み出す。インタフェース部１２のエラー検出訂正部２０は、かかる符号化データ片に対して誤り訂正処理を施す。インタフェース部１２は、誤り訂正処理の施された１ブロック分の符号化データ片を、当該符号化データ片が保持されていたブロックとは異なるブロックに書き込む。
【００４８】
ＣＰＵ１１は、リフレッシュ処理を実施したブロックの番号を、ＲＡＭ１３のリフレッシュ対象ブロック情報３０２から削除する（ステップＳ５３）。また、ＣＰＵ１１は、当該ブロックの番号のアクセス回数を０に設定して（ステップＳ５４）、ＲＡＭ１３のブロックアクセス回数情報３０１を更新する。
【００４９】
図４に示すリフレッシュ処理（ステップＳ１４）の実行後、ＣＰＵ１１は、インタフェース部１２を介してフラッシュメモリ１４の管理情報４０の更新処理を実行する。この管理情報４０の更新処理には、ブロックアクセス回数情報４０１の更新処理が含まれる。
【００５０】
図９は、かかるブロックアクセス回数情報更新処理のルーチンを示すフローチャートである。ＣＰＵ１１は、フラッシュメモリ１４に対してリードアクセスがあったか否かを判定する（ステップＳ６１）。リードアクセスがないと判定した場合、ＣＰＵ１１は、このブロックアクセス回数情報更新処理を終了する。
【００５１】
リードアクセスがあると判定した場合、ＣＰＵ１１は、リードアクセスがあったブロックのアクセス回数をインクリメントする（ステップＳ６２）。また、ＣＰＵ１１は、全ブロックに対するリードアクセスの回数（全リードアクセス回数）をインクリメントする（ステップＳ６３）。
【００５２】
ＣＰＵ１１は、全リードアクセス回数が第３のアクセス閾値ＴＡ３を越えたか否かを判定する（ステップＳ６４）。ＴＡ３を越えていないと判定すると、ＣＰＵ１１は、このブロックアクセス回数情報更新処理を終了する。一方、ＴＡ３を越えていると判定すると、ＣＰＵ１１は、インクリメントしたブロックアクセス回数情報をブロックアクセス回数情報４０１としてフラッシュメモリ１４に保存する（ステップＳ６５）。
【００５３】
以上のように、上記した起動チェック処理では、まずフラッシュメモリ１４内の各メモリブロックに対するリードアクセスの回数に応じて、対象ブロックに対してリフレッシュ処理及びメモリチェック処理を行うか否かを判別する。そして、リードアクセスの回数が第１のアクセス閾値ＴＡ１を越えている場合にはリフレッシュ処理を行い、第１のアクセス閾値ＴＡ１は越えていないものの第２のアクセス閾値ＴＡ２を越えている場合にはメモリチェック処理を行う。つまり、リードアクセスの回数が第２のアクセス閾値ＴＡ２を超えていない場合には、メモリチェック処理及びリフレッシュ処理を行わないようにしたのである。これにより、アクセス回数が少ないメモリブロックに対しては処理がなされないため、メモリチェック処理及びリフレッシュ処理の実行に要する時間を短縮することができる。
【００５４】
また、上記した起動チェック処理では、ＲＡＭ１３において更新したブロックアクセス回数情報３０１をブロックアクセス回数情報４０１としてフラッシュメモリ１４に保存する。これにより、前回の起動チェック処理時のブロックアクセス回数及び累積したブロックアクセス情報が取得可能となり、的確なブロックアクセス回数に基づいた起動チェック処理、リフレッシュ処理及びメモリチェック処理の実施が可能となる。
【００５５】
また、上記した起動チェック処理では、ＲＡＭ１３において更新したリフレッシュ対象ブロック情報３０２をリフレッシュ対象ブロック情報４０２としてフラッシュメモリ１４に保存する。これにより、前回の起動チェック処理時のリフレッシュ対象ブロック情報を取得することができるため、リフレッシュ対象ブロック情報に登録されているものの不慮の動作等により前回の起動チェック時にリフレッシュ処理が実施されなかったブロックに対して、リフレッシュ処理を行うことが可能となる。
【００５６】
また、上記した起動チェック処理では、ＲＡＭ１３において更新したメモリチェック対象ブロック情報３０３をメモリチェック対象ブロック情報４０３としてフラッシュメモリ１４に保存する。これにより、メモリチェック対象ブロック情報に登録されているものの不慮の動作等により前回の起動チェック時にメモリチェック処理が実施されなかったブロックに対して、メモリチェック処理を行うことが可能となる。また、前回の起動チェック処理時のメモリチェック対象ブロック情報から継続してエラービット数が第２のエラー閾値ＴＥ２を越えているブロックに対して、メモリチェック処理を行うことが可能となる。
【００５７】
また、上記した起動チェック処理では、ＲＡＭ１３のパワーオンリセットチェック領域３０に保持されている値に基づき、リセット信号Ｒがパワーオンリセット信号ＰＲに基づくものであるか否かを判別する。そして、パワーオンリセット信号ＰＲに基づくリセット信号Ｒを受けた場合のみ、起動チェック処理を行う。つまり、内部リセット信号ＩＲに基づくリセット信号Ｒを受けた場合は、リフレッシュ処理及びメモリチェック処理を実行するか否かの判定を行わないようにしたのである。これにより、電源投入直後を除き、フラッシュメモリ１４へのアクセス時における起動チェック処理、メモリチェック処理及びリフレッシュ処理を実行する為の待機状態が無いため、フラッシュメモリ１４に対して常に高速アクセスを行うことが可能となる。さらに、電源投入直後にのみ起動チェック処理、メモリチェック処理及びリフレッシュ処理を行うため、頻繁にこれらの処理を行うことに起因するメモリの劣化を抑えることができる。
【実施例２】
【００５８】
実施例２にかかる情報処理装置は、各部の構成については図１に示す実施例１の情報処理装置１０と同様であり、ブロックアクセス情報の更新処理において実施例１の情報処理装置１０と異なる。以下、ブロックアクセス情報の更新処理について説明する。
【００５９】
図１０は、ブロックアクセス回数情報更新処理のルーチンを示すフローチャートである。ＣＰＵ１１は、フラッシュメモリ１４に対してリードアクセスがあったか否かを判定する（ステップＳ７１）。リードアクセスがないと判定した場合、ＣＰＵ１１は、このブロックアクセス回数情報更新処理を終了する。
【００６０】
リードアクセスがあると判定した場合、ＣＰＵ１１は、リードアクセスがあったブロックのアクセス回数をインクリメントする（ステップＳ７２）。
【００６１】
ＣＰＵ１１は、リードアクセスがあったブロックのアクセス回数が第４のアクセス閾値ＴＡ４を越えたか否かを判定する（ステップＳ７３）。ＴＡ４を越えていないと判定すると、ＣＰＵ１１は、このブロックアクセス回数情報更新処理を終了する。一方、ＴＡ４を越えていると判定すると、ＣＰＵ１１は、ＴＡ４を越えたブロックについてのアクセス回数情報をブロックアクセス回数情報４０１としてフラッシュメモリ１４に保存する（ステップＳ７４）。
【００６２】
以上のように、本実施例においては、リードアクセスの回数が第４のアクセス閾値ＴＡ４を越えたブロックについてのみ、ブロックアクセス回数情報の更新及びフラッシュメモリ１４への保存を行う。したがって、ブロックアクセス回数情報のオフセットを小さくすることができ、起動チェック処理に要する時間を短縮することができる。また、頻繁に情報の保存を行うことによるメモリの劣化を抑えることができる。
【実施例３】
【００６３】
実施例２にかかる情報処理装置は、各部の構成については図１に示す実施例１の情報処理装置１０と同様であり、ページ／ブロック情報３１としてＲＡＭ１３に格納される情報及び管理情報４０としてフラッシュメモリ１４に記憶される情報が実施例１の情報処理装置１０と異なる。また、実施例１の起動チェック処理と同様のリフレッシュ処理及びメモリチェック処理の判定処理を行う第１のモードの他に、後述する優先メモリチェック処理を行う第２のモードを備える点で実施例１の情報処理装置１０と異なる。以下、実施例１と異なる部分及び動作について説明する。
【００６４】
図１１（ａ）に示すように、ＲＡＭ１３に格納されるページ／ブロック情報３１は、３０１〜３０４の各情報に加えて、優先メモリチェック対象ブロック情報３０５及び優先メモリチェック対象オフセットページ情報３０６を含む。
【００６５】
図１１（ｂ）に示すように、フラッシュメモリ１４に記憶される管理情報４０は、４０１〜４０３の各情報に加えて、チェック対象オフセットページ情報４０４及び優先メモリチェックブロック情報４０５を含む。
【００６６】
ＣＰＵ１１は、リセット信号Ｒに応じて、図１２に示す起動チェックルーチンに従って、第１モード処理又は第２モード処理を実行する。
【００６７】
まず、ＣＰＵ１１は、ＲＡＭ１３のパワーオンリセットチェック領域３０に保持されている値が「0x5A」であるか否かを判定する（ステップＳ１）。ステップＳ１においてパワーオンリセットチェック領域３０に保持されている値が「0x5A」であると判定された場合、ＣＰＵ１１は、受信したリセット信号Ｒがパワーオンリセット信号ＰＲに基づくものではないと判定して、この起動チェックルーチンを終了する。他方、ステップＳ１においてパワーオンリセットチェック領域３０に「0x5A」が保持されていないと判定した場合、ＣＰＵ１１は、受信したリセット信号Ｒがパワーオンリセット信号ＰＲに基づくものであると判定して、ＲＡＭ１３のパワーオンリセットチェック領域３０に「0x5A」を書き込む（ステップＳ２）。
【００６８】
次に、ＣＰＵ１１は、インタフェース部１２を介してフラッシュメモリ１４から図１１（ｂ）に示す管理情報４０を読み出し、これをページ／ブロック情報３１としてＲＡＭ１３に書き込む（ステップＳ３）。これにより、管理情報４０中のブロックアクセス回数情報４０１、リフレッシュ対象ブロック情報４０２、メモリチェック対象ブロック情報４０３、チェック対象オフセットページ情報４０４及び優先メモリチェック対象ブロック情報４０５が、それぞれブロックアクセス回数情報３０１、リフレッシュ対象ブロック情報３０２、メモリチェック対象ブロック情報３０３、メモリチェック対象オフセットページ情報３０４及び優先メモリチェック対象ブロック情報３０５としてＲＡＭ１３に格納される。
【００６９】
ＣＰＵ１１は、ＲＡＭ１３に格納されているブロックアクセス回数情報３０１に基づき、フラッシュメモリ１４内の全ブロックに対するリードアクセスの回数の合計数が第５のアクセス閾値ＴＡ５を越えているか否か、すなわちＴＡ５よりも大きいか否かを判定する（ステップＳ４）。
【００７０】
第５のアクセス閾値ＴＡ５を越えていると判定された場合、ＣＰＵ１１は、第１モード処理を実行する（ステップＳ５）。この第１モード処理は、実施例１における起動チェック処理の図４のステップＳ４〜Ｓ１４に相当する処理である。したがって、ここでは第１モード処理についての説明は省略する。
【００７１】
一方、全ブロックに対するリードアクセスの回数の合計が第５のアクセス閾値ＴＡ５を越えていないと判定された場合、ＣＰＵ１１は、第２モード処理の実行に移る（ステップＳ６）。
【００７２】
図１３は、第２モード処理のルーチンを示すフローチャートである。まず、ＣＰＵ１１は、ＲＡＭ１３に格納されている優先メモリチェック対象ブロック情報３０５に基づき、フラッシュメモリ１４内の対象ブロック（例えば、ブロック１）が優先メモリチェックの対象ブロックか否かを判定する（ステップＳ１１）。なお、このステップＳ１１における判定は、後述するメモリチェック対象ブロック及びオフセットページ情報更新処理を経て、ブロック１〜ブロックＬの全てのブロックについて行われる。
【００７３】
ステップＳ１１の判定の結果、対象ブロックが優先メモリチェックの対象ブロックであった場合、ＣＰＵ１１は、当該ブロックを優先メモリチェック対象領域として、インタフェース部１２のメモリチェック領域指定レジスタ２２に設定する（ステップＳ１２）。ステップＳ１２の実行後、ＣＰＵ１１は、優先メモリチェック対象オフセットページ更新処理の実行に移る（ステップＳ１３）。
【００７４】
図１４は、かかる優先メモリチェック対象オフセットページ更新処理のルーチンを示すフローチャートである。ＣＰＵ１１は、まずＲＡＭ１３に記憶されている優先メモリチェック対象オフセットページ情報３０６にて示される番号を１だけインクリメントした番号を、新たな優先メモリチェック対象オフセットページを示す番号としてＲＡＭ１３の優先メモリチェック対象オフセットページ情報３０６に上書き記憶させる（ステップＳ２１）。例えば、ページ番号「Ｎ」が記憶されていた場合、これに１をインクリメントしたページ番号「Ｎ＋１」を新たなページ番号として上書き記憶させる。次に、ＣＰＵ１１は、インクリメントされたページ番号が最終ページの番号Ｋを超えたか否かの判定を行う（ステップＳ２２）。ステップＳ２２において最終ページの番号Ｋを超えたと判定された場合、つまり優先メモリチェック対象ブロック内での優先メモリチェック処理（後述する）が全て終了している場合には、ＲＡＭ１３の優先メモリチェックの対象オフセットページ情報３０６を初期値にクリアする（ステップＳ２３）。ステップＳ２３の実行後、ＣＰＵ１１は、メモリチェック対象ブロック及びオフセットページ更新処理の実行に移る（ステップＳ２４）。
【００７５】
図１５は、かかるメモリチェック対象ブロック及びオフセットページ更新処理のルーチンを示すフローチャートである。ＣＰＵ１１は、ＲＡＭ１３に記憶されているメモリチェック対象ブロック情報３０３が示す番号を１だけインクリメントした番号を、新たなメモリチェック対象ブロックを示す番号としてＲＡＭ１３に上書き記憶させる（ステップＳ３１）。次に、ＣＰＵ１１は、インクリメントされたブロック番号が最終ブロックの番号Ｌを超えたか否かの判定を行う（ステップＳ３２）。ステップ３２において最終ブロックの番号Ｌを超えたと判定された場合、つまり通常のメモリチェックの対象ブロックでのメモリチェック処理が一通り完了している場合には、ＣＰＵ１１は、ＲＡＭ１３に記憶されているメモリチェック対象ブロック情報３０３のブロック番号を０に設定する（ステップＳ３３）。次に、ＣＰＵ１１は、ＲＡＭ１３に記憶されているメモリチェック対象オフセットページ情報３０４が示すページ番号を１だけインクリメントした番号を、新たなメモリチェック対象オフセットページを示す番号としてＲＡＭ１３に上書き記憶させる（ステップＳ３４）。次に、ＣＰＵ１１は、インクリメントされたページ番号が最終ページの番号Ｋを超えたか否かの判定を行う（ステップＳ３５）。ステップ３５において最終ページの番号Ｋを超えたと判定された場合、つまり通常のメモリチェックの対象ブロック内で全てのページについてメモリチェック処理が完了している場合には、ＣＰＵ１１は、ＲＡＭ１３に記憶されているメモリチェック対象オフセットページ情報３０４のページ番号を０に設定する（ステップＳ３６）。
【００７６】
ステップＳ３６の実行後、又はステップＳ３２において最終ブロック番号Ｌを超えていないと判定された場合、あるいはステップＳ３５において最終ページ番号Ｋを超えていないと判定された場合、ＣＰＵ１１は、図１５に示すメモリチェック対象ブロック及びオフセットページ更新ルーチンを抜けて図１３のステップＳ１６の実行に移る。
【００７７】
一方、図１３に示すステップＳ１１において、対象ブロックが優先メモリチェックの対象ブロックではないと判定された場合、ＣＰＵ１１は、当該ブロックを通常のメモリチェック対象領域として、インタフェース部１２のメモリチェック領域指定レジスタ２２に設定する（ステップＳ１４）。ステップＳ１４の実行後、ＣＰＵ１１は、図１５に示すメモリチェック対象ブロック及びオフセットページ情報更新処理の実行に移る（ステップＳ１５）。
【００７８】
図１３に示す優先メモリチェック対象オフセットページ情報更新処理（ステップＳ１３）、又はメモリチェック対象ブロック及びオフセットページ情報更新処理（ステップＳ１５）の実行後、ＣＰＵ１１は、指定メモリ領域のメモリ読出しチェック処理（メモリチェック処理）を実行する（ステップＳ１６）。
【００７９】
すなわち、ＣＰＵ１１は、フラッシュメモリ１４内のアドレスを指定して、読み出し指令信号をインタフェース部１２に供給する。インタフェース部１２は、かかる読み出し指令信号に応じて、指定されたアドレスに対応したページに記憶されている符号化データ片を、フラッシュメモリ１４から読み出す。インタフェース部１２のエラー検出訂正部２０は、かかる符号化データ片に対してエラー検出処理を実行し、エラービットの数を示すエラー情報を生成する。ＣＰＵ１１は、かかるエラー情報を、エラーの検出された符号化データ片が保持されているフラッシュメモリ１４内のブロックの番号と対応付けて、インタフェース部１２のステータスレジスタ２１に記憶させる。
【００８０】
なお、メモリチェック処理においては、ブロック番号をインクリメントしつつ読出し及びエラーの検出を行い、例えばブロック１のページＮ、ブロック２のページＮ、ブロック３のページＮ・・・という順番で、全てのブロックの対応するページを対象ページとしてメモリチェックを行う。また、最終ブロックまでメモリチェックが終わるとオフセットページをインクリメントするため、電源投入の度に異なるページに対してメモリチェック処理が行われる。
【００８１】
これに対し、優先メモリチェック処理においては、優先メモリチェックの対象ブロックに対して、ページ数をインクリメントしつつチェックを行う。これにより、図３（ｂ）に示すように、例えばブロックＭの全てのページについてメモリチェックが行われる。
【００８２】
ＣＰＵ１１は、ステップＳ１６の指定メモリ領域のメモリ読出しチェック処理中に、図１６に示すようなエラー発生確認処理を実行する。
【００８３】
図１６において、ＣＰＵ１１は、ステータスレジスタ２１に記憶されているエラー情報に基づいて、エラーが有るか否か、つまりエラービット数が１以上であるか否かを判定する（ステップＳ４１）。エラーが無いと判定した場合、ＣＰＵ１１は、このエラー発生確認処理を終了する。
【００８４】
一方、ステップＳ４１においてエラーが有ると判定した場合、ＣＰＵ１１は、ステータスレジスタ２１に記憶されているエラー情報に基づいて、エラービットの数が第３のエラー閾値ＴＥ３よりも大きいか否かを判定する（ステップＳ４２）。エラービットの数が第３のエラー閾値ＴＥ３よりも大きいと判定された場合、ＣＰＵ１１は、当該ブロックの番号をＲＡＭ１３の優先メモリチェック対象ブロック情報３０５に追加する（ステップＳ４３）。次に、ＣＰＵ１１は、エラービットの数が第４のエラー閾値ＴＥ４（ＴＥ４＞ＴＥ３）よりも大きいか否かを判定する（ステップＳ４４）。エラービットの数が第４のエラー閾値ＴＥ４よりも大きいと判定された場合、ＣＰＵ１１は、当該ブロックの番号をＲＡＭ１３のリフレッシュ対象ブロック情報３０２に追加する（ステップＳ４５）。
【００８５】
ステップＳ４５の実行後、又はステップＳ４４においてエラービットの数が第４のエラー閾値ＴＥ４以下であると判定された場合、ＣＰＵ１１は、このエラー発生確認ルーチンを終了する。
【００８６】
このエラー発生確認ルーチンを含む指定メモリ領域のメモリ読出しチェック処理（ステップＳ１６）の実行後、ＣＰＵ１１は、メモリ読出しチェックが全ブロックについて完了したか否かを判定する（ステップＳ１７）。完了したと判定すると、ＣＰＵ１１は、リフレッシュ処理（ステップＳ１８）の実行に移る。完了していないと判定すると、ＣＰＵ１１は、ステップＳ１１に戻って、ステップＳ１１〜Ｓ１６の処理を再び実行する。
【００８７】
図１７は、リフレッシュ処理のルーチンを示すフローチャートである。ＣＰＵ１１は、ＲＡＭ１３のリフレッシュ対象ブロック情報３０２に基づき、リフレッシュ対象ブロックがあるか否かを判定する（ステップＳ５１）。リフレッシュ対象ブロックがないと判定した場合、ＣＰＵ１１は、このリフレッシュ処理を終了する。
【００８８】
リフレッシュ対象ブロックがあると判定した場合、ＣＰＵ１１は、インタフェース部１２に対してリフレッシュ処理の実行命令を送出する（ステップＳ５２）。
【００８９】
すなわち、インタフェース部１２は、まずリフレッシュ処理の対象ブロックから符号化データ片を読み出す。インタフェース部１２のエラー検出訂正部２０は、かかる符号化データ片に対して誤り訂正処理を施す。インタフェース部１２は、誤り訂正処理の施された１ブロック分の符号化データ片を、当該符号化データ片が保持されていたブロックとは異なるブロックに書き込む。
【００９０】
ＣＰＵ１１は、リフレッシュ処理を実施したブロックの番号を、ＲＡＭ１３のリフレッシュ対象ブロック情報３０２から削除する（ステップＳ５３）。また、ＣＰＵ１１は、当該ブロックの番号をＲＡＭ１３の優先メモリチェック対象ブロック情報３０５から削除する（ステップＳ５４）。
【００９１】
リフレッシュ処理の実行後、ＣＰＵ１１は、図１２の管理情報更新処理（ステップＳ７）を実行する。この管理情報更新処理は、ＲＡＭ１３に格納されたページ／ブロック情報３１をフラッシュメモリ１４の管理情報４０として保存する処理であり、実施例１又は実施例２と同様のブロックアクセス回数情報更新処理を含む。
【００９２】
以上のように、本実施例において、情報処理装置１０は、実施例１と同様の処理を行う第１モード処理の他に、優先メモリチェック処理を含む第２モード処理を実行する機能を有する。そして、フラッシュメモリ１４の全ブロックに対するリードアクセス回数の合計が所定の閾値（ＴＡ５）を越えている場合には第１モード処理を実行し、越えていない場合には第２モード処理を実行する。すなわち、本実施例の情報処理装置１０は、アクセス回数が多い場合にはアクセス回数に応じたリフレッシュ処理及びメモリチェック処理を実行し、アクセス回数が少ない場合にはアクセス回数を前提としないメモリチェック処理、優先メモリチェック処理及びリフレッシュ処理を実行する。したがって、メモリに対するアクセスが少ない場合にもメモリチェックを行うことができ、状況に応じた適切なリフレッシュ処理及びメモリチェック処理を実行することができる。
【００９３】
以上、説明したように、本発明によれば、メモリ内の各メモリブロックに対するリードアクセスの回数に応じて、対象ブロックに対してリフレッシュ処理及びメモリチェック処理を行うか否かを判別する。そして、リードアクセスの回数が所定の閾値を越えている場合にのみ、メモリチェック処理及びリフレッシュ処理を行う。したがって、アクセス回数が少ないメモリブロックに対しては処理がなされないため、メモリチェック処理及びリフレッシュ処理の実行に要する時間を短縮することができる。
【００９４】
また、ブロック単位でのアクセス回数に応じてリフレッシュ処理及びメモリチェック処理を行うため、アクセスが集中しているメモリセルのみならず、これと同じブロック内の隣接するメモリセルに対してもリフレッシュ処理及びメモリチェック処理を行うことができる。
【００９５】
また、本発明によれば、パワーオンリセット信号を受けた場合のみ、メモリチェック処理、リフレッシュ処理及びこれらを行うか否かの判定を行うため、電源投入直後以外のリセット時にはメモリチェック及びリフレッシュ処理の為の待機状態が無い。したがって、フラッシュメモリに対して高速アクセスを行うことが可能となる。
【００９６】
なお、上記実施例では、ブロックアクセス回数情報３０１及び４０１として、フラッシュメモリ１４の各ブロック毎のリードアクセス回数の情報を管理している。しかし、これに限らず、例えばブロックを構成するページ単位や誤り訂正処理における処理データ量の単位でアクセス回数の情報を管理してもよい。
【００９７】
また、上記実施例では、パワーオンリセット信号ＰＲに基づくリセット信号Ｒの受信時にパワーオンリセットチェック領域３０に１バイトの値「0x5A」を書き込み、この値が保持されているか否かによって、受信したリセット信号Ｒがパワーオンリセット信号ＰＲに基づくものか否かの判定を行っている。しかし、リセット信号Ｒがパワーオンリセット信号ＰＲに基づくものか否かをパワーオンリセットチェック領域３０に所定の値が書き込まれているか否かによって判定できれば良いのであって、書き込む値は「0x5A」に限られない。また、誤認識を防ぐため、例えば１バイトではなく数バイトの値を書き込むことにより、リセット信号Ｒがパワーオンリセット信号ＰＲに基づくものかどうかの判定を行っても良い。
【００９８】
また、上記実施例では、フラッシュメモリ１４が管理情報４０を記憶している。しかし、インタフェース部１２と接続された不揮発性メモリ等をフラッシュメモリとは別に設け、当該不揮発性メモリ等に管理情報４０を記憶させる構成であってもよい。
【００９９】
また、上記実施例では、メモリチェック処理について、フラッシュメモリ１４内に記憶されたデータを正しく読み出せるか否かを検査する処理として説明したが、これに加えて、データを正しく書き込めるか否かを検査する処理を行っても良い。
【０１００】
また、上記実施例３では、全ブロックに対するアクセス回数が第５のアクセス閾値ＴＡ５を越えているか否かに応じて、第１モード処理と第２モード処理のいずれかが選択される構成として説明した。しかし、これに限られず、アクセス回数が所定の閾値を越えているブロックが存在するか否かに応じて、第１モード処理又は第２モード処理を選択する構成であってもよい。また、情報処理装置１０の電源投入後にユーザがいずれかのモードを選択し、その選択に応じていずれかの処理を実行する構成であってもよい。また、ユーザの選択をインタフェース部１２内のレジスタに予め記憶しておき、電源投入後にこれを参照してモードを決定する構成であってもよい。
【符号の説明】
【０１０１】
１０    情報処理装置
１１    ＣＰＵ
１２    インタフェース部
１３    ＲＡＭ
１４    フラッシュメモリ
１５    ＣＰＵバス
１６    パワーオンリセット生成部
１７    オアゲート
１８    内部リセット生成部
２０    エラー検出訂正部
２１    ステータスレジスタ
２２    メモリチェック領域指定レジスタ
３０    パワーオンリセットチェック領域
３１    ページ／ブロック情報
４０    管理情報
【図１】
0006423282.tif 000002
【図２】
0006423282.tif 000003
【図３】
0006423282.tif 000004
【図４】
0006423282.tif 000005
【図５】
0006423282.tif 000006
【図６】
0006423282.tif 000007
【図７】
0006423282.tif 000008
【図８】
0006423282.tif 000009
【図９】
0006423282.tif 000010
【図１０】
0006423282.tif 000011
【図１１】
0006423282.tif 000012
【図１２】
0006423282.tif 000013
【図１３】
0006423282.tif 000014
【図１４】
0006423282.tif 000015
【図１５】
0006423282.tif 000016
【図１６】
0006423282.tif 000017
【図１７】
0006423282.tif 000018