(57)【要約】【課題】並列度が確保された論理ブロックをより多く確保することが可能で、少ない管理情報で論理ブロックを管理可能とすること。【解決手段】データ消去の単位である物理ブロックを複数個有し、並列動作可能な物理ブロックの集合単位である並列動作要素を複数個有する不揮発性半導体メモリを備える半導体記憶装置の論理ブロック構築方法において、所定数までの物理ブロックの不足を許容して論理ブロックの構築を行う。【選択図】図１
2013200722.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位である物理ブロックを複数個有し、並列動作可能な物理ブロックの集合単位である並列動作要素を複数個有する不揮発性半導体メモリを備える半導体記憶装置の論理ブロック構築方法において、
使用不可である物理ブロックを示す使用不可ブロック情報に基づいて、最大の並列度に対応する第１の物理ブロック数分の物理ブロックからなる、使用可能な第１の論理ブロックを構築する第１ステップと、
前記使用不可ブロック情報に基づいて、第１の物理ブロック数から１以上の所定数を減じた第２の物理ブロック数分の物理ブロックから構成され、第１の論理ブロックに対して不足分の物理ブロックが欠損物理ブロックとして管理される、使用可能な第２の論理ブロックを、第１の論理ブロックに含まれる物理ブロック以外から構築する第２ステップと、
を実行し、
前記所定数までの物理ブロックの不足を許容して論理ブロックの構築を行うことを特徴とする半導体記憶装置の論理ブロック構築方法。
【請求項２】
前記使用不可ブロック情報に基づいて、第２の物理ブロック数から１以上の所定数を減算した第３の物理ブロック数分の物理ブロックから構成され、第１の論理ブロックに対して不足分の物理ブロックが欠損物理ブロックとして管理される、使用不可の第３の論理ブロックを、第１及び第２の論理ブロックに含まれる物理ブロック以外から構築する第３ステップ
をさらに実行し、
第３の論理ブロックに含まれる物理ブロックと、第１の論理ブロックに含まれる物理ブロックとを使用して、複数の第２の論理ブロックを構築する
ことを特徴とする請求項１に記載の半導体記憶装置の論理ブロック構築方法。
【請求項３】
前記第１、第２および第３のステップを前記半導体記憶装置の初回起動時に実行することを特徴とする請求項２に記載の半導体記憶装置の論理ブロック構築方法。
【請求項４】
前記半導体記憶装置の使用時、
複数の第３の論理ブロックに含まれる物理ブロックを組み合わせて第１の論理ブロックまたは第２の論理ブロックを構築する
ことを特徴とする請求項２に記載の半導体記憶装置の論理ブロック構築方法。
【請求項５】
前記半導体記憶装置の使用時、
第３の論理ブロックに含まれる物理ブロックと、第１、第２、及び第３の論理ブロックの何れにも属さない物理ブロックを組み合わせて第１の論理ブロックまたは第２の論理ブロックを構築する
ことを特徴とする請求項２に記載の半導体記憶装置の論理ブロック構築方法。
【請求項６】
前記半導体記憶装置の使用時、
第１、第２、及び第３の論理ブロックの何れにも属さない複数の物理ブロックを組み合わせて第１の論理ブロックまたは第２の論理ブロックを構築する
ことを特徴とする請求項２に記載の半導体記憶装置の論理ブロック構築方法。
【請求項７】
前記並列動作要素は、チャネルを含み、
前記第１ステップでは、複数のチャネルから物理ブロックを１つずつ選択し、選択した複数の物理ブロックを第１の論理ブロックに対応付ける
ことを特徴とする請求項１乃至６の何れか一つに記載の半導体記憶装置の論理ブロック構築方法。
【請求項８】
前記並列動作要素は、チャネル、バンクを含み、
前記第１ステップでは、複数のチャネル、複数のバンクから物理ブロックを１つずつ選択し、選択した複数の物理ブロックを第１の論理ブロックに対応付ける
ことを特徴とする請求項１乃至６の何れか一つに記載の半導体記憶装置の論理ブロック構築方法。
【請求項９】
前記並列動作要素は、チャネル、プレーンを含み、
前記第１ステップでは、複数のチャネル、複数のプレーンから物理ブロックを１つずつ選択し、選択した複数の物理ブロックを第１の論理ブロックに対応付ける
ことを特徴とする請求項１乃至６の何れか一つに記載の半導体記憶装置の論理ブロック構築方法。
【請求項１０】
前記並列動作要素は、チャネル、バンク、プレーンを含み、
前記第１ステップでは、複数のチャネル、複数のバンク、複数のプレーンから物理ブロックを１つずつ選択し、選択した複数の物理ブロックを第１の論理ブロックに対応付ける
ことを特徴とする請求項１乃至６の何れか一つに記載の半導体記憶装置の論理ブロック構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備える半導体記憶装置の論理ブロック構築方法に関する。
【背景技術】
【０００２】
ＳＳＤ（solid state drive）においては、フラッシュメモリの消去単位である物理ブロックを複数個組み合わせた仮想ブロックとしての論理ブロックという概念を導入し、この論理ブロック単位に並列に消去、書き込み、読み出しを行うことで、書き込み効率の向上と並列処理による高速化を図る場合がある。
【０００３】
フラッシュメモリ中の複数の物理ブロックの中には、記憶領域として使用できないバッドブロックが製造段階から含まれている場合がある。また、ＳＳＤの使用時に、バッドブロックが発生する場合もある。前者を先天性バッドブロックといい、後者を後天性バッドブロックという。論理ブロックは、このようなバッドバッドを除いた物理ブロックによって構築する必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１８０８３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、並列度が確保された論理ブロックをより多く確保することが可能で、少ない管理情報で論理ブロックを管理可能な半導体記憶装置の論理ブロック構築方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、半導体記憶装置は、データ消去の単位である物理ブロックを複数個有し、並列動作可能な物理ブロックの集合単位である並列動作要素を複数個有する不揮発性半導体メモリを備える。使用不可である物理ブロックを示す使用不可ブロック情報に基づいて、最大の並列度に対応する第１の物理ブロック数分の物理ブロックからなる、使用可能な第１の論理ブロックを構築する第１ステップと、前記使用不可ブロック情報に基づいて、第１の物理ブロック数から１以上の所定数を減じた第２の物理ブロック数分の物理ブロックから構成され、第１の論理ブロックに対して不足分の物理ブロックが欠損物理ブロックとして管理される、使用可能な第２の論理ブロックを、第１の論理ブロックに含まれる物理ブロック以外から構築する第２ステップとが実行され、前記所定数までの物理ブロックの不足を許容して論理ブロックの構築が行われる。
【図面の簡単な説明】
【０００７】
【図１】図１は、ＳＳＤの内部構成例を示すブロック図である。
【図２】図２は、ＮＡＮＤの内部構成例を示す図である。
【図３】図３は、論理ブロックの種類を示す図である。
【図４】図４は、アドレス変換テーブルを示す図である。
【図５】図５は、論理ブロック管理テーブルを示す図である。
【図６】図６は、バッドブロックテーブルを示す図である。
【図７】図７は、初期起動時における論理ブロックの構築手順を示すフローチャートである。
【図８】図８は、論理ブロックの再構築を概念的に示す図である。
【図９】図９は、論理ブロックのライフサイクルを示す図である。
【図１０】図１０は、判定処理の詳細手順を示すフローチャートである。
【図１１】図１１は、使用時における論理ブロックの再構築手順を示すフローチャートである。
【図１２】図１２は、使用時における論理ブロックの再構築の一例を概念的に示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置の論理ブロック構築方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）などのホストインタフェース２を介してパーソナルコンピュータあるいはＣＰＵなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部記憶装置として機能する。ホスト１は、例えば、パーソナルコンピュータのＣＰＵ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵである。ＳＳＤ１００は、ホストインタフェース２と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤと略す）１０と、ＮＡＮＤ１０よりも高速アクセスが可能な半導体メモリであるＲＡＭ２０と、ＮＡＮＤコントローラ（ＮＡＮＤＣ）３１と、コントローラ３０とを備える。
【００１０】
ＮＡＮＤ１０は、ホスト１によって指定されたユーザデータ１１を記憶したり、ＲＡＭ２０で管理される管理情報を不揮発管理テーブル１２としてバックアップ記憶したりする。ＮＡＮＤ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１１】
図２は、ＮＡＮＤ１０の詳細構成例を示すものである。この実施形態においては、ＮＡＮＤ１０は、８チャネル（８ｃｈ：ｃｈ０〜ｃｈ７）を介してＮＡＮＤコントローラ（ＮＡＮＤＣ）３１に並列接続されており、８つのチャネル並列動作要素１０ａ〜１０ｈを並列動作させることが可能である。チャネル数は８つに限らず、任意のチャネル数を採用可能である。各並列動作要素１０ａ〜１０ｈは、バンクインターリーブが可能な複数のバンク（この場合、４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各バンクは、複数のメモリチップ（この場合、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。このように、ＮＡＮＤ１０の各メモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作を用いた並列動作が可能である。
【００１２】
このように、ＮＡＮＤ１０では、複数のチャネルによる並列動作、複数のバンクによる並列動作が可能であり、チャネル数を８、バンク数を４とした場合、最大３２個の物理ブロックを並列動作させることが可能となる。
【００１３】
ＲＡＭ２０は、ホスト１からのデータをＮＡＮＤ１０にライトする際に一時的にデータを保存するためのライトバッファ２５としての記憶領域と、アドレス変換テーブル２１、論理ブロック管理テーブル２２などの管理情報を記憶、更新するための記憶領域と、ＮＡＮＤ１０からリードされたデータを一時記憶するなどのための作業領域を有する。アドレス変換テーブル２１、論理ブロック管理テーブル２２などの管理情報は、ＮＡＮＤ１０に記憶されている不揮発管理テーブル１２が起動時などに展開されたものである。
【００１４】
ホスト１はＳＳＤ１００に対しリード要求またはライト要求を出力する際には、ホストインタフェース２を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）をＳＳＤ１００に入力する。ＬＢＡは、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。本実施の形態においては、ライトバッファ２５、ＮＡＮＤ１０でデータを管理する単位として、セクタサイズよりも大きく、物理ブロックサイズよりも小さいクラスタという管理単位を定義する。この実施形態では、クラスタという１つの管理単位を使用するが、クラスタよりサイズが大きく、物理ブロックサイズ以下のサイズである他の管理単位を追加し、２つの管理単位を使用してもよい。
【００１５】
ＳＳＤ１００においては、複数の物理ブロックをまとめて管理する単位として、論理ブロックという仮想的なブロックを定義する。この実施の形態では、論理ブロックは、チャネル並列、バンクインターリーブを行えるように物理ブロックを組み合わせる。すなわち、論理ブロックは、チャネル数×バンク数の物理ブロックで構成される。図２に示したように、チャネル数＝８、バンク数＝４であれば、論理ブロックは、最大３２個の物理ブロックで構成される。
【００１６】
図３に示すように、論理ブロックを構成する複数の物理ブロックのインデックスとして、スロット（ｓｌｏｔ）という用語を用いる。スロットは、この実施形態では、チャネル番号とバンク番号との組み合わせに対応する。すなわち、スロット０は、チャネル０及びバンク０に対応し、スロット１は、チャネル０及びバンク１に対応し、スロット２は、チャネル０及びバンク２に対応し、スロット３は、チャネル０及びバンク３に対応し、スロット４は、チャネル１及びバンク０に対応し、…、スロット３０は、チャネル７及びバンク２に対応し、スロット３１は、チャネル７及びバンク３に対応する。図３において、○は正常な物理ブロックを示し、×はバッドブロックを示している。
【００１７】
図３に示すように、最大並列度を確保可能な３２個の物理ブロックで構成される論理ブロックをフル論理ブロックと呼称する。この実施形態では、論理ブロック中で、欠損している物理ブロックを所定個数Ｚまでは許容する。この実施形態では、Ｚ＝１とするが、Ｚ＝２、３、…などの値を設定することとしてもよい。欠損の物理ブロックとは、誤りが多いなど記憶領域として使用できないバッドブロックＢＢのことであり、前述したように、バッドブロックには、先天性バッドブロックと後天性バッドブロックが存在する。Ｚ＝１である論理ブロックは、３１個の物理ブロックと、１個のバッドブロックで構成される。Ｚ＝１である物理ブロックを欠損１論理ブロックと呼称する。したがって、欠損２論理ブロックは、３０個の物理ブロックと、２個のバッドブロックで構成される、Ｚ＝２の論理ブロックである。また、フル論理ブロック、欠損１論理ブロック、欠損２論理ブロックのうちの何れにも属さない余りの物理ブロックを、余り物理ブロックと呼称する。
【００１８】
図４に示すように、ＲＡＭ２０で管理されるアドレス変換テーブル２１には、ＬＢＡのクラスタアドレスと、クラスタ情報との対応が登録されている。クラスタアドレスとは、ＬＢＡをクラスタサイズで割ったものである。クラスタ情報としては、クラスタデータが記憶されているＮＡＮＤ１０上の記憶位置（クラスタデータが記憶されている論理ブロック番号と論理ブロック内記憶位置）、及び当該クラスタが有効か無効かを示すクラスタ有効／無効フラグを含んでいる。
【００１９】
図５に示すように、ＲＡＭ２０で管理される論理ブロック管理テーブル２２には、論理ブロック番号と、この論理ブロックを構成する複数の物理ブロックの識別情報（この実施形態では３２個）を示すブロック構成情報と、欠損情報と、エラー情報と、使用／未使用情報と、当該論理ブロックが使用可能か使用不可能かを示す無効フラグの対応関係が登録されている。ブロック構成情報には、論理ブロックを構成する３２個の物理ブロックの番号がスロット単位で登録されている。物理ブロック番号は、スロット番号＋チップ番号＋チップ内物理ブロック番号で特定可能である。
【００２０】
欠損情報は、欠損フラグＦｋと、欠損スロットＳｋと、欠損ブロック数Ｎｋとを含む。欠損フラグＦｋは、３２個の物理ブロックが全て揃っているか否か、すなわち欠損物理ブロックが存在するか否かを識別する。欠損スロットＳｋは、欠損しているスロット位置を示す。欠損ブロック数Ｎｋは、論理ブロック中の欠損物理ブロックの個数を示す。欠損スロットＳｋは、欠損スロットが１個の場合は、１つのスロット情報が登録され、欠損スロットがｎ個の場合は、ｎ個のスロット情報が登録される。
【００２１】
エラー情報には、エラーの発生の有無、とエラーが発生したスロット位置を示すエラー位置情報とが登録される。エラー情報は、書き込みエラー、読み出しエラー、消去エラーなどのエラーが発生したときに、更新される。
【００２２】
使用／未使用情報は、各論理ブロックが使用中であるか否か、すなわち各論理ブロックがフリーブロックＦＢであるかアクティブブロックＡＢであるかを識別する。フリーブロックＦＢとは、内部に有効データを含まない、用途未割り当ての未使用ブロックのことである。アクティブブロックＡＢとは、内部に有効データを含み、用途が割り当てられた使用中ブロックのことである。この使用／未使用情報を使用して、ＮＡＮＤ１０に対する書き込みの際に使用するフリーブロックＦＢを選択可能である。なお、フリーブロックＦＢは、今まで一度も書き込みが行われなかったブロック及び一旦書き込みが行われたがその後全てのデータが無効データとなったブロックの両方を含む。フリーブロックＦＢはアクティブブロックＡＢとして利用される前の所定のタイミングで消去される。
【００２３】
ＳＳＤ１００では、論理アドレス（ＬＢＡ）と物理アドレス（ＮＡＮＤ１０の記憶位置）との関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物動的変換方式が採用されている。例えば、同じＬＢＡのデータを上書きする場合は、つぎのような処理が行われる。論理アドレスＡ１にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。ホスト１から論理アドレスＡ１のブロックサイズの更新データを上書きするコマンドを受信した場合、フリーブロックＦＢ（ブロックＢ２とする）を１個確保し、そのフリーブロックＦＢにホスト１から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける。その結果、ブロックＢ２はアクティブブロックＡＢになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックＦＢとなる。
【００２４】
図６は、ＲＡＭ２０で管理されるバッドブロックテーブル２３を示すものである。バッドブロックテーブル２３には、先天性バッドブロックおよび後天性バッドブロックが登録される。バッドブロックテーブル２３には、例えば、バッドブロックを示す物理ブロック番号（例えば、チャネル番号＋バンク番号＋チップ番号＋チップ内物理ブロック番号）が登録される。なお、先天性バッドブロックは、バッドブロックテーブル２３に登録しないように管理してもよい。
【００２５】
図１において、ＮＡＮＤＣ３１は、ＮＡＮＤ１０とのインタフェース処理を行うＮＡＮＤインタフェース、ＤＭＡコントローラなどを備えており、ＲＡＭ２０に一時記憶されたデータをＮＡＮＤ１０に書き込んだり、ＮＡＮＤ１０に記憶されているデータを読み出してＲＡＭ２５に転送したりする。ＮＡＮＤＣ３１は、ＥＣＣ（Error Correcting Code）回路３９を有している。ＥＣＣ回路３９は、ＮＡＮＤに書き込むデータに対し、ＥＣＣ処理（誤り訂正処理）におけるエンコード処理を行い、エンコード結果をデータに付加して出力する。また、ＥＣＣ回路３９は、ＮＡＮＤ１０から読み出されたデータに対して、ＥＣＣ処理におけるデコード処理（誤り訂正符号を用いた誤り訂正処理）を行い、誤り訂正されたデータを出力する。ＥＣＣ回路３９は、デコード処理の際に、誤訂正が発生していると判定された場合に、すなわち、ＥＣＣ符号の訂正能力以上の誤りが生じた場合に、その旨をコントローラ３０に通知する。コントローラ３０は、ＥＣＣ回路３９から誤訂正の通知を受信した場合に、論理ブロック管理テーブル２２のエラー情報を更新する。
【００２６】
コントローラ３０は、リードライト制御部３２、整理部３３、ブロック管理部３４を備える。
【００２７】
リードライト制御部３２は、ＮＡＮＤ１０へライトすべきデータをＲＡＭ２０のライトバッファ２５やＲＡＭ２０の作業領域を介してＮＡＮＤ１０へのライトする処理及びＮＡＮＤ１０からのリード処理を実行する。また、リードライト制御部３２は、ＮＡＮＤ１０へのライト動作に伴い、アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理テーブルの更新処理を実行する。
【００２８】
ブロック管理部３４は、製造段階での初回電源投入時に前述した論理ブロックの構築処理を実行するとともに、その後の後天的バッドブロック発生に伴い、論理ブロック管理テーブル２２の欠損情報、エラー情報の更新を行う。また、ブロック管理部３４は、ＳＳＤ１００の使用時においても、論理ブロックの再構築処理を実行する。
【００２９】
整理部３３は、ＮＡＮＤ１０でのデータ整理（コンパクション）を実行する。ＳＳＤにおいて、データの消去単位（ブロック）と、データの管理単位が異なる場合、ＮＡＮＤ１０の書き換えが進むと、無効な（最新ではない）データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、ＮＡＮＤ１０の記憶領域を有効利用できなくなる。そこで、例えば、ＮＡＮＤ１０のフリーブロックが所定の閾値より少なくなった場合、論理ブロック内の有効クラスタを集めて別の論理ブロックに書き直すコンパクション、ガベージコレクションなどのＮＡＮＤ１０の整理を実行し、用途未割り当てのフリーブロックを確保する。整理部３３は、コンパクションの実行に伴い、アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理テーブルの更新処理を実行する。
【００３０】
図７は、製造段階での初回電源投入時における論理ブロックの構築手順を示す図である。ブロック管理部３４は、製造段階での初回電源投入時に、使用不可ブロックを除く物理ブロックを用いて論理ブロックの構築処理を行い、その構築結果を論理ブロック管理テーブル２２に登録する。使用不可ブロックは、初期（先天性）バッドブロック、固定管理領域（コントローラ３０として機能させるためのファームウェアが記憶される物理ブロック）、静的パーティションブロック（製造情報などが記憶される物理ブロック）などを含み、使用不可ブロック番号を示す情報（使用不可ブロック情報という）は、例えば、静的パーティションブロックに予め登録されている。製造段階に構築された論理ブロックは、その後でのＳＳＤ１００のユーザ使用時にも、そのまま継続して使用される。ただし、その後のユーザ使用時に、後発性バッドブロックが発生した際には、発生状況に応じて論理ブロック管理テーブル２２の欠損情報、エラー情報などが更新される。
【００３１】
ブロック管理部３４は、使用不可ブロック情報中の先天性バッドブロックを示す情報をバッドブロックテーブル２３に登録する。ブロック管理部３４は、使用不可ブロック情報に基づき、使用不可な物理ブロックを除いた使用可能な物理ブロックを各スロットＳｌｏｔ０〜ｓｌｏｔ３１から１つずつ選択することで３２個の物理ブロックで構成されるフル論理ブロックを順次作成する（ステップＳ１００）。ブロック管理部３４は、作成した複数のフル論理ブロックに関する管理情報を、論理ブロック管理テーブル２２に登録する。これらフル論理ブロックは使用可能な論理ブロックであり、論理ブロック管理テーブル２２の無効フラグはオフとする。
【００３２】
つぎに、ブロック管理部３４は、使用不可ブロック情報に基づき、使用不可な物理ブロック及びフル論理ブロックとして使用される物理ブロックを除いた物理ブロックを３１個のスロットから１つずつ選択することで３１個の物理ブロックで構成される欠損１論理ブロックを作成する（ステップＳ１１０）。ブロック管理部３４は、作成した欠損１論理ブロックに関する管理情報を、論理ブロック管理テーブル２２に登録する。この欠損１論理ブロックは使用可能な論理ブロックであり、論理ブロック管理テーブル２２の無効フラグはオフとする。
【００３３】
つぎに、ブロック管理部３４は、使用不可ブロック情報に基づき、使用不可な物理ブロック、フル論理ブロックとして使用される物理ブロック及び欠損１論理ブロックとして使用される物理ブロックを除いた物理ブロックを３０個のスロットから１つずつ選択することで３０個の物理ブロックで構成される欠損２論理ブロックを作成する（ステップＳ１２０）。ブロック管理部３４は、作成した欠損２論理ブロックに関する管理情報を、論理ブロック管理テーブル２２に登録する。この欠損２論理ブロックは使用不可能な論理ブロックであり、論理ブロック管理テーブル２２の無効フラグはオンとする。
【００３４】
つぎに、ブロック管理部３４は、フル論理ブロック、欠損１論理ブロック及び欠損２論理ブロックの何れにも属さない余った使用可能な物理ブロックを余り物理ブロックとして管理する。
【００３５】
つぎに、ブロック管理部３４は、フル論理ブロック及び欠損２論理ブロックを使用して、２個の欠損１論理ブロックを作成する論理ブロックの再構築を実行する（ステップＳ１３０）。図８は、この再構築の一例を示すものである。図８に示すように、欠損２論理ブロックは、ｓｌｏｔ０とｓｌｏｔ３が欠損している。フル論理ブロックのｓｌｏｔ３の物理ブロックＢ０３を、欠損２論理ブロックのｓｌｏｔ３に割り当てることで、欠損１論理ブロックを２個作成している。これにより、使用可能な論理ブロックを１個（フル論理ブロック）から２個（欠損１論理ブロック）に増加させることが可能となる。この再構築に伴い、論理ブロック管理テーブル２２を更新する。
【００３６】
ここでは、欠損２論理ブロック１個とフル論理ブロック１個から欠損１論理ブロックを２個作成しているが、この手法を応用し、欠損３論理ブロック１個とフル論理ブロック２個から欠損１論理ブロックを３個作成することも可能である。つまり、欠損Ｍの論理ブロック１個と、Ｍ−１個のフル論理ブロックから欠損１論理ブロックをＭ個作成することができる。欠損論理ブロックを増やすと、ＳＳＤの性能面で悪影響があり、またバッドブロックになりやすくなるので、信頼性との兼ね合いでＭを決定する。
【００３７】
図９は、ＳＳＤ１００の使用時における論理ブロックのライフサイクルを示すものである。フル論理ブロックまたは欠損１論理ブロックで構成される使用可能な論理ブロックは、最初、データが未書き込みのフリーブロックの状態にあり、その後、消去処理を経た後、データが書き込まれてアクティブブロックの状態となる。
【００３８】
その後、同じＬＢＡのデータを上書きするなどの書き込みが行われたり、あるいはコンパクションが行われたりするなどして、アクティブブロックには、無効な（最新でない）データしか記憶されていない状態となる。アクティブブロックに無効なデータしか記録されていない状態となった時点で、欠損が２個以上となったか否かが判定され、欠損が２個以上となった論理ブロックは、論理ブロック管理テーブル２２の無効フラグがオンとされることにより使用不可な論理ブロックとされ、欠損が１個以下の論理ブロックは、フリーブロックに戻る。すなわち、消去処理の際、データの読み出しの際、書き込みの際などに、後天性バッドブロックが発生する場合があり、フル論理ブロック、欠損１論理ブロックに欠損が２個以上発生した場合は、論理ブロックは使用不可となる。使用不可となった欠損が２個以上の論理ブロック中の物理ブロックは、その後再利用されて論理ブロックの再構築に使用され、フリーブロック（フル論理ブロックまたは欠損１論理ブロック）を構成する物理ブロックに戻る場合がある。
【００３９】
図１０は、図９に示した判定処理の詳細手順を示すフローチャートである。ブロック管理部３４は、論理ブロックがアクティブブロックからフリーブロックに遷移する前の時点で、以下の判定処理を実行する。ブロック管理部３４は、論理ブロック管理テーブル２２のエラー情報を参照し、エラーが発生しているか否かを判定する（ステップＳ２００）。前述したように、フリーブロックの状態から無効なデータしか記録されていないアクティブブロックの状態となるまでの間における、消去処理の際、データの読み出しの際、書き込みの際などに、後天性バッドブロックが発生した場合は、その発生状況に応じて論理ブロック管理テーブル２２のエラー情報が更新される。
【００４０】
ブロック管理部３４は、ステップＳ２００の判定で、エラーが発生していない論理ブロックに関しては、論理ブロック管理テーブル２２の使用／未使用情報を未使用に変更し、当該論理ブロックをフリーブロックとする。すなわち、フル論理ブロックはそのままフル論理ブロックとして維持され、欠損１論理ブロックは欠損１論理ブロックとして維持される（ステップＳ２６０）。
【００４１】
ブロック管理部３４は、ステップＳ２００の判定で、エラーが発生していない論理ブロックに関しては、つぎに、論理ブロック管理テーブル２２の欠損情報（欠損フラグＦｋ）を参照し、既に欠損があるか否かを判定する（ステップＳ２１０）。ブロック管理部３４は、欠損がある場合は、エラーと欠損で、欠損が結果的に２個以上となるので、論理ブロック管理テーブル２２の無効フラグをオフからオンにして、当該論理ブロックを使用不可な論理ブロックとする。欠損が２個以上の使用不可な論理ブロックは、この後の論理ブロックの再構築に使用される。
【００４２】
ブロック管理部３４は、ステップＳ２１０の判定で欠損がない論理ブロックに関しては、論理ブロック管理テーブル２２のエラー情報の内容で欠損情報を更新し、エラー情報は無しに更新する（ステップＳ２３０）。そして、ブロック管理部３４は、論理ブロック管理テーブル２２の使用／未使用情報を未使用に変更し、当該論理ブロックを欠損１のフリーブロックとする（ステップＳ２４０）。
【００４３】
図１１は、ＳＳＤ１００の使用時における論理ブロックの再構築手順を示すフローチャートである。ブロック管理部３４は、フリーブロックが所定の閾値を下回ったとき、あるいは欠損２論理ブロックが新たに発生したときなどの適宜の時点で、論理ブロックの再構築を実行する。ブロック管理部３４は、まず、図８に示したように、フル論理ブロック及び欠損２論理ブロックを使用して、２個の欠損１論理ブロックを作成する（ステップＳ３００）。
【００４４】
つぎに、ブロック管理部３４は、複数（２個以上の）の欠損２論理ブロックを用いて、フル論理ブロックまたは欠損１論理ブロックを作成する（ステップＳ３１０）。つぎに、ブロック管理部３４は、フル論理ブロック、欠損１論理ブロック及び欠損２論理ブロックの何れにも属さない余り物理ブロックと、欠損２論理ブロックとを使用して、フル論理ブロックまたは欠損１論理ブロックを作成する（ステップＳ３２０）。さらに、ブロック管理部３４は、複数の余り物理ブロックを使用して、フル論理ブロックまたは欠損１論理ブロックを作成する（ステップＳ３３０）。
【００４５】
図１２では、使用不可となっている、欠損が３個以上の論理ブロックに含まれる複数の物理ブロック（余り物理ブロック）を使用した論理ブロックの構築処理が行われており、新たなフル論理ブロック（ＬＮＢＡ３０）が形成されている。
【００４６】
このように本実施形態においては、論理ブロックを構成するに当たり、欠損する物理ブロック数に許容値を設け、許容値を越える欠損を持たない論理ブロックを使用可能とし、許容値を越える欠損が発生した論理ブロックについては使用不可としているので、並列度がある程度確保された論理ブロックをより多く作成することが可能となる。また、論理ブロック数を構成する物理ブロック数を完全に可変とするのではなく、許容値までの可変しか許容していないので、論理ブロックを管理する管理情報が簡単かつ軽量化され、管理情報のために使用するメモリ容量を削減可能となる。
【００４７】
また、初回起動時、欠損２論理ブロックとフル論理ブロックによって２個の欠損１論理ブロックを作成する再構築処理を行うようにしているので、初回起動時に作成する使用可能な論理ブロックの個数を増加させることが可能となる。すなわち、フル論理ブロック、欠損１論理ブロック、欠損２論理ブロックの順に論理ブロックを作成する場合、フル論理ブロックを可能な限り多く作成し、その後に欠損１論理ブロックを可能な限り多く作成するので、欠損２論理ブロックを作成した段階では、欠損２論理ブロックの欠損スロット（物理ブロックが欠損しているスロット）には、割り当てることが可能な物理ブロックは存在していない。そこで、本実施形態では、フル論理ブロックには、欠損スロットを埋める物理ブロックが存在していることに着目し、フル論理ブロックと、欠損２論理ブロックを使用して２個の使用可能な欠損１論理ブロックを作成するようにしている。
【００４８】
また、使用時にも、欠損２論理ブロックとフル論理ブロックを使用して２個の欠損１論理ブロックを作成する第１の再構築、複数の欠損２論理ブロックを使用して欠損１論理ブロックまたはフル論理ブロックを作成する第２の再構築、１〜複数の欠損２論理ブロックと余り物理ブロックを使用して欠損１論理ブロックまたはフル論理ブロックを作成する第３の再構築、複数の余り物理ブロックを使用して欠損１論理ブロックまたはフル論理ブロックを作成する第４の再構築を行うようにしているので、後天性バッドブロックが発生して論理ブロックの個数が減少した場合でも、使用可能な論理ブロックの個数を増加させることが可能となる。
【００４９】
上記実施形態では、並列動作要素として、チャネル及びバンクを採用したが、他の並列動作要素として、プレーンを採用してもよい。プレーンが採用される場合、各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン０、プレーン１の２つの領域（District）に分割されている。プレーン０及びプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、プレーン倍速モードを使用することで、同時に消去／ライト／リードを行うことが可能である。なお、各メモリチップは、４つのプレーン、さらにそれ以上に分割された構成であってもよい。
【００５０】
並列動作要素として、８個のチャネル、４個のバンク及び２個のプレーンがある場合、最大６４個の物理ブロックを並列動作させることが可能となる。この場合、論理ブロックは、チャネル並列、バンクインターリーブ、プレーン倍速動作を行えるように物理ブロックを組み合わせてもよい。すなわち、チャネル数＝８、プレーン数＝２、バンク数＝４であれば、論理ブロックは、最大６４個の物理ブロックで構成される。プレーン並列動作を行う為には、プレーン０の物理ブロックと、プレーン１の物理ブロックは、同一メモリチップ内であるという制約がある場合がある。このような制約がある場合、あるチャネルでかつあるバンクのプレーン０の物理ブロックがバッドブロックとなったときには、同一チャネルでかつ同一バンクのプレーン１の物理ブロックをプレーン倍速動作させることができない。このため、このような場合は、欠損１論理ブロックを６２個の物理ブロックをもつものとして管理し、欠損２論理ブロックを６０個の物理ブロックをもつものとして管理するようにしてもよい。すなわち、あるチャネルでかつあるバンクのプレーン０の物理ブロックがバッドブロックとなったときには、この物理ブロックとペアとなっているプレーン１の物理ブロックもバッドブロックであるものとして管理する。
【００５１】
なお、論理ブロックは、複数のチャネル分の物理ブロックのみで構成してもよいし、複数のバンク分の物理ブロックのみで構成してもよいし、複数のプレーン分の物理ブロックのみで構成してもよい。また、チャネル並列、バンクインターリーブが行えるように物理ブロックを組み合わせても良いし、チャネル並列、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよいし、バンクインターリーブ、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよい。
【００５２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５３】
１  ホスト、２  ホストインタフェース、１０  ＮＡＮＤ、２０  ＲＡＭ、２１  アドレス変換テーブル、２２  論理ブロック管理テーブル、２３  バッドブロックテーブル、２５  ライトバッファ、３０  コントローラ、３１  ＮＡＮＤコントローラ、３２  リードライト制御部、３３  整理部、３４  ブロック管理部。
【図１】
2013200722.tif 000003
【図２】
2013200722.tif 000004
【図３】
2013200722.tif 000005
【図４】
2013200722.tif 000006
【図５】
2013200722.tif 000007
【図６】
2013200722.tif 000008
【図７】
2013200722.tif 000009
【図８】
2013200722.tif 000010
【図９】
2013200722.tif 000011
【図１０】
2013200722.tif 000012
【図１１】
2013200722.tif 000013
【図１２】
2013200722.tif 000014