(57)【要約】【課題】メモリデバイスの不良ブロックをスペアブロックに置換するための情報に要するメモリサイズを縮小することが可能な記憶装置を提供する。【解決手段】記憶装置３０は、主記憶媒体としてのメモリデバイス３５と、制御回路３２と、ＲＡＭ３８と、を有し、メモリデバイス３５は複数のデータブロックで形成され、このデータブロックの一部に欠陥ブロックを含み、制御回路３２は、ＲＡＭ３８内に記憶された置換情報を用いて、メモリデバイス３５の欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、置換情報はＮ個（Ｎ＞＝２）のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するＭ個（Ｍ＜Ｎ）までの欠陥ブロックに正常ブロックが割り当てられている。【選択図】図７
2007334413.tif 000002
【特許請求の範囲】
【請求項１】
主記憶媒体としてのメモリデバイスと、
制御回路と、
ＲＡＭと、を有し、
上記メモリデバイスは複数のデータブロックで形成され、当該データブロックの一部に欠陥ブロックを含み、
上記制御回路は、上記ＲＡＭ内に記憶された置換情報を用いて、上記メモリデバイスの欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、
上記置換情報はＮ個（Ｎ＞＝２）のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するＭ個（Ｍ＜Ｎ）までの欠陥ブロックに正常ブロックが割り当てられている
記憶装置。
【請求項２】
上記メモリデバイスは不揮発性メモリを含み、
上記置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記ＲＡＭ内に読み出されて使用される
請求項１記載の記憶装置。
【請求項３】
上記ブロックグループ内にＭ個を越える欠陥ブロックが存在する場合、上記制御回路は第二の置換情報を用いて第一の置換情報を補完し、第一の置換情報で正常ブロックを割り当てられていない欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替える
請求項１記載の記憶装置。
【請求項４】
上記第二の置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記ＲＡＭ内に読み出されて使用される
請求項２記載の記憶装置。
【請求項５】
第一の置換情報が上記ＲＡＭ内に読み出され、アクセスの振り替えに情報が不足していれば、さらに第二の情報が上記ＲＡＭ内に読み出され、参照される
請求項４記載の記憶装置。
【請求項６】
同一のグループに属する各々のデータブロックは、メモリデバイス上の互いに近接しない物理領域に、分散配置されている
請求項１記載の記憶装置。
【請求項７】
同一のグループに属する各々のデータブロックは、物理アドレス上互いに近接していない
請求項１記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関するものであり、特にフラッシュメモリを含む記憶装置における欠陥ブロックの置換処理に関するものである。
【背景技術】
【０００２】
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
【０００３】
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やＭＮＯＳ構造等を用いたトランジスタ１つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、ＮＡＮＤ型フラッシュメモリが挙げられる。
【０００４】
図１は、ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
図１のＮＡＮＤ型フラッシュメモリは、ビット線ＢＬ１〜ＢＬｎに接続された複数のメモリユニット１−１〜１−ｎがアレイ状に（縦横）に配列されている。
たとえば、選択用トランジスタ２のゲートが選択ゲート線ＳＬ１に接続され、選択用トランジスタ３のゲートが選択ゲート線ＳＬ２に接続されている。また、各メモリセルＮ０〜Ｎ１５のゲートがワード線ＷＬ０〜ＷＬ１５に接続されている。
【０００５】
各メモリセルＮ０〜Ｎ１５は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線ＢＬ１〜ＢＬｎからのメモリユニット１（−１〜−ｎ）への電流貫通の有無を、センスアンプ等を含むアクセス回路４で検出してデータ判定を行う。
【０００６】
このようなＮＡＮＤ型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
【０００７】
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百μ秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数ミリ（ｍ）秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
【０００８】
すなわち、たとえば同一ワード線ＷＬ０に接続され、ページ単位を成すメモリセル群５を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック６を全て一括で消去することにより、プログラムの転送速度を向上させている。
【０００９】
具体的には、たとえば非特許文献１には１ＧｂのＮＡＮＤ型フラッシュメモリが掲載されており、ページサイズを２ｋバイト、消去ブロックサイズを１２８ｋＢとしている。すなわち、一つのメモリアレイ内で１２８ｋバイトのメモリセル群を並列消去し、そこにメモリセルを２ｋバイト毎に並列でプログラムしていくことによって、１０ＭＢ／ｓのプログラム転送速度を実現している。
【００１０】
ところで、通常のファイルストレージでは、最小の書き換え単位は５１２Ｂのセクタであり、この単位でランダムなアクセスがなされる。その場合、たとえば１つのページ領域の一部のみを書き換える要求が発生する。
【００１１】
しかし、上述のようなフラッシュメモリでそのようなアクセスを行うと、結局実消去ブロック領域全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。したがって、それらは消去済の予備ブロックにコピーされる。この際、更新後データも予備ブロックの側に書き込まれ、元ブロックは仮想アドレス管理に従って予備ブロックに置換される。
【００１２】
図２および図３は、そのような仮想アドレス管理に従ったデータ更新の一例を示す図である。図２はフラッシュメモリ２０の記憶領域を示し、図３はアドレステーブル２７を示している。
【００１３】
アドレステーブル２７は、論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ  ＝ＬＢＡ）をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス（Ｐｈｉｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ  ＝ＰＢＡ）を取得することができる。
【００１４】
たとえば、ホストまたはアプリケーションが“０ｘ５５”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“０ｘ６Ｂ”に変換され、フラッシュメモリ２０の消去ブロック２１にアクセスが実施される。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
【００１５】
１．予め予備の消去済みブロック２５を用意しておく。その物理アドレスは“０ｘＡＡ”とする。
２．論理ブロックアドレス“０ｘ５５”が指定され、対応する物理ブロックアドレス“０ｘ６Ｂ”が取得され、消去ブロック２１内のページ２２にアクセスがなされたとする。このとき、フラッシュメモリ２０の書き換え対象ブロック２１から、別途設けられたページバッファ２４を介して、予備ブロック２５にデータを順次コピーしていく。
３．更新対象となるページ２２のコピー時には、ページバッファ２４上で所望の箇所を更新してコピーを行い、コピー先ページ２６にそれが反映される。
４．有効なページデータのコピーが全て完了したら、アドレステーブル２７上で、ブロック２１と予備ブロック２５のアドレスを張り替える。
５．最後に元ブロック２１の消去を実施する。
【００１６】
このような手順によって、以降論理ブロックアドレス“０ｘ５５”に対しては、物理ブロックアドレス“０ｘＡＡ”に対応する消去ブロック、すなわち予備ブロック２５がアクセスされるようになり、全体との整合性が保たれる。
このような仮想アドレスは、ストレージが組み込まれたコンピュータシステムではホストＣＰＵ自体が管理する。あるいは専用の制御回路が設けられている場合も多く、特に外付けストレージでは、ストレージ内に制御回路とテーブル保存用のＲＡＭが内蔵されている。
【００１７】
また、近年フラッシュメモリはさらに多値化や微細化による大容量化が進んでおり、欠陥メモリセルへの対処が重要な課題となっている。
フラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、通常欠陥セルを含む消去ブロックは欠陥ブロックとしてブロック単位で使用を禁止する必要がある。また、製品出荷後、書き換えを繰り返すことで新たに発生する欠陥もある。これら初期欠陥および後発欠陥へのアクセスは、やはり上述の仮想アドレスを使用することで回避される。
【００１８】
すなわち、図３のアドレステーブル２７において、物理ブロックアドレス（ＰＢＡ）フィールドから欠陥ブロックの物理アドレスを削除し、替わりに予備ブロックの物理アドレスを充てておく。これによって、ユーザーがどの論理アドレスをアクセスしても、欠陥ブロックがアクセスされることは無い。
【００１９】
このように、消去ブロックの論理アドレスごとに物理アドレスをアサインし、欠陥ブロックを正常ブロックで置換する手法が、近年フラッシュメモリを用いたストレージにおける欠陥管理の主流となっている。
【非特許文献１】ＩＳＳＣＣ２００２予稿集のｐ１０６、セッション６．４
【発明の開示】
【発明が解決しようとする課題】
【００２０】
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
その場合、転送速度の向上と蓄積容量の増加が同時に要求されるが、前者は複数のフラッシュメモリデバイスを並列にアクセスすることで実現される。
【００２１】
たとえば、４個のフラッシュメモリデバイスを並列に同時動作させて、４ギガバイト（ＧＢｙｔｅ)のストレージを構成したとする。各消去ブロックの容量を１２８キロバイト（ｋＢｙｔｅ）とすると、各フラッシュメモリデバイスは８ｋ個のブロックを有し、４個のデバイスで合計４ＧＢｙｔｅの容量が実現される。
【００２２】
これを前述の手法に従って管理すれば、たとえば図４に示すようなアドレス変換テーブルを使用することになる。
すなわち、ここでは４個のフラッシュメモリデバイス各々に対してテーブルが用意され、８ｋ個の各ブロックについて論理ブロックアドレス（ＬＢＡ）と物理ブロックアドレス（ＰＢＡ）の対応が設定されている。これによって各々のフラッシュメモリデバイスが独立に欠陥ブロックを代替できる。
【００２３】
物理ブロックアドレスの範囲は”０ｘ００００”から”０ｘ１ＦＦＦ”である。このうち２５６ブロックが予備用や欠陥ブロックとして確保され、論理ブロックアドレスの範囲は”０ｘ００００”から”０ｘ１ＥＦＦ”までとなっている。
たとえば、図４中の論理ブロックアドレス”０ｘ００５５”に対応する各デバイス（Ｄｅｖｉｃｅ０〜３）の物理ブロックアドレスは、各々”０ｘ０６Ｆ０”，”０ｘ００７１”，”０ｘ００Ａ０”，”０９０４”である。
【００２４】
上記テーブルは各ＰＢＡフィールドに２バイトを要し、４個のデバイスが８ｋ個ずつのＰＢＡフィールドを持つ。したがって、テーブルの総容量は以下のように大きくなる。
［２バイトｘ８ｋブロックｘ４デバイス  ＝６４ｋバイト］
したがって、システムにはこのテーブルを保管するため、大容量のＲＡＭが必要である。
【００２５】
図５および図６は、これに対する対策の例を示す図である。
ここではアドレスを２段階で管理し、予備ブロックに関する変換は第一ステップで４デバイスを一括にして実施し、欠陥ブロックに関する変換は第二ステップで４デバイス独立に実施する。
【００２６】
入力された論理ブロックアドレス（ＬＢＡ）に対し、４デバイス共通の仮物理ブロックアドレス（ＰＢＡ＿）が第一ステップで図５のテーブルを用いて決定される。
さらに第二ステップでは、第一ステップの出力である仮物理ブロックアドレス（ＰＢＡ＿）に対し、欠陥のあるブロックのみが、図６のテーブルを用いてスペアブロックに置換される。
論理ブロックアドレスの領域”０ｘ００００”〜”０ｘ１ＥＦＦ”に対し、仮物理ブロックアドレスは１２８の予備ブロックを加え、”０ｘ００００”〜”０ｘ１Ｆ７Ｆ”の領域を持つ。さらに各フラッシュデバイスにおいては、ＰＢＡ”０ｘ１Ｆ８０”〜”０ｘ１ＦＦＦ”の１２８ブロックがスペア領域として確保されている。各ブロックのスペアフィールドには、置換先ブロックのポインタとして、上記領域の先頭からのオフセット値（０ｘ００〜０ｘ７Ｆ）が記載されている。０ｘＦＦ”はスペア範囲外の値であり、欠陥が無いことを示す。
たとえば、図中の論理ブロックアドレス”０ｘ００５５”に対応する各デバイスの共通物理ブロックアドレス（ＰＢＡ＿）は”０ｘ０６Ｆ０”であるが、デバイス１には欠陥が存在する。したがって、デバイス１のみはスペア領域のオフセット”０ｘ１０”に相当するブロック、すなわち”０ｘ１Ｆ８０”＋”０ｘ００１０”＝”０ｘ１Ｆ９０”にアクセス先が置換される。
【００２７】
このようなテーブルの容量はＦ４Ａが、
２バイトｘ８ｋ＝１６ｋバイト、
Ｆ４Ｂはフィールドあたり１バイトで良いので、
１バイトｘ８ｋブロックｘ４デバイス  ＝３２ｋバイト、
すなわち合計４８ｋバイトで良い。
以上、この例では欠陥ブロックの置換に関しては、スペア領域を予め規定して、そのテーブル容量を低減した。
【００２８】
しかしこのような工夫をしても、サイズ減少量は２５％である、劇的なＲＡＭ容量の削減はできない。
したがって、たとえばストレージの容量がさらに増大し、たとえば現在のＨＤＤ並の６４ＧＢになった場合、論理アドレスを上記８ｋブロックごとに区切ってテーブルを生成しても、テーブルには、
４８ｋＢｘ（６４ＧＢ／４ＧＢ）＝７６８ｋＢ、
の容量が必要になる。
したがって、テーブル格納用のＲＡＭが巨大化し、コストアップとなってしまう。
【００２９】
本発明の目的は、メモリデバイスの不良ブロックをスペアブロックに置換するための情報に要するメモリサイズを縮小することが可能な記憶装置を提供することにある。
【課題を解決するための手段】
【００３０】
本発明の記憶装置は、主記憶媒体としてのメモリデバイスと、制御回路と、ＲＡＭと、を有し、上記メモリデバイスは複数のデータブロックで形成され、当該データブロックの一部に欠陥ブロックを含み、上記制御回路は、上記ＲＡＭ内に記憶された置換情報を用いて、上記メモリデバイスの欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、上記置換情報はＮ個（Ｎ＞＝２）のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するＭ個（Ｍ＜Ｎ）までの欠陥ブロックに正常ブロックが割り当てられている。
【００３１】
好適には、上記メモリデバイスは不揮発性メモリを含み、上記置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記ＲＡＭ内に読み出されて使用される。
【００３２】
好適には、上記ブロックグループ内にＭ個を越える欠陥ブロックが存在する場合、上記制御回路は第二の置換情報を用いて第一の置換情報を補完し、第一の置換情報で正常ブロックを割り当てられていない欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替える。
【００３３】
好適には、上記第二の置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記ＲＡＭ内に読み出されて使用される。
【００３４】
好適には、第一の置換情報が上記ＲＡＭ内に読み出され、アクセスの振り替えに情報が不足していれば、さらに第二の情報が上記ＲＡＭ内に読み出され、参照される。
【００３５】
好適には、同一のグループに属する各々のデータブロックは、メモリデバイス上の互いに近接しない物理領域に、分散配置されている。
【００３６】
好適には、同一のグループに属する各々のデータブロックは、物理アドレス上互いに近接していない。
【００３７】
以上のように、本発明では個々のブロックごとに置換先ブロックの情報を割り当てるのではなく、複数のブロックをグループ化し、そのグループごとに、グループ内の総ブロック数より小さい限定数のスペア情報を設置する。この数を十分小さくすることで、スペアテーブルの総容量を劇的に低減することが可能になる。
なお、本発明においては、特定の欠陥発生の位置パターンに対しては、置換救済が出来ないことがある。即ち従来のようなブロック毎の置換情報の設置は、用意されたスペアブロック数が十分多ければ、欠陥の発生パターンに関わらずあらゆる不良ブロックを置換できた。
一方、本発明では、たとえば特定のブロックグループに欠陥ブロックが集中的に発生すれば、置換情報の不足から置換しきれない欠陥ブロックが生ずる可能性がある。逆に言えば、このような可能性を敢えて許容することによって、スペアテーブルを劇的に小型化するのが、本発明のポイントでもある。
この点については、置換不能の発生頻度が十分小さくなるように統計的な見積を行い、それに基づいて置換情報量を調整すれば良い。あるいは第二の置換情報を用意することでも解決が可能である。後者の場合、第二の置換情報が必要となる頻度が十分小さければ、第二の置換情報は第一の置換情報に対してアクセス速度、あるいは置換効率において劣ったものを使用しても構わない。
【発明の効果】
【００３８】
本発明によれば、フラッシュメモリの欠陥管理が小規模なＲＡＭ搭載で実現でき、大容量フラッシュストレージに低コストで高い信頼性を与えることが可能である。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施形態を図面に関連付けて説明する。
【００４０】
図７は、本発明の第１の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
【００４１】
本コンピュータシステムＣＯＭＳＹＳは、ファイル記憶装置３０、およびホストシステム（処理装置）４０を主構成要素として有している。
ファイル記憶装置３０は、インターフェース回路（Ｉ／Ｆ）３１、制御回路３２、内部バス３３、ページバッファ３４、ＮＡＮＤ型フラッシュメモリ３５（Ｍ０〜Ｍ３）、制御回路３６、およびメモリバス３７を有する。
制御回路３２は、ＲＡＭ３８が内蔵されている。
【００４２】
ファイル記憶装置３０の内部においては、３２ビットのメモリバス３７に、８ビットの入出力を持つ４チップの８ＧｂＮＡＮＤ型フラッシュメモリ３５（Ｍ０〜Ｍ３）が並列接続されている。４つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。
すなわちメモリバス３７は８ビットバスを４チャンネル備えた構成となっている。
各々のフラッシュメモリＭ０〜Ｍ３は書き込みや読み出しのアクセスをたとえば２ｋＢのページ単位で行う。
したがって実ページサイズとしては８ｋＢが一括アクセスされることになる。
ページバッファ３４はアクセスされたページ領域のデータを一時記憶するページバッファである。
フラッシュメモリ３５（Ｍ０〜Ｍ３）とページバッファ３４との間のデータの送受は、制御回路３６で制御されている。
さらに、転送制御回路３６は、必要に応じて転送データにＥＣＣ符号化によるエラー補正を施す。各フラッシュメモリＭ０〜Ｍ３はページバッファ３４を介して記憶装置３０の内部バス３３との間でデータを入出力する。
各フラッシュメモリＭ０〜Ｍ３は６４ページごとに消去ブロックを構成しており、各々８ｋブロックを有している。
したがって、その容量は、
２ｋＢｘ６４ｘ８ｋ  ＝１ＧＢｙｔｅ、
となっており、４個あわせて４ＧＢｙｔｅのストレージを構成している。
【００４３】
さらに内部バス３３にはインターフェース回路３１、および制御回路３２が接続されている。
インターフェース回路３１はＡＴＡやＰＣＩエクスプレス等の規格に従ってホストシステム４０との間で、データやコマンドの送受を行う。
制御回路３２は記憶装置３０の内部においてページバッファ３４とインターフェース回路３１の間のデータの送受を管理し、さらにフラッシュメモリＭ０〜Ｍ３の所望のブロック、および所望のページとページバッファ３４との間のデータの送受を転送制御回路３６に指示する。
ここに内蔵されたＲＡＭ３８には、プログラムを実行するためのコードエリアやワーキングエリア４１が設けられており、さらに予備ブロックを管理するアドレス変換テーブル４２、および欠陥ブロックを管理するスペアテーブル４３が構築されている。
これらのテーブルは、たとえばフラッシュメモリＭ０の特定箇所に保存されており、電源投入時にＲＡＭ３８内に読み出される。
【００４４】
本コンピュータシステムＣＯＭＳＹＳにおいては、ホストシステム４０は内蔵するＣＰＵによって制御され、アプリケーションやＯＳの要求に応じて、ファイル記憶装置３０を介して、フラッシュメモリデバイスにユーザーデータを保存する。
【００４５】
制御回路３２はその間のデータ授受に介在し、アドレス変換テーブル４２およびスペアテーブル４３を用いてアクセス管理を実施する。
【００４６】
本実施形態においては、ファイル記憶装置３０はハードディスクと同様に５１２Ｂｙｔｅのセクタをアクセス単位とする。簡単のため、アドレスはブロック、ページ、セクタの階層で、次のように割り振られるとする。
たとえばホストから入力された論理アドレスが”０ｘ００５５＿０２＿Ｃ”であった場合、上位の”０ｘ００５５”は論理ブロックアドレスであり、８ｋブロックが管理される。中位の”０ｘ０２”はブロック内のページアドレスで最大６４ページとなる。下位の”０ｘＣ”はページ領域内のセクタドレスであり、実質的なページサイズは２ｋｘ４チップ＝８ｋＢなので、１ページ中には１６のセクタが含まれる。
本記憶装置３０は、フラッシュメモリＭ０〜Ｍ３より、各々ページ単位で一斉にページバッファ３４にデータを読み出し、さらにページバッファ３４内のデータを選択することで、１セクタ単位のランダムアクセスが可能である。
【００４７】
以下このような記憶装置３０のテーブル構成および内部動作を、以下に説明する。
本実施形態では、ブロック単位の仮想アドレス管理が採用されている。
図８は、ＲＡＭ３８に構築されるアドレス変換テーブル４２の構成例を示し、図９は、ＲＡＭ３８に構築されるスペアテーブル４３の構成例を示す図である。図４の例と同様、ここでもアドレスを２段階で管理し、予備ブロックに関する変換は第一ステップで４デバイスを一括にして実施し、欠陥ブロックに関する変換は第二ステップで４デバイス独立に実施している。
【００４８】
入力された論理ブロックアドレス（ＬＢＡ）に対し、４デバイス共通の仮物理ブロックアドレス（ＰＢＡ＿）が第一ステップで図８のアドレス変換テーブル４２を用いて決定される。さらに第二ステップでは、欠陥のあるブロックのみが、図９のスペアテーブル４３を用いてスペアブロックに置換される。
【００４９】
なお、論理ブロックアドレスの領域”０ｘ００００”〜”０ｘ１ＥＦＦ”に対し、仮物理ブロックアドレスは１２８の予備ブロックを加え、”０ｘ００００”〜”０ｘ１Ｆ７Ｆ”の領域を持つ。
さらに各フラッシュデバイスにおいては、ＰＢＡ”０ｘ１Ｆ８０”〜”０ｘ１ＦＦＦ”の１２８ブロックがスペア領域として確保されている。
【００５０】
ここで、図９のスペアテーブルにおいては、通常のように各々のデバイスの各仮物理ブロックアドレス（ＰＢＡ＿）に対してスペア情報が記載されている訳では無い。
ここでは４デバイスにおける１６の仮物理ブロックアドレス（ＰＢＡ＿）領域ごとにグループが形成されており、各グループには使用されたスペアのカウンタ（Ｓｐａｒｅ  Ｃｏｕｎｔ）と、２ブロック分の置換情報が記載されているのみである。
【００５１】
各置換情報は、グループ先頭ＰＢＡ＿からの欠陥ブロックのオフセット位置（Ｂｌｏｃｋ  Ｏｆｆｓｅｔ）、欠陥ブロックの所属するデバイス情報(Ｄｅｖｉｃｅ)、および置換先スペアブロックのスペア先頭からのオフセット位置（Ｓｐａｒｅ  Ｏｆｆｓｅｔ）からなる。これらをセットとして一つの欠陥ブロックを置換でき、各ブロックグループごとに２セットの情報が用意されている。各情報セットのサイズは２バイトでよく、２セットで４バイトを使用する。さらに各グループごとに２ビットのカウンタが設置されている。
【００５２】
したがって、本スペアテーブルの合計サイズは、
（４＋２／８）Ｂｙｔｅ  ｘ  ８ｋ／１６＝２．１２５ｋＢｙｔｅ、
と、通常の例の４８ｋ〜６４ｋＢｙｔｅからは劇的に小型化している。
【００５３】
たとえば図中の論理ブロックアドレス”０ｘ００５５”に対応する各デバイスの共通物理ブロックアドレス（ＰＢＡ＿）は”０ｘ０６Ｆ０”であるが、これに対応するブロックグループ５０内の相対アドレス、すなわちブロックオフセット”０ｘ０”のデバイス”０ｘ１”（図７のＭ１に相当）に欠陥が存在し、それはＭ１におけるスペア領域の先頭から”０ｘ１０”の箇所にあるスペアブロックに置換されていることがわかる。
したがって、フラッシュメモリＭ１のみはスペア領域のオフセット”０ｘ１０”に相当するブロック、すなわち”０ｘ１Ｆ８０”＋”０ｘ００１０”＝”０ｘ１Ｆ９０”にアクセス先が置換され、残りのＭ０，Ｍ２，Ｍ３は”０ｘ０６Ｆ０”のブロックにアクセスされる。このようにして選択されたフラッシュメモリ上のアドレスイメージを図１０に示す。
【００５４】
図１１は、そのようなテーブルを使用したデータアクセスのフローを示す図である。
ファイル記憶装置３０の内部におけるフラッシュメモリＭ０〜Ｍ３への具体的アクセスは、図１１のフロー図に従って、以下のような手順で実行される。
【００５５】
ステップＳＴ１：
ホスト４０からユーザーデータのアクセスコマンドとともに”０ｘ００５５＿０２＿Ｃ”のセクタドレスが入力されると、制御回路３２は論理ブロックアドレス部（ＬＢＡ）”０ｘ００５５”をインデックスにアドレス変換テーブル４２（図８）を参照し、アクセス対象たるユーザーデータの仮物理ブロックアドレス（ＰＢＡ＿）”０ｘ０６Ｆ０”を取得する。
【００５６】
ステップＳＴ２：
さらに制御回路３２は、上記仮物理ブロックアドレスよりスペアテーブル４３（図９）を参照し、対応するブロックグループ５０のスペアデータをスキャンする。
スペアデータは先頭からスペアカウンタ数分のみチェックすれば良い。これにより、上述の如くＭ１上の欠陥の存在と置換先を認識する。これによって、フラッシュメモリＭ１のアクセス先物理ブロックアドレスは”０ｘ１Ｆ９０”に、残りのＭ０，Ｍ２，Ｍ３は”０ｘ０６Ｆ０”に設定される。
なお、ブロック内のアクセスページはいずれも”０ｘ０２”である。
【００５７】
ステップＳＴ３：
上記物理アドレスをもって、フラッシュメモリＭ０〜Ｍ３がアクセスされ、ページバッファ３４内にユーザーデータが格納されたページグループが読み出される。
【００５８】
ステップＳＴ４：
その後、セクタドレス”０ｘＣ”に相当する部分がページバッファ３４から選択的にホスト４０に出力され、読み出し動作が完了する。
さらに、データの更新は以下のように実施する。同じ”０ｘ００５５＿０２＿Ｃ”のセクタを更新するとする。このページには既にデータが書き込まれているので、この場合図２に前述したようなブロックごとのデータコピーが必要である。手順は以下のように行なう。
【００５９】
まず、コピー元となるブロックの、各フラッシュメモリ上でのアドレスを、読み出しの際と同様に上記ステップＳＴ１，ＳＴ２の手順で取得する。
【００６０】
ステップＳＴ５：
書き込み先の予備ブロックとして、アドレス変換テーブル４２（図８）のＰＢＡ＿フィールドに登録されていない、未使用の仮物理ブロックアドレス（ＰＢＡ＿）が検索される。
これらの予備ブロックの仮物理ブロックアドレスは、図に記載されていない予備ブロックのリストに登録されており、先入先出しで順次選択されていく。ここでは、たとえば”０ｘ１Ｆ７Ｅ”が選択されたとする。
【００６１】
ステップＳＴ６：
さらに制御回路３２は、上記仮物理ブロックアドレスよりスペアテーブル４３（図９）を参照し、対応するブロックグループ５１のスペアデータをスキャンする。この例では仮物理ブロックアドレス（ＰＢＡ＿）”０ｘ１Ｆ７Ｅ”の場所には欠陥ブロックは存在しない。したがって、書き込み先はフラッシュメモリ（Ｍ０）〜（Ｍ３）の”０ｘ１Ｆ７Ｅ”のブロックに設定される。
【００６２】
ステップＳＴ７：
上記コピー元／コピー先・物理ブロックアドレスをもって、フラッシュメモリＭ０〜Ｍ３がアクセスされ、ページバッファ３４を介してブロック内の各ページデータが先頭からコピーされる。
この過程で”０ｘ０２”のページがページバッファ３４に読み込まれた際、そのセクタドレス”０ｘＣ”に相当する部分が所望のデータに書き換えられ、しかる後にフラッシュメモリ上に書き込まれる。
【００６３】
ステップＳＴ８：
コピーが完了すると、アドレス変換テーブル（図８）が更新され、論理ブロックアドレス（ＬＢＡ）”０ｘ００５５”に対応する仮物理ブロックアドレス（ＰＢＡ＿）は”０ｘ１Ｆ７Ｅ”に更新される。
これに伴って、元の仮物理ブロックアドレス”０ｘ０６０Ｆ０”に相当するブロックは無効となり、消去されて予備ブロックのリストに登録される。
【００６４】
ところで、図９において、たとえば０ｘ０６Ｆ０〜０ｘ０６ＦＦのグループ５０に属する６４ブロック中、２ブロックを越えて発生する欠陥ブロックには置換情報を設定できない。
このような救済失敗欠陥の発生率は、ブロックグループに設置されるスペア情報のセット数が少ないほど増加し、多いほど減少する。
【００６５】
今までの手法では、このような救済失敗欠陥の存在は一切許容しなかった。
これに対して、本実施形態ではこれを許容することで、スペアテーブルのサイズを大幅に圧縮する。そしてこれらの救済失敗欠陥は、適切に管理すれば、実使用上全く問題無いレベルに抑えることが可能である。
【００６６】
たとえば、市販のＮＡＮＤ型フラッシュメモリにおいて各ブロックが欠陥となる確率は、０．８％程度である。
スペア情報のセットの構成と、本例のストレージ（総ブロック数＝８ｋｘ４＝３２ｋ）における救済失敗欠陥数（平均値）の関係は、二項分布を仮定して図１２のように見積ることができる。
また乱数実験を行えば、ストレージごとのばらつきも見積もることができる。
【００６７】
図１２に明らかなように、グループ内のスペア数とブロック数の比が同じであればテーブルサイズもほぼ同等となるが、グループを巨大化した方が救済効率は向上する。
ただし、スキャンするスペア数が増え、スペア情報に要するビット数も僅かずつ増加するので、ストレージ容量やフラッシュメモリの構成、欠陥確率等も考慮して、最適なものを選択すればよい。
【００６８】
上述のように、欠陥の発生パターンがランダムであれば、本手法を用いた際の救済失敗欠陥数は統計的に予測でき、様々な対策をもってこれを管理し、製品の信頼性を保証することが可能である。
【００６９】
対策例のひとつは、救済失敗の発生頻度を市場不良が許される範囲まで十分小さく抑えるスペア構成を採用することである。
あるいは一定レベル以下に抑えた上で、出荷段階で欠陥検査を行なってスクリーニングしても良い。
たとえば、３２個の仮物理ブロックアドレス(ＰＢＡ＿)、すなわち１２８ブロックに対して８ブロック分のスペア情報を設ければ、９９．９％の製品はカバーできる。スペアテーブルのサイズは４ｋＢ程度で良い。
【００７０】
あるいは、より適切な対策は、救済失敗欠陥を救済するための第二の置換手段を用意することである。救済失敗欠陥の発生頻度は非常に小さくできるので、第二の置換手段は効率や速度において劣るものであっても構わない。
【００７１】
たとえば、図８および図９のように、中間に仮物理ブロックアドレス（ＰＢＡ＿）を設定している場合には、救済失敗したブロックを含むＰＢＡ＿は使用禁止にする。
すなわち、図８のアドレス変換テーブルにおいて、そのようなＰＢＡ＿は論理ブロックアドレス（ＬＢＡ）に対応させず、書き込み先としてテーブルに加えない。
【００７２】
このようなケースでは、図８の変換テーブルが欠陥の置換情報としても機能して、図９のスペアテーブル４３を補完することになる。このとき１ブロックの救済失敗が発生すると、４ブロックで構成されるＰＢＡ＿が丸ごと使用禁止となる。すなわち救済効率は悪化するが、救済失敗の発生頻度が十分低ければ問題にならない。
【００７３】
あるいは予備のスペアテーブルをもう１セット用意して、フラッシュメモリの特定箇所に保存しておく。最初のスペアテーブルでは記載しきれなくなった（すなわち救済に失敗した）欠陥ブロックの置換情報は、予備のスペアテーブルに記載する。両者は必要に応じてＲＡＭ３８内に読み出され、使用される。
【００７４】
図１３および図１４はテーブル構成の第２例を示す図である。図１３はアドレス変換テーブルの構成例を示し、図１４はスペアテーブルの構成例を示す図である。図１３のアドレス変換テーブルは図８のアドレス変換テーブルと同様である。
これに対して、図１４のスペアテーブル４３Ａについては、メインのスペアテーブル４３とサブのスペアテーブル４４の２セットが用意されている。
【００７５】
たとえば、図中の論理ブロックアドレス”０ｘ００５５”に対応する各デバイスの共通物理ブロックアドレス（ＰＢＡ＿）は”０ｘ０６ＦＡ”だが、対応するブロックグループ５２のメインスペアテーブル４３を見ると、スペアカウンタは”０１１Ｂ”（”３”）である。
すなわち、救済失敗が発生し、予備のスペアテーブルが使用されていることがわかる。したがって、まずメインのスペアテーブル４３のスペア情報をスキャンし、引き続き予備のスペアテーブル４４のスペア情報をスキャンする。
ここでは後者の情報から、ブロックオフセット”０ｘＡ”のデバイス”０ｘ０”（図７のＭ０に相当）に欠陥が存在し、それはＭ０におけるスペア領域の先頭から”０ｘ３５”の箇所にあるスペアブロックに置換されていることがわかる。
【００７６】
したがって、フラッシュメモリＭ０のみはスペア領域のオフセット”０ｘ３５”に相当するブロック、すなわち”０ｘ１Ｆ８０”＋”０ｘ００３５”＝”０ｘ１ＦＢ５”にアクセス先が置換され、残りのＭ０，Ｍ２，Ｍ３は”０ｘ０６ＦＡ”のブロックにアクセスされる。
【００７７】
ストレージの電源投入時にはメインのスペアテーブル４３がフラッシュメモリ３５から読み出され、ＲＡＭ３８内に保存される。
しかしそれで救済失敗が発生し、予備のスペアテーブルをチェックする必要が生じたら、メインのスペアテーブル４３を一旦ＲＡＭ３８から開放し、替わりに予備のスペアテーブル４４をＲＡＭ３８に呼び出して、そこから置換情報を取得する。
次に、別の箇所がアクセスされれば、再びメインのスペアテーブル４３をＲＡＭ３８内に読み戻し、そこから置換情報の検索を開始する。
この場合、メインのスペアテーブル４３で救済失敗が発生すると、そのブロックグループにおける欠陥チェック作業はテーブル入れ替えを必要とし、アクセス時間が遅くなる。しかしその発生頻度は非常に低いので、トータルで見れば速度性能は殆ど変わらない。
【００７８】
このような予備テーブルは二重あるいは三重に設けることも可能である。また、ＲＡＭ３８に複数エントリを持つキャッシュメモリを構築し、スペアテーブルを複数に分割して、適時必要なスペアテーブルの必要な箇所を読み込んでも良い。
たとえば、ＲＡＭ３８に２エントリがあれば、一つのエントリにはメインのスペアテーブルの半分が、一つのエントリには予備のスペアテーブルの半分が登録される等の形態を持たせることも可能である。
あるいは予備テーブルでも救済しきれない場合にはＰＢＡ＿を使用禁止にする等、前述の手法と組み合わせても良い。
【００７９】
また、図８、図９や図１３、図１４のテーブルセットに加え、必要に応じて図１５のような欠陥テーブルを用意しても良い。
これは各仮想物理アドレスＰＢＡ＿ごとに欠陥の有無を記載したものである。たとえば図１３におけるアドレス変換テーブルでアクセスすべき各仮想物理アドレスＰＢＡ＿が確定した後、まず図１５の欠陥テーブルをチェックする。
ここに欠陥フラグ（Ｄｅｆｅｃｔ  Ｆｌａｇ）が立っていなければ、スペアは使用されていないことを示しており、それ以降スペアテーブルをスキャンする必要は無い。前述の例では欠陥を含まない各仮想物理アドレスＰＢＡ＿についても、それが属するブロックグループ内に欠陥があれば、スペア情報をスキャンする必要があった。このような欠陥テーブルは各仮想物理アドレスＰＢＡ＿ごとに１ビットを使用するだけなので、８ｋアドレスでも１ｋＢｙｔｅのＲＡＭ領域しか使用しない。
【００８０】
以上、現在最も一般的なブロック単位でのアドレス変換を例に、欠陥ブロックの置換手法を説明してきた。
この場合、アドレス変換は全てブロック単位でなされ、ブロック内のページの相対位置については、ホストから入力された論理アドレスからフラッシュメモリへアクセスされる物理アドレスまで、常に同一に保たれる。書き換えの際のアドレス入れ替え動作は図２に前述した。
【００８１】
一方、特開平８−３２８７６２号公報には、フラッシュメモリの一括書き込み単位であるページごとのアドレス変換を用いた、追記型記憶システムにおける管理方法の詳細が記載されている。図１６および図１７は、そのようなアドレス変換の概念を説明するための図である。なお、理解を容易にするために図２と同等の構成要素については同一の符号を付している。
【００８２】
アドレステーブル２８からは、論理ページアドレス（Ｌｏｇｉｃａｌ  Ｐａｇｅ  Ａｄｄｒｅｓｓ  ＝ＬＰＡ）をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス（Ｐｈｉｓｉｃａｌ  Ｐａｇｅ  Ａｄｄｒｅｓｓ  ＝ＰＰＡ）を取得することができる。
【００８３】
たとえば、ホストから指定された論理ページアドレス”０ｘ５５＿０２”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス”０ｘ６Ｂ＿０５”を取得する。これによりブロック２１内の対応するページ領域２２へアクセスが実施される。
【００８４】
一方、同ページに更新を行う際には、フラッシュメモリ内で直接書き込める適当な空きページ領域が検索される。
たとえば物理ブロックアドレス”０ｘＡＡ”に相当する消去済み空きブロック２５の先頭ページ領域２９が適切な書き込み先として選択された場合、ページ領域２２のデータのみがページバッファ２４を介して更新され、ページ領域２９に書き込まれる。
この際、論理ページアドレス”０ｘ５５＿０２”はページ領域２９の物理アドレス”０ｘＡＡ＿００”にリマッピングされる。ページ領域２２上の旧データは、当面そのまま残して無効扱いとしておく。
【００８５】
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して１ページ分のデータ書き込みで良い。
したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
【００８６】
本実施形態はこのようなアドレス変換を使用する場合にも、適用が可能である。すなわち、書き換えに伴うアドレス変換はページ単位で実施するが、欠陥ブロックに対するスペアとの置き換えは、ブロック単位で本発明のアルゴリズムを使用して実施する。この際のアクセスは、まずページ単位のアドレス変換結果である仮物理ページアドレスを取得し、さらにそのブロック部に相当するビットに対してスペアとの置換を施す。
装置構成はこれまでの実施形態に用いた図７と同様だが、アドレス変換テーブル４２の構成がブロック単位ではなく、ページ単位でのアドレス変換となる。
【００８７】
図１８および図１９は、アドレス変換テーブルとスペアテーブルの他の構成例を示す図である。
図１８のアドレス変換テーブルにはページ単位でのアドレス変換が記載されている。たとえばホストが入力したセクタドレスに対応する論理ページアドレス（Ｌｏｇｉｃａｌ  Ｐａｇｅ  Ａｄｄｒｅｓｓ：ＬＰＡ）が”０ｘ００５５＿０２”であった場合、上記変換テーブルから得られる仮物理ページアドレス（Ｐｈｙｓｉｃａｌ  Ｐａｇｅ  Ａｄｄｒｅｓｓ：ＰＰＡ＿）は”０ｘ０６Ｆ０＿１Ａ”である。このうち”０ｘ０６Ｆ０”はブロックアドレスを示し、”１Ａ”はブロック内でのページのオフセット位置をアドレスとして示している。
【００８８】
ここで上記ブロックアドレス”０ｘ０６Ｆ０”に対応するブロックグループ５３内の相対アドレス、すなわちブロックオフセット”０ｘ０”のデバイス”０ｘ１”（図７のＭ１に相当）に欠陥が存在し、それはフラッシュメモリＭ１におけるスペア領域の先頭から”０ｘ１０”の箇所にあるスペアブロックに置換されていることがわかる。
したがって、フラッシュメモリＭ１のみはスペア領域のオフセット”０ｘ１０”に相当するブロック、すなわち”０ｘ１Ｆ８０”＋”０ｘ００１０”＝”０ｘ１Ｆ９０”にアクセス先が置換され、残りのＭ０，Ｍ２，Ｍ３は”０ｘ０６Ｆ０”のブロックにアクセスされる。上記ブロックアドレスにページオフセット値”１Ａ”を加えたページアドレスが、各フラッシュメモリに実際にアクセスされる物理ページアドレスとなる。
【００８９】
このように、図１８のアドレス変換テーブル４２Ｂにおいてページ単位のアドレス変換が実施された場合でも、フラッシュメモリ３５へアクセスする際のページオフセット値が変換後のオフセット値に変わるだけであり、ブロックアドレス部分は第一の実施例と全く同様の手順で処理できる。
【００９０】
ところで、ここまでは、独立した記憶装置の内部に欠陥管理機構を設ける場合について説明してきた。しかしこのようなアドレス変換テーブルやスペアテーブルの管理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムの例を図２０に示す。
【００９１】
図２０のコンピュータシステム７０は、ページバッファ３４ｂ、制御回路３６ｂ、フラッシュメモリ３５ｂ（Ｍ０〜Ｍ３）、データバス３７ｂ、処理装置としてのＣＰＵ７１ｂ、システムメモリ（ＲＡＭ）７２ｂ、システムバス７３ｂ、およびブリッジ回路７４ｂを有している。
【００９２】
ＣＰＵ７１ｂは３２ビットのシステムバス７３ｂを介してシステムメモリであるＲＡＭ７２ｂと接続されている。さらに、システムバス７３ｂにはブリッジ回路７４ｂが接続されており、ブリッジ回路７４ｂに繋がる３２ビットのデータバス３７ｂには、１６ビットの入出力を持つ４チップのＮＡＮＤ型フラッシュメモリ３５ｂ（Ｍ０〜Ｍ３）が並列接続されている。４つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ３４ｂはアクセスされたページ領域を一時記憶するバッファであり、ブリッジ回路７４ｂに内蔵されている。
【００９３】
ブリッジ回路７４ｂはＣＰＵ７１ｂから各種コマンドを受け取り、フラッシュメモリ３５ｂとＣＰＵ７１ｂまたはシステムメモリ７２ｂとの間のデータのやり取りを、ページバッファ３４ｂを用いて媒介する。また、ブリッジ回路７４ｂは必要に応じて転送データにＥＣＣ符号化によるエラー補正を施す。
ブリッジ回路７４ｂが受け取るコマンドは、たとえばフラッシュメモリ３５ｂの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
【００９４】
一方、システムメモリ７２ｂ内には上記フラッシュ記憶システムを制御するためのドライバ７５ｂが常駐している。このドライバは、ＯＳやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル４２ｂを参照してアクセス時のブロックアドレス或いはページアドレスを変換する。さらにスペアテーブル４３ｂを参照して欠陥ブロックや置換先ブロックを判定し、実際のフラッシュメモリにアクセスする物理ブロックアドレスを決定する。それをもってフラッシュメモリへのアクセス命令をブリッジ回路７４ｂに送信する。
【００９５】
このようなケースではＣＰＵ７１ｂとシステムメモリ７２ｂよりなるホストシステム７６ｂ自体が図７における制御回路３２の役割を代替し、アドレス変換テーブルやスペアテーブルの管理を実施する。
すなわちドライバ７５ｂはアドレス変換テーブル４２ｂやスペアテーブル４３ｂに、たとえば図８および図９に示したテーブル、と同じものを使用し、ＯＳやアプリケーションから論理アドレスを受け、物理ブロックアドレス（ＰＢＡ）あるいは物理ページアドレスを生成してブリッジ回路７４ｂにコマンドを送信する。これによってフラッシュメモリ３５ｂの各種アクセスが実施される。この際のスペアテーブルの取り扱い手順は、第１の実施形態に記載されたものと全く同様である。
【００９６】
すなわち本発明は独立した記憶装置のみならず、ホストに記憶装置が組み込まれた制御システムにおいても同様に適用できる。
【００９７】
ところで本発明は、欠陥がランダムに発生する場合には、容易に救済失敗の発生度合いを予測できる。したがって、それに応じてスペア構成やスペア手順を設定でき、信頼性を確保することが可能である。
【００９８】
しかし、半導体の欠陥にはしばしば物理レイアウト上の局所性が存在することがある。たとえばダストが複数の隣接ブロックにまたがれば、それらは同時に欠陥となりやすい。このように物理レイアウト上、互いに隣接したブロック間においては、双方にまたがった欠陥が発生しやすく、それらを同一のブロックグループとして置換情報を設定すると、局所性による予想外に大きな救済失敗が生じることとなる。
【００９９】
このような問題に対しては、物理レイアウト上、互いに隣接していないブロック群によってブロックグループを構成するのが効果的である。これは具体的にはグループの構成を決定するアドレスビットの選定を適切に行なうことで実施できる。
たとえば図９のスペアテーブル４３では仮物理ブロックアドレス（ＰＢＡ＿）の下位ビットをもってブロックグループを構成しているが、通常の半導体デバイスにおいて物理アドレスが隣接しているブロック同士は物理的なレイアウトにおいても互いが隣接している場合が多い。
【０１００】
このようなケースでは、より上位のビットを用いてブロックグループを構成する。スペアテーブルの例を図２１に示す。
ここでは図９のスペアテーブル４３では下位４ビット（下位から第１〜第４のビット）を持って１６個のＰＢＡ＿に相当するブロックグループを構成したが、図２１では下位から第９〜第１２のビットを持って１６個のＰＢＡ＿に相当するブロックグループを構成している。これによって物理アドレス上、互いに隣接しない飛び飛びのブロックの集合によってブロックグループが構成される。
【０１０１】
図２２は物理アドレス上のブロックグループの構成イメージを示す図である。
たとえば図２１におけるブロックグループ５４の物理アドレス上の配置は、図２２における黒塗りブロックの集合体５７で示される。各構成ブロックは物理アドレス上互いに離れた位置にあり、したがって物理レイアウト上でも通常離れている。これによってチップ上に局在した欠陥が生じても、それらは複数のブロックグループに分散され、同じブロックグループに集中することが無い。
【０１０２】
なお、このようなケースでは、スペアブロックも同様に分散させた方が、アドレス上の整合を取りやすい。
すなわち、図２１のスペアテーブルにおける最後尾のブロックグループ５５の先に、ブロックグループ５６のように同様のグループを形成して行けば、物理アドレスが全て網羅されるが、このブロックグループ５６の部分をスペアブロックに割り当てる。すなわち図２２の物理アドレスイメージでは斜線にハッチングされたブロックの集合体５８がスペアブロックとして割り当てられる。これは下位４ビット中”０ｘ８〜０ｘＦ”の連続領域よりなる８ブロックの塊が総計１６個あり、合計１２８個のスペアブロックに相当する。
【０１０３】
またこのとき、使用すべきスペアブロックを選択するスペアオフセット（Ｓｐａｒｅ  Ｏｆｆｅｓｔ）の情報は、スペアブロック群の先頭”０ｘ１０Ｆ８”に対して、下位から第９〜第１２のビットに対するオフセット値と、下位から第１〜第４のビットに対するオフセット値の組み合わせで与えられる。
たとえば図２１の最後尾グループ５５におけるスペア情報のスペアオフセットは”０ｘＡ＿６”と記載されているが、スペアブロック群の先頭”０ｘ１０Ｆ８”の下位から第９〜第１２のビット”０ｘ０”には”０ｘＡ”を加え、下位から第１〜第４のビット”０ｘ８”には”０ｘ６”を加える。したがって、選択すべきスペアブロックの物理アドレスは”０ｘ１ＡＦＥ”となる。
【０１０４】
なお、本発明の最適な実施形態として記憶メディアがフラッシュメモリの場合について述べたが、欠陥を含む記憶メディア一般に対しても、領域を複数のデータブロックに区分けし、そのブロック単位で欠陥の置き換えを実施するのであれば、同様の置換手順を適用することが可能である。
【図面の簡単な説明】
【０１０５】
【図１】ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
【図２】仮想アドレス管理に従ったデータ更新の一例を示す図であって、フラッシュメモリの記憶領域を示す図である。
【図３】仮想アドレス管理に従ったデータ更新の一例を示す図であって、アドレステーブルを示す図である。
【図４】通常のアドレス変換テーブルの例を示す図である。
【図５】アドレスを２段階で管理する場合のアドレス変換テーブルの例を示す図である。
【図６】アドレスを２段階で管理する場合のスペアテーブルの例を示す図である。
【図７】本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
【図８】実施形態に係るアドレス変換テーブルの第１例を示す図である。
【図９】実施形態に係るスペアテーブルの第１例を示す図である。
【図１０】フラッシュメモリ上のブロックアドレス選択のイメージを示す図である。
【図１１】図８および図９のテーブルを使用したデータアクセスのフローを示す図である。
【図１２】スペア構成と平均的な救済失敗欠陥数の見積例を示す図である。
【図１３】実施形態に係るアドレス変換テーブルの第２例を示す図である。
【図１４】実施形態に係るスペアテーブルの第２例を示す図である。
【図１５】実施形態に係る欠陥テーブルの例を示す図である。
【図１６】ページ単位の仮想アドレス管理を説明するための図であって、フラッシュメモリの記憶領域を示す図である。
【図１７】ページ単位の仮想アドレス管理を説明するための図であって、アドレステーブルを示す図である。
【図１８】実施形態に係るアドレス変換テーブルの第３例を示す図である。
【図１９】実施形態に係るスペアテーブルの第２例を示す図である。
【図２０】アドレス変換テーブルやスペアテーブルの管理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムの例を示す図である。
【図２１】スペアテーブルのさらに他の例を示す図である。
【図２２】物理アドレス上のブロックグループの構成イメージを示す図である。
【符号の説明】
【０１０６】
ＣＯＭＳＹＳ・・・コンピュータシステム、３０・・・ファイル記憶装置、３１・・・インターフェース回路（Ｉ／Ｆ）、３２・・・制御回路、３３・・・内部バス、３４・・・ページバッファ、３５（Ｍ０〜Ｍ３）・・・ＮＡＮＤ型フラッシュメモリ、３６・・・制御回路、３７・・・メモリバス、３８・・・ＲＡＭ、４０・・・ホストシステム、４２，４２Ａ，４２Ｂ・・・アドレス変換テーブル、４３，４３Ａ，４３Ｂ・・・スペアテーブル、７０・・・コンピュータシステム、３４ｂ・・・ページバッファ、３５ｂ（Ｍ０〜Ｍ３）・・・フラッシュメモリ、３６ｂ・・・制御回路、３７ｂ・・・データバス、７１ｂ・・・ＣＰＵ、７２ｂ・・・システムメモリ（ＲＡＭ）、７３ｂ・・・システムバス、７４ｂ・・・ブリッジ回路。
【図１】
2007334413.tif 000003
【図２】
2007334413.tif 000004
【図３】
2007334413.tif 000005
【図４】
2007334413.tif 000006
【図５】
2007334413.tif 000007
【図６】
2007334413.tif 000008
【図７】
2007334413.tif 000009
【図８】
2007334413.tif 000010
【図９】
2007334413.tif 000011
【図１０】
2007334413.tif 000012
【図１１】
2007334413.tif 000013
【図１２】
2007334413.tif 000014
【図１３】
2007334413.tif 000015
【図１４】
2007334413.tif 000016
【図１５】
2007334413.tif 000017
【図１６】
2007334413.tif 000018
【図１７】
2007334413.tif 000019
【図１８】
2007334413.tif 000020
【図１９】
2007334413.tif 000021
【図２０】
2007334413.tif 000022
【図２１】
2007334413.tif 000023
【図２２】
2007334413.tif 000024