(57)【要約】      （修正有）【課題】ホストによる書き込み速度の要求を満たしながら不揮発性メモリを効率的に利用できるメモリシステムを提供する。【解決手段】情報処理システム１におけるメモリシステム３は、不揮発性メモリ５と、ライトコマンドを受け付けたことに伴ってホスト２から受信されたデータを格納するＲＡＭ６と、メモリセル当たりにＮビットのデータが書き込まれる第１モードとメモリセル当たりにＭビットのデータが書き込まれる第２モードの少なくとも一方を書き込みモードとして選択し、ＲＡＭ内のデータを不揮発性メモリに書き込むコントローラ４とを具備する。Ｎは１以上の数であり、ＭはＮよりも大きい数である。コントローラは、ライトコマンドを受け付けたことに伴ってホストから受信されたデータの受信速度が閾値以下である場合、第２モードを、受信速度が閾値を超えている場合、第１モードと第２モードとを、書き込みモードとして選択する。【選択図】図１
2020035128.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
ホストからライトコマンドを受け付けた場合に、当該ライトコマンドを受け付けたことに伴って前記ホストから受信されたデータを格納するランダムアクセスメモリと、
前記不揮発性メモリと前記ランダムアクセスメモリとに電気的に接続され、前記不揮発性メモリのメモリセル当たりにＮビットのデータが書き込まれる第１モードと前記不揮発性メモリのメモリセル当たりにＭビットのデータが書き込まれる第２モードの少なくとも一方を書き込みモードとして選択し、前記ランダムアクセスメモリに格納されているデータを前記不揮発性メモリに書き込むように構成されるコントローラとを具備し、前記Ｎは１以上の数であり、前記Ｍは前記Ｎよりも大きい数であり、
前記コントローラは、
１つ以上のライトコマンドを受け付けたことに伴って前記ホストから受信されたデータの受信速度が閾値以下である場合、前記第２モードを前記書き込みモードとして選択し、
前記受信速度が前記閾値を超えている場合、前記第１モードと前記第２モードとを前記書き込みモードとして選択するように構成されるメモリシステム。
【請求項２】
蓄電装置をさらに具備し、
前記コントローラは、外部電源から前記メモリシステムへの電力供給が遮断された場合、前記蓄電装置に蓄積された電荷を用いて、前記ランダムアクセスメモリに格納されているデータを、前記第１モードで前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項３】
前記コントローラは、前記メモリシステムがアイドル状態である場合、前記第１モードで前記不揮発性メモリに書き込まれたデータを、前記第２モードで前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項４】
前記コントローラは、前記受信速度が前記閾値を超えている場合、前記受信速度に基づいて、前記不揮発性メモリに前記第１モードで書き込まれる第１データ量と前記不揮発性メモリに前記第２モードで書き込まれる第２データ量との比を決定するように構成される請求項１記載のメモリシステム。
【請求項５】
前記コントローラは、前記受信速度が前記閾値を超えている場合、前記受信速度が高いほど、前記第１データ量と前記第２データ量との和に対する前記第１データ量の割合を増加させるように構成される請求項４記載のメモリシステム。
【請求項６】
前記コントローラは、
前記ランダムアクセスメモリ内の第２記憶領域を、前記第２モードで書き込まれるべきデータを格納するための第２バッファとして割り当て、
前記受信速度が前記閾値を超えたことに応じて、前記ランダムアクセスメモリ内の第１記憶領域を、前記第１モードで書き込まれるべきデータを格納するための第１バッファとして割り当てるように構成される請求項１記載のメモリシステム。
【請求項７】
前記コントローラは、
前記受信速度が前記閾値以下である場合、ライトコマンドを受け付けたことに伴って前記ホストから受信された第２データを、前記第２バッファに格納し、
前記受信速度が前記閾値を超えている場合、ライトコマンドを受け付けたことに伴って前記ホストから受信された第３データを、前記第１バッファまたは前記第２バッファに格納するように構成される請求項６記載のメモリシステム。
【請求項８】
前記コントローラは、前記受信速度が前記閾値を超えている場合に、前記第２バッファに前記第３データを格納するための空き領域があるならば、前記第３データを前記第２バッファに格納し、前記空き領域がないならば、前記第３データを前記第１バッファに格納するように構成される請求項７記載のメモリシステム。
【請求項９】
蓄電装置をさらに具備し、
前記コントローラは、
前記受信速度が前記閾値以下である間に、外部電源から前記メモリシステムへの電力供給が遮断された場合、前記蓄電装置に蓄積された電荷を用いて、前記第２バッファに格納されているデータを前記第１モードで前記不揮発性メモリに書き込み、
前記受信速度が前記閾値を超えている間に、前記外部電源から前記メモリシステムへの電力供給が遮断された場合、前記蓄電装置に蓄積された電荷を用いて、前記第１バッファに格納されているデータと前記第２バッファに格納されているデータとを前記第１モードで前記不揮発性メモリに書き込むように構成される請求項７記載のメモリシステム。
【請求項１０】
前記コントローラは、前記閾値を超えていた前記受信速度が、前記閾値以下になった場合、前記第１バッファに格納されているデータを前記第１モードで前記不揮発性メモリに書き込んだ後、前記第１バッファを解放するように構成される請求項６記載のメモリシステム。
【請求項１１】
前記コントローラは、第１時間内に、１つ以上のライトコマンドを受け付けたことに伴って前記ホストから受信したデータの量に基づいて、前記受信速度を算出するように構成される請求項１記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
【０００３】
このようなメモリシステムの１つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、ハードディスクドライブ（ＨＤＤ）と比較して、高速なアクセスが可能であり、消費電力が低いので、様々なコンピューティングデバイスのメインストレージとして使用される事例が増加している。
【０００４】
ＮＡＮＤ型フラッシュメモリのような不揮発性メモリにおいては、その許容できる最大プログラム／イレーズ（Ｐ／Ｅ）サイクル数に限界があり、実行されたＰ／Ｅサイクル数がその限界値に達すると不揮発性メモリが所定の信頼性を保持できない可能性がある。
【０００５】
また、不揮発性メモリにおいては、メモリセル当たりに格納されるデータのビット数（すなわち、記憶密度）が増えれば増えるほど、全体の記憶容量は増加するものの、データを書き込むために要する時間およびデータを読み出すために要する時間は長くなる。
【０００６】
最近では、１つのメモリセルに１ビットのデータを格納するシングルレベルセル（ＳＬＣ）モードと、１つのメモリセルに２ビット以上のデータを格納するマルチレベルセル（ＭＬＣ）モードとを選択的に使用して、データを不揮発性メモリに書き込むことが可能なメモリシステムも開発されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２０１６／００７０３３６号明細書
【特許文献２】米国特許出願公開第２０１８／００５９７６１号明細書
【特許文献３】特開２０１６−１７０７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、ホストによる書き込み速度の要求を満たしながら、不揮発性メモリを効率的に利用できるメモリシステムを提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、メモリシステムは、不揮発性メモリと、ランダムアクセスメモリと、コントローラとを具備する。前記ランダムアクセスメモリは、ホストからライトコマンドを受け付けた場合に、当該ライトコマンドを受け付けたことに伴って前記ホストから受信されたデータを格納する。前記コントローラは、前記不揮発性メモリと前記ランダムアクセスメモリとに電気的に接続され、前記不揮発性メモリのメモリセル当たりにＮビットのデータが書き込まれる第１モードと前記不揮発性メモリのメモリセル当たりにＭビットのデータが書き込まれる第２モードの少なくとも一方を書き込みモードとして選択し、前記ランダムアクセスメモリに格納されているデータを前記不揮発性メモリに書き込む。前記Ｎは１以上の数であり、前記Ｍは前記Ｎよりも大きい数である。前記コントローラは、１つ以上のライトコマンドを受け付けたことに伴って前記ホストから受信されたデータの受信速度が閾値以下である場合、前記第２モードを前記書き込みモードとして選択し、前記受信速度が前記閾値を超えている場合、前記第１モードと前記第２モードとを前記書き込みモードとして選択する。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るメモリシステムの構成例を示すブロック図。
【図２】同実施形態のメモリシステムで用いられるルックアップテーブル（ＬＵＴ）の構成例を示す図。
【図３】同実施形態のメモリシステムで用いられるＬＢＡ範囲−書き込みモードテーブルの構成例を示す図。
【図４】同実施形態のメモリシステムで用いられる書き込みモードの特徴を説明するための図。
【図５】図４の書き込みモードに応じたＮＡＮＤ型フラッシュメモリの記憶容量の例を示す図。
【図６】同実施形態のメモリシステムによって、ＱＬＣモードとＳＬＣモードでそれぞれデータが書き込まれる場合に要する時間の例を示す図。
【図７】同実施形態のメモリシステムにおいて、ユーザデータがＳＬＣモードでの書き込みを経由してＱＬＣモードで書き込まれる場合に、各モードでの書き込みに用いられるブロック群の記憶容量と書き込み耐性との関係の例を説明するための図。
【図８】同実施形態のメモリシステムにおいて、ユーザデータがＳＬＣモードでの書き込みを経由してＱＬＣモードで書き込まれる場合に、各モードでの書き込みに用いられるブロック群の記憶容量と書き込み耐性との関係の別の例を説明するための図。
【図９】同実施形態のメモリシステムによって、書き込みバンド幅が閾値以下である場合に、ＱＬＣ用ライトバッファに格納されたユーザデータがＱＬＣブロック群に並列に書き込まれる例を示す図。
【図１０】同実施形態のメモリシステムによって、書き込みバンド幅が閾値を超えている場合に、ＱＬＣ用ライトバッファに格納されたユーザデータがＱＬＣブロック群に、ＳＬＣ用ライトバッファに格納されたユーザデータがＳＬＣブロック群に、並列に書き込まれる例を示す図。
【図１１】同実施形態のメモリシステムによって、書き込みバンド幅が閾値以下である場合に、ユーザデータがＱＬＣモードでＮＡＮＤ型フラッシュメモリに書き込まれる例を示す図。
【図１２】同実施形態のメモリシステムによって、書き込みバンド幅が閾値を超えている場合に、ユーザデータがＱＬＣモードとＳＬＣモードとでＮＡＮＤ型フラッシュメモリに書き込まれる例を示す図。
【図１３】図１１のメモリシステムにおいて、外部電源からの電力供給が遮断されたことに応じて、ＱＬＣ用ライトバッファ内のユーザデータがＳＬＣモードでＮＡＮＤ型フラッシュメモリに書き込まれる例を示す図。
【図１４】図１２のメモリシステムにおいて、外部電源からの電力供給が遮断されたことに応じて、ＱＬＣ用ライトバッファおよびＳＬＣ用ライトバッファ内のユーザデータがＳＬＣモードでＮＡＮＤ型フラッシュメモリに書き込まれる例を示す図。
【図１５】同実施形態のメモリシステムによって、ＮＡＮＤ型フラッシュメモリに暫定的にＳＬＣモードで書き込まれたユーザデータが、ＱＬＣモードで改めて書き込まれる例を示す図。
【図１６】同実施形態のメモリシステムにおいて、（Ａ）システムが成立する書き込みバンド幅の遷移の例と、（Ｂ）システムが成立しない書き込みバンド幅の推移の例とを説明するための図。
【図１７】同実施形態のメモリシステムによって実行されるモード制御処理の手順の例を示すフローチャート。
【図１８】同実施形態のメモリシステムによって実行されるバッファリング処理の手順の例を示すフローチャート。
【図１９】同実施形態のメモリシステムによって実行されるＳＬＣライト処理の手順の例を示すフローチャート。
【図２０】同実施形態のメモリシステムによって実行されるＱＬＣライト処理の手順の例を示すフローチャート。
【図２１】同実施形態のメモリシステムによって実行されるパワー・ロス・プロテクション（ＰＬＰ）処理の手順の例を示すフローチャート。
【図２２】同実施形態のメモリシステムによって実行される書き換え処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して説明する。
【００１２】
まず、図１を参照して、一実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１３】
このメモリシステムは、ＮＡＮＤ型フラッシュメモリ５のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、ＮＡＮＤ型フラッシュメモリ５を備えるソリッドステートドライブ（ＳＳＤ）３として実現されている。
【００１４】
情報処理システム１は、ホストデバイス（以下、ホストとも称する）２と、ＳＳＤ３とを含む。ホスト２は、ＳＳＤ３にアクセスする情報処理装置である。ホスト２は、大量且つ多様なデータをＳＳＤ３に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。
【００１５】
ＳＳＤ３は、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。ＳＳＤ３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１６】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等が使用され得る。
【００１７】
ＳＳＤ３は、コントローラ４、およびＮＡＮＤ型フラッシュメモリ５を備える。コントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現され得る。
【００１８】
また、ＳＳＤ３は、揮発性メモリであるランダムアクセスメモリ（ＲＡＭ）、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）６を備えていてもよい。あるいは、スタティックランダムアクセスメモリ（ＳＲＡＭ）のようなランダムアクセスメモリがコントローラ４に内蔵されていてもよい。なお、ＤＲＡＭ６が、コントローラ４に内蔵されていてもよい。
【００１９】
ＤＲＡＭ６等のランダムアクセスメモリには、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータや、ＮＡＮＤ型フラッシュメモリ５から読み出されるデータを一時的に格納するためのバッファ領域が設けられる。このバッファ領域は、例えば、ＮＡＮＤ型フラッシュメモリ５にクワッドレベルセル（ＱＬＣ）モードで書き込まれるべきデータを一時的に格納するためのＱＬＣ用ライトバッファ２１、ＮＡＮＤ型フラッシュメモリ５にシングルレベルセル（ＳＬＣ）モードで書き込まれるべきデータを一時的に格納するためのＳＬＣ用ライトバッファ２２、および異なる書き込みモードでの書き換えに用いられるデータを一時的に格納するための書き換え用バッファ２３として割り当てられ得る。
【００２０】
また、ＤＲＡＭ６等のランダムアクセスメモリには、論理物理アドレス変換テーブルとして機能するルックアップテーブル（ＬＵＴ）２６のキャッシュ領域が設けられている。ＬＵＴ２６は、図２に示すように、論理アドレス（例えば、論理ブロックアドレス（ＬＢＡ））それぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間のマッピングを管理する。
【００２１】
さらに、ＤＲＡＭ６等のランダムアクセスメモリには、ホスト２から受け付けたコマンドの処理のために用いられる各種の値（例えば、書き込み要求量２４等）や、各種のテーブル（例えば、ＬＢＡ範囲−書き込みモードテーブル２７等）の格納領域が設けられてもよい。ＬＢＡ範囲−書き込みモードテーブル２７は、図３に示すように、ＬＢＡ範囲とこのＬＢＡ範囲に対応する書き込みモードとの対応関係を管理する。各ＬＢＡ範囲は開始ＬＢＡおよび終了ＬＢＡによって規定されてもよいし、開始ＬＢＡとサイズとによって規定されてもよい。
【００２２】
図１に戻り、ＳＳＤ３は電源制御部７をさらに備えている。電源制御部７は、ＳＳＤ３内の各部に電力を供給する。電源制御部７は、例えば、図示しない外部電源から電源制御部７に供給される電力を用いて、ＳＳＤ３内の各部に供給される電力を制御する。外部電源から供給される電力が遮断された場合、電源制御部７は、蓄電装置７１に蓄積された電荷を用いて、ＳＳＤ３内の各部に一時的に電力を供給する。蓄電装置７１は、キャパシタ、バッテリ等として実現され得る。
【００２３】
蓄電装置７１は、外部電源から供給される電力が遮断された場合のバックアップ用の電源として機能する。蓄電装置７１には、例えば、外部電源から電力が供給されている間に、ＳＳＤ３がパワー・ロス・プロテクション（ＰＬＰ）機能を用いて動作するために必要な電荷が蓄積されている。ＰＬＰ機能は、外部電源からＳＳＤ３に供給される電力が遮断された場合に、蓄電装置７１に蓄積された電荷のエネルギーを用いて、ＤＲＡＭ６に格納され、且つＮＡＮＤ型フラッシュメモリ５には書き込まれていないユーザデータ等を、ＮＡＮＤ型フラッシュメモリ５に書き込むための機能である。
【００２４】
また、ＮＡＮＤ型フラッシュメモリ５は、複数のＮＡＮＤ型フラッシュメモリチップ（すなわち複数のＮＡＮＤ型フラッシュメモリダイ）を含んでいてもよい。各チップは、メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリとして実現され得る。
【００２５】
メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに２ビットのデータを格納可能なマルチレベルセル（ＭＬＣ、あるいは４ＬＣ）フラッシュメモリ、メモリセル当たりに３ビットのデータを格納可能なトリプルレベルセル（ＴＬＣ、あるいは８ＬＣ）フラッシュメモリ、メモリセル当たりに４ビットのデータを格納可能なクワッドレベルセル（ＱＬＣ、あるいは１６ＬＣ）フラッシュメモリ、等が含まれる。なお、メモリセル当たりに２ビット以上のデータを格納するフラッシュメモリをＭＬＣフラッシュメモリと称することもあるが、以下では、メモリセル当たりに２ビットのデータを格納するフラッシュメモリをＭＬＣフラッシュメモリと称する。
【００２６】
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイ５０２を含む。このＮＡＮＤ型フラッシュメモリ５は、二次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、三次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００２７】
ＮＡＮＤ型フラッシュメモリ５は、コントローラ４によって転送される書き込み対象のユーザデータを一時的に格納するページバッファ５０３を備える。例えば、コントローラ４によって、ページバッファ５０３にユーザデータが格納され、プログラムが指示された場合に、ＮＡＮＤ型フラッシュメモリ５はこのユーザデータをメモリセルアレイ５０２に書き込む。つまり、ＮＡＮＤ型フラッシュメモリ５は、コントローラ４からページバッファ５０３を介して書き込み対象のユーザデータを受け取ることができる。
【００２８】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイ５０２は、複数のブロックＢ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１の各々は複数のページ（ここでは、ページＰ０〜Ｐｎ−１）を含む。ブロックＢ０〜Ｂｍ−１は、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【００２９】
ブロックＢ０〜Ｂｍ−１の各々に対して許容できる最大Ｐ／Ｅサイクル数には限界がある。あるブロックの１回のＰ／Ｅサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作（より詳しくは、プログラム動作）とを含む。
【００３０】
ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに１ビットのデータが書き込まれるＳＬＣモード、メモリセル当たりに２ビットのデータが書き込まれるＭＬＣモード、メモリセル当たりに３ビットのデータが書き込まれるＴＬＣモード、メモリセル当たりに４ビットのデータが書き込まれるＱＬＣモードのいずれかで、書き込み動作を実行することができる。
【００３１】
例えば、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに２ビットを格納可能なＭＬＣフラッシュメモリ（すなわち、４ＬＣフラッシュメモリ）として実現されていてもよい。
【００３２】
この場合、通常は、２ページ分のデータである下位ページデータおよび上位ページデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに２ビットのデータを書き込むことができる。このＭＬＣフラッシュメモリ内の任意の領域（例えば、１つ以上の任意のブロック）は、メモリセル当たりに１ビットのデータのみを格納可能なＳＬＣ領域として使用することができる。
【００３３】
このＳＬＣ領域にデータを書き込む書き込み動作においては、１ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＳＬＣ領域として使用される各ブロックにおいては、ＳＬＣフラッシュメモリ内の各ブロック（すなわち、ＳＬＣブロック）と同様に、メモリセル当たりに１ビットのデータのみを書き込むことができる。この結果、ＳＬＣ領域として使用される各ブロックは、ＳＬＣブロックとして機能する。
【００３４】
あるいは、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに３ビットのデータを格納可能なＴＬＣフラッシュメモリ（８ＬＣフラッシュメモリ）であってもよい。
【００３５】
この場合、通常は、３ページ分のデータである下位ページデータ、ミドルページデータ、および上位ページデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに３ビットのデータを書き込むことができる。このＴＬＣフラッシュメモリ内の任意の領域（例えば、１つ以上の任意のブロック）は、上述のＳＬＣ領域として使用されてもよいし、メモリセル当たりに２ビットのデータを格納可能なＭＬＣ領域として使用されてもよい。なお、ＳＬＣ領域およびＭＬＣ領域は、ブロックよりも細かい単位（例えば、ワード線の単位、ブロック内のワード線の集合の単位）で設定されてもよい。ＭＬＣ領域においては、２ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＭＬＣ領域においては、メモリセル当たりに２ビットのデータのみを書き込むことができる。
【００３６】
あるいは、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに４ビットを格納可能なＱＬＣフラッシュメモリ（１６ＬＣフラッシュメモリ）であってもよい。
【００３７】
この場合、通常、４ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに４ビットのデータを書き込むことができる。このＱＬＣフラッシュメモリ内の任意の領域（例えば、１つ以上の任意のブロック）は、上述のＳＬＣ領域として使用されてもよいし、上述のＭＬＣ領域として使用されてもよいし、あるいは、メモリセル当たりに３ビットのデータを格納可能なＴＬＣ領域として使用されてもよい。なお、ＳＬＣ領域、ＭＬＣ領域、およびＴＬＣ領域は、ブロックよりも細かい単位（例えば、ワード線の単位、ブロック内のワード線の集合の単位）で設定されてもよい。ＴＬＣ領域においては、３ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＴＬＣ領域においては、メモリセル当たりに３ビットのデータを書き込むことができる。
【００３８】
図４に示すように、各書き込みモードにおけるメモリセル当たりの記憶密度は、ＳＬＣモードでは２値（すなわち、ワード線当たり１ページ）であり、ＭＬＣモードでは４値（すなわち、ワード線当たり２ページ）であり、ＴＬＣモードでは８値（すなわち、ワード線当たり３ページ）であり、ＱＬＣモードでは１６値（すなわち、ワード線当たり４ページ）である。そして、ＮＡＮＤ型フラッシュメモリ５に対するデータの読み出し速度および書き込み速度は、記憶密度が高いほど遅く、記憶密度が低いほど速い。したがって、これら４つのモードでは、ＱＬＣモードにおけるデータの読み出しおよび書き込みが最も遅く、ＳＬＣモードにおける読み出しおよび書き込みが最も速い。
【００３９】
また、ＮＡＮＤ型フラッシュメモリ５の寿命（エンデュランス）は、記憶密度が高いほど短く、記憶密度が低いほど長い。寿命と記憶密度の関係について、メモリセルの閾値電圧分布に着目して説明する。記憶密度が低いほど、隣り合う状態に対応する閾値電圧分布間のマージンは広くなり、記憶密度が高いほど、閾値電圧分布間のマージンは狭くなる。広いマージンは、たとえメモリセルに加わるストレスによってこのメモリセルの閾値電圧がずれても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑制する。
【００４０】
このため、例えば、ＳＬＣモードにおける許容可能なメモリセルの個別の疲弊度は、ＱＬＣモードにおける許容可能なメモリセルの個別の疲弊度よりも高くなる。したがって、閾値電圧分布間のマージンが広い低記憶密度の書き込みモードを使用した場合は、閾値電圧分布間のマージンが狭い高記憶密度の書き込みモードを使用した場合に比べ、ＮＡＮＤ型フラッシュメモリ５の寿命を長くすること（すなわち、許容できる最大Ｐ／Ｅサイクル数を増やすこと）ができる。
【００４１】
図４に示す４つのモードでは、ＱＬＣモードにおける寿命が最も短くなり、ＳＬＣモードにおける寿命が最も長くなる。例えば、ＱＬＣモードでデータが書き込まれた場合に許容できる最大Ｐ／Ｅサイクル数は数ｋサイクルであり、ＳＬＣモードでデータが書き込まれた場合に許容できる最大Ｐ／Ｅサイクル数は数十ｋサイクルである。
【００４２】
なお、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに５ビット以上を格納可能に構成されていてもよい。この場合においても、ＮＡＮＤ型フラッシュメモリ５内の任意の領域は、メモリセル当たりに４ビット以下のデータのみが書き込まれる領域として使用され得る。
【００４３】
図５は、各書き込みモードに応じたＮＡＮＤ型フラッシュメモリ５の記憶容量の例を示す。ここでは、ＮＡＮＤ型フラッシュメモリ５に含まれる複数のＮＡＮＤ型フラッシュメモリチップが、メモリセル当たりに４ビットを格納可能に構成されたＱＬＣフラッシュメモリとして実現される場合を例示する。また、ＮＡＮＤ型フラッシュメモリ５にＱＬＣモードでデータが書き込まれた場合、ＳＳＤ３の記憶容量は５１２ＧＢであることを想定する。
【００４４】
図５に示すように、バッドブロック等がない最適な条件下では、ＮＡＮＤ型フラッシュメモリ５にＴＬＣモードでデータが書き込まれた場合のＳＳＤ３の記憶容量は３８４ＧＢであり、ＭＬＣモードでデータが書き込まれた場合のＳＳＤ３の記憶容量は２５６ＧＢであり、ＳＬＣモードでデータが書き込まれた場合のＳＳＤ３の記憶容量は１２８ＧＢである。
【００４５】
このように、データがいずれの書き込みモードで書き込まれるかによって、ＮＡＮＤ型フラッシュメモリ５の記憶容量は異なる。
【００４６】
図１に戻り、コントローラ４は、Ｔｏｇｇｌｅ  ＤＤＲ、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）等のインタフェース規格に対応するＮＡＮＤインタフェースを備えるＮＡＮＤコントローラ１３およびＥＣＣ処理部１５を介して、ＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。ＮＡＮＤコントローラ１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。
【００４７】
ＮＡＮＤコントローラ１３およびＥＣＣ処理部１５は、複数のチャネル（Ｃｈ）を介して、ＮＡＮＤ型フラッシュメモリ５内の複数のＮＡＮＤ型フラッシュメモリチップにそれぞれ接続されていてもよい。複数のＮＡＮＤ型フラッシュメモリチップが並列に駆動されることにより、ＮＡＮＤ型フラッシュメモリ５に対するアクセスを広帯域化することができる。
【００４８】
ＥＣＣ処理部１５は、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータと、ＮＡＮＤ型フラッシュメモリ５から読み出されたデータとを、誤り訂正符号（ＥＣＣ）で保護するための機能を有する回路として実現され得る。ＥＣＣ処理部１５は、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータにＥＣＣを付加する。また、ＥＣＣ処理部１５は、ＮＡＮＤ型フラッシュメモリ５から読み出されたデータに付加されたＥＣＣを用いて、読み出されたデータに誤りが発生しているか否かを判別し、誤りが発生している場合にはその誤りを訂正する。
【００４９】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラとして機能する。
【００５０】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ページ単位の読み出し（リード）動作および書き込み（ライト）動作のための処理、等が含まれる。論理アドレスは、ＳＳＤ３をアドレス指定するためにホスト２によって使用されるアドレスである。以下では、この論理アドレスとして、論理ブロックアドレス（ＬＢＡ）が使用されることを想定する。
【００５１】
ＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するＬＵＴ２６を用いて実行される。コントローラ４は、ＬＵＴ２６を使用して、ＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータが書き込まれたＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す。ＬＵＴ２６は、ＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００５２】
１つのページへのデータ書き込みは、１回のＰ／Ｅサイクル当たり１回のみ可能である。このため、コントローラ４は、あるＬＢＡに対応する更新データを、このＬＢＡに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、このＬＢＡをこの別の物理記憶位置に関連付けるようにＬＵＴ２６を更新することにより、以前のデータを無効化する。
【００５３】
以下では、ＬＵＴ２６から参照されているデータ（すなわち、ＬＢＡと紐付けられているデータ）を有効データと称する。また、どのＬＢＡとも紐付けられていないデータを無効データと称する。有効データは、後にホスト２からリードされる可能性があるデータである。無効データは、もはやホスト２からリードされる可能性がないデータである。
【００５４】
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
【００５５】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤコントローラ１３、ＤＲＡＭインタフェース１４、ＥＣＣ処理部１５等を含んでもよい。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤコントローラ１３、ＤＲＡＭインタフェース１４、およびＥＣＣ処理部１５は、バス１０を介して相互接続されていてもよい。
【００５６】
ホストインタフェース１１は、ホスト２から様々なコマンド、例えば、Ｉ／Ｏコマンド、各種制御コマンド、等を受信する回路として機能する。Ｉ／Ｏコマンドには、ライトコマンド、リードコマンド、等が含まれ得る。制御コマンドには、アンマップコマンド（トリムコマンド）、フォーマットコマンド、フラッシュコマンド等が含まれ得る。フォーマットコマンドは、ＳＳＤ３全体をアンマップするためのコマンドである。フラッシュコマンドは、ＳＳＤ３内にキャッシュまたはバッファされているダーティデータ（例えば、ユーザデータおよび関連する管理データ）をＮＡＮＤ型フラッシュメモリ５に書き込むためのコマンドである。
【００５７】
ＤＲＡＭインタフェース１４は、ＤＲＡＭ６のアクセスを制御するように構成されたＤＲＡＭ制御回路として機能する。ＤＲＡＭ６の記憶領域は、書き込み要求量２４、ＬＵＴ２６、およびＬＢＡ範囲−書き込みモードテーブル２７等を格納するため領域や、ＱＬＣ用ライトバッファ２１、ＳＬＣ用ライトバッファ２２、および書き換え用バッファ２３として利用される領域に割り当てられる。ＬＢＡ範囲−書き込みモードテーブル２７は、ＬＢＡ範囲とこのＬＢＡ範囲に対応する書き込みモードとの対応関係を管理するために用いられるテーブルである。
【００５８】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤコントローラ１３、およびＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、図示しないＲＯＭ等に格納されている制御プログラム（ファームウェア）を実行することによって様々な処理を行う。このＣＰＵ１２は、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行されてもよい。
【００５９】
上述したように、ＳＳＤ３では、ＤＲＡＭ６のようなランダムアクセスメモリがバッファとして用いられる。ＳＳＤ３では、ホスト２からのライトコマンドを受け付けたことに伴って当該ホスト２から受信された書き込み対象のユーザデータがＤＲＡＭ６に格納された時点で、そのユーザデータがＮＡＮＤ型フラッシュメモリ５に書き込まれる前に、ホスト２に応答することにより、応答時間が短縮されている。
【００６０】
この応答の時点では、ユーザデータのＮＡＮＤ型フラッシュメモリ５への書き込みは完了していない。そのため、もしＳＳＤ３に供給される電力が遮断されたならば、揮発性メモリであるＤＲＡＭ６に格納されているユーザデータは失われてしまう。
【００６１】
そこで、ホスト２とＳＳＤ３からなる情報処理システム１におけるデータの一貫性を保つために、ＳＳＤ３はＰＬＰ機能を有することがある。ＰＬＰ機能を有するＳＳＤ３は、外部電源からＳＳＤ３に供給される電力が遮断された場合、ＳＳＤ３内に設けられた蓄電装置７１に蓄積された電荷のエネルギーを用いて、ＤＲＡＭ６に格納され、且つＮＡＮＤ型フラッシュメモリ５には書き込まれていないユーザデータを、ＮＡＮＤ型フラッシュメモリ５に書き込むように構成される。
【００６２】
ところで、ＳＳＤ３の市場での成長を支えている特徴の１つに、装置当たりの記憶容量の増大がある。装置当たりの記憶容量の増大は、ＮＡＮＤ型フラッシュメモリ５の集積度の向上によるところが大きい。ＮＡＮＤ型フラッシュメモリ５の集積度の向上は、メモリセルの微細化と共に、メモリセルに記憶されるデータの多値化によって達成されている。
【００６３】
メモリセルに記憶されるデータの多値化は、１つのメモリセルに１ビットのデータを格納するＳＬＣから、２ビットのデータを格納するＭＬＣや３ビットのデータを格納するＴＬＣに進展し、最近では、４ビットのデータを格納するＱＬＣが実用化されつつある。
【００６４】
多値化されたデータを記憶するメモリセルでは、メモリセル間の干渉が発生することがある。このようなメモリセル間の干渉を緩和させるためには、メモリセルに対して同じデータを複数回入力する等の処理が必要な可能性がある。そのため、ＮＡＮＤ型フラッシュメモリ５への書き込みが完了するまで、多くのデータをライトバッファ（例えば、ＤＲＡＭ６）に保持しておく必要がある。
【００６５】
ここで、ライトバッファのサイズとＰＬＰとの関係について説明する。上述した近年の多値化の進展により、ライトバッファのサイズは増大しつつある。また、コントローラ４がホスト２から受信する書き込み対象のユーザデータの受信速度（以下、書き込みバンド幅とも称する）が速いほど、複数のＮＡＮＤ型フラッシュメモリチップを並列に駆動して、コントローラ４がＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込む書き込み速度を速くする必要がある。そのため、書き込みバンド幅が大きくなることに比例してライトバッファのサイズが大きくなる。ホスト２は、書き込み対象のユーザデータをある書き込みバンド幅でコントローラ４に受信させることにより、結果として、コントローラ４に対して、この書き込みバンド幅に応じた書き込み速度でユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込むことを要求する。換言すると、書き込みバンド幅に応じて、要求されるＮＡＮＤ型フラッシュメモリ５への書き込み速度が決定されると云える。
【００６６】
以上を鑑みて、ＰＬＰの動作で書き込まれ得る最大のデータ量に相当するライトバッファのサイズは増大しつつある。さらに、ＰＬＰの動作は、蓄電装置７１に蓄積された電荷のエネルギーを利用するが、蓄電装置７１に蓄積可能な電荷量にも限界がある。
【００６７】
外部電源からＳＳＤ３に供給される電力が遮断された場合、ＰＬＰの動作により、ライトバッファに格納されているユーザデータは、例えば、ＮＡＮＤ型フラッシュメモリ５内の専用の領域にＳＬＣモードで書き込まれる。これは、ＳＬＣモードでの書き込みが高速であるので、すなわち、ＭＬＣモード、ＴＬＣモード、およびＱＬＣモードの場合と比較して短時間での書き込みが可能であるので、書き込み動作で消費される電荷量が少ないためである。
【００６８】
ＰＬＰの動作で書き込まれるべき、ライトバッファに格納されているデータの量（以下、バッファ量とも称する）を低減する方法として、例えば、ホスト２から受信したユーザデータを、一旦、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込み、その書き込まれたユーザデータを、アイドル時に、ＱＬＣモード（あるいは、ＴＬＣモードまたはＭＬＣモード）でＮＡＮＤ型フラッシュメモリ５に改めて書き込む方法がある。
【００６９】
この方法では、ＮＡＮＤ型フラッシュメモリ５に対するＳＬＣモードでの書き込み動作（すなわち、データ入力動作およびプログラム動作）に要する時間が短いこと等から、必要なライトバッファのサイズは小さいので、バッファ量も少なくなる。したがって、ＰＬＰの動作に必要な電荷量も少ない。
【００７０】
しかし、この方法では、データがＳＬＣモードで書き込まれるＳＬＣブロックの書き込み耐性に問題が生じる可能性がある。すなわち、ＳＬＣブロックに対して実行されるＰ／Ｅサイクル数が、ＳＬＣブロックの最大Ｐ／Ｅサイクル数を超える可能性がある。
【００７１】
例えば、ＮＡＮＤ型フラッシュメモリ５全体の記憶容量が、データがＱＬＣモードで書き込まれるＱＬＣブロック群の記憶容量（以下、ＱＬＣ記憶容量とも称する）と、データがＳＬＣモードで書き込まれるＳＬＣブロック群の記憶容量（以下、ＳＬＣ記憶容量とも称する）とで構成される場合を想定する。この場合に、ＳＬＣ記憶容量が、ＱＬＣ記憶容量の１％となるように構成され、各ＱＬＣブロックの最大Ｐ／Ｅサイクル数が１０，０００回であり、各ＳＬＣブロックの最大Ｐ／Ｅサイクル数が１００，０００回であるならば、ＱＬＣブロック群に対するすべての書き込み量が、その１％の記憶容量を有するＳＬＣブロック群を経由することになる。したがって、各ＳＬＣブロックには、１，０００，０００（＝１０，０００／０．０１）回の書き込みが行われることになり、これは、ＳＬＣブロックの最大Ｐ／Ｅサイクル数を超えている。なお、上述したように、あるブロックの１回のＰ／Ｅサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作とを含む。本実施形態では、説明を分かりやすくするために、Ｘ回のＰ／Ｅサイクルを、Ｘ回の書き込みと称することがある。
【００７２】
ＳＬＣブロック群を経由することによって発生する書き込み回数（すなわち、Ｐ／Ｅサイクル数）が、最大Ｐ／Ｅサイクル数の範囲内となるようにするためには、ＳＬＣ記憶容量が、ＱＬＣ記憶容量の１０％となるように、ＮＡＮＤ型フラッシュメモリ５を構成する必要がある。この場合、各ＳＬＣブロックには、１００，０００（＝１０，０００／０．１）回の書き込みが行われることになり、ＳＬＣブロックの最大Ｐ／Ｅサイクル数の範囲内となる。
【００７３】
しかし、ＱＬＣ記憶容量の１０％がＳＬＣ記憶容量となるようにＮＡＮＤ型フラッシュメモリ５が構成されることは、記憶容量の観点において、ＮＡＮＤ型フラッシュメモリ５の経済性を損なうものである。つまり、上記の方法では、ＳＬＣブロックの書き込み耐性に起因して、ＮＡＮＤ型フラッシュメモリ５の経済性が損なわれる。
【００７４】
そのため、本実施形態では、ホスト２からＳＳＤ３に要求される書き込み速度を決定する書き込みバンド幅に応じて、書き込みモードを選択する。書き込みバンド幅は、例えば、ホスト２からライトコマンドを受け付けた場合に、ライトコマンドを受け付けたことに伴ってホスト２から受信される、書き込み対象のユーザデータの受信速度である。より具体的には、書き込みバンド幅が閾値以下である場合、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータが第２モードでＮＡＮＤ型フラッシュメモリ５に書き込まれ、書き込みバンド幅が閾値を超えている場合、ユーザデータが第１モードまたは第２モードで書き込まれる。第１モードではメモリセル当たりにＮビットのデータが書き込まれ、第２モードではメモリセル当たりにＭビットのデータが書き込まれる。なお、Ｎは１以上の数であり、ＭはＮよりも大きい数である。例えば、第１モードはＳＬＣモードであり、第２モードはＱＬＣモード、ＴＬＣモード、またはＭＬＣモードである。
【００７５】
書き込みバンド幅が閾値以下である場合、第２ライトバッファ（例えば、ＱＬＣ用ライトバッファ２１）に第２モードで書き込まれるべきユーザデータが格納され、この第２ライトバッファに格納されたユーザデータが第２モードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【００７６】
また、書き込みバンド幅が閾値を超えたことに応じて、ＤＲＡＭ６内の記憶領域が、第１モードで書き込まれるべきユーザデータが格納される第１ライトバッファ（例えば、ＳＬＣ用ライトバッファ２２）にさらに割り当てられる。書き込みバンド幅が閾値を超えている場合、第１バッファに格納されたユーザデータが第１モードでＮＡＮＤ型フラッシュメモリ５に書き込まれ、第２バッファに格納されたユーザデータが第２モードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【００７７】
このような構成により、書き込みバンド幅が閾値以下である場合には、ユーザデータが第１モード（例えば、ＳＬＣモード）で書き込まれず、書き込みバンド幅が閾値を超えている場合に、ユーザデータが第１モードで書き込まれるので、第１モードでデータが書き込まれるブロックの最大Ｐ／Ｅサイクル数（すなわち、書き込み耐性）を考慮しても、データが第１モードで書き込まれるブロック群として必要な記憶容量を低減することができる。したがって、ＮＡＮＤ型フラッシュメモリ５全体の記憶容量を効率的に使用でき、経済性を高めることができる。
【００７８】
以上のことから、第１モードは、メモリセル当たりに格納可能なビット数を減らすことによってＳＳＤ３のライト性能およびリード性能を向上させるための性能優先の書き込みモードであると云える。一方、第２モードは、メモリセル当たりに格納可能なビット数を増やすことによって、記憶容量を増加させるための容量優先の書き込みモードであると云える。
【００７９】
図６を参照して、第１モードと第２モードとの間のライト性能の差について説明する。ここでは、第１モードがＳＬＣモードであり、第２モードがＱＬＣモードである場合を例示する。
【００８０】
ＱＬＣモードでの書き込みでは、まず、４ページ分のデータが、１回目のＤａｔａ  Ｉｎ動作３０１でＮＡＮＤ型フラッシュメモリチップ内のページバッファ５０３に格納される。つまり、１ページ当たりのデータサイズが１６ＫＢであるならば、６４ＫＢのデータがＮＡＮＤ型フラッシュメモリチップ内のページバッファ５０３に格納される。そして、ページバッファ５０３に格納された４ページ分のデータをＮＡＮＤ型フラッシュメモリチップ内のメモリセルアレイ５０２にプログラムするための１回目のプログラム動作３０２が行われる。
【００８１】
同様にして、４ページ分のデータが、２回目のＤａｔａ  Ｉｎ動作３０３でＮＡＮＤ型フラッシュメモリチップ内のページバッファ５０３に格納される。２回目のＤａｔａ  Ｉｎ動作３０３で格納されるデータは、１回目のＤａｔａ  Ｉｎ動作３０１で格納されるデータと同一である。そして、ページバッファ５０３に格納された４ページ分のデータをＮＡＮＤ型フラッシュメモリチップ内のメモリセルアレイ５０２にプログラムするための２回目のプログラム動作３０４が行われる。
【００８２】
したがって、ＱＬＣモードでの１回の書き込み動作に要する時間には、２回のＤａｔａ  Ｉｎ動作３０１，３０３に要する時間と、２回のプログラム動作３０２，３０４に要する時間とが含まれる。ここでは、これら時間の合計が１０ミリ秒（ｍｓ）であることを想定する。つまり、６４ＫＢのデータを１０ｍｓで書き込めるので、ＱＬＣモードでのＳＳＤ３の書き込み速度は、６．４ＭＢ／ｓ（＝６４ＫＢ／１０ｍｓ）であると云える。
【００８３】
ＤＲＡＭ６内のライトバッファは、１回目のＤａｔａ  Ｉｎ動作３０１の始まりから２回目のプログラム３０４の完了まで、データを保持する必要がある。したがって、６．４ＭＢ／ｓの書き込み速度を実現するためには、ＤＲＡＭ６内の６４ＫＢの領域を、ライトバッファとして割り当てる必要がある。
【００８４】
仮に、ＳＳＤ３において、ＱＬＣモードでの書き込みのみで６４０ＭＢ／ｓの書き込み速度を実現するためには、１００個（＝６４０／６．４）のＮＡＮＤ型フラッシュメモリチップを並列に駆動する必要がある。そして、そのためには、ＤＲＡＭ６内の６．４ＭＢ（＝６４ＫＢ×１００）の領域を、ライトバッファとして割り当てる必要がある。
【００８５】
一方、ＳＬＣモードでの書き込みでは、まず、１ページ分のデータが、Ｄａｔａ  Ｉｎ動作３１１でＮＡＮＤ型フラッシュメモリチップ内のページバッファ５０３に格納される。そして、ページバッファ５０３に格納された１ページ分のデータをＮＡＮＤ型フラッシュメモリチップ内のメモリセルアレイ５０２にプログラムするためのプログラム動作３１２が行われる。
【００８６】
したがって、ＳＬＣモードでの１回の書き込み動作に要する時間には、１回のＤａｔａ  Ｉｎ動作３１１に要する時間と、１回のプログラム動作３１２に要する時間とが含まれる。ここでは、これら時間の合計が３００マイクロ秒（μｓ）であることを想定する。つまり、１６ＫＢのデータを３００μｓで書き込めるので、ＳＬＣモードでのＳＳＤ３の書き込み速度は、５３ＭＢ／ｓ（＝１６ＫＢ／３００μｓ）であると云える。
【００８７】
仮に、ＳＳＤ３において、ＳＬＣモードでの書き込みのみで６４０ＭＢ／ｓの書き込み速度を実現するためには、１２個（≒６４０／５３）のＮＡＮＤ型フラッシュメモリチップを並列に駆動する必要がある。そして、そのためには、ＤＲＡＭ６内の１９２ＫＢ（＝１６ＫＢ×１２）の領域を、ライトバッファとして割り当てる必要がある。
【００８８】
上述した例のように、ＱＬＣモード、ＴＬＣモード、またはＭＬＣモードでの書き込みは、ＳＬＣモードでの書き込みと比較して、書き込み速度が遅い。そのため、ホスト２によって要求される書き込みバンド幅を満たすために、多数のＮＡＮＤ型フラッシュメモリチップを並列に駆動する必要があると共に、ライトバッファとして割り当てられるＤＲＡＭ６内の記憶容量も増大する。
【００８９】
外部電源からＳＳＤ３に供給される電力が遮断された場合、ライトバッファにはＤＲＡＭ６内の記憶領域が割り当てられているので、当該ライトバッファに格納されているユーザデータは失われてしまう。また、ＳＳＤ３は、ユーザデータがライトバッファ（すなわち、ＤＲＡＭ６）に書き込まれた時点でホスト２に応答している。そのため、ＳＳＤ３とホスト２との間のデータの一貫性を保つために、蓄電装置７１に蓄積された電荷で電力供給が維持されている間に、ライトバッファに残っているユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込むＰＬＰの動作が行われる。この書き込みには、高速で、消費電力が低いＳＬＣモードが用いられてもよい。
【００９０】
ところで、上述した例では、ＱＬＣモードのみでの書き込みで、６４０ＭＢ／ｓの書き込みバンド幅を実現するためには、６．４ＭＢのライトバッファが必要であることを示した。しかし、ＰＬＰの動作のために供給される電荷を蓄積する蓄電装置７１の容量には限界があり、蓄電装置７１から供給される電荷で電力供給が維持される間に、ライトバッファに格納され得る６．４ＭＢのデータをＮＡＮＤ型フラッシュメモリ５に書き込むための処理を完了できない場合がある。
【００９１】
ライトバッファのサイズを小さくするための対処方法としては、（Ａ）書き込みバンド幅を低下させる方法、あるいは（Ｂ）ホスト２から受信したユーザデータを、一旦、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込み、その書き込まれたユーザデータを、アイドル時に、ＱＬＣモード（あるいは、ＴＬＣモードまたはＭＬＣモード）でＮＡＮＤ型フラッシュメモリ５に改めて書き込む方法、等が挙げられる。
【００９２】
（Ａ）の方法では、書き込みバンド幅を下げるほど、ライトバッファの容量も減少するが、ホスト２によって要求される書き込みバンド幅を満たすことができなくなる。
【００９３】
また、（Ｂ）の方法では、必要なライトバッファの容量は１９２ＫＢに減少するが、ＳＬＣモードでの書き込みに用いられるブロック群が、ＳＬＣモードでの最大Ｐ／Ｅサイクル数に達し、障害が発生する場合がある。
【００９４】
図７および図８を参照して、（Ｂ）の方法が適用されたＳＳＤ３の例について具体的に説明する。
【００９５】
図７に示す例では、以下の条件を想定する。  
（１）ＮＡＮＤ型フラッシュメモリ５の全体の記憶容量は、データがＱＬＣモードで書き込まれるＱＬＣブロック群６１１の記憶容量（以下、ＱＬＣ記憶容量とも称する）と、データがＳＬＣモードで書き込まれるＳＬＣブロック群６１２の記憶容量（以下、ＳＬＣ記憶容量とも称する）とで構成され、ＱＬＣ記憶容量とＳＬＣ記憶容量との比は、１００対１である。つまり、ＳＬＣ記憶容量は、ＱＬＣ記憶容量の１％である。  
（２）各ＱＬＣブロックの最大Ｐ／Ｅサイクル数は、１０，０００サイクルである。  
（３）各ＳＬＣブロックの最大Ｐ／Ｅサイクル数は、１００，０００サイクルである。
【００９６】
（Ｂ）の方法では、ホスト２から受信されたユーザデータが、暫定的にＳＬＣブロックに書き込まれた後、ＱＬＣブロックに改めて書き込まれる。図６を参照して上述したように、ＳＬＣモードでの書き込み速度は、ＱＬＣモードでの書き込み速度よりも速い。そのため、ある書き込みバンド幅を実現するために、ライトバッファに割り当てられるＤＲＡＭ６内の記憶容量は、ＱＬＣモードで書き込みが行われる場合よりも、ＳＬＣモードで書き込みが行われる場合の方が少なく済む。
【００９７】
（Ｂ）の方法では、ＱＬＣブロック群６１１に書き込まれるすべてのユーザデータが、ＱＬＣブロック群６１１の１％の記憶容量を有するＳＬＣブロック群６１２への書き込みを経由する。この場合、各ＳＬＣブロックには、各ＱＬＣブロックに１０，０００回の書き込みが行われるまでに、１，０００，０００（＝１０，０００／０．０１）回の書き込みが行われることになる。このＰ／Ｅサイクル数は、ＳＬＣブロックの最大Ｐ／Ｅサイクル数を超えている。
【００９８】
したがって、図７に示す例では、（Ｂ）の方法が適用された場合に、ＮＡＮＤ型フラッシュメモリ５に信頼性の低下が発生する可能性があり、システムとして成立しない。例えば、実行されたＰ／Ｅサイクル数が最大Ｐ／Ｅサイクル数に達したＳＬＣブロック群６１２にデータが書き込めなくなることによって、ホスト２から新たに書き込みが要求されるユーザデータを、ＮＡＮＤ型フラッシュメモリ５に書き込むことができなくなる可能性がある。
【００９９】
一方、図８に示す例では、以下の条件を想定する。  
（１）ＮＡＮＤ型フラッシュメモリ５の全体の記憶容量は、データがＱＬＣモードで書き込まれるＱＬＣブロック群６２１の記憶容量（ＱＬＣ記憶容量）と、データがＳＬＣモードで書き込まれるＳＬＣブロック群６２２の記憶容量（ＳＬＣ記憶容量）とで構成され、ＱＬＣ記憶容量とＳＬＣ記憶容量との比は、１０対１である。つまり、ＳＬＣ記憶容量は、ＱＬＣ記憶容量の１０％である。  
（２）各ＱＬＣブロックの最大Ｐ／Ｅサイクル数は、１０，０００サイクルである。  
（３）各ＳＬＣブロックの最大Ｐ／Ｅサイクル数は、１００，０００サイクルである。  
なお、条件（２）および（３）については、図７に示した例と同じである。
【０１００】
（Ｂ）の方法では、ＱＬＣブロック群６２１に書き込まれるすべてのユーザデータが、ＱＬＣブロック群６２１の１０％の記憶容量を有するＳＬＣブロック群６２２への書き込みを経由する。この場合、各ＳＬＣブロックには、各ＱＬＣブロックに１０，０００回の書き込みが行われるまでに、１００，０００（＝１０，０００／０．１）回の書き込みが、すなわち、１００，０００回のＰ／Ｅサイクルが、行われることになる。このＰ／Ｅサイクル数は、ＳＬＣブロックの最大Ｐ／Ｅサイクル数の範囲内である。換言すると、各ＳＬＣブロック６２２に対して実行されるＰ／Ｅサイクル数が、ＳＬＣブロックの最大Ｐ／Ｅサイクル数の範囲内となるようにするためには、ＮＡＮＤ型フラッシュメモリ５に含まれるブロック群において、ＱＬＣブロック群６２１の１０％の記憶容量に相当するＳＬＣブロック群６２２を確保する必要があると云える。
【０１０１】
このように、図８に示す例は、（Ｂ）の方法が適用された場合にシステムとして成立する。しかし、ＮＡＮＤ型フラッシュメモリ５に含まれるブロック群の内、ＱＬＣブロック群６２１の１０％の記憶容量に相当するブロック群を、ＳＬＣブロック群６２２として使用することは、ＮＡＮＤ型フラッシュメモリ５全体の記憶容量を減少させるので、記憶容量の観点からＮＡＮＤ型フラッシュメモリ５を効率的に利用することができない。つまり、（Ｂ）の方法では、各ＳＬＣブロック６２２に対して実行されるＰ／Ｅサイクル数がＳＬＣブロックの最大Ｐ／Ｅサイクル数未満になるように、ＳＬＣブロック群６２２の記憶容量が設定されるために、ＱＬＣブロック群６２１の記憶容量が減少するので、ＮＡＮＤ型フラッシュメモリ５の経済性が著しく低下する。
【０１０２】
そのため、本実施形態では、例えば、書き込みバンド幅が閾値以下である場合、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータをＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込み、書き込みバンド幅が閾値を超えている場合、ユーザデータをＱＬＣモードまたはＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込む。
【０１０３】
書き込みバンド幅が閾値以下である場合、ＱＬＣ用ライトバッファ２１にＱＬＣモードで書き込まれるべきユーザデータが格納され、このＱＬＣ用ライトバッファ２１に格納されたユーザデータがＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【０１０４】
また、書き込みバンド幅が閾値を超えたことに応じて、ＤＲＡＭ６内の記憶領域が、ＳＬＣモードで書き込まれるべきユーザデータが格納されるＳＬＣ用ライトバッファ２２にさらに割り当てられる。書き込みバンド幅が閾値を超えている場合、ＱＬＣ用ライトバッファ２１に格納されたユーザデータがＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれ、ＳＬＣ用ライトバッファ２２に格納されたユーザデータがＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【０１０５】
図９および図１０を参照して、書き込みバンド幅に応じて、書き込みモードが選択され、選択された書き込みモードに対応するライトバッファが使用される例を示す。ここでは、図６から図８を参照して上述した例と同様に、６４０ＭＢ／ｓの書き込みバンド幅を実現するためには、ＱＬＣモードのみでユーザデータが書き込まれるならば６．４ＭＢのライトバッファが必要であり、ＳＬＣモードのみでユーザデータが書き込まれるならば１９２ＫＢのライトバッファが必要である場合を想定する。また、閾値は、３２０ＭＢ／ｓであるとする。
【０１０６】
図９に示すように、書き込みバンド幅が３２０ＭＢ／ｓ以下である場合、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータは、すべてＱＬＣモードで書き込まれる。
【０１０７】
この３２０ＭＢ／ｓの書き込みバンド幅を実現するために、ＤＲＡＭ６内の３．２ＭＢの記憶領域が、ＱＬＣ用ライトバッファ２１として割り当てられるが、ＤＲＡＭ６内のいずれの記憶領域も、ＳＬＣ用ライトバッファ２２としては割り当てられない。したがって、ホスト２から受信されたユーザデータはすべて、ＱＬＣ用ライトバッファ２１に格納される。
【０１０８】
そして、ＱＬＣ用ライトバッファ２１に格納されているユーザデータが、ＱＬＣブロック群５６１に並列に書き込まれる。このＱＬＣブロック群５６１に含まれるブロックの数は、最大で５０個である。
【０１０９】
また、図１０に示すように、書き込みバンド幅が３２０ＭＢ／ｓを超え、且つ６４０ＭＢ／ｓ以下である場合、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータは、ＱＬＣモードまたはＳＬＣモードで書き込まれる。
【０１１０】
６４０ＭＢ／ｓの書き込みバンド幅を実現するために、ＤＲＡＭ６内の３．２ＭＢの記憶領域が、ＱＬＣ用ライトバッファ２１として割り当てられる。また、ＤＲＡＭ６内の９６ＫＢの記憶領域が、ＳＬＣ用ライトバッファ２２として割り当てられる。したがって、ホスト２から受信されたユーザデータは、ＱＬＣ用ライトバッファ２１とＳＬＣ用ライトバッファ２２のいずれか一方に格納される。
【０１１１】
受信されたユーザデータは、例えば、ＱＬＣ用ライトバッファ２１に優先して格納される。この場合、受信されたユーザデータを格納するための空き領域がＱＬＣ用ライトバッファ２１内に存在するならば、このユーザデータはＱＬＣ用ライトバッファ２１に格納される。一方、受信されたユーザデータを格納するための空き領域がＱＬＣ用ライトバッファ２１内に存在しないならば、このユーザデータはＳＬＣ用ライトバッファ２２に格納される。
【０１１２】
そして、ＱＬＣ用ライトバッファ２１に格納されているユーザデータがＱＬＣブロック群５７１に並列に書き込まれる。このＱＬＣブロック群５７１に含まれるブロックの数は、最大で５０個である。
【０１１３】
同様に、ＳＬＣ用ライトバッファ２２に格納されているユーザデータがＳＬＣブロック群５７２に並列に書き込まれる。このＳＬＣブロック群５７２に含まれるブロックの数は、最大で６個である。
【０１１４】
なお、各ＳＬＣブロック５７２に書き込まれたユーザデータは、例えば、ＳＳＤ３がアイドル状態である間に、読み出され、ＱＬＣブロック５７３に書き込まれる。つまり、書き込みバンド幅が３２０ＭＢ／ｓを超えている場合に、一旦、ユーザデータをＳＬＣブロック５７２に書き込んだ後、そのユーザデータをＱＬＣブロック５７３に改めて書き込むことができる。
【０１１５】
このようなＳＬＣブロック５７２からＱＬＣブロック５７３にユーザデータを移動するための動作において、ＳＬＣブロック５７２に書き込まれているユーザデータは、移動先のＱＬＣブロック５７３への当該ユーザデータの書き込みが完了するまで、消去されない。そのため、この動作中に、外部電源からＳＳＤ３に供給される電力が遮断されたとしても、移動対象のユーザデータが失われることはない。したがって、外部電源からＳＳＤ３に電力が供給されるようになった後、再度、そのユーザデータをＳＬＣブロック５７２からＱＬＣブロック５７３に移動するための動作が改めて行われればよい。
【０１１６】
上述したように、６４０ＭＢ／ｓの書き込みバンド幅を実現するためには、ユーザデータをＱＬＣモードのみでＮＡＮＤ型フラッシュメモリ５に書き込む場合、ＤＲＡＭ６内の６．４ＭＢの記憶領域をＱＬＣ用ライトバッファ２１として割り当てる必要がある。しかし、図１０に示した方法では、３２０ＭＢ／ｓ分の書き込みバンド幅をＱＬＣモードでの書き込みでサポートすると共に、残りの３２０ＭＢ／ｓ分の書き込みバンド幅をＳＬＣモードでの書き込みでサポートすることにより、ＱＬＣ用ライトバッファ２１およびＳＬＣ用ライトバッファ２２として割り当てられるＤＲＡＭ６内の記憶領域のサイズを３．２ＭＢ＋９６ＫＢに低減することができる。
【０１１７】
これにより、ＳＳＤ３に外部電源から供給される電力が遮断された場合に、ＰＬＰ機能を用いて、ライトバッファ２１，２２に格納されているユーザデータを、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込むために要する電荷量、すなわち、蓄電装置７１に蓄積されるべき電荷量を減らすことができる。
【０１１８】
一方、６４０ＭＢ／ｓの書き込みバンド幅を実現するために、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータすべてを、暫定的にＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込む場合には、ＤＲＡＭ６内の１９２ＫＢの記憶領域が、ＳＬＣ用ライトバッファ２２として割り当てられる。また、ＤＲＡＭ６内のいずれの記憶領域も、ＱＬＣ用ライトバッファ２１としては割り当てられない。そのため、図１０に示した例よりも、ライトバッファとして割り当てられるＤＲＡＭ６内の記憶容量を小さくすることができ、したがって、蓄電装置７１に蓄積されるべき電荷量（すなわち、ＰＬＰの動作のために必要な電荷量）をより減らすことができる。
【０１１９】
しかしながら、暫定的にＳＬＣモードで書き込まれたユーザデータを、ＱＬＣモードで改めて書き込む構成では、図８を参照して上述したように、ＮＡＮＤフラッシュメモリ５全体の記憶容量を、ＱＬＣ記憶容量と、そのＱＬＣ記憶容量の１０％の容量を有するＳＬＣ記憶容量とで構成する必要がある。これは、ＮＡＮＤ型フラッシュメモリ５の経済性を損なうものである。
【０１２０】
そのため、本実施形態では、図１０に示したように、６４０ＭＢ／ｓの書き込みバンド幅を実現するために、３２０ＭＢ／ｓ分の書き込みバンド幅をＱＬＣモードでの書き込みでサポートすると共に、残りの３２０ＭＢ／ｓ分の書き込みバンド幅をＳＬＣモードでの書き込みでサポートする。これにより、ホスト２による書き込みバンド幅の要求を満たしながら、ＮＡＮＤフラッシュメモリ５全体の記憶容量に占めるＳＬＣ記憶容量を低減でき、ＮＡＮＤ型フラッシュメモリ５の経済性を高めることができる。
【０１２１】
図１に戻り、上述した動作を実現するための構成について具体的に例示する。ＣＰＵ１２は、モード制御部１２１、ライト制御部１２２、バッファリング処理部１２３、ＰＬＰ処理部１２４、および書き換え処理部１２５として機能することができる。
【０１２２】
モード制御部１２１は、ライトコマンドを受け付けたことに伴ってホスト２から受信されるユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込むための書き込みモードを制御する。モード制御部１２１は、メモリセル当たりにＮビットのデータが書き込まれる第１モードとメモリセル当たりにＭビットのデータが書き込まれる第２モードの少なくとも一方を書き込みモードとして選択する。ここで、Ｎは１以上の数であり、ＭはＮよりも大きい数である。
【０１２３】
より具体的には、モード制御部１２１は、例えば、ホスト２によってＳＳＤ３に対して要求される書き込み速度である書き込みバンド幅に基づいて、書き込みモードとして、第２モードを単独で使用するか、それとも第１モードと第２モードとを併用するかを動的に切り替えるように構成されている。
【０１２４】
第１モードと第２モードの組み合わせの例は、以下の通りである。  
組み合わせ＃１：  ＳＬＣモードが第１モードとして使用され、ＱＬＣモードが第２モードとして使用される。  
組み合わせ＃２：  ＳＬＣモードが第１モードとして使用され、ＴＬＣモードが第２モードとして使用される。  
組み合わせ＃３：  ＳＬＣモードが第１モードとして使用され、ＭＬＣモードが第２モードとして使用される。  
組み合わせ＃４：  ＭＬＣモードが第１モードとして使用され、ＴＬＣモードが第２モードとして使用される。  
組み合わせ＃５：  ＭＬＣモードが第１モードとして使用され、ＱＬＣモードが第２モードとして使用される。  
組み合わせ＃６：  ＴＬＣモードが第１モードとして使用され、ＱＬＣモードが第２モードとして使用される。
【０１２５】
あるいは、モード制御部１２１は、書き込みモードとして、第３モードを単独で使用するか、それとも第１モードと第２モードと第３モードとを併用するかを動的に切り替えるように構成されていてもよい。第３モードは、メモリセル当たりにＬビットのデータが書き込まれるモードであり、ＬはＭよりも大きい数である。
【０１２６】
第１モードと第２モードと第３モードの組み合わせの例は、以下の通りである。  
組み合わせ＃７：  ＳＬＣモードが第１モードとして使用され、ＭＬＣモードが第２モードとして使用され、ＴＬＣモードが第３モードとして使用される。  
組み合わせ＃８：  ＳＬＣモードが第１モードとして使用され、ＴＬＣモードが第２モードとして使用され、ＱＬＣモードが第３モードとして使用される。  
組み合わせ＃９：  ＳＬＣモードが第１モードとして使用され、ＭＬＣモードが第２モードとして使用され、ＱＬＣモードが第３モードとして使用される。  
組み合わせ＃１０：  ＭＬＣモードが第１モードとして使用され、ＴＬＣモードが第２モードとして使用され、ＱＬＣモードが第３モードとして使用される。
【０１２７】
同様にして、モード制御部１２１は、メモリセル当たりに格納可能なビット数が互いに異なる４種類以上のモードの内、書き込みモードとして用いられるモードを動的に切り替えるように構成されていてもよい。
【０１２８】
以下では、組み合わせ＃１が使用される場合を例示する。この場合、モード制御部１２１は、ＱＬＣモードが単独で使用される書き込みモード（以下、ＱＬＣ単独モードとも称する）と、ＱＬＣモードとＳＬＣモードとが併用される書き込みモード（以下、ＱＬＣ／ＳＬＣ併用モードとも称する）とを動的に切り替える。
【０１２９】
モード制御部１２１は、書き込みバンド幅を計測し、計測された書き込みバンド幅に基づいて、書き込みモードとして選択されるモードが、ＱＬＣ単独モードとＱＬＣ／ＳＬＣ併用モードとの間で動的に切り替えられるように構成される。
【０１３０】
モード制御部１２１は、ホスト２が第１時間内に書き込みを要求したユーザデータの総量（すなわち、第１時間内に、１つ以上のライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータの総量）を、書き込み要求量２４として集計する。例えば、モード制御部１２１は、ある時点から第１時間が経過するまでの間、ホスト２から書き込みが要求される毎に、その書き込みが要求されたユーザデータの量を、書き込み要求量２４に加算する。そして、第１時間が経過した時、モード制御部１２１は、取得された書き込み要求量２４を第１時間で割ることにより、書き込みバンド幅を算出する。
【０１３１】
モード制御部１２１は、書き込みバンド幅が閾値以下である場合、書き込みモードとしてＱＬＣ単独モードを選択する。ＳＳＤ３の起動時等に、ＤＲＡＭ６内の領域が、ＱＬＣモードで書き込まれるべきユーザデータが格納されるＱＬＣ用ライトバッファ２１として予め確保されている。
【０１３２】
一方、モード制御部１２１は、書き込みバンド幅が閾値を超えている場合、書き込みモードとしてＱＬＣ／ＳＬＣ併用モードを選択する。モード制御部１２１は、書き込みバンド幅が閾値を超えたことに応じて、ＤＲＡＭ６内の領域を、ＳＬＣモードで書き込まれるべきユーザデータが格納されるＳＬＣ用ライトバッファ２２として確保する。また、モード制御部１２１は、ＳＬＣ用ライトバッファ２２に格納されているユーザデータがすべてＮＡＮＤ型フラッシュメモリ５に書き込まれたことに応じて、ＳＬＣ用ライトバッファ２２を解放する。
【０１３３】
バッファリング処理部１２３は、ライトコマンドを受け付けたことに伴ってホスト２から受信したユーザデータを、モード制御部１２１によって決定された書き込みモードに応じて、ＤＲＡＭ６内のいずれかのライトバッファ２１，２２に格納する。ライト制御部１２２は、ライトバッファ２１，２２に格納されているユーザデータを、書き込み単位分のデータ毎にＮＡＮＤ型フラッシュメモリ５に書き込む。
【０１３４】
図１１に示すように、書き込みバンド幅が閾値以下であって、書き込みモードとしてＱＬＣ単独モードが選択されている場合、バッファリング処理部１２３は、受信したユーザデータをＱＬＣ用ライトバッファ２１に格納する。そして、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に格納された、ＮＡＮＤ型フラッシュメモリ５に対するＱＬＣモードでの書き込み単位分のユーザデータを、ＮＡＮＤ型フラッシュメモリ５に書き込む。
【０１３５】
より具体的には、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に、ＮＡＮＤ型フラッシュメモリ５に対するＱＬＣモードでの書き込み単位分のユーザデータが格納されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、その書き込み単位分のユーザデータを転送する。書き込み単位は、例えば、４ページ分のデータ、すなわち、６４ＫＢのデータである。
【０１３６】
そして、ライト制御部１２２は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＱＬＣモードでのプログラムを指示する。すなわち、ライト制御部１２２は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５３に、転送されたユーザデータ（すなわち、ページバッファ５０３に格納されたユーザデータ）をＱＬＣモードでプログラムさせる。
【０１３７】
さらに、ライト制御部１２２は、同一のユーザデータについて、データ転送とプログラム指示とを再度行う。つまり、ライト制御部１２２は、図６を参照して上述したように、ＱＬＣモードでの書き込み単位分のあるユーザデータについて、１回目のデータ転送およびプログラム指示を行った後、２回目のデータ転送およびプログラム指示を行う。
【０１３８】
メモリセルアレイ５０２は複数のブロック５５１〜５５６を含んでいる。ブロックは、有効データを格納しているアクティブブロックと、有効データを格納しておらず、イレーズ処理を施した後、新たなデータの書き込みに利用可能なフリーブロックとに大別される。１つ以上のフリーブロックから選択された１つのブロックが、イレーズ処理を施された後、書き込み先ブロック５５３として割り当てられる。書き込み先ブロック５５３は、有効データを格納し得る。
【０１３９】
次いで、ライト制御部１２２は、このプログラムが完了したことに応じて、ＱＬＣ用ライトバッファ２１内の、転送されたユーザデータが格納されていた領域を解放する。ライト制御部１２２は、ライトコマンドに指定されたＬＢＡと、ユーザデータが書き込まれたＮＡＮＤ型フラッシュメモリ５の物理アドレスとをマッピングし、当該マッピングを示すエントリを用いてＬＵＴ２６を更新する。また、ライト制御部１２２は、ライトコマンドに指定されたＬＢＡ（またはＬＢＡ範囲）と、当該ＬＢＡに関連付けられた書き込みモード（ここでは、ＱＬＣモード）とを示すエントリを用いて、ＬＢＡ範囲−書き込みモードテーブル２７を更新する。
【０１４０】
なお、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に格納された書き込み単位分のユーザデータを書き込むための動作を、複数のＮＡＮＤ型フラッシュメモリチップ５０１に対して並列に行うことができる。つまり、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に格納された複数の書き込み単位分のユーザデータそれぞれを、複数のＱＬＣ用の書き込み先ブロックそれぞれに並列して書き込むことができる。これら複数のＱＬＣ用の書き込み先ブロックは、複数のＮＡＮＤ型フラッシュメモリチップ５０１においてそれぞれ割り当てられている。
【０１４１】
また、図１２に示すように、書き込みバンド幅が閾値を超えていて、書き込みモードとしてＱＬＣ／ＳＬＣ併用モードが選択されている場合、バッファリング処理部１２３は、受信したユーザデータをＱＬＣ用ライトバッファ２１またはＳＬＣ用ライトバッファ２２に格納する。
【０１４２】
例えば、バッファリング処理部１２３は、書き込みバンド幅が閾値を超えている場合、ＳＬＣ用ライトバッファ２２に格納される第１データ量と、ＱＬＣ用ライトバッファ２１に格納される第２データ量との比を決定する。第１データ量は、ＮＡＮＤ型フラッシュメモリ５にＳＬＣモードで書き込まれることになるデータ量である。また、第２データ量は、ＮＡＮＤ型フラッシュメモリ５にＱＬＣモードで書き込まれることになるデータ量である。バッファリング処理部１２３は、例えば、書き込み速度が高いほど、第１データ量と第２データ量との和（すなわち、ＮＡＮＤ型フラッシュメモリ５に書き込まれるユーザデータの総量）に対する第１データ量の割合を増加させる。
【０１４３】
この場合、バッファリング処理部１２３は、受信したユーザデータを、例えば、ＱＬＣ用ライトバッファ２１に優先して格納する。例えば、バッファリング処理部１２３は、ＱＬＣ用ライトバッファ２１に、受信したユーザデータを格納できる空き領域がある場合に、当該ユーザデータをＱＬＣ用ライトバッファ２１に格納する。一方、ＱＬＣ用ライトバッファ２１に、受信したユーザデータを格納できる空き領域がない場合、バッファリング処理部１２３は、当該ユーザデータをＳＬＣ用ライトバッファ２２に格納する。
【０１４４】
なお、バッファリング処理部１２３は、受信したユーザデータを、例えば、ＳＬＣ用ライトバッファ２２に優先して格納してもよい。その場合、バッファリング処理部１２３は、ＳＬＣ用ライトバッファ２２に、受信したユーザデータを格納できる空き領域がある場合に、当該ユーザデータをＳＬＣ用ライトバッファ２２に格納する。一方、ＳＬＣ用ライトバッファ２２に、受信したユーザデータを格納できる空き領域がない場合、バッファリング処理部１２３は、当該ユーザデータをＱＬＣ用ライトバッファ２１に格納する。
【０１４５】
ライト制御部１２２は、ＱＬＣ用ライトバッファ２１およびＳＬＣ用ライトバッファ２２の各々に格納されたユーザデータを、書き込み単位分のデータ毎にＮＡＮＤ型フラッシュメモリ５に書き込む。
【０１４６】
より詳しくは、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に、ＮＡＮＤ型フラッシュメモリ５に対するＱＬＣモードでの書き込み単位分のユーザデータ（例えば、４ページ分のデータ）が格納されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、その書き込み単位分のユーザデータを転送する。
【０１４７】
ライト制御部１２２は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＱＬＣモードでのプログラムを指示する。すなわち、ライト制御部１２２は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５３に、転送されたユーザデータをＱＬＣモードでプログラムさせる。さらに、ライト制御部１２２は、同一のユーザデータについて、データ転送とプログラム指示とを再度行う。
【０１４８】
そして、ライト制御部１２２は、このプログラムが完了したことに応じて、ＱＬＣ用ライトバッファ２１内の、転送されたユーザデータが格納されていた領域を解放する。ライト制御部１２２は、ライトコマンドに指定されたＬＢＡと、ユーザデータが書き込まれたＮＡＮＤ型フラッシュメモリ５の物理アドレスとをマッピングし、当該マッピングを示すエントリを用いてＬＵＴ２６を更新する。また、ライト制御部１２２は、ライトコマンドに指定されたＬＢＡ（またはＬＢＡ範囲）と、当該ＬＢＡに関連付けられた書き込みモード（ここでは、ＱＬＣモード）とを示すエントリを用いて、ＬＢＡ範囲−書き込みモードテーブル２７を更新する。
【０１４９】
さらに、ライト制御部１２２は、ＳＬＣ用ライトバッファ２２に、ＮＡＮＤ型フラッシュメモリ５に対するＳＬＣモードでの書き込み単位分のユーザデータが格納されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、その書き込み単位分のユーザデータ（例えば、１ページ分のデータ）を転送する。
【０１５０】
ライト制御部１２２は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＳＬＣモードでのプログラムを指示する。すなわち、ライト制御部１２２は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５４に、転送されたユーザデータをＳＬＣモードでプログラムさせる。
【０１５１】
そして、ライト制御部１２２は、このプログラムが完了したことに応じて、ＳＬＣ用ライトバッファ２２内の、転送されたユーザデータが格納されていた領域を解放する。ライト制御部１２２は、ライトコマンドに指定されたＬＢＡと、ユーザデータが書き込まれたＮＡＮＤ型フラッシュメモリ５の物理アドレスとをマッピングし、当該マッピングを示すエントリを用いてＬＵＴ２６を更新する。また、ライト制御部１２２は、ライトコマンドに指定されたＬＢＡ（またはＬＢＡ範囲）と、当該ＬＢＡに関連付けられた書き込みモード（ここでは、ＳＬＣモード）とを示すエントリを用いて、ＬＢＡ範囲−書き込みモードテーブル２７を更新する。
【０１５２】
なお、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に格納された書き込み単位分のユーザデータを書き込むための動作を、複数のＮＡＮＤ型フラッシュメモリチップ５０１に対して並列に行うことができると共に、ＳＬＣ用ライトバッファ２２に格納された書き込み単位分のユーザデータを書き込むための動作を、別の複数のＮＡＮＤ型フラッシュメモリチップ５０１に対して並列に行うことができる。つまり、ライト制御部１２２は、ＱＬＣ用ライトバッファ２１に格納された複数の書き込み単位分のユーザデータそれぞれを、複数のＱＬＣ用の書き込み先ブロックそれぞれに並列して書き込むと共に、ＳＬＣ用ライトバッファ２２に格納された複数の書き込み単位分のユーザデータそれぞれを、複数のＳＬＣ用の書き込み先ブロックそれぞれに並列して書き込むことができる。複数のＱＬＣ用の書き込み先ブロックは、複数のＮＡＮＤ型フラッシュメモリチップ５０１においてそれぞれ割り当てられ、複数のＳＬＣ用の書き込み先ブロックは、別の複数のＮＡＮＤ型フラッシュメモリチップ５０１においてそれぞれ割り当てられている。
【０１５３】
以上により、バッファリング処理部１２３およびライト制御部１２２は、モード制御部１２１によって書き込みバンド幅に応じて決定された書き込みモードで、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
【０１５４】
ＰＬＰ処理部１２４は、外部電源からＳＳＤ３に供給される電力が遮断された場合に、蓄電装置７１に蓄積された電荷を用いて、ライトバッファ２１，２２に格納されているユーザデータを特定の書き込みモードでＮＡＮＤ型フラッシュメモリ５に書き込む。この特定の書き込みモードは、例えば、ＳＬＣモードである。
【０１５５】
図１３は、書き込みバンド幅が閾値以下である間に（すなわち、書き込みモードがＱＬＣ単独モードである間に）、外部電源からＳＳＤ３に供給される電力が遮断された場合の、ＰＬＰ処理部１２４による書き込み動作を示す。ＰＬＰ処理部１２４は、外部電源からＳＳＤ３に供給される電力が遮断された場合、ＱＬＣ用ライトバッファ２１に格納されているユーザデータを、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込む。
【０１５６】
より具体的には、ＰＬＰ処理部１２４は、ＱＬＣ用ライトバッファ２１にユーザデータが格納されているならば、ＮＡＮＤ型フラッシュメモリ５に対するＳＬＣモードでの書き込み単位分のユーザデータを、ＱＬＣ用ライトバッファ２１からＮＡＮＤ型フラッシュメモリ５内のページバッファ５０３に転送する。書き込み単位は、例えば、１ページ分のデータ、すなわち、１６ＫＢのデータである。
【０１５７】
そして、ＰＬＰ処理部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＳＬＣモードでのプログラムを指示する。すなわち、コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５４に、転送されたユーザデータをＳＬＣモードでプログラムさせる。
【０１５８】
そして、ＰＬＰ処理部１２４は、このプログラムが完了したことに応じて、ＱＬＣ用ライトバッファ２１内の、転送されたユーザデータが格納されていた領域を解放する。また、ＰＬＰ処理部１２４は、ＬＵＴ２６およびＬＢＡ範囲−書き込みモードテーブル２７を更新する。この更新内容は、図１２に示した例において、ライト制御部１２２がＳＬＣモードでユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込んだ場合と同様である。
【０１５９】
ＰＬＰ処理部１２４は、このような書き込み動作を、ＱＬＣ用ライトバッファ２１に格納されているユーザデータがなくなるまで、繰り返し行う。これにより、ＳＳＤ３に外部電源から供給される電力が遮断された場合にも、揮発性のＤＲＡＭ６内の記憶領域が割り当てられたＱＬＣ用ライトバッファ２１に格納されているユーザデータを、ＮＡＮＤ型フラッシュメモリ５に書き込むことができる。したがって、ＰＬＰ機能により、ホスト２とＳＳＤ３との間のデータの一貫性を保証することができる。
【０１６０】
図１４は、書き込みバンド幅が閾値を超えている間に（すなわち、書き込みモードがＱＬＣ／ＳＬＣ併用モードである間に）、外部電源からＳＳＤ３に供給される電力が遮断された場合の、ＰＬＰ処理部１２４による書き込み動作を示す。ＰＬＰ処理部１２４は、外部電源からＳＳＤ３に供給される電力が遮断された場合、ＱＬＣ用ライトバッファ２１およびＳＬＣ用ライトバッファ２２に格納されているユーザデータを、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込む。
【０１６１】
より具体的には、ＰＬＰ処理部１２４は、ＱＬＣ用ライトバッファ２１にユーザデータが格納されているならば、ＮＡＮＤ型フラッシュメモリ５に対するＳＬＣモードでの書き込み単位分のユーザデータ（例えば、１ページ分のユーザデータ）を、ＱＬＣ用ライトバッファ２１からＮＡＮＤ型フラッシュメモリ５内のページバッファ５０３に転送する。
【０１６２】
そして、ＰＬＰ処理部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＳＬＣモードでのプログラムを指示する。すなわち、ＰＬＰ処理部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５４に、転送されたユーザデータをＳＬＣモードでプログラムさせる。そして、ＰＬＰ処理部１２４は、このプログラムが完了したことに応じて、ＱＬＣ用ライトバッファ２１内の、転送されたユーザデータが格納されていた領域を解放し、ＬＵＴ２６およびＬＢＡ範囲−書き込みモードテーブル２７を更新する。
【０１６３】
また、ＰＬＰ処理部１２４は、ＳＬＣ用ライトバッファ２２にユーザデータが格納されているならば、ＮＡＮＤ型フラッシュメモリ５に対するＳＬＣモードでの書き込み単位分のユーザデータ（例えば、１ページ分のユーザデータ）を、ＳＬＣ用ライトバッファ２２からＮＡＮＤ型フラッシュメモリ５内のページバッファ５０３に転送する。
【０１６４】
そして、ＰＬＰ処理部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＳＬＣモードでのプログラムを指示する。すなわち、ＰＬＰ処理部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５４に、ページバッファ５０３に格納されたユーザデータをＳＬＣモードでプログラムさせる。そして、ＰＬＰ処理部１２４は、このプログラムが完了したことに応じて、ＳＬＣ用ライトバッファ２２内の、転送されたユーザデータが格納されていた領域を解放し、ＬＵＴ２６およびＬＢＡ範囲−書き込みモードテーブル２７を更新する。
【０１６５】
ＰＬＰ処理部１２４は、このような書き込み動作を、ＱＬＣ用ライトバッファ２１およびＳＬＣ用ライトバッファ２２に格納されているユーザデータがなくなるまで、繰り返し行う。これにより、外部電源からＳＳＤ３に供給される電力が遮断された場合にも、揮発性のＤＲＡＭ６内の記憶領域が割り当てられたＱＬＣ用ライトバッファ２１およびＳＬＣ用ライトバッファ２２に格納されているユーザデータを、ＮＡＮＤ型フラッシュメモリ５に書き込むことができる。したがって、ＰＬＰ機能により、ホスト２とＳＳＤ３との間のデータの一貫性を保証することができる。
【０１６６】
また、書き換え処理部１２５は、ＮＡＮＤ型フラッシュメモリ５に、暫定的にＳＬＣモードで書き込まれたユーザデータを、ＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に改めて書き込むための書き換え動作を行う。この書き換え動作は、例えば、ＳＳＤ３がアイドル状態である期間に行われ得る。
【０１６７】
図１２から図１４に示した動作において、ＮＡＮＤ型フラッシュメモリ５にＳＬＣモードで書き込まれたユーザデータは、図１５に示すように、書き換え処理部１２５によって、ＮＡＮＤ型フラッシュメモリ５にＱＬＣモードで書き込まれると共に、それまでＳＬＣモードで書き込まれていたユーザデータは無効化される。ＮＡＮＤ型フラッシュメモリ５にＳＬＣモードで書き込まれたユーザデータは、書き込みバンド幅が閾値を超えた場合に、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれたユーザデータと、ＰＬＰ機能によりＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれたユーザデータである。したがって、この書き換え動作により、あるユーザデータがＮＡＮＤ型フラッシュメモリ５に書き込まれるモードが、ＳＬＣモードからＱＬＣモードに変更される。
【０１６８】
より具体的には、書き換え処理部１２５は、ＬＢＡ範囲−書き込みモードテーブル２７とＬＵＴ２６とを用いて、ＳＬＣモードで書き込まれたユーザデータの物理アドレスを特定する。書き換え処理部１２５は、ＮＡＮＤ型フラッシュメモリ５から書き換え用バッファ２３に、特定された物理アドレスのユーザデータを読み出す。特定される物理アドレスは、例えば、ＳＬＣモードで書き込まれたユーザデータを含むアクティブブロック５５２内の物理記憶位置を示す。この場合、書き換え処理部１２５は、そのアクティブブロック５５２内の物理記憶位置から書き換え用バッファ２３に、ユーザデータを読み出す。
【０１６９】
書き換え用バッファ２３に、ＮＡＮＤ型フラッシュメモリ５に対するＱＬＣモードでの書き込み単位分のユーザデータ（例えば、４ページ分のユーザデータ）が格納されたならば、書き換え処理部１２５は、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、その書き込み単位分のユーザデータを転送する。
【０１７０】
書き換え処理部１２５は、ＮＡＮＤ型フラッシュメモリチップ５０１に、ＱＬＣモードでのプログラムを指示する。すなわち、コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５５３に、転送されたユーザデータをＱＬＣモードでプログラムさせる。さらに、書き換え処理部１２５は、同一のユーザデータについて、データ転送とプログラム指示とを再度行う。つまり、書き換え処理部１２５は、図６を参照して上述したように、ＱＬＣモードでの書き込み単位分のあるユーザデータについて、１回目のデータ転送およびプログラム指示を行った後、２回目のデータ転送およびプログラム指示を行う。
【０１７１】
そして、書き換え処理部１２５は、このプログラムが完了したことに応じて、ＬＵＴ２６およびＬＢＡ範囲−書き込みモードテーブル２７を更新し、書き換え用バッファ２３内の、転送されたユーザデータが格納されていた領域を解放する。
【０１７２】
書き換え処理部１２５は、例えば、ＳＳＤ３がアイドル状態である期間中に、暫定的にＳＬＣモードで書き込まれたすべてのユーザデータが、ＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれるまで、上述した動作を繰り返し行い得る。これにより、書き込みバンド幅が閾値を超えたことにより、あるいはＰＬＰ機能により、暫定的にＳＬＣモードで書き込まれたユーザデータを、メモリセル当たりの記憶密度がより高いＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
【０１７３】
なお、上述した例では、想定される最大の書き込みバンド幅（例えば、６４０ＭＢ／ｓ）を決定し、その半分の書き込みバンド幅（例えば、３２０ＭＢ／ｓ）を閾値に設定した。閾値は、最大の書き込みバンド幅よりも小さい値であればよく、任意の値に設定することができる。また、閾値は、ＤＲＡＭ６の記憶容量、ＮＡＮＤ型フラッシュメモリ５に対する各モードでの書き込み速度、最大消費電力等を考慮して設定されてもよい。
【０１７４】
以上の構成により、ホスト２による書き込みバンド幅の要求を満たしながら、ＮＡＮＤ型フラッシュメモリ５を効率的に利用することができる。モード制御部１２１は、１つ以上のライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータの受信速度である書き込みバンド幅が閾値以下である場合、記憶密度が高い第２モードを書き込みモードとして選択し、書き込みバンド幅が閾値を超えている場合、第２モードと、第２モードよりも記憶密度が低い第１モードとを書き込みモードとして選択する。これにより、ＰＬＰ機能を有するＳＳＤ３で、暫定的に記憶密度が低い第１モードで書き込まれたユーザデータを、より記憶密度が高い第２モードで改めて書き込む処理が行われる場合に、ホスト２による書き込みバンド幅の要求を満たしながら、ＮＡＮＤ型フラッシュメモリ５の記憶容量に関する経済性を高めることができる。
【０１７５】
図１６を参照して、書き込みバンド幅とワークロードとの関係について説明する。図１６（Ａ）および図１６（Ｂ）は、書き込みバンド幅の推移の例をそれぞれ示す。ホスト２からＳＳＤ３へのワークロードは、書き込みバンド幅の推移から導出することができる。
【０１７６】
図１６（Ａ）に示す書き込みバンド幅の推移６１では、この推移６１により決定される全体の面積６２が、推移６１に対応する期間におけるホスト２からＳＳＤ３への全体のワークロードに相当する。そして、この全体の面積６２の内、閾値（ここでは、３２０ＭＢ／ｓ）を超えた部分の面積６３Ａおよび面積６３Ｂが、この期間において、３２０ＭＢ／ｓを超えた書き込みバンド幅を必要としたワークロードに相当する。
【０１７７】
図１６（Ａ）に示す例では、全体の面積６２に対する、閾値を超えた部分の面積６３Ａおよび面積６３Ｂの割合は、１／１０である。これは、ホスト２によるワークロードの１０％が、３２０ＭＢ／ｓを超えた書き込みバンド幅を必要とし、ワークロードの残りの９０％が、３２０ＭＢ／ｓ以下の書き込みバンド幅で済むことを示す。つまり、ＳＬＣモードでの書き込み量は、総書き込み量の１０％である。
【０１７８】
この場合、図７に示した例における条件下で、すなわち、ＳＬＣ記憶容量がＱＬＣ記憶容量の１％であり、ＱＬＣブロックの最大Ｐ／Ｅサイクル数が、１０，０００回であり、ＳＬＣブロックの最大Ｐ／Ｅサイクル数が１００，０００回である条件下において、システムとして成立する。より具体的には、総書き込み量の１０％が、ＳＬＣブロック群を経由するので、各ＳＬＣブロックには、各ＱＬＣブロックに１０，０００回の書き込みが行われるまでに、１００，０００（＝１０，０００×０．１／０．０１）回の書き込みが行われることになる。この書き込み回数は、ＳＬＣブロックの最大Ｐ／Ｅサイクル数の範囲内であり、システムが成立する。
【０１７９】
一方、図１６（Ｂ）に示す書き込みバンド幅の推移６５では、この推移６５により決定される全体の面積６６が、推移６５に対応する期間におけるホスト２からＳＳＤ３への全体のワークロードに相当する。そして、全体の面積６６の内、閾値（ここでは、３２０ＭＢ／ｓ）を超えた部分の面積６７が、この期間において、３２０ＭＢ／ｓを超えた書き込みバンド幅を必要としたワークロードに相当する。
【０１８０】
図１６（Ｂ）に示す例では、全体の面積６６に対する、閾値を超えた部分の面積６７の割合は、１／４である。これは、ホスト２によるワークロードの２５％が、３２０ＭＢ／ｓを超えた書き込みバンド幅を必要とし、ワークロードの残りの７５％が、３２０ＭＢ／ｓ以下の書き込みバンド幅で済むことを示す。つまり、ＳＬＣモードでの書き込み量は、総書き込み量の２５％である。
【０１８１】
この場合、図７に示した例における条件下で、すなわち、ＳＬＣ記憶容量がＱＬＣ記憶容量の１％であり、ＱＬＣブロックの最大Ｐ／Ｅサイクル数が１０，０００回であり、ＳＬＣブロックの最大Ｐ／Ｅサイクル数が１００，０００回である条件下において、システムとして成立しない。より具体的には、総書き込み量の２５％が、ＳＬＣブロック群を経由するので、各ＳＬＣブロックには、各ＱＬＣブロックに１０，０００回の書き込みが行われるまでに、２５０，０００（＝１０，０００×０．２５／０．０１）回の書き込みが行われることになる。この書き込み回数は、ＳＬＣブロックの最大Ｐ／Ｅサイクル数を超えており、システムとして成立しない。このような場合、ホスト２では、例えば、ＳＳＤ３からの応答が遅くなり、書き込みバンド幅が低下することになる。
【０１８２】
このように、書き込みバンド幅の推移から、全体のワークロードに対する、閾値を超えた書き込みバンド幅を必要とするワークロードの割合を導出し、導出された割合に基づいて、ある条件下でシステムが成立しているか否かを判断することができる。
【０１８３】
図１７から図２２のフローチャートを参照して、コントローラ４によって実行される処理の手順について説明する。コントローラ４は、図１７から図２０のフローチャートに示すモード制御処理、バッファリング処理、ＳＬＣライト処理、およびＱＬＣライト処理を並行して実行することができる。また、コントローラ４は、外部電源からＳＳＤ３への電力供給が遮断されたことに応じて、図２１のフローチャートに示すＰＬＰ処理を実行する。さらに、コントローラ４は、アイドル時に、図２２のフローチャートに示す書き換え処理を実行する。
【０１８４】
図１７のフローチャートは、コントローラ４によって実行されるモード制御処理の手順の例を示す。モード制御処理では、ホスト２によって要求される書き込み速度を示す書き込みバンド幅に応じて、ＮＡＮＤ型フラッシュメモリ５の書き込みに使用される書き込みモードが切り替えられる。ここでは、書き込みモードとして、ＱＬＣ単独モードとＱＬＣ／ＳＬＣ併用モードとが切り替えて用いられる場合について例示する。
【０１８５】
まず、コントローラ４は、書き込み要求量２４を初期化する（ステップＳ１０１）。書き込み要求量２４は、ホスト２によって書き込みが要求されたユーザデータの量を集計するために用いられる。
【０１８６】
次に、コントローラ４は、書き込みバンド幅を更新するタイミングであるか否かを判定する（ステップＳ１０１）。書き込みバンド幅は、第１時間毎に（例えば、１００ミリ秒毎に）更新され得る。コントローラ４は、書き込みバンド幅が前回更新されてから第１時間が経過した場合に、書き込みバンド幅を更新するタイミングであると判断する。
【０１８７】
書き込みバンド幅を更新するタイミングでない場合（ステップＳ１０２のＮＯ）、ステップＳ１０２に戻り、書き込みバンド幅を更新するタイミングであるか否かが再度判定される。
【０１８８】
一方、書き込みバンド幅を更新するタイミングである場合（ステップＳ１０２のＹＥＳ）、コントローラ４は、書き込み要求量２４に基づいて書き込みバンド幅を更新する（ステップＳ１０３）。つまり、コントローラ４は、直近の第１時間内に、１つ以上のライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータの総量を示す書き込み要求量２４に基づいて、要求される書き込み速度（＝書き込み要求量／第１時間）を算出することにより、書き込みバンド幅を更新する。そして、コントローラ４は、書き込み要求量２４を初期化する（ステップＳ１０４）。
【０１８９】
次いで、コントローラ４は、更新された書き込みバンド幅が閾値を超えているか否かを判定する（ステップＳ１０５）。書き込みバンド幅が閾値を超えている場合（ステップＳ１０５のＹＥＳ）、現在の書き込みモードに応じて処理を分岐する（ステップＳ１０６）。
【０１９０】
現在の書き込みモードがＱＬＣ単独モードである場合（ステップＳ１０６のＱＬＣ）、コントローラ４は、ＤＲＡＭ６内の記憶領域をＳＬＣ用ライトバッファ２２に割り当てる（ステップＳ１０７）。そして、コントローラ４は、書き込みモードとして、ＱＬＣ／ＳＬＣ併用モードを選択し（ステップＳ１０８）、ステップＳ１０２に戻る。
【０１９１】
一方、現在の書き込みモードがＱＬＣ／ＳＬＣ併用モードである場合（ステップＳ１０６のＱＬＣ／ＳＬＣ）、ステップＳ１０２に戻る。
【０１９２】
また、書き込みバンド幅が閾値以下である場合（ステップＳ１０５のＮＯ）、コントローラ４は、現在の書き込みモードに応じて処理を分岐する（ステップＳ１０９）。現在の書き込みモードがＱＬＣ単独モードである場合（ステップＳ１０９のＱＬＣ）、更新された書き込みバンド幅でも、書き込みモードがＱＬＣ単独モードに維持されるので、ステップＳ１０２に戻る。
【０１９３】
現在の書き込みモードがＱＬＣ／ＳＬＣ併用モードである場合（ステップＳ１０９のＱＬＣ／ＳＬＣ）、コントローラ４は、ＳＬＣ用ライトバッファ２２内にユーザデータが格納されているか否かを判定する（ステップＳ１１０）。ＳＬＣ用ライトバッファ２２内にユーザデータが格納されている場合（ステップＳ１１０のＹＥＳ）、ステップＳ１１０に戻る。すなわち、コントローラ４は、ステップＳ１１０の判定を行うことにより、ＳＬＣ用ライトバッファ２２内のユーザデータを、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込むためのＳＬＣライト処理の完了を待つ。ＳＬＣライト処理については、図１９のフローチャートを参照して後述する。
【０１９４】
一方、ＳＬＣ用ライトバッファ２２内にユーザデータが格納されていない場合（ステップＳ１１０のＮＯ）、ＳＬＣ用ライトバッファ２２を解放する（ステップＳ１１１）。これにより、ＤＲＡＭ６内のいずれの記憶領域も、ＳＬＣ用ライトバッファ２２として割り当てられていない状態となる。そして、コントローラ４は、書き込みモードとしてＱＬＣ単独モードを選択し（ステップＳ１１２）、ステップＳ１０２に戻る。
【０１９５】
以上により、ホスト２の書き込みバンド幅に応じて、ＮＡＮＤ型フラッシュメモリ５の書き込みモードを選択することができる。書き込みバンド幅が閾値未満である場合にＱＬＣモードを単独で使用し、書き込みバンド幅が閾値を超えた場合にＱＬＣモードとＳＬＣモードとを併用することにより、ライトバッファ２１，２２として割り当てられるＤＲＡＭ６の記憶容量が増大することを抑制すると共に、ＳＬＣモードよりもＱＬＣモードでの書き込みを優先することでＳＳＤ３の経済性を高めることができる。
【０１９６】
図１８のフローチャートは、コントローラ４によって実行されるバッファリング処理の手順の例を示す。バッファリング処理では、上述したモード制御処理において選択された書き込みモードに応じたライトバッファに、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータが格納される。
【０１９７】
まず、コントローラ４は、ホスト２からライトコマンドを受け付けたか否かを判定する（ステップＳ２１）。ホスト２からライトコマンドを受け付けていない場合（ステップＳ２１のＮＯ）、ステップＳ２１に戻り、ホスト２からライトコマンドを受け付けたか否かが再度判定される。
【０１９８】
ホスト２からライトコマンドを受け付けた場合（ステップＳ２１のＹＥＳ）、コントローラ４は、書き込み要求量２４に、そのライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータの量を加算する（ステップＳ２２）。そして、コントローラ４は、現在の書き込みモードに応じて処理を分岐する（ステップＳ２３）。現在の書き込みモードがＱＬＣ単独モードである場合（ステップＳ２３のＱＬＣ）、コントローラ４は、ユーザデータをＱＬＣ用ライトバッファ２１に格納する（ステップＳ２４）。そして、コントローラ４は、ライトコマンドに対する応答をホスト２に返信し（ステップＳ２７）、ステップＳ２１に戻る。
【０１９９】
一方、現在の書き込みモードがＱＬＣ／ＳＬＣ併用モードである場合（ステップＳ２３のＱＬＣ／ＳＬＣ）、コントローラ４は、ＱＬＣ用ライトバッファ２１に、ユーザデータを格納できる空き領域があるか否かを判定する（ステップＳ２５）。空き領域がある場合（ステップＳ２５のＹＥＳ）、コントローラ４は、ユーザデータをＱＬＣ用ライトバッファ２１に格納し（ステップＳ２４）、ステップＳ２１に戻る。空き領域がない場合（ステップＳ２５のＮＯ）、コントローラ４は、ユーザデータをＳＬＣ用ライトバッファ２２に格納する（ステップＳ２６）。そして、コントローラ４は、ライトコマンドに対する応答をホスト２に返信し（ステップＳ２７）、ステップＳ２１に戻る。
【０２００】
以上により、ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータを、現在の書き込みモードに応じて適切なライトバッファ２１，２２に格納することができる。
【０２０１】
図１９のフローチャートは、コントローラ４によって実行されるＳＬＣライト処理の手順の例を示す。ＳＬＣライト処理では、ＳＬＣ用ライトバッファ２２に格納されているユーザデータが、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。ＳＬＣライト処理は、ＤＲＡＭ６内の記憶領域がＳＬＣ用ライトバッファ２２として割り当てられている場合に実行される。
【０２０２】
まず、コントローラ４は、ＳＬＣ用ライトバッファ２２に１ページ分のユーザデータが格納されているか否かを判定する（ステップＳ３１）。１ページ分のユーザデータが格納されていない場合（ステップＳ３１のＮＯ）、ステップＳ３１に戻る。
【０２０３】
一方、１ページ分のユーザデータが格納されている場合（ステップＳ３１のＹＥＳ）、コントローラ４は、ＳＬＣ用ライトバッファ２２からＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、１ページ分のユーザデータを転送する（ステップＳ３２）。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＳＬＣモードでのプログラムを指示する（ステップＳ３３）。これにより、ＮＡＮＤ型フラッシュメモリチップ５０１に設けられるメモリセルアレイ５０２内のＳＬＣ用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
【０２０４】
次いで、コントローラ４は、ＬＵＴ２６を更新し（ステップＳ３４）、ＬＢＡ範囲−書き込みモードテーブル２７を更新する（ステップＳ３５）。そして、コントローラ４は、転送されたユーザデータが格納されていた、ＳＬＣ用ライトバッファ２２内の領域を解放する（ステップＳ３６）。
【０２０５】
以上により、ＳＬＣ用ライトバッファ２２内に格納されているユーザデータを、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
【０２０６】
図２０のフローチャートは、コントローラ４によって実行されるＱＬＣライト処理の手順の例を示す。ＱＬＣライト処理では、ＱＬＣ用ライトバッファ２１に格納されているユーザデータが、ＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【０２０７】
まず、コントローラ４は、ＱＬＣ用ライトバッファ２１に４ページ分のユーザデータが格納されているか否かを判定する（ステップＳ４１）。４ページ分のユーザデータが格納されていない場合（ステップＳ４１のＮＯ）、ステップＳ４１に戻る。
【０２０８】
一方、４ページ分のユーザデータが格納されている場合（ステップＳ４１のＹＥＳ）、コントローラ４は、ＱＬＣ用ライトバッファ２１から、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、４ページ分のユーザデータを転送する（ステップＳ４２）。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＱＬＣモードでの１回目のプログラムを指示する（ステップＳ４３）。
【０２０９】
次いで、コントローラ４は、ＱＬＣ用ライトバッファ２１から、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、４ページ分のユーザデータを転送する（ステップＳ４４）。転送されるユーザデータは、ステップＳ４２で転送されたユーザデータと同一である。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＱＬＣモードでの２回目のプログラムを指示する（ステップＳ４５）。１回目および２回目のプログラム指示に応じて、ＮＡＮＤ型フラッシュメモリチップ５０１に設けられるメモリセルアレイ５０２内のＱＬＣ用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
【０２１０】
コントローラ４は、ＬＵＴ２６を更新し（ステップＳ４６）、ＬＢＡ範囲−書き込みモードテーブル２７を更新する（ステップＳ４７）。そして、コントローラ４は、転送されたユーザデータが格納されていた、ＱＬＣ用ライトバッファ２１内の領域を解放する（ステップＳ４８）。
【０２１１】
以上により、ＱＬＣ用ライトバッファ２１内に格納されているユーザデータを、ＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
【０２１２】
図２１のフローチャートは、コントローラ４によって実行されるＰＬＰ処理の手順の例を示す。ＰＬＰ処理では、ＳＳＤ３への電力供給が遮断されたことに応じて、蓄電装置７１に蓄積された電荷を用いて、ライトバッファに格納されているユーザデータが、ＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【０２１３】
まず、コントローラ４は、現在の書き込みモードに応じて処理を分岐する（ステップＳ５０１）。現在の書き込みモードがＱＬＣ／ＳＬＣ併用モードである場合（ステップＳ５０１のＱＬＣ／ＳＬＣ）、コントローラ４は、ＳＬＣ用ライトバッファ２２にユーザデータが格納されているか否かを判定する（ステップＳ５０２）。
【０２１４】
ＳＬＣ用ライトバッファ２２にユーザデータが格納されている場合（ステップＳ５０２のＹＥＳ）、コントローラ４は、ＳＬＣ用ライトバッファ２２からＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、１ページ分のユーザデータを転送する（ステップＳ５０３）。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＳＬＣモードでのプログラムを指示する（ステップＳ５０４）。これにより、ＮＡＮＤ型フラッシュメモリチップ５０１に設けられるメモリセルアレイ５０２内のＳＬＣ用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
【０２１５】
次いで、コントローラ４は、ＬＵＴ２６を更新し（ステップＳ５０５）、ＬＢＡ範囲−書き込みモードテーブル２７を更新する（ステップＳ５０６）。そして、コントローラ４は、転送されたユーザデータが格納されていた、ＳＬＣ用ライトバッファ２２内の領域を解放し（ステップＳ５０７）、ステップＳ５０２に戻る。したがって、ＳＬＣ用ライトバッファ２２に格納されているユーザデータがなくなるまで、ステップＳ５０２からステップＳ５０７までの手順が繰り返し実行される。
【０２１６】
ＳＬＣ用ライトバッファ２２にユーザデータが格納されていない場合（ステップＳ５０２のＮＯ）、または現在の書き込みモードがＱＬＣ単独モードである場合（ステップＳ５０１のＱＬＣ）、コントローラ４は、ＱＬＣ用ライトバッファ２１にユーザデータが格納されているか否かを判定する（ステップＳ５０８）。
【０２１７】
ＱＬＣ用ライトバッファ２１にユーザデータが格納されている場合（ステップＳ５０８のＹＥＳ）、コントローラ４は、ＱＬＣ用ライトバッファ２１からＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、１ページ分のユーザデータを転送する（ステップＳ５０９）。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＳＬＣモードでのプログラムを指示する（ステップＳ５１０）。これにより、ＮＡＮＤ型フラッシュメモリチップ５０１に設けられるメモリセルアレイ５０２内のＳＬＣ用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。つまり、ＱＬＣ用ライトバッファ２１に格納されていたユーザデータは、ＱＬＣモードでの書き込み動作よりも、高速で必要な電荷量が少ないＳＬＣモードで書き込まれる。
【０２１８】
次いで、コントローラ４は、ＬＵＴ２６を更新し（ステップＳ５１１）、ＬＢＡ範囲−書き込みモードテーブル２７を更新する（ステップＳ５１２）。そして、コントローラ４は、転送されたユーザデータが格納されていた、ＱＬＣ用ライトバッファ２１内の領域を解放し（ステップＳ５１３）、ステップＳ５０８に戻る。したがって、ＱＬＣ用ライトバッファ２１に格納されているユーザデータがなくなるまで、ステップＳ５０８からステップＳ５１３までの手順が繰り返し実行される。
【０２１９】
また、ＱＬＣ用ライトバッファ２１にユーザデータが格納されていない場合（ステップＳ５０８のＮＯ）、処理を終了する。
【０２２０】
以上により、ＳＳＤ３への電力供給が遮断された場合に、（１）現在の書き込みモードがＱＬＣ単独モードであるならば、ＱＬＣ用ライトバッファ２１に格納されているすべてのユーザデータをＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込み、（２）現在の書き込みモードがＱＬＣ／ＳＬＣ併用モードであるならば、ＱＬＣ用ライトバッファ２１およびＳＬＣ用ライトバッファ２２に格納されているすべてのユーザデータをＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込む。このように、ＰＬＰ処理では、ＳＬＣ用ライトバッファ２２に格納されているユーザデータだけでなく、ＱＬＣ用ライトバッファ２１に格納されているユーザデータも、高速で、必要な電荷量が少ないＳＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。したがって、ＳＳＤ３への電力供給が遮断された場合に、蓄電装置７１に蓄積された限られた電荷を用いて、ＤＲＡＭ６内にバッファリングされているユーザデータが失われることなく、ＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【０２２１】
図２２のフローチャートは、コントローラ４によって実行される書き換え処理の手順の例を示す。書き換え処理では、ＮＡＮＤ型フラッシュメモリ５に暫定的にＳＬＣモードで書き込まれていたユーザデータが、ＳＳＤ３がアイドル状態である間に、ＱＬＣモードでＮＡＮＤ型フラッシュメモリ５に書き込まれる。
【０２２２】
まず、コントローラ４は、ＳＳＤ３がアイドル状態であるか否かを判定する（ステップＳ６０１）。アイドル状態は、例えば、ＳＳＤ３内の各種リソース（例えば、ＣＰＵ１２、ＤＲＡＭ６、等）の使用量または使用率が第２閾値以下である状態を表す。ＳＳＤ３がアイドル状態でない場合（ステップＳ６０１のＮＯ）、ステップＳ６０１に戻り、ＳＳＤ３がアイドル状態であるか否かが再度判定される。
【０２２３】
ＳＳＤ３がアイドル状態である場合（ステップＳ６０１のＹＥＳ）、コントローラ４は、ＮＡＮＤ型フラッシュメモリ５にＳＬＣモードで書き込まれたユーザデータがあるか否かを判定する（ステップＳ６０２）。コントローラ４は、例えば、ＬＢＡ範囲−書き込みモードテーブル２７に、書き込みモードがＳＬＣモードであるエントリが含まれている場合に、ＮＡＮＤ型フラッシュメモリ５にＳＬＣモードで書き込まれたユーザデータがあると判断する。ＳＬＣモードで書き込まれたユーザデータがない場合（ステップＳ６０２のＮＯ）、ステップＳ６０１に戻る。
【０２２４】
ＳＬＣモードで書き込まれたユーザデータがある場合（ステップＳ６０２のＹＥＳ）、コントローラ４は、ＳＬＣモードで書き込まれているユーザデータを、ＮＡＮＤ型フラッシュメモリ５から書き換え用バッファ２３に読み出す（ステップＳ６０３）。そして、コントローラ４は、書き換え用バッファ２３に、４ページ分のユーザデータが読み出されたか否かを判定する（ステップＳ６０４）。４ページ分のユーザデータが読み出されていない場合（ステップＳ６０４のＮＯ）、ステップＳ６０３に戻り、ＳＬＣモードで書き込まれているユーザデータが、ＮＡＮＤ型フラッシュメモリ５から書き換え用バッファ２３にさらに読み出される。
【０２２５】
一方、４ページ分のユーザデータが読み出された場合（ステップＳ６０４のＹＥＳ）、コントローラ４は、書き換え用バッファ２３からＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、その４ページ分のユーザデータを転送する（ステップＳ６０５）。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＱＬＣモードでの１回目のプログラムを指示する（ステップＳ６０６）。
【０２２６】
次いで、コントローラ４は、書き換え用バッファ２３から、ＮＡＮＤ型フラッシュメモリチップ５０１内のページバッファ５０３に、４ページ分のユーザデータを転送する（ステップＳ６０７）。転送されるユーザデータは、ステップＳ６０５で転送されたユーザデータと同一である。コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ５０１に、転送されたユーザデータのＱＬＣモードでの２回目のプログラムを指示する（ステップＳ６０８）。１回目および２回目のプログラム指示に応じて、ＮＡＮＤ型フラッシュメモリチップ５０１に設けられたメモリセルアレイ５０２内のＱＬＣ用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
【０２２７】
コントローラ４は、ＬＵＴ２６を更新し（ステップＳ６０９）、ＬＢＡ範囲−書き込みモードテーブル２７を更新する（ステップＳ６１０）。そして、コントローラ４は、転送されたユーザデータが格納されていた、書き換え用バッファ２３内の領域を解放し（ステップＳ６１１）、ステップＳ６０１に戻る。
【０２２８】
以上により、ＮＡＮＤ型フラッシュメモリ５にＳＬＣモードで書き込まれていたユーザデータを、ＱＬＣモードで改めて書き込むことができる。
【０２２９】
以上説明したように、本実施形態によれば、ホスト２による書き込み速度の要求を満たしながら、不揮発性メモリを効率的に利用することができる。ＤＲＡＭ６は、ホスト２からライトコマンドを受け付けた場合に、当該ライトコマンドを受け付けたことに伴ってホスト２から受信されたユーザデータを格納する。コントローラ４は、ＮＡＮＤ型フラッシュメモリ５とＤＲＡＭ６とに電気的に接続され、ＮＡＮＤ型フラッシュメモリ５のメモリセル当たりにＮビットのデータが書き込まれる第１モードとＮＡＮＤ型フラッシュメモリ５のメモリセル当たりにＭビットのデータが書き込まれる第２モードの少なくとも一方を書き込みモードとして選択し、ＤＲＡＭ６に格納されているデータをＮＡＮＤ型フラッシュメモリ５に書き込む。Ｎは１以上の数であり、ＭはＮよりも大きい数である。コントローラ４は、１つ以上のライトコマンドを受け付けたことに伴ってホスト２から受信されたデータの受信速度が閾値以下である場合、第２モードを書き込みモードとして選択し、この受信速度が閾値を超えている場合、第１モードと第２モードとを書き込みモードとして選択する。
【０２３０】
これにより、ライトコマンドを受け付けたことに伴ってホスト２から受信されるデータの受信速度が閾値以下である場合には、記憶密度がより高い第２モードでユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込み、受信速度が閾値を超えている場合には、第２モードだけでなく、ライト性能が高い第１モードも併用して、ユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込むことができる。したがって、ホスト２からのユーザデータの受信速度に対処するために要求されるＮＡＮＤ型フラッシュメモリ５への書き込み速度を満たしながら、ＮＡＮＤ型フラッシュメモリ５を効率的に利用することができる。
【０２３１】
また、外部電源からＳＳＤ３に供給される電力が遮断された場合に、ＰＬＰ機能を用いて、ライトバッファからＮＡＮＤ型フラッシュメモリ５に書き込まれるユーザデータの量を低減できる。したがって、その動作の際に必要となる、蓄電装置７１に蓄積されるべき電荷量も低減することができる。
【０２３２】
本実施形態に記載された様々な機能の各々は、回路（処理回路）によって実現されてもよい。処理回路の例には、中央処理装置（ＣＰＵ）のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム（命令群）を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたＣＰＵ以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【０２３３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２３４】
１…情報処理システム、２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、６…ＤＲＡＭ、７…電源制御部、１１…ホストＩ／Ｆ、１２…ＣＰＵ、１３…ＮＡＮＤコントローラ、１４…ＤＲＡＭ  Ｉ／Ｆ、１５…ＥＣＣ処理部、１２１…モード制御部、１２２…ライト制御部、１２３…バッファリング処理部、１２４…ＰＬＰ処理部、１２５…書き換え処理部、２１…ＱＬＣ用ライトバッファ、２２…ＳＬＣ用ライトバッファ、２３…書き換え用バッファ、２４…書き込み要求量、２６…ＬＵＴ、２７…ＬＢＡ範囲−書き込みモードテーブル、７１…蓄電装置。
【図１】
2020035128.tif 000003
【図２】
2020035128.tif 000004
【図３】
2020035128.tif 000005
【図４】
2020035128.tif 000006
【図５】
2020035128.tif 000007
【図６】
2020035128.tif 000008
【図７】
2020035128.tif 000009
【図８】
2020035128.tif 000010
【図９】
2020035128.tif 000011
【図１０】
2020035128.tif 000012
【図１１】
2020035128.tif 000013
【図１２】
2020035128.tif 000014
【図１３】
2020035128.tif 000015
【図１４】
2020035128.tif 000016
【図１５】
2020035128.tif 000017
【図１６】
2020035128.tif 000018
【図１７】
2020035128.tif 000019
【図１８】
2020035128.tif 000020
【図１９】
2020035128.tif 000021
【図２０】
2020035128.tif 000022
【図２１】
2020035128.tif 000023
【図２２】
2020035128.tif 000024