(57)【要約】【課題】ホストからの書き込み要求に対する応答性を全般的に向上させる。【解決手段】ＷＣ追い出し制御部２１１は、ＷＣリソース使用量を上限値Ｃlmtより値が小さいＡＦ（Auto  Flush）閾値Ｃafと比較し、ＷＣリソース使用量がＡＦ閾値Ｃafを越えているときは、ＮＡＮＤメモリ１０での整理の状態を確認し、ＮＡＮＤメモリ１０での整理が充分に進んでいる場合には、早めにＷＣ（ライトキャッシュ）２１からＮＡＮＤメモリ１０にデータを追い出す。【選択図】        図１６
2010157142.tif 000002
【特許請求の範囲】
【請求項１】
揮発性のキャッシュメモリとしての第１の記憶部と、
不揮発性の第２の記憶部と、
ホスト装置からのデータを前記第１の記憶部を介して前記第２の記憶部に書き込むコントローラとを備えるメモリシステムにおいて、
前記コントローラは、前記第２の記憶部でのリソース使用量が所定値を越えている場合に第２の記憶部のデータを整理してリソースを増加させる整理手段と、
前記第１の記憶部のリソース使用量が第１の閾値を越えかつ第１の閾値より大きい第２の閾値より小さい場合であって、かつ前記整理手段による整理が終了している場合は、第１の記憶部でのリソース使用量が第１の閾値を越えなくなるまで、第１の記憶部のデータを第２の記憶部に追い出す第１の追い出し制御手段と、
前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了している場合は、第１の記憶部のリソース使用量が第２の閾値を越えなくなるまで、第１の記憶部のデータを第２の記憶部に追い出し、前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了していない場合は、前記整理手段による整理が終了した後、第１の記憶部のデータを第２の記憶部に追い出す第２の制御手段と、
を備えることを特徴とするメモリシステム。
【請求項２】
揮発性のキャッシュメモリとしての第１の記憶部と、
不揮発性の第２の記憶部と、
ホスト装置からのデータを前記第１の記憶部を介して前記第２の記憶部に書き込むコントローラとを備えるメモリシステムにおいて、
前記コントローラは、前記第２の記憶部でのリソース使用量が所定値を越えている場合に第２の記憶部のデータを整理してリソースを増加させる整理手段と、
前記第１の記憶部のリソース使用量が第１の閾値を越えかつ第１の閾値より大きい第２の閾値より小さい場合であって、かつ前記整理手段による整理が終了している場合は、第１の記憶部でのリソース使用量が第１の閾値を越えなくなるまで、第１の記憶部のデータを第２の記憶部に追い出す第１の追い出し制御手段と、
前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了している場合は、第１の記憶部のリソース使用量が第２の閾値を越えなくなるまで、第１の記憶部のデータを第２の記憶部に追い出し、前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了していない場合であって、さらに第１の記憶部のリソース使用量が第２の閾値より大きい許容限度としての最大値に達しないでホスト装置からの書き込みが可能な場合は、ホスト装置のから書き込みを行い、前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了していない場合であって、さらに第１の記憶部のリソース使用量が前記最大値に達しないでホスト装置からの書き込みが不可能な場合は、前記整理手段による整理が終了した後、第１の記憶部のデータを第２の記憶部に追い出す第２の制御手段と、
を備えることを特徴とするメモリシステム。
【請求項３】
前記第１および第２の閾値が設定される第１の記憶部のリソース使用量は、複数存在することを特徴とする請求項１または２に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに用いられる外部記憶装置として、ＮＡＮＤ型フラッシュメモリなどのフラッシュメモリを搭載したＳＳＤ（Solid State Drive）が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。ＳＳＤ内には、複数のフラッシュメモリチップ、ホスト装置からの要求に応じて各フラッシュメモリチップのリード/ライト制御を行うコントローラ、各フラッシュメモリチップとホスト装置との間でデータ転送を行うためのバッファメモリ、電源回路、ホスト装置に対する接続インタフェースなどを備えている（例えば、特許文献１）。
【０００３】
ＮＡＮＤ型フラッシュメモリのように、不揮発性半導体記憶素子には、データを記憶させる場合に、ブロックと呼ばれる単位で一度データを消去してからその後に書き込みを行うものがあったり、ページと呼ばれる単位で読み出し／書き込みを行うものがあったり、消去／読み出し／書き込みの単位が固定されていたりするものがある。一方、パーソナルコンピュータなどのホスト機器がハードディスクをはじめとする二次記憶装置に対してデータの読み出し／書き込みを行う単位は、セクタと呼ばれる。セクタは、半導体記憶素子の消去／読み出し／書き込みの単位とは独立に定められており、通常、ブロック、ページ、セクタのサイズは、ブロック＞ページ＞セクタという関係にある。
【０００４】
このように、半導体記憶素子の消去／読み出し／書き込みの単位は、ホスト機器の読み出し／書き込みの単位よりも大きい場合がある。このような半導体記憶素子を用いてハードディスクのようなパーソナルコンピュータの二次記憶装置を構成する場合、ホスト機器としてのパーソナルコンピュータからの小さなサイズのデータは、半導体記憶素子のブロックサイズ、ページサイズに適合させてアドレス変換を行う必要がある。
【０００５】
また、このようなフラッシュメモリを用いて大容量の二次記憶装置を構成する場合においては、特許文献２に示されるように、フラッシュメモリとホスト装置との間に、キャッシュメモリを介在させて、フラッシュメモリでの書き込み回数（消去回数）を減らすように構成されていることが多い。キャッシュメモリにホスト装置からの書き込みが発生した際に、キャッシュメモリが満杯の場合は、キャッシュメモリからフラッシュメモリへのデータ追い出しを行ってから、キャッシュメモリにデータを書き込むことになる。しかしながら、キャッシュメモリがほぼ満杯になってから上記データ追い出しを行うのでは、データ追い出しを行う間、ホスト機器からの書き込み要求を待たせることになり、ホスト機器側から見て応答性のよい二次記憶装置を構成することができない。
【０００６】
また、上述したように、データの消去単位（ブロック）と、データの管理単位が異なる場合、フラッシュメモリの書き換えが進むと、無効な（最新ではない）データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、フラッシュメモリの記憶領域を有効利用できないので、有効な最新のデータを集めて、違うブロックに書き直すコンパクションと呼ばれるフラッシュメモリの整理処理が行われる。
【０００７】
しかしながら、従来のキャッシュメモリの追い出し処理では、フラッシュメモリ側の整理状態を考慮していないので、フラッシュメモリ側の整理が進んでいない場合は、フラッシュメモリへの書き込みに時間がかかり、結果的にホスト側の書き込みコマンドに対する応答性が低下する。
【０００８】
【特許文献１】特許第３６８８８３５号公報
【特許文献２】特表２００７−５２８０７９号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、ホストからの書き込み要求に対する応答性を全般的に向上させることが可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願発明の一態様によれば、揮発性のキャッシュメモリとしての第１の記憶部と、不揮発性の第２の記憶部と、ホスト装置からのデータを前記第１の記憶部を介して前記第２の記憶部に書き込むコントローラとを備えるメモリシステムにおいて、前記コントローラは、前記第２の記憶部でのリソース使用量が所定値を越えている場合に第２の記憶部のデータを整理してリソースを増加させる整理手段と、前記第１の記憶部のリソース使用量が第１の閾値を越えかつ第１の閾値より大きい第２の閾値より小さい場合であって、かつ前記整理手段による整理が終了している場合は、第１の記憶部でのリソース使用量が第１の閾値を越えなくなるまで、第１の記憶部のデータを第２の記憶部に追い出す第１の追い出し制御手段と、前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了している場合は、第１の記憶部のリソース使用量が第２の閾値を越えなくなるまで、第１の記憶部のデータを第２の記憶部に追い出し、前記第１の記憶部のリソース使用量が第２の閾値を越え、かつ前記整理手段による整理が終了していない場合は、前記整理手段による整理が終了した後、第１の記憶部のデータを第２の記憶部に追い出す第２の制御手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ホストからの書き込み要求に対する応答性を全般的に向上させることが可能なメモリシステムを提供できる。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明にかかるメモリシステムの実施の形態を詳細に説明する。
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能および構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１４】
先ず、本明細書で用いる用語について定義しておく。
・物理ページ：ＮＡＮＤ型フラッシュメモリ内部において一括して書き込み／読み出しが可能な単位のこと。
・論理ページ：ＳＳＤ内部で設定される書き込み／読み出し単位であり、１以上の物理ページを組み合わせて構成される。
・物理ブロック：ＮＡＮＤ型フラッシュメモリ内部において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。
・論理ブロック：ＳＳＤ内部で設定される消去単位であり、１以上の物理ブロックを組み合わせて構成される。論理ブロックは、複数の論理ページから構成される。
・セクタ：ホストからの最小アクセス単位のこと。セクタサイズは、例えば５１２Ｂ。
・クラスタ：ＳＳＤ内部で「小さなデータ」を管理する管理単位。クラスタサイズはセクタサイズ以上であり、ホストのＯＳが採用するファイルシステムのデータ管理単位、または、論理ページサイズと等しくなるように定められる。例えば、クラスタサイズの２以上の自然数倍が論理ページサイズとなるように定められてもよい。
・トラック：ＳＳＤ内部で「大きなデータ」を管理する管理単位。クラスタサイズの２以上の自然数倍がトラックサイズとなるように定められる。例えば、トラックサイズが論理ブロックサイズと等しくなるように定められてもよい。
・フリーブロック（ＦＢ）：内部に有効データを含まない、用途未割り当ての論理ブロックのこと。以下の、ＣＦＢ、ＦＦＢの２種類がある。
・コンプリートフリーブロック（ＣＦＢ）：再利用のために消去動作を行う必要があるＦＢのこと。消去動作の実行後は、論理ブロックの先頭に位置する論理ページから書き込むことが可能である。
・フラグメントフリーブロック（ＦＦＢ）：未書き込みの論理ページが残っており、消去動作を実行することなく再利用が可能なＦＢのこと。残りの未書き込み状態のままの論理ページに書き込むことが可能である。
・バッドブロック（ＢＢ）：ＮＡＮＤ型フラッシュメモリ上の、誤りが多いなど記憶領域として使用できない物理ブロックのこと。例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックＢＢとして登録される。
・書き込み効率：所定期間内における、ホストから書き込んだデータ量に対する、論理ブロックの消去量の統計値のこと。小さいほどＮＡＮＤ型フラッシュメモリの消耗度が小さい。
・有効クラスタ：論理アドレスに対応するクラスタサイズの最新データ。
・無効クラスタ：同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったクラスタサイズのデータ。
・有効トラック：論理アドレスに対応するトラックサイズの最新データ。
・無効トラック：同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったトラックサイズのデータ。
・ＭＬＣ（Multi  Level  Cell）モード：多値記憶が可能なＮＡＮＤ型フラッシュメモリにおいて、通常通り、上位ページおよび下位ページを使用して書き込みを行うモード。ＭＬＣモードで使用する１以上の物理ブロックを組み合わせて、ＭＬＣモードの論理ブロックが構成される。
・擬似ＳＬＣ（Single  Level  Cell）モード：多値記憶が可能なＮＡＮＤ型フラッシュメモリにおいて、下位ページのみを使用して書き込みを行うモード。擬似ＳＬＣモードで使用する１以上の物理ブロックを組み合わせて、擬似ＳＬＣモードの論理ブロックが構成される。一度擬似ＳＬＣモードで使用した物理ブロックであっても、消去動作後はＭＬＣモードで使用することが可能である。
［第１の実施形態］
【００１５】
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。また、ＳＳＤ１００は、ＲＳ２３２Ｃインタフェース（ＲＳ２３２Ｃ  Ｉ／Ｆ）などの通信インタフェース３を介して、デバッグ用／製造検査用機器２００との間でデータを送受信することができる。ＳＳＤ１００は、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、コントローラとしてのドライブ制御回路４と、揮発性半導体メモリとしてのＤＲＡＭ２０と、電源回路５と、状態表示用のＬＥＤ６と、ドライブ内部の温度を検出する温度センサ７と、フューズ８とを備えている。
【００１６】
電源回路５は、ホスト１側の電源回路から供給される外部直流電源から複数の異なる内部直流電源電圧を生成し、これら内部直流電源電圧をＳＳＤ１００内の各回路に供給する。また、電源回路５は、外部電源の立ち上がりを検知し、パワーオンリセット信号を生成して、ドライブ制御回路４に供給する。フューズ８は、ホスト１側の電源回路とＳＳＤ１００内部の電源回路５との間に設けられている。外部電源回路から過電流が供給された場合フューズ８が切断され、内部回路の誤動作を防止する。
【００１７】
ＮＡＮＤメモリ１０は、この場合、４並列動作を行う４つの並列動作要素１０ａ〜１０ｄを有し、４つの並列動作要素１０ａ〜１０ｄは、４つのチャネル（ｃｈ０〜ｃｈ３）によってドライブ制御回路４に接続されている。各並列動作要素１０ａ〜１０ｄは、バンクインターリーブが可能な複数のバンク（この場合、４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各バンクは、複数のＮＡＮＤメモリチップ（この場合、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン０、プレーン１の２つの領域（District）に分割されている。プレーン０およびプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、倍速モードを使用することで、同時に消去／書き込み／読み出しを行うことが可能である。このように、ＮＡＮＤメモリ１０の各ＮＡＮＤメモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた倍速モードによる並列動作が可能である。なお、各メモリチップは、４つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
【００１８】
ＤＲＡＭ２０は、ホスト１とＮＡＮＤメモリ１０間でのデータ転送用キャッシュおよび作業領域用メモリなどとして機能する。ＤＲＡＭ２０の作業領域用メモリに記憶されるものとしては、ＮＡＮＤメモリ１０に記憶されている各種管理テーブル（後述する）が起動時などに展開されたマスターテーブル（スナップショット）、管理テーブルの変更差分であるログ情報などがある。ＤＲＡＭ２０の代わりに、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、ＰＲＡＭ（Phase  change  Random  Access  Memory）などを使用しても良い。ドライブ制御回路４は、ホスト１とＮＡＮＤメモリ１０との間でＤＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。また、ドライブ制御回路４は、状態表示用ＬＥＤ６にステータス表示用信号を供給するとともに、電源回路５からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を自回路内およびＳＳＤ１００内の各部に供給する機能も有している。
【００１９】
各ＮＡＮＤメモリチップは、データ消去の単位である物理ブロックを複数配列して構成されている。図２（ａ）は、ＮＡＮＤメモリチップに含まれる１個の物理ブロックの構成例を示す等価回路図である。各物理ブロックは、Ｘ方向に沿って順に配列された（ｐ＋１）個のＮＡＮＤストリングを備えている（ｐは、０以上の整数）。（ｐ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００２０】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（Metal  Oxide  Semiconductor  Field  Effect  Transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、および電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタＭＴは、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００２１】
また、メモリセルトランジスタＭＴは、浮遊ゲート電極を有する構造に限らず、ＭＯＮＯＳ（Metal-Oxide-Nitride-Oxide-Silicon）型など、電荷蓄積層としての窒化膜界面に電子をトラップさせることでしきい値調整可能な構造であってもよい。ＭＯＮＯＳ構造のメモリセルトランジスタＭＴについても同様に、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００２２】
各ＮＡＮＤストリングにおいて、（ｑ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジスタＭＴは、隣接するもの同士で拡散領域（ソース領域若しくはドレイン領域）を共有するような形でＹ方向に直列接続される。
【００２３】
そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２４】
ワード線ＷＬ０〜ＷＬｑは、物理ブロック内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭＴは１ページ（物理ページ）として取り扱われ、この物理ページごとにデータの書き込みおよびデータの読み出しが行われる。
【００２５】
また、ビット線ＢＬ０〜ＢＬｐは、ブロック間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００２６】
図２（ｂ）は、例えば、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う４値データ記憶方式でのしきい値分布を示す模式図である。４値データ記憶方式では、上位ページデータ“ｘ”と下位ページデータ“ｙ”で定義される４値データ“ｘｙ”の何れか１つをメモリセルトランジスタＭＴに保持可能である。
【００２７】
この、４値データ“ｘｙ”は、メモリセルトランジスタＭＴのしきい値電圧の順に、例えば、データ“１１”、“０１”、“００”、“１０”が割り当てられる。データ“１１”は、メモリセルトランジスタＭＴのしきい値電圧が負の消去状態である。なお、データの割り当て規則はこれに限らない。また、１個のメモリセルトランジスタＭＴに３ビット以上の記憶を行う構成であってもよい。
【００２８】
下位ページ書き込み動作においては、データ“１１”（消去状態）のメモリセルトランジスタＭＴに対して選択的に、下位ビットデータ“ｙ”の書き込みによって、データ“１０”が書き込まれる。上位ページ書き込み前のデータ“１０”のしきい値分布は、上位ページ書き込み後のデータ“０１”とデータ“００”のしきい値分布の中間程度に位置しており、上位ページ書き込み後のしきい値分布よりブロードであってもよい。上位ページ書き込み動作においては、データ“１１”のメモリセルと、データ“１０”のメモリセルに対して、それぞれ選択的に上位ビットデータ“ｘ”の書き込みが行われて、データ“０１”およびデータ“００”が書き込まれる。擬似ＳＬＣモードでは、下位ページのみを使用して書き込みを行う。下位ページの書き込みは、上位ページの書き込みに比べて高速である。
【００２９】
図３は、ドライブ制御回路４のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路４は、データアクセス用バス１０１、第１の回路制御用バス１０２、および第２の回路制御用バス１０３を備えている。第１の回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。第１の回路制御用バス１０２には、ＮＡＮＤメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。また、第１の回路制御用バス１０２には、図１に示した電源回路５からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給するクロックコントローラ１０７が接続されている。
【００３０】
第２の回路制御用バス１０３は、第１の回路制御用バス１０２に接続されている。第２の回路制御用バス１０３には、図１に示した温度センサ７からのデータを受けるためのＩ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データを一時的に保存するための領域である。ＷＣ２１上のデータは、クラスタ単位で管理し、書き込みと有効データの管理はセクタ単位で行う。ＷＣ２１のリソースが不足した場合、ＷＣ２１の記憶データをＮＡＮＤ１０に追い出す。ホスト１からＲＣ２２上のデータと同一の論理アドレスに対する書き込みが行われた場合、その最新データはＷＣ２１上に保存される。そのため、同一の論理アドレスに対応するデータが、ＷＣ２１、ＲＣ２２、ＮＡＮＤメモリ１０上にある場合には、データの新しさは、ＷＣ２１、ＲＣ２２、ＮＡＮＤメモリ１０の順となるため、ホスト１に返すデータもＷＣ２１上のデータを優先する。
【００４２】
・メインストレージ領域（ＭＳ）１１
ＭＳ１１はトラック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。ＷＣ２１上で有効クラスタの多いトラック（高密度トラック）は、ＷＣ１２から直接ＭＳ１１に書き込まれる。その他、ＭＳ１１には、ＦＳ１２、ＩＳ１３で管理しきれなくなったデータが入力される。ＭＳ１１に入力されたトラックと同一ＬＢＡのトラックについては、論理ブロック内で無効化し、この論理ブロックを解放する。ＭＳ１１に入力されたトラックと同一ＬＢＡのトラックに属するクラスタついては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。ＭＳ１１は、ＭＬＣモードの複数の論理ブロックで構成される。この実施の形態では、トラックと論理ブロックのサイズは同じとしているので、ＦＳ１２やＩＳ１３で行われる追記処理や、ＩＳ１３で行われるコンパクション（有効クラスタのみを集めて新しい論理ブロックを作り、無効なクラスタ部分を解放する処理）は不要となる。もしトラックサイズが論理ブロックサイズよりも小さい場合は、ＦＳ１２やＩＳ１３で行われる追記処理や、ＩＳ１３で行われるコンパクションを適用してもよい。
【００４３】
・前段ストレージ領域（ＦＳ）１２
ＦＳ１２はクラスタ単位でデータを管理されるＦＩＦＯ構造のバッファであり、入力は複数のクラスタをまとめた論理ページ単位で行われる。ＦＳ１２には、ＷＣ２１上で有効クラスタ数の少ないトラック（低密度トラック）が最初に書き込まれる。データの書き込み順序で論理ブロックが並んだＦＩＦＯ構造となっている。ＦＳ１２に存在するクラスタと同一ＬＢＡのクラスタがＦＳ１２に入力された場合、ＦＳ１２内のクラスタを無効化するだけでよく、書き換え動作を伴わない。ＦＳ１２に入力されたクラスタと同一ＬＢＡのクラスタについては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。ＦＳ１１のＦＩＦＯ構造の最後まで到達した論理ブロックに格納されたクラスタは、ホスト１から再書き込みされる可能性の低いクラスタとみなし、論理ブロックごとＩＳ１３の管理下に移動する。ＦＳ１２は、この実施の形態では、書き込みの高速化を図るため擬似ＳＬＣモードの複数の論理ブロックで構成される。なお、ＦＳ１２は、ＭＬＣモードの複数の論理ブロックで構成されてもよい。更新頻度の高いデータはＦＳ１２を通過している最中に無効化され、更新頻度の低いデータだけがＦＳ１２から溢れていくため、更新頻度の高いデータと低いデータとをＦＳ１２で選り分けることができる。これにより、後段のＩＳ１３でコンパクションが頻繁に発生する可能性を低減させることが可能である。
【００４４】
・中段ストレージ領域（ＩＳ）１３
ＩＳ１３は、再書き込みされる可能性の低いクラスタを格納するためのバッファであり、ＦＳ１３と同様にクラスタ単位でデータの管理が行われる。ＩＳ１３に存在するクラスタと同一ＬＢＡのクラスタがＦＳ１２、ＩＳ１３に入力された場合、ＩＳ１３内のクラスタを無効化するだけでよく、書き換え動作を伴わない。ＩＳ１３においては、ＦＳ１２と同様、データの書き込まれた順序（ＦＳ１２から移動された順序）が古い論理ブロックから並んだリスト構造をとるが、コンパクションを行う点がＦＳ１２と異なる。ＩＳ１３の容量や管理テーブルの都合で飽和した場合は、コンパクション（ＩＳ１３から有効クラスタを集めてＩＳ１３へ書き戻すこと）やデフラグ（ＦＳ１２およびＩＳ１３のクラスタをトラックに統合して、ＭＳ１１へ追い出すこと）を行う。ＩＳ１３は、この実施の形態では、ＭＬＣモードの論理ブロックと擬似ＳＬＣモードの論理ブロックの混在で構成される。すなわち、ＦＳ１２からＩＳ１３に移動されるブロックは擬似ＳＬＣモードの論理ブロックであるが、ＩＳ１３内でコンパクションする際に、ＭＬＣモードの論理ブロックに書き直す。なお、ＦＳ１２がＭＬＣモードの論理ブロックで構成される場合は、ＩＳ１３もＭＬＣモードの論理ブロックのみで構成されることになる。
【００４５】
図７は、データ管理部１２０が図５に示した各構成要素を制御管理するための管理テーブルを示すものである。ＤＲＡＭ２０を管理するためのテーブルとしては、ＲＣ管理テーブル２３、ＷＣトラックテーブル２４、ＷＣトラック情報テーブル２５，ＷＣ高密度トラック情報テーブル２６、ＷＣ低密度トラック情報テーブル２７などがある。ＮＡＮＤメモリ１０を管理するためのテーブルとしては、トラックテーブル３０、クラスタディレクトリテーブル３１、クラスタテーブル３２、クラスタブロック情報テーブル３３、論物変換テーブル４０などがある。ＮＡＮＤメモリ１０を管理するためのテーブルは、正引きアドレス変換で参照するテーブル、逆引きアドレス変換で参照するテーブルに分けられる。正引きアドレス変換とは、データのＬＢＡから実際にデータが記憶されている論理ブロックアドレス＋クラスタ位置を求めることである。逆引きアドレス変換とは、論理ブロックアドレス＋クラスタ位置からデータのＬＢＡを求めることである。
【００４６】
・ＲＣ管理テーブル２３
ＲＣ管理テーブル２３は、ＮＡＮＤメモリ１０からＲＣ２２に転送されたデータを管理するためのものである。
【００４７】
・ＷＣトラックテーブル２４
ＷＣ２１上に記憶されたデータに関するＷＣトラック情報をＬＢＡからルックアップするためのハッシュテーブルであり、ＬＢＡのトラックアドレスのＬＳＢ数ビットをインデックスとし、インデックス毎に複数のエントリ（タグ）を有する。各タグには、ＬＢＡトラックアドレスと該トラックアドレスに対応するＷＣトラック情報へのポインタが記憶されている。
【００４８】
・ＷＣトラック情報テーブル２５
ＷＣトラック情報テーブル２５には、アクセスのあったＷＣトラック情報の新旧の順序をＬＲＵ（Least  Recently  used）で双方向リストで管理するためのＷＣトラックＬＲＵ情報テーブル２５ａと、空いているＷＣトラック情報の番号を管理するＷＣトラック空き情報テーブル２５ｂとがある。ＷＣ２１からＮＡＮＤにデータを追い出すときに、ＷＣトラックＬＲＵ情報テーブル２５ａを用いて最も古くにアクセスされたトラックを取り出す。
【００４９】
ＷＣトラック情報は、ＷＣ２１内に存在する複数のトラックの１つに対応する。
ＷＣトラック情報には、
(1)ＷＣ２１内に存在するトラックアドレス、トラック内のＷＣ２１上の有効クラスタの個数、各クラスタが有効であるかどうかの情報、各クラスタがＷＣ２１のどこに存在するかを示すＷＣ内クラスタ位置情報、
(2)１クラスタに含まれる複数のセクタのうちのどのセクタに有効なデータを保持しているかを示す情報（セクタビットマップ）、
(3)トラックの状態情報（有効、無効、ＡＴＡからのデータ転送中、ＮＡＮＤに書き込み中など）
などが含まれている。なお、上記のＷＣトラック情報では、有効クラスタが存在する記憶位置で自トラック内に存在するクラスタアドレスのＬＳＢ（ｔ）ビットを管理するようにしたが、クラスタアドレスの管理方法は任意であり、例えば、自トラック内に存在するクラスタアドレスのＬＳＢ（ｔ）ビット自体を管理するようにしてもよい（図６参照）。
【００５０】
・ＷＣ高密度トラック情報テーブル２６
ＭＳ１１に書き込むことになる高密度（トラック内で有効クラスタ数が所定パーセント以上）のトラック情報を管理するためのもので、高密度トラックに関するＷＣトラック情報とその個数を管理している。
【００５１】
・ＷＣ低密度トラック情報テーブル２７
ＦＳ１２に書き込むことになる低密度（トラック内で有効クラスタ数が所定パーセント未満）のトラック情報を管理するためのもので、低密度トラックのクラスタ数の合計を管理している。
【００５２】
・トラックテーブル３０（正引き）
ＬＢＡのトラックアドレスからトラック情報を取得するためのテーブルである。トラック情報としては、
(1)論理ブロックアドレス（トラックのデータが記憶されている論理ブロックを示す情報である）
(2)クラスタディレクトリ番号（トラック内のデータの少なくとも一部がＦＳ１２またはＩＳ１３に記憶されている場合に有効となる情報であり、トラック内のデータがＦＳ１２またはＩＳ１３に記憶されている場合に、トラック毎に存在するクラスタディレクトリテーブルのテーブル番号を示す情報である）
(3)ＦＳ／ＩＳクラスタ数（このトラック内のクラスタが、いくつＦＳ１２またはＩＳ１３に記憶されているかを示す情報であり、デフラグするかどうかを決めるために使用する）。
【００５３】
・クラスタディレクトリテーブル３１（正引き）
トラック内のデータがＦＳ１２またはＩＳ１３に記憶されている場合に、その論理ブロックまでたどるための中間的なテーブルであり、トラック別に備えられている。各クラスタディレクトリテーブル３１に登録されるクラスタディレクトリ情報は、クラスタテーブル３２のテーブル番号を示す情報（クラスタテーブル番号情報）の配列からなる。ＬＢＡのクラスタアドレスのＬＳＢ（ｔ）ビット中の上位数ビットで、１つのクラスタディレクトリテーブル３１中に配列されている複数のクラスタテーブル番号情報からひとつの情報を選択する。
【００５４】
このクラスタディレクトリテーブル３１としては、書き込み時刻を基準として、クラスタディレクトリ情報（クラスタテーブル番号情報の配列）の新旧の順序を、対応するトラックアドレスとともに、ＬＲＵ（Least  Recently  used）で双方向リストで管理するためのクラスタディレクトリＬＲＵテーブル３１ａと、空いているクラスタディレクトリを、対応するトラックアドレスとともに、双方向リストで管理するクラスタディレクトリ空き情報テーブル３１ｂとがある。
【００５５】
・クラスタテーブル３２（正引き）
クラスタディレクトリテーブル３１と関連し、トラック内のデータがＦＳ１２またはＩＳ１３に記憶されている場合に、どの論理ブロックのどのクラスタ位置にデータが記憶されているかを管理するテーブルである。トラックテーブル３０からクラスタディレクトリテーブル３１を経由して間接参照される。実体は、複数クラスタ分の論理ブロックアドレス＋クラスタ位置の配列である。ＬＢＡのクラスタアドレスのＬＳＢ（ｔ）ビット中の下位数ビットで、１つのクラスタテーブル３２中に配列されている複数の（論理ブロックアドレス＋クラスタ位置）からひとつの情報を選択する。後述のクラスタブロック情報の番号とその中のクラスタ位置の情報も配列としてもつ。
【００５６】
・クラスタブロック情報テーブル３３（逆引き）
クラスタブロックとは、論理ブロックのうちクラスタ単位でデータを記憶するものをいう。クラスタブロック情報は、ＦＳ１２、ＩＳ１３の論理ブロックを管理するための情報であり、論理ブロック内にどのようなクラスタが入っているかを示す情報である。クラスタブロック情報同士を双方向リストとしてＦＳ１２、ＩＳ１３内のＦＩＦＯの順序で連結される。
クラスタブロック情報は、
(1)論理ブロックアドレス
(2)有効クラスタ数
(3)当該論理ブロックに含まれるクラスタのＬＢＡ
を有する。
クラスタブロック情報テーブル３３は、使われていないクラスタブロック情報を管理する空き情報管理用のクラスタブロック情報テーブル３３ａ、ＦＳ１２に含まれるクラスタブロック情報を管理するＦＳ用のクラスタブロック情報テーブル３３ｂ、ＩＳ１３に含まれるクラスタブロック情報を管理するＩＳ用のクラスタブロック情報テーブル３３ｃを有し、各テーブル３３ａ〜３３ｃは、双方向リストとして管理されている。逆引きアドレス変換の主な用途はＩＳ１３のコンパクションであり、コンパクション対象の論理ブロックにどのようなクラスタが記憶されているかを調べ、データを他の場所へ書き直すために使用する。よって、本実施の形態では、逆引きアドレス変換はクラスタ単位でデータを記憶しているＦＳ１２、ＩＳ１３のみを対象としている。
【００５７】
・論物変換テーブル４０（正引き）
論物変換テーブル４０は、論理ブロックアドレスと物理ブロックアドレスとの変換、寿命に関する情報を管理するためのテーブルである。論理ブロックアドレス毎に、当該論理ブロックに所属する複数の物理ブロックアドレスを示す情報、当該論理ブロックアドレスの消去回数を示す消去回数情報、クラスタブロック情報の番号などの情報を有している。あるＬＢＡのデータを他の場所に書き直すには、元のクラスタブロック内のＬＢＡを無効にする必要があり、ＬＢＡからクラスタブロックをたどる必要がある。そのために、論物変換テーブル４０で管理する論理ブロックの管理情報に、クラスタブロック情報の識別子を記憶している。
【００５８】
（スナップショット、ログ）
上記各管理テーブルで管理される管理情報によって、ホスト１で使用されるＬＢＡと、ＳＳＤ１００で使用される論理ＮＡＮＤアドレス（論理ブロックアドレス＋オフセット）と、ＮＡＮＤメモリ１０で使用される物理ＮＡＮＤアドレス（物理ブロックアドレス＋オフセット）との間を対応付けることができ、ホスト１とＮＡＮＤメモリ１０との間のデータのやり取りを行うことが可能となる。
【００５９】
上記各管理テーブルのうちＮＡＮＤ管理用のテーブル（図７のトラックテーブル３０、クラスタディレクトリテーブル３１、クラスタテーブル３２、クラスタブロック情報テーブル３３、論物変換テーブル４０など）は、不揮発性のＮＡＮＤメモリ１０の所定の領域に記憶されており、起動時に、ＮＡＮＤメモリ１０に記憶されていた各管理テーブルを揮発性のＤＲＡＭ２０の作業領域に展開して、この展開された管理テーブルをデータ管理部１２０が使用することで、各管理テーブルは更新されていく。ＤＲＡＭ２０上に展開された各管理テーブルをマスターテーブルと呼ぶ。このマスターテーブルは、電源が切れても、電源が切れる以前の状態に復元する必要があり、このためマスターテーブルを不揮発性のＮＡＮＤメモリ１０に保存する仕組みが必要となる。スナップショットは、ＮＡＮＤメモリ１０上の不揮発性の管理テーブルの全体を指し、ＤＲＡＭ２０に展開されたマスターテーブルをそのままＮＡＮＤメモリ１０に保存することを、スナップショットをとるとも表現する。ログは、管理テーブルの変更差分のことである。マスターテーブルの更新の度に、スナップショットをとっていたのでは、速度も遅く、ＮＡＮＤメモリ１０への書き込み数が増えるために、通常は変更差分としてのログだけをＮＡＮＤメモリ１０に記録していく。ログをマスターテーブルに反映し、ＮＡＮＤメモリ１０に保存することを、コミットするとも表現する。
【００６０】
図８に、データ更新時に、スナップショットとログがどのように更新されるかを示す。データ管理部１２０がデータ更新する際に、マスターテーブルに加えた変更内容をＤＲＡＭ２０上のログ（ＤＲＡＭログと呼ぶ）に蓄積する。管理テーブルの種類によっては、マスターテーブルを直接更新し、更新内容をＤＲＡＭログに蓄積したり、マスターテーブルには直接変更を加えず、変更領域をＤＲＡＭログ上に確保して、その領域に更新内容を記録したりする。データの読み書き処理の際には、マスターテーブルの他に蓄積されたＤＲＡＭログも参照する。
【００６１】
データの更新が安定したら、ログのコミットを行う。コミット処理では、ＤＲＡＭログの内容を必要に応じてマスターテーブルに反映させ、さらにＤＲＡＭログの内容をＮＡＮＤメモリ１０に保存して不揮発化する。スナップショットをＮＡＮＤメモリ１０に保存するのは、正常な電源断シーケンスの際、ログの保存領域が不足した場合などとする。ログまたはスナップショットがＮＡＮＤメモリ１０に書き終わった時点で、管理テーブルの不揮発化が完了する。
【００６２】
・Read処理
つぎに、読み出し処理の概要について説明する。ＡＴＡコマンド処理部１２１から、Readコマンドおよび読み出しアドレスとしてのＬＢＡが入力されると、データ管理部１２０は、ＲＣ管理テーブル２３とＷＣトラックテーブル２４を検索することで、ＷＣ２１またはＲＣ２２にＬＢＡに対応するデータが存在しているか否かを探査し、キャッシュヒットの場合は、該当ＬＢＡに対応するＷＣ２１またはＲＣ２２のデータを読み出して、ＡＴＡコマンド処理部１２１に送る。
【００６３】
データ管理部１２０は、ＲＣ２２またはＷＣ２１でヒットしなかった場合は、検索対象のデータがＮＡＮＤメモリ１０のどこに格納されているかを検索する。データがＭＳ１１に記憶されている場合は、データ管理部１２０は、ＬＢＡ→トラックテーブル３０→論物変換テーブル４０と辿ることで、ＭＳ１１上のデータを取得する。一方、データがＦＳ１２，ＩＳ１３に記憶されている場合は、データ管理部１２０は、ＬＢＡ→トラックテーブル３０→クラスタディレクトリテーブル３１→クラスタテーブル３２→論物変換テーブル４０と辿ることで、ＦＳ１２，ＩＳ１３上のデータを取得する。
【００６４】
・Write処理
（ＷＣ２１での処理）
つぎに、書き込み処理の概要について説明する。書き込み処理では、ＡＴＡコマンド処理部１２１からWriteコマンドおよび書き込みアドレスとしてのＬＢＡが入力されると、ＬＢＡで指定されたデータをＷＣ２１に書き込む。ＷＣ２１に空き領域がない場合は、ＤＲＡＭ管理用の各種管理テーブルを参照してＷＣ２１からデータを追い出して、ＮＡＮＤメモリ１０に書き込み、空き領域を作成する。トラック内の有効クラスタ数が所定パーセント未満のトラックは低密度トラックとし、クラスタサイズデータとしてＦＳ１２を追い出し先とする。ＦＳ１２が追い出し先の場合は、トラック内の有効クラスタを論理ページ単位で書き込む。
【００６５】
トラック内の有効クラスタ数が所定パーセント以上のトラックは高密度トラックとし、トラックサイズのデータとしてＭＳ１１を追い出し先とする。ＭＳ１１が追い出し先の場合は、トラックサイズのデータのまま論理ブロック全体に書き込む。書き込み対象の論理ブロック数が複数の場合は、倍速モードやバンクインターリーブを利用して転送効率を上げる。ＷＣ２１に書き込まれたデータに応じて、またＮＡＮＤメモリ１０へのデータ追い出しに応じて、ＤＲＡＭ管理用の各種管理テーブルを更新する。
【００６６】
（ＭＳ１１への書き込み）
ＭＳ１１への書き込みは、図９に示すように、次の手順で実行される。
１．ＤＲＡＭ２０上にトラックのデータイメージを作成（穴埋め処理）する。すなわち、ＷＣ２１に存在しないクラスタ、ＷＣ２１に全セクタを保持していないクラスタに関しては、ＮＡＮＤメモリ１０から読み出して、ＷＣ２１のデータと統合する。
２．ＭＳ１１用に、論理ブロック（トラックブロック）をＣＦＢから確保する。トラックブロックとは、論理ブロックのうちトラック単位でデータを記憶するものをいう。
３．作成したトラックのデータイメージを確保した論理ブロックに書き込む。
４．トラックのＬＢＡからトラック情報を調べ、トラック情報と書き込んだ論理ブロックに対応する論理ブロックアドレスとを関連付け、ＮＡＮＤ管理用の所要のテーブルに登録する。
５．ＷＣ２１，ＮＡＮＤメモリ１０の古いデータを無効化する。
【００６７】
（ＦＳ１２への書き込み）
ＦＳ１２への書き込みは、ＤＲＡＭ２０上にクラスタのデータイメージを作成（穴埋め処理）し、新たに確保する論理ブロック（クラスタブロック）に対し論理ページ単位の書き込みを、擬似ＳＬＣモードを使用して行う。確保する論理ブロックは、書き込むデータイメージ以上の書き込み可能な論理ページをもつフラグメントフリーブロック（ＦＦＢ）を優先し、ない場合はコンプリートフリーブロック（ＣＦＢ）を使用する。ＦＳ１２への書き込みは、図１０に示すように、以下の手順で実行する。
【００６８】
ＷＣ２１からＦＳ１２に低密度トラックのデータを書き込むための論理ブロック(クラスタブロック)のことをＦＳ  Input  Buffer（以下、ＦＳＩＢ）と呼ぶ。
１．ＷＣ２１から入力された低密度トラック内の総データ量が小さい場合、すなわち有効クラスタ数が所定の閾値よりも少ない場合には、それを書き込めるＦＦＢを確保し、ＦＳＩＢとする。
２．ＷＣ２１から渡された低密度トラック内の総データ量が大きい場合、すなわち有効クラスタ数が所定の閾値以上の場合には、ＣＦＢを確保し、ＦＳＩＢとする。このとき、並列で書き込むことが出来る複数の論理ブロックを確保し、ＦＳＩＢとする。
３．ＤＲＡＭ２０上で、書き込むクラスタのデータイメージを作成する。すなわち、ＷＣ２１に全セクタを保持していないクラスタに関しては、ＷＣ２１上に存在しないセクタのデータをＮＡＮＤメモリ１０から読み出し、ＷＣ２１上のセクタのデータと統合する。
４．ＷＣ２１上のクラスタと、作業領域上に作ったクラスタイメージをＦＳＩＢに書き込む。
５．ＦＳＩＢをＦＳ１２のリストに追加する。
６．書き込んだトラックを、クラスタディレクトリＬＲＵテーブル３１ａの末尾に挿入しなおす。
【００６９】
（ＦＳ１２からＩＳ１３への移動）
ＦＳ１２管理下の論理ブロック数が所定の最大論理ブロック数を越えている場合は、図１１に示すように、ＦＳ１２から溢れた論理ブロックをそのままＩＳ１３に移動する。一度の処理単位で移動する論理ブロック数は、溢れた論理ブロック内の有効クラスタ数に応じて、以下のルールで決定する。
・溢れた論理ブロック内のクラスタ数がＭＬＣモードの１論理ブロック分の境界に近くなるように、ＦＳ１２の最も古い論理ブロックから移動する論理ブロックを追加する。ＭＬＣモードの１論理ブロック分の境界に近くするのは、コンパクション後の論理ブロックに、なるべく多くの有効クラスタを収容することを目的とする。
・クラスタ数がＩＳ１３で同時にコンパクションできるクラスタ数を超える場合は、ＩＳ１３で同時にコンパクションできるクラスタ数以下になるようなブロック数とする。
・移動ブロック数には、上限値を設ける。
【００７０】
（ＩＳ１３でのコンパクションとデフラグ）
ＩＳ１３では、ＩＳ管理下の論理ブロック数が最大論理ブロック数を越えた場合に、ＭＳ１１へのデータ移動（デフラグ処理）と、コンパクション処理によって、管理下の論理ブロック数を最大数以下に抑える。データの消去単位（論理ブロック）と、データの管理単位（クラスタ）が異なる場合、ＮＡＮＤメモリ１０の書き換えが進むと、無効なデータによって、論理ブロックは穴あき状態になる。このような穴あき状態の論理ブロックが増えると、実質的に使用可能な論理ブロックが少なくなり、ＮＡＮＤメモリ１０の記憶領域を有効利用できないので、有効クラスタを集めて、違う論理ブロックに書き直すことをコンパクションという。デフラグ処理とは、ＦＳ１２，ＩＳ１３のクラスタをトラックに統合して、ＭＳ１１に追い出す処理をいう。
【００７１】
つぎに、本実施の形態の要部について説明する。上述したＳＳＤにおいては、ＮＡＮＤメモリ１０の書き込みに時間がかかる、書き込み回数に制限がある、書き込みの大きさの単位が固定であるなどの理由で、ランダムアクセス可能な高速なメモリとしてのＤＲＡＭ２０上にＷＣ２１を設け、ＷＣ２１に一時的にデータを蓄えてからＮＡＮＤメモリ１０にデータを書き込むようにしている。また、前述したように、ＮＡＮＤメモリ１０への書き込み回数(消去回数)を減らすために、ＷＣ２１のデータに関し、大きなデータ（高密度トラック）はＭＳ１１へ、小さなデータ（低密度トラック）はＦＳ１１へ書き込むような記憶部の切替え制御も行われている。
【００７２】
また、ＮＡＮＤメモリ１０にデータが書き込まれて、各記憶部のリソース(容量や管理テーブルのエントリ数)が不足した場合には、コンパクションやデフラグなどのＮＡＮＤの整理を行うことで、記憶部のリソースを確保している。同様に、ＷＣ２１に関しても、そのリソース(領域や管理テーブルのエントリ数)が限界を超える場合には、前述したように、ＮＡＮＤメモリ１０にデータを追い出して、ＷＣ２１のリソースを確保する。このときの追い出し条件としてよく用いられるのは、次のホスト１からの書き込みに耐えられるだけの空きリソースをＷＣ２１で確保しておくという条件である。この条件では、ホスト１からＷＣ２１への書き込みを常に受け付けられるようにすることによって、単一の書き込みコマンドへのレスポンスは向上するが、ＮＡＮＤメモリ１０の整理が進んでおらず、ＮＡＮＤメモリ１０への書き込みに時間がかかると、後続の書き込みコマンドへのレスポンスは低下する。
【００７３】
そこで、本実施の形態では、ＷＣ２１からＮＡＮＤメモリ１０への追い出しを早めに行うための閾値（ＡＦ閾値：Auto  Flush閾値）を設ける。ＮＡＮＤメモリ１０での整理（コンパクションおよびデフラグなど）が充分に進んでいる場合には、早めにＷＣ２１からＮＡＮＤメモリ１０にデータを追い出すことによって、ＮＡＮＤメモリ１０での整理を早く始め、それによって、後続のＷＣ２１からの追い出しも高速に行えるようになる。その結果、ＷＣ２１のリソース(メモリ領域、管理テーブルのエントリ)を多く確保できるため、後続の書き込みコマンドのレスポンスが向上する。
【００７４】
以下、ＷＣ２１での追い出し処理について詳細に説明する。まず、図１２を用いてＷＣ２１の管理構造をより詳細に説明する。この実施の形態では、図１に示したように、ＮＡＮＤメモリ１０の各並列動作要素１０ａ〜１０ｄは、バンクインターリーブ可能な４つのバンク（Ｂａｎｋ０〜３）を有し、各メモリチップは、並列動作可能なプレーン０およびプレーン１の２つのプレーンを有するものとする。そして、この実施の形態では、図１２に示すような、ＬＢＡとＮＡＮＤメモリ１０のバンク／プレーンの割り当てを行うようにしている。すなわち、ＬＢＡのトラックアドレスのＬＳＢ１ビット目にプレーン（Ｐ）を割り当て、ＬＢＡのトラックアドレスのＬＳＢ２ビット、３ビット目にバンク（Ｂ）を割り当てている。なお、このようなＬＢＡに対するバンク割り当ては、ＮＡＮＤメモリ１０におけるＭＳ１１に対する書き込みの際にのみ使用される。
【００７５】
ＷＣトラックテーブル２４は、前述したように、ＷＣ２１上に記憶されたデータに関するＷＣトラック情報をＬＢＡからルックアップするための例えばハッシュテーブルであり、ＬＢＡのトラックアドレスのプレーン／バンク割り当てビット（Ｐ，Ｂ）を含むＬＳＢ数ビット（ｇ個）をインデックスとし、ｇ個のインデックス毎にｎ個（ｗａｙ）のエントリ（タグ）を有する。各タグには、ＬＢＡトラックアドレスと該トラックアドレスに対応するＷＣトラック情報へのポインタが記憶されている。したがって、ＷＣ２１には、（ｇ×ｎ）個の異なるトラックをキャッシュすることができる。ＷＣトラックテーブル２４の更新に応じて、ＷＣトラックテーブル２４のインデックス毎の空きエントリ数（または使用エントリ数）α１が計数されており、これらの空きエントリ数α１は、ＷＣ２１の追い出しをトリガするための１つのパラメータ（ＷＣリソース使用量）となる。
【００７６】
ＷＣトラック情報テーブル２５は、図１３にも示すように、ＷＣトラック情報をＬＲＵで例えば双方向リストで管理するためのＷＣトラックＬＲＵ情報テーブル２５ａと、空いているＷＣトラック情報の番号を例えば双方向リストとして管理するＷＣトラック空き情報テーブル２５ｂとを有する。
【００７７】
ＷＣトラック情報には、前述したように、
(1)ＷＣ２１内に存在するトラック内の有効クラスタ数を示す情報、フルのクラスタ数（セクタデータが満杯のクラスタの個数）を示す情報、
(2)ＬＢＡのＬＳＢ側の数ビット部分であるクラスタ内オフセットに基づいて作成される情報であり、１クラスタに含まれる複数のセクタのうちのどのセクタに有効なデータを保持しているかを示す情報（セクタビットマップ）、
(3)トラックの状態情報（有効、無効、ＡＴＡからのデータ転送中、ＮＡＮＤに書き込み中など）、
(4)トラック単位にオール０のデータが含まれるか否かを識別する情報
(5)クラスタ位置情報：（図１３に示すように、ＬＢＡのトラック内クラスタインデックス（ｔビット）に対応するクラスタ領域番号をインデックスとした（（２t−１）個）のクラスタ領域が確保され、各クラスタ領域には、当該クラスタデータがＷＣ２１のどこに存在するかを示すクラスタ位置情報が格納される。空きのクラスタに対応するクラスタ領域番号のクラスタ領域には、無効値が格納される。）
などが含まれている。
【００７８】
ＷＣ２１においては、前述したように、最大（ｇ×ｎ）個の異なるトラックをキャッシュすることが可能であるが、ＷＣトラックＬＲＵ情報テーブル２５ａによって、ＷＣ２１で使用されているトラックに関する情報を管理している。一方、ＷＣトラック空き情報テーブル２５ｂは、ＷＣ２１にキャッシュすることが可能な最大トラック数（ｇ×ｎ）に対する空きのＷＣトラック情報を管理している。ＷＣトラックＬＲＵ情報テーブル２５ａに登録されているＷＣトラック情報の個数をｄ個とした場合、ＷＣトラック空き情報テーブル２５ｂでは、（ｇ×ｎ）−ｄ個の空きのＷＣトラック情報を管理している。ＷＣトラック空き情報テーブル２５ｂに用意されているＷＣトラック情報は、ＷＣトラックＬＲＵ情報テーブル２５ａで使用されるＷＣトラック情報の領域をＷＣ２１に確保するためのもので、新しいトラックを管理し始めるときに、図１３に示す各種情報を格納する。すなわち、ＷＣ２１で新たなＷＣトラック情報を管理する必要が生じた場合、ＷＣトラック空き情報テーブル２５ｂから１つＷＣトラック情報を確保し、確保したＷＣトラック情報に所要の情報を格納してからＷＣトラックＬＲＵ情報テーブル２５ａのリンクに接続し直すようにする。なお、新たに確保されたＷＣトラック情報に対応するトラックアドレスなどの情報はＷＣトラックテーブル２４に登録され、高密度トラックの場合は高密度トラック情報テーブル２６に登録される。
【００７９】
ＷＣトラック空き情報テーブル２５ｂから新たなＷＣトラック情報を確保する度に（図１３のフリーリストからＷＣトラック情報のリストが１個抜かれる度に）、図１３に示すＷＣ２１でのＷＣトラック情報の空き数を示すＷＣトラック情報の空き数α２が−１され、ＷＣ２１からＮＡＮＤメモリ１０に対する追い出しなどの発生によって、ＷＣトラックＬＲＵ情報テーブル２５ａに登録されたＷＣトラック情報が解放されてＷＣトラック空き情報テーブル２５ｂに戻される度に、ＷＣトラック情報の空き数α２が＋１される。勿論、ＷＣトラック情報空き数情報α２の代わりにＷＣ２１でのＷＣトラック情報の使用数を管理するようにしてもよい。ＷＣトラック情報空き数情報（または使用数）α２は、ＷＣ２１の追い出しをトリガするための１つのパラメータ（ＷＣリソース使用量）となる。
【００８０】
図１２に示したＷＣクラスタ領域管理テーブル２９は、各トラック中で空いているクラスタ領域を管理するためのもので、空いているクラスタ領域番号をＦＩＦＯ構造や双方向リンクドリストなどによって管理している。また、ＷＣクラスタ領域管理テーブル２９によってクラスタ領域の総空き数が管理されている。クラスタ領域の使用数の最大値とは、ＷＣ２１のキャッシュ容量に対応し、例えば、３２ＭＢのＷＣ２１の場合は、クラスタ領域の使用数の最大値とは、３２ＭＢに対応するクラスタ数になる。クラスタ領域の総空き数が０のときが、クラスタ領域の使用数の最大値に対応する。クラスタ領域の総空き数（または使用数）α３は、ＷＣ２１の追い出しをトリガするための１つのパラメータ（ＷＣリソース使用量）となる。
【００８１】
図１４は、ＷＣ高密度トラック情報テーブル２６を示すものである。この高密度トラック情報テーブル２６は、ＭＳ１１に書き込むことになる、有効クラスタ数が多い高密度トラックに関するトラック情報を、ＬＢＡのトラックアドレスのバンク番号（Ｂ）をインデックスとして管理するためのハッシュテーブルであり、各インデックス毎にｍ個のエントリ（ｗａｙ）を有する。確実に並列に書き込めるバンク別に、ＷＣ２１上の高密度トラックを管理することによって、ＷＣ２１からＭＳ１１への追い出しの際のトラック検索に要する時間を高速化する。また、このＷＣ高密度トラック情報テーブル２６によって、ＭＳ１１に書き込むことになるトラック数を、各バンクで、最大ｍ個となるように規制することで、ＷＣ２１からＮＡＮＤメモリ１０への最大フラッシュ（Flush）時間を抑えるようにする。ＷＣ高密度トラック情報テーブル２６における同じインデックスには、倍速モードで書けるトラック（プレーン０、１）が有る可能性もあるし、ない可能性もある。このＷＣ高密度トラック情報テーブル２６におけるエントリ数を計数することによって、バンク番号毎に、高密度トラック情報の個数を管理している。このバンク毎の高密度トラック情報の個数α４は、ＷＣ２１の追い出しをトリガするための１つのパラメータ（ＷＣリソース使用量）となる。
【００８２】
ＷＣ低密度トラック情報テーブル２７（図７参照）
ＦＳ１２に書き込むことになる低密度のトラック情報を管理するためのもので、低密度トラックのクラスタ数の合計値を管理している。この低密度トラックのクラスタ数の合計値α５は、ＷＣ２１の追い出しをトリガするための１つのパラメータ（ＷＣリソース使用量）となる。
【００８３】
図１５は、ＷＣ２１の追い出しをトリガするための複数のパラメータ（ＷＣリソース使用量）と、２つの閾値（ＡＦ閾値Ｃaf、上限値Ｃlmt）との関係の一例を示す図である。図１５に示すように、ＷＣ２１の追い出しをトリガするための複数のパラメータとしては、前述したように、
・ＷＣクラスタ領域（クラスタ領域の総空き数）α３
・バンク毎の高密度トラック情報の個数（ＭＳ行きトラック数）α４
・低密度トラックのクラスタ数の合計値（ＦＳ行きクラスタ数あるいはＦＳ行きクラスタデータ量）α５
・ＷＣトラック情報の個数（ＷＣトラック情報空き数）α２
・ＷＣトラックテーブルのインデックス毎の使用エントリ数（または空きエントリ数）α１
・フルのトラック数α６
がある。これらＷＣ２１の追い出しをトリガするための複数のパラメータα１〜α６をＷＣリソース使用量とも呼ぶ。
【００８４】
フルのトラック数α６とは、セクタおよびクラスタが満杯のトラックの個数である。フルのトラックとは、ホスト１からデータが書き込まれ、ＷＣトラック情報内のフルのクラスタ数が、クラスタ領域番号の個数である２t個になったトラックであり、フルのトラック数を計数する専用のカウンタ（図示せず）を有している。
【００８５】
これら６個のパラメータα１〜α６には、ＷＣ２１の追い出し処理のために、２つの閾値（ＡＦ閾値Ｃaf、上限値Ｃlmt）が設定されている。図１５において、各パラメータα１〜α６に設定されている最大値ｍａｘは各パラメータα１〜α６が取り得る実質的な最大値を示すもので、基本的にＷＣ２１の追い出しをトリガする閾値としての意味はない。
【００８６】
上限値Ｃlmtは、パラメータα１〜α６がこれ以上になると次のwrite要求を受け付けられない可能性のある閾値であり、上限値Ｃlmtを越えた場合は、ホスト１からのwrite要求を待たせる可能性がある。よって、上限値Ｃlmtは、ホスト１からの次のwrite要求を待たせるための閾値であるともいうことができる。いずれかのパラメータα１〜α６が上限値Ｃlmtを越えて、次のwrite要求を待たせている間、ＮＡＮＤメモリ１０の整理が終わっている場合は、ＷＣ２１からＮＡＮＤメモリ１０へデータを追い出して、該当するパラメータが上限値Ｃlmt以下になるようにする。全てのパラメータα１〜α６が上限値Ｃlmt以下になると、ホスト１からの次のwrite要求を受け付ける。いずれかのパラメータα１〜α６が上限値Ｃlmtを越えて、次のwrite要求を待たせている間、ＮＡＮＤメモリの整理が終わっていない場合は、ＮＡＮＤメモリ１０の整理を優先して、ＮＡＮＤメモリ１０へのデータ追い出しを実行しない。ＮＡＮＤメモリ１０の整理が終了したら、ＷＣ２１からＮＡＮＤメモリ１０へデータを追い出して、該当するパラメータを上限値Ｃlmt以下とし、その後ホスト１からの次のwrite要求を受け付ける。
【００８７】
ＡＦ閾値Ｃafは、オートフラッシュ（Auto  Flush）処理を行わせるための閾値である。Auto  Flush処理とは、ホスト１からのFlushコマンドに関係なく行う処理であり、状況に応じてデータ管理部１２０の判断によってＷＣ２１のデータの一部または全てをＮＡＮＤメモリ１０に追い出す処理である。Auto  Flush処理は、ホスト１からのWriteコマンド終了後に実行される処理であり、先行してＷＣ２１に一定の空き領域を作っておくことで、書き込み性能をトータル的に向上させるための処理であって、いずれかのパラメータα１〜α６がＡＦ閾値Ｃaf以上になると、Auto  Flush処理を実行して早めにＷＣ２１からデータをＮＡＮＤメモリ１０に追い出す。したがって、通常は、ＡＦ閾値Ｃaf＜上限値Ｃlmt＜最大値ｍａｘの関係にある。いずれかのパラメータα１〜α６がＡＦ閾値Ｃafを越えていた場合、ＮＡＮＤメモリ１０の整理の状況を確認し、ＮＡＮＤメモリ１０の整理が終了していた場合に、Auto  Flush処理を実行する。いずれかのパラメータα１〜α６がＡＦ閾値Ｃafを越えていた場合でも、ＮＡＮＤメモリ１０の整理が終了していない場合は、ＷＣ２１はまだホスト１からのwrite要求を待たせるほど余裕のない状況ではないので、ＮＡＮＤメモリ１の整理を優先させる。
【００８８】
つぎに、各パラメータα１〜α６毎に、最大値ｍａｘ、上限値Ｃlmt、ＡＦ閾値Ｃafについて説明する。ＷＣクラスタ領域（クラスタ領域の総空き数）α３の最大値ｍａｘであるＺとは、ＷＣ２１の容量であり、ＷＣ２１が３２ＭＢの容量を有する場合は、Ｚ＝３２ＭＢである。ＷＣクラスタ領域（クラスタ領域の総空き数）α３のＡＦ閾値Ｃafとしては、例えば最大値ｍａｘの半分であるＺ／２に設定する。上限値Ｃlmtとしては、ホスト１からの１回のデータ転送サイズを考慮して決定する。例えば、（７／８〜１５／１６）Ｚ程度の値に設定する。
【００８９】
ＷＣトラック情報の個数α２の最大値ｍａｘは、ＷＣトラックテーブル２４の総エントリ数であり、この場合（ｇ×ｎ）である。ＡＦ閾値Ｃafとしては、例えば最大値ｍａｘの半分である（ｇ×ｎ）／２に設定する。ＷＣトラック情報の個数α２に関する上限値Ｃlmtは、図１５では設定されていないが、（ｇ×ｎ）より小さく、（ｇ×ｎ）／２より大きな適当な値を設定してもよい。
【００９０】
ＷＣトラックテーブルのインデックス毎の使用エントリ数α１の最大値ｍａｘは、ｎである。α１に関するＡＦ閾値Ｃafは、図１５では設定されていないが、例えば最大値ｍａｘの半分であるｎ／２程度の値に設定するようにしてもよい。上限値Ｃlmtとしては、残り１（ＷＣトラックテーブル２４の最後のエントリ（ｗａｙ）しか残っていない状態）とする。
【００９１】
フルのトラック数α６に関しては、ＡＦ閾値Ｃaf（＝ｙ）のみが設定されている。フルのトラック数α６が増えても、他のパラメータが空いていれば、次のホストからのwrite要求に応えることができるので、フルのトラック数α６については、上限値Ｃlmtを設定していない。
【００９２】
つぎに、ＭＳ行きトラック数（バンク毎）α４の最大値ｍａｘとは、図１４に示す高密度トラック情報テーブル２６のエントリ（ｗａｙ）数であるｍである。このｍという数値は、ＷＣ２１の全データをＮＡＮＤメモリ１０に追い出す指令であるフラッシュ（flush）コマンドを処理するのに要する時間を考慮して決定されている。また、ＦＳ行きクラスタ数（ＦＳ行きクラスタデータ量）α５の最大値Ｑとは、ＦＳ１２に追い出す低密度トラックのクラスタ数（あるいはクラスタデータ量）の合計値の最大値であり、このＱという数値も、flushコマンドを処理するのに要する時間、ＮＡＮＤメモリ１０側のリソース使用量（ＦＳ１２への書き込みを抑えることで、ＦＳ１２、ＩＳ１３用のブロック数や、ＦＳ１２、ＩＳ１３用の管理テーブル量の増大を抑える）などを考慮して決定されている。flushコマンドを実行する際には、高密度トラックはＭＳ１１に追い出し、低密度トラックはＦＳ１２に追い出す必要がある。
【００９３】
前述したように、この実施の形態ではトラック＝論理ブロックとしている。論理ブロックとは、ＮＡＮＤメモリ１０のチップ上の物理ブロックを複数組み合わせて構成される仮想的ブロックのことであり、この実施の形態では、図１に示す４つの並列動作要素１０ａ〜１０ｄ内の各物理ブロックに１回４ｃｈ並列動作させた単位を論理ブロックという。図１４に示したＷＣ高密度トラック情報テーブル２６においては、１つのバンクに関する１つのエントリには１つのトラックアドレスが登録されており、１つのバンクの１つのトラックの追い出しを行うことは、１つの論理ブロックをＮＡＮＤメモリ１０に（高密度トラックであるので、正確にはＭＳ１１に）１回書き込むことに相当する。
【００９４】
一方、ＦＳ１２は、この実施の形態では、擬似ＳＬＣモードで動作しており、ＦＳ１２での論理ブロックサイズは、４値のＭＬＣモードで動作しているＭＳ１１での論理ブロックサイズの半分である。したがって、ＦＳ１２への１回の４ｃｈ並列書き込みによる書き込みサイズも、ＭＳ１１への書き込みの場合の半分になる。その反面、擬似ＳＬＣモードでの書き込みは、ＭＬＣモードより数倍速い。
【００９５】
flushコマンド処理に要する時間Ｔflは、高密度トラックをＭＳ１１に追い出す所要時間Ｔａと、低密度トラックをＦＳ１２に追い出す所要時間Ｔｂと、ログの書き込み処理など他の処理に要する時間Ｔｃ（固定値）の合計になる。則ち、Ｔfl＝Ｔａ＋Ｔｂ＋Ｔｃとなる。高密度トラックをＭＳ１１に追い出す所要時間Ｔａは、４バンクでのバンクインタリーブを用いた場合を想定して、４×１回の書き込み所要時間（固定値）×書き込み回数（ｕ１）となる。低密度トラックをＦＳ１２に追い出す所要時間Ｔｂは、１回の書き込み所要時間（固定値）×書き込み回数（ｕ２）となる。flushコマンド処理に要する時間Ｔflを所定の最悪時間Ｔflmax（固定値）時間以内に抑えようとした場合、例えばｕ１＝ｕ２として、下記の式
Ｔflmax（固定値）＝Ｔａ（＝４×１回の書き込み所要時間（固定値）×書き込み回数（ｕ１））＋Ｔｂ（＝１回の書き込み所要時間（固定値）×書き込み回数（ｕ２））＋Ｔｃ（固定値）
から、書き込み回数ｕ１，ｕ２を求めることができる。
【００９６】
このようにして求めたｕ１が、ＭＳ行きトラック数（バンク毎）α４の最大値ｍａｘとしてのｍである。ＷＣ高密度トラック情報テーブル２６のｗａｙ数ｍはこのようにして決定する。また、上記によりflushコマンド処理に対する最悪時間Ｔflmaxを満足するＦＳ１２への書き込み回数ｕ２も決定することができたので、（ＦＳ１２への１回の論理ブロックの書き込みサイズ）×（書き込み回数ｕ２）を求めることで、ＦＳ行きクラスタデータ量α５の最大値ｍａｘとしてのＱ（ＭＢ）を求めることができる。
【００９７】
ＭＳ行きトラック数（バンク毎）α４に関するＡＦ閾値Ｃafは、例えば最大値ｍの半分ｍ／２に設定する。ｍ／２に設定したことで、Auto  Flush処理では、４トラックをＭＳ１１に書き込んでいる間に、残りの４トラックをホスト１からＷＣ２１に書き込むようなダブルバッファ的な並列処理を実行することができる。α４に関する上限値Ｃlmtとしては、例えば（６／８〜７／８）ｍ程度の値に設定する。上限値Ｃlmtは、最大値ｍａｘからの残り分だけ空けておけば、次のwrite要求をＮＡＮＤメモリ１０に追い出さなくとも受け付けることが可能な量を考慮して設定する。
【００９８】
ＦＳ行きクラスタ数（ＦＳ行きクラスタデータ量）α５のＡＦ閾値Ｃafは、例えば最大値Ｑの１／４であるＱ／４程度に設定する。Ｑ／４は、例えば、ＦＳ１２に対して並列に書けば、ホスト１からＷＣ２１への書き込み速度と同等の速度が得られる値とする。α５に対する上限値Ｃlmtとしては、例えば（６／８〜７／８）Ｑ程度の値に設定する。上限値Ｃlmtは、α４と同様、最大値からの残り分だけ空けておけば、次のwrite要求をＮＡＮＤメモリ１０に追い出さなくとも受け付けることが可能な量を考慮して設定する。
【００９９】
図１６は、本実施の形態の要部の機能構成を示すブロック図である。前述したように、ＮＡＮＤメモリ１０は、ユーザデータを記憶するＭＳ１１、ＦＳ１２，ＩＳ１３からなるユーザデータ記憶部を備えている。ＤＲＡＭ２０には、ＷＣ２１が備えられている。データ管理部であるコントローラ１２０は、ホスト１からのデータをＷＣ２１に対して書き込む制御を行うＷＣ書き込み制御部２１０と、ＷＣ２１からＮＡＮＤメモリ１０にデータを追い出す追い出し制御を実行するＷＣ追い出し制御部２１１と、ＷＣ２１から追い出されたデータをＮＡＮＤメモリ１０に書き込む制御を実行するＮＡＮＤ書き込み制御部２１３と、ＮＡＮＤメモリ１０での論理ブロック整理（コンパクション、デフラグなど）を実行するＮＡＮＤ整理部２１２を備えている。ＮＡＮＤ整理部２１２は、ＮＡＮＤメモリ１０での整理処理の状態を示すＮＡＮＤ整理状態信号（現在整理処理を実行中であるか終了したかを示す信号）を、ＷＣ書き込み制御部２１０およびＷＣ追い出し制御部２１１に逐次送っている。ＷＣ書き込み制御部２１０およびＷＣ追い出し制御部２１１は、ＮＡＮＤ整理状態信号に基づきＮＡＮＤでのブロック整理状態を判断する。
【０１００】
（ＮＡＮＤメモリの整理）
ＮＡＮＤ整理部２１２が行うＮＡＮＤメモリ１０の整理について説明する。ＮＡＮＤの整理とは、
・ＦＳ１２，ＩＳ１３管理下の論理ブロック数を所定の閾値以下にするためのコンパクション／デフラグ処理
・ＮＡＮＤ管理用テーブル（クラスタディレクトリテーブル３１、クラスタテーブル３２など）のエントリ数を所定の閾値以下にするためのデフラグ処理
などを含む。
これらＦＳ１２，ＩＳ１３管理下の論理ブロック数、ＮＡＮＤ管理用テーブルのエントリ数などＮＡＮＤの整理の際に考慮するパラメータを総称してＮＡＮＤリソース使用量と呼ぶ。ＮＡＮＤ整理部２１２は、各ＮＡＮＤリソース使用量が閾値を越えているときには、ＮＡＮＤメモリ１０の整理を実行し、現在処理を実行中である旨を示すＮＡＮＤ整理状態信号をＷＣ書き込み制御部２１０およびＷＣ追い出し制御部２１１に送る。
【０１０１】
（コンパクション）
コンパクション処理とは、ＩＳ１３で行われる処理であり、ＩＳ管理下の論理ブロックが所定の閾値を越えた際に、有効な最新のクラスタデータを集めて、違う論理ブロックに書き直し、無効クラスタを解放することをいう。なお、この実施の形態では、トラックサイズと論理ブロックサイズを同じにしているために、ＭＳ１１ではコンパクションは発生しないが、トラックサイズと論理ブロックサイズが異なる場合は、ＭＳ１１でもコンパクションが発生する。このような場合は、ＭＳ１１でのコンパクションを含めてＮＡＮＤメモリ１０の整理を行う必要がある。また、ＦＳ１１においても、コンパクションを実行するようにしてもよく、その場合は、ＦＳ１２でのコンパクションを含めてＮＡＮＤメモリ１０の整理を行う必要がある。
【０１０２】
（デフラグ）
デフラグ処理とは、ＦＳ１２，ＩＳ１３管理下の論理ブロック数を所定の閾値を越えた際、あるいはクラスタディレクトリテーブル３１、クラスタテーブル３２などのＦＳ１２，ＩＳ１３管理用のテーブルのエントリ数が所定の閾値を越えた際に、ＦＳ１２あるいはＩＳ１３のクラスタデータをトラックに統合して、ＭＳ１１に追い出す処理をいう。
【０１０３】
つぎに、ＮＡＮＤメモリ１０への追い出しを含むＷＣ２１での書き込み処理について説明する。ＷＣ２１では、Writeコマンドで一時的に超過する場合を除いて、すべてのＷＣ２１のリソース使用量が常に上限値Ｃlmt以下になるよう、ＷＣ２１上のデータをＮＡＮＤメモリ１０に追い出す。また、ホスト１からの要求を待たせている場合を除いて、ＷＣリソース使用量がＡＦ閾値Ｃaf以下になるまで追い出しを継続する。具体的には、以下のような制御が実行される。
【０１０４】
（ＷＣリソース使用量＞上限値Ｃlmtの場合）
まず、ホスト１からのＷＣ２１へのデータ書き込み終了後、ＷＣリソース使用量が上限値Ｃlmtを越えていた場合の処理について説明する。ＷＣ追い出し制御部２１１は、ホスト１からのデータ書き込み終了後、ＷＣリソース使用量α１〜α６の状態を判断し、ＷＣリソース使用量α１〜α６の何れかが上限値Ｃlmtを越えていた場合であって、ホスト１からつぎのWrite要求が来ていない場合は、つぎのような処理を実行する。ＷＣ追い出し制御部２１１は、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理状態を確認し、ＮＡＮＤメモリ１０の整理が終了している場合は、上限値Ｃlmtを越えている要因となっているＷＣ２１のデータをＭＳ１１またはＦＳ１２の何れかまたは両方に追い出して、全てのＷＣリソース使用量α１〜α６を上限値Ｃlmt以下とする。追い出し対象のトラックは、ＬＲＵで古いトラックの順から優先的に選択するとか、上限値Ｃlmt以下にＷＣリソース使用量を抑えるための処理速度を優先して追い出しトラックを選択するとかして決定する。
【０１０５】
ＷＣ追い出し制御部２１１は、全てのＷＣリソース使用量α１〜α６が上限値Ｃlmt以下となった時点で、ホスト１からのつぎのWrite要求が来ていない場合は、ＷＣリソース使用量がＡＦ閾値Ｃaf以下になるまで追い出しを継続する。すなわち、ＷＣ追い出し制御部２１１は、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理状態を確認し、ＮＡＮＤメモリ１０の整理が終了している場合は、ＡＦ閾値Ｃafを越えている要因となっているＷＣ２１のデータをＭＳ１１またはＦＳ１２の何れかまたは両方に追い出して、全てのＷＣリソース使用量α１〜α６をＡＦ閾値Ｃaf以下とする。追い出し対象のトラックは、例えば、書き込み効率のよいフルのトラックを優先的に追い出す、あるいはＬＲＵで古いトラックの順から優先的に選択するとかして決定する。一方、ＷＣ追い出し制御部２１１は、全てのＷＣリソース使用量α１〜α６が上限値Ｃlmt以下となった時点で、ホスト１からのつぎのWrite要求が来ている場合、あるいはＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理が終了していないと判断した場合は、ホスト１からの要求あるいはＮＡＮＤメモリ１０の整理を優先して、Auto  Flush処理を実行しない。
【０１０６】
また、ＷＣ追い出し制御部２１１は、ホスト１からのデータ書き込み終了後、ＷＣリソース使用量α１〜α６の何れかが上限値Ｃlmtを越えていた場合であって、ホスト１からつぎのWrite要求が来ている場合は、つぎのような処理を実行する。ＷＣ追い出し制御部２１１は、ホスト１からのつぎのWrite要求を待たせるとともに、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理状態を確認し、ＮＡＮＤメモリ１０の整理が終了している場合は、上限値Ｃlmtを越えている要因となっているＷＣ２１のデータをＭＳ１１またはＦＳ１２の何れかまたは両方に追い出して、全てのＷＣリソース使用量α１〜α６を上限値Ｃlmt以下とする。そして、ＷＣ追い出し制御部２１１は、全てのＷＣリソース使用量α１〜α６が上限値Ｃlmt以下となった時点で、ホスト１からのWrite要求を受け付ける。しかし、ＷＣ追い出し制御部２１１は、ホスト１からのつぎのWrite要求を待たせた状態中に、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理が終了していないと判断した場合は、ＮＡＮＤメモリ１０の整理を優先して、ＮＡＮＤメモリ１０の整理が終了するまで待機し、ＮＡＮＤメモリ１０の整理の終了を確認した後に、上限値Ｃlmtを越えている要因となっているＷＣ２１のデータをＭＳ１１またはＦＳ１２の何れかまたは両方に追い出して、全てのＷＣリソース使用量α１〜α６を上限値Ｃlmt以下とする。そして、全てのＷＣリソース使用量α１〜α６が上限値Ｃlmt以下となった時点で、ホスト１からのWrite要求を受け付ける。
【０１０７】
（ＡＦ閾値Ｃaf＜ＷＣリソース使用量＜上限値Ｃlmtの場合）
つぎに、ホスト１からのＷＣ２１へのデータ書き込み終了後、ＷＣリソース使用量が上限値Ｃlmtを越えていないが、ＡＦ閾値Ｃafを越えていた場合の処理について説明する。ＷＣ追い出し制御部２１１は、ホスト１からのデータ書き込み終了後、ＷＣリソース使用量α１〜α６の何れかがＡＦ閾値Ｃafを越えていた場合に、ホスト１からのつぎのWrite要求が来ている場合は、そのままAuto  Flush処理を実行せず、ホスト１からのつぎのWrite要求を受け付ける。
【０１０８】
しかし、ホスト１からのつぎのWrite要求が来ていない場合は、つぎのような処理を実行する。ＷＣ追い出し制御部２１１は、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理状態を確認し、ＮＡＮＤメモリ１０の整理が終了している場合は、ＡＦ閾値を越えている要因となっているＷＣ２１のデータをＭＳ１１またはＦＳ１２の何れかまたは両方に追い出して、全てのＷＣリソース使用量α１〜α６をＡＦ閾値Ｃaf以下とする。追い出し対象のトラックは、例えば、書き込み効率のよいフルのトラックを優先的に追い出す、あるいはＬＲＵで古いトラックの順から優先的に選択するとかして決定する。
【０１０９】
一方、ＷＣ追い出し制御部２１１は、ＷＣリソース使用量α１〜α６の何れかがＡＦ閾値Ｃafを越えていた場合でも、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理が終了していないと判断した場合は、ＮＡＮＤメモリ１０の整理を優先して、Auto  Flush処理を実行しない。つぎのホスト１からのWriteコマンドが受信される前に、ＮＡＮＤ整理状態信号によってＮＡＮＤメモリ１０の整理終了が確認された場合は、Auto  Flush処理を実行する。このように、書き込み終了後にＮＡＮＤメモリ１０の整理が終わっている場合は、Auto  Flush処理を実行することで、ＷＣ２１を早めに余裕をもって空けておくことができる。
【０１１０】
（他の実施の形態）
上記では、まず、ホスト１からのＷＣ２１へのデータ書き込み終了後、ＷＣリソース使用量α１〜α６が上限値Ｃlmtを越えていた場合であって、かつホスト１からつぎのWrite要求が来ている場合であって、さらにＮＡＮＤメモリ１０の整理が終了していない場合は、ホスト１からのつぎのWrite要求を待たせてＮＡＮＤメモリの整理を行い、ＮＡＮＤメモリ１０の整理の終了後、追い出し処理を実行するようにしたが、つぎのような制御も可能である。すなわち、上記の条件が成立した場合、ホスト１のつぎのWrite要求を受け付けてもＷＣリソース使用量α１〜α６が最大値ｍａｘを越えない場合は、ホスト１のつぎのWrite要求を受け付けて、ＷＣ２１にデータを書き込ませ、リソース使用量α１〜α６が最大値ｍａｘを越える場合は、ホスト１のつぎのWrite要求を待たせて、追い出し処理を行って全てのＷＣリソース使用量α１〜α６が上限値Ｃlmt以下になるようにする。
【０１１１】
なお、上記実施の形態では、ホスト１からのＷＣ２１へのデータ書き込み終了後、すなわちデータの書き込み前に、ＷＣ２１からＮＡＮＤメモリ１０への追い出しを行うようにしているが、ＷＣ２１へのデータ書き込みと、ＮＡＮＤメモリ１０への追い出しとを並列処理するようにしてもよい。
【０１１２】
このように本実施の形態によれば、ＷＣリソース使用量を上限値Ｃafより値が小さいＡＦ閾値Ｃafと比較し、ＷＣリソース使用量がＡＦ閾値Ｃafを越えているときは、ＮＡＮＤメモリ１０での整理の状態を確認し、ＮＡＮＤメモリ１０での整理が充分に進んでいる場合には、その時間を有効活用して早めにＷＣ２１からＮＡＮＤメモリ１０にデータを追い出すようにしているので、ＮＡＮＤメモリ１０での整理を早く始めることができ、それによって、後続のＷＣ２１からの追い出しも高速に行えるようになる。その結果、ＷＣ２１のリソース(メモリ領域、管理テーブルのエントリ)を多く確保できるため、後続の書き込みコマンドのレスポンスが向上し、ホストからの書き込み要求に対する応答性を全般的に向上させることができる。また、この実施の形態では、複数のＷＣリソース使用量α１〜α６を用意し、これら複数のＷＣリソース使用量α１〜α６毎に、上限値ＣafとＡＦ閾値Ｃafを用意し、いずれかのＷＣリソース使用量α１〜α６が対応する上限値ＣafまたはＡＦ閾値Ｃafを越えた場合、上限値ＣafまたはＡＦ閾値Ｃafを越えた原因となるデータを追い出すようにしているので、ＷＣリソース使用量を上限値ＣafまたはＡＦ閾値Ｃaf以下にする際の追い出し処理を効率良くかく高速化することが可能となる。
【０１１３】
［第２の実施の形態］
図１７は、ＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【０１１４】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（optical  disk  device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【０１１５】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１１６】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１１７】
図１８は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１１、及びネットワークコントローラ１３１２等を備えている。
【０１１８】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１１９】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１２０】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１２１】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス１３１４等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１２２】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＤＲＡＭから構成される。
【０１２３】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１２４】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１２５】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【０１２６】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がＳＳＤ１００に入力される。
【０１２７】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１２８】
ＥＣ／ＫＢＣ１３１１は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１２９】
このＥＣ／ＫＢＣ１３１１は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１２は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【図面の簡単な説明】
【０１３０】
【図１】ＳＳＤの構成例を示すブロック図。
【図２】ＮＡＮＤメモリチップに含まれる１個のブロックの構成例と、４値データ記憶方式でのしきい値分布を示す図。
【図３】ドライブ制御回路のハードウェア的な内部構成例を示すブロック図。
【図４】プロセッサの機能構成例を示すブロック図。
【図５】ＮＡＮＤメモリおよびＤＲＡＭ内に形成された機能構成を示すブロック図。
【図６】ＬＢＡ論理アドレスを示す図。
【図７】データ管理部内の管理テーブルの構成例を示す図。
【図８】スナップショットとログの生成形態を概念的に示す図。
【図９】ＭＳへの書き込み手順を示す図。
【図１０】ＦＳへの書き込みを示す図。
【図１１】ＦＳからＩＳへのブロック移動をす図。
【図１２】ＷＣでの管理構造を示す図。
【図１３】ＷＣトラック情報テーブルを示す図。
【図１４】ＷＣ高密度トラック情報テーブルを示す図。
【図１５】ＷＣリソース名（パラメータ名）とＡＦ閾値、上限値との関係を示す図。
【図１６】本実施の形態の要部構成を示す機能ブロック図。
【図１７】ＳＳＤを搭載したパーソナルコンピュータの全体図。
【図１８】ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示す図。
【符号の説明】
【０１３１】
１    ホスト装置、２  ＡＴＡインタフェース、４  ドライブ制御回路、  ５  電源回路、７  温度センサ、１０  ＮＡＮＤメモリ、１１  ＭＳ、１２  ＦＳ、１３  ＩＳ、２０  ＤＲＡＭ、２１  ＷＣ、２２  ＲＣ、２４  ＷＣトラックテーブル、２５  ＷＣトラック情報テーブル、２６  高密度トラック情報テーブル、２７  低密度トラック情報テーブル、３０  トラックテーブル、３１  クラスタディレクトリテーブル、３２  クラスタテーブル、３３  クラスタブロック情報テーブル、４０  論物変換テーブル、１２０  データ管理部、２１０  ＷＣ書き込み制御部、２１１  ＷＣ追い出し制御部、２１２  ＮＡＮＤ整理部、２１３  ＮＡＮＤ書き込み制御部。
【図１】
2010157142.tif 000003
【図２】
2010157142.tif 000004
【図３】
2010157142.tif 000005
【図４】
2010157142.tif 000006
【図５】
2010157142.tif 000007
【図６】
2010157142.tif 000008
【図７】
2010157142.tif 000009
【図８】
2010157142.tif 000010
【図９】
2010157142.tif 000011
【図１０】
2010157142.tif 000012
【図１１】
2010157142.tif 000013
【図１２】
2010157142.tif 000014
【図１３】
2010157142.tif 000015
【図１４】
2010157142.tif 000016
【図１５】
2010157142.tif 000017
【図１６】
2010157142.tif 000018
【図１７】
2010157142.tif 000019
【図１８】
2010157142.tif 000020