(57)【要約】【課題】  NAND型フラッシュメモリのエラーブロックの代替え処理には時間がかかり、このフラッシュメモリが記憶するデータを高速に読み出す場合の妨げになる。【解決手段】  読み出したデータにエラーがあった場合、このデータと共に記憶された冗長データを用いて訂正し、この訂正データとこのデータが記憶されていたブロックを特定する情報とを含むエラー訂正情報を出力する。後に起動された第２のアプリケーションは、フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる訂正データを書き込むと共に、このエラーブロックをこの未使用のブロックに置き換える。【選択図】  図６
2008191701.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位にアクセスされるフラッシュメモリにおける、エラーブロックのエラー回復処理方法であって、
第１のアプリケーションは、第１のアクセスドライバにより前記フラッシュメモリに記憶したデータを読み出し、
読み出したデータにエラーがあった場合、第１のアクセスドライバは、このデータと共に記憶された冗長データを用いて訂正し、この訂正データとこのデータが記憶されていたブロックを特定する情報とを含むエラー訂正情報を出力し、
前記エラー訂正情報が存在する場合、前記第１のアプリケーションの後に起動された第２のアプリケーションは、第２のアクセスドライバにより前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行う
ことを特徴とするエラー回復処理方法。
【請求項２】
前記第１のアクセスドライバが前記エラー訂正情報を出力する際、さらに該エラー訂正情報に前記訂正データから算出した冗長データを付加すると共に、
前記第２のアクセスドライバが前記エラーブロック回復処理を行う際、この付加した冗長データを前記未使用のブロックの冗長データとして書き込む
ことを特徴とする請求項１に記載のエラー回復処理方法。
【請求項３】
ブロック単位にアクセスされ、読み出したあるブロックのデータに誤りが発見された場合、そのブロックの回復処理を必要とするフラッシュメモリを搭載した情報処理装置であって、
前記フラッシュメモリに記憶したデータを読み出す機能を備え、この読み出したデータにエラーが発見された場合、このデータを正しく訂正すると共に、このデータが記憶されていたブロックを特定する情報と訂正後の訂正データとを含むエラー訂正情報を出力する第１のアクセスドライバと、
前記第１のアクセスドライバを介して前記フラッシュメモリから所定のデータを読み出す処理手段と、
前記エラー訂正情報が存在する場合、前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行う第２のアクセスドライバと
を具備し、
前記処理手段による読み出し処理の後に、前記第２のアクセスドライバによるエラーブロック回復処理をすることを特徴とする情報処理装置。
【請求項４】
前記第１のアクセスドライバが行うデータの訂正は、エラーが発見されたデータに付加された冗長データを用いて行われることを特徴とする、請求項３に記載の情報処理装置。
【請求項５】
前記第１のアクセスドライバが前記エラー訂正情報を出力する際、さらに該エラー訂正情報に前記訂正データから算出した冗長データを付加すると共に、
前記第２のアクセスドライバが前記エラーブロック回復処理を行う際、この付加した冗長データを前記未使用のブロックの冗長データとして書き込む
ことを特徴とする請求項３に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、NANDフラッシュメモリで発生したエラーを回復するための方法に関し、特に、記憶したデータの読み出し処理を優先する場合のエラーの回復処理方法に関する。
【背景技術】
【０００２】
情報機器の半導体記憶媒体として、大容量化が容易なNAND型フラッシュメモリが利用されている。この型のフラッシュメモリは、データの記憶、読出し、消去はブロック単位で行われる。また、NAND型フラッシュメモリは構造上、書き換えできる回数に制限がある。このため記憶するデータを補償するためにECC(Error Correcting Code)を付加して、読み出したデータにエラーが発見された場合には修復できるような仕組みを備えている。エラーが発見されたブロックは、以後データ記憶に使用しないよう別のブロックに代替える処理が必要となる。
【０００３】
しかしながら、フラッシュメモリから読み出したときでないと、そのブロックにエラーがあることが分からないうえ、エラーが発見されたブロックの代替え処理には読み込み操作とは別に書き込み操作も必要となり余計に時間がかかる。読み出しの際エラーが発見されたからといってその都度代替え処理をしていては、必要なデータを全て読み出すまでに多くの時間がかかってしまい、高速処理の妨げになる場合がある。
【０００４】
また、OS立ち上げ時など書き込み機能を省いたフットプリントの小さい読み出しソフトウェアが必要な場合、代替え処理そのものが実装できず、以後別の手段により読み出しが行われなければ修復される機会も失われ、結果、信頼性の低下を招く場合も考えられる。
【０００５】
NAND型フラッシュメモリの記憶するデータにエラーが発見された場合、ECCによりデータを修復しながらデータを読み出す発明が開示されている（特許文献１を参照）。
【特許文献１】特開２００５−１９０２０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
NAND型フラッシュメモリのエラーブロックの代替え処理には時間がかかり、このフラッシュメモリが記憶するデータを高速に読み出す妨げになる。
【０００７】
本発明は上記問題に鑑みてなされたもので、発見されたエラーブロックの代替え処理を省くことなく、NANDフラッシュメモリに格納されたデータの読み出しを高速に行えるエラー回復処理方法および情報処理装置を提供する。
【課題を解決するための手段】
【０００８】
本発明のエラー回復処理方法は、
ブロック単位にアクセスされるフラッシュメモリにおける、エラーブロックのエラー回復処理方法であって、第１のアプリケーションは、第１のアクセスドライバにより前記フラッシュメモリに記憶したデータを読み出し、読み出したデータにエラーがあった場合、第１のアクセスドライバは、このデータと共に記憶された冗長データを用いて訂正し、この訂正データとこのデータが記憶されていたブロックを特定する情報とを含むエラー訂正情報を出力し、前記エラー訂正情報が存在する場合、前記第１のアプリケーションの後に起動された第２のアプリケーションは、第２のアクセスドライバにより前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行うことを特徴とする。
【０００９】
また本発明の情報処理装置とすれば、
ブロック単位にアクセスされ、読み出したあるブロックのデータに誤りが発見された場合、そのブロックの回復処理を必要とするフラッシュメモリを搭載した情報処理装置であって、前記フラッシュメモリに記憶したデータを読み出す機能を備え、この読み出したデータにエラーが発見された場合、このデータを正しく訂正すると共に、このデータが記憶されていたブロックを特定する情報と訂正後の訂正データとを含むエラー訂正情報を出力する第１のアクセスドライバと、前記第１のアクセスドライバを介して前記フラッシュメモリから所定のデータを読み出す処理手段と、前記エラー訂正情報が存在する場合、前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行う第２のアクセスドライバとを具備し、前記処理手段による読み出し処理の後に、前記第２のアクセスドライバによるエラーブロック回復処理をすることを特徴とする情報処理装置が提供される。
【発明の効果】
【００１０】
エラーが発見されたメモリブロックの代替え処理を省くことなくデータの読み出しを高速に行えるエラー回復処理方法および情報処理装置が提供される
【発明を実施するための最良の形態】
【００１１】
図１は、本実施形態にかかる情報処理装置のブロック構成図の一例を示す図である。図１では、CPU１００、NORフラッシュメモリ１０１、RAM１０２、NANDフラッシュメモリ１０４、IOコントローラ１０５および内部バス１０６が示されている。
【００１２】
CPU１００は、このCPU(Central Processing Unit)用に作成されたプログラムコードに従い、所定の処理をする演算処理部である。
【００１３】
NORフラッシュメモリ１０１は、不揮発性のNOR型のフラッシュメモリである。NORフラッシュメモリは、NAND型フラッシュメモリと比べてアクセス速度が高速で、さらに１バイト単位でのランダムアクセスが可能となっている。本実施形態では、HDD（Hard Disk Drive）などの大容量の記憶装置の代わりに小容量のNORフラッシュメモリ１０１にCPU１００が処理するプログラムコードなどを記憶しておき、省電力化、耐震性、耐環境性を向上させる。このような構成は、特定機器への組込み用やPDA(Personal Digital Assistant)などのモバイル機器で有利である。
【００１４】
RAM１０２は、たとえばDRAM(Dynamic Random Access Memory)などの揮発性の半導体メモリで構成されている。大容量、高速アクセスが可能な反面、電源を遮断すると記憶内容が消失する。主にCPU１００がプログラムコードを処理する際の一時記憶領域として利用される。
【００１５】
NANDフラッシュメモリ１０３は、不揮発性のNAND型と呼ばれるフラッシュメモリである。このフラッシュメモリはNOR型のフラッシュメモリとは異なり、データの消去や書き込み速度が速く大容量化に適している。一方、ブロック単位でのアクセスになるため、HDDなどの記憶媒体の代わりとして利用されることが多い。また、記憶するデータの書き換え回数に制限があり、それを超えると記憶したデータが正常に読み出せなくなる特性がある。このためエラーが発生したブロックについては、そのブロックに記憶していたデータを空いている他のブロックに移し、以後はデータの書き込みに使用しないための目印としてバッドブロックマークを書き込む。この一連の処理をエラーブロック回復処理という。また、記憶したデータを読み出すよりも、たいていの場合、データ書き込みを完了するまでの時間の方がかかる。
【００１６】
IOコントローラ１０４は、NANDフラッシュメモリ１０３へのデータの入出力を制御する機能を有する。
【００１７】
内部バス１０５は、上記構成要素間を結び、それぞれの間のデータ授受を実現するための機能を有する。
【００１８】
次からは、図面に基づいて情報処理装置の動作を説明する。
【００１９】
図２は、本実施形態にかかるモジュール構成図の第１の動作を説明する図である。図２では、本実施形態にかかる情報処理装置のブロック構成図に示した各ブロック内に記憶されたデータおよびモジュール構成が示されている。
【００２０】
ブートローダ２００は、情報処理装置の立ち上げの際、各部の最低限の初期設定を行うとともに、その情報処理装置で動く本来のプログラムをロードする機能を有する。
【００２１】
NANDアクセスドライバ２０１は、IOコントローラ１０４を制御してNANDフラッシュメモリ１０３内のデータを読み出す機能を備えている。データの読み出しに際しては、NANDフラッシュメモリ１０３に記憶されたECCを用いて必要に応じて読み出すデータを修復する。また、データを修復した場合にはその修復したブロックの識別情報と修復後のデータとを別途記憶しておく機能も備えている。
【００２２】
OSイメージ２０２は、この情報処理装置が本来処理すべきOS(Operating System)のようなプログラムであり、ブートローダ２００の支援を受けることでCPU１００による実行が可能となる。たとえば、NANDフラッシュメモリ１０３はブロック単位でのアクセスとなることからCPU１００のメインメモリとしての利用には適さず、一旦他のメモリにロードする必要がある。
【００２３】
NANDアクセスドライバ２０３は、NANDアクセスドライバ２０１と同様にNANDフラッシュメモリ１０３のアクセスを実現するが、読み出し機能の他に、書き込み機能、エラーブロック回復処理機能などNANDフラッシュメモリ１０３に必要な全ての機能を備えている。
【００２４】
情報処理装置はブートの最初に、CPU１００はNORフラッシュメモリ１０１に記憶したブートローダ２００を実行し、各種初期設定を完了する。
【００２５】
図３は、本実施形態にかかるモジュール構成図の第２の動作を説明する図である。
【００２６】
初期設定を終わったブートローダ２００は、NANDアクセスドライバ２０１を介して、NANDフラッシュメモリ１０３に記憶されたOSイメージ２０２を読み出し、必要であれば読み出したデータを修復する。このデータは内部バス１０５を介してRAM１０２上にOSイメージ３００としてコピーされる。
【００２７】
このとき、NANDアクセスドライバ２０１が修復したデータがあれば、その修復後のデータと、NANDフラッシュメモリ１０３のエラーがあったブロックの識別情報を、ECCエラー訂正情報３０２として記録する。本実施形態では、ECCエラー訂正情報３０２をRAM１０２上に記憶するようにしているが、OSからアクセスできる記憶媒体であればどこに記憶しても良い。
【００２８】
図４は、本実施形態にかかるモジュール構成図の第３の動作を説明する図である。
【００２９】
ブートローダ２００は、OSイメージ２０２をOSイメージ３００としてコピーし終えると、RAM１０２にコピーしたOSイメージ３００の処理を開始する。
【００３０】
OSイメージ３００の処理は、最初にOS起動のための初期設定処理が実行される。この初期設定処理の中で、必要であればNANDアクセスドライバ３０１がECCエラー訂正情報３０２を参照し、その中の識別情報に従ってブロックの代替え処理を含む、NANDフラッシュメモリ１０３のエラーブロック回復処理を実施する。
【００３１】
図５は、本実施形態にかかるECCエラー訂正情報３０２の一例を示す図である。
【００３２】
ECCエラー訂正情報３０２は大きく２つの情報から成り立っている。一つはエラーとなったページの数（エラーページ数５００）であり、もう一つはエラーページ情報である。エラーページ数５００は、読み出し時エラーとなったページが無ければゼロとなる。もしくはECCエラー訂正情報３０２そのものを作成しない。
【００３３】
エラーページ情報は、ページ識別番号５０１、冗長データ５０２および訂正後データ５０３の組からなる。ページ識別番号５０１は、エラーのあったページを示すページ識別番号が格納される。訂正後データ５０３には、エラーを発見したページに付加されたECCを元に修復した後のデータが格納される。NANDフラッシュメモリの場合、通常５１２バイト長の領域を取る。冗長データ５０２は、訂正後データ５０３に格納している修復後のデータに対するECCである。ECCは通常、１６バイト長の領域を取る。
【００３４】
このとき、エラーが発見されるページが複数ある場合、修復したページ総数をエラーページ数５００に格納すると共に、その数だけ繰り返しエラーページ情報が格納される。
【００３５】
図６は、本実施形態にかかる情報処理装置の動作フローの一例を示す図である。
【００３６】
まずCPU１００は、NORフラッシュメモリ１０１に格納したブートローダ２００を実行する（ステップＳ０１）。
【００３７】
続いて、ブートローダ２００に内蔵されたNANDアクセスドライバ２０１を介して、NANDフラッシュメモリ１０３に記憶したOSイメージ２０２を１ページ分読み出す（ステップＳ０２）。このときECCに基づき読み出したデータにエラーが発生しているか否かを判断する（ステップＳ０３）。
【００３８】
エラーが発生している場合（Ｙｅｓ）、ECCを用いてエラーを訂正する処理（ECCエラー訂正処理）を実施し（ステップＳ０４）、正しいデータを修復する。そしてエラーとなったページの識別情報と修復後データおよびその修復後データのECCを計算し、ECCエラー訂正情報３０２を作成する（ステップＳ０５）。修復後データはRAM１０２にコピーされる（ステップＳ０６）。
【００３９】
ステップＳ０３でエラーが発生しなければ（Ｎｏ）、読み出したデータをそのままRAM１０２にコピーする（ステップＳ０６）。
【００４０】
OSイメージ２０２を格納するページが残っている場合（ステップＳ０７でＮｏ）、次のページを読み出すためにステップＳ０２からの処理を繰り返す。
【００４１】
全てのページを読み出したら（Ｙｅｓ）、次にブートローダ２００はRAM上にコピーしたOSイメージ３００の処理を開始する（ステップＳ０８）。
【００４２】
OSイメージ３００は最初にOS稼動のための初期設定処理が記述されている。この初期設定処理の中で、必要であればNANDフラッシュメモリ１０３に対しエラーブロック回復処理を実施する。
【００４３】
まずECCエラー訂正情報３０２がRAM１０２上に作成されているか否かを判断する（ステップＳ０９）。作成されていた場合（Ｙｅｓ）、エラーページ数５００で示される数分、NANDフラッシュメモリ１０３の使用可能な未使用のブロックを探し、読み出したECCエラー訂正情報３０２の冗長データ５０２および訂正後データ５０３を含む、そのページが含まれるブロックのデータを書き込み（ステップＳ１０）、ページ識別番号５０１が含まれるブロックと置き換える。ページ識別番号５０１で示されるページを含む元のブロックは信頼性が低いと判断し、以後データの保存に使用されることが無いようにバッドブロックマークを設定する（ステップＳ１１）。
【００４４】
ここまでの一通りの処理を含む初期設定処理が終わると、OS本来の機能に移行する（ステップＳ１２）。
【００４５】
本実施形態では上記のように、ECCエラー訂正情報３０２として作成した、読み出し時エラーとなったページの修復後のデータをエラーブロック回復処理に使用する。これにより、一度エラーを起こしたフラッシュメモリの不安定なページのデータを再び読まねばならないというリスクを回避することができる。
【００４６】
このような一連の構成とすることで、エラーが発見されたメモリブロックの代替え処理を省くことなく、NANDフラッシュメモリに格納されたデータの読み出しを高速に行えるエラー回復処理方法および情報処理装置を実現することができる。
【００４７】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４８】
【図１】本実施形態にかかる情報処理装置のブロック構成図の一例を示す図である。
【図２】本実施形態にかかるモジュール構成図の第１の動作を説明する図である。
【図３】本実施形態にかかるモジュール構成図の第２の動作を説明する図である。
【図４】本実施形態にかかるモジュール構成図の第３の動作を説明する図である。
【図５】本実施形態にかかるECCエラー訂正情報の一例を示す図である。
【図６】本実施形態にかかる情報処理装置の動作フローの一例を示す図である。
【符号の説明】
【００４９】
１００・・・ＣＰＵ、１０１・・・ＮＯＲフラッシュメモリ、１０２・・・ＲＡＭ、１０３・・・ＮＡＮＤフラッシュメモリ、１０４・・・ＩＯコントローラ、１０５・・・内部バス、２００・・・ブートローダ、２０１・・・ＮＡＮＤアクセスドライバ、２０２・・・ＯＳイメージ、２０３・・・ＮＡＮＤアクセスドライバ、３００・・・ＯＳイメージ、３０１・・・ＮＡＮＤアクセスドライバ、３０２・・・ＥＣＣエラー訂正情報
【図１】
2008191701.tif 000003
【図２】
2008191701.tif 000004
【図３】
2008191701.tif 000005
【図４】
2008191701.tif 000006
【図５】
2008191701.tif 000007
【図６】
2008191701.tif 000008