(57)【要約】【課題】コマンド応答速度および書き込み効率が改善される半導体記憶装置を提供すること。【解決手段】キャッシュメモリとしての第１の記憶部と、ページ単位で読み出し及び書き込みが行われ、ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、第２及び第３の記憶部に割り当てるコントローラとを備え、コントローラは、不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、ホストから整理状態通知要求が入力されると、整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部とを備える。【選択図】図１８
2012008651.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリとしての第１の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、
前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部に割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを第１の記憶部に書き込む書き込み制御部と、
前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第２の記憶部に追い出し、前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第３の記憶部に追い出すフラッシュ制御部と、
前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、
ホストから整理状態通知要求が入力されると、前記整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部と、
を備えることを特徴とする半導体記憶装置。
【請求項２】
前記整理部は、ホストから整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記閾値を越えている場合に、前記整理を実行することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記整理部は、ホストから整理中止要求が入力されたとき、前記整理を中止することを特徴とする請求項２に記載の半導体記憶装置。
【請求項４】
前記閾値は、第１の閾値およびこの第１の閾値より小さな第２の閾値を有し、
前記不揮発性半導体メモリのリソース使用量が前記第１の閾値を越えている場合は、前記リソース使用量が前記第１の閾値以下になるまで、前記整理を実行し、
前記不揮発性半導体メモリがアイドル時に、前記不揮発性半導体メモリのリソース使用量が前記第２の閾値を越えている場合は、前記リソース使用量が前記第２の閾値以下になるまで、前記整理を実行することを特徴とする請求項１に記載の半導体記憶装置。
【請求項５】
前記閾値は、第１の閾値およびこの第１の閾値より小さな第２の閾値を有し、
前記整理部は、ホストから第１のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第１の閾値を越えている場合は、前記リソース使用量が前記第１の閾値以下になるまで、前記整理を実行し、
ホストから第２のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第２の閾値を越えている場合は、前記リソース使用量が前記第２の閾値以下になるまで、前記整理を実行することを特徴とする請求項２に記載の半導体記憶装置。
【請求項６】
前記不揮発性半導体メモリの前記リソース使用量は、前記第２の記憶部に所属する論理ブロック数についてのリソース使用量、前記第３の記憶部に所属する論理ブロック数についてのリソース使用量、前記第２の記憶部に記憶された前記第１の管理単位のデータを管理する管理テーブルについてのリソース使用量のうちの少なくとも１つを含むことを特徴とする請求項１〜５の何れか一つに記載の半導体記憶装置。
【請求項７】
前記整理部は、第２の記憶部に所属する論理ブロック数が前記閾値を超えているとき、前記第２の記憶部に記憶された複数のデータを前記第２の管理単位のデータとして前記第３の記憶部に追い出す前記整理を実行することを特徴とする請求項６に記載の半導体記憶装置。
【請求項８】
前記整理部は、第２の記憶部に所属する論理ブロック数が前記閾値を超えているとき、前記第２の記憶部に記憶された前記第１の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す前記整理を実行することを特徴とする請求項６に記載の半導体記憶装置。
【請求項９】
前記整理部は、第３の記憶部に所属する論理ブロック数が前記閾値を超えているとき、前記第３の記憶部に記憶された前記第２の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す前記整理を実行することを特徴とする請求項６に記載の半導体記憶装置。
【請求項１０】
前記整理部は、前記管理テーブルについての前記不揮発性半導体メモリのリソース使用量が前記閾値を超えているとき、前記第２の記憶部に記憶された複数のデータを前記第２の管理単位のデータとして前記第３の記憶部に追い出す前記整理を実行することを特徴とする請求項６に記載の半導体記憶装置。
【請求項１１】
前記整理部は、前記管理テーブルについての前記不揮発性半導体メモリのリソース使用量が前記閾値を超えているとき、前記第２の記憶部に記憶された前記第１の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す前記整理を実行することを特徴とする請求項６に記載の半導体記憶装置。
【請求項１２】
前記第２の記憶部は、第１の記憶部から追い出された複数のデータが書き込まれる第４の記憶部と、第４の記憶部に記憶された複数のデータが論理ブロック単位で移動される第５の記憶部とを含み、
前記整理部は、第４の記憶部に所属する論理ブロック数が前記閾値を超えているとき、第４の記憶部に記憶された複数のデータを論理ブロック単位で第５の記憶部に移動する前記整理を実行することを特徴とする請求項２に記載の半導体記憶装置。
【請求項１３】
前記閾値は、第１の閾値およびこの第１の閾値より小さな第２の閾値を有し、
前記整理部は、ホストから第１のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第１の閾値を越えている場合は、前記リソース使用量が前記第１の閾値以下になるまで、前記整理を実行し、
ホストから第２のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第２の閾値を越えている場合は、前記リソース使用量が前記第２の閾値以下になるまで、前記整理を実行することを特徴とする請求項１２に記載の半導体記憶装置。
【請求項１４】
前記整理状態通知部は、整理の実行状態、整理の進捗度を含む整理状態通知をホストへ出力することを特徴とする請求項１〜１３の何れか一つに記載の半導体記憶装置。
【請求項１５】
前記整理状態通知には、整理対象リソース名をさらに含むことを特徴とする請求項１４に記載の半導体記憶装置。
【請求項１６】
前記整理状態通知部は、整理の実行状態、整理の進捗度、整理対象リソース名、および第１および第２の閾値の何れに対する整理であるかを示す情報を含む整理状態通知をホストへ出力することを特徴とする請求項４または５に記載の半導体記憶装置。
【請求項１７】
キャッシュメモリとしての第１の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、を備える半導体記憶装置の制御方法であって、
前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部に割り当て、
セクタ単位の複数のデータを第１の記憶部に書き込み、
前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第２の記憶部に追い出し、前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第３の記憶部に追い出し、
前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させ、
ホストから整理状態通知要求が入力されると、前記整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する
ことを特徴とする半導体記憶装置の制御方法。
【請求項１８】
ホストと、
キャッシュメモリとしての第１の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部に割り当てるコントローラとを有する半導体記憶装置と、
を備える情報処理装置であって、
前記ホストは、
整理状態通知要求を発行する手段を備え、
前記半導体記憶装置のコントローラは、
セクタ単位の複数のデータを第１の記憶部に書き込む書き込み制御部と、
前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第２の記憶部に追い出し、前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第３の記憶部に追い出すフラッシュ制御部と、
前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、
ホストから前記整理状態通知要求が入力されると、前記整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部と、
を備えることを特徴とする情報処理装置。
【請求項１９】
前記ホストは、整理実行要求を発行する手段をさらに備え、
前記半導体記憶装置の整理部は、ホストから整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記閾値を越えている場合に、前記整理を実行することを特徴とする請求項１８に記載の情報処理装置。
【請求項２０】
前記ホストは、整理中止要求を発行する手段をさらに備え、
前記半導体記憶装置の整理部は、ホストから整理中止要求が入力されたとき、前記整理を中止することを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
前記ホストは、
整理状態通知部からの整理状態通知を判別し、この判別結果に基づいてスタンバイモードへの遷移を決定することを特徴とする請求項１８〜２０の何れか一つに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置、その制御方法および情報処理装置に関する。
【背景技術】
【０００２】
ホスト装置の外部記憶装置として、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリを搭載したＳＳＤ（Solid State Drive）が注目されている。ＮＡＮＤ型フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１１２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、コマンド応答速度および書き込み効率が改善される半導体記憶装置、その制御方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、キャッシュメモリとしての第１の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第２及び第３の記憶部と、前記不揮発性半導体メモリの記憶領域を、１以上の前記ブロックに対応付けられた論理ブロック単位で、前記第２及び第３の記憶部に割り当てるコントローラとを備え、前記コントローラは、セクタ単位の複数のデータを第１の記憶部に書き込む書き込み制御部と、前記第１の記憶部に書き込まれた複数のデータを前記セクタ単位の２以上の自然数倍の大きさである第１の管理単位のデータとして前記第２の記憶部に追い出し、前記第１の記憶部に書き込まれた複数のデータを前記第１の管理単位の２以上の自然数倍の大きさである第２の管理単位のデータとして前記第３の記憶部に追い出すフラッシュ制御部と、前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、ホストから整理状態通知要求が入力されると、前記整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部とを備えることを特徴とする。
【図面の簡単な説明】
【０００６】
【図１】図１は、ＳＳＤの構成例を示すブロック図である。
【図２】図２は、ドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。
【図３】図３は、プロセッサの機能構成例を示すブロック図である。
【図４】図４は、第１の実施形態でのＮＡＮＤメモリおよびＲＡＭ内に形成された機能構成を示すブロック図である。
【図５】図５は、ＬＢＡ論理アドレスを示す図である。
【図６】図６は、データ管理部が使用する管理テーブルの構成例を示す図である。
【図７】図７は、ＷＣでの書き込み処理を示すフローチャートである。
【図８】図８は、ＷＣからＭＳへの書き込み処理の動作手順を示すフローチャートである。
【図９】図９は、ＷＣからＭＳへの書き込み処理の動作概念を示す模式図である。
【図１０】図１０は、ＷＣからＦＳへの低密度トラックの書き込み処理の動作手順を示すフローチャートである。
【図１１】図１１は、ＷＣからＦＳへの低密度トラックの書き込み処理の動作概念を示す模式図である。
【図１２】図１２は、ＦＳからＩＳへのデータ移動の動作手順を示すフローチャートである。
【図１３】図１３は、ＦＳからＩＳへのデータ移動の動作概念を示す模式図である。
【図１４】図１４は、ＩＳでのデフラグ、コンパクション処理の動作手順を示すフローチャートである。
【図１５】図１５は、ＮＡＮＤ整理対象リソースと閾値などとの関係を示す図である。
【図１６】図１６は、Register  Host  to  DeviceのＦＩＳ構造を示す図である。
【図１７】図１７は、Register  Device  to  HostのＦＩＳ構造を示す図である。
【図１８】図１８は、本実施の形態の要部構成を示す機能ブロック図である。
【図１９】図１９は、ホストとＳＳＤとの間のコマンドシーケンスの一例を示す図である。
【図２０】図２０は、整理実行要求コマンドを受信した際のＳＳＤでの動作手順の一例を示すフローチャートである。
【図２１】図２１は、整理状態確認要求コマンドを受信した際のＳＳＤでの動作手順の一例を示すフローチャートである。
【図２２】図２２は、整理状態確認要求コマンドの応答信号を受信した際のホストでの動作手順の一例を示すフローチャートである。
【図２３】図２３は、第２の実施形態でのＮＡＮＤメモリおよびＲＡＭ内に形成された機能構成を示すブロック図である。
【図２４】図２４は、ＳＳＤを搭載したパーソナルコンピュータの全体図である。
【図２５】図２５は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示す図である。
【発明を実施するための形態】
【０００７】
ＳＳＤにおいては、フラッシュメモリとホスト装置との間に、キャッシュメモリを介在させて、フラッシュメモリでの書き込み回数（消去回数）を減らすように構成されていることが多い。キャッシュメモリにホスト装置からの書き込みが発生した際に、キャッシュメモリが満杯の場合は、キャッシュメモリからフラッシュメモリへのデータ追い出しを行ってから、キャッシュメモリにデータを書き込むことになる。
【０００８】
また、ＳＳＤにおいて、データの消去単位（ブロック）と、データの管理単位が異なる場合、フラッシュメモリの書き換えが進むと、無効な（最新ではない）データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、フラッシュメモリの記憶領域を有効利用できなくなるので、有効な最新のデータを集めて、違うブロックに書き直すコンパクションなどのフラッシュメモリの整理が必要になる。
【０００９】
フラッシュメモリの整理中に、ホストから連続した書き込み要求が発生したとき、書き込み要求を優先させた場合は、整理が中断され続ける。この整理の中断中に、キャッシュメモリが満杯になった場合、フラッシュメモリの空きブロックが不足し、キャッシュメモリからフラッシュメモリへのデータ追い出しが困難となり、コマンド応答速度および書き込み効率の低下につながる。
【００１０】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能および構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１１】
先ず、本明細書で用いる用語について定義しておく。
・物理ページ：ＮＡＮＤ型フラッシュメモリ内部において一括して書き込み／読み出しが可能な単位のこと。
・論理ページ：ＳＳＤ内部で設定される書き込み／読み出し単位であり、１以上の物理ページを組み合わせて構成される。
・物理ブロック：ＮＡＮＤ型フラッシュメモリ内部において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。
・論理ブロック：ＳＳＤ内部で設定される消去単位であり、１以上の物理ブロックを組み合わせて構成される。論理ブロックは、複数の論理ページから構成される。
・セクタ：ホストからの最小アクセス単位のこと。セクタサイズは、例えば５１２Ｂ。
・クラスタ：ＳＳＤ内部で「小さなデータ」を管理する管理単位。クラスタサイズはセクタサイズ以上であり、ホストのＯＳが採用するファイルシステムのデータ管理単位、または、論理ページサイズと等しくなるように定められる。例えば、クラスタサイズの２以上の自然数倍が論理ページサイズとなるように定められてもよい。
・トラック：ＳＳＤ内部で「大きなデータ」を管理する管理単位。クラスタサイズの２以上の自然数倍がトラックサイズとなるように定められる。例えば、トラックサイズが論理ブロックサイズと等しくなるように定められてもよい。
・フリーブロック（ＦＢ）：内部に有効データを含まない、用途未割り当ての論理ブロックのこと。以下の、ＣＦＢ、ＦＦＢの２種類がある。
・コンプリートフリーブロック（ＣＦＢ）：再利用のために消去動作を行う必要があるＦＢのこと。消去動作の実行後は、論理ブロックの先頭に位置する論理ページから書き込むことが可能である。
・フラグメントフリーブロック（ＦＦＢ）：未書き込みの論理ページが残っており、消去動作を実行することなく再利用が可能なＦＢのこと。残りの未書き込み状態のままの論理ページに書き込むことが可能である。
・書き込み効率：所定期間内における、ホストから書き込んだデータ量に対する、論理ブロックの消去量の統計値のこと。小さいほどＮＡＮＤ型フラッシュメモリの消耗度が小さい。
・有効クラスタ：論理アドレスに対応するクラスタサイズの最新データ。
・無効クラスタ：同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったクラスタサイズのデータ。
・有効トラック：論理アドレスに対応するトラックサイズの最新データ。
・無効トラック：同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったトラックサイズのデータ。
・ＭＬＣ（Multi  Level  Cell）モード：多値記憶が可能なＮＡＮＤ型フラッシュメモリにおいて、通常通り、上位ページおよび下位ページを使用して書き込みを行うモード。ＭＬＣモードで使用する１以上の物理ブロックを組み合わせて、ＭＬＣモードの論理ブロックが構成される。
・擬似ＳＬＣ（Single  Level  Cell）モード：多値記憶が可能なＮＡＮＤ型フラッシュメモリにおいて、下位ページのみを使用して書き込みを行うモード。擬似ＳＬＣモードで使用する１以上の物理ブロックを組み合わせて、擬似ＳＬＣモードの論理ブロックが構成される。一度擬似ＳＬＣモードで使用した物理ブロックであっても、消去動作後はＭＬＣモードで使用することが可能である。
【００１２】
［第１の実施形態］
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。ホスト１としては、パーソナルコンピュータのＣＰＵ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵなどがあげられる。また、ＳＳＤ１００は、ＲＳ２３２Ｃインタフェース（ＲＳ２３２Ｃ  Ｉ／Ｆ）などの通信インタフェース３を介して、デバッグ用／製造検査用機器２００との間でデータを送受信することができる。ＳＳＤ１００は、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、コントローラとしてのドライブ制御回路４と、ＮＡＮＤメモリ１０よりも高速記憶動作が可能な半導体メモリであるＲＡＭ２０と、電源回路５と、状態表示用のＬＥＤ６と、ドライブ内部の温度を検出する温度センサ７と、フューズ８とを備えている。ＲＡＭ２０としては、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又はＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを採用することができる。
【００１３】
電源回路５は、ホスト１側の電源回路から供給される外部直流電源から複数の異なる内部直流電源電圧を生成し、これら内部直流電源電圧をＳＳＤ１００内の各回路に供給する。また、電源回路５は、外部電源の立ち上がりを検知し、パワーオンリセット信号を生成して、ドライブ制御回路４に供給する。フューズ８は、ホスト１側の電源回路とＳＳＤ１００内部の電源回路５との間に設けられている。外部電源回路から過電流が供給された場合フューズ８が切断され、内部回路の誤動作を防止する。
【００１４】
ＮＡＮＤメモリ１０は、ホスト１によって指定されたユーザデータを記憶したり、ＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１５】
図１では、ＮＡＮＤメモリ１０は、４チャネル（４ｃｈ：ｃｈ０〜ｃｈ３）を介して、ドライブ制御回路４内部のＮＡＮＤコントローラ１１３に並列接続されており、４つのチャネル並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。チャネル数は４つに限らず、任意のチャネル数を採用可能である。各並列動作要素１０ａ〜１０ｄは、バンクインターリーブが可能な複数のバンク（この場合、４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各バンクは、複数のメモリチップ（この場合、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン０、プレーン１の２つの領域（District）に分割されている。プレーン０およびプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、倍速モードを使用することで、同時に消去／書き込み／読み出しを行うことが可能である。このように、ＮＡＮＤメモリ１０の各ＮＡＮＤメモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた倍速モードによる並列動作が可能である。なお、各メモリチップは、４つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
【００１６】
ＲＡＭ２０は、ホスト１とＮＡＮＤメモリ１０間でのデータ転送用キャッシュおよび作業領域用メモリなどとして機能する。ＲＡＭ２０の作業領域用メモリに記憶されるものとしては、ＮＡＮＤメモリ１０に記憶されている各種管理テーブル（後述する）が起動時などに展開されたマスターテーブル（スナップショット）、管理テーブルの変更差分であるログ情報などがある。ドライブ制御回路４は、ホスト１とＮＡＮＤメモリ１０との間でＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。また、ドライブ制御回路４は、状態表示用ＬＥＤ６にステータス表示用信号を供給するとともに、電源回路５からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を自回路内およびＳＳＤ１００内の各部に供給する機能も有している。
【００１７】
図２は、ドライブ制御回路４のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路４は、データアクセス用バス１０１、第１の回路制御用バス１０２、および第２の回路制御用バス１０３を備えている。第１の回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。第１の回路制御用バス１０２には、ＮＡＮＤメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。また、第１の回路制御用バス１０２には、図１に示した電源回路５からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給するクロックコントローラ１０７が接続されている。
【００１８】
第２の回路制御用バス１０３は、第１の回路制御用バス１０２に接続されている。第２の回路制御用バス１０３には、図１に示した温度センサ７からのデータを受けるためのＩ2Ｃ回路１０８、状態表示用ＬＥＤ６にステータス表示用信号を供給するパラレルＩＯ（ＰＩＯ）回路１０９、ＲＳ２３２Ｃ  Ｉ／Ｆ３を制御するシリアルＩＯ（ＳＩＯ）回路１１０が接続されている。
【００１９】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１１、第１のＥＣＣ（Error  Checking  and  Correction）回路１１２、ＮＡＮＤコントローラ１１３、およびＲＡＭコントローラ１１４は、データアクセス用バス１０１と第１の回路制御用バス１０２との両方に接続されている。ＡＴＡコントローラ１１１は、ＡＴＡインタフェース２を介してホスト１との間でデータを送受信する。データアクセス用バス１０１には、データ作業領域およびファームウェア展開領域として使用されるＳＲＡＭ１１５がＳＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤメモリ１０に記憶されているファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによってＳＲＡＭ１１５に転送される。
【００２０】
ＮＡＮＤコントローラ１１３は、ＮＡＮＤメモリ１０とのインタフェース処理を行うＮＡＮＤ  Ｉ／Ｆ１１７、第２のＥＣＣ回路１１８、およびＮＡＮＤメモリ１０−ＲＡＭ２０間のアクセス制御を行うＤＭＡ転送制御用のＤＭＡコントローラ１１９を備えている。第２のＥＣＣ回路１１８は第２の訂正符号のエンコードを行い、また、第１の誤り訂正符合のエンコードおよびデコードを行う。第１のＥＣＣ回路１１２は、第２の誤り訂正符号のデコードを行う。第１の誤り訂正符号、第２の誤り訂正符号は、例えば、ハミング符号、ＢＣＨ（Bose  Chaudhuri  Hocqenghem）符号、ＲＳ(Reed  Solomon)符号、或いはＬＤＰＣ（Low  Density  Parity  Check）符号等であり、第２の誤り訂正符号の訂正能力は、第１の誤り訂正符号の訂正能力よりも高いとする。
【００２１】
図１に示したように、ＮＡＮＤメモリ１０においては、４つの並列動作要素１０ａ〜１０ｄが各複数ビットの４チャネル（４ｃｈ）を介して、ドライブ制御回路４内部のＮＡＮＤコントローラ１１２に並列接続されており、４つの並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。また、各チャネルのＮＡＮＤメモリ１０は、バンクインターリーブが可能な４つのバンクに分割されており、各メモリチップのプレーン０およびプレーン１に対しても、同時にアクセスを行うことが可能である。したがって、１チャネルに付き、最大８物理ブロック（４バンク×２プレーン）、ほぼ同時に書き込みなどの処理を実行可能である。
【００２２】
図３は、プロセッサ１０４により実現されるファームウェアの機能構成例を示すブロック図である。プロセッサ１０４により実現されるファームウェアの各機能は、大きく、データ管理部１２０、ＡＴＡコマンド処理部１２１、セキュリティ管理部１２２、ブートローダ１２３、初期化管理部１２４、デバッグサポート部１２５に分類される。
【００２３】
データ管理部１２０は、ＮＡＮＤコントローラ１１３、第１のＥＣＣ回路１１２を介して、ＮＡＮＤメモリ１０−ＲＡＭ２０間のデータ転送、ＮＡＮＤメモリ１０に関する各種機能を制御する。ＡＴＡコマンド処理部１２１は、ＡＴＡコントローラ１１１、およびＲＡＭコントローラ１１４を介して、データ管理部１２０と協動してＲＡＭ２０−ホスト１間のデータ転送処理を行う。セキュリティ管理部１２２は、データ管理部１２０およびＡＴＡコマンド処理部１２１と協動して各種のセキュリティ情報を管理する。
【００２４】
ブートローダ１２３は、パワーオン時、各管理プログラム（ファームウェア）をＮＡＮＤメモリ１０からＳＲＡＭ１１５にロードする。初期化管理部１２４は、ドライブ制御回路４内の各コントローラ／回路の初期化を行う。デバッグサポート部１２５は、外部からＲＳ２３２Ｃインタフェースを介して供給されたデバッグ用データを処理する。主に、データ管理部１２０、ＡＴＡコマンド処理部１２１、およびセキュリティ管理部１２２が、ＳＲＡＭ１１５に記憶される各管理プログラムをプロセッサ１０４が実行することによって実現される機能部である。
【００２５】
データ管理部１２０は、ＡＴＡコマンド処理部１２１が記憶デバイスであるＮＡＮＤメモリ１０やＲＡＭ２０に対して要求する機能の提供（ホストからのWrite要求、Cache  Flush要求、Read要求等の各種コマンドへの応答）と、ホスト１から与えられる論理アドレスとＮＡＮＤメモリ１０の物理アドレスとの対応関係の管理と、スナップショット、ログによる管理情報の保護と、ＲＡＭ１０およびＮＡＮＤメモリ１０を利用した高速で効率の良いデータ読み出し／書き込み機能の提供と、ＮＡＮＤメモリ１０の信頼性の確保などを行う。
【００２６】
図４は、ＮＡＮＤメモリ１０およびＲＡＭ２０内に形成された機能ブロックを示すものである。ホスト１とＮＡＮＤメモリ１０との間には、ＲＡＭ２０上に構成されたライトキャッシュ（ＷＣ）２１およびリードキャッシュ（ＲＣ）２２が介在している。ＷＣ２１はホスト１からのWriteデータを一時保存し、ＲＣ２２はＮＡＮＤメモリ１０からのReadデータを一時保存する。ＮＡＮＤメモリ１０内のブロックは、書き込み時のＮＡＮＤメモリ１０に対する消去の量を減らすために、データ管理部１２０により、前段ストレージ領域（ＦＳ：Front  Storage）１２、中段ストレージ領域（ＩＳ:Intermediate  Storage）１３およびメインストレージ領域（ＭＳ：Main  Storage）１１という各管理領域に割り当てられている。ＦＳ１２は、ＷＣ２１からのデータを「小さな単位」であるクラスタ単位に管理するものであり、小データを短期間保存する。ＩＳ１３は、ＦＳ１２から溢れたデータを「小さな単位」であるクラスタ単位に管理するものであり、小データを長期間保存する。ＭＳ１１は、ＷＣ２１、ＦＳ１２、ＩＳ１３からのデータを「大きな単位」であるトラック単位で管理する。
【００２７】
つぎに、図４の各構成要素の具体的な機能構成について詳述する。ホスト１はＳＳＤ１００対し、ReadまたはWriteする際には、ＡＴＡインタフェースを介して論理アドレスとしてのＬＢＡ（Logical  Block  Addressing）を入力する。ＬＢＡは、図５に示すように、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。本実施の形態においては、図４の各構成要素であるＷＣ２１、ＲＣ２２、ＦＳ１２、ＩＳ１３、ＭＳ１１の管理単位として、ＬＢＡの下位（ｓ＋１）ビット目から上位のビット列で構成されるクラスタアドレスと、ＬＢＡの下位（ｓ＋ｔ＋１）ビットから上位のビット列で構成されるトラックアドレスとを定義する。この第１の実施の形態では、トラックと論理ブロックのサイズは同じとする。論理ブロックとは、ＮＡＮＤメモリ１０のチップ上の物理ブロックを複数組み合わせて構成される仮想的なブロックのことであり、この実施の形態では、論理ブロックは１つの物理ブロックを並列チャネル数分（この場合、図１に示すように４ｃｈ）まとめた単位のことをいう。論理ページも同様であり、物理ページを４ｃｈ分まとめた単位のことをいう。また、論理ブロックは、バンクインターリーブを有効利用するため、同じバンクに属する物理ブロックから選択される。
【００２８】
・リードキャッシュ（ＲＣ）２２
ＲＣ２２は、ホスト１からのRead要求に対して、ＮＡＮＤメモリ１０（ＦＳ１２、ＩＳ１３、ＭＳ１１）からのReadデータを一時的に保存するための領域である。ホスト１へのデータ転送は、基本的に、ＲＣ２２から行う。ＷＣ２１に最新のデータがある場合は、ＷＣ２１からホスト１へデータ転送が行われる。
【００２９】
・ライトキャッシュ（ＷＣ）２１
ＷＣ２１は、ホスト１からのWrite要求に対して、ホスト１からのWriteデータを一時的に保存するための領域である。ＷＣ２１上のデータは、クラスタ単位で管理し、書き込みと有効データの管理はセクタ単位で行う。ＷＣ２１のリソースが不足した場合、ＷＣ２１の記憶データをＮＡＮＤ１０に追い出す。この追い出しの際、ＷＣ２１上で有効クラスタの多いトラック（高密度トラック）は、ＭＳ１１へ追い出され、ＷＣ２１上で有効クラスタの少ないトラック（低密度トラック）は、ＦＳ１２へ追い出される。高密度データとは、所定の論理アドレス範囲内に有効データが所定割合より多いデータであり、低密度データとは、所定の論理アドレス範囲内に有効データが所定割合より少ないデータである。但し、ＦＳ１２の空きリソースが不足した場合、ＷＣ２１上の低密度トラックをＦＳ１２に追い出すことができず、ホスト１からのWrite要求を待たせることになるので、ＦＳ１２の空きリソース不足により一定時間以上Write要求を待たせた場合は、トラック密度に関係なく全てのデータをＭＳ１１に強制的に書き込む緊急避難的なモード（以下、バイパスモード）が発生する。
【００３０】
・メインストレージ領域（ＭＳ）１１
ＭＳ１１はトラック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。ＷＣ２１上で有効クラスタの多いトラック（高密度トラック：有効クラスタが所定の閾値α以上あるトラック）は、ＷＣ２１から直接ＭＳ１１に書き込まれる。その他、ＭＳ１１には、ＦＳ１２、ＩＳ１３で管理しきれなくなったデータが入力される。ＭＳ１１に入力されたトラックと同一ＬＢＡのトラックについてはＭＳ１１の論理ブロック内で無効化し、この論理ブロックを解放する。ＭＳ１１に入力されたトラックと同一ＬＢＡのトラックに属するクラスタについては、ＦＳ１２またはＩＳ１３内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。ＭＳ１１は、ＭＬＣモードの複数の論理ブロックで構成される。この実施の形態では、トラックと論理ブロックのサイズは同じとしているので、ＦＳ１２やＩＳ１３で行われる追記処理や、ＩＳ１３で行われるコンパクション（有効クラスタのみを集めて新しい論理ブロックを作り、無効なクラスタ部分を解放する処理）はＭＳ１１では不要となる。もしトラックサイズが論理ブロックサイズよりも小さい場合は、ＦＳ１２やＩＳ１３で行われる追記処理や、ＩＳ１３で行われるコンパクションをＭＳ１１に適用してもよい。
【００３１】
・前段ストレージ領域（ＦＳ）１２
ＦＳ１２はクラスタ単位でデータを管理されるＦＩＦＯ構造のバッファであり、入力は複数のクラスタをまとめた論理ページ単位で行われる。ＦＳ１２には、ＷＣ２１上で有効クラスタの少ないトラック（低密度トラック：有効クラスタが所定の閾値α未満のトラック）が書き込まれる。ＦＳ１２は、例えば、データの書き込み順序で論理ブロックが並んだＦＩＦＯ構造となっている。ＦＳ１２に存在するクラスタと同一ＬＢＡのクラスタがＦＳ１２に入力された場合、ＦＳ１２内のクラスタを無効化するだけでよく、書き換え動作を伴わない。ＦＳ１２に入力されたクラスタと同一ＬＢＡのクラスタについては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。ＦＳ１２のＦＩＦＯ構造の最後まで到達した論理ブロックに格納されたクラスタは、ホスト１から再書き込みされる可能性の低いクラスタとみなし、論理ブロックごとＩＳ１３の管理下に移動する。ＦＳ１２は、この実施の形態では、書き込みの高速化を図るため擬似ＳＬＣモードの複数の論理ブロックで構成される。なお、ＦＳ１２は、ＭＬＣモードの複数の論理ブロックで構成されてもよい。更新頻度の高いデータはＦＳ１２を通過している最中に無効化され、更新頻度の低いデータだけがＦＳ１２から溢れていくため、更新頻度の高いデータと低いデータとをＦＳ１２で選り分けることができる。これにより、後段のＩＳ１３でコンパクションが頻繁に発生する可能性を低減させることが可能である。
【００３２】
・中段ストレージ領域（ＩＳ）１３
ＩＳ１３は、再書き込みされる可能性の低いクラスタを格納するためのバッファであり、ＦＳ１３と同様にクラスタ単位でデータの管理が行われる。ＩＳ１３に存在するクラスタと同一ＬＢＡのクラスタがＦＳ１２、ＩＳ１３に入力された場合、ＩＳ１３内のクラスタを無効化するだけでよく、書き換え動作を伴わない。ＩＳ１３においては、ＦＳ１２と同様、データの書き込まれた順序（ＦＳ１２から移動された順序）が古い論理ブロックから並んだリスト構造をとるが、コンパクションを行う点がＦＳ１２と異なる。ＩＳ１３の容量が飽和した場合、あるいはＦＳ１２、ＩＳ１３管理用のテーブルが飽和した場合は、コンパクション（ＩＳ１３から有効クラスタを集めてＩＳ１３へ書き戻すこと）やデフラグ（ＦＳ１２およびＩＳ１３のクラスタをトラックに統合して、ＭＳ１１へ追い出すこと）を行う。ＩＳ１３は、この実施の形態では、ＭＬＣモードの論理ブロックと擬似ＳＬＣモードの論理ブロックの混在で構成される。すなわち、ＦＳ１２からＩＳ１３に移動されるブロックは擬似ＳＬＣモードの論理ブロックであるが、ＩＳ１３内でコンパクションする際に、ＭＬＣモードの論理ブロックに書き直す。なお、ＦＳ１２がＭＬＣモードの論理ブロックで構成される場合は、ＩＳ１３もＭＬＣモードの論理ブロックのみで構成されることになる。
【００３３】
図６は、データ管理部１２０が図４に示した各構成要素を制御管理するための管理テーブルを示すものである。ＲＡＭ２０を管理するためのテーブルとしては、ＲＣ管理テーブル２３、ＷＣトラックテーブル２４、ＷＣトラック情報テーブル２５，ＷＣ高密度トラック情報テーブル２６、ＷＣ低密度トラック情報テーブル２７などがある。ＮＡＮＤメモリ１０を管理するためのテーブルとしては、トラックテーブル３０、クラスタディレクトリテーブル３１、クラスタテーブル３２、クラスタブロック情報テーブル３３、論物変換テーブル４０などがある。
【００３４】
・ＲＣ管理テーブル２３
ＲＣ管理テーブル２３は、ＮＡＮＤメモリ１０からＲＣ２２に転送されるデータを管理するためのものである。
【００３５】
・ＷＣトラックテーブル２４
ＷＣトラックテーブル２４は、ＷＣ２１上に記憶されたデータに関するＷＣトラック情報をＬＢＡからルックアップするためのテーブルであり、ＬＢＡのトラックアドレスのＬＳＢ数ビットをインデックスとし、インデックス毎に複数のエントリ（タグ）を有する。各タグには、ＬＢＡトラックアドレスと該トラックアドレスに対応するＷＣトラック情報へのポインタが記憶されている。
【００３６】
・ＷＣトラック情報テーブル２５
ＷＣトラック情報テーブル２５には、アクセスのあったＷＣトラック情報の新旧の順序をＬＲＵ（Least  Recently  used）で双方向リストで管理するためのＷＣトラックＬＲＵ情報テーブル２５ａと、空いているＷＣトラック情報の番号を管理するＷＣトラック空き情報テーブル２５ｂとがある。ＷＣ２１からＮＡＮＤメモリ１０にデータを追い出すときに、ＷＣトラックＬＲＵ情報テーブル２５ａを用いてより古くにアクセスされたトラックを取り出す。
ＷＣトラック情報は、ＷＣ２１内に存在する複数のトラックの１つに対応する。
ＷＣトラック情報には、
(1)ＷＣ２１内に存在するトラックアドレス、トラック内のＷＣ２１上の有効クラスタの個数、各クラスタが有効であるかどうかの情報、各クラスタがＷＣ２１のどこに存在するかを示すＷＣ内クラスタ位置情報、
(2)１クラスタに含まれる複数のセクタのうちのどのセクタに有効なデータを保持しているかを示す情報（セクタビットマップ）、
(3)トラックの状態情報（有効、無効、ＡＴＡからのデータ転送中、ＮＡＮＤに書き込み中など）
などが含まれている。なお、上記のＷＣトラック情報では、有効クラスタが存在する記憶位置で自トラック内に存在するクラスタアドレスのＬＳＢ（ｔ）ビットを管理するようにしたが、クラスタアドレスの管理方法は任意であり、例えば、自トラック内に存在するクラスタアドレスのＬＳＢ（ｔ）ビット自体を管理するようにしてもよい。
【００３７】
・ＷＣ高密度トラック情報テーブル２６
ＷＣ高密度トラック情報テーブル２６は、ＭＳ１１に書き込むことになる高密度のトラック情報を管理するためのもので、高密度トラックに関するＷＣトラック情報とその個数を管理している。
【００３８】
・ＷＣ低密度トラック情報テーブル２７
ＷＣ低密度トラック情報テーブル２７は、ＦＳ１２に書き込むことになる低密度のトラック情報を管理するためのもので、低密度トラックのクラスタ数の合計を管理している。
【００３９】
・トラックテーブル３０
トラックテーブル３０は、ＬＢＡのトラックアドレスからトラック情報を取得するためのテーブルである。トラック情報としては、
(1)論理ブロックアドレス（トラックのデータが記憶されている論理ブロックを示す情報である）
(2)クラスタディレクトリ番号（トラック内のデータの少なくとも一部がＦＳ１２またはＩＳ１３に記憶されている場合に有効となる情報であり、トラック内のデータがＦＳ１２またはＩＳ１３に記憶されている場合に、トラック毎に存在するクラスタディレクトリテーブルのテーブル番号を示す情報である）
(3)ＦＳ／ＩＳクラスタ数（当該トラック内のクラスタが、いくつＦＳ１２またはＩＳ１３に記憶されているかを示す情報であり、デフラグするかどうかを決めるために使用する）。
【００４０】
・クラスタディレクトリテーブル３１
クラスタディレクトリテーブル３１は、トラック内のデータがＦＳ１２またはＩＳ１３に記憶されている場合に、その論理ブロックまでたどるための中間的なテーブルであり、トラック別に備えられている。各クラスタディレクトリテーブル３１に登録されるクラスタディレクトリ情報は、クラスタテーブル３２のテーブル番号を示す情報（クラスタテーブル番号情報）の配列からなる。ＬＢＡのクラスタアドレスのＬＳＢ（ｔ）ビット中の上位数ビットで、１つのクラスタディレクトリテーブル３１中に配列されている複数のクラスタテーブル番号情報からひとつの情報を選択する。
【００４１】
このクラスタディレクトリテーブル３１としては、書き込み時刻を基準として、クラスタディレクトリ情報（クラスタテーブル番号情報の配列）の新旧の順序を、対応するトラックアドレスとともに、ＬＲＵ（Least  Recently  used）で双方向リストで管理するためのクラスタディレクトリＬＲＵテーブル３１ａと、空いているクラスタディレクトリを、対応するトラックアドレスとともに、双方向リストで管理するクラスタディレクトリ空き情報テーブル３１ｂとがある。
【００４２】
・クラスタテーブル３２
クラスタディレクトリテーブル３１と関連し、トラック内のデータがＦＳ１２またはＩＳ１３に記憶されている場合に、どの論理ブロックのどのクラスタ位置にデータが記憶されているかを管理するテーブルである。トラックテーブル３０からクラスタディレクトリテーブル３１を経由して間接参照される。実体は、複数クラスタ分の論理ブロックアドレス＋クラスタ位置の配列である。ＬＢＡのクラスタアドレスのＬＳＢ（ｔ）ビット中の下位数ビットで、１つのクラスタテーブル３２中に配列されている複数の（論理ブロックアドレス＋クラスタ位置）からひとつの情報を選択する。後述のクラスタブロック情報の番号とその中のクラスタ位置の情報も配列としてもつ。
【００４３】
・クラスタブロック情報テーブル３３
クラスタブロックとは、論理ブロックのうちクラスタ単位でデータを記憶するものをいう。クラスタブロック情報は、ＦＳ１２、ＩＳ１３の論理ブロックを管理するための情報であり、論理ブロック内にどのようなクラスタが入っているかを示す情報である。クラスタブロック情報同士を双方向リストとしてＦＳ１２、ＩＳ１３内のＦＩＦＯの順序で連結される。
クラスタブロック情報は、
(1)論理ブロックアドレス
(2)有効クラスタ数
(3)当該論理ブロックに含まれるクラスタのＬＢＡ
を有する。
クラスタブロック情報テーブル３３は、使われていないクラスタブロック情報を管理する空き情報管理用のクラスタブロック情報テーブル３３ａ、ＦＳ１２に含まれるクラスタブロック情報を管理するＦＳ用のクラスタブロック情報テーブル３３ｂ、ＩＳ１３に含まれるクラスタブロック情報を管理するＩＳ用のクラスタブロック情報テーブル３３ｃを有し、各テーブル３３ａ〜３３ｃは、双方向リストとして管理されている。このクラスタブロック情報テーブル３３の主な用途はＩＳ１３のコンパクションであり、コンパクション対象の論理ブロックにどのようなクラスタが記憶されているかを調べ、データを他の場所へ書き直すために使用する。
【００４４】
・論物変換テーブル４０
論物変換テーブル４０は、論理ブロックアドレスと物理ブロックアドレスとの変換、寿命に関する情報を管理するためのテーブルである。論理ブロックアドレス毎に、当該論理ブロックに所属する複数の物理ブロックアドレスを示す情報、当該論理ブロックアドレスの消去回数を示す消去回数情報、クラスタブロック情報の番号などの情報を有している。あるＬＢＡのデータを他の場所に書き直すには、元のクラスタブロック内のＬＢＡを無効にする必要があり、ＬＢＡからクラスタブロックをたどる必要がある。そのために、論物変換テーブル４０で管理する論理ブロックの管理情報に、クラスタブロック情報の識別子を記憶している。
【００４５】
上記各管理テーブルで管理される管理情報によって、ホスト１で使用されるＬＢＡと、ＳＳＤ１００で使用される論理ＮＡＮＤアドレス（論理ブロックアドレス＋オフセット）と、ＮＡＮＤメモリ１０で使用される物理ＮＡＮＤアドレス（物理ブロックアドレス＋オフセット）との間を対応付けることができ、ホスト１とＮＡＮＤメモリ１０との間のデータのやり取りを行うことが可能となる。
【００４６】
上記各管理テーブルのうちＮＡＮＤ管理用のテーブル（図６のトラックテーブル３０、クラスタディレクトリテーブル３１、クラスタテーブル３２、クラスタブロック情報テーブル３３、論物変換テーブル４０など）は、不揮発性のＮＡＮＤメモリ１０の所定の領域に記憶されており、起動時に、ＮＡＮＤメモリ１０に記憶されていた各管理テーブルをＲＡＭ２０の作業領域に展開して、この展開されたＲＡＭ２０上の管理テーブルをデータ管理部１２０が使用することで、各管理テーブルは更新されていく。ＲＡＭ２０上の管理テーブル（マスターテーブルと呼ぶ）は、電源が切れても、電源が切れる以前の状態に復元する必要があり、このためマスターテーブルとマスターテーブルの変更差分であるログを不揮発性のＮＡＮＤメモリ１０に、適宜のタイミングで保存している。
【００４７】
・Read処理
つぎに、読み出し処理の概要について説明する。ＡＴＡコマンド処理部１２１から、Readコマンドおよび読み出しアドレスとしてのＬＢＡが入力されると、データ管理部１２０は、ＲＣ管理テーブル２３とＷＣトラックテーブル２４を検索することで、ＷＣ２１またはＲＣ２２にＬＢＡに対応するデータが存在しているか否かを探査し、キャッシュヒットの場合は、該当ＬＢＡに対応するＷＣ２１またはＲＣ２２のデータを読み出して、ＡＴＡコマンド処理部１２１に送る。
【００４８】
データ管理部１２０は、ＲＣ２２またはＷＣ２１でヒットしなかった場合は、検索対象のデータがＮＡＮＤメモリ１０のどこに格納されているかを検索する。データがＭＳ１１に記憶されている場合は、データ管理部１２０は、ＬＢＡ→トラックテーブル３０→論物変換テーブル４０と辿ることで、ＭＳ１１上のデータを取得する。一方、データがＦＳ１２，ＩＳ１３に記憶されている場合は、データ管理部１２０は、ＬＢＡ→トラックテーブル３０→クラスタディレクトリテーブル３１→クラスタテーブル３２→論物変換テーブル４０と辿ることで、ＦＳ１２，ＩＳ１３上のデータを取得する。
【００４９】
・Write処理
（ＷＣ２１での処理）
つぎに、図７に示すフローチャートに従って書き込み処理の概要について説明する。書き込み処理では、ＡＴＡコマンド処理部１２１からWriteコマンドおよび書き込みアドレスとしてのＬＢＡが入力されると（ステップＳ１００）、データ管理部１２０は、ＬＢＡで指定されたデータをＷＣ２１に書き込む。具体的には、データ管理部１２０は、ＷＣ２１に当該書き込み要求に応じた空きが有るか否かを判定し（ステップＳ１１０）、ＷＣ２１に空きがある場合は、ＬＢＡで指定されたデータをＷＣ２１に書き込む（ステップＳ１５０）。
【００５０】
一方、ＷＣ２１に空き領域がない場合は、データ管理部１２０は、ＲＡＭ管理用の各種管理テーブルを参照してＷＣ２１からデータを追い出し、追い出したデータをＮＡＮＤメモリ１０に書き込み、空き領域を作成する。具体的には、データ管理部１２０は、トラック内の有効クラスタ数を調べ（ステップＳ１２０）、トラック内の有効クラスタ数が所定パーセントα未満のトラックは低密度トラックとし、クラスタサイズデータとしてＦＳ１２を追い出し先とする（ステップＳ１４０）。ＦＳ１２が追い出し先の場合は、トラック内の有効クラスタを論理ページ単位で書き込む。
【００５１】
ステップＳ１２０の判断で、トラック内の有効クラスタ数が所定パーセントα以上のトラックと判断された場合は、このトラックを高密度トラックとし、トラックサイズのデータとしてＭＳ１１を追い出し先とする（ステップＳ１３０）。ＭＳ１１が追い出し先の場合は、トラックサイズのデータのまま論理ブロック全体に書き込む。書き込み対象の論理ブロック数が複数の場合は、倍速モードやバンクインターリーブを利用して転送効率を上げる。
【００５２】
このようにして、ＷＣ２１に空きを作った後、ＬＢＡで指定されたデータをＷＣ２１に書き込む（ステップＳ１５０）。ＷＣ２１に書き込まれたデータに応じて、またＮＡＮＤメモリ１０へのデータ追い出しに応じて、ＲＡＭ管理用の各種管理テーブルを更新する。
【００５３】
（ＷＣ２１からＭＳ１１への書き込み）
つぎに、ＷＣ２１からＭＳ１１への高密度トラックの書き込み処理について、図８および図９に従って説明する。図８はその動作手順を示すフローチャート、図９はその動作概念を示す模式図である。
【００５４】
ＭＳ１１への書き込みは、次の手順で実行される。データ管理部１２０は、追い出し対象となった高密度トラックに加えて、バンクインターリーブを利用して並列に書き込める高密度トラックを複数選択してもよい。
【００５５】
１．データ管理部１２０は、ＲＡＭ２０上にトラックのデータイメージを作成（穴埋め処理）する（ステップＳ２００）。すなわち、ＷＣ２１に存在しないクラスタ、ＷＣ２１に全セクタを保持していないクラスタに関しては、ＮＡＮＤメモリ１０から読み出して、ＷＣ２１のデータと統合する。
２．データ管理部１２０は、ＭＳ１１用に、論理ブロック（トラックブロック）をコンプリートフリーブロックＣＦＢから確保する（ステップＳ２１０）。トラックブロックとは、論理ブロックのうちトラック単位でデータを記憶するものをいう。
３．データ管理部１２０は、ステップＳ２００で作成したトラックのデータイメージを、ステップＳ２１０で確保した論理ブロックに書き込む（ステップＳ２２０）。
４．データ管理部１２０は、トラックのＬＢＡからトラック情報を調べ、トラック情報と書き込んだ論理ブロックに対応する論理ブロックアドレスとを関連付け、ＮＡＮＤ管理用の所要のテーブルに登録する（ステップＳ２３０）。
５．データ管理部１２０は、ＷＣ２１，ＮＡＮＤメモリ１０の古いデータを無効化する（ステップＳ２４０）。すなわち、ＭＳ１１にフラッシュされたＷＣ２１のキャッシュデータと、ステップＳ２００での穴埋め処理に使用されたＮＡＮＤメモリ１０のデータを、管理テーブル上で有効から無効にすることで無効化する。
【００５６】
（ＷＣ２１からＦＳ１２への書き込み）
つぎに、ＷＣ２１からＦＳ１２への低密度トラックの書き込み処理について、図１０および図１１に従って説明する。図１０はその動作手順を示すフローチャート、図１１はその動作概念を示す模式図である。
【００５７】
ＦＳ１２への書き込みは、ＲＡＭ２０上にクラスタのデータイメージを作成（穴埋め処理）し、新たに確保する論理ブロック（クラスタブロック）に対し論理ページ単位の書き込みを、擬似ＳＬＣモードを使用して行う。確保する論理ブロックは、書き込むデータイメージ以上の書き込み可能な論理ページをもつフラグメントフリーブロック（ＦＦＢ）を優先し、ない場合はコンプリートフリーブロック（ＣＦＢ）を使用する。ＦＳ１２への書き込みは、以下の手順で実行する。
【００５８】
ＷＣ２１からＦＳ１２に低密度トラックのデータを書き込むための論理ブロック(クラスタブロック)のことをＦＳ  Input  Buffer（以下、ＦＳＩＢ）と呼ぶ。データ管理部１２０は、追い出し対象となった低密度トラックに加えて、書き込むクラスタデータ量が擬似ＳＬＣモードの論理ブロック境界に揃うように、他の低密度トラックを巻き添えにしてもよい。
１．データ管理部１２０は、ＷＣ２１から入力された低密度トラック内の総データ量を判定し（ステップＳ３００）、判定した総データ量が小さい場合、すなわち有効クラスタ数が所定の閾値よりも少ない場合には、それを書き込めるＦＦＢを確保し、ＦＳＩＢとする（ステップＳ３１０）。
２．データ管理部１２０は、ＷＣ２１から渡された低密度トラック内の総データ量が大きいと判定した場合、すなわち有効クラスタ数が所定の閾値以上の場合には、ＣＦＢを確保し、ＦＳＩＢとする（ステップＳ３２０）。このとき、並列で書き込むことが出来る複数の論理ブロックを確保し、ＦＳＩＢとする。
３．データ管理部１２０は、ＲＡＭ２０上で、書き込むクラスタのデータイメージを作成する（ステップＳ３３０）。すなわち、ＷＣ２１に全セクタを保持していないクラスタに関しては、ＷＣ２１上に存在しないセクタのデータをＮＡＮＤメモリ１０から読み出し、ＷＣ２１上のセクタのデータと統合する。
４．データ管理部１２０は、ＷＣ２１上のクラスタと、作業領域上に作ったクラスタイメージをＦＳＩＢに書き込む（ステップＳ３４０）。
５．データ管理部１２０は、このＦＳＩＢに関するクラスタブロック情報をＦＳ用のクラスタブロック情報テーブル３３ｂに追加する（ステップＳ３５０）。
６．データ管理部１２０は、ＦＳＩＢに書き込んだ低密度トラックに関するクラスタディレクトリ情報を、対応するトラックアドレスとともに、クラスタディレクトリＬＲＵテーブル３１ａの末尾に挿入しなおす（ステップＳ３６０）。
【００５９】
（ＦＳ１２からＩＳ１３への移動）
つぎに、ＦＳ１２からＩＳ１３へのデータ移動について、図１２および図１３に従って説明する。図１２はその動作手順を示すフローチャート、図１３はその動作概念を示す模式図である。
【００６０】
データ管理部１２０は、ＦＳ１２管理下の論理ブロック数が所定の最大論理ブロック数を越えているか否かを判定し（ステップＳ４００）、ＦＳ１２管理下の論理ブロック数が所定の最大論理ブロック数を越えている場合は、図１３に示すように、ＦＳ１２から溢れた論理ブロックをそのままＩＳ１３に移動する。ＦＳ１２は、この実施の形態では、擬似ＳＬＣモードの複数の論理ブロックで構成されるようにしており、擬似ＳＬＣモードの論理ブロックがＦＳ１２からＩＳ１３にそのまま移動される。一度の処理単位で移動する論理ブロック数は、溢れた論理ブロック内の有効クラスタ数などに応じて、以下のルールで決定する（ステップＳ４１０）。
【００６１】
・溢れた論理ブロック内のクラスタ数の合計がＭＬＣモードの１論理ブロック分の境界に近くなるよう、すなわち１論理ブロック分の個数（２ｔ）またはその倍数（ｍ×２ｔ  ｍは自然数）に近くなるように、ＦＳ１２の最も古い論理ブロックから移動する論理ブロックを追加する。例えば、溢れた論理ブロック内のクラスタ数が２ｔ個と２ｔ＋１個の間の値である場合は、クラスタ数が２ｔ＋１個に近く（２ｔ＋１も含む）なるように、移動対象の論理ブロックを増やす。ＭＬＣモードの１論理ブロック分の境界に近くするのは、コンパクション後の論理ブロックに、なるべく多くの有効クラスタを収容させるためである。
【００６２】
・クラスタ数がＩＳ１３で同時にコンパクションできるクラスタ数ｚを超える場合は、このクラスタ数ｚ以下になるような論理ブロック数とする。
・一度の処理で移動する論理ブロック数には、上限値を設ける。この制限は、ＩＳ管理下の論理ブロック数が一時的に増えないようにするためである。
このようにして決定された移動対象の論理ブロックがＦＳ１２からＩＳ１３に移動される（ステップＳ４２０）。
【００６３】
（ＩＳ１３でのコンパクションとデフラグ）
つぎに、ＩＳ１３でのコンパクションとデフラグ処理について、図１４に示すフローチャートに従って説明する。
【００６４】
データ管理部１２０は、ＩＳ１３管理下の論理ブロック数が所定の最大論理ブロック数を越えているか否かを判定し（ステップＳ５００）、ＩＳ管理下の論理ブロック数が最大論理ブロック数を越えた場合に、ＭＳ１１へのデータ移動（デフラグ処理）と、コンパクション処理を実行することによって、管理下の論理ブロック数を最大数以下に抑える（ステップＳ５１０）。データの消去単位（論理ブロック）と、データの管理単位（クラスタ）が異なる場合、ＮＡＮＤメモリ１０の書き換えが進むと、無効なデータによって、論理ブロックは穴あき状態になる。このような穴あき状態の論理ブロックが増えると、実質的に使用可能な論理ブロックが少なくなり、ＮＡＮＤメモリ１０の記憶領域を有効利用できないので、有効クラスタを集めて、違う論理ブロックに書き直すことをコンパクションという。デフラグ処理とは、ＦＳ１２，ＩＳ１３のクラスタをトラックに統合して、ＭＳ１１に追い出す処理をいう。デフラグ処理として、ＩＳ１３内のみのクラスタをトラックに統合して、ＭＳ１１に追い出すようにしてもよい。
【００６５】
つぎに、本実施の形態の要部について説明する。上述したＳＳＤ１００において、ＮＡＮＤメモリ１０上でバッファとして機能するＦＳ１２、ＩＳ１３にはリソースに制限がある。すなわち、ＮＡＮＤメモリ１０は、ホスト１から見えるユーザデータ記憶領域（リザーブド領域という）の他に、ホスト１からは見えない記憶領域（マージン領域という）を通常備えている。リザーブド領域は、ホスト１で使用される論理アドレスとしてのＬＢＡによって指定可能な領域であり、ＭＳ１１がこれに対応する。マージン領域は、ＦＳ１２、ＩＳ１３用の記憶領域と、図６に示した各種管理テーブル用の記憶領域などとして使用される。このように、ＮＡＮＤメモリ１０上のマージン領域は、ユーザからは見えない領域であるため、このマージン領域に多くの記憶領域を割り当てることができず、マージン領域には、そのリソースに制限がある。
【００６６】
このように、ＦＳ１２、ＩＳ１３にはリソースに制限があるため、ＦＳ１２、ＩＳ１３の空きリソース量をできるだけ一定に保つ必要がある。そのため、データ管理部１２０は、ホスト１から一定期間要求が無くアイドル状態へ遷移する時に、所定個数を超えたクラスタがＦＳ１２、ＩＳ１３に格納されていると判定すると、前述したＦＳ１２からＩＳ１３へのデータ移動、コンパクションおよびデフラグ処理などを含むＮＡＮＤ整理を実行する。ＮＡＮＤ整理はホスト１に意識させないように裏処理で実行しており、ホスト１からのアクセス要求やスタンバイ、スリープなどの省電力モードへの遷移要求があれば、ＮＡＮＤ整理の途中であっても直ちにＮＡＮＤ整理を中断して要求を受け付ける。
【００６７】
ＮＡＮＤ整理の実行状態をホスト１へ通知しないようシステムを構成した場合は、ホスト１はＮＡＮＤ整理を実行中であるか否かを知ることができない。このようなシステムでは、ＮＡＮＤ整理中にホスト１から連続したライト要求が発生した場合、ＮＡＮＤ整理も中断され続けることで、ＷＣ２１からＮＡＮＤメモリ１０へのデータ追い出しが発生したときに、ＦＳ１２の空きリソースが足りず、低密度トラックであるにも関わらず高密度トラック格納用のＭＳ１１への強制的な記録が行われる前述のバイパスモードに遷移する確率が上がり、コマンドレスポンスおよび書き込み効率の低下に繋がる。また、ホスト１からのライト要求を実行直後にスタンバイ、スリープ遷移要求された場合は、ＮＡＮＤ整理が中断され続けた後（さらにその状態から電源を切られた場合も含め）、その復帰後のライト要求でも同様の現象が発生する。
【００６８】
そこで、本実施の形態では、ホスト１がＳＳＤ１００に対しＮＡＮＤメモリ１０の整理を実行／中止させるコマンド（以下、整理実行要求コマンドＥＸＥ＿ＯＲＧ、整理中止要求コマンドＡＢＴ＿ＯＲＧという）と、ホスト１がＮＡＮＤメモリ１０の整理の実行状態を確認するコマンド、すなわち整理の実行状態の通知を要求するコマンド（以下、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧという）とを新たに定義する。ホスト１から整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧが入力された場合、ＳＳＤ１００は、その応答として、ホスト１にＮＡＮＤメモリ１０の整理状態を通知する。
【００６９】
まず、ＮＡＮＤ整理について詳述する。ＮＡＮＤ整理としては、この実施形態では、ＦＳ１２からＩＳ１３へのデータ移動、デフラグ、コンパクションを含むものとする。ＮＡＮＤ整理は、この実施形態では、例えば、
・ホスト１から一定期間要求が無くアイドル状態へ遷移するときに、
・ホスト１から整理実行要求コマンドＥＸＥ＿ＯＲＧを受信したときに、
ＦＳ１２、ＩＳ１３の空きリソースが不足している場合、あるいはクラスタ管理用の管理テーブル（クラスタディレクトリテーブル３１、クラスタテーブル３２）の空きリソースが不足している場合に、実行される。
【００７０】
図１５は、ＮＡＮＤ整理をトリガするための複数のパラメータ（ＮＡＮＤリソース名）と、２つの閾値（目標値、上限値）と、整理の具体的アクションとの関係の一例を示す図である。ＮＡＮＤ整理をトリガするための複数のパラメータ（リソース名）としては、
・ＦＳブロック数（ＦＳ１２に所属する論理ブロック数）
・ＩＳブロック数（ＩＳ１３に所属する論理ブロック数）
・クラスタディレクトリ（クラスタディレクトリテーブル３１の占有容量）
・クラスタテーブル（クラスタテーブル３２の占有容量）
がある。これらＮＡＮＤ整理をトリガするための複数のパラメータをＮＡＮＤリソース使用量（使用リソース量）とも呼ぶ。
【００７１】
これら４つのパラメータには、ＮＡＮＤ整理をトリガするために、２つの閾値（目標値、上限値）が設定されている。図１５において、各パラメータに設定されている「最大値」は各パラメータが取り得る実質的な最大値を示すもので、ＮＡＮＤ整理をトリガする閾値としての意味はない。「上限値」は、使用中のリソース量が少なくともこの値以下になるまで、ＮＡＮＤ整理を継続するという値であり、使用リソース量が上限値を超えている場合は、ＷＣ２１からＦＳ１２への追い出しが不可能となりバイパスモードへと遷移するため、ＷＣ２１からＮＡＮＤメモリ１０への追い出し後に使用リソース量が上限値以下になるようにＮＡＮＤ整理が実行される。「目標値」は、この値以下になるまで、ＮＡＮＤ整理を続行するという値であり、余裕を持ったリソースを確保するために、ＮＡＮＤメモリ１０がアイドル時に先行して使用リソース量が目標値以下になるようにＮＡＮＤ整理を実行する。最大値、上限値、目標値は、Ｘmax＞Ｘlmt＞Ｘtgt、Ｙmax≧Ｙmax＞Ｙlmt、Ｚmax＞Ｚlmt＞Ｚtgt、Ｗmax＞Ｗlmt≧Ｚtgtの大小関係を持つ。
【００７２】
この実施の形態では、図１５に示すように、ＦＳブロック数が上限値Ｘlmt、あるいは目標値Ｘtgtを越えている場合は、ＦＳ１２からＩＳ１３へのデータ移動が実行され、ＩＳブロック数が上限値Ｙlmt、あるいは目標値Ｙtgtを越えている場合は、コンパクションが実行され、クラスタディレクトリテーブル３１の占有容量が、上限値Ｚlmt、あるいは目標値Ｚtgtを越えている場合は、デフラグが実行され、クラスタテーブル３２の占有容量が、上限値Ｗlmt、あるいは目標値Ｗtgtを越えている場合は、デフラグが実行される。なお、ＦＳブロック数が上限値Ｘlmt、あるいは目標値Ｘtgtを越えている場合、ＦＳ１２からＩＳ１３へのデータ移動の他にデフラグを行うようにしてもよいし、ＩＳブロック数が上限値Ｙlmt、あるいは目標値Ｙtgtを越えている場合に、コンパクションの他にデフラグを行うようにしてもよく、クラスタ用の管理テーブル（クラスタディレクトリテーブル３１、クラスタテーブル３２）が上限値、あるいは目標値を越えている場合、コンパクションを行うようにしてもよく、使用リソース量が閾値を越えている場合のアクションは、図１５に示したものに限らない。
【００７３】
図１６は、整理実行要求コマンドＥＸＥ＿ＯＲＧ、整理中止要求コマンドＡＢＴ＿ＯＲＧ、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧを、ＳＡＴＡ（Serial  ＡＴＡ）インタフェースに適用した場合の、ホストからデバイスに指示を出すためのRegister  Device  to  HostのＦＩＳ（Frame  Instruction  Structure）の一例を示すものである。図１６に示すＦＩＳでは、フィーチャーフィールドの値が０１ｈの場合、整理実行要求（整理実行要求コマンドＥＸＥ＿ＯＲＧ）が指定され、０２ｈの場合、整理状態通知要求（整理状態通知要求ＲＱＳＴＳ＿ＯＲＧ）が指定され、０３ｈの場合、整理中止要求（整理中止要求コマンドＡＢＴ＿ＯＲＧ）が指定される。
【００７４】
コマンドフィールドには、整理実行要求コマンドＥＸＥ＿ＯＲＧ、整理中止要求コマンドＡＢＴ＿ＯＲＧ、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧに共通の所定のコマンドコードが指定される。カウントフィールドは、Ｎ／Ａ（該当なし）である。ＬＢＡフィールドには、整理実行要求コマンドＥＸＥ＿ＯＲＧが有する２つのモードの何れを実行するかが指定される。すなわち、フィーチャーフィールドの値が０１ｈの場合に、ＬＢＡフィールドの値が０１ｈの場合は、ショートモード（短時間モード）でのＮＡＮＤ整理実行が指定され、ＬＢＡフィールドの値が０２ｈの場合は、ロングモード（長時間モード）でのＮＡＮＤ整理実行が指定される。ショートモードが指定された場合は、ＮＡＮＤメモリ１０の使用リソース量を、上限値以下になるようなＮＡＮＤ整理が実行され、ロングモードが指定された場合は、ＮＡＮＤメモリ１０の使用リソース量を、目標値以下になるようなＮＡＮＤ整理が実行される。
【００７５】
図１７は、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧをＳＡＴＡインタフェースに適用した場合の、デバイスからホストに実行結果を通知するためのRegister  Host  to  DeviceのＦＩＳの一例を示すものである。図１７に示すＦＩＳでは、フィーチャーフィールドでＮＡＮＤ整理の実行状態を示すようにしており、フィーチャーフィールドの値が００ｈの場合、現在ＮＡＮＤ整理が「非実行中」であることを示し、０１ｈである場合は、現在ＮＡＮＤ整理が「中断中」であることを示し、０２ｈである場合は、現在ＮＡＮＤ整理が「実行中」であることを示す。初期状態は「非実行中」、ＮＡＮＤ整理が開始（再開）されると「実行中」、ＮＡＮＤ整理が中断されると「中断中」、ＮＡＮＤ整理が完了すると「非実行中」となる。コマンドフィールドには、図１６に示したコマンドフィールドに指定されるコマンドコードと同じコマンドコードが指定される。
【００７６】
図１７において、カウントフィールドはＮＡＮＤ整理内容を示すフィールドであり、カウントフィールドには、ＮＡＮＤ整理の実行対象リソースと、実行対象リソース閾値（上限値および目標値のうちの何れの閾値に対してＮＡＮＤ整理を実行しているか）とを含んでいる。フィーチャーフィールドでＮＡＮＤ整理の実行状態が「非実行中」であれば、カウントフィールドは不定となる。図１７の場合は、ＮＡＮＤ整理の対象リソースとしてＦＳブロック数およびＩＳブロック数の２つを採用している。カウント値が００ｈであるときはＦＳブロック数を上限値Ｘlmt以下にするＮＡＮＤ整理を行っていることを示し、カウント値が０１ｈであるときはＦＳブロック数を目標値Ｘtgt以下にするＮＡＮＤ整理を行っていることを示し、カウント値が１０ｈであるときはＩＳブロック数を上限値Ｙlmt以下にするＮＡＮＤ整理を行っていることを示し、カウント値が１１ｈであるときはＩＳブロック数を目標値Ｙtgt以下にするＮＡＮＤ整理を行っていることを示している。ＮＡＮＤ整理の対象リソースとしてクラスタディレクトリテーブル３１、クラスタテーブル３２などのクラスタ管理テーブルも含める場合は、これらのＮＡＮＤリソースの整理内容が判るようにカウントフィールドのフォーマットを変更する。
【００７７】
図１７において、ＬＢＡフィールドは、ＮＡＮＤ整理の進捗度を示すフィールドである。フィーチャーフィールドでＮＡＮＤ整理の実行状態が「非実行中」であれば、ＬＢＡフィールドは不定となる。この進捗度としては、ＮＡＮＤ整理の対象である各使用リソース量の最大値からＮＡＮＤ整理のリソース量の閾値までを１００％として、現在のリソース量からＮＡＮＤ整理の進捗度を算出することが出来る。この進捗度として、
（１）各リソース閾値別に対する進捗度（最大値→上限値 また上限値→目標値）
（２）各リソース単位での進捗度（最大値→目標値）
（３）各リソースへの重み付けによる総合値でのＮＡＮＤ整理全体の進捗度
のうちの何れかを通知してもよく、全てを通知してもよい。
【００７８】
例えば、ＮＡＮＤ整理対象リソースが「ＦＳブロック数」と「ＩＳブロック数」の場合、ＦＳブロック数のリソース設定が最大値１０００、上限値８００、目標値５００とし、ＩＳブロック数のリソース設定が最大値１０００、上限値９００、目標値８００として、現在のＦＳの使用ブロック数が９００、ＩＳの使用ブロック数が８００の場合は、
各リソースの閾値別に対する進捗度は、
「ＦＳブロック数」の「上限値」に対する進捗度、５０％
「ＦＳブロック数」の「目標値」に対する進捗度、０％
「ＩＳブロック数」の「上限値」に対する進捗度、１００％
「ＩＳブロック数」の「目標値」に対する進捗度、１００％
各リソース単位での進捗度は、
「ＦＳブロック数」に対する進捗度、２０％
「ＩＳブロック数」に対する進捗度、１００％
ＮＡＮＤ整理全体に対しての重み付けがＦＳブロック数０．９、ＩＳブロック数０．１とした場合、
ＮＡＮＤ整理全体の進捗度は、２０×０．９＋１００×０．１＝２８％となる。
【００７９】
図１８は、本実施の形態の要部の機能構成を示すブロック図である。前述したように、ＮＡＮＤメモリ１０は、ＭＳ１１、ＦＳ１２，ＩＳ１３と、図６に示した各種管理テーブルを記憶する管理テーブル記憶部１５を備えている。ＲＡＭ２０には、ＷＣ２１が備えられ、また前述したマスターテーブルが記憶されている。データ管理部であるコントローラ１２０は、ホスト１からのコマンドを解析するコマンド解析部２１０と、ホスト１からのデータをＷＣ２１に対して書き込む制御を行うＷＣ書き込み制御部２１１と、ＷＣ２１からＮＡＮＤメモリ１０にデータを追い出してＮＡＮＤメモリ１０に書き込む追い出し制御を実行するＷＣ追い出し制御部２１２と、ＮＡＮＤメモリ１０での整理（コンパクション、デフラグ、ＦＳ１２からＩＳ１３へのデータ移動など）を実行するＮＡＮＤ整理部２１４と、ＮＡＮＤメモリ１０での現在の整理状態を判断してホスト１に通知する整理状態通知部２１５を備えている。ＮＡＮＤ整理部２１４は、ホスト１から整理実行要求コマンドＥＸＥ＿ＯＲＧが入力されたとき、あるいはホスト１から一定期間要求が無くアイドル状態へ遷移するときに、ＮＡＮＤメモリ１０の使用リソース量が図１５に示した上限値または目標値を上回っている場合に、ＮＡＮＤ整理を実行する。
【００８０】
図１９は、ホスト１とＳＳＤ１００との間でのＮＡＮＤ整理に関するコマンドの送受信シーケンスの一例を示すものである。図１９では、まずホスト１からＳＳＤ１００に整理実行要求コマンドＥＸＥ＿ＯＲＧが送信され、この整理実行要求コマンドＥＸＥ＿ＯＲＧに対する応答がＳＳＤ１００からホスト１に返信されている。ＮＡＮＤ整理実行要求ＯＲＧの受信をトリガとして、ＳＳＤ１００ではＮＡＮＤ整理を開始する。図１９では、この後、ＳＳＤ１００でのＮＡＮＤ整理状態を確認するためにホスト１からＳＳＤ１００に整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧが送信されており、これに応答してＮＡＮＤの整理状態を示すデータを含む応答信号がＳＳＤ１００からホスト１に返信されている。図１９では、ホスト１がＮＡＮＤの整理状態を確認した後、ＮＡＮＤの整理を中止するために、整理中止要求コマンドＡＢＴ＿ＯＲＧがホスト１からＳＳＤ１００に送信されている。この整理中止要求コマンドＡＢＴ＿ＯＲＧにより、ＳＳＤ１００では、ＮＡＮＤの整理を中止するとともに、その応答信号をホスト１に返信している。
【００８１】
図２０は、整理実行要求コマンドＥＸＥ＿ＯＲＧを受信したときのＳＳＤ１００での動作手順を示すものである。コントローラ１２０のコマンド解析部２１０は、ホスト１から送信されたコマンドのフィーチャーフィールドを解析し、受信したコマンドが整理実行要求コマンドＥＸＥ＿ＯＲＧであると判断すると（ステップＳ６００）、つぎにＬＢＡフィールドを解析することで、ショートモードが指定されているかロングモードが指定されているかを判定し、その判定結果をＮＡＮＤ整理部２１４に通知する（ステップＳ６１０）。ＮＡＮＤ整理部２１４は、ショートモードが指定されている場合は、ＮＡＮＤ整理対象のリソースのうち上限値を超えているリソースが存在するか否かを判定し（ステップＳ６２０）、上限値が存在するリソースが存在して場合は、そのリソースに対応したＮＡＮＤ整理（デフラグ、コンパクション、ＦＳからＩＳへのデータ移動など）を実行して、使用リソース量を上限値以下にする（ステップＳ６４０）。また、ＮＡＮＤ整理部２１４は、ロングモードが指定されている場合は、ＮＡＮＤ整理対象のリソースのうち目標値を超えているリソースが存在するか否かを判定し（ステップＳ６３０）、目標値が存在するリソースが存在して場合は、そのリソースに対応したＮＡＮＤ整理（デフラグ、コンパクション、ＦＳからＩＳへのデータ移動など）を実行して、使用リソース量を目標値以下にする（ステップＳ６４０）。
【００８２】
図２１は、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧを受信したときのＳＳＤ１００での動作手順を示すものである。コマンド解析部２１０は、ホスト１から送信されたコマンドのフィーチャーフィールドを解析し、受信したコマンドが整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧであると判断すると（ステップＳ７００）、整理状態通知部２１５にその旨を通知する。この通知を受けると、整理状態通知部２１５は、現在のＮＡＮＤ整理状態が、中断中か、実行中か、非実行中のいずれであるかをＮＡＮＤ整理部２１４に問い合わせる（ステップＳ７０５、Ｓ７１０）。整理状態通知部２１５は、ＮＡＮＤ整理状態が非実行中であると判断した場合は、ホスト１に返信する応答コマンドのＮＡＮＤ整理状態のフィールド（図１６の場合はフィーチャーフィールド）を非実行中「００ｈ」に設定し（ステップＳ７１５）、応答コマンドをホスト１に返信させる（ステップＳ７８０）。
【００８３】
また、整理状態通知部２１５は、ＮＡＮＤ整理状態が中断中であると判断した場合は、ホスト１に返信する応答コマンドのＮＡＮＤ整理状態のフィールドを中断中「０１ｈ」に設定し（ステップＳ７２５）、ＮＡＮＤ整理状態が実行中である場合は、ホスト１に返信する応答コマンドのＮＡＮＤ整理状態のフィールドを実行中「０２ｈ」に設定する（ステップＳ７２０）。つぎに、整理状態通知部２１５は、ＮＡＮＤ整理部２１４に問い合わせ、整理対象のリソースが何であるかを判定する（ステップＳ７３０）。図２１の場合は、整理対象のリソースとしては、ＦＳブロック数と、ＩＳブロック数の２つである場合を示している。整理状態通知部２１５は、整理対象のリソースがＦＳブロック数である場合は、ＮＡＮＤ整理対象リソースのフィールド（図１７ではカウントフィールドの上位数ビット）をＦＳブロック数「０ｈ」に設定し（ステップＳ７３５）、整理対象のリソースがＩＳブロック数である場合は、ＮＡＮＤ整理対象リソースのフィールドをＩＳブロック数「１ｈ」に設定する（ステップＳ７４０）。
【００８４】
つぎに、整理状態通知部２１５は、ＮＡＮＤ整理部２１４に問い合わせ、現在の使用リソース量を判定する（ステップＳ７５０）。整理状態通知部２１５は、現在の使用リソース量が上限値以上である場合は、ＮＡＮＤ整理対象リソース閾値のフィールド（図１７ではカウントフィールドの下位数ビット）を上限値「０ｈ」に設定し（ステップＳ７６０）、現在の使用リソース量が上限値より少なく目標値より多い場合は、ＮＡＮＤ整理対象リソース閾値のフィールドを目標値「１ｈ」に設定する（ステップＳ７５５）。つぎに、ＮＡＮＤ整理の進捗度を、（１）リソース閾値別で、（２）リソース単位で、（３）重み付けによる総合値の何れかあるいは全てについて計算し（ステップＳ７６５）、計算した進捗度をＮＡＮＤ整理進捗度のフィールド（図１７ではＬＢＡフィールド）に設定する（ステップＳ７７０）。そして、ＮＡＮＤ整理部２１４は、各フィールドに現在のＮＡＮＤ整理状態に対応する値が設定された応答コマンドをホスト１に返信させる（ステップＳ７８０）。
【００８５】
図２２は、ホスト１が整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧに対する応答信号をＳＳＤ１００から受信した場合の制御手順を示すものであり、この動作例では、ＳＳＤ１００から通知されたＲＱＳＴＳ＿ＯＲＧに対する応答信号の内容に応じてパワーモードをスタンバイモードに遷移させている。この場合、スタンバイモードへの遷移条件は、ＦＳブロック数についてのＮＡＮＤ整理が目標値に対して５０％以上進行していることとする。
【００８６】
ホスト１では、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧを発行し（ステップＳ８００）、その後、ＳＳＤ１００からの応答がない等のエラーが発生した場合は（ステップ）、ＳＳＤ１００側からの応答に関係なく、スタンバイ条件が成立したらパワーモードをスタンバイに遷移させる（ステップＳ８６０）。一方、ホスト１は、エラーが発生せず、ＳＳＤからの応答コマンドを受信した場合（ステップＳ８２０）、応答コマンド中のＮＡＮＤ整理状態フィールドを確認し、ＳＳＤ１００がＮＡＮＤ整理を実行中でない場合は（ステップＳ８３０  ＮＯ）、スタンバイ条件が成立したらパワーモードをスタンバイに遷移させる（ステップＳ８６０）。
【００８７】
ホスト１は、ＳＳＤ１００がＮＡＮＤ整理を実行中であると判断すると、つぎに、応答コマンド中のＮＡＮＤ整理対象リソースのフィールドを確認し（ステップＳ８３５）、ＳＳＤ１００がＦＳブロック数に対してＮＡＮＤ整理を実行中でない場合は（ステップＳ８４０  ＮＯ）、処理を終了し、ＳＳＤ１００がＦＳブロック数に対してＮＡＮＤ整理を実行中である場合は（ステップＳ８４０  ＹＥＳ）、つぎに応答コマンド中のＮＡＮＤ整理対象リソース閾値のフィールドを確認する（ステップＳ８４５）。この確認により、ＳＳＤ１００がＦＳブロック数を目標値にするためのＮＡＮＤ整理を行っていないと判断した場合は（ステップＳ８５０  ＮＯ）、処理を終了する。しかし、ＳＳＤ１００がＦＳブロック数を目標値にするためのＮＡＮＤ整理を行っていると判断した場合は（ステップＳ８５０  ＹＥＳ）、つぎに、ＮＡＮＤ整理進捗度フィールドを確認する（ステップＳ８５５）。このＮＡＮＤ整理進捗度フィールドの確認によりＦＳブロック数についてのＮＡＮＤ整理が目標値に対して５０％以上進行していることが確認できれば、ホスト１は、スタンバイ条件が成立したらパワーモードをスタンバイに遷移させる（ステップＳ８６０）。しかし、ＦＳブロック数についてのＮＡＮＤ整理が目標値に対して５０％以上進行していな場合は、スタンバイへの遷移を行わず、ここで処理を終了する。
【００８８】
このように第１の実施形態においては、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧを定義するようにしたので、ホストがＮＡＮＤ整理の実行状態を知ることが可能となり、ＮＡＮＤ整理の実行状態を意識して、アクセス制御やスタンバイ、スリープの省電力モードへの遷移制御を実行できる。ホストがＮＡＮＤ整理の進捗度を監視しながらホスト側の都合も考慮して、ライト要求やパワーモードのスタンバイ、スリープ遷移要求を遅延させることで、後続のライト要求に対してのコマンドレスポンス性能を細かに調整することができる。また、ホストが消費電力を意識して小まめなスタンバイ、スリープ遷移が必要な場合も、ＮＡＮＤ整理が完了または進行していることを確認した上でスタンバイ、スリープ遷移の実行が可能なため、ＮＡＮＤ整理を先送りにせずに効率的な省電力制御ができる。また、この実施の形態では、整理実行要求コマンドＥＸＥ＿ＯＲＧを定義するようにしたので、ホスト側がＳＳＤに任意のタイミングでＮＡＮＤ整理を実行させることができ、ホスト側から見ると、WRITEコマンド等の応答性の向上が期待でき、ＳＳＤでは、ＮＡＮＤメモリへの書き込み効率を向上させることが可能となる。また、整理実行要求コマンドＥＸＥ＿ＯＲＧは、ショートとロングの２つのモードを有するようにしたので、ホストの都合に応じて、２つのモードを使い分けるようにすれば、WRITEコマンド等の応答性のさらなる向上が期待でき、ＳＳＤでは、ＮＡＮＤメモリへの書き込み効率をさらに向上させることが可能となる。
【００８９】
上記実施形態では、ＭＳ１１の前段にＦＳ１２，ＩＳ１３の２つのバッファを形成するようにしたが、ＭＳ１１の前段に、ＷＣ２１から低密度データが入力されて、クラスタ管理される１つのバッファＶＳを形成するようにしてもよい。ＭＳ１１に１つのバッファＶＳを形成する場合は、整理対象のＮＡＮＤリソース名としては、ＶＳブロック数、ＶＳ用の管理テーブルの占有容量などを採用し、そのＮＡＮＤ整理のアクション例としては、例えば、バッファＶＳのクラスタをトラックに統合してＭＳ１１に追い出すデフラグ処理、バッファＶＳでのコンパクションなどを採用する。
【００９０】
また、上記実施の形態では、ＮＡＮＤメモリ１０は、複数のチャネルによってチャネル並列動作が可能に構成したが、単一チャネルでＮＡＮＤメモリ１０とドライブ制御回路４とを接続してもよい。また、バンクインターリーブを行わないＮＡＮＤメモリ１０に対し、あるいはプレーン並列動作を行わないＮＡＮＤメモリ１０に対して、本発明を適用するようにしてもよい。
【００９１】
また、整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧに対するＳＳＤ１００からの応答信号には、ＮＡＮＤ整理の対象リソース名と、整理対象閾値とを除き、ＮＡＮＤ整理の状態（実行中／非実行中）と、進捗度のみを含めるようにしてもよい。
【００９２】
［第２の実施形態］
図２３にしたがって第２の実施形態について説明する。図２３は、ＮＡＮＤメモリ１０およびＲＡＭ２０内に形成された第２の実施形態の機能ブロックを示すものである。第１の実施形態では、トラックと論理ブロックサイズが同じとしたが、トラックと論理ブロックサイズが異なるようにしてもよい。第２の実施形態では、論理ブロックサイズはトラックサイズよりも大きいものとする。このようにデータの消去の単位である論理ブロックサイズと、データの管理単位であるトラックサイズが異なると、ＭＳ１１においても、ＮＡＮＤメモリの書き換えが進むと、無効な（最新ではない）データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、ＮＡＮＤメモリ１０の記憶領域を有効利用できない。そこで、この第２の実施形態では、ＭＳ１１においても、ＭＳ１１に割り当てられている論理ブロックの個数がＭＳ１１として許容されるブロック数の上限値を越えるような状況が発生すると、コンパクションを行って無効なフリーブロックを作るようにする。ＭＳ１１でのコンパクションでは、有効トラック数の少ない論理ブロックから、有効トラックを集めて、新たな論理ブロック（フリーブロック）に集めた有効トラックを書き込むといった処理を実行する。
【００９３】
前述したように、図４、図２３に示したバッファ構造では、ＦＳ１２を設けることで、後段のＩＳ１３におけるコンパクション処理に更新頻度の高いデータが紛れ込む可能性を低減している。第２の実施形態では、ＭＳ１１でコンパクションを行うこととしたので、ＭＳ１１の前段にＦＳ１１と同様の機能を有するバッファ（トラック前段ストレージ領域：ＴＦＳ）１６を設け、ＭＳ１１におけるコンパクション処理に更新頻度の高いデータが紛れ込む可能性を低減させる。
【００９４】
ＴＦＳ１６は、トラック単位でデータが管理され、データの入力順序に論理ブロックが並んだＦＩＦＯ構造を有している。ＴＦＳ１６には、ＷＣ２１、ＦＳ１２、ＩＳ１３からデータがトラック単位に書き込まれる。複数のトラックが書き込まれてフルになった論理ブロックは、後段に移動される。ＴＦＳ１６のブロック数がＴＦＳ１６として許容される所定の上限値を超えると、最も古いブロックがＴＦＳ１６からＭＳ１１に追い出される。なお、ＴＦＳ１６に、ＭＳ１１内のコンパクション処理によって形成された論理ブロックを入力するようにしてもよい。
【００９５】
また、ＴＦＳ１６を設けた場合、ＭＳ１１に入力されるデータは、ＴＦＳ１６を経由する場合と、ＴＦＳ１６を経由せずにＭＳ１１に直接入力される場合との２経路となる。ＷＣ２１から高密度トラックをＭＳ１１に追い出す場合は、高密度トラックを論理ブロック分集め、論理ブロック分集められた高密度トラックについては直接ＭＳ１１に追い出し、１論理ブロック分に満たない個数の高密度トラックをＴＦＳ１６に追い出す。デフラグ処理などにより、ＦＳ１２あるいはＩＳ１３からＭＳ１１へデータを追い出す場合、追い出しクラスタをトラック単位にまとめ、トラック内有効クラスタ数が所定の閾値以上のトラックを論理ブロック分集め、論理ブロック分集められたトラックについては直接ＭＳ１１に追い出し、１論理ブロック分に満たない個数のトラックをＴＦＳ１６に追い出す。
【００９６】
このように、第２の実施形態においては、ＭＳ１１でコンパクションを行うとともに、ＭＳ１１の前段にＴＦＳ１６を設けている。このため、この第２の実施形態においては、ＮＡＮＤ整理の対象リソースに、ＴＦＳブロック数と、ＭＳブロック数を追加する。ＴＦＳブロック数とは、ＴＦＳに所属する論理ブロック数であり、ＭＳブロック数とは、ＭＳ１１に所属する現在の論理ブロック数（フリーブロックＦＢからＭＳ管理下のブロックとなったブロック数）であり、ＭＳ最大ブロック数に対する有効データの割合であるともいえる。そして、ＴＦＳブロック数、ＭＳブロック数に対し、上限値および目標値を設定し、ＴＦＳブロック数、ＭＳブロック数が上限値、あるいは目標値を上回った場合に、ＭＳコンパクションなどのＮＡＮＤ整理を実行する。
【００９７】
したがって、ホスト１から整理実行要求コマンドＥＸＥ＿ＯＲＧを受信したときは、ＴＦＳブロック数と、ＭＳブロック数もＮＡＮＤ整理対象のリソースに含め、これらのリソースが上限値、目標値を上回っているときは、ＭＳコンパクションなどのＮＡＮＤ整理を実行する。また、ホスト１から整理状態通知要求コマンドＲＱＳＴＳ＿ＯＲＧを受信した場合は、これらのＴＦＳブロック数と、ＭＳブロック数もＮＡＮＤ整理対象のリソースに含めて、ＮＡＮＤ整理状態をホスト１に通知する。
【００９８】
なお、論理ブロックサイズがトラックサイズよりも大きい場合でも、ＭＳ１１の前段にＦＳ１２，ＩＳ１３の２つのバッファを形成するのではなく、ＭＳ１１の前段に、前述した１つのバッファＶＳを形成するようにしてもよい。この場合の整理対象のＮＡＮＤリソース名としては、ＶＳブロック数、ＶＳ用の管理テーブルの占有容量、ＴＦＳブロック数、ＭＳブロック数などを採用し、そのＮＡＮＤ整理のアクション例としては、例えば、バッファＶＳのクラスタをトラックに統合してＭＳ１１に追い出すデフラグ処理、バッファＶＳでのコンパクション、ＭＳ１１でのコンパクションなどを採用する。
【００９９】
［第３の実施の形態］
図２４は、ＳＳＤ１００を搭載した情報処理装置としてのパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【０１００】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（optical  disk  device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【０１０１】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１０２】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１０３】
図２５は、ＳＳＤ１００を搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１１、及びネットワークコントローラ１３１２等を備えている。
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１０４】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１０５】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１０６】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１０７】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【０１０８】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１０９】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１１０】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【０１１１】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がＳＳＤ１００に入力される。
【０１１２】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１１３】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１１４】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１２は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１１５】
なお、ＳＳＤ１００が搭載される情報処理装置として、スチルカメラ、ビデオカメラなどの撮像装置を採用してもよい。
【符号の説明】
【０１１６】
１  ホスト、４  ドライブ制御回路、１０  ＮＡＮＤメモリ、１１  ＭＳ、１２  ＦＳ、１３  ＩＳ、１６  ＴＦＳ、１０４  プロセッサ、１２０  データ管理部、１００  ＳＳＤ、２１０  コマンド解析部、２１１  ＷＣ書き込み制御部、２１２  ＷＣ追い出し制御部、２１４  ＮＡＮＤ整理部、２１５  整理状態通知部。
【図１】
2012008651.tif 000003
【図２】
2012008651.tif 000004
【図３】
2012008651.tif 000005
【図４】
2012008651.tif 000006
【図５】
2012008651.tif 000007
【図６】
2012008651.tif 000008
【図７】
2012008651.tif 000009
【図８】
2012008651.tif 000010
【図９】
2012008651.tif 000011
【図１０】
2012008651.tif 000012
【図１１】
2012008651.tif 000013
【図１２】
2012008651.tif 000014
【図１３】
2012008651.tif 000015
【図１４】
2012008651.tif 000016
【図１５】
2012008651.tif 000017
【図１６】
2012008651.tif 000018
【図１７】
2012008651.tif 000019
【図１８】
2012008651.tif 000020
【図１９】
2012008651.tif 000021
【図２０】
2012008651.tif 000022
【図２１】
2012008651.tif 000023
【図２２】
2012008651.tif 000024
【図２３】
2012008651.tif 000025
【図２４】
2012008651.tif 000026
【図２５】
2012008651.tif 000027