(57)【要約】【課題】論理ブロックを構成する物理ブロック数が可変である場合、表記容量分の記憶領域が確保可能な否かを正確に判定すること。【解決手段】不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算し、前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第１の管理単位に換算して、利用可能な前記第１の管理単位のデータの個数を演算し、前記演算したフリーブロックの個数が第１の閾値を下回る第１の条件と、前記演算した第１の管理単位のデータの個数が第２の閾値を下回る第２の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる。【選択図】図１
2013200741.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、
複数の前記物理ブロックを論理ブロックに対応付けて管理するコントローラと、
を備え、
前記コントローラは、前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理するブロック管理部と、
前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算する第１の演算部と、
前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第１の管理単位に換算して、利用可能な前記第１の管理単位のデータの個数を演算する第２の演算部と、
前記演算したフリーブロックの個数が第１の閾値を下回る第１の条件と、前記演算した第１の管理単位のデータの個数が第２の閾値を下回る第２の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる故障判定部と、
を備えることを特徴とする半導体記憶装置。
【請求項２】
前記第２の閾値は、半導体記憶装置の表記容量に対応することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記不揮発性半導体メモリに対しライト動作を行うライト制御部と、
論理ブロック内の有効なデータを集めてフリーブロックに書き直す整理部と、
を更に備え、
第２の演算部は、第１の管理単位に換算する論理ブロックの容量を導出する際、ホストからのデータを次にライトするためのフリーブロックおよび前記整理部による書き込み先のフリーブロックを除外して論理ブロックの容量を集計することを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記第１の閾値は、ホストからのデータを次にライトするためのフリーブロックの個数および前記整理部による書き込み先のフリーブロックの個数を加算した個数に対応することを特徴とする請求項３に記載の半導体記憶装置。
【請求項５】
前記第１の管理単位は、前記不揮発性半導体メモリに対するライトデータを管理する単位であることを特徴とする請求項１に記載の半導体記憶装置。
【請求項６】
前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップは複数のチャネル並列動作要素に跨ってそれぞれがインタリーブ可能な複数のバンクに分割されており、
前記コントローラは、複数のチャネル並列動作要素、複数のプレーン、複数のバンクを跨ぐ複数の物理ブロックの組み合わせとして論理ブロックを管理することを特徴とする請求項１に記載の半導体記憶装置。
【請求項７】
データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリの制御方法であって、
複数の前記物理ブロックを論理ブロックに対応付けて管理し、前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理し、
前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算し、
前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第１の管理単位に換算して、利用可能な前記第１の管理単位のデータの個数を演算し、
前記演算したフリーブロックの個数が第１の閾値を下回る第１の条件と、前記演算した第１の管理単位のデータの個数が第２の閾値を下回る第２の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる
ことを特徴とする半導体記憶装置の制御方法。
【請求項８】
前記第２の閾値は、半導体記憶装置の表記容量に対応することを特徴とする請求項７に記載の半導体記憶装置の制御方法。
【請求項９】
前記第１の管理単位に換算する論理ブロック容量を導出する際、ホストからのデータを次にライトするためのフリーブロックおよび前記整理部による書き込み先のフリーブロックを除外して論理ブロックの容量を集計することを特徴とする請求項７に記載の半導体記憶装置の制御方法。
【請求項１０】
前記第１の閾値は、ホストからのデータを次にライトするためのフリーブロックの個数および前記整理部による書き込み先のフリーブロックの個数を加算した個数に対応することを特徴とする請求項７に記載の半導体記憶装置の制御方法。
【請求項１１】
前記第１の管理単位は、前記不揮発性半導体メモリに対するライトデータを管理する単位であることを特徴とする請求項７に記載の半導体記憶装置の制御方法。
【請求項１２】
前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップは複数のチャネル並列動作要素に跨ってそれぞれがインタリーブ可能な複数のバンクに分割されており、
前記論理ブロックを、複数のチャネル並列動作要素、複数のプレーン、複数のバンクを跨ぐ複数の物理ブロックの組み合わせとして管理することを特徴とする請求項７に記載の半導体記憶装置の制御方法。
【請求項１３】
ホスト装置と、
データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、複数の前記物理ブロックを論理ブロックに対応付けて管理するコントローラとを有する半導体記憶装置と、
を備え、
前記コントローラは、
前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理するブロック管理部と、
前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算する第１の演算部と、
前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第１の管理単位に換算して、利用可能な前記第１の管理単位のデータの個数を演算する第２の演算部と、
前記演算したフリーブロックの個数が第１の閾値を下回る第１の条件と、前記演算した第１の管理単位のデータの個数が第２の閾値を下回る第２の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる故障判定部と、
を備えることを特徴とする情報処理装置。
【請求項１４】
前記第２の閾値は、半導体記憶装置の表記容量に対応することを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記不揮発性半導体メモリに対しライト動作を行うライト制御部と、
論理ブロック内の有効なデータを集めてフリーブロックに書き直す整理部と、
を更に備え、
第２の演算部は、第１の管理単位に換算する論理ブロックの容量を導出する際、ホストからのデータを次にライトするためのフリーブロックおよび前記整理部による書き込み先のフリーブロックを除外して論理ブロックの容量を集計することを特徴とする請求項１３に記載の情報処理装置。
【請求項１６】
前記第１の閾値は、ホストからのデータを次にライトするためのフリーブロックの個数および前記整理部による書き込み先のフリーブロックの個数を加算した個数に対応することを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記第１の管理単位は、前記不揮発性半導体メモリに対するライトデータを管理する単位であることを特徴とする請求項１３に記載の情報処理装置。
【請求項１８】
前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップは複数のチャネル並列動作要素に跨ってそれぞれがインタリーブ可能な複数のバンクに分割されており、
前記コントローラは、複数のチャネル並列動作要素、複数のプレーン、複数のバンクを跨ぐ複数の物理ブロックの組み合わせとして論理ブロックを管理することを特徴とする請求項１３に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを有する半導体記憶装置、その制御方法及び情報処理装置に関する。
【背景技術】
【０００２】
ＳＳＤ（solid state drive）においては、フラッシュメモリの消去単位である物理ブロックを複数個組み合わせた仮想ブロックとしての論理ブロックという概念を導入し、この論理ブロック単位に並列に消去、書き込み、読み出しを行うことで、書き込み効率の向上と並列処理による高速化を図る場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１１２３２号公報
【特許文献２】特開２０１１−１８０８３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、論理ブロックを構成する物理ブロック数が可変である場合、表記容量分の記憶領域が確保可能な否かを正確に判定可能な半導体記憶装置、その制御方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、半導体記憶装置は、データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、複数の前記物理ブロックを論理ブロックに対応付けて管理するコントローラとを備える。コントローラは、前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理する。コントローラは、前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算する。コントローラは、前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第１の管理単位に換算して、利用可能な前記管理単位のデータの個数を演算する。コントローラは、前記演算したフリーブロックの個数が第１の閾値を下回る第１の条件と、前記演算した第１の管理単位のデータの個数が第２の閾値を下回る第２の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる。
【図面の簡単な説明】
【０００６】
【図１】図１は、ＳＳＤの内部構成例を示すブロック図である。
【図２】図２は、ＮＡＮＤの内部構成例を示す図である。
【図３】図３は、アドレス変換テーブルを示す図である。
【図４】図４は、ブロック管理テーブルを示す図である。
【図５】図５は、ブロック管理を概念的に示す図である。
【図６】図６は、ＮＡＮＤの総容量の内訳を示す図である。
【図７】図７は、ブロック枯渇を判定する手順を示すフローチャートである。
【図８】図８は、ブロック枯渇を判定する手順を示すフローチャートである。
【図９】図９は、パーソナルコンピュータの外観を示す斜視図である。
【図１０】図１０は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【０００７】
論理ブロックを構成する物理ブロックの個数が固定である場合、一つの論理ブロックに記録可能なユーザデータ量も固定である。このブロック数固定方式では、論理ブロック中に、バッドブロック（誤りが多いなど記憶領域として使用できない物理ブロック）が発生して、論理ブロックを構成できなくなると、システム上、記録可能なフラッシュメモリの記憶容量が論理ブロック単位で減少していく。
【０００８】
このブロック数固定方式では、利用可能なフラッシュメモリの記憶容量が論理ブロックによって規定できるため、表記容量分の記憶領域が確保可能か否かを論理ブロック数のみで判定することができる。
【０００９】
一方、一つの論理ブロックを構成する物理ブロックの個数を可変とすることができる。この場合、バッドブロック発生による論理ブロック中の一部の物理ブロックの欠損を許容する。欠損している場合は、論理ブロック内に記録可能なユーザデータの量が欠損分だけ削減される。つまり、ブロック数可変方式では、システム上、記録可能なフラッシュメモリの記憶容量が論理ブロック単位で減少してはいかない。
【００１０】
このように、ブロック数可変方式では、論理ブロック毎に記録可能なユーザデータの容量が異なるため、単純に論理ブロック数だけでは表記容量分の記憶領域が確保可能か否かを判定することができない。
【００１１】
そこで、本実施形態においては、論理ブロックという第１の管理単位の他に、セクタサイズより大きなサイズであって物理ブロック以下のサイズである第２の管理単位を用意し、第１の管理単位に基づきフリーブロックの不足を判定し、第２の管理単位に基づいて表記容量分の記憶領域が確保可能か否かを判定する。これにより、ブロック数可変方式であってもブロックの枯渇を正確に判定することが可能であり、限界までＳＳＤの動作を継続させることが可能となる。
【００１２】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置、その制御方法及び情報処理装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１３】
（第１の実施形態）
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）などのホストインタフェース２を介してパーソナルコンピュータあるいはＣＰＵなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部記憶装置として機能する。ホスト１は、例えば、パーソナルコンピュータのＣＰＵ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵである。ＳＳＤ１００は、ホストインタフェース２と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤと略す）１０と、ＮＡＮＤ１０よりも高速アクセスが可能な半導体メモリであるＲＡＭ２０と、ＮＡＮＤコントローラ（ＮＡＮＤＣ）３１と、コントローラ３０とを備える。
【００１４】
ＮＡＮＤ１０は、ホスト１によって指定されたユーザデータ１１を記憶したり、ＲＡＭ２０で管理される管理情報を不揮発管理テーブル１２としてバックアップ記憶する。ＮＡＮＤ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１５】
図２は、ＮＡＮＤ１０の詳細構成例を示すものである。この実施形態においては、ＮＡＮＤ１０は、４チャネル（４ｃｈ：ｃｈ０〜ｃｈ３）を介してＮＡＮＤコントローラ（ＮＡＮＤＣ）３１に並列接続されており、４つのチャネル並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。チャネル数は４つに限らず、任意のチャネル数を採用可能である。各並列動作要素１０ａ〜１０ｄは、バンクインターリーブが可能な複数のバンク（この場合、４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各バンクは、複数のメモリチップ（この場合、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン０、プレーン１の２つの領域（District）に分割されている。プレーン０およびプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、プレーン倍速モードを使用することで、同時に消去／ライト／リードを行うことが可能である。このように、ＮＡＮＤ１０の各メモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた並列動作が可能である。なお、各メモリチップは、４つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
【００１６】
このように、ＮＡＮＤ１０では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を４、バンク数を４、プレーン数を２とした場合、最大３２個の物理ブロックを並列動作させることが可能となる。
【００１７】
ＲＡＭ２０は、ホスト１からのデータをＮＡＮＤ１０にライトする際に一時的にデータを保存するためのライトバッファ２５としての記憶領域と、アドレス変換テーブル２１、論理ブロック管理テーブル２２などの管理情報を記憶、更新するための記憶領域と、ＮＡＮＤ１０からリードされたデータを一時記憶するなどのための作業領域として機能する。アドレス変換テーブル２１、論理ブロック管理テーブル２２などの管理情報は、ＮＡＮＤ１０に記憶されている不揮発管理テーブル１２が起動時などに展開されたものである。
【００１８】
ホスト１はＳＳＤ１００に対し、リードまたはライトする際には、ホストインタフェース２を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）をＳＳＤ１００に入力する。ＬＢＡは、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。本実施の形態においては、ライトバッファ２５，ＮＡＮＤ１０でデータを管理する単位として、セクタサイズよりも大きく、物理ブロックサイズよりも小さいクラスタという管理単位を定義する。この実施形態では、クラスタという１つの管理単位を使用するが、クラスタよりサイズが大きく、物理ブロックサイズ以下のサイズである他の管理単位を追加し、２つの管理単位を使用してもよい。
【００１９】
また、ＳＳＤ１００においては、複数の物理ブロックをまとめて管理する単位として、論理ブロックという仮想的なブロックを定義する。この実施の形態では、論理ブロックは、チャネル並列、バンクインタリーブ、プレーン倍速動作を行えるように物理ブロックを組み合わせる。すなわち、論理ブロックは、チャネル数×バンク数×プレーン数分の物理ブロックで構成される。図２に示したように、チャネル数＝４、プレーン数＝２、バンク数＝４であれば、論理ブロックは、３２個の物理ブロックで構成される。なお、論理ブロックは、複数のチャネル分の物理ブロックのみで構成してもよいし、複数のバンク分の物理ブロックのみで構成してもよいし、複数のプレーン分の物理ブロックのみで構成してもよい。また、チャネル並列、バンクインタリーブが行えるように物理ブロックを組み合わせても良いし、チャネル並列、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよいし、バンクインタリーブ、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよい。
【００２０】
図３に示すように、ＲＡＭ２０で管理されるアドレス変換テーブル２１には、ＬＢＡのクラスタアドレスと、クラスタ情報との対応が登録されている。クラスタアドレスとは、ＬＢＡをクラスタサイズで割ったものである。クラスタ情報としては、クラスタデータが記憶されているＮＡＮＤ１０上の記憶位置（クラスタデータが記憶されている論理ブロック番号と論理ブロック内記憶位置）、及び当該クラスタが有効か無効かを示すクラスタ有効／無効フラグを含んでいる。
【００２１】
図４に示すように、ＲＡＭ２０で管理される論理ブロック管理テーブル２２には、論理ブロック番号と、この論理ブロックを構成する複数の物理ブロックの番号（この実施形態では最大３２個）と、欠損ブロック情報と、使用／未使用情報と、管理情報用かユーザデータ用であるかを識別する管理情報識別フラグとの対応関係が登録されている。欠損ブロック情報は、例えば、３２個の物理ブロックが全て揃っているか否か、すなわち欠損物理ブロックが存在するか否かを識別する欠損フラグＦｋと、欠損している物理ブロック番号を示す欠損ブロック識別情報Ｉｋ、論理ブロックを構成している物理ブロックの個数を示すブロック構成数情報Ｎｋを含んでいる。ブロック構成数情報Ｎｋを、論理ブロック中で欠損している物理ブロックの個数を示す欠損ブロック数情報としてもよい。欠損して物理ブロックとは、前述したように、誤りが多いなど記憶領域として使用できないバッドブロックＢＢであり、欠損ブロック識別情報ＩｋによってバッドブロックＢＢを識別することができる。バッドブロックには、製造段階から発生している先天性バッドブロックと、ユーザの使用中にバッドブロックとなった後発性バッドブロックとが含まれる。
【００２２】
使用／未使用情報は、各論理ブロックが使用中であるか否か、すなわち各論理ブロックがフリーブロックＦＢであるかアクティブブロックＡＢであるかを識別する。フリーブロックＦＢとは、内部に有効データを含まない、用途未割り当ての未使用ブロックのことである。アクティブブロックＡＢとは、内部に有効データを含み、用途が割り当てられた使用中ブロックのことである。この使用／未使用情報を使用して、ＮＡＮＤ１０に対する書き込みの際に使用するフリーブロックＦＢを選択する。なお、フリーブロックＦＢは、今まで一度も書き込みが行われなかったブロック及び一旦書き込みが行われたがその後全てのデータが無効データとなったブロックの両方を含む。フリーブロックＦＢはアクティブブロックＡＢとして利用される前の所定のタイミングで消去される。
【００２３】
管理情報識別フラグは、当該論理ブロックが管理情報のために使用されているか、ユーザデータ記憶用に使用されているかを識別する情報である。管理情報記憶用の論理ブロックは、必要な最大容量を予め固定量だけ確保するようにしてもよいし、ＮＡＮＤ１０の書き換えが進むに伴い管理情報記憶用の論理ブロックを増減させるようにしてもよい。
【００２４】
このように、論理ブロックは、全ての物理ブロックがフルに存在するフル論理ブロックと、欠損物理ブロックが存在する欠損論理ブロックとを含む。
【００２５】
この実施形態では、コントローラ３０は、製造段階での初回電源投入時に、使用不可ブロックを除く物理ブロックを用いて論理ブロックの構築処理を行い、その構築結果を論理ブロック管理テーブル２２に登録する。使用不可ブロックは、初期（先天性）バッドブロック、固定管理領域（コントローラ３０として機能させるためのファームウェアが記憶される物理ブロック）、予約ブロック（初回電源投入時に管理情報のために確保される物理ブロック）などを含み、使用不可ブロック番号を示す情報は、例えば、静的パーティションブロックに予め登録されている。製造段階に構築された論理ブロックは、その後でのＳＳＤ１００のユーザ使用時にも、そのまま継続して使用される。ただし、その後のユーザ使用時に、後発性バッドブロックが発生した際には、発生状況に応じて論理ブロック管理テーブル２２の欠損ブロック情報が更新される。
【００２６】
なお、欠損する物理ブロック数に許容値（例えば、２個や４個など）を設け、許容値を越えた欠損物理ブロックが発生した論理ブロックについては、使用不可とするようにしてもよい。このようにした場合、許容値を越えた欠損物理ブロックを有する使用不可の論理ブロックが複数個発生した場合、使用可能な論理ブロックの容量が少なくなるので、使用不可の複数の論理ブロックを用いて論理ブロックの再構築を行って、使用可能な論理ブロック数を増加させるようにしてもよい。
【００２７】
ＳＳＤ１００では、論理アドレス（ＬＢＡ）と物理アドレス（ＮＡＮＤ１０の記憶位置）との関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物動的変換方式が採用されている。例えば、同じＬＢＡのデータを上書きする場合は、つぎのような操作が行われる。論理アドレスＡ１にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。ホスト１から論理アドレスＡ１のブロックサイズの更新データを上書きするコマンドを受信した場合、フリーブロックＦＢ（ブロックＢ２とする）を１個確保し、そのフリーブロックＦＢにホスト１から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける。その結果、ブロックＢ２はアクティブブロックＡＢになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックＦＢとなる。
【００２８】
図１において、ＮＡＮＤＣ３１は、ＮＡＮＤ１０とのインタフェース処理を行うＮＡＮＤ  Ｉ／Ｆ、誤り訂正回路、ＤＭＡコントローラなどを備えており、ＲＡＭ２０に一時記憶されたデータをＮＡＮＤ１０に書き込んだり、ＮＡＮＤ１０に記憶されているデータを読み出してＲＡＭ２５に転送したりする。
【００２９】
図１において、コントローラ３０は、リードライト制御部３２、ブロック管理部３３、整理部３４，フリーブロック数確認部（ＦＢ数確認部）３５、クラスタ数確認部３６、故障判定部３７を備える。
【００３０】
リードライト制御部３２は、ＮＡＮＤ１０へライトすべきデータをＲＡＭ２０のライトバッファ２５やＲＡＭ２０の作業領域を介してＮＡＮＤ１０へのライトする処理およびＮＡＮＤ１０からのリード処理を実行する。また、リードライト制御部３２は、ＮＡＮＤ１０へのライト動作に伴い、アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理テーブルの更新処理を実行する。
【００３１】
ブロック管理部３３は、製造段階での初回電源投入時における前述した論理ブロック構築処理を実行するとともに、その後の後天的バッドブロック発生に伴い論理ブロック管理テーブル２２の欠損ブロック情報（欠損フラグＦｋ＋欠損ブロック識別情報Ｉｋ＋ブロック構成数情報Ｎｋ）の更新を行う。
【００３２】
整理部３４は、ＮＡＮＤ１０でのデータ整理（コンパクション）を実行する。ＳＳＤにおいて、データの消去単位（ブロック）と、データの管理単位が異なる場合、ＮＡＮＤ１０の書き換えが進むと、無効な（最新ではない）データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、ＮＡＮＤ１０の記憶領域を有効利用できなくなる。そこで、例えば、ＮＡＮＤ１０のフリーブロックが所定の閾値より少なくなった場合、、論理ブロック内の有効クラスタを集めて別の論理ブロックに書き直すコンパクションなどのＮＡＮＤ１０の整理を実行し、用途未割り当てのフリーブロックを確保する。整理部３４は、コンパクションの実行に伴い、アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理テーブルの更新処理を実行する。
【００３３】
フリーブロック数確認部（ＦＢ数確認部）３５は、論理ブロック管理テーブル２２の使用／未使用情報に基づいて未使用である論理ブロック数を計数することによりフリーブロック数Ｎfbを取得し、取得したフリーブロック数を故障判定部３７に出力する。
【００３４】
クラスタ数確認部３６は、論理ブロック管理テーブル２２のブロック構成数情報Ｎｋを全ての論理ブロックについて合算することで、使用不可となっていない物理ブロックの合計数Ｎtotalを算出する。１つの物理ブロックに記憶可能なクラスタ数Ｎclstrは一意に決まるので、クラスタ数確認部３６は、Ｎtotal×Ｎclstrを求めることで、使用可能なクラスタ数Ｎtcを算出する。クラスタ数確認部３６は、取得した合計クラスタ数Ｎtcを故障判定部３７に出力する。
【００３５】
故障判定部３７は、ＦＢ数確認部３５から入力されるフリーブロック数Ｎfbを閾値Ｆrefと比較し、フリーブロック数Ｎfbが閾値Ｆrefに満たないときに、故障検出信号を出力する。また、故障判定部３７は、クラスタ数確認部３６から入力される合計クラスタ数Ｎtcを閾値Ｃrefと比較し、クラスタ数Ｎtcが閾値Ｃrefに満たないときに、故障検出信号を出力する。
【００３６】
図５は、ＳＳＤ１００でのブロック管理を概念的に示す図である。ＮＡＮＤ１０では、ホスト１からのユーザデータをライトするための論理ブロックＢＬＫhstと、コンパクションにおいてデータをライトするための論理ブロックＢＬＫcom1およびＢＬＫcom2を常に確保しておく。論理ブロックＢＬＫcom1は、コンパクションでの書き込み先のブロックであり、論理ブロックＢＬＫcom2は、論理ブロックＢＬＫcom1が欠損ブロックであった場合に、書ききれなかったデータを書き込むための予備ブロックである。ホスト１からのデータのライト処理やコンパクション処理によって有効データがライトされたブロックはアクティブブロックＡＢとして管理される。アクティブブロックＡＢは、ＮＡＮＤ１０の書き換えが進むと、フリーブロックＦＢとして解放されたり、コンパクションでの書き込み元のブロックを経てフリーブロックＦＢとして解放される。フリーブロックＦＢは、その後、ホスト１からのユーザデータをライトするための論理ブロックＢＬＫhstや、コンパクションにおいてデータをライトするための論理ブロックＢＬＫcom1およびＢＬＫcom2として、利用される。
【００３７】
図６は、ＮＡＮＤ１０の総容量の内訳を示すものである。ＮＡＮＤ総容量は、使用不可能領域と、使用可能容量とで構成されている。使用不可能領域は、前述したように、初期バッドブロック、固定管理領域、静的パーティションブロックなどを含む。使用可能容量は、構築することができた論理ブロックの総容量であり、フル論理ブロックと欠損論理ブロックを含む。使用可能領域は、動作に必要な予約分と、表記容量分のユーザデータ領域と、余裕分とを含み、余裕分の容量が大きいほど書き込み性能が向上する。
【００３８】
図６において、動作に必要な予約分とは、図５に示したように、ホスト１からのユーザデータをライトするための論理ブロックＢＬＫhstと、コンパクションにおいてデータをライトするための論理ブロックＢＬＫcom1およびＢＬＫcom2と、アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理情報を記憶するための容量分などを含む。図６において、表記容量分のユーザデータ領域を確保できなくなった場合、別言すれば、余裕分の容量が０を下回った場合に、故障モードなる。すなわち、後天性バッドブロックが発生すると、使用可能容量が減少していき、使用可能容量から動作に必要な予約分を差し引いた容量が、表記容量を下回った場合に、故障モードとする。図５の符号Ｃで囲まれた領域が使用可能容量を計算するための対象領域となる。
【００３９】
つぎに、ＮＡＮＤ１０のブロック枯渇による故障判定について説明する。ＮＡＮＤ１０でバッドブロックが後天的に発生すると、ユーザデータなどの記録に使用できるブロックが減少していく。本実施形態においては、以下の条件の何れかを満たした時に、ブロック枯渇と判定する。
Ａ．フリーブロックが不足して、次の書き込みができない状況
Ｂ．コンパクションを行っても、余裕分の容量を確保できない状況
【００４０】
フリーブロックが不足して、次の書き込みができない状況とは、フリーブロックの不足によって、図５の論理ブロックＢＬＫhst、ＢＬＫcom1およびＢＬＫcom2を確保できない状況である。そこで、フリーブロック数Ｎfbが閾値Ｆref未満となった場合に、ブロック枯渇条件Ａが成立したと判定する。閾値Ｆrefは、図６で説明した動作に必要な予約分のフリーブロック数であり、このブロック数にマージンを加えてもよい。
【００４１】
すなわち、ＳＳＤ１００が動作し続けるためには、論理ブロックＢＬＫhst、ＢＬＫcom1およびＢＬＫcom2が必要である。そのため、フリーブロック数Ｎfbが減少してきた場合には、コンパクション処理を実行してフリーブロックを生成する。フリーブロック数Ｎfbが、論理ブロックＢＬＫhst、ＢＬＫcom1およびＢＬＫcom2の合計数（３個）未満になりそうな場合には、コンパクションは必須の処理である。通常、コンパクション処理が正常に動作している場合は、フリーブロック数Ｎfbが３個未満になることはない。しかし、フリーブロック数が減っている状況において、コンパクションでのデータコピー処理やホスト１からのデータ書き込み処理などで、エラーが発生してバッドブロックが発生すると、代替の論理ブロックの確保が必要になり、論理ブロックＢＬＫhst、ＢＬＫcom1およびＢＬＫcom2を確保できなくなり、ブロック枯渇条件Ａが成立してコンパクション処理自体を行うことが不可能になる。
【００４２】
コンパクションを行っても、余裕容量を確保できない状況とは、コンパクションを複数回継続しても、余裕分の容量が零になって表記容量分のユーザデータ領域を確保できない状況である。そこで、使用可能なクラスタ数Ｎtcが閾値Ｃrefを下回った場合に、ブロック枯渇条件Ｂが成立したと判定する。閾値Ｃrefは、表記容量に対応するクラスタ数であり、このクラスタ数にマージンを加えて、閾値Ｃrefを決定してもよい。ただし、使用可能なクラスタ数Ｎtcを集計する際には、図６で説明した動作に必要な予約分を集計から除く。
【００４３】
つぎに、図７を参照して故障判定部３７が行うブロック枯渇条件Ａについての故障判定手順について説明する。ＦＢ数確認部３５は、適宜のタイミングで（例えば、ＮＡＮＤ１０に書き込みを行う際、後天性バッドブロックが発生して論理ブロック管理テーブル２２が更新された時点、ＮＡＮＤ整理の最中あるいはＮＡＮＤ整理が終了した時点、あるいは定期的に）、論理ブロック管理テーブル２１の使用／未使用情報に基づいて未使用である論理ブロック数を計数することによりフリーブロック数Ｎfbを取得し、取得したフリーブロック数を故障判定部３７に出力する。
【００４４】
故障判定部３７は、ＦＢ数確認部３５からフリーブロック数Ｎfbが入力されると、フリーブロック数Ｎfbを閾値Ｆrefと比較し（ステップＳ１００）、フリーブロック数Ｎfbが閾値Ｆrefに満たないときは、故障検出信号を出力して、ＳＳＤ１００の動作を停止させたり、ユーザデータの記録を中止させたりして、ＳＳＤ１００を故障モードに移行させる（ステップＳ１１０）。閾値Ｆrefは、前述したように、ホスト１からのユーザデータをライトするための論理ブロックＢＬＫhstと、コンパクションにおいてデータをライトするための論理ブロックＢＬＫcom1およびＢＬＫcom2との合計数に対応する。
【００４５】
つぎに、図８を参照して故障判定部３７が行うブロック枯渇条件Ｂについての故障判定手順について説明する。クラスタ数確認部３６は、ホスト１からのライト要求が発生すると（ステップＳ２００）、使用可能なクラスタ数Ｎtcを算出する。クラスタ数Ｎtcは、次のようにして算出する。クラスタ数確認部３６は、論理ブロック管理テーブル２２のブロック構成数情報Ｎｋを全ての論理ブロックについて合算することで、使用可能な物理ブロックの仮合計数Ｎtotal´を算出し、この物理ブロックの仮合計数Ｎtotal´から、図６に示した動作に必要な予約分に対応する物理ブロック数を除外（減算）し、この減算結果を使用可能な物理ブロックの合計数Ｎtotalとして算出する。
【００４６】
図６に示した動作に必要な予約分とは、図５に示した論理ブロックＢＬＫhst、ＢＬＫcom1およびＢＬＫcom2分に対応する物理ブロック数と、アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理情報を記憶するための容量分に対応する物理ブロック数である。論理ブロックＢＬＫhst、ＢＬＫcom1およびＢＬＫcom2分に対応する物理ブロック数は、予め設定された固定値（例えば３）として計算する。アドレス変換テーブル２１や論理ブロック管理テーブル２２などの管理情報を記憶するための容量分に対応する物理ブロック数は、管理情報用の論理ブロックを固定的に管理する場合は、予め設定された固定値として計算する。また、管理情報用の論理ブロックを可変的に管理する場合は、論理ブロック管理テーブル２２の管理情報識別フラグの欄が管理情報として登録されている論理ブロックを選択し、選択した論理ブロックのブロック構成数情報Ｎｋを合算することで、管理情報が記憶される物理ブロック数を導出する。
【００４７】
クラスタ数確認部３６は、導出した使用可能な物理ブロックの合計数Ｎtotalに、１つの物理ブロックに記憶可能なクラスタ数Ｎclstrを掛けて、使用可能な合計クラスタ数Ｎtc（＝Ｎtotal×Ｎclstr）を求める。クラスタ数確認部３６は、取得した合計クラスタ数Ｎtcを故障判定部３７に出力する。
【００４８】
故障判定部３７は、クラスタ数確認部３６から合計クラスタ数Ｎtcが入力されると、合計クラスタ数Ｎtcを閾値Ｃrefと比較し（ステップＳ２１０）、クラスタ数Ｎtcが閾値Ｃrefに満たないときには、前記同様、故障検出信号を出力して、ＳＳＤ１００の動作を停止させたり、ユーザデータの記録を中止させたり、ＳＳＤ１００を故障モードに移行させる（ステップＳ２２０）。閾値Ｃrefは、前述したように、表記容量に対応するクラスタ数である。
【００４９】
なお、クラスタ数Ｎtcの算出は、判定の度に初めから計算していると計算時間がかかるので、クラスタ数Ｎtcの初期値を、製造段階での初回電源投入時における前述した論理ブロック構築に求め、その後は、論理ブロックの再構築やバッドブロックの発生による論理ブロック管理テーブル２２の更新などのイベント発生タイミングで、初期値を順次差分的に増減させる計算を行うことで、効率的に計算することも可能である。
【００５０】
このように第１の実施形態では、フリーブロック数による判定の他に、クラスタ数による判定を行って表記容量分の記憶領域が確保可能か否かを判定するようにしており、これにより、ブロック数可変方式であってもブロックの枯渇を正確に判定することが可能であり、限界までＳＳＤの動作を継続させることが可能となる。
【００５１】
なお、上記では、故障モードの際、ＳＳＤ１００を停止させているが、事前に警告をホスト１に通知するようにしてもよい。具体的には、フリーブロック数の判定閾値Ｆref、クラスタ数の判定閾値Ｃrefに、数個の論理ブロック分の余裕を持った閾値を用意し、この閾値を用いて前述のブロック枯渇条件Ａ、Ｂが成立したときに、寿命が近づいていることを統計情報やSMART情報としてホスト１に提示する。
【００５２】
また、上記実施形態では、ブロック枯渇条件Ｂを判定する際に、クラスタ数を用いるようにしたが、セクタサイズより大きなサイズであって論理ブロックより小さなサイズであれば、例えば、物理ブロック数、物理ページ数、クラスタより大きな別の管理単位を用いてブロック枯渇条件Ｂを判定するようにしてもよい。
【００５３】
（第２の実施形態）
図９は、ＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【００５４】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００５５】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００５６】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００５７】
図１０は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【００５８】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００５９】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００６０】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００６１】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００６２】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【００６３】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００６４】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【００６５】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【００６６】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【００６７】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【００６８】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００６９】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【００７０】
なお、ＳＳＤ１００が搭載される情報処理装置として、スチルカメラ、ビデオカメラなどの撮像装置を採用してもよい。このような情報処理装置は、ＳＳＤ１００を搭載することによって、ランダムリード及びランダムライト性能を向上させることが可能となる。従って、情報処理装置を使用するユーザの利便性が向上する。
【００７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７２】
１  ホスト装置、２  ホストインタフェース、１０  ＮＡＮＤ型フラッシュメモリ、１０ａ〜１０ｄ  チャネル並列動作要素、２０  ＲＡＭ、２１  アドレス変換テーブル、２２  論理ブロック管理テーブル、２５  ライトバッファ、３０  コントローラ、３１  ＮＡＮＤコントローラ、３２  リードライト制御部、３３  ブロック管理部、３４  整理部、３５  フリーブロック数確認部、３６  クラスタ数確認部、３７  故障判定部、１００  ＳＳＤ。
【図１】
2013200741.tif 000003
【図２】
2013200741.tif 000004
【図３】
2013200741.tif 000005
【図４】
2013200741.tif 000006
【図５】
2013200741.tif 000007
【図６】
2013200741.tif 000008
【図７】
2013200741.tif 000009
【図８】
2013200741.tif 000010
【図９】
2013200741.tif 000011
【図１０】
2013200741.tif 000012