(57)【要約】【課題】ＮＡＮＤ型ＦｌａｓｈＲＯＭにおいてＲｅａｄ  Ｄｉｓｔｕｒｂによる読出しエラーが発生した場合でも、書き込みエラーが発生した場合と同様に代替ブロックを利用し、Ｒｅａｄ  Ｄｉｓｔｕｒｂによるデータブロック内の復旧困難なデータ破壊を防止する。【解決手段】Ｒｅａｄ処理部３０１は、データブロックから書込データの読み出しを実行すると共に読み出し実行時に書込データに１ビット反転不良があるかを判定し、あると判定すると書込データを修正し読み出す。リードエラー処理部１０００は代替ブロックを管理すると共にＲｅａｄ処理部３０１により１ビット反転不良と判定されると代替ブロックの中から空き代替ブロックを取得し、空き代替ブロックに修正された書込データをＷｒｉｔｅ処理部３０２を用いて書き込みし、１ビット反転不良が発生したデータブロックを消去し、消去したデータブロックを新たな代替ブロックとして管理する。【選択図】図３
2009301264.tif 000002
【特許請求の範囲】
【請求項１】
データが書き込まれる複数のデータブロックから構成されるデータブロック領域と、前記データブロックの代替に使用される複数の代替ブロックから構成される代替ブロック領域とを含むＮＡＮＤ型フラッシュメモリと、
前記データブロックに書き込まれている書込データの読み出しを実行すると共に、前記書込データの読み出し実行時に前記書込データに修正が可能な所定の読み出し不良が発生しているかどうかを判定し、発生していると判定すると前記書込データを修正する読出実行部と、
データを前記ＮＡＮＤ型フラッシュメモリに書き込む書込処理部と、
前記代替ブロックを管理すると共に、前記読出実行部により前記所定の読み出し不良の発生と判定されると管理している前記代替ブロックの中からデータの書き込まれていない空き代替ブロックを取得し、取得した前記空き代替ブロックに前記読出実行部により修正された前記書込データを前記書込処理部を用いて書き込みし、前記所定の読み出し不良が発生した前記データブロックを消去し、消去した前記データブロックを新たな代替ブロックとして管理する一連の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて実行するリードエラー処理部と
を備えたことを特徴とするＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項２】
前記複数のデータブロックの各データブロックは、
複数ビットからなるデータが書き込まれ、
修正可能な前記所定の読み出し不良は、
前記書込データのいずれかの１ビットが反転する１ビット反転不良であり、
前記リードエラー処理部は、
前記読出処理部により前記１ビット反転不良と判定されると管理している前記代替ブロックの中からデータの書き込まれていない空き代替ブロックを取得し、取得した前記空き代替ブロックに前記読出実行部によりビットが修正された前記書込データを前記書き込み処理部を用いて書き込みし、前記１ビット反転不良が発生している前記データブロックを消去し、消去した前記データブロックを新たな代替ブロックとして管理することを特徴とする請求項１記載のＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項３】
前記リードエラー処理部は、
前記代替ブロックへの書込み状況が記録された代替ブロック管理情報に基づいて前記代替ブロックを管理すると共に、消去した前記データブロックを新たな代替ブロックとして管理する場合には、前記新たな代替ブロックを前記代替ブロック管理情報に登録することを特徴とする請求項１または２のいずれかに記載のＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項４】
前記リードエラー処理部は、
前記代替ブロック管理情報をリストを用いて管理することを特徴とする請求項３記載のＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項５】
前記リードエラー処理部は、
前記新たな代替ブロックを前記代替ブロック管理情報に登録した場合には、前記新たな代替ブロックの情報を前記リストの最後尾に接続することを特徴とする請求項４記載のＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項６】
前記ＮＡＮＤ型フラッシュメモリは、
前記リストを格納する不揮発ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を備えたことを特徴とする請求項４または５のいずれかに記載のＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項７】
前記リードエラー処理部は、
前記ＣＰＵがアイドル状態のときに、前記所定の書き込み不良が発生した前記データブロックの消去と、前記新たな代替ブロックの前記代替ブロック管理情報への登録とを実行することを特徴とする請求項１〜６のいずれかに記載のＮＡＮＤ型フラッシュメモリアクセス装置。
【請求項８】
データが書き込まれる複数のデータブロックから構成されるデータブロック領域と、前記データブロックの代替に使用される複数の代替ブロックから構成される代替ブロック領域とを含むＮＡＮＤ型フラッシュメモリに対して、データの書き込みと読み出しとのアクセスを実行するＮＡＮＤ型フラッシュメモリアクセスプログラムにおいて、
（１）前記データブロックに書き込まれている書込データの読み出しを実行すると共に、前記書込データの読み出し実行時に前記書込データに修正が可能な所定の読み出し不良が発生しているかどうかを判定し、発生していると判定すると前記書込データを修正する処理、
（２）前記代替ブロックを管理すると共に、前記所定の読み出し不良の発生と判定されると管理している前記代替ブロックの中からデータの書き込まれていない空き代替ブロックを取得する処理
（３）前記空き代替ブロックが取得されると、前記修正後の書込データを前記空き代替ブロックに書き込む処理
（４）前記所定の読み出し不良が発生した前記データブロックを消去し、消去した前記データブロックを新たな代替ブロックとして管理する処理
をコンピュータに実行させるためのＮＡＮＤ型フラッシュメモリアクセスプログラム。
【請求項９】
請求項９記載のＮＡＮＤ型フラッシュメモリアクセスプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＮＡＮＤ型ＦｌａｓｈＲＯＭのブロック代替方式（ＮＡＮＤ型フラッシュメモリアクセス装置）に関するもので、Ｒｅａｄ不良が発生した場合に、不良発生ブロックを代替ブロックとして再利用する方式に関する。
【背景技術】
【０００２】
図９に一般的なＮＡＮＤ型ＦｌａｓｈＲＯＭの構成例を示す。図において、ＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１はＮＡＮＤ型ＦｌａｓｈＲＯＭそのものを示しており、内部は複数のブロック１０２（データブロック）から構成される。またブロック１０２は複数のセクタ１０３で構成される。ＮＡＮＤ型ＦｌａｓｈＲＯＭへのアクセスは、回路規模の抑制と利用者への利便性を鑑みて、一般的に、読み込み，書き込みはセクタの単位で行い、消去はブロックの単位で行なえるようになっている。更にＮＡＮＤ型ＦｌａｓｈＲＯＭは、その内部を論理的にデータブロック領域、代替ブロック領域、管理ブロック領域に分けていることが通常である。しかしながら、ＮＡＮＤ型ＦｌａｓｈＲＯＭは、他のＦｌａｓｈＲＯＭと同様に、ブロックの消去（全ビットの値を０→１に変化させる処理）回数に限界があることが良く知られており、消去後のデータ書き込みでこの不良が検出され、書込みエラーが発生する。代替ブロックは、この書込みエラーによるデータ消滅を防止するために用意されるもので、エラーが発生したブロックに書き込むべきデータを代替ブロックに格納するようになっている。管理ブロックは、どのブロックで書き込みエラーが発生し、どの代替ブロックへ書き込むべきデータを格納したかを記録、管理する代替ブロック管理情報２０１を格納する領域である。
【０００３】
書き込みエラーによるブロックの代替処理が複数回行われると、ＮＡＮＤ型ＦｌａｓｈＲＯＭ内の有効なデータが存在するブロックは、データブロック領域と代替ブロック領域を跨って、飛び飛びの状態になる。そのため、ソフトウェアからの利用を容易にするために、ソフトウェアからは常に連続した仮想セクタ番号でアクセスできるようにし、実際にＮＡＮＤ型ＦｌａｓｈＲＯＭにアクセスする際には、仮想ブロック番号に対応する物理ブロック番号／物理セクタ番号に変換してアクセスされるようにするための、論理物理変換テーブル２０２を持ち、このテーブル情報も管理ブロック内に記録，管理されている。
【０００４】
図１０に管理ブロックに記録される２つの情報、代替ブロック管理情報２０１と論理物理変換テーブル２０２の構造例を示す。代替ブロック管理情報２０１は、代替したデータブロック領域のブロック番号のみを保持し、代替ブロックのブロック番号はテーブルのインデックスとして使用される。また、代替したデータブロック領域のブロック番号で「−１」の値は、まだ代替として使用されていないことを示している。論理物理変換テーブル２０２は、論理セクタ番号に対応した物理ブロック番号と物理セクタ番号の対で構成され、論理セクタ番号はテーブルのインデックスとして使用される。
【０００５】
図１１は、ＮＡＮＤ型ＦｌａｓｈＲＯＭを操作するためのシステム構成例で、ＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１は、メディアとしてのＮＡＮＤ型ＦｌａｓｈＲＯＭそのものである。Ｒｅａｄ処理部３０１は、利用者からの読み出し要求を処理する。Ｗｒｉｔｅ処理部３０２は、利用者からの書き込み要求を処理する。論理・物理変換部３０３は、論理物理変換テーブルにより利用者が指定した論理セクタ番号を物理ブロック番号／物理セクタ番号に変換する。代替ブロック管理部３０４は、代替ブロック管理情報により代替ブロックを使用する必要が生じた場合に空きの代替ブロックの探索・割当てや、ブロックの代替による論理物理の対応情報の変更を論理・物理変換部３０３へ指示する。
【０００６】
次に図１２、図１３を用いて、書込みエラーが発生した場合の、ブロック代替の動作を説明する。以下の説明および図１２、図１３では、説明を簡単にするために、１つのブロックには高々１つのセクタしか存在していないと仮定し、セクタを省いて説明する。図１２は書き込みエラーが発生した場合のＷｒｉｔｅ処理部３０２，代替ブロック管理部３０４，論理・物理変換部３０３の処理フローを示し、図１３はブロックの代替前後の代替ブロック管理情報２０１と論理物理変換テーブル２０２の内容の例を示したものである。
【０００７】
図１２を用いて説明する。
（１）利用者より書き込みを要求されると、Ｗｒｉｔｅ処理部３０２が動き、ステップ４０１で、論理・物理変換部３０３は、要求されたブロック番号を論理ブロック番号から物理ブロック番号へ変換する。図１３の例では論理ブロック番号「２」への書き込みが要求されたため、論理・物理変換テーブル２０２−１により物理ブロック番号「２」へ変換される。
（２）次にステップ４０２により、Ｗｒｉｔｅ処理部３０２は物理ブロック「２」へデータを書き込み、
（３）ステップ４０３にて、書き込みが正常に完了したかどうかを確認する。通常この書き込み正常の確認は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）データの整合性をチェックすることで行われる。物理ブロック「２」への書き込みでエラーが発生した場合、
（４）ステップ４０４にて、代替ブロック管理部３０４が代替ブロックの空きをチェックする。図１３の例では代替ブロック管理情報２０１−１の状態であるため、空きの代替ブロックとして、物理ブロック「７」が選定される。
（５）次にステップ４０５にて、Ｗｒｉｔｅ処理部３０２は、ステップ４０４で代替ブロック管理部３０４により取得された代替ブロックへ再度データを書き込む。図１３の例では空きの代替ブロックとして物理ブロック「７」を得たため、物理ブロック「２」へ書き込んだデータを再度物理ブロック「７」へ書き込む。
（６）最後にステップ４０６にて、代替ブロック管理部３０４は代替ブロック管理情報の内容を更新すると共に、論理・物理変換部３０３に指示を出して論理・物理変換テーブルを更新させ、書込みエラーからの復旧を完了する。
【０００８】
図１３の例では、代替ブロック管理情報２０１は物理ブロック「７」が物理ブロック「２」の代替として使用されたため、代替ブロック管理情報２０１は、代替ブロック管理情報２０１−１の状態から代替ブロック管理情報２０１−２の状態へ変わり、論理・物理変換テーブル２０２は、論理ブロック「２」に対応するデータ格納先が物理ブロック「２」から物理ブロック「７」へ変わったため、論理・物理変換テーブル２０２−１の状態から論理・物理変換テーブル２０２−２の状態へ更新される。なお、図１３において物理ブロック「５」は、上記フロー説明以前の書き込み操作にてエラーが発生したため、代替ブロックで既に代替されていることを示している。
【０００９】
また、エラーの発生したブロックを代替ブロックで代用する方法を改良したものとして、特開２００２−１８２９８９号公報、特開２００３−０５８４３２号公報で具体的に示されている。また、書き込みエラーが発生したブロックを再検査し、正常ブロックと確認できたブロックを代替ブロックとして再利用する方法が、特開２００５−２８４７００号公報に示されている。
【００１０】
しかし、前記のブロック代替方法及び従来技術は、データの書き込みでエラーが発生した場合にのみ対応しており、ＮＡＮＤ型ＦｌａｓｈＲＯＭの特性であるＲｅａｄ  Ｄｉｓｔｕｒｂによるデータ読み出し時のエラーは考慮されていない。ＮＡＮＤ型ＦｌａｓｈＲＯＭは、同一のブロックから繰り返しデータを読み出すと、そのブロック内の任意のビット値が１→０変化してしまうＲｅａｄ  Ｄｉｓｔｕｒｂと呼ばれる特性がある。このＲｅａｄ  Ｄｉｓｔｕｒｂは、ＮＡＮＤ型ＦｌａｓｈＲＯＭのメモリセルにかかっている電圧がＲｅａｄ動作により低下していき、０／１値と判断する電圧値を下回ってしまうことに起因する。このように、Ｒｅａｄ  Ｄｉｓｔｕｒｂはメモリセルの電圧降下により発生するため、ブロックの消去やＲｅａｄ  Ｄｉｓｔｕｒｂの発生したメモリセルへの書き込みを行うと、メモリセルへの電荷の再供給が行われ、電圧降下の状態が解消されるという特性も持つ。ＮＡＮＤ型ＦｌａｓｈＲＯＭでは、その大容量化を達成するために、多数のセクタでブロックが構成されているため、ある特定のセクタへの読み出しにより、実際には読み出し操作が行なわれていない同一ブロック内の他のセクタのデータでもビット値の変化が発生してしまうが、ビット値の変化有無は、当該セクタへの読み出し操作が行なわれた時に初めて検出可能という課題を抱えている。なお、ＮＡＮＤ型ＦｌａｓｈＲＯＭは、通常ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  Ｃｏｒｒｅｃｔｉｎｇ）コードにより、呼出しデータに対して１ビットのエラー訂正が可能となっていため、Ｒｅａｄ  Ｄｉｓｔｕｒｂにより１ビットのビット反転が発生しても、正しい読出しデータを得ることができるようになっている。しかしＲｅａｄ  Ｄｉｓｔｕｒｂによるデータ読出し時のエラーは考慮されていないという課題がある。また、Ｒｅａｄ  Ｄｉｓｔｕｒｂは、ブロック消去により容易に復旧させることができるが、前記の従来技術では、この点も考慮されていないため、エラーが発生したブロックの再利用が効率的でなく、ＥＣＣで訂正困難な同一ブロック内での２ビット反転を引き起こす可能性があるという課題もある。
【特許文献１】特開２００２−１８２９８９号公報
【特許文献２】特開２００３−０５８４３２号公報
【特許文献３】特開２００５−２８４７００号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
この発明は、Ｒｅａｄ  Ｄｉｓｔｕｒｂによる読出しエラーが発生した場合でも、書き込みエラーが発生した場合と同様に代替ブロックを利用し、Ｒｅａｄ  Ｄｉｓｔｕｒｂによるデータブロック内の復旧困難なデータの破壊防止を目的とする。
【課題を解決するための手段】
【００１２】
この発明のＮＡＮＤ型フラッシュメモリアクセス装置は、
データが書き込まれる複数のデータブロックから構成されるデータブロック領域と、前記データブロックの代替に使用される複数の代替ブロックから構成される代替ブロック領域とを含むＮＡＮＤ型フラッシュメモリと、
前記データブロックに書き込まれている書込データの読み出しを実行すると共に、前記書込データの読み出し実行時に前記書込データに修正が可能な所定の読み出し不良が発生しているかどうかを判定し、発生していると判定すると前記書込データを修正する読出実行部と、
データを前記ＮＡＮＤ型フラッシュメモリに書き込む書込処理部と、
前記代替ブロックを管理すると共に、前記読出実行部により前記所定の読み出し不良の発生と判定されると管理している前記代替ブロックの中からデータの書き込まれていない空き代替ブロックを取得し、取得した前記空き代替ブロックに前記読出実行部により修正された前記書込データを前記書込処理部を用いて書き込みし、前記所定の読み出し不良が発生した前記データブロックを消去し、消去した前記データブロックを新たな代替ブロックとして管理する一連の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて実行するリードエラー処理部と
を備えたことを特徴とする。
【発明の効果】
【００１３】
この発明により、Ｒｅａｄ  Ｄｉｓｔｕｒｂによる読出しエラーが発生した場合でも、書き込みエラーが発生した場合と同様に代替ブロックを利用し、Ｒｅａｄ  Ｄｉｓｔｕｒｂによるデータブロック内の復旧困難なデータの破壊を防止できる。
【発明を実施するための最良の形態】
【００１４】
実施の形態１．
図１は、コンピュータで実現される実施の形態１のＮＡＮＤ型フラッシュメモリアクセス装置１００の外観の一例を示す図である。図１は、携帯電話の例を示している。携帯電話の他、ＮＡＮＤ型フラッシュメモリアクセス装置１００は、例えば、携帯型のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、組み込み機器などとして実現される。
【００１５】
図２は、コンピュータで実現されるＮＡＮＤ型フラッシュメモリアクセス装置１００のハードウェア資源の一例を示す図である。図２において、ＮＡＮＤ型フラッシュメモリアクセス装置１００は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１１（プログラム展開用）、表示装置８１３、操作キー８１４、通信回路８１６、ＮＡＮＤ型フラッシュＲＯＭ８２０と接続され、これらのハードウェアデバイスを制御する。
【００１６】
ＮＡＮＤ型フラッシュＲＯＭ８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００１７】
上記プログラム群８２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出されて実行される。
【００１８】
ファイル群８２４には、以下に述べる実施の形態の説明において、「代替ブロック管理情報」、「論理物理変換テーブル」などとして説明する情報や、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
【００１９】
また、以下に述べる実施の形態の説明においては、データや信号値は、ＲＡＭ８１１、ＮＡＮＤ型フラッシュＲＯＭ８２０のメモリに記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体により伝送される。
【００２０】
また、以下に述べる実施の形態の説明において、「〜部」として説明するものは、「手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２１】
図３は、実施の形態１のＮＡＮＤ型フラッシュメモリアクセス装置１００の構成を示す図である。背景技術ではＷｒｉｔｅエラーについて示したが、以下の実施の形態１は、リードエラー（読み出し不良ともいう）に関する処理である。図３は、図１１と同等あるいは類似の機能の要素には同一の名称、符号を付しており、図１１に対してＲｅａｄエラー復旧部１０１０及び不揮発ＲＡＭ１０３０を追加した構成である。ＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１（ＮＡＮＤ型フラッシュメモリともいう）、Ｒｅａｄ処理部３０１（読出実行部）、Ｗｒｉｔｅ処理部３０２（書込処理部）、論理・物理変換部３０３、及び代替ブロック管理部３０４は、図１１と同様である。図１１との違いは、代替ブロック管理部３０４がＲｅａｄエラー復旧部１０１０を備えた点にある。Ｒｅａｄエラー復旧部１０１０は、Ｒｅａｄ処理部３０１で検出したＲｅａｄエラーを代替ブロックを用いて普及させる機能を持ち、代替ブロック管理部３０４と協働して機能し、代替ブロック管理部３０４と密接なつながりを持つ。代替ブロック管理部３０４とＲｅａｄエラー復旧部１０１０とは、リードエラー処理部１０００を構成する。以下に説明するＮＡＮＤ型フラッシュメモリアクセス装置１００の動作における図１１、図１２との相違は、このリードエラー処理部１０００の機能による。
【００２２】
図４は、Ｒｅａｄエラーを発生したデータブロックを消去後に代替ブロックとして再利用するための代替ブロック管理情報１０２０と、論理・物理変換テーブル２０２の構成を示す。論理・物理変換テーブル２０２は図１０と同じであるが、代替ブロック管理情報１０２０は図１０とは異なりテーブル情報の中に代替ブロック番号も保持する形となっている。
【００２３】
次に図５，図６を用いて、従来例で書込みエラー時の代替処理を説明した場合と同じ状況で読み出しエラーが発生した場合の動作フローを説明する。図６は図１３と同じく説明を簡単にするために、５つのデータブロック、３つの代替ブロック、１つの管理ブロックから構成されたＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１において、論理ブロック「２」への読み出し要求でＲｅａｄエラーが発生し、代替処理が行なわれた前後での論理・物理変換テーブル２０２および代替ブロック管理情報１０２０の変化を示している。論理・物理変換テーブル２０２の変化前後を「論理・物理変換テーブル２０２−１、２０２−２」とし、代替ブロック管理情報１０２０の変化前後を「代替ブロック管理情報１０２０−１、１０２０−２」としている。なお、図６の代替ブロック管理情報１０２０−１に示すように、物理ブロック「５」は既に書き込みエラーにて代替ブロック６に代替されていることを表している。すなわち、代替ブロック管理情報１０２０−１の１行目のレコードは、物理ブロック「６」（代替ブロック番号）は、物理ブロック「５」（代替先番号）の代替であることを示している。
【００２４】
次に図５のフローと図６とに沿って、「読み出しエラー発生時」の代替ブロック管理部３０４の動作を、Ｒｅａｄエラー復旧部１０１０の動作フローと合わせて説明する。
【００２５】
（Ｓ８０１：論理・物理変換）
まず利用者によりブロックの読み出し要求が出されるとステップ８０１にて、論理・物理変換部３０３は、Ｒｅａｄ処理部３０１の指示を受け、論理・物理変換テーブル２０２−１を参照して論理・物理ブロック番号の変換を行なう。図６では論理ブロック「２」への読み出し要求が行なわれたため、論理・物理変換テーブル２０１−１により、物理ブロック「２」に変換される。
【００２６】
（Ｓ８０２，Ｓ８０３：データ読み出し）
次にステップ８０２にて、Ｒｅａｄ処理部３０１（読出実行部の一例）は、物理ブロックのデータを読み出し、ステップ８０３にて、Ｒｅａｄ処理部３０１は、Ｒｅａｄ処理が正常に終了したかをチェックする。Ｒｅａｄ処理の正常終了判断は、データブロック内にあるＥＣＣ情報の整合を計算することで確認できるとともに、読み出したデータの中の１ｂｉｔが反転してしまっている場合には、正常なデータへ復元させることもできる。この例では、１ｂｉｔが反転が発生している場合は、ＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１に組み込まれている復元機能（プログラムでもよいしハードウェアである回路でも構わない）により復元してもよいし、Ｒｅａｄ処理部３０１に復元機能を持たせてもよい。いずれの場合でも、最終的には、Ｒｅａｄ処理部３０１は、復元された正しいデータを読み込む。すなわち読出実行部は、データブロックに書き込まれているデータ（書込データ）の読み出しを実行すると共に、書込データの読み出し実行時に書込データに修正が可能な１ｂビット反転不良（所定の読み出し不良）が発生しているかどうかを判定し、発生していると判定すると書込データを修正し、修正後の書込データを読み出すが、復元機能は、Ｒｅａｄ処理部３０１が持ってもよいし、ＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１が持ってもよいし、あるいは、他の記憶部に格納されたプログラムにより実行されても構わない。ステップ８０３では１ｂｉｔ反転の復元前のデータで判断し、正常な場合は（Ｓ８０３のＹＥＳ）、そのデータを利用者へ戻して処理を終了させる。読み出したデータが正常でないと判断した場合はステップ８０４へ進む。
【００２７】
（Ｓ８０４：空き代替ブロックの取得）
ステップ８０４において、Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）は、空き代替ブロックを取得する。図６では、Ｒｅａｄエラー復旧部１０１０は代替ブロック管理情報１０２０−１を参照して、代替ブロックとして物理ブロック「７」を選定する。
【００２８】
（Ｓ８０５：データ移動）
次にステップ８０５にて、Ｗｒｉｔｅ処理部３０２は、Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）の指示を受け、ステップ８０４で取得した代替ブロック「７」へ、１ｂｉｔ反転を復元した修正後のデータを書き込む。
【００２９】
（Ｓ８０６：論理・物理変換テーブル２０２の更新）
ステップ８０６にて、論理・物理変換部３０３は、Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）の指示を受け、論理・物理変換テーブル２０２−１を論理・物理変換テーブル２０２−２の内容（値）に更新する。
【００３０】
（Ｓ８０７：エラーブロックの消去）
次にステップ８０７では、Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）は、Ｒｅａｄエラーが発生し、物理ブロック「７」で代替されたブロック（図６の物理ブロック「２」）を消去する。すなわち、物理ブロック「２」の全ビットを１にする。Ｒｅａｄ  ＤｉｓｔｕｒｂによるＲｅａｄエラーは、この消去により解消され、ブロックは再利用が可能である。このため、処理はステップ８０８に進む。
【００３１】
（Ｓ８０８：エラーブロックの再利用）
ステップ８０８にて、Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）は、代替ブロック管理情報１０２０−１を代替ブロック管理情報１０２０−２の内容に更新して、消去した物理ブロック「２」を代替ブロックとして再利用可能とする。図６では、代替ブロック管理情報１０２０−１から代替ブロック管理情報１０２０−２の内容（値）へ更新することで、ステップ８０７で消去した物理ブロック「２」が代替ブロックとして再利用可能な状態となっている。すなわち、代替ブロック管理情報１０２０−２では、物理ブロック「２」が新たな代替ブロックとして登録されている。
【００３２】
（代替ブロック情報のリストによる管理）
次に図７を参照して、代替ブロック管理情報１０２０をリスト構造で管理する場合を説明する。図７に示すように、代替ブロック管理情報１０２０をリスト構造で管理する「代替ブロック管理リスト１００２」を設ける。これにより、多数の代替ブロックが存在する場合において「Ｒｅａｄエラーが発生したブロック」の消去後の代替ブロック管理情報１０２０の更新処理を簡素化する。図７はリスト構造にした代替ブロック管理情報１０２０について、図６のケースにおける代替ブロック管理情報１０２０の更新前後の状態（代替ブロック管理リスト１００２−１，１００２−２）を示している。図７において、代替ブロック管理情報１０２０のＮｅｘｔが次の空き代替ブロック番号格納位置を示しており、「−１」はリストの最後尾を示している。代替ブロック管理情報１０２０を代替ブロック管理リスト１００２で管理することにより、新たな代替ブロックを代替ブロック管理情報１０２０に追加（登録）する場合に、迅速に追加位置を取得することができ、代替ブロック管理情報１０２０の更新処理を簡素化できる。図７では、書き込みエラーによる代替は再利用できないため、リスト管理の対象外としても問題はないので記載していない。また、図７ではリストを単方向として管理しているが、双方向リストとして管理しても、なんら差し支えない。双方向リストの場合は、リストへの挿入，リストからの削除が更に容易となるため、より望ましいとも言える。
【００３３】
図８は、代替ブロック管理リスト１００２に、リストの先頭と最後尾を示す情報を追加し、「Ｒｅａｄエラーが発生したブロック」の消去後の代替ブロック管理情報１０２０の更新において、リストの最後尾に消去ブロックを追加する。これにより、消去を繰り返すとＲｅａｄ  Ｄｉｓｔｕｒｂの発生確率が上昇してしまうという、ＮＡＮＤ型ＦｌａｓｈＲＯＭの特性によるＲｅａｄエラー発生をできるだけ抑えることができるようにしている。すなわち、Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）は、新たな代替ブロックを代替ブロック管理情報１０２０に登録した場合には、新たな代替ブロックの情報を代替ブロック管理リスト１００２の最後尾に接続する。そして、Ｒｅａｄエラー復旧部１０１０は修正後のデータを書き込むための空き代替ブロックを取得する際には、代替ブロック管理リスト１００２の先頭から最後尾に向かって検索し、ヒットした空き代替ブロックに修正後のデータをＷｒｉｔｅ処理部３０２を用いて書き込む。これにより、同じブロックが頻繁に代替ブロックとして使用（すなわち頻繁にブロック消去）される状況を回避し、代替ブロックに関するＲｅａｄ  Ｄｉｓｔｕｒｂの発生確率を低減することができる。図８は、図７と同じケースにおける、代替ブロック管理情報１００２の更新前後の状態（代替ブロック管理リスト１００２−１，１００２−２）を示している。図８において、Ｈｅａｄが空き代替ブロック番号の格納領域を管理するリストの先頭を指し、Ｔａｉｌがリストの最後尾を指している。また、図８の代替ブロック管理リスト１００２−２では、代替ブロック管理リスト１００２−２からリストの先頭を代替ブロックとして取り出し、リストの最後尾に消去したブロックを挿入した結果を示している。
【００３４】
（ＣＰＵのアイドル時における処理）
Ｒｅａｄエラー復旧部１０１０（リードエラー処理部）は、ＣＰＵがアイドル状態のときに、書き込み不良が発生したデータブロックの消去と、新たな代替ブロックの代替ブロック管理情報１０２０への登録とを実行することで、ＣＰＵを有効利用する。すなわち、Ｒｅａｄエラー復旧部１０１０は、Ｒｅａｄエラーが発生したブロックの物理ブロック番号を管理ブロック内に記録しておき、エラーが発生したブロックの消去と、代替ブロック管理情報１０２０の更新処理とを、ＣＰＵがアイドル状態となるまで遅延させる。これにより、ＣＰＵの有効利用及びＲｅａｄエラーが発生した場合のＲｅａｄ処理の完了を高速にすることができる。具体的には図５におけるステップ８０７，８０８の処理を遅延させる。
【００３５】
また、Ｒｅａｄエラー復旧部１０１０は、上記に加えて、修正後のデータの移動処理もＣＰＵのアイドル時に実行してもよい。すなわち、Ｒｅａｄエラー復旧部１０１０は、Ｒｅａｄエラーが発生したブロックの物理ブロック番号および取得した空き代替ブロック番号を管理ブロック内に記録しておき、エラーが発生したブロックから代替ブロックへのデータ移動、エラーが発生したブロックの消去、代替ブロック管理情報更新の処理を、ＣＰＵがアイドル状態となるまで処理を遅延させる。これにより、ＣＰＵの有効利用及びＲｅａｄエラーが発生した場合のＲｅａｄ処理の完了を高速にすることができる。具体的には図５におけるステップ８０５〜８０８の処理を遅延させる。
【００３６】
（代替ブロック管理リスト１００２の格納場所）
さらにＮＡＮＤ型フラッシュメモリアクセス装置１００では、代替ブロック管理リスト１００２をＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１の管理ブロック内に保持するようにすることで、システムの再起動により代替ブロック管理情報から代替ブロック管理リストを生成することを省くことができ、システムの起動を高速化させることができる。
【００３７】
（不揮発ＲＡＭ）
あるいは、図３に示すように、ＮＡＮＤ型フラッシュメモリアクセス装置１００では、ＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１内に不揮発ＲＡＭ１０３０を追加し、代替ブロック管理リスト１００２をこの不揮発ＲＡＭ１０３０に保持することで、代替ブロック管理リスト１００２の更新及び更新結果のＮＡＮＤ型ＦｌａｓｈＲＯＭ１０１への保持を高速化させることができる。なお、不揮発ＲＡＭとしては、ＭＲＡＭ（Ｍａｇｎｅｓｔｉｃ  Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など、フラッシュＲＯＭよりも高速アクセスが可能であれば、いずれでも良い。
【００３８】
以上のように、ＮＡＮＤ型フラッシュメモリアクセス装置１００では、ＮＡＮＤ型ＦｌａｓｈＲＯＭからのＲｅａｄ処理部にてＲｅａｄＤｉｓｔｕｒｂによる読み出しエラーを検出した場合には代替ブロック管理部３０４を呼び出すようにするととともに、代替ブロック管理部３０４にＲｅａｄエラー復旧部１０１０を設けることにより、Ｒｅａｄ  Ｄｉｓｔｕｒｂによる読出しエラーが発生した場合でも、書き込みエラーが発生した場合と同様に代替ブロックを利用し、Ｒｅａｄ  Ｄｉｓｔｕｒｂによるデータブロック内の復旧困難なデータ破壊を防止することができる。
【００３９】
なお、図３に「〜部」として示した各構成要素の一連の動作は互いに関連しており、これら一連の動作は、コンピュータに実施させるプログラムによる処理に置き換えることができる。各構成要素の動作をプログラムによる処理に置き換えることにより、「ＮＡＮＤ型フラッシュメモリアクセスプログラム」の実施形態として把握できる。また、「ＮＡＮＤ型フラッシュメモリアクセスプログラム」コンピュータ読み取り可能な記録媒体に記録させることで、プログラムを記録したコンピュータ読み取り可能な記録媒体の実施形態とすることができる。
【００４０】
以上の実施の形態では、Ｒｅａｄ不良発生ブロックのデータを代替ブロックに移し、Ｒｅａｄ不良発生ブロックを消去後代替ブロックとして再利用するＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。
【００４１】
以上の実施の形態では、代替ブロックをリスト管理するＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。
【００４２】
以上の実施の形態では、Ｒｅａｄ不良発生ブロックを代替ブロックとして再利用する場合は、代替ブロック管理リストの最後尾に接続するＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。
【００４３】
以上の実施の形態では、管理ブロックへＲｅａｄ不良発生ブロックを記憶しておい、Ｒｅａｄ不良発生ブロックの消去，代替ブロックとしての再利用をＣＰＵの空き時間を利用して行うＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。
【００４４】
以上の実施の形態では、管理ブロックへＲｅａｄ不良発生ブロックを記憶しておき、Ｒｅａｄ不良発生ブロックのデータ移動，消去，代替ブロックとしての再利用をＣＰＵの空き時間を利用して行うＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。ことを特徴とする。（
【００４５】
以上の実施の形態では、代替ブロック管理リストを管理ブロック領域に保持するＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。
【００４６】
以上の実施の形態では、代替ブロック管理リストを、不揮発ＲＡＭに保持するＮＡＮＤ型ＦｌａｓｓｈＲＯＭのブロック代替方式を説明した。
【図面の簡単な説明】
【００４７】
【図１】実施の形態１のＮＡＮＤ型フラッシュメモリアクセス装置１００の外観。
【図２】実施の形態１のＮＡＮＤ型フラッシュメモリアクセス装置１００ハードウェア資源。
【図３】実施の形態１のＮＡＮＤ型フラッシュメモリアクセス装置１００の構成。
【図４】実施の形態１の代替ブロック管理情報、論理・物理変換テーブル。
【図５】実施の形態１のＮＡＮＤ型フラッシュメモリアクセス装置１００の動作を示すフローチャート。
【図６】実施の形態１のテーブル更新の状態を示す図。
【図７】実施の形態１の代替ブロック管理情報のリストによる管理を示す図。
【図８】実施の形態１の代替ブロック管理情報のリストによる管理を示す別の図。
【図９】従来例を示す図。
【図１０】従来例を示す図。
【図１１】従来例を示す図。
【図１２】従来例を示す図。
【図１３】従来例を示す図。
【符号の説明】
【００４８】
１００  ＮＡＮＤ型フラッシュメモリアクセス装置、１０１  ＮＡＮＤ型ＦｌａｓｈＲＯＭ、１０００  リードエラー処理部、１００２  代替ブロック管理リスト、１０１０  Ｒｅａｄエラー復旧部、１０２０  代替ブロック管理情報、１０３０  不揮発ＲＡＭ、２０１  代替ブロック管理情報、２０２  論理・物理変換テーブル、３０１  Ｒｅａｄ処理部、３０２  Ｗｒｉｔｅ処理部、３０３  論理・物理変換部、３０４  代替ブロック管理部。
【図１】
2009301264.tif 000003
【図２】
2009301264.tif 000004
【図３】
2009301264.tif 000005
【図４】
2009301264.tif 000006
【図５】
2009301264.tif 000007
【図６】
2009301264.tif 000008
【図７】
2009301264.tif 000009
【図８】
2009301264.tif 000010
【図９】
2009301264.tif 000011
【図１０】
2009301264.tif 000012
【図１１】
2009301264.tif 000013
【図１２】
2009301264.tif 000014
【図１３】
2009301264.tif 000015