(57)【要約】【課題】効率のよいブロック解放が可能な半導体記憶装置を提供すること。【解決手段】ホストから通知されるトリム要求を解釈するコマンド解釈部と、コマンド解釈部で解釈されたトリム要求で指定された第１および第２の記憶部の領域を第１の管理データ単位に管理する第１の管理部と、コマンド解釈部で解釈されたトリム要求で指定された第２の記憶部の領域を第２の管理データ単位に管理する第２の管理部と、第２の管理部によって全てがトリム指定された第２の管理データを含むブロック、第１の管理部によって全てがトリム指定された第１の管理データを含むブロックを解放する解放制御部とを備える。【選択図】図１
2011128998.tif 000002
【特許請求の範囲】
【請求項１】
消去単位であるブロックを複数個有し、前記ブロック単位より小さい第１の管理データ単位で管理される不揮発性半導体メモリとしての第１の記憶部と、
消去単位であるブロックを複数個有し、前記ブロック単位以下であって前記第１の管理データ単位より大きい第２の管理データ単位で管理される不揮発性半導体メモリとしての第２の記憶部と、
前記第１および第２の記憶部を管理するコントローラと、
を備え、
前記コントローラは、
ホストから通知されるトリム要求を解釈するコマンド解釈部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第１および第２の記憶部の領域を前記第１の管理データ単位に管理する第１の管理部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第２の記憶部の領域を前記第２の管理データ単位に管理する第２の管理部と、
前記第２の管理部によって全てがトリム指定された第２の管理データを含むブロック、第１の管理部によって全てがトリム指定された第１の管理データを含むブロックを解放する解放制御部と、
を備えることを特徴とする半導体記憶装置。
【請求項２】
前記第２の管理データ単位は、前記ブロックのサイズと一致し、第１の管理単位がセクタ単位より大きく、
前記解放制御部は、前記第２の管理部によってトリム指定された第２の管理データに対応するブロックを解放することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記第１の管理部は、第１の記憶部の領域が無効であるか有効であるかを前記第１の管理データ単位に管理し、
前記解放制御部は、第１の管理部によって全てがトリム指定または無効指定された第１の管理データを含むブロックを解放することを特徴とする請求項１または２に記載の半導体記憶装置。
【請求項４】
前記第１の管理部は、トリム要求で指定された前記第１および第２の記憶部の領域を前記第１の管理データ単位に管理する第１の管理テーブルを有し、
前記第２の管理部は、トリム要求で指定された前記第２の記憶部の領域を前記第２の管理データ単位に管理する第２の管理テーブルを有し、
前記第１の管理部は、解放されたブロックを管理している第１の管理テーブルのエントリを解放することを特徴とする請求項１〜３の何れか一つに記載の半導体記憶装置。
【請求項５】
消去単位であるブロックを複数個有し、前記ブロック単位より小さくセクタより大きい第１の管理データ単位で管理される不揮発性半導体メモリとしての第１の記憶部と、
消去単位であるブロックを複数個有し、前記ブロック単位以下であって前記第１の管理データ単位より大きい第２の管理データ単位で管理される不揮発性半導体メモリとしての第２の記憶部と、
前記第１および第２の記憶部を管理するコントローラと、
を備え、
前記コントローラは、
ホストから通知されるトリム要求を解釈するコマンド解釈部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第１および第２の記憶部の領域を前記第１の管理データ単位に管理する第１の管理部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第２の記憶部の領域を前記第２の管理データ単位に管理する第２の管理部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第１および第２の記憶部の領域をセクタ単位に管理する第３の管理部と、
前記第１〜第３の管理部の管理に基づき、全てがトリム指定されたセクタを含むブロックを解放する解放制御部と、
前記第１〜第３の管理部の管理に基づき、トリム指定された前記第１または第２の記憶部に読み出し要求が発生したことを判定した場合、所定の応答データを返信する応答制御部と、
を備えることを特徴とする半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えた半導体記憶装置に関する。
【背景技術】
【０００２】
例えば、ホスト機器で利用する記憶装置をＨＤＤ(Hard Disk Drive)からフラッシュメモリなどの半導体記憶装置に置換する場合、ＨＤＤに記憶されたデータをフラッシュメモリにコピーすることが考えられている。このＨＤＤに不良セクタがあった場合、不良セクタの記憶位置を示すセクタアドレスから読み出されたデータは、復元不能な誤ったデータとして読み出される（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２９３１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、効率のよいブロック解放が可能な半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本願発明の一態様によれば、消去単位であるブロックを複数個有し、前記ブロック単位より小さい第１の管理データ単位で管理される不揮発性半導体メモリとしての第１の記憶部と、消去単位であるブロックを複数個有し、前記ブロック単位以下であって前記第１の管理データ単位より大きい第２の管理データ単位で管理される不揮発性半導体メモリとしての第２の記憶部と、前記第１および第２の記憶部を管理するコントローラとを備え、前記コントローラは、ホストから通知されるトリム要求を解釈するコマンド解釈部と、前記コマンド解釈部で解釈されたトリム要求で指定された前記第１および第２の記憶部の領域を前記第１の管理データ単位に管理する第１の管理部と、前記コマンド解釈部で解釈されたトリム要求で指定された前記第２の記憶部の領域を前記第２の管理データ単位に管理する第２の管理部と、前記第２の管理部によって全てがトリム指定された第２の管理データを含むブロック、第１の管理部によって全てがトリム指定された第１の管理データを含むブロックを解放する解放制御部とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、効率のよいブロック解放が可能となるという効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の実施の形態にかかる半導体記憶装置のシステム構成を示すブロック図。
【図２】図２は、ＬＢＡと管理単位とを示す図。
【図３】図３は、キャッシュ管理テーブルの構成例を示す図。
【図４】図４は、ブロック管理テーブルの構成例を示す図。
【図５】図５は、ページ管理テーブルの構成例を示す図。
【図６】図６は、ページ管理テーブルの他の構成例を示す図。
【図７】図７は、物理ブロック管理テーブルの構成例を示す図。
【図８】図８は、第１の実施の形態の動作例を示すフローチャート。
【図９】図９は、ブロックアライン境界とＬＢＡとの関係を示す図。
【図１０】図１０は、第１の実施の形態によるブロックの解放を示す図。
【図１１】図１１は、セクタ管理テーブルの構成例を示す図。
【図１２】図１２は、第２の実施の形態の動作例を示すフローチャート。
【図１３】図１３は、ＳＳＤを搭載したパーソナルコンピュータの全体図。
【図１４】図１４は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示す図。
【図１５】図１５は、比較例を説明するための図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、本発明の実施の形態にかかる半導体記憶装置を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【０００９】
近年、ＡＴＡコマンドセットのＤＡＴＡ  ＳＥＴ  ＭＡＮＡＧＥＭＥＮＴコマンドにおいて、“ＴＲＩＭ”という属性（ビット）が定義されている。以下、ＴＲＩＭビットを含むＤＡＴＡ  ＳＥＴ  ＭＡＮＡＧＥＭＥＮＴコマンドをＴＲＩＭコマンドと呼称して説明する。ＴＲＩＭコマンドは、ホスト（ＯＳ）から記憶デバイスに、ＯＳにとって不要になった記憶領域を通知するものであり、セクタ単位のＬＢＡで指定される。ＴＲＩＭのコマンドについては、例えば、以下の文献を参考にすれば良いため、ここでは詳細説明を省略する（http://www.t13.org/Documents/UploadedDocuments/docs2009/d2015r1a-ATAATAPI_Command_Set_-_2_ACS-2.pdf）。また、ＴＲＩＭコマンドはＡＴＡ規格のコマンドに限られず、同様の内容を含んでいれば、他の規格で定義されたコマンドであってもよい。
【００１０】
また、ＴＲＩＭコマンドの仕様には、ＴＲＩＭコマンドによりＴＲＩＭされた領域がリードコマンドによりリードされた場合に特定の値を返すことが要求されるＤｅｔｅｒｍｉｎｉｓｔｉｃ  Ｒｅａｄ  Ａｆｔｅｒ  Ｔｒｉｍ(ＤＲＡＴ)というオプションがある。ＴＲＩＭコマンドは、例えば、ＴＲＩＭ（ＤＲＡＴ）コマンドであることを示すコード、セクタ単位の論理アドレスであるＬＢＡの開始アドレス、サイズ（セクタ数）などを含む。第１の実施の形態では、通常ＴＲＩＭコマンドに対応させ、第２の実施の形態では、ＤＲＡＴコマンドに対応させる。
【００１１】
まず、比較例について説明する。ＮＡＮＤメモリは、消去がブロック単位、書き込みがページ単位であり，セクタ単位で指定されるＴＲＩＭコマンドとのあいだに差異がある（ブロック＞ページ＞セクタ）。ブロック単位のみで管理している半導体記憶装置の場合、ＬＢＡのＴＲＩＭ範囲が、ＬＢＡのブロック単位のアドレス境界に完全に合致しているようなＴＲＩＭコマンドにしか対応できない。図１５は、ＬＢＡのＴＲＩＭ範囲がＬＢＡブロックアドレスＮ−１として指定された場合を示しており、このようにＴＲＩＭ範囲がブロック単位のアドレス境界に完全に合致する場合は、ブロックＮ−１を使用割り当てが決まっているブロックから内部に有効データを含まない用途未割り当てのブロックであるフリーブロックとして解放することができる。しかしながら、ブロック管理のみの場合は、たとえば，図１５のブロックアドレス３に示すように、ひとつのブロック内のページが別々のＴＲＩＭコマンドで指定された場合、ブロックアドレス３内の全ページがＴＲＩＭ対象となった場合であってもそのブロックを解放することができない。また、ブロック単位のみで管理している場合に、ＤＲＡＴをサポートするには，ブロックサイズよりも小さい単位のＴＲＩＭ要求に対してＴＲＩＭ範囲を含むＮＡＮＤメモリのブロックをいったんバッファに読み出し，そのデータ上のＴＲＩＭ範囲に対応する箇所のみにＴＲＩＭ仕様で定められた値を書き込み、それをＮＡＮＤメモリのブロックに書き戻す必要があり、余計な書き込みが発生する。
【００１２】
（第１の実施の形態）
図１は、半導体記憶装置としてのＳＳＤ（Solid State Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。ＳＳＤ１００は、不揮発性半導体メモリとしての多値記憶が可能なＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、キャッシュメモリなどとして機能するＲＡＭ（Random Access Memory）２０と、ホスト１とＮＡＮＤメモリ１０との間でＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御するコントローラ３０とを備えている。
【００１３】
ホスト１はＳＳＤ１００対し、ReadまたはWriteする際には、ＡＴＡインタフェース２を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）を入力する。ＬＢＡは、図２に示すように、セクタ（サイズ：５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。これに対して、ＮＡＮＤメモリ１０においてデータを読み書きする単位は、セクタサイズ（５１２Ｂ）の２のｓ乗倍の大きさであり、この単位の記憶領域をページと呼ぶ。ＮＡＮＤメモリ１０の１ページには、ＬＢＡセクタアドレスの連続した領域が割当てられる。
【００１４】
また、ＮＡＮＤメモリ１０は、内部において独立して消去可能な最小単位としてのブロックから構成され、ブロックは、複数（２のｔ乗個）のページから構成される。本実施の形態においては、キャッシュメモリ２１、ＮＡＮＤメモリ１０の管理単位として、ＬＢＡの下位（ｓ＋１）ビット目から上位のビット列で構成される論理ページアドレスと、ＬＢＡの下位（ｓ＋ｔ＋１）ビットから上位のビット列で構成される論理ブロックアドレスとを定義する。
【００１５】
ＲＡＭ２０は、ホスト１とＮＡＮＤメモリ１０間でのデータ転送用キャッシュとして機能するキャッシュメモリ（ライトキャッシュ（ＷＣ）２１ａ、リードキャッシュ（ＲＣ）２１ｂ）２１と、各種管理情報を記憶する管理情報記憶部２２と、作業エリア２３とを備えている。ＷＣ２１ａは、ホスト１からのWriteデータを一時保存して、ＮＡＮＤメモリ１０に出力する。ＲＣ２１ｂは、ＮＡＮＤメモリ１０からのReadデータを一時保存してホスト１に出力する。ＷＣ２１ａのリソースが不足した場合には、ＷＣ２１ａの記憶データはＮＡＮＤメモリ１０に追い出される。キャッシュメモリ２１上のデータは、セクタ単位で管理される。
【００１６】
図３は、キャッシュメモリ２１を管理するキャッシュ管理テーブル４０の構成例を示している。このキャッシュ管理テーブル４０は、ＲＡＭ２０の管理情報記憶部２２に作成される。キャッシュ管理テーブル４０は、キャッシュメモリ２１に記憶されるデータを、ページ単位で管理する。また、データの有効／無効の管理は、セクタ単位で実行される。キャッシュ管理テーブル４０の各エントリには、論理ページアドレス、キャッシュメモリ２１での記憶位置を示す物理アドレス、及び対応するページ単位の領域内の有効データの位置を表すセクタフラグが関連付けられている。キャッシュ管理テーブル４０において、キャッシュメモリ２１の各ページ単位の領域は、更にセクタ単位の領域に分割され、各セクタ単位の領域内のデータの状態を、セクタフラグの値を「有」または「無」にすることで示す。セクタフラグが「有」の領域には、ホスト１からの有効データが記憶されている。これに対し、セクタフラグが「無」の領域には、ホスト１から書き込まれた最新のデータが記憶されておらず、無効な領域となる。有効データとは最新データのことであり、無効データとは、同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったデータのことである。
【００１７】
ＮＡＮＤメモリ１０内のブロックは、書き込み時のＮＡＮＤメモリ１０に対する消去の量を減らすために、コントローラ３０により、前段ストレージ領域（ＦＳ：Front Storage）１２、中段ストレージ領域（ＩＳ:Intermediate Storage）１３およびメインストレージ領域（ＭＳ：Main Storage）１１という各管理領域に割り当てられている。ＦＳ１２は、ＷＣ２１からのデータを「小さな単位」である例えばページ単位に管理するものであり、小データを短期間保存する。ＩＳ１３は、ＦＳ１２から溢れたデータを「小さな単位」であるページ単位に管理するものであり、小データを長期間保存する。ＭＳ１１は、ＷＣ２１、ＦＳ１２、ＩＳ１３からのデータを「大きな単位」であるブロック単位で管理する。ＷＣ２１上で有効ページの多いブロック（高密度ブロック）は、ブロック単位にＷＣ２０ａから直接ＭＳ１１に書き込まれる。ＷＣ２１上で有効ページの少ないブロック（低密度ブロック）は、ＷＣ２０ａからページ単位にＦＳ１２に書き込まれる。
【００１８】
・メインストレージ領域（ＭＳ）１１
ＭＳ１１はブロック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。ＷＣ２１ａ上で有効ページの多いブロック（高密度ブロック）は、ＷＣ１２から直接ＭＳ１１に書き込まれる。その他、ＭＳ１１には、ＦＳ１２、ＩＳ１３で管理しきれなくなったデータが入力される。ＭＳ１１に入力されたブロックと同一ＬＢＡのブロックについては無効化し、このブロックを解放する。ＭＳ１１に入力されたブロックに含まれるデータと同一ＬＢＡを含むページについては、ＦＳ１２、ＩＳ１３内で無効化し、ブロック内の全ページが無効になったブロックは解放する。ＭＳでの１ブロックには、ＬＢＡのブロック境界でアラインされる連続したＬＢＡページアドレスが割り付けられる。これに対しＦＳ１２、ＩＳ１３では、ページ管理であるので、ＦＳ１２、ＩＳ１３の１ページに、ＬＢＡのページ境界でアラインされる連続したＬＢＡセクタアドレスが割当てられる。
【００１９】
・前段ストレージ領域（ＦＳ）１２
ＦＳ１２はページ単位でデータが管理されるＦＩＦＯ構造のバッファであり、入力もページ単位で行われる。ＦＳ１２には、ＷＣ２１上で有効ページ数の少ないブロック（低密度ブロック）が最初に書き込まれる。データの書き込み順序でブロックが並んだＦＩＦＯ構造となっている。ＦＳ１２に存在するページと同一ＬＢＡのページがＦＳ１２に入力された場合、ＦＳ１２内のページを無効化するだけでよく、書き換え動作を伴わない。ＦＳ１２に入力されたページと同一ＬＢＡのページについては、ブロック内で無効化し、ブロック内の全ページが無効になったブロックは解放する。ＦＳ１２のＦＩＦＯ構造の最後まで到達したブロックに格納されたページは、ホスト１から再書き込みされる可能性の低いページとみなし、ブロックごとＩＳ１３の管理下に移動する。更新頻度の高いデータはＦＳ１２を通過している最中に無効化され、更新頻度の低いデータだけがＦＳ１２から溢れていくため、更新頻度の高いデータと低いデータとをＦＳ１２で選り分けることができる。これにより、後段のＩＳ１３でコンパクションが頻繁に発生する可能性を低減させることが可能である。
【００２０】
・中段ストレージ領域（ＩＳ）１３
ＩＳ１３は、再書き込みされる可能性の低いページを格納するためのバッファであり、ＦＳ１２と同様にページ単位でデータの管理が行われる。ＩＳ１３に存在するページと同一ＬＢＡのページがＦＳ１２、ＩＳ１３に入力された場合、ＩＳ１３内のページを無効化するだけでよく、書き換え動作を伴わない。ＩＳ１３においては、ＦＳ１２と同様、データの書き込まれた順序（ＦＳ１２から移動された順序）が古いブロックから並んだリスト構造をとるが、コンパクションを行う点がＦＳ１２と異なる。ＩＳ１３の容量が飽和した場合、あるいはＦＳ１２、ＩＳ１３管理用のテーブルが飽和した場合は、コンパクション（ＩＳ１３から有効ページを集めてＩＳ１３へ書き戻すこと）やデフラグ（ＦＳ１２およびＩＳ１３のページをブロックに統合して、ＭＳ１１へ追い出すこと）を行う。
【００２１】
図４は、ブロック管理テーブル５０の構成例を示している。ブロック管理テーブルとは、ＭＳ１１に記憶されるデータを、ブロック単位で管理するものであり、ＬＢＡの論理ブロックアドレスとＮＡＮＤメモリ１０でのブロック記憶位置を示す物理ブロックアドレスとの対応関係が登録されて、各ブロックの有効／無効を示す無効フラグと、ＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグが付加されているものであれば、その構成は任意である。例えば、ブロック管理テーブル５０として、論理ブロックアドレスから物理ブロックアドレスを求める正引きテーブルを用意してもよいし、物理ブロックアドレスから論理ブロックアドレスを求める逆引きテーブルを用意してもよいし、両者を用意してもよい。さらに、双方向のリスト構造などを採用しても良い。
【００２２】
図４では、ブロック管理テーブル５０は、ＬＢＡの（ｓ＋ｔ＋１）ビット以上の上位アドレスによって構成される論理ブロックアドレス毎のエントリに、管理情報が登録されている。管理情報としては、当該論理ブロックアドレスに対応するＮＡＮＤメモリ１０でのデータの記憶位置を示す物理ブロックアドレスと、当該ブロックアドレスが無効か有効かを示す無効フラグと、ＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグなどを含む。無効フラグがオンであるブロックとは、同一ＬＢＡの最新データが他の場所に書きこまれ、参照されることがなくなったブロックのことをいう。なお、ＴＲＩＭフラグと無効フラグを同一フラグによって管理しても良い。
【００２３】
図５は、ページ管理テーブル６０の構成例を示している。図６は、他のページ管理テーブル６０の構成例を示している。ページ管理テーブルとは、ＦＳ１２およびＩＳ１３に記憶されるデータを、ページ単位で管理するものであり、ＬＢＡの論理ページアドレスとＮＡＮＤメモリ１０でのページ記憶位置を示す物理ブロックアドレスとそのブロック内ページ位置を示す情報との対応関係が記録されて、各ページの有効／無効を示す無効フラグと、各ページがＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグが付加されているものであれば、その構成は任意である。例えば、ページ管理テーブルとして、論理ページアドレスからＮＡＮＤメモリ内の記憶位置を求める正引きテーブルを用意してもよいし、ＮＡＮＤメモリ内の記憶位置から論理ページアドレスを求める逆引きテーブルを用意してもよいし、両者を用意してもよい。さらに、双方向のリスト構造などを採用しても良い。ただし、ＭＳ１１に関しても、ＴＲＩＭコマンドが入力された場合、必要に応じて、ページ管理テーブルを作成し、必要が無くなった場合にページ管理テーブルを解放する。
【００２４】
図５では、ページ管理テーブル６０は、ＬＢＡの下位（ｓ＋１）ビット目から上位のビット列で構成される論理ページアドレス毎のエントリに、管理情報が登録されている。管理情報としては、当該ページアドレスに対応する最新のデータがＭＳ１１、ＦＳ１２、ＩＳ１３の何れに記憶されているかを示す所属情報と、当該論理ページアドレスに対応するＮＡＮＤメモリ１０でのデータの記憶位置を示す物理アドレス情報としての物理ブロックアドレス＋ブロック内物理ページ位置と、当該ページアドレスが無効か有効かを示す無効フラグと、当該ページがＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグなどを含む。無効フラグがオンであるページとは、同一ＬＢＡの最新データが他の場所に書きこまれ、参照されることがなくなったページのことをいう。ページ管理テーブルにおいても、ＴＲＩＭフラグと無効フラグを同一フラグによって管理しても良い。
【００２５】
図６では、ページ管理テーブル６０は、複数の物理ブロックアドレスについてのブロックエントリを有し、ブロックエントリ毎に、物理ブロック内のページ数分（２のｔ乗個）のページエントリを有している。各ページエントリには、ＬＢＡの論理ページアドレスと、当該ページアドレスが無効か有効かを示す無効フラグ、当該ページがＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグなどを含む管理情報が記録される。この図６のページ管理テーブル６０では、ブロックエントリ内の記憶位置で、物理ブロック内物理ページアドレスを管理している。例えば、論理ページアドレスＡのデータは、物理ブロックアドレスＸのページ０に記憶され、論理ページアドレスＤのデータは、物理ブロックアドレスＹのページ１に記憶されていることを示している。以下の、説明では、ＭＳ１１用のページ管理テーブルを作成する際には、図６に示すようなページ管理テーブルを作成するとする。
【００２６】
図７は、物理ブロック管理テーブル７０の構成例を示している。物理ブロック管理テーブル７０は、ＮＡＮＤメモリ１０での物理ブロックの使用状況を管理する。物理ブロック管理テーブル７０は、物理ブロックアドレス毎のエントリに、管理情報として、ブロックの使用状況（ブロックがＭＳ１１、ＦＳ１２，ＩＳ１３の何れで使用されているかまたは未使用か）を記憶する。ブロックが未使用とは、ブロックがフリーブロックであることを意味する。
【００２７】
ＮＡＮＤメモリ１０を管理するためのブロック管理テーブル５０、ページ管理テーブル６０、物理ブロック管理テーブル７０などの管理情報は、ＲＡＭ２０の管理情報記憶部２２で管理される。また、ＲＡＭ２０の管理情報記憶部２２で管理される管理情報をバックアップするために、定期的又は任意のタイミングでＮＡＮＤメモリ１０の管理情報記憶部１４に記憶して不揮発化している。
【００２８】
第１の実施の形態では、ＴＲＩＭ領域をブロック単位とページ単位との２段階で管理することにより、ページ単位のＴＲＩＭ要求にも対応しブロックの解放を行う。また、ＮＡＮＤメモリ１０にアクセスすることなく管理テーブルを操作することによってＴＲＩＭコマンドに対応する。ここで、前述したように、ＮＡＮＤメモリ１０のＦＳ１２、ＩＳ１３では、ページ単位の管理を行っているので、ＦＳ１２、ＩＳ１３にページ単位のＴＲＩＭ要求があった場合は、ページ管理テーブル６０のＴＲＩＭフラグをオンにし、１つの物理ブロック内の全ての物理ページのデータが無効であるかあるいはＴＲＩＭ指定がなされた場合、すなわち例えば図６のページ管理テーブル６０の１つの物理アドレスについてのブロックエントリ中の全てのページエントリについての無効フラグまたはＴＲＩＭフラグがオンになった場合に、その時点でその物理ブロックをフリーブロックとして解放し、かつその解放するブロックに所属するページ管理テーブルのページエントリを解放する。
【００２９】
一方、ＭＳ１１はブロック管理しか行っていないので、ＭＳ１１にページ単位のＴＲＩＭ要求があった場合、ＴＲＩＭ要求があった時点で、ＭＳ１１用のページ管理テーブルを作成し、作成したページ管理テーブルの該当ページエントリのＴＲＩＭフラグをオンにする。ただし、ＭＳ１１では、基本的にブロック管理のみを行い、ＴＲＩＭ要求に関するページ管理しか行わないので、作成されるＭＳ１１用のページ管理テーブルでは、無効フラグの欄は、例えば、最初からオフ（有効）として作成するか、無効フラグの欄は参照せずにＴＲＩＭフラグの欄のみを参照するようにする。そして、１つの物理ブロック内の全ての物理ページのデータにＴＲＩＭ要求がなされた場合、すなわち例えば図６のページ管理テーブル６０の１つの物理アドレスについてのブロックエントリ中の全てのページエントリについてのＴＲＩＭフラグがオンになった場合に、その時点でその物理ブロックをフリーブロックとして解放し、かつその解放するブロックに所属するページ管理テーブルのページエントリを解放する。このようにブロックより小さいページ単位でもＴＲＩＭ管理することで、ＴＲＩＭコマンドでブロックを効率よくフリーブロックに解放するとともに、ＮＡＮＤメモリ１０の全ての記憶領域に関するページ管理テーブルを持つ場合に比べ、ＲＡＭ２０の管理情報記憶部２２およびＮＡＮＤメモリ１０の管理情報記憶部１４でのテーブル容量を削減する。
【００３０】
なお、ＭＳ１１については、ブロック単位のＴＲＩＭ要求にのみ対応し、ページ単位のＴＲＩＭ要求には非対応としてもよい。また、ＭＳ１１については、ページ管理テーブルのサイズに上限値を設け、この上限値に達するまではページ管理テーブルを作成してページ単位のＴＲＩＭ要求に対応し、上限値を超えた後は、ページ単位のＴＲＩＭ要求には非対応としてもよい。
【００３１】
図１において、コントローラ３０は、コマンド解釈部３１、読み書き制御部３２、読み書き制御部３２、トリム領域判定部３３、管理テーブル管理部３４、デフラグ処理部３５、応答データ生成部３６を備える。
【００３２】
コマンド解釈部３１は、ホストＩ／Ｆ２を介してホスト１から受信したコマンドを解釈する。ホスト機器から送信されるコマンドには、データの読み出しを要求するコマンド、データの書き込みを要求するコマンド、前述のＴＲＩＭ（ＤＲＡＴ）コマンドなどが含まれる。コマンドには、ＬＢＡの論理セクタアドレスが含まれる。ＴＲＩＭ（ＤＲＡＴ）コマンドの場合は、開始論理セクタアドレス、サイズ（セクタ数）を含む。コマンド解釈部３１は、このようなコマンドを解釈し、当該コマンドに応じて、読み出し対象や書き出し対象のセクタアドレスや、ＴＲＩＭ（ＤＲＡＴ）対象の開始論理セクタアドレス、セクタ数などを適宜抽出する。
【００３３】
読み書き制御部３２は、コマンド解釈部３１の解釈結果に基づいて、キャッシュメモリ２１を介してホスト１とＮＡＮＤメモリ１０との間でデータ転送制御を実行する。具体的には、読み書き制御部３２は、キャッシュメモリ２１に対するホスト１からのデータの書き込み、キャッシュメモリ２１からホスト１へのデータの読み出し、ＮＡＮＤメモリ１０のＭＳ１１、ＦＳ１２、またはＩＳ１３からキャッシュメモリ２１へのデータ転送、キャッシュメモリ２１からＭＳ１１またはＦＳ１２へのデータ転送、ＦＳ１２からＩＳ１３へのデータ移動、ＩＳ１３からＭＳ１１へのデータ転送などを実行する。
【００３４】
トリム領域判定部３３は、ＴＲＩＭコマンドで指定されたトリム領域の容量などを判定する。具体的には、トリム領域判定部３３は、ＴＲＩＭコマンドで指定されたトリム領域が、１ブロック容量以上であるか否か、１ページ容量以上であるか否か、ブロック単位のアライン境界に合致しているか否か、ページ単位のアライン境界に合致しているか否かなどを判定する。
【００３５】
管理テーブル管理部３４は、前述したキャッシュ管理テーブル４０、ブロック管理テーブル５０、ページ管理テーブル６０、物理ブロック管理テーブル７０などを含む管理テーブルの更新制御を実行する。管理テーブル管理部３４は、機能的には、ブロック管理部３４ａ、ページ管理部３４ｂ、セクタ管理部３４ｃ、解放制御部３４ｄを備える。ブロック管理部３４ａは、ＮＡＮＤメモリ１０についてブロック単位の管理を実行する。ページ管理部３４ｂは、ＮＡＮＤメモリ１０についてページ単位の管理を実行する。セクタ管理部３４ｃは、ＮＡＮＤメモリ１０についてセクタ単位の管理を実行する。解放制御部３４ｄは、全てのセクタまたはページがトリム指定されたブロックをフリーブロックに解放する制御を実行する。
【００３６】
デフラグ処理部３５は、ページ管理テーブルのためのリソースを確保するためのデフラグ処理を実行する。すなわち、管理テーブル管理部３４によりＲＡＭ２０とＮＡＮＤメモリ１０にページ管理テーブルを記憶するためのリソースがあるか否かが判定され、リソースがないと判定された場合に、デフラグ処理部３５がデフラグ処理を実行する。デフラグ処理とは、ＦＳ１２あるいはＩＳ１３のページデータをブロックに統合して、ＭＳ１１に追い出す処理をいう。このデフラグ処理により、ページ管理テーブルのページエントリが削減され、結果的に、ＲＡＭの管理情報記憶部２２およびＮＡＮＤメモリ１０の管理情報記憶部１４で、ページ管理テーブルを作成するためのリソースが確保される。
【００３７】
応答データ生成部３６は、第２の実施の形態で使用されるものであり、リードコマンドがＤＲＡＴコマンドで指定されたセクタアドレスになされた場合に、所定の応答データを生成して読み書き制御部３２に渡す処理を実行する。応答データとしては、例えば、特定の定数(例えば「0」など)や、乱数などがある。また、コマンド解釈部３１が抽出したセクタアドレスに対応する物理アドレスに記憶されているデータを応答データとしても良い。この場合、応答データ生成部３６は、ＮＡＮＤメモリ１０にアクセスして、当該物理アドレスに記憶されているデータを読み出す。
【００３８】
つぎに、図８に示すフローチャートに従って、第１の実施形態のＴＲＩＭ対応処理について説明する。
【００３９】
まず、ホストから開始セクタアドレス、セクタ数を含むＴＲＩＭコマンドが入力されると、このＴＲＩＭコマンドはコマンド解釈部３１によって解釈される。トリム領域判定部３３は、コマンド解釈部３１の解釈結果に基づき、当該ＴＲＩＭコマンドが１ブロック容量以上の領域に対するものであるか否かを判定する（ステップＳ１００）。トリム領域判定部３３は、ＴＲＩＭコマンドが１ブロック容量以上の領域を要求していると判定した場合には、つぎに、このＴＲＩＭ領域中に、ＴＲＩＭ範囲がブロック単位でアラインされるアドレス境界に完全に合致するブロックがＭＳ１１に１個以上含まれているか否かを判定する（ステップＳ１０５）。
【００４０】
図９は、ブロック単位のアライン境界とＴＲＩＭコマンドで指定されるＬＢＡセクタアドレスとの関係を示している。図９（ａ）の場合は、ブロック単位でアラインされるアドレス境界に完全に合致する２個のブロック（２個の合致領域として図示）を含み、端数領域が存在しないＬＢＡ指定がなされたことを示している。図９（ｂ）の場合は、ブロック単位でアラインされるアドレス境界に完全に合致する１個のブロックを含み（１個の合致領域として図示）、かつページまたはセクタ単位でしかアラインできない端数領域を含むＬＢＡ指定がなされたことを示している。図９（ｃ）の場合は、ＬＢＡ指定は１ブロック容量以上であるが、このＬＢＡ指定には、ページまたはセクタ単位でしかアラインできない端数領域のみしか存在しない場合を示している。
【００４１】
ステップＳ１０５の判断がＹＥＳとなるのは、例えば、図９（ａ）や図９（ｂ）の場合であり、ステップＳ１０５の判断がＮＯとなるのは、例えば、図９（ｃ）の場合である。ステップＳ１０５の判断がＮＯの場合は、ブロック管理は実行不可能なので、手順をステップＳ１３０に移行させ、ページ管理を行う。ステップＳ１０５の判断がＹＥＳの場合、管理テーブル管理部３４はブロック単位でアラインされるアドレス境界に完全に合致するブロック（合致領域）については、ブロック管理テーブル５０の対応する論理ブロックアドレスのエントリのＴＲＩＭフラグをオンにする（ステップＳ１１０）。
【００４２】
また、管理テーブル管理部３４は、ページ管理テーブル６０を検索することで、ブロック管理テーブル５０のＴＲＩＭフラグをオンにした合致ブロックに記憶されたデータと同じ論理ページアドレスを持つ有効データがＦＳ１２、ＩＳ１３に存在するか否かを検索する（ステップＳ１１５）。管理テーブル管理部３４は、存在すると判定した場合、ページ管理テーブル６０の対応するページエントリのＴＲＩＭフラグをオンにする。（ステップＳ１２０）。また、ステップＳ１１５の判断で、存在しないと判定した場合は、手順をステップＳ１２５に移行させる。
【００４３】
つぎに、トリム領域判定部３３は、今回のＴＲＩＭ指定で、端数領域が存在するか否かを判定し（ステップＳ１２５）、端数領域が存在しない場合は、手順をステップＳ３００に移行させ、また端数領域が存在する場合は、手順をステップＳ１３０に移行させて、ページ管理を行う。
【００４４】
ステップＳ１３０において、トリム領域判定部３３は、ＴＲＩＭ領域が１ページ容量以上あるか否かを判定する。ステップＳ１３０の判定対象としてのＴＲＩＭ領域は、ＴＲＩＭコマンド自体の要求領域が１ページ容量以上で１ブロック容量未満の場合と（ステップＳ１００の判断がＮＯ）、図９（ｃ）に示したようにステップＳ１０５の判断がＮＯとなる場合と、図９（ｂ）に示したように、ステップＳ１２５の判断がＹＥＳとなる場合がある。
【００４５】
トリム領域判定部３３は、ステップＳ１３０の判断がＹＥＳの場合、ＴＲＩＭ領域に、ページ単位でアラインされるアドレス境界に完全に合致するページを１個以上含むか否かを判定する（ステップＳ１３５）。
【００４６】
この第１の実施の形態では、１ページ容量未満のセクタでしかアラインできない端数領域は、ＴＲＩＭ対象としないので、ステップＳ１３０の判断がＮＯとなった場合、あるいはステップＳ１３５の判断がＮＯとなった場合は、手順をステップＳ３００に移行させる。ステップＳ１３５の判断がＹＥＳの場合、管理テーブル管理部３４は、ページ単位でアラインされるアドレス境界に完全に合致するページについては、ページ管理テーブル６０に全てのページエントリが存在するか否かを判定する（ステップＳ１４０）。ページ管理テーブル６０に全てのページエントリが存在するということは、ＴＲＩＭ対象の有効ページがＦＳ１２またはＩＳ１３に記憶されている第１のケースと、ＴＲＩＭ対象の有効ページが含まれるＭＳ１１用の１ブロック分のページエントリが既に作成されている第２のケースと、第１および第２の双方のケースが発生する第３のケースがある。また、ページ管理テーブル６０に全てのページエントリが存在しない場合とは、ＭＳ１１用の１ブロック分のページエントリを新たに作成する必要が有る場合である。
【００４７】
ステップＳ１４０の判断がＹＥＳの場合、管理テーブル管理部３４は、ページ管理テーブル６０におけるＴＲＩＭ領域に対応するページアドレスのエントリのＴＲＩＭフラグをオンにする（ステップＳ１６０）。
【００４８】
一方、ステップＳ１４０の判断がＮＯの場合、管理テーブル管理部３４は、ＲＡＭ２０とＮＡＮＤメモリ１０にページ管理テーブルを記憶するためのリソースがあるか否かを判定し（ステップＳ１４５）、リソースがないと判定した場合は、デフラグ処理部３５がデフラグ処理を実行し（ステップＳ１５０）、ＮＡＮＤメモリ１０およびＲＡＭ２０にページ管理テーブルを記憶するためのリソースを確保する。デフラグ処理とは、前述したように、ＦＳ１２あるいはＩＳ１３のページデータをブロックに統合して、ＭＳ１１に追い出す処理であり、このデフラグ処理により、ページ管理テーブルのページエントリが削減され、結果的に、ＲＡＭの管理情報記憶部２２およびＮＡＮＤメモリ１０の管理情報記憶部１４で、ページ管理テーブルを作成するためのリソースが確保される。
【００４９】
管理テーブル管理部３４は、ステップＳ１４５の判断がＹＥＳとなった場合、あるいはステップＳ１５０でＮＡＮＤメモリ１０のデフラグを実行した後、ページ単位でアラインされるアドレス境界に完全に合致する全てのページに関し、ページ管理テーブル６０にページエントリを作成する（ステップＳ１５５）。そして、管理テーブル管理部３４は、ページ管理テーブル６０にページエントリを作成後、ページ管理テーブル６０におけるＴＲＩＭ領域に対応するページアドレスのエントリのＴＲＩＭフラグをオンにする（ステップＳ１６０）。
【００５０】
つぎに、管理テーブル管理部３４は、ブロック管理テーブル５０からＴＲＩＭフラグがオンの物理ブロックを抽出することで、ＮＡＮＤメモリ１０のＭＳ１１から全物理ページがＴＲＩＭである物理ブロックを抽出する（ステップＳ３００）。さらに、管理テーブル管理部３４は、ページ管理テーブル６０の無効フラグおよびＴＲＩＭフラグを参照することにより、ＮＡＮＤメモリ１０のＭＳ１１、ＦＳ１２、またはＩＳ１３から全物理ページが無効またはＴＲＩＭである物理ブロックを抽出する（ステップＳ３００）。別言すれば、ページ管理テーブル６０から全ての物理ページが無効フラグがオンであるかまたはＴＲＩＭフラグがオンである物理ブロックを抽出する。
【００５１】
そして、管理テーブル管理部３４は、抽出された物理ブロックに対応する物理ブロック管理テーブル７０のエントリを未使用にすることで、抽出された物理ブロックをフリーブロックとして解放する（ステップＳ３１０）。ただし、前述したように、ＭＳ１１用に作成したページ管理テーブル６０のページエントリでは、ページ単位の無効／有効を管理しておらず、ステップＳ３００でＭＳ１１用のページ管理テーブル６０の無効フラグを参照するようにする場合は、ＭＳ１１用のページ管理テーブル６０の無効フラグは全ページオフ（有効）として作成する。また、ＭＳ１１用のページ管理テーブル６０と、ＦＳ１２、ＩＳ１３用のページ管理テーブル６０とを識別可能とし、ＭＳ１１用のページ管理テーブル６０と、ＦＳ１２、ＩＳ１３用のページ管理テーブル６０とを別管理するようにしてもよい。ＭＳ１１用のページ管理テーブル６０の場合は、無効フラグの欄を設けないようにしてもよいし、ステップＳ３００で無効フラグの欄は参照せずにＴＲＩＭフラグの欄のみを参照するようにしてもよい。また、ＭＳ１１用のページ管理テーブル６０の場合、論理ページアドレスとＴＲＩＭフラグとの関係が識別できればよい。
【００５２】
つぎに、管理テーブル管理部３４は、解放可能なページ管理テーブルのページエントリが有るか否かを判断する（ステップＳ３２０）。この場合に、解放可能なページ管理テーブルのページエントリとは、全てが無効かあるいはＴＲＩＭ指定がされているページエントリを含む図６に示すような物理ブロック単位のページエントリのことをいう。管理テーブル管理部３４は、解放可能なページ管理テーブルが有る場合に、ステップＳ３１０で解放した物理ブロックに対応するページ管理テーブル６０のページエントリを全て解放（削除）する（ステップＳ３３０）。例えば、図６のページ管理テーブルにおいて、物理ブロックアドレスＸに所属する各ページエントリの無効フラグまたはＴＲＩＭフラグが“１”になって物理ブロックアドレスＸの物理ブロックが解放された場合、この物理ブロックアドレスＸに所属する各ページエントリを削除する。
【００５３】
例えば、図９（ａ）に示すようなＬＢＡアドレスのＴＲＩＭ要求がＭＳ１１の記憶領域に対してなされた場合、ステップＳ１０５がＹＥＳとなり、ステップＳ１１０でブロックアライン境界に合致する２つの合致ブロックに対するブロック管理テーブル５０のＴＲＩＭフラグがオンにされる。また、ステップＳ１１５がＮＯまたはＹＥＳ、ステップＳ１２５がＮＯとなり、ステップＳ３００でブロック管理テーブル５０のＴＲＩＭフラグが参照されることで、ステップＳ３１０で少なくとも２つのブロックが解放される。少なくともと言ったのは、ステップＳ１２０でのＴＲＩＭフラグのオンにより、ＦＳ１２，ＩＳ１３で解放されるブロックが存在する可能性があるためである。この場合は、ＭＳ１１で解放されたブロックに対応するページ管理テーブル６０は、存在していないので、ステップＳ３２０がＮＯとなり、ページ管理テーブルの解放はない。
【００５４】
図９（ｂ）に示すようなＬＢＡアドレスのＴＲＩＭ要求がＭＳ１１の記憶領域に対してなされた場合、ステップＳ１０５がＹＥＳとなり、ステップＳ１１０でブロックアライン境界に合致する１つの合致ブロックに対するブロック管理テーブル５０のＴＲＩＭフラグがオンにされる。その後、ステップＳ１１５がＮＯまたはＹＥＳ、ステップＳ１２５がＹＥＳとなる。また、ここでは、ステップＳ１３０がＹＥＳ、ステップＳ１３５がＹＥＳとなるとする。ここでは、図９（ｂ）に示す端数領域に対応するＴＲＩＭ要求は初めてだとするので、ステップＳ１４０がＮＯとなり、端数領域に対応するページエントリを含む１ブロック分のページエントリが作成された後、ステップＳ１６０でページ管理テーブル６０の端数領域に対応する全てのページエントリのＴＲＩＭフラグがオンにされる。すなわち、ステップＳ１６０では、端数領域に対応する有効データがＦＳ１２、ＩＳ１３に存在するか否かが検索され、端数領域に対応する有効データがＦＳ１２、ＩＳ１３に少なくとも１つ存在する場合は、ＦＳ１２、ＩＳ１３用のページ管理テーブルの該当するページエントリのＴＲＩＭフラグをオンとするとともに、ステップＳ１５５で作成した１ブロック分のページエントリ中の端数領域に対応するページエントリのＴＲＩＭフラグがオンにされる。そして、ステップＳ３００でブロック管理テーブル５０が参照されることで、ステップＳ３１０で少なくとも１つのブロックが解放される。この場合は、ＭＳ１１で解放されたブロック（合致領域）に対応するページ管理テーブル６０は、存在しないので、ステップＳ３２０がＮＯとなり、ページ管理テーブルの解放はない。
【００５５】
ここで、その後、図９（ｄ）に示すようなＬＢＡアドレスのＴＲＩＭ要求がＭＳ１１の記憶領域に対してなされたとする。この場合は、ステップＳ１００がＮＯとなり、ステップＳ１３０がＹＥＳ、ステップＳ１３５がＹＥＳとなる。この場合は、図９（ｂ）でのＴＲＩＭ処理を行った際にページ管理テーブルのα領域のエントリは既に作成されているが、β領域を含む１ブロック分のページエントリは存在しないので、ステップＳ１４０の判断がＮＯとなり、β領域を含む１ブロック分のページ管理テーブルが新たに作成される。そして、ステップＳ１６０において、既に作成されているＭＳ１１用の１ブロック分のページエントリ中の残りのページエントリ（α領域）のＴＲＩＭフラグがオンにされ、さらに新たに作成された１ブロック分のページエントリ中のβ領域に対応するページエントリのＴＲＩＭフラグがオンにされる。また、ステップＳ１６０においては、今回ＬＢＡ指定された領域（α＋β領域）に対応する有効データがＦＳ１２、ＩＳ１３に存在するか否かが検索され、（α＋β領域）に対応する有効データがＦＳ１２、ＩＳ１３に少なくとも１つ存在する場合は、ＦＳ１２、ＩＳ１３用のページ管理テーブルの該当するページエントリのＴＲＩＭフラグをオンとする。したがって、ステップＳ３００で、ページ管理テーブル６０が参照されることで、ステップＳ３１０で少なくとも１つのブロック（α領域を含むブロック）が解放される。この場合は、ＭＳ１１で解放されたブロックに対応するページ管理テーブル６０が存在するので、ステップＳ３２０がＹＥＳとなり、ステップＳ３３０で、解放されたブロックに対応するページ管理テーブルが解放される。
【００５６】
図１０は、第１の実施の形態のブロック解放、ページ管理テーブルの解放を概念的に示す図であり、ＴＲＩＭ済みであるページをページ管理テーブルに順次登録しておき、全てのページがＴＲＩＭ対象となった時点で、ブロック解放、ページ管理テーブルの解放が行われることが示されている。
【００５７】
このように第１の実施の形態では、ＴＲＩＭコマンドをブロック単位とページ単位との２段階で管理し、ページ単位のＴＲＩＭ要求にも対応してブロックをフリーブロックとして解放しているので、フリーブロックとして解放されるブロックが増加する。これにより、静的ウェアレベリングの対象ブロックとしてのフリーブロックが増加し、動的ウェアレベリングの対象ブロックが減少するので、ＳＳＤの寿命延長にも寄与し、さらに高速書き込み処理にもつながる。
【００５８】
すなわち、ＮＡＮＤ型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリであり、その寿命は、書き換え回数に依存している。一方、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際にホスト機器から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、ＮＡＮＤ型フラッシュメモリでは、ブロック間での書き換え回数を平均化させるウェアレベリングと呼ばれる処理が行われている。ウェアレベリング制御には、書き換え回数の少ないブロックから書き込み・消去を行う静的ウェアレベリングと、書き換えが長い間行われず書き換え回数の少ないブロックを書き換え回数の多いブロックと交換する動的ウェアレベリングとがある。動的ウェアレベリングの場合は、ブロックの交換とは言っても、実際にはブロックに対する書き込みが発生する。したがって、ＴＲＩＭコマンドによって解放されないブロックは、動的ウェアレベリングの対象になり、無駄な書き込みが発生する。しかし、ＴＲＩＭコマンドによってフリーブロックに解放された場合は、動的ウェレベリングの対象にならず、無駄な書き込みが発生しない。
【００５９】
また、ＴＲＩＭコマンドによって解放されないブロックの一部領域に対し更新書き込みが発生した場合、ブロックの一部領域以外の領域を読みだして、読み出した領域のデータと、更新書き込みされたデータをマージして他のブロックに書き込むといった処理を行う。ＴＲＩＭコマンドによってブロックが解放されている場合は、読み出し処理は発生せず、更新書き込みされたデータの書き込みのみで済む。したがって、ＴＲＩＭコマンドによって効率よくブロックをフリーブロックに解放することは、高速書き込みにつながる。
【００６０】
なお、ページ管理テーブルの代わりにセクタ管理テーブルを設け、通常ＴＲＩＭをセクタ単位まで対応させるようにしてもよい。
【００６１】
（第２の実施の形態）
第２の実施形態では、ＴＲＩＭコマンドを、ブロック単位とページ単位とセクタ単位の３段階で管理することにより、ＤＲＡＴに対応させる。なお、ブロック単位の管理を行うブロック管理テーブルと、セクタ単位の管理を行うセクタ管理テーブルとの２段階の管理で、ＤＲＡＴに対応させるようにしてもよい。また、各ページに所属する各セクタの有効／無効を示す図３に示したようなセクタフラグをページ管理テーブルに付随させることで、ＤＲＡＴに対応させるようにしてもよい。
【００６２】
第２の実施形態では、例えば、図１１に示すようなセクタ管理テーブル８０を追加している。セクタ管理テーブルとは、ＭＳ１１、ＦＳ１２およびＩＳ１３に記憶されるデータを、セクタ単位で管理するものであり、ＬＢＡの論理セクタアドレスとＮＡＮＤメモリ１０でのセクタ記憶位置を示す物理ページアドレスとそのページ内セクタ位置を示す情報との対応関係が記録されて、各セクタの有効／無効を示す無効フラグと、各セクタがＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグが付加されているものであれば、その構成は任意である。例えば、セクタ管理テーブルとして、論理セクタアドレスからＮＡＮＤメモリ内の記憶位置を求める正引きテーブルを用意してもよいし、ＮＡＮＤメモリ内の記憶位置から論理セクタアドレスを求める逆引きテーブルを用意してもよいし、両者を用意してもよい。さらに、双方向のリスト構造、前述したページ管理テーブルに付随させるセクタフラグなどを採用しても良い。
【００６３】
図１１では、セクタ管理テーブル８０は、複数の物理ページアドレスについてのページエントリを有し、ページエントリ毎に、物理ページ内のセクタ数分（２のｓ乗個）のセクタエントリを有している。各セクタエントリには、ＬＢＡの論理セクタアドレスと、当該セクタアドレスが無効か有効かを示す無効フラグ、当該セクタがＴＲＩＭ指定ありか否かを示すＴＲＩＭフラグなどを含む管理情報が記録される。この図１１のセクタ管理テーブル８０では、ページエントリ内の記憶位置で、物理ページ内物理セクタアドレスを管理している。例えば、論理セクタアドレスＡのデータは、物理ページアドレスＸのページ０に記憶され、論理セクタアドレスＤのデータは、物理ページアドレスＹのページ１に記憶されていることを示している。無効フラグがオンであるセクタとは、同一ＬＢＡの最新データが他の場所に書きこまれ、参照されることがなくなったセクタのことをいう。セクタ管理テーブルにおいても、ＴＲＩＭフラグと無効フラグを同一フラグによって管理しても良い。
【００６４】
ただし、セクタ管理テーブル８０は、ＤＲＡＴ要求を受信するまでは作成されておらず、ＤＲＡＴ要求を受信後に作成されて、必要に応じて解放（削除）されるものとする。
【００６５】
つぎに、図１２に示すフローチャートに従って、第２の実施形態のＤＲＡＴ対応処理について説明する。図１２のフローチャートは、図８のフローチャートに対し、ステップＳ１９０〜ステップＳ２４０を追加し、図８のステップＳ３００〜Ｓ３３０をステップＳ４００〜ステップＳ４５０に置換しており、重複する説明は省略する。
【００６６】
図１２のステップＳ１９０においては、ページ単位のアライン境界に対する端数領域があるか否かを判定している。図１２において、ステップＳ１３０の判断がＮＯとなった場合、ステップＳ１３５の判断がＮＯとなった場合、ステップＳ１９０の判断がＹＥＳとなった場合には、当該ＴＲＩＭ領域についてのセクタ管理テーブル８０のエントリが存在するか否かを判定する（ステップＳ２００）。セクタ管理テーブル８０において所要のセクタエントリが存在する場合、管理テーブル管理部３４は、セクタ管理テーブル８０の対応するセクタアドレスのエントリのＴＲＩＭフラグをオンにする（ステップＳ２４０）。
【００６７】
一方、ステップＳ２００でセクタ管理テーブルに所要のセクタエントリが存在しないと判定された場合、管理テーブル管理部３４は、ＲＡＭ２０とＮＡＮＤメモリ１０にセクタ管理テーブルを記憶するためのリソースがあるか否かを判定し（ステップＳ２１０）、リソースがないと判定した場合は、デフラグ処理部３５がデフラグ処理を実行し（ステップＳ２２０）、ＮＡＮＤメモリ１０およびＲＡＭ２０にセクタ管理テーブルを記憶するためのリソースを確保する。すなわち、デフラグ処理により、ページ管理テーブルのページエントリが削減され、結果的に、ＲＡＭの管理情報記憶部２２およびＮＡＮＤメモリ１０の管理情報記憶部１４で、セクタ管理テーブルを作成するためのリソースが確保される。
【００６８】
管理テーブル管理部３４は、ステップＳ２１０の判断がＹＥＳとなった場合、あるいはステップＳ２２０でＮＡＮＤメモリ１０のデフラグを実行した後、ＴＲＩＭ領域に対応するセクタエントリを作成する（ステップＳ２３０）。そして、管理テーブル管理部３４は、セクタ管理テーブル８０にセクタエントリを作成後、セクタ管理テーブル８０の対応するセクタアドレスのエントリのＴＲＩＭフラグをオンにする（ステップＳ２４０）。
【００６９】
ステップＳ４００においては、ブロック管理テーブル５０、ページ管理テーブル６０、セクタ管理テーブル８０のいずれか、あるいは２つ以上を参照することにより、所属する全セクタが無効かあるいはＴＲＩＭ指定がなされている物理ブロックを抽出し、抽出した物理ブロックを前記同様にして解放する（ステップＳ４１０）。
【００７０】
つぎに、管理テーブル管理部３４は、前記同様、解放可能なページ管理テーブルが有るか否かを判断する（ステップＳ３２０）。管理テーブル管理部３４は、解放するページ管理テーブルが有る場合に、ステップＳ３１０で解放した物理ブロックに対応するページ管理テーブル６０のページエントリを全て解放（削除）し、かつＤＲＡＴに対応可能にするため、解放した物理ブロックに対応するブロック管理テーブル５０のエントリのＴＲＩＭフラグをオンにする（ステップＳ４３０）。
【００７１】
つぎに、管理テーブル管理部３４は、解放可能なセクタ管理テーブルが有るか否かを判断する（ステップＳ４４０）。解放可能なセクタ管理テーブルとは、全てが無効かあるいはＴＲＩＭ指定がされているセクタエントリを含む物理ページ単位のセクタエントリのことをいう。例えば、図１１のセクタ管理テーブルにおいて、物理ページアドレスＸに所属する各セクタエントリの無効フラグまたはＴＲＩＭフラグが“１”になって物理ページアドレスＸの物理ページを含む物理ブロックが解放された場合、この物理ページアドレスＸに所属する各セクタエントリを解放可能とする。管理テーブル管理部３４は、解放するセクタ管理テーブルが有る場合に、ステップＳ３１０で解放した物理ブロックに対応するセクタ管理テーブル８０のセクタエントリを全て解放（削除）し、かつＤＲＡＴに対応可能にするため、解放した物理ブロックに含まれる全物理ページに対応するページ管理テーブル６０のページエントリのＴＲＩＭフラグをオンにする（ステップＳ４５０）。
【００７２】
ただし、ＤＲＡＴをサポートする第２の実施の形態においては、トリム領域判定部３３は、ＴＲＩＭ指定された有効データがキャッシュメモリ２１（ＷＣ２１ａ、ＲＣ２１ｂ）にあるか否かも判定しており、ＴＲＩＭ指定された有効データがキャッシュメモリ２１にある場合は、キャッシュメモリ２１上の有効データを無効データにする処理を行っている。無効化処理では、例えば、図３のキャッシュ管理テーブル４０において、ＴＲＩＭ領域に含まれるセクタのセクタフラグを無効データとする。
【００７３】
ホスト１からリード要求コマンドが入力された場合は、コマンド解釈部３１でコマンドを解釈し、リード対象領域をブロック管理テーブル５０、ページ管理テーブル６０、セクタ管理テーブル８０の各エントリから検索し、リード対象領域に対応するエントリ中のＴＲＩＭフラグがオンであった場合は、応答データ生成部３６を起動して所定の応答データを生成して読み書き制御部３２に渡し、読み書き制御部３２によって所定の応答データをホスト１に出力する。
【００７４】
このように第２の実施の形態では、管理テーブルによってＴＲＩＭ領域をブロック単位とページ単位とセクタ単位の３段階で管理することにより、ＤＲＡＴに対応させるようにしたので、ＤＲＡＴサポート時の処理の高速化、記憶装置の寿命延長につながる。
【００７５】
なお、第１、第２の実施形態では、管理単位を、ページ、ブロックとしたが、ＭＳ１１の管理単位はブロック以下の管理単位でページより大きい管理単位であれば任意である。また、ＦＳ１２、ＩＳ１３での管理単位は、セクタ以上で、ＭＳ１１での管理単位よりも小さい管理単位であれば、任意である。ＭＳ１１の管理単位がブロックより小さい場合は、ＭＳ１１においては、その管理単位が全てＴＲＩＭ指定されたブロックを解放することになる。また、ＴＲＩＭ指定の有無をＴＲＩＭフラグで識別するようにしたが、データ自体をＮＵＬＬデータにするなど他の手法を採用するようにしてもよい。また、ページ管理されるＦＳ１２、ＩＳ１３の何れか一方を削除するような実施も可能である。
【００７６】
（第３の実施の形態）
図１３は、ＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えており、このようなパーソナルコンピュータ１２００からＳＳＤ１００に対し前述のＴＲＩＭコマンドが出力される。
【００７７】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００７８】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００７９】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００８０】
図１４は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【００８１】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００８２】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００８３】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００８４】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス１３１４等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００８５】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＤＲＡＭから構成される。
【００８６】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００８７】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【００８８】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【００８９】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【００９０】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【００９１】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００９２】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【００９３】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、以上のように表わしかつ記述した特定の詳細及び代表的な実施形態に限定されるものではない。したがって、添付のクレーム及びその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【００９４】
１  ホスト装置、２  ホストインタフェース、１０  ＮＡＮＤメモリ、１１  ＭＳ、１２  ＦＳ、１３  ＩＳ、２０  ＲＡＭ、２１  キャッシュメモリ、３０  コントローラ、３１  コマンド解釈部、３３  トリム領域判定部、３４  管理テーブル管理部、３５  デフラグ処理部、３６  応答データ生成部、４０  キャッシュ管理テーブル、５０  ブロック管理テーブル、６０  ページ管理テーブル、７０  物理ブロック管理テーブル、８０  セクタ管理テーブル。
【図１】
2011128998.tif 000003
【図２】
2011128998.tif 000004
【図３】
2011128998.tif 000005
【図４】
2011128998.tif 000006
【図５】
2011128998.tif 000007
【図６】
2011128998.tif 000008
【図７】
2011128998.tif 000009
【図８】
2011128998.tif 000010
【図９】
2011128998.tif 000011
【図１０】
2011128998.tif 000012
【図１１】
2011128998.tif 000013
【図１２】
2011128998.tif 000014
【図１３】
2011128998.tif 000015
【図１４】
2011128998.tif 000016
【図１５】
2011128998.tif 000017