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