(57)【要約】【課題】  容量および寿命の少なくともいずれかと性能とのバランスを保つことができるメモリシステムを実現する。【解決手段】  実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記不揮発性メモリに電気的に接続され、メモリセル当たりにＮビットのデータが書き込まれる第１モードまたはメモリセル当たりにＭビットのデータが書き込まれる第２モードを書き込みモードとして選択し、データを前記不揮発性メモリに書き込むように構成される。前記Ｎは１以上の数であり、前記Ｍは前記Ｎよりも大きい数である。前記コントローラは、前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数に基づいて、前記第１モードと前記第２モードのいずれかを選択するように構成される。【選択図】図１３
2019057193.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、メモリセル当たりにＮビットのデータが書き込まれる第１モードまたはメモリセル当たりにＭビットのデータが書き込まれる第２モードを書き込みモードとして選択し、データを前記不揮発性メモリに書き込むように構成されたコントローラとを具備し、前記Ｎは１以上の数であり、前記Ｍは前記Ｎよりも大きい数であり、
前記コントローラは、前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数に基づいて、前記第１モードと前記第２モードのいずれかを選択するように構成されるメモリシステム。
【請求項２】
前記コントローラは、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が第１閾値未満である場合、書き込みモードとして前記第１モードを選択し、第１データを前記第１モードで前記不揮発性メモリに書き込み、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値以上である場合、書き込みモードとして前記第２モードを選択し、前記第１データを前記第２モードで前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項３】
前記コントローラは、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値未満である場合、書き込みモードとして前記第１モードを選択し、ホストから受信されるライトコマンドに応じたデータを前記第１モードで前記不揮発性メモリに書き込み、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値以上である場合、書き込みモードとして前記第２モードを選択し、前記ホストから受信されるライトコマンドに応じたデータを前記第２モードで前記不揮発性メモリに書き込むように構成される請求項２記載のメモリシステム。
【請求項４】
前記コントローラは、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値未満である場合、書き込みモードとして前記第１モードを選択し、論理アドレスと物理アドレスとの対応を示すアドレス変換情報を前記第１モードで前記不揮発性メモリに書き込み、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値以上である場合、書き込みモードとして前記第２モードを選択し、論理アドレスと物理アドレスとの対応を示すアドレス変換情報を前記第２モードで前記不揮発性メモリに書き込むように構成される請求項２記載のメモリシステム。
【請求項５】
前記コントローラは、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値未満である場合、書き込みモードとして前記第１モードを選択し、ガベージコレクションソースブロックに含まれる有効データを前記第１モードで前記不揮発性メモリに書き込み、
前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数が前記第１閾値以上である場合、書き込みモードとして前記第２モードを選択し、ガベージコレクションソースブロックに含まれる有効データを前記第２モードで前記不揮発性メモリに書き込むように構成される請求項２記載のメモリシステム。
【請求項６】
前記コントローラは、さらに、
ホストから受信されるライトコマンドで指定された論理アドレスのアクセス頻度が第２閾値以上である場合、書き込みモードとして前記第１モードを選択し、前記ライトコマンドに応じたデータを前記第１モードで前記不揮発性メモリに書き込み、前記ライトコマンドで指定された論理アドレスのアクセス頻度が前記第２閾値未満である場合、書き込みモードとして前記第２モードを選択し、前記ライトコマンドに応じたデータを前記第２モードで前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項７】
前記コントローラは、さらに、
ホストから受信されるライトコマンドで指定された論理アドレスが、前記ホストにより指定された第１論理アドレス範囲に含まれる場合、前記ホストにより前記第１論理アドレス範囲に対して指定された書き込みモードで、前記ライトコマンドに応じたデータを前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項８】
前記コントローラは、さらに、
ホストから受信されるライトコマンドで指定されたネームスペースＩＤが、前記ホストにより指定された第１ネームスペースＩＤである場合、前記ホストにより前記第１ネームスペースＩＤに対して指定された書き込みモードで、前記ライトコマンドに応じたデータを前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項９】
前記コントローラは、さらに、
ホストから受信されるライトコマンドで指定されたストリームＩＤが、前記ホストにより指定された第１ストリームＩＤである場合、前記ホストにより前記第１ストリームＩＤに対して指定された書き込みモードで、前記ライトコマンドに応じたデータを前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項１０】
前記コントローラは、さらに、
ガベージコレクションソースブロックに含まれる有効データの論理アドレスのアクセス頻度が第２閾値以上である場合、書き込みモードとして前記第１モードを選択し、前記有効データを前記第１モードで前記不揮発性メモリに書き込み、前記有効データの論理アドレスのアクセス頻度が前記第２閾値未満である場合、書き込みモードとして前記第２モードを選択し、前記有効データを前記第２モードで前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項１１】
前記コントローラは、さらに、
ガベージコレクションソースブロックに含まれる有効データの論理アドレスが、ホストにより指定された第１論理アドレス範囲に含まれる場合、前記ホストにより前記第１論理アドレス範囲に対して指定された書き込みモードで、前記有効データを前記不揮発性メモリに書き込むように構成される請求項１記載のメモリシステム。
【請求項１２】
ランダムアクセスメモリをさらに具備し、
前記不揮発性メモリは、複数のエントリを含むアドレス変換テーブルを格納し、
前記コントローラは、さらに、前記不揮発性メモリから前記ランダムアクセスメモリにキャッシュされる前記アドレス変換テーブルのエントリを制御するように構成され、
前記コントローラは、前記ランダムアクセスメモリに前記アドレス変換テーブルの新たなエントリをキャッシュするための空き領域がない場合、前記ランダムアクセスメモリにキャッシュされた１つ以上のエントリの内、対応するユーザデータが前記第１モードで前記不揮発性メモリに書き込まれたエントリのキャッシュ領域を解放し、前記解放されたキャッシュ領域に前記新たなエントリをキャッシュするように構成される請求項１記載のメモリシステム。
【請求項１３】
ランダムアクセスメモリをさらに具備し、
前記不揮発性メモリは、複数のエントリを含むアドレス変換テーブルを格納し、
前記コントローラは、さらに、前記不揮発性メモリから前記ランダムアクセスメモリにキャッシュされる前記アドレス変換テーブルのエントリを制御するように構成され、
前記コントローラは、前記ランダムアクセスメモリに前記アドレス変換テーブルの新たなエントリをキャッシュするための空き領域がない場合、前記ランダムアクセスメモリにキャッシュされた１つ以上のエントリの内、対応するユーザデータが前記第２モードで前記不揮発性メモリに書き込まれたエントリのキャッシュ領域を解放し、前記解放されたキャッシュ領域に前記新たなエントリをキャッシュするように構成される請求項１記載のメモリシステム。
【請求項１４】
ランダムアクセスメモリをさらに具備し、
前記不揮発性メモリは、複数のエントリを含むアドレス変換テーブルを格納し、
前記コントローラは、さらに、前記不揮発性メモリから前記ランダムアクセスメモリにキャッシュされる前記アドレス変換テーブルのエントリを制御するように構成され、
前記コントローラは、前記ランダムアクセスメモリに前記アドレス変換テーブルの新たなエントリをキャッシュするための空き領域がない場合、前記ランダムアクセスメモリにキャッシュされた１つ以上のエントリの内、対応するアドレス変換情報が前記第１モードで前記不揮発性メモリに書き込まれたエントリのキャッシュ領域を解放し、前記解放されたキャッシュ領域に前記新たなエントリをキャッシュするように構成される請求項１記載のメモリシステム。
【請求項１５】
ランダムアクセスメモリをさらに具備し、
前記不揮発性メモリは、複数のエントリを含むアドレス変換テーブルを格納し、
前記コントローラは、さらに、前記不揮発性メモリから前記ランダムアクセスメモリにキャッシュされる前記アドレス変換テーブルのエントリを制御するように構成され、
前記コントローラは、前記ランダムアクセスメモリに前記アドレス変換テーブルの新たなエントリをキャッシュするための空き領域がない場合、前記ランダムアクセスメモリにキャッシュされた１つ以上のエントリの内、対応するアドレス変換情報が前記第２モードで前記不揮発性メモリに書き込まれたエントリのキャッシュ領域を解放し、前記解放されたキャッシュ領域に前記新たなエントリをキャッシュするように構成される請求項１記載のメモリシステム。
【請求項１６】
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、メモリセル当たりＮビットのデータが書き込まれる第１モードまたはメモリセル当たりＭビットのデータが書き込まれる第２モードを書き込みモードとして選択し、データを前記不揮発性メモリに書き込むように構成されたコントローラとを具備し、前記Ｎは１以上の数であり、前記Ｍは前記Ｎよりも大きい数であり、
前記コントローラは、前記不揮発性メモリの１つ以上のブロックのプログラム／イレーズサイクル数に基づいて、前記第１モードと前記第２モードのいずれかを選択するように構成される、メモリシステム。
【請求項１７】
前記コントローラは、
前記不揮発性メモリの全ブロックのプログラム／イレーズサイクル数の合計を示す現在の総プログラム／イレーズサイクル数が第２閾値未満である場合、書き込みモードとして前記第１モードを選択し、第１データを前記第１モードで前記不揮発性メモリに書き込み、
前記現在の総プログラム／イレーズサイクル数が前記第２閾値以上である場合、書き込みモードとして前記第２モードを選択し、前記第１データを前記第２モードで前記不揮発性メモリに書き込むように構成される、請求項１６記載のメモリシステム。
【請求項１８】
前記コントローラは、
前記不揮発性メモリの全ブロックそれぞれのプログラム／イレーズサイクルの平均が第２閾値未満である場合、書き込みモードとして前記第１モードを選択し、第１データを前記第１モードで前記不揮発性メモリに書き込み、
前記平均が前記第２閾値以上である場合、書き込みモードとして前記第２モードを選択し、前記第１データを前記第２モードで前記不揮発性メモリに書き込むように構成される、請求項１６記載のメモリシステム。
【請求項１９】
前記第１データは、ホストから受信されるライトコマンドに応じたデータである請求項１７または請求項１８記載のメモリシステム。
【請求項２０】
前記第１データは、論理アドレスと物理アドレスとの対応を示すアドレス変換情報である請求項１７または請求項１８記載のメモリシステム。
【請求項２１】
前記第１データは、ガベージコレクションソースブロックに含まれる有効データである請求項１７または請求項１８記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
【０００３】
このようなメモリシステムの一つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【０００４】
ＮＡＮＤ型フラッシュメモリのような不揮発性メモリにおいては、その許容できる最大プログラム／イレーズ（Ｐ／Ｅ）サイクル数が制限されており、実行されたＰ／Ｅサイクル数がその制限値に達すると不揮発性メモリに障害が起きる可能性がある。
【０００５】
また、不揮発性メモリにおいては、メモリセル当たりに格納されるビットの数が増えれば増えるほど、そのメモリ容量（記憶密度）は増加し、一方、その不揮発性メモリへデータを書き込むために要する時間およびその不揮発性メモリからデータを読み出すために要する時間は長くなる。
【０００６】
最近では、１つのメモリセルに１ビットのデータを格納するシングルレベルセル（ＳＬＣ）モードと、１つのメモリセルに２ビット以上のデータを格納するマルチレベルセル（ＭＬＣ）モードとを選択的に使用してデータを不揮発性メモリに書き込むことが可能なメモリシステムも開発されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第８９９０４５８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、容量および寿命の少なくともいずれかと性能とのバランスを保つことができるメモリシステムを提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記不揮発性メモリに電気的に接続され、メモリセル当たりにＮビットのデータが書き込まれる第１モードまたはメモリセル当たりにＭビットのデータが書き込まれる第２モードを書き込みモードとして選択し、データを前記不揮発性メモリに書き込むように構成される。前記Ｎは１以上の数であり、前記Ｍは前記Ｎよりも大きい数である。前記コントローラは、前記不揮発性メモリの物理アドレス空間にマッピングされている論理アドレスの総数に基づいて、前記第１モードと前記第２モードのいずれかを選択するように構成される。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るメモリシステムの構成例を示すブロック図。
【図２】第１実施形態に係るメモリシステムに設けられるＤＲＡＭの構成例を示すブロック図。
【図３】第１実施形態に係るメモリシステムで用いられるルックアップテーブル（ＬＵＴ）の構成例を示す図。
【図４】第１実施形態に係るメモリシステムで用いられるブロック−Ｐ／Ｅサイクル数テーブルの構成例を示す図。
【図５】第１実施形態に係るメモリシステムで用いられるＬＢＡ範囲−アクセス頻度テーブルの構成例を示す図。
【図６】第１実施形態に係るメモリシステムで用いられるブロック−有効データ量テーブルの構成例を示す図。
【図７】第１実施形態に係るメモリシステムで用いられるブロック−低頻度アクセス割合テーブルの構成例を示す図。
【図８】第１実施形態に係るメモリシステムで用いられるＬＢＡ範囲−書き込みモードテーブルの構成例を示す図。
【図９】第１実施形態に係るメモリシステムで用いられるネームスペースＩＤ−書き込みモードテーブルの構成例を示す図。
【図１０】第１実施形態に係るメモリシステムで用いられるストリームＩＤ−書き込みモードテーブルの構成例を示す図。
【図１１】第１実施形態のメモリシステムで用いられる書き込みモードの特徴を説明するための図。
【図１２】図１１の書き込みモードに応じたＮＡＮＤ型フラッシュメモリの記憶容量の例を示す図。
【図１３】第１実施形態のメモリシステムにおいて、メモリセル当たりに書き込まれるデータのビット数が増加するように書き込みモードが切り替えられる例を示す図。
【図１４】第１実施形態のメモリシステムにおいて、メモリセル当たりに書き込まれるデータのビット数が減少するように書き込みモードが切り替えられる例を示す図。
【図１５】第１実施形態のメモリシステムのＮＡＮＤ型フラッシュメモリが、ＳＬＣ専用ブロックグループとＴＬＣ／ＱＬＣ共用ブロックグループとを含む例を示す図。
【図１６】第１実施形態のメモリシステムにおいて、ユーザデータの書き込み時にＳＬＣモードが選択される例を示す図。
【図１７】第１実施形態のメモリシステムにおいて、ユーザデータの書き込み時にＴＬＣモードが選択される例を示す図。
【図１８】第１実施形態のメモリシステムにおいて、ユーザデータの書き込み時にＱＬＣモードが選択される例を示す図。
【図１９】第１実施形態のメモリシステムにおいて、論理アドレス空間にマッピングされる物理アドレスを説明するための図。
【図２０】第１実施形態のメモリシステムにおいて、物理アドレス空間にマッピングされている論理アドレスを説明するための図。
【図２１】第１実施形態のメモリシステムによるユーザデータの書き込みモードの切り替えに応じたライト性能の変動の例を示す図。
【図２２】第１実施形態のメモリシステムによってＬＵＴ（アドレス変換情報）がＮＡＮＤ型フラッシュメモリに書き込まれる例を示す図。
【図２３】第１実施形態のメモリシステムによるユーザデータの書き込みモードの切り替えとＬＵＴの書き込みモードの切り替えとに応じたライト性能の変動の例を示す図。
【図２４】第１実施形態のメモリシステムによるユーザデータの書き込み動作の例を示す図。
【図２５】第１実施形態のメモリシステムによるユーザデータの書き込み動作の別の例を示す図。
【図２６】第１実施形態のメモリシステムによるユーザデータの書き込み動作のさらに別の例を示す図。
【図２７】第１実施形態のメモリシステムによるガベージコレクション動作の例を説明するための図。
【図２８】第１実施形態のメモリシステムによるガベージコレクション動作の別の例を説明するための図。
【図２９】第１実施形態のメモリシステムによって実行されるユーザデータの書き込み処理の手順の例を示すフローチャート。
【図３０】第１実施形態のメモリシステムによって実行されるＬＵＴの書き込み処理の手順の例を示すフローチャート。
【図３１】第１実施形態のメモリシステムによって実行されるガベージコレクション処理の手順の例を示すフローチャート。
【図３２】第１実施形態のメモリシステムによって実行されるガベージコレクション処理の手順の別の例を示すフローチャート。
【図３３】第１実施形態のメモリシステムによって実行されるユーザデータの書き込み処理の手順の別の例を示すフローチャート。
【図３４】第２実施形態のメモリシステムにおいてＰ／Ｅサイクル数の統計値に基づいて書き込みモードが切り替えられる例を説明するための図。
【図３５】第２実施形態のメモリシステムによる書き込みモードの切り替えに応じたＰ／Ｅサイクル数の統計値の変動の例を示す図。
【図３６】第２実施形態のメモリシステムによって実行されるユーザデータの書き込み処理の手順の例を示すフローチャート。
【図３７】第２実施形態のメモリシステムによって実行されるＬＵＴの書き込み処理の手順の例を示すフローチャート。
【図３８】第３実施形態のメモリシステムが、ＤＲＡＭにキャッシュされるＬＵＴ（アドレス変換情報）を制御する動作の第１の例を説明するための図。
【図３９】図３８に示す動作後のＤＲＡＭ上のＬＵＴ、およびＮＡＮＤ型フラッシュメモリ上のＬＵＴを示す図。
【図４０】第３実施形態のメモリシステムによって実行されるキャッシュ制御処理の手順の第１の例を示すフローチャート。
【図４１】第３実施形態のメモリシステムが、ＤＲＡＭにキャッシュされるＬＵＴ（アドレス変換情報）を制御する動作の第２の例を説明するための図。
【図４２】図４１に示す動作後のＤＲＡＭ上のＬＵＴ、およびＮＡＮＤ型フラッシュメモリ上のＬＵＴを示す図。
【図４３】第３実施形態のメモリシステムによって実行されるキャッシュ制御処理の手順の第２の例を示すフローチャート。
【図４４】第３実施形態のメモリシステムが、ＤＲＡＭにキャッシュされるＬＵＴを制御する動作の第３の例を説明するための図。
【図４５】図４４に示す動作後のＤＲＡＭ上のＬＵＴ、およびＮＡＮＤ型フラッシュメモリ上のＬＵＴを示す図。
【図４６】第３実施形態のメモリシステムによって実行されるキャッシュ制御処理の手順の第３の例を示すフローチャート。
【図４７】第３実施形態のメモリシステムが、ＤＲＡＭにキャッシュされるＬＵＴを変更する動作の第４の例を説明するための図。
【図４８】図４７に示す動作後のＤＲＡＭ上のＬＵＴ、およびＮＡＮＤ型フラッシュメモリ上のＬＵＴを示す図。
【図４９】第３実施形態のメモリシステムによって実行されるキャッシュ制御処理の手順の第４の例を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して説明する。
（第１実施形態）  
まず、図１および図２を参照して、実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１２】
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、ＮＡＮＤ型フラッシュメモリを備えたソリッドステートドライブ（ＳＳＤ）３として実現されている。
【００１３】
情報処理システム１は、ホスト（ホストデバイス）２と、ＳＳＤ３とを含む。ホスト２は、ＳＳＤ３にアクセスする情報処理装置（コンピューティングデバイス）である。ホスト２は、大量且つ多様なデータをＳＳＤ３に保存するサーバ（ストレージサーバ）であってもよいし、パーソナルコンピュータであってもよい。
【００１４】
ＳＳＤ３は、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。ＳＳＤ３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１５】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等が使用され得る。
【００１６】
ＳＳＤ３は、コントローラ４および不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）５を備える。コントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現され得る。ＳＳＤ３は、揮発性メモリであるランダムアクセスメモリ、例えば、ＤＲＡＭ６を備えていてもよい。あるいは、ＳＲＡＭのようなランダムアクセスメモリがコントローラ４に内蔵されていてもよい。図２に示すように、ＤＲＡＭ６等のランダムアクセスメモリには、例えば、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ（ＷＢ）３１およびＧＣバッファ３２と、アドレス変換テーブル（論理物理アドレス変換テーブル）として機能するルックアップテーブル（ＬＵＴ）３３のキャッシュ領域とが設けられている。さらに、ＤＲＡＭ６等のランダムアクセスメモリには、処理中に用いられる各種の値（例えば、ユーティライゼーション３４、疲弊度３５１等）や、各種のテーブル（例えば、ブロック−Ｐ／Ｅサイクル数テーブル３５２、ＬＢＡ範囲−アクセス頻度テーブル３６１、ブロック−有効データ量テーブル３６２、ブロック−低頻度アクセス割合テーブル３６３、ＬＢＡ範囲−書き込みモードテーブル３７１、ネームスペースＩＤ−書き込みモードテーブル３７２、ストリームＩＤ−書き込みモードテーブル３７３等）の格納領域が設けられてもよい。なお、ＤＲＡＭ６は、コントローラ４の外部に設けられていてもよい。
【００１７】
ＬＵＴ３３は、図３に示すように、論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間のマッピングを管理する。
【００１８】
疲弊度３５１は、ＮＡＮＤ型フラッシュメモリ５全体の疲弊の程度を表す値（統計値）である。この疲弊度３５１は、図４に示すブロック−Ｐ／Ｅサイクル数テーブル３５２を用いて算出されてもよい。ブロック−Ｐ／Ｅサイクル数テーブル３５２は、ＮＡＮＤ型フラッシュメモリ５に含まれるブロック（ブロック番号）毎にＰ／Ｅサイクル数を管理する。この場合、疲弊度３５１は、ブロック−Ｐ／Ｅサイクル数テーブル３５２を用いて、ＮＡＮＤ型フラッシュメモリ５に含まれる全ブロックそれぞれのＰ／Ｅサイクル数を統計処理することにより算出される。なお、後述するように、ブロック−Ｐ／Ｅサイクル数テーブル３５２は、Ｐ／Ｅサイクル数に替えて、あるいはＰ／Ｅサイクル数に加えて、ブロック毎の疲弊度を管理してもよい。
【００１９】
ＬＢＡ範囲−アクセス頻度テーブル３６１は、図５に示すように、ＬＢＡ範囲毎にアクセス頻度を管理する。各ＬＢＡ範囲は開始ＬＢＡ，終了ＬＢＡによって規定されてもよいし、開始ＬＢＡとサイズとによって規定されてもよい。
【００２０】
ブロック−有効データ量テーブル３６２は、図６に示すように、ブロック（ブロック番号）毎に有効データ量を管理する。各ブロックの有効データ量は、クラスタの数によって表現されてもよいし、パーセンテージによって表現されてよいし、あるいは、バイトのような単位で表現されてもよい。ブロック−有効データ量テーブル３６２は、ホスト２から受信したコマンドに応じた動作やガベージコレクション動作に応じて、各ブロックの有効データ量が変動した場合に更新される。
【００２１】
ブロック−低頻度アクセス割合テーブル３６３は、ブロック（ブロック番号）毎にアクセス頻度が低い有効データの割合（低頻度アクセス割合）を管理する。図７に示すように、ブロック−低頻度アクセス割合テーブル３６３は、例えば、ブロック番号と、高頻度アクセス有効データ量と、低頻度アクセス有効データ量と、低頻度アクセス割合とを含む。高頻度アクセス有効データ量および低頻度アクセス有効データ量は、ＬＵＴ３３およびＬＢＡ範囲−アクセス頻度テーブル３６１の更新に応じて、ＬＢＡ範囲に含まれるＬＢＡ毎のアクセス頻度の変更に応じて、増加または減少する。低頻度アクセス割合は、高頻度アクセス有効データ量と低頻度アクセス有効データ量とを用いて算出され、例えばパーセンテージによって表現されてもよい。
【００２２】
ＬＢＡ範囲−書き込みモードテーブル３７１は、図８に示すように、ＬＢＡ範囲とこのＬＢＡ範囲に対応する書き込みモードとの対応関係を管理する。各ＬＢＡ範囲は開始ＬＢＡ，終了ＬＢＡによって規定されてもよいし、開始ＬＢＡとサイズとによって規定されてもよい。
【００２３】
ネームスペースＩＤ−書き込みモードテーブル３７２は、図９に示すように、ネームスペースＩＤとこのネームスペースＩＤに対応する書き込みモードとの対応関係を管理する。
【００２４】
ストリームＩＤ−書き込みモードテーブル３７３は、図１０に示すように、ストリームＩＤとこのストリームＩＤに対応する書き込みモードとの対応関係を管理する。
【００２５】
図１に戻り、ＮＡＮＤ型フラッシュメモリ５は、複数のＮＡＮＤ型フラッシュメモリチップ（複数のＮＡＮＤ型フラッシュメモリダイ）を含んでいてもよい。各チップは、メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリとして実現されている。
【００２６】
メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに２ビットのデータを格納可能なマルチレベルセル（ＭＬＣ、あるいは４ＬＣ）フラッシュメモリ、メモリセル当たりに３ビットのデータを格納可能なトリプルレベルセル（ＴＬＣ、あるいは８ＬＣ）フラッシュメモリ、メモリセル当たりに４ビットのデータを格納可能なクワッドレベルセル（ＱＬＣ、あるいは１６ＬＣ）フラッシュメモリ、等が含まれる。
【００２７】
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。このＮＡＮＤ型フラッシュメモリ５は、二次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、三次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００２８】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイは、複数のブロックＢ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１の各々は複数のページ（ここではページＰ０〜Ｐｎ−１）を含む。ブロックＢ０〜Ｂｍ−１は、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【００２９】
ブロックＢ０〜Ｂｍ−１の各々に対して許容できる最大Ｐ／Ｅサイクル数は限られている。あるブロックの１回のＰ／Ｅサイクルは、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作（プログラム動作）とを含む。
【００３０】
ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに１ビットが書き込まれるＳＬＣモード、メモリセル当たりに２ビットが書き込まれるＭＬＣモード、メモリセル当たりに３ビットが書き込まれるＴＬＣモード、メモリセル当たりに４ビットが書き込まれるＱＬＣモードのいずれかで、書き込み動作を実行することができる。
【００３１】
例えば、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに２ビットを格納可能なＭＬＣフラッシュメモリ（４ＬＣフラッシュメモリ）として実現されていてもよい。
【００３２】
この場合、通常は、２ページ分のデータ（下位ページデータおよび上位ページデータ）が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに２ビットを書き込むことができる。このＭＬＣフラッシュメモリ内の任意の領域（例えば、１つ以上の任意のブロック）は、メモリセル当たりに１ビットのみを格納可能な領域（ＳＬＣ領域）として使用することができる。
【００３３】
このＳＬＣ領域にデータを書き込む書き込み動作においては、１ページ分のデータ（下位ページデータ）のみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＳＬＣ領域として使用される各ブロックにおいては、ＳＬＣフラッシュメモリ内の各ブロック（ＳＬＣブロック）と同様に、メモリセル当たりに１ビットのみを書き込むことができる。この結果、ＳＬＣ領域として使用される各ブロックは、擬似的なＳＬＣブロックとして機能する。
【００３４】
あるいは、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに３ビットを格納可能なＴＬＣフラッシュメモリ（８ＬＣフラッシュメモリ）であってもよい。
【００３５】
この場合、通常は、３ページ分のデータ（下位ページデータ、ミドルページデータ、および上位ページデータ）が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに３ビットを書き込むことができる。このＴＬＣフラッシュメモリ内の任意の領域（例えば、１つ以上の任意のブロック）は、上述のＳＬＣ領域として使用されてもよいし、メモリセル当たりに２ビットを格納可能なＭＬＣ領域として使用されてもよい。なお、ＳＬＣ領域／ＭＬＣ領域は、ブロックよりも細かい単位（例えば、ワード線の単位、ブロック内のワード線の集合の単位）で設定されてもよい。ＭＬＣ領域においては、２ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＭＬＣ領域においては、メモリセル当たりに２ビットのみを書き込むことができる。
【００３６】
あるいは、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに４ビットを格納可能なＱＬＣフラッシュメモリ（１６ＬＣフラッシュメモリ）であってもよい。
【００３７】
この場合、通常、４ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに４ビットを書き込むことができる。このＱＬＣフラッシュメモリ内の任意の領域（例えば、１つ以上の任意のブロック）は、上述のＳＬＣ領域として使用されてもよいし、上述のＭＬＣ領域として使用されてもよいし、あるいは、メモリセル当たりに３ビットを格納可能なＴＬＣ領域として使用されてもよい。なお、ＳＬＣ領域／ＭＬＣ領域／ＴＬＣ領域は、ブロックよりも細かい単位（例えば、ワード線の単位、ブロック内のワード線の集合の単位）で設定されてもよい。ＴＬＣ領域においては、３ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＴＬＣ領域においては、メモリセル当たりに３ビットを書き込むことができる。
【００３８】
図１１に示すように、各書き込みモードにおけるメモリセル当たりのデータ密度は、ＳＬＣモードでは２値（１ページ）であり、ＭＬＣモードでは４値（２ページ）であり、ＴＬＣモードでは８値（３ページ）であり、ＱＬＣモードでは１６値（４ページ）である。そして、ＮＡＮＤ型フラッシュメモリ５に対するデータの読み出し速度および書き込み速度は、データ密度が高いほど遅く、データ密度が低いほど速い。したがって、これら四つのモードでは、ＱＬＣモードにおけるデータの読み出しおよび書き込みが最も遅く、ＳＬＣモードにおける読み出しおよび書き込みが最も速い。
【００３９】
また、ＮＡＮＤ型フラッシュメモリ５の寿命は、データ密度が高いほど短く、データ密度が低いほど長い。つまり、メモリセルの閾値分布に着目すると、データ密度が低いほど、隣りあう状態に対応する閾値分布間のマージンを広くとれ、データ密度が高いほど、閾値分布間のマージンは狭くなる。広いマージンは、たとえメモリセルに加わるストレスによってこのメモリセルセルの閾値がずれても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑えることを可能にする。このため、ＳＬＣモードにおける許容可能なメモリセルの個別の疲弊度は、ＱＬＣモードにおける許容可能なメモリセルの個別の疲弊度よりも高くなる。この結果、閾値分布間のマージンを広くとれる低データ密度の書き込みモードを使用した場合は、閾値分布間のマージンが狭い高データ密度の書き込みモードを使用した場合に比べ、ＮＡＮＤ型フラッシュメモリ５の寿命（許容できる最大Ｐ／Ｅサイクル数）を長くすることができる。したがって、これら四つのモードでは、ＱＬＣモードにおける寿命が最も短くなり、ＳＬＣモードにおける寿命が最も長くなる。例えば、ＱＬＣモードでデータが書き込まれた場合に許容できる最大Ｐ／Ｅサイクル数は数ｋサイクルであり、ＳＬＣモードでデータが書き込まれた場合に許容できる最大Ｐ／Ｅサイクル数は数十ｋサイクルである。
【００４０】
なお、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに５ビット以上を格納可能に構成されていてもよい。この場合においても、ＮＡＮＤ型フラッシュメモリ５内の任意の領域は、メモリセル当たりに４ビット以下のデータのみが書き込まれる領域として使用され得る。
【００４１】
図１２は、各書き込みモードに応じたＮＡＮＤ型フラッシュメモリ５の記憶容量の例を示す。ここでは、ＮＡＮＤ型フラッシュメモリ５に含まれる複数のＮＡＮＤ型フラッシュメモリチップが、メモリセル当たりに４ビットを格納可能に構成されたＱＬＣフラッシュメモリとして実現される場合を例示する。また、ＮＡＮＤ型フラッシュメモリ５にＱＬＣモードでデータが書き込まれた場合、ＳＳＤ３の記憶容量は５１２ＧＢであることを想定する。
【００４２】
図１２に示すように、バッドブロック等が無い最適な条件下では、ＮＡＮＤ型フラッシュメモリ５にＴＬＣモードでデータが書き込まれた場合のＳＳＤ３の記憶容量は３８４ＧＢであり、ＭＬＣモードでデータが書き込まれた場合のＳＳＤ３の記憶容量は２５６ＧＢであり、ＳＬＣモードでデータが書き込まれた場合のＳＳＤ３の記憶容量は１２８ＧＢである。
【００４３】
このように、データがいずれの書き込みモードで書き込まれるかによって、ＮＡＮＤ型フラッシュメモリ５の記憶容量、ひいてはＳＳＤ３の記憶容量は異なる。
【００４４】
図１に戻り、コントローラ４は、Ｔｏｇｇｌｅ  ＤＤＲ、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）のようなＮＡＮＤインタフェース１３を介して、不揮発性メモリであるＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。ＮＡＮＤインタフェース１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。ＮＡＮＤインタフェース１３は、複数のチャンネルを介して、ＮＡＮＤ型フラッシュメモリ５内の複数のチップにそれぞれ接続されていてもよい。
【００４５】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラとして機能する。
【００４６】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、ＳＳＤ３をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス（ＬＢＡ）が使用される。
【００４７】
論理ブロックアドレス（ＬＢＡ）それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル（論理物理アドレス変換テーブル）として機能するルックアップテーブル（ＬＵＴ）３３を用いて実行される。コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を使用して、ＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータがライトされたＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す。アドレス変換テーブル（ＬＵＴ３３）は、ＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００４８】
１つのページへのデータ書き込みは、１つのＰ／Ｅサイクル当たり１回のみ可能である。このため、コントローラ４は、あるＬＢＡに対応する更新データを、このＬＢＡに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新してこのＬＢＡをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、ＬＵＴ３３から参照されているデータ（すなわち論理アドレスと紐付けられているデータ）を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト２からリードされる可能性があるデータである。無効データは、もはやホスト２からリードされる可能性が無いデータである。
【００４９】
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
【００５０】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４等を含んでもよい。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４は、バス１０を介して相互接続されていてもよい。
【００５１】
ＤＲＡＭインタフェース１４は、ＤＲＡＭ６のアクセスを制御するように構成されたＤＲＡＭコントローラとして機能する。ＤＲＡＭ６の記憶領域は、ライトバッファ（ＷＢ）３１、ＧＣバッファ３２、ルックアップテーブル（ＬＵＴ）３３等を格納するために利用される。
【００５２】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、およびＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、図示しないＲＯＭ等に格納されている制御プログラム（ファームウェア）を実行することによって様々な処理を行う。このＣＰＵ１２は、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行してもよい。
【００５３】
ＣＰＵ１２は、モード切替部１２１、リード制御部１２２、ライト制御部１２３、ガベージコレクション（ＧＣ）制御部１２４、キャッシュ制御部１２５、およびアクセス頻度統計処理部１２６として機能することができる。
【００５４】
モード切替部１２１は、ホスト２から受信されるデータ（書き込みデータ）をＮＡＮＤ型フラッシュメモリ５に書き込むための書き込みモードを適応的に制御する。この書き込みデータには、ガベージコレクション動作によりＮＡＮＤ型フラッシュメモリ５に書き込まれるデータも含まれ得る。モード切替部１２１は、例えば、書き込みモードを、メモリセル当たりにＮビットのデータが書き込まれる第１モードと、メモリセル当たりにＭビットのデータが書き込まれる第２モードとの間で動的に切り替えるように構成されている。ここで、Ｎは１以上の数であり、ＭはＮよりも大きい数である。
【００５５】
第１モードは、メモリセル当たりに格納可能なビット数を減らすことによってＳＳＤ３のライト性能およびリード性能を改善するための性能優先の書き込みモードである。一方、第２モードは、メモリセル当たりに格納可能なビット数を増やすことによって、ホスト２から期待されている記憶容量を提供することができる容量優先の書き込みモードである。
【００５６】
書き込みモードが第１モードである場合、第２モードである場合に比べて、ライト性能が高い。また、第１モードで書き込まれたデータをリードするために要する時間は第２モードで書き込まれたデータをリードするために要する時間よりも短いので、リード性能も高い。一方、書き込みモードが第２モードである場合、第１モードである場合に比べて、リード・ライト性能が低いものの、ＳＳＤ３はホスト２から期待されている記憶容量を提供することができる。したがって、これら第１モードと第２モードとを動的に切り替えることにより、要求される記憶容量を提供しつつ、要求される記憶容量が小さい場合は高い性能を提供することができる。
【００５７】
第１モードと第２モードの組み合わせの例は、以下の通りである。
【００５８】
組み合わせ＃１：  メモリセル当たりに１ビットが書き込まれるＳＬＣモードが第１モードとして使用され、メモリセル当たりに複数ビットが書き込まれるモードが第２モードとして使用される。メモリセル当たりに複数ビットが書き込まれるモードは、メモリセル当たりに２ビットが書き込まれるＭＬＣモードであってもよいし、メモリセル当たりに３ビットが書き込まれるＴＬＣモードであってもよいし、メモリセル当たりに４ビットが書き込まれるＱＬＣモードであってもよい。
【００５９】
組み合わせ＃２：  ＭＬＣモードが第１モードとして使用され、ＴＬＣモードまたはＱＬＣモードが第２モードとして使用される。
【００６０】
組み合わせ＃３：  ＴＬＣモードが第１モードとして使用され、ＱＬＣモードが第２モードとして使用される。
【００６１】
あるいは、モード切替部１２１は、書き込みモードを、メモリセル当たりに格納可能なビット数が互いに異なる第１モードと第２モードと第３モードとの間で動的に切り替えるように構成されていてもよい。第３モードは、メモリセル当たりにＬビットのデータが書き込まれるモードであり、ＬはＭよりも大きい数である。
【００６２】
第１モードと第２モードと第３モードの組み合わせの例は、以下の通りである。
【００６３】
組み合わせ＃４：  ＳＬＣモードが第１モードとして使用され、ＭＬＣモードが第２モードとして使用され、ＴＬＣモードが第３モードとして使用される。
【００６４】
組み合わせ＃５：  ＳＬＣモードが第１モードとして使用され、ＴＬＣモードが第２モードとして使用され、ＱＬＣモードが第３モードとして使用される。
【００６５】
組み合わせ＃６：  ＳＬＣモードが第１モードとして使用され、ＭＬＣモードが第２モードとして使用され、ＱＬＣモードが第３モードとして使用される。
【００６６】
組み合わせ＃７：  ＭＬＣモードが第１モードとして使用され、ＴＬＣモードが第２モードとして使用され、ＱＬＣモードが第３モードとして使用される。
【００６７】
同様にして、モード切替部１２１は、書き込みモードを、メモリセル当たりに格納可能なビット数が互いに異なる４種類以上のモードの間で動的に切り替えるように構成されていてもよい。
【００６８】
以下では、組み合わせ＃５（メモリセル当たりに１ビットが書き込まれるＳＬＣモード、メモリセル当たりに３ビットが書き込まれるＴＬＣモード、およびメモリセル当たりに４ビットが書き込まれるＱＬＣモード）を使用する場合を例示して、書き込みモードを動的に切り替える処理について説明する。
【００６９】
図１３に示すように、モード切替部１２１は、ホスト２から受信される書き込みデータをＮＡＮＤ型フラッシュメモリ５に書き込むための書き込みモードを、任意の指標に基づいて、ＳＬＣモード１５とＴＬＣモード１６とＱＬＣモード１７との間で動的に切り替えるように構成される。以下では、ホスト２から受信される書き込みデータをＮＡＮＤ型フラッシュメモリ５に書き込むことを、ホスト書き込みとも称する。
【００７０】
また、モード切替部１２１は、ガベージコレクション動作において、データをＮＡＮＤ型フラッシュメモリ５に書き込むための書き込みモードを、任意の指標に基づいて、メモリセル当たりに格納可能なビット数がより多いモードに切り替え可能であるように構成される。より具体的には、ＧＣソースブロックにＳＬＣモード１５で書き込まれていた有効データをＧＣデスティネーションブロックに書き込む場合に、モード切替部１２１は、ＳＬＣモード１５をそのまま選択することもできるし、メモリセル当たりに格納可能なビット数がより多いＴＬＣモード１６またはＱＬＣモード１７に切り替えることもできる。ＧＣソースブロックにＴＬＣモード１６で書き込まれていた有効データをＧＣデスティネーションブロックに書き込む場合に、モード切替部１２１は、ＴＬＣモード１６をそのまま選択することもできるし、メモリセル当たりに格納可能なビット数がより多いＱＬＣモード１７に切り替えることもできる。また、ＧＣソースブロックにＱＬＣモード１７で書き込まれていた有効データをＧＣデスティネーションブロックに書き込む場合、モード切替部１２１はＱＬＣモード１７を選択し得る。なお、以下では、ガベージコレクション動作において、データをＮＡＮＤ型フラッシュメモリ５に書き込むことを、ＧＣ書き込みとも称する。
【００７１】
さらに、図１４に示すように、モード切替部１２１は、ガベージコレクション動作において、データをＮＡＮＤ型フラッシュメモリ５に書き込むための書き込みモードを、任意の指標に基づいて、メモリセル当たりに格納可能なビット数がより少ないモードに切り替え可能であるように構成されてもよい。より具体的には、ＧＣソースブロックにＱＬＣモード１７で書き込まれていた有効データをＧＣデスティネーションブロックに書き込む場合に、モード切替部１２１は、ＱＬＣモード１７をそのまま選択することもできるし、メモリセル当たりに格納可能なビット数がより少ないＴＬＣモード１６またはＳＬＣモード１５に切り替えることもできる。ＧＣソースブロックにＴＬＣモード１６で書き込まれていた有効データをＧＣデスティネーションブロックに書き込む場合に、モード切替部１２１は、ＴＬＣモード１６をそのまま選択することもできるし、メモリセル当たりに格納可能なビット数がより少ないＳＬＣモード１５に切り替えることもできる。また、ＧＣソースブロックにＳＬＣモード１５で書き込まれていた有効データをＧＣデスティネーションブロックに書き込む場合、モード切替部１２１はＳＬＣモード１５を選択し得る。
【００７２】
また、ＮＡＮＤ型フラッシュメモリ５に含まれる複数のブロックは、図１５に示すように、ＳＬＣ専用ブロックグループ１８とＴＬＣ／ＱＬＣ共用ブロックグループ１９のいずれかに属するブロックとして用いられてもよい。ＳＬＣ専用ブロックグループ１８に属するブロックには、データがＳＬＣモード１５で書き込まれる。ＴＬＣ／ＱＬＣ共用ブロックグループ１９に属するブロックには、データがＴＬＣモード１６またはＱＬＣモード１７で書き込まれる。
【００７３】
モード切替部１２１は、書き込みモードを切り替えるための指標として、例えば、物理アドレス空間にマッピングされている論理アドレスの総数（ユーティライゼーション）を用いることができる。ユーティライゼーションは、０から、論理アドレス空間の総サイズの内、ある時点で割り当てられ得る論理アドレスの最大の数（キャパシティ）までの値を取り得る。本実施形態中では、ユーティライゼーションは、最小の数を０％、最大の数を１００％とする割合で表現することもある。ある時点で割り当てられ得る論理アドレスの最大の数は、例えば、シン・プロビジョニングされたストレージデバイスである場合、論理アドレス空間の総サイズよりも小さくなり、そうでなければ論理アドレス空間の総サイズと等しくなる。
【００７４】
図１６から図１８を参照して、書き込みモードが切り替えられる具体的な例について説明する。論理アドレス空間４１には、物理アドレス空間５１にマッピングされている論理アドレスと、物理アドレス空間５１にマッピングされていない論理アドレスとが含まれ得る。各論理アドレスは、物理アドレス空間５１において、最小アクセス（Ｉ／Ｏ）単位（例えば、４ＫＢのクラスタ単位）のデータが書き込まれる領域を示す物理アドレスにマッピングされ得る。
【００７５】
図１６に示す例では、論理アドレス４１１は物理アドレス５１１にマッピングされ、また論理アドレス４１２は物理アドレス５１２にマッピングされている。そして、論理アドレス４１１，４１２以外の論理アドレスは、いずれの物理アドレスにもマッピングされていない。したがって、モード切替部１２１は、ユーティライゼーションとして“２”を取得する。そして、モード切替部１２１は、このユーティライゼーション“２”が第１閾値未満であるならば、書き込みモードとしてＳＬＣモード１５を設定する。
【００７６】
また、図１７に示す例では、論理アドレス４１１，４１２，４１３，４１４，４１５，４１６は、物理アドレス５１１，５１２，５１３，５１４，５１５，５１６にそれぞれマッピングされている。そして、論理アドレス４１１，４１２，４１３，４１４，４１５，４１６以外の論理アドレスは、いずれの物理アドレスにもマッピングされていない。したがって、モード切替部１２１は、ユーティライゼーションとして“６”を取得する。そして、モード切替部１２１は、このユーティライゼーション“６”が第１閾値以上且つ第２閾値未満であるならば、書き込みモードとしてＴＬＣモード１６を設定する。なお、第２閾値は第１閾値よりも大きい。
【００７７】
さらに、図１８に示す例では、論理アドレス４１１，４１２，４１３，４１４，４１５，４１６，４１７，４１８，４１９，４２０は、物理アドレス５１１，５１２，５１３，５１４，５１５，５１６，５１７，５１８，５１９，５２０にそれぞれマッピングされている。そして、論理アドレス４１１，４１２，４１３，４１４，４１５，４１６，４１７，４１８，４１９，４２０以外の論理アドレスは、いずれの物理アドレスにもマッピングされていない。したがって、モード切替部１２１は、ユーティライゼーションとして“１０”を取得する。そして、モード切替部１２１は、このユーティライゼーション“１０”が第２閾値以上であるならば、書き込みモードとしてＱＬＣモード１７を設定する。
【００７８】
この物理アドレス空間にマッピングされている論理アドレスの総数（ユーティライゼーション）について、図１９および図２０を参照して説明する。
【００７９】
図１９は、論理アドレス空間４１Ａにマッピングされている物理アドレス５１Ａ（有効データが格納されている物理アドレス）と、論理アドレス空間４１Ａにマッピングされていない物理アドレス５１Ｂ（無効データが格納されている物理アドレス）とを示す。これに対して、図２０は、物理アドレス空間５１Ｃにマッピングされている論理アドレス４１Ｂと、物理アドレス空間５１Ｃにマッピングされていない論理アドレス４１Ｃとを示す。
【００８０】
本実施形態では、物理アドレス空間５１Ｃにマッピングされている論理アドレス４１Ｂの総数（ユーティライゼーション）に基づいて、ＮＡＮＤ型フラッシュメモリ５へのデータの書き込みモードが切り替えられる。
【００８１】
なお、ホスト２からライトコマンドを受け付けた場合、ライトコマンドで指定された論理アドレスの状態と、ユーティライゼーションとはそれぞれ以下のように変化する。
【００８２】
（１−１）マッピングされていない（ｕｎｍａｐｐｅｄ）状態である論理アドレスを指定したライトコマンドを受け付けた場合、指定された論理アドレスはマッピングされた（ｍａｐｐｅｄ）状態に遷移し、ユーティライゼーションは増加する。
【００８３】
（１−２）マッピングされた（ｍａｐｐｅｄ）状態である論理アドレスを指定したライトコマンドを受け付けた場合、指定された論理アドレスはマッピングされた（ｍａｐｐｅｄ）状態のままであり、ユーティライゼーションは変化しない。
【００８４】
また、ホスト２からアンマップ（トリム）コマンドを受け付けた場合、アンマップ（トリム）コマンドで指定された論理アドレスの状態と、ユーティライゼーションとはそれぞれ以下のように変化する。
【００８５】
（２−１）マッピングされていない（ｕｎｍａｐｐｅｄ）状態である論理アドレスを指定したアンマップ（トリム）コマンドを受け付けた場合、指定された論理アドレスはマッピングされていない（ｕｎｍａｐｐｅｄ）状態のままであり、ユーティライゼーションは変化しない。
【００８６】
（２−２）マッピングされた（ｍａｐｐｅｄ）状態である論理アドレスを指定したアンマップ（トリム）コマンドを受け付けた場合、指定された論理アドレスはマッピングされていない（ｕｎｍａｐｐｅｄ）状態に遷移し、ユーティライゼーションは減少する。
【００８７】
なお、ホスト２からフォーマットコマンドを受け付けた場合には、全論理アドレスの各々について、論理アドレスが、マッピングされていない（ｕｎｍａｐｐｅｄ）状態であるか、それともマッピングされた（ｍａｐｐｅｄ）状態であるかに応じて、（２−１）または（２−２）に示したように論理アドレスの状態とユーティライゼーションとが変化する。特に、フォーマットコマンド実行後のユーティライゼーションは０となる。
【００８８】
図２１に示すように、ユーザデータがＴＬＣモード１６で書き込まれる期間中に、ユーティライゼーション７１が閾値７１Ａ以上になったとき（Ｔ１）、モード切替部１２１は、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替える。書き込みモードがＱＬＣモード１７に切り替えられたことにより、ライト性能７３が低くなるものの、ＳＳＤ３はホスト２から期待されている記憶容量を提供することができる（容量優先）。より具体的には、例えば、ユーティライゼーション７１が大きくなってきていることを無視し、性能だけを優先して、ユーザデータを全てＳＬＣモード１５で書き込んでしまうならば、ライトコマンドを受け付けても、ＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込むことができない（すなわち、いくらガベージコレクション動作を行ってもフリーブロックが生成できなくなる）という状況に陥る。本実施形態では、上記のように、ユーティライゼーション７１が大きくなった場合に、メモリセル当たりに書き込まれるデータのビット数が増加するように書き込みモードを切り替える構成により、このような事態になることを防ぐことができる。
【００８９】
また、アンマップコマンドが実行されたこと等に応じて、ユーティライゼーション７１が減少し、閾値７１Ａ未満になったとき（Ｔ２）、モード切替部１２１は、書き込みモードをＱＬＣモード１７からＴＬＣモード１６に切り替える。書き込みモードがＴＬＣモード１６に切り替えられたことにより、ライト性能７３が高くなる（性能優先）。なお、ＴＬＣモード１６で書き込まれたユーザデータをリードするために要する時間はＱＬＣモード１７で書き込まれたユーザデータをリードするために要する時間よりも短いので、書き込みモードをＱＬＣモード１７からＴＬＣモード１６に切り替えることにより、ライト性能のみならず、リード性能も改善される。
【００９０】
さらに、ユーザデータがＴＬＣモード１６で書き込まれる期間中に、ユーティライゼーション７１が閾値７１Ａ以上になったとき（Ｔ３）、モード切替部１２１は、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替える（容量優先）。
【００９１】
このように、モード切替部１２１は、ユーティライゼーション７１に応じて、書き込みモードを適応的に制御することができる。その結果、要求される記憶容量を提供しつつ、要求される記憶容量が小さい場合は高い性能を提供することができる。
【００９２】
ＮＡＮＤ型フラッシュメモリ５には、ユーザデータだけでなくＬＵＴも書き込まれる。モード切替部１２１は、ＬＵＴを書き込む書き込みモードも切り替えるように構成され得る。図２２に示すように、モード切替部１２１は、例えば、ＤＲＡＭ６にキャッシュされたＬＵＴ３３の各エントリのデータ（アドレス変換情報）が、ＮＡＮＤ型フラッシュメモリ５上のＬＵＴ５３に書き戻される場合に、当該データを書き込むための書き込みモードを、ＳＬＣモード１５とＴＬＣモード１６との間で動的に切り替えることができる。なお、ＬＵＴを書き込む書き込みモードに、ＱＬＣモード１７が含まれていてもよい。
【００９３】
ＬＵＴ５３の書き込みモードを切り替えることによっても、要求される記憶容量を提供しつつ、要求される記憶容量が小さい場合は高い性能を提供することができる。この理由について以下に説明する。
【００９４】
ＬＵＴ５３に関して下記の２点を前提とする。
（１）ＬＵＴ５３のサイズはユーティライゼーションによって変動するとする。具体的には、マッピングされていない（ｕｎｍａｐｐｅｄ）状態のＬＢＡが連続する論理アドレス空間に対応するアドレス変換情報は、同一数のマッピングされた（ｍａｐｐｅｄ）状態のＬＢＡをもつ論理アドレス空間に対応するアドレス変換情報よりも小さいとする。
（２）ＬＵＴ５３が書き込まれるＬＵＴブロックは固定数割り当てられているものとする。その固定数のＬＵＴブロックには、ＴＬＣモード１６を使用することで、ユーティライゼーションが１００％の状態のＬＵＴを格納することが可能だが、ＳＬＣモード１５では記憶容量が不足するものとする。
【００９５】
モード切替部１２１は、ユーティライゼーションに基づいて、ＬＵＴの書き込みモードを切り替える。ユーティライゼーションが高い状態においては、記憶容量を優先するために、ＴＬＣモード１６でのＬＵＴ書き込みを行う。ＴＬＣモード１６による書き込みは低速なため、ライト性能が低い。また、ＬＵＴキャッシュミスの際、ＬＵＴブロックに対する読み出しが発生するが、この読み出しが低速であるため、ＬＵＴキャッシュミスによる性能（リード性能およびライト性能）低下が大きい。
【００９６】
一方、ユーティライゼーションが低い状態においては、性能を優先するために、ＳＬＣモード１５でのＬＵＴ書き込みを行う。ＳＬＣモード１５による書き込みは高速なため、ライト性能が高い。また、ＬＵＴキャッシュミスの際、ＬＵＴブロックに対する読み出しが発生するが、この読み出しは高速であるため、ＬＵＴキャッシュミスによる性能（リード性能およびライト性能）低下はさほど大きくない。
【００９７】
このように、ＬＵＴ書き込みにおいても、ユーティライゼーションに応じて、書き込みモードを適応的に制御する。その結果、ＬＵＴ５３の書き込みモードを切り替えることによっても、要求される記憶容量を提供しつつ、要求される記憶容量が小さい場合は高い性能を提供することができる。
【００９８】
図２３は、物理アドレス空間にマッピングされている論理アドレスの総数（ユーティライゼーション）に基づいてユーザデータの書き込みモードとＬＵＴの書き込みモードとが切り替えられる場合の、ライト性能の変動の例を示す。ここでは、初期状態（Ｔ０）において、ユーザデータの書き込みモードとしてＴＬＣモード１６が設定され、ＬＵＴの書き込みモードとしてＳＬＣモード１５が設定されていることを想定する。
【００９９】
図２３に示すように、ユーザデータがＴＬＣモード１６で書き込まれ、ＬＵＴがＳＬＣモード１５で書き込まれる期間中に、ユーティライゼーション７５が閾値７５Ａ以上になったとき（Ｔ１）、モード切替部１２１は、ＬＵＴの書き込みモードをＳＬＣモード１５からＴＬＣモード１６に切り替える。ＬＵＴの書き込みモードがＴＬＣモード１６に切り替えられたことにより、ライト性能７８がやや低くなり、また、ＬＵＴキャッシュミス時のペナルティが大きくなることにより、リード・ライト性能が低下するものの、限られたＬＵＴブロックに、ＬＵＴ全体を格納することができる（容量優先）。ＮＡＮＤ型フラッシュメモリ５へのＬＵＴの書き込み量は、ユーザデータの書き込み量よりも小さい。そのため、モード切替部１２１は、ＬＵＴの書き込みモードを切り替えることにより、ライト性能７８への影響を小さく抑えることができる。したがって、容量と性能とのバランスをとった書き込みモードを設定することができる。
【０１００】
次いで、ユーザデータがＴＬＣモード１６で書き込まれ、ＬＵＴがＴＬＣモード１６で書き込まれる期間中に、ユーティライゼーション７５が閾値７５Ｂ以上になったとき（Ｔ２）、モード切替部１２１は、ユーザデータの書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替える。ユーザデータの書き込みモードがＱＬＣモード１７に切り替えられたことにより、ライト性能７８が低くなる。なお、ＱＬＣモード１７で書き込まれたユーザデータをリードするために要する時間はＴＬＣモード１６で書き込まれたユーザデータをリードするために要する時間よりも長いので、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替えることにより、ライト性能のみならず、リード性能も低くなる。つまり、リード・ライト性能７８は低くなるものの、ＳＳＤ３はホスト２から期待されている記憶容量を提供することができる（容量優先）。ＱＬＣモード１７で書き込まれたユーザデータをリードするために要する時間はＴＬＣモード１６で書き込まれたユーザデータをリードするために要する時間よりも長いので、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替えることにより、ユーザデータのライト性能のみならず、リード性能も低くなる。
【０１０１】
次いで、アンマップコマンドが実行されたこと等に応じて、ユーティライゼーション７５が減少し、閾値７５Ｂ未満になったとき（Ｔ３）、モード切替部１２１は、ユーザデータの書き込みモードをＱＬＣモード１７からＴＬＣモード１６に切り替える。ユーザデータの書き込みモードがＴＬＣモード１６に切り替えられたことにより、ライト性能７８が高くなる。したがって、ユーティライゼーション７５が減少し、閾値７５Ｂ未満になった場合、すなわち、ＮＡＮＤ型フラッシュメモリ５が保持しなければならないデータ量が減少した場合、リード・ライト性能７８を高くすることができる（性能優先）。ＴＬＣモード１６で書き込まれたユーザデータをリードするために要する時間はＱＬＣモード１７で書き込まれたユーザデータをリードするために要する時間よりも短いので、書き込みモードをＱＬＣモード１７からＴＬＣモード１６に切り替えることにより、ユーザデータのライト性能のみならず、リード性能も改善することができる。
【０１０２】
そして、さらにアンマップコマンドが実行されたこと等に応じて、ユーティライゼーションが減少し、閾値７５Ａ未満になったとき（Ｔ４）、モード切替部１２１は、ＬＵＴの書き込みモードをＴＬＣモード１６からＳＬＣモード１５に切り替える。ＬＵＴの書き込みモードがＳＬＣモード１５に切り替えられたことにより、ライト性能７８がさらに高くなり、ＬＵＴキャッシュミス時のペナルティが軽減されることにより、リード・ライト性能が向上する。したがって、ユーティライゼーション７５が減少し、閾値７５Ａ未満になった場合、すなわち、ＮＡＮＤ型フラッシュメモリ５が保持しなければならないデータ量がさらに減少した場合、リード・ライト性能７８をさらに高くすることができる（性能優先）。
【０１０３】
このように、モード切替部１２１は、ユーティライゼーション７５に応じて、ユーザデータの書き込みモードとＬＵＴの書き込みモードとを適応的に制御することができる。その結果、要求される記憶容量を提供しつつ、要求される記憶容量が小さい場合は高い性能を提供することができる。
【０１０４】
なお、ユーザデータをＳＬＣモード１５で書き込む方法の一つに、ＳＬＣバッファを利用する方法がある。ＳＬＣバッファは、例えば、ＳＬＣモード用の幾つかのブロックから構成される。書き込みモードがＳＬＣモード１５である場合、ユーザデータは、まず、ＳＬＣモードでＳＬＣバッファに書き込まれ、その後、ガベージコレクション等によりＳＬＣバッファ内のユーザデータがＴＬＣ／ＱＬＣモード１６，１７でＴＬＣ／ＱＬＣ用ブロック（ＳＬＣバッファ以外のブロック）に書き込まれる場合がある。一方、書き込みモードがＴＬＣ／ＱＬＣモード１６，１７である場合、ユーザデータは、ＳＬＣバッファを経由せずに、ＱＬＣ用ブロックに直接書き込まれる（直書きされる）。
【０１０５】
ＳＬＣバッファを用いることにより、（ＳＬＣバッファを構成する全ブロックにユーザデータが書き込まれるまでの間の）短期間におけるライト性能を改善する、すなわち、（ワークロードに関わらず）瞬発性能を発揮する。ワークロードは、時系列順に並べられたアクセス（複数のコマンド）における、論理アドレス空間内のアクセスパターンを意味する。
【０１０６】
さらに、ＳＬＣバッファを用いることにより、狭域ワークロードにおいて、（１）ＷＡＦを下げ、ライト性能を改善し、（２）リード性能を改善することができる。狭域ワークロードとは、時系列的に近接するアクセスにおいて、アクセス対象の論理アドレスが狭い論理アドレス空間内におさまっているアクセスパターンのことである。
【０１０７】
モード切替部１２１は、ホスト２からのライトコマンドに応じたユーザデータの書き込みモードとして、必ずＳＬＣモード１５を選択するようにしてもよい。モード切替部１２１は、例えば、
ケース（１）：  ＴＬＣ／ＱＬＣに直接書き込むこと（直書き）ができない場合、
ケース（２）：  直書きによる信頼性リスクが高い場合、または
ケース（３）：  ＱＬＣ／ＴＬＣの許容できる最大Ｐ／Ｅサイクル数が非常に少なく、且つＳＬＣの許容できる最大Ｐ／Ｅサイクル数が非常に大きい場合に、
ホスト書き込みをＳＬＣモード１５とすることによって、それぞれ以下の利点を得ることができる。
ケース（１）について、そもそもＴＬＣ／ＱＬＣに直接書き込むことができないので、ＳＬＣ書きとＴＬＣ／ＱＬＣ書きを併用したメモリシステムを実現することができる。
ケース（２）について、直書きを避けることにより、メモリシステムの信頼性を担保できる。
ケース（３）について、ＳＬＣブロックの寿命を考慮することなくメモリシステムとしての寿命を担保できるので、制御が簡単になる。
【０１０８】
ここで、直書きによる信頼性リスクについて説明する。  
【０１０９】
ＱＬＣモード１７（またはＴＬＣモード１６）でのプログラムは、ＳＬＣモード１５でのプログラムと比較して、失敗する確率が高く、リトライが必要になる可能性があり、その際、元になるデータがないとリトライできない。このような場合に、ＳＬＣバッファを経由していれば、元になるデータのバックアップがあることになる。一方、プログラム完了前に（プログラムの成功／失敗が判明する前に）、ライトバッファ内の、データが蓄積されていた領域を解放してしまう実装の場合、リトライは困難である。また、電源を切られたときに、バックアップ電池によるライトバッファ退避処理（ＰＬＰ処理）を実装できない場合も同様である。
【０１１０】
次いで、図２４から図２６を参照して、ライト制御部１２３によるＮＡＮＤ型フラッシュメモリ５へのデータの書き込み動作を説明する。ここでは、ライト制御部１２３が、ホスト２からユーザデータの書き込みを要求するライトコマンドを受け付け、ユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込む場合について例示する。
【０１１１】
図２４に示す例では、ＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込む書き込みモードとして、一種類の書き込みモード（ここでは、ＴＬＣモード１６）のみが用いられることを想定する。
【０１１２】
ライト制御部１２３は、図２４に示すように、ライトコマンドに応じてホスト２から受信されたユーザデータを、ＤＲＡＭ６上のライトバッファ３１に蓄積する。ライト制御部１２３は、ユーザデータを蓄積するためのライトバッファ３１の領域を予め確保しておき、確保できない間は、ホスト２からライトコマンドを受け付けないようにする。
【０１１３】
そして、ライト制御部１２３は、ライトバッファ３１内にＮＡＮＤ型フラッシュメモリ５の書き込み単位分のユーザデータが蓄積されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１（ＮＡＮＤ型フラッシュメモリチップ５０１のデータラッチ５０３）にその書き込み単位分のユーザデータを転送する。書き込みモードがＴＬＣモード１６である場合、書き込み単位は、例えば９６ＫＢである。ライト制御部１２３は、ライトバッファ３１内の、転送されたユーザデータが蓄積されていた領域を解放する。
【０１１４】
次いで、ライト制御部１２３は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラム（ＴＬＣモード１６でのプログラム）を指示する。すなわち、ライト制御部１２３は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムコマンドを送ることにより、メモリセルアレイ５０２内の書き込み先ブロック５６６にデータラッチ５０３に格納されているデータをＴＬＣモード１６でプログラムさせる。メモリセルアレイ５０２は複数のブロック５５１〜５５８を含んでいる。ブロックは、有効データを格納していて、新たにデータを書き込むことができないブロック（アクティブブロック）と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック（フリーブロック）とに大別される。１つ以上のフリーブロックから、１個が選択され、イレーズ処理を経ることで、書き込み先ブロック５５６として割り当てられる。書き込み先ブロック５５６は、有効データを格納し得る。
【０１１５】
次いで、図２５に示す例では、ＮＡＮＤ型フラッシュメモリ５にデータを書き込む書き込みモードとして、二種類の書き込みモード（ここでは、ＳＬＣモード１５およびＴＬＣモード１６）が用いられることを想定する。
【０１１６】
ライト制御部１２３は、図２４に示した例と同様にして、ライトコマンドに応じてホスト２から受信されたユーザデータを、ＤＲＡＭ６上のライトバッファ３１に蓄積する。
【０１１７】
そして、ライト制御部１２３は、モード切替部１２１によって設定された書き込みモードに従って、ライトバッファ３１内にＮＡＮＤ型フラッシュメモリ５の書き込み単位分のユーザデータが蓄積されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１（ＮＡＮＤ型フラッシュメモリチップ５０１のデータラッチ５０３）にその書き込み単位分のユーザデータを転送する。書き込みモードがＴＬＣモード１６である場合、書き込み単位は、例えば３ページ分の９６ＫＢ（ＫｉＢ）である。また、書き込みモードがＳＬＣモード１５である場合、書き込み単位は、例えば１ページ分の３２ＫＢである。ライト制御部１２３は、ライトバッファ３１内の、転送されたユーザデータが蓄積されていた領域を解放する。
【０１１８】
次いで、ライト制御部１２３は、ＮＡＮＤ型フラッシュメモリチップ５０１に、モード切替部１２１によって設定された書き込みモードでの、特定の物理位置（例えば、指定されたブロックアドレスおよびページアドレス）へのプログラムを指示する。書き込みモードがＳＬＣモード１５に設定されている場合、ライト制御部１２３は、ＳＬＣモード１５でのプログラムを指示する。これにより、メモリセルアレイ５０２内のＳＬＣ用の書き込み先ブロック５６５に、データがＳＬＣモード１５でプログラムされる。
【０１１９】
また、書き込みモードがＴＬＣモード１６に設定されている場合、ライト制御部１２３は、特定の物理位置（例えば、指定されたブロックアドレスおよびページアドレス）へのＴＬＣモード１６でのプログラムを指示する。これにより、メモリセルアレイ５０２内のＴＬＣ用の書き込み先ブロック５６６に、データがＴＬＣモード１６でプログラムされる。
【０１２０】
ＮＡＮＤ型フラッシュメモリ５（メモリセルアレイ５０２）にＳＬＣ用の書き込み先ブロック５６５とＴＬＣ用の書き込み先ブロック５６６の両方が同時に確保されている場合、モード切替部１２１は、書き込み先ブロックを選択することで、書き込み単位分のデータ毎に、書き込みモードを切り替え可能である。一方で、ＮＡＮＤ型フラッシュメモリ５に、ＳＬＣ用の書き込み先ブロック５６５とＴＬＣ用の書き込み先ブロック５６６のいずれか一方しか同時に存在しない（確保しない）場合には、モード切替部１２１は、書き込み先ブロックが新たに確保されるタイミングでのみ、書き込みモードを切り替え可能である。
【０１２１】
図２６は、ライトバッファ３１に蓄積されたユーザデータ毎に（例えば、クラスタ単位のユーザデータ毎に）書き込みモードを切り替えるために、ライトバッファ３１に、ＳＬＣ用ライトバッファ３１１とＴＬＣ用ライトバッファ３１２とが設けられ、またＮＡＮＤ型フラッシュメモリ５（メモリセルアレイ５０２）に、ＳＬＣ用の書き込み先ブロック５７５とＴＬＣ用の書き込み先ブロック５７６との両方が同時に確保される例を示す。図２６に示す例では、ＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込む書き込みモードとして、二種類の書き込みモード（ここでは、ＳＬＣモード１５およびＴＬＣモード１６）が用いられ、ライトバッファ３１が書き込みモードの種類毎に管理されている。
【０１２２】
ライト制御部１２３は、ライトコマンドに応じてホスト２から受信されるユーザデータを特定のルールに従って振り分け、ＳＬＣ用ライトバッファ３１１とＴＬＣ用ライトバッファ３１２のいずれかに蓄積する。または、ライト制御部１２３は、例えば、モード切替部１２１によって設定された現在の書き込みモードに対応するいずれかのバッファ３１１，３１２にユーザデータを蓄積する。
【０１２３】
この特定のルールには以下のルールが含まれていてもよい。
ルール（１）：  ライトコマンドで指定されたＬＢＡのアクセス頻度に基づいて、アクセス頻度が高ければ（例えば、閾値以上であれば）、ユーザデータをＳＬＣ用ライトバッファ３１１に振り分け、アクセス頻度が低ければ（例えば、閾値未満であれば）、ユーザデータをＴＬＣ用ライトバッファ３１２に振り分ける。なお、アクセス頻度が低いユーザデータは、ＴＬＣ用ライトバッファ３１２に振り分けるのではなく、モード切替部１２１によって設定された現在の書き込みモード（すなわち、ユーティライゼーションに基づいて選択された書き込みモード）に対応するいずれかのバッファ３１１，３１２に振り分けられてもよい。
ルール（２）：  ライトコマンドで指定されたＬＢＡが、ホスト２により書き込みモードと共に指定されたＬＢＡ範囲に含まれる場合に、そのＬＢＡ範囲に対してホスト２により直接的あるいは間接的に指定された書き込みモードが、ＳＬＣモード１５であればユーザデータをＳＬＣ用ライトバッファ３１１に振り分け、ＴＬＣモード１６であればユーザデータをＴＬＣ用ライトバッファ３１２に振り分ける。ライトコマンドで指定されたＬＢＡが、ホスト２により書き込みモードと共に指定されたＬＢＡ範囲に含まれない場合、ユーティライゼーションによる決定に従ってもよい。
ルール（３）：  ライトコマンドで指定されたネームスペースＩＤが、ホスト２により書き込みモードと共に指定されたネームスペースＩＤである場合に、そのネームスペースＩＤに対してホスト２により直接的あるいは間接的に指定された書き込みモードが、ＳＬＣモード１５であればユーザデータをＳＬＣ用ライトバッファ３１１に振り分け、ＴＬＣモード１６であればユーザデータをＴＬＣ用ライトバッファ３１２に振り分ける。ライトコマンドで指定されたネームスペースＩＤが、ホスト２により書き込みモードと共に指定されたネームスペースＩＤに含まれない場合、ユーティライゼーションによる決定に従ってもよい。
ルール（４）：  ライトコマンドで指定されたマルチストリームのストリームＩＤが、ホスト２により書き込みモードと共に指定されたストリームＩＤである場合に、そのストリームＩＤに対してホスト２により直接的あるいは間接的に指定された書き込みモードが、ＳＬＣモード１５であればユーザデータをＳＬＣ用ライトバッファ３１１に振り分け、ＴＬＣモード１６であればユーザデータをＴＬＣ用ライトバッファ３１２に振り分ける。ライトコマンドで指定されたストリームＩＤが、ホスト２により書き込みモードと共に指定されたストリームＩＤに含まれない場合、ユーティライゼーションによる決定に従ってもよい。
【０１２４】
ホスト２は、各ルールを設定する設定コマンド、各ルールを取得する取得コマンド、および各ルールを削除する削除コマンドを、ＳＳＤ３に送信することができる。ルール（１）に対応するコマンドは、例えば、ＬＢＡ範囲（開始ＬＢＡと、終了ＬＢＡまたはサイズ）と、アクセス頻度（例えば、高／中／低）とを含む。ルール（２）に対応するコマンドは、例えば、ＬＢＡ範囲（開始ＬＢＡと、終了ＬＢＡまたはサイズ）と、書き込みモード（ＳＬＣ／ＭＬＣ／ＴＬＣ／ＱＬＣ）とを含む。ルール（３）に対応するコマンドは、例えば、ネームスペースＩＤと、書き込みモード（ＳＬＣ／ＭＬＣ／ＴＬＣ／ＱＬＣ）とを含む。ルール（４）に対応するコマンドは、例えば、ストリームＩＤと、書き込みモード（ＳＬＣ／ＭＬＣ／ＴＬＣ／ＱＬＣ）とを含む。
【０１２５】
モード切替部１２１は、ホスト２により送信された上記コマンドに応じて、ルールが記述されたテーブルに新たなルールに対応するエントリを追加することや、当該テーブルからあるルールに対応するエントリを削除することができる。
【０１２６】
より具体的には、モード切替部１２１は、ルール（１）の設定コマンドに応じて、ＬＢＡ範囲−アクセス頻度テーブル３６１に、新たなエントリを追加するか、あるいは既にあるエントリを更新する。そして、モード切替部１２１は、ＬＵＴ３３が更新された場合、あるいはＬＢＡ範囲−アクセス頻度テーブル３６１が更新された場合に、ブロック−低頻度アクセス割合テーブル３６３を更新する。モード切替部１２１は、更新（追加）されたＬＢＡ範囲に含まれるＬＢＡ毎に、ブロック−低頻度アクセス割合テーブル３６３内の、対応するブロックのエントリにおいて、高頻度アクセス有効データ量および低頻度アクセス有効データ量をアップ／ダウンし、低頻度アクセス割合を更新する。また、モード切替部１２１は、ルール（１）の削除コマンドに応じて、ＬＢＡ範囲−アクセス頻度テーブル３６１およびブロック−低頻度アクセス割合テーブル３６３から対応するエントリを削除し得る。
【０１２７】
モード切替部１２１は、例えば、ルール（２）の設定コマンドに応じて、ＬＢＡ範囲−書き込みモードテーブル３７１に新たなエントリを追加し、ルール（２）の削除コマンドに応じて、ＬＢＡ範囲−書き込みモードテーブル３７１から対応するエントリを削除する。ＬＢＡ範囲−書き込みモードテーブル３７１の各エントリは、例えば、ＬＢＡ範囲（開始ＬＢＡと、終了ＬＢＡまたはサイズ）と、書き込みモード（ＳＬＣ／ＭＬＣ／ＴＬＣ／ＱＬＣ）とを含む。
【０１２８】
モード切替部１２１は、例えば、ルール（３）の設定コマンドに応じて、ネームスペースＩＤ−書き込みモードテーブル３７２に新たなエントリを追加し、ルール（３）の削除コマンドに応じて、ネームスペースＩＤ−書き込みモードテーブル３７２から対応するエントリを削除する。ネームスペースＩＤ−書き込みモードテーブル３７２の各エントリは、ネームスペースＩＤと、書き込みモード（ＳＬＣ／ＭＬＣ／ＴＬＣ／ＱＬＣ）とを含む。
【０１２９】
モード切替部１２１は、例えば、ルール（４）の設定コマンドに応じて、ストリームＩＤ−書き込みモードテーブル３７３に新たなエントリを追加し、ルール（４）の削除コマンドに応じて、ストリームＩＤ−書き込みモードテーブル３７３から対応するエントリを削除する。ストリームＩＤ−書き込みモードテーブル３７３の各エントリは、例えば、ストリームＩＤと、書き込みモード（ＳＬＣ／ＭＬＣ／ＴＬＣ／ＱＬＣ）とを含む。
【０１３０】
なお、ルール（１）のＬＢＡのアクセス頻度は、上述したコマンドによってホスト２から与えられてもよいし、各ＬＢＡに対するリード、ライト等に基づいて、アクセス頻度統計処理部１２６によって取得されてされてもよい。
【０１３１】
ルール（４）について、コマンドにデータの寿命に関するヒント情報を付加して、ライトアンプリフィケーションファクタ（ＷＡＦ）を低下させることを目的としたマルチストリーム機能を、ＳＳＤ３はサポートすることができる。マルチストリーム機能がサポートされる場合、ホスト２は、同程度の寿命を有するデータをそれぞれ書き込むためのライトコマンド群に対して、第１ストリームＩＤを付加し、この寿命とは異なる寿命のデータをそれぞれ書き込むためのライトコマンド群に対して、第１ストリームＩＤとは異なる第２ストリームＩＤを付加する。
【０１３２】
そして、ホスト２によって、第１ストリームＩＤが付加されたライトコマンドに対応するユーザデータをＳＬＣモード１５で書き込み、第２ストリームＩＤが付加されたライトコマンドに対応するユーザデータをＴＬＣモード１６で書き込むことが指定されている場合、ライト制御部１２３は、上述したルール（４）に従って、第１ストリームＩＤが付加されて送信されたライトコマンドに対応するユーザデータをＳＬＣ用ライトバッファ３１１に振り分け、第２ストリームＩＤが付加されて送信されたライトコマンドに対応するユーザデータをＴＬＣ用ライトバッファ３１２に振り分ける。
【０１３３】
なお、ＳＬＣモード１５とＴＬＣモード１６との二種類の書き込みモードが用いられる場合のルールを例示したが、より多くの種類の書き込みモードが用いられる場合や、別の組み合わせの書き込みモードが用いられる場合にも、使用される書き込みモードに対応するライトバッファを設けて、同様のルールを規定することができる。また、上記のルールに従ったライトバッファへのユーザデータの振り分けと、ユーティライゼーションに基づいて設定された現在の書き込みモードに基づくライトバッファへのユーザデータの振り分けとは組み合わせて使用されてもよい。なお、ルール（２）〜（４）について、ホスト２は、ＬＢＡ範囲、ネームスペースＩＤ、またはストリームＩＤに対して、書き込みモード（ＳＬＣモード１５、ＴＬＣモード１６、またはＱＬＣモード１７）を指定するだけでなく、あるいは書き込みモードを指定することに加えて、ホスト２が期待するリード・ライト性能（高／低等）を指定することができる。つまり、書き込みモードを直接的に指定するだけでなく、書き込みモードを決定するための要素となるリード・ライト性能を指定することにより、書き込みモードを間接的に指定することができる。
【０１３４】
ライト制御部１２３は、このようなユーザデータの振り分けによって、いずれかのライトバッファ３１１，３１２内にＮＡＮＤ型フラッシュメモリ５の書き込み単位分のユーザデータが蓄積されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１（ＮＡＮＤ型フラッシュメモリチップ５０１のデータラッチ５０３）にその書き込み単位分のユーザデータを転送する。ＴＬＣ用ライトバッファ３１２からＮＡＮＤ型フラッシュメモリチップ５０１にユーザデータが書き込まれる場合、書き込み単位は、例えば３ページ分の９６ＫＢである。ＳＬＣ用ライトバッファ３１１からＮＡＮＤ型フラッシュメモリチップ５０１にユーザデータが書き込まれる場合、書き込み単位は、例えば１ページ分の３２ＫＢである。ライト制御部１２３は、ライトバッファ３１１，３１２内の、転送されたユーザデータが蓄積されていた領域を解放する。
【０１３５】
次いで、ライト制御部１２３は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムを指示する。ＳＬＣ用ライトバッファ３１１からＮＡＮＤ型フラッシュメモリチップ５０１にデータが転送された場合、ライト制御部１２３は、メモリセルアレイ５０２内のＳＬＣ用の書き込み先ブロック５７５へのＳＬＣモード１５でのプログラムを指示する。これにより、メモリセルアレイ５０２内のＳＬＣ用の書き込み先ブロック５７５に、データがＳＬＣモード１５でプログラムされる。また、ＴＬＣ用ライトバッファ３１２からデータが転送された場合、ライト制御部１２３は、メモリセルアレイ５０２内のＴＬＣ用の書き込み先ブロック５７６へのＴＬＣモード１６でのプログラムを指示する。これにより、メモリセルアレイ５０２内のＴＬＣ用の書き込み先ブロック５７６に、データがＴＬＣモード１６でプログラムされる。なお、あるＮＡＮＤ型フラッシュメモリチップ５０１に対する書き込み処理は、書き込み単位分のデータ毎に逐次に処理される。
【０１３６】
以上により、ライトバッファ３１に蓄積されるユーザデータ毎に（例えば、クラスタ単位のユーザデータ毎に）書き込みモードを切り替えることができる。
【０１３７】
ＧＣ制御部１２４も、ＧＣバッファ３２を用いて、上述したようなライト制御部１２３による書き込み動作と同様にして、ＮＡＮＤ型フラッシュメモリ５への書き込みを行うことができる。ＧＣ制御部１２４は、有効データを格納しているアクティブブロック群からガベージコレクションソースブロック（ＧＣソースブロック）を選択し、このＧＣソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたガベージコレクションデスティネーションブロック（ＧＣデスティネーションブロック）に書き込む。
【０１３８】
図２７は、書き込みモード毎にＧＣバッファ３２が管理される場合の例を示す。ＧＣバッファ３２には、例えば、ＴＬＣ用ＧＣバッファ３２２とＱＬＣ用ＧＣバッファ３２３とが設けられている。この場合、ＧＣ制御部１２４は、例えばクラスタ単位の有効データ毎に、書き込みモード（書き込み先ブロックの種類）を設定することができる。
【０１３９】
図２７に示すように、ＧＣ制御部１２４は、アクティブブロック群から、例えば、有効データ５８２が少ないブロックをＧＣソースブロック５８として選択する。ＧＣ制御部１２４は、例えば各有効データのＬＢＡのアクセス頻度に基づき、有効データをいずれかのＧＣバッファ３２２，３２３に振り分ける。ＧＣ制御部１２４は、例えば、有効データ５８２の内、アクセス頻度が高いデータ５８３をＴＬＣ用ＧＣバッファ３２２に蓄積し、アクセス頻度が低いデータ５８４をＱＬＣ用ＧＣバッファ３２３に蓄積する。なお、ＬＢＡのアクセス頻度は、各ＬＢＡに対するリード、ライト等に基づいて、アクセス頻度統計処理部１２６によって取得されている。
【０１４０】
ＧＣ制御部１２４は、ライト制御部１２３による書き込み動作と同様にして、各ＧＣバッファ３２２，３２３に蓄積された書き込み単位分のデータをＮＡＮＤ型フラッシュメモリ５に書き込む。より具体的には、ＧＣ制御部１２４は、いずれかのＧＣバッファ３２２，３２３内にＮＡＮＤ型フラッシュメモリ５の書き込み単位分のデータが蓄積されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１（ＮＡＮＤ型フラッシュメモリチップ５０１のデータラッチ５０３）にその書き込み単位分のデータを転送する。ＴＬＣ用ＧＣバッファ３２２からＮＡＮＤ型フラッシュメモリチップ５０１にデータが書き込まれる場合、書き込み単位は、例えば９６ＫＢである。ＱＬＣ用ＧＣバッファ３２３からＮＡＮＤ型フラッシュメモリチップ５０１にデータが書き込まれる場合、書き込み単位は、例えば１２８ＫＢである。ＧＣ制御部１２４は、転送されたデータが蓄積されていたＧＣバッファ３２２，３２３内の領域を解放する。
【０１４１】
次いで、ＧＣ制御部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１にプログラムを指示する。ＴＬＣ用ＧＣバッファ３２２からデータが転送された場合、ＧＣ制御部１２４は、ＴＬＣモード１６でのプログラムを指示する。これにより、ＴＬＣ用のＧＣデスティネーションブロック（ＴＬＣ書き込み先ブロック）にデータがＴＬＣモード１６でプログラムされる。また、ＱＬＣ用ＧＣバッファ３２３からデータが転送された場合、ＧＣ制御部１２４は、ＱＬＣモード１７でのプログラムを指示する。これにより、ＱＬＣ用のＧＣデスティネーションブロック（ＱＬＣ書き込み先ブロック）にデータがＱＬＣモード１７でプログラムされる。
【０１４２】
これにより、ガベージコレクション動作中も、クラスタ単位の有効データ毎に、適応的に書き込みモード（書き込み先ブロックの種類）を切り替えることができる。
【０１４３】
なお、図２７では、有効データのＬＢＡのアクセス頻度に基づいて、有効データをＧＣバッファ３２２，３２３に振り分けるルール（１）に従った例を示したが、同様にして、ルール（２）〜（４）のいずれかに従って、有効データをＧＣバッファ３２２，３２３に振り分けるようにすることもできる。例えば、ルール（２）に従う場合、ＧＣ制御部１２４は、有効データのＬＢＡがホスト２により書き込みモードと共に指定されたＬＢＡ範囲内であるか否かに応じて、有効データをＧＣバッファ３２２，３２３に振り分ける。ＧＣ制御部１２４は、例えば、有効データのＬＢＡがホスト２により指定されたＬＢＡ範囲内に含まれる場合、このＬＢＡ範囲に対してホスト２により指定された書き込みモードに基づいて、当該書き込みモードに対応するいずれかのＧＣバッファ３２２，３２３に有効データを蓄積する。
【０１４４】
ＧＣ制御部１２４は、有効データのＬＢＡのアクセス頻度に基づく、有効データのＧＣバッファへの振り分け（ルール（１））の他、上述したルール（２）〜（４）のいずれか１以上に従った有効データのＧＣバッファへの振り分けを任意に組み合わせることができる。
【０１４５】
図２８は、１つのＧＣバッファ３２が用いられ、ＧＣデスティネーションブロックとしてＱＬＣ書き込み先ブロックが確保されている場合を例示する。この場合、ＧＣ制御部１２４は、ＧＣソースブロック５９として、例えば有効データ５９２が少なく、且つ有効データのＬＢＡのアクセス頻度が低いデータ５９４の割合が高いブロックを選択する。ＧＣ制御部１２４は、このようなＧＣソースブロック５９を、例えば、ブロック−低頻度アクセス割合テーブル３６３を用いて取得する。ＧＣデスティネーションブロックがＱＬＣ書き込み先ブロックである場合、ＬＢＡのアクセス頻度が低いデータの割合が高いＧＣソースブロック５９が選択されることにより、例えば、ＱＬＣブロックのライト性能およびリード性能が低いことによる影響を低減することができる。
【０１４６】
より具体的には、アクセス頻度統計処理部１２６は、例えば、アクティブブロックの各々について、ブロックに含まれる各有効データのＬＢＡのアクセス頻度に基づき、アクセス頻度が高いデータ５９３とアクセス頻度が低いデータ５９４とを検出し、有効データ５９２の内の、アクセス頻度が低いデータ５９４の割合を算出する。ＧＣ制御部１２４は、算出された割合を用いて、アクティブブロック群からＧＣソースブロック５９を選択する。そして、ＧＣ制御部１２４は、有効データ５９２をＧＣバッファ３２に蓄積する。
【０１４７】
ＧＣ制御部１２４は、ライト制御部１２３による書き込み動作と同様にして、ＧＣバッファ３２に蓄積された書き込み単位分のデータをＮＡＮＤ型フラッシュメモリ５に書き込む。より具体的には、ＧＣ制御部１２４は、ＧＣバッファ３２内にＮＡＮＤ型フラッシュメモリ５の書き込み単位分（例えば、１２８ＫＢ）のデータが蓄積されたならば、ＮＡＮＤ型フラッシュメモリチップ５０１（ＮＡＮＤ型フラッシュメモリチップ５０１のデータラッチ５０３）にその書き込み単位分のデータを転送する。そして、ＧＣ制御部１２４は、転送されたデータが蓄積されていたＧＣバッファ３２内の領域を解放する。
【０１４８】
次いで、ＧＣ制御部１２４は、ＮＡＮＤ型フラッシュメモリチップ５０１にＱＬＣモード１７でのプログラムを指示する。これにより、ＧＣデスティネーションブロック（ＱＬＣ書き込み先ブロック）にデータがＱＬＣモード１７でプログラムされる。
【０１４９】
これにより、１つのＧＣバッファ３２が用いられる場合にも、ＧＣデスティネーションブロックの種類に応じて、適切なデータがそのブロックに書き込まれるように制御することができる。なお、ＧＣ制御部１２４は、同一のＧＣソースブロックからＧＣバッファ３２に、有効データを複数回に分けて蓄積するならば（例えば、１回目は高アクセス頻度の有効データのみを、２回目は低アクセス頻度の有効データのみを蓄積するならば）、アクセス頻度毎に書き込み先ブロックを分けることができる。
【０１５０】
図２９のフローチャートは、コントローラ４によって実行されるユーザデータの書き込み処理の手順を示す。ここでは、ＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込む書き込みモードがＳＬＣモード１５、ＴＬＣモード１６、およびＱＬＣモード１７のいずれか１つに設定される場合を例示する。
【０１５１】
まず、コントローラ４は、ホスト２からライトコマンドを受け付けたか否かを判定する（ステップＳ１１）。このライトコマンドは、ユーザデータをメモリシステムに書き込むことを要求するためのコマンドである。ライトコマンドを受け付けていない場合（ステップＳ１１のＮＯ）、ステップＳ１１に戻り、ホスト２からライトコマンドを受け付けたか否かが再度判定される。
【０１５２】
ホスト２からライトコマンドを受け付けた場合（ステップＳ１１のＹＥＳ）、コントローラ４は、ユーティライゼーションが第１閾値未満であるか否かを判定する（ステップＳ１２）。ユーティライゼーションが第１閾値未満である場合（ステップＳ１２のＹＥＳ）、コントローラ４は書き込みモードをＳＬＣモード１５に設定する（ステップＳ１３）。
【０１５３】
ユーティライゼーションが第１閾値以上である場合（ステップＳ１２のＮＯ）、コントローラ４は、ユーティライゼーションが第２閾値未満であるか否かを判定する（ステップＳ１４）。なお、第２閾値は第１閾値よりも大きい。ユーティライゼーションが第２閾値未満である場合（ステップＳ１４のＹＥＳ）、コントローラ４は書き込みモードをＴＬＣモード１６に設定する（ステップＳ１５）。
【０１５４】
ユーティライゼーションが第２閾値以上である場合（ステップＳ１４のＮＯ）、コントローラ４は書き込みモードをＱＬＣモード１７に設定する（ステップＳ１６）。
【０１５５】
ステップＳ１３、Ｓ１５、またはＳ１６の手順の後、すなわち、書き込みモードがＳＬＣモード１５、ＴＬＣモード１６、およびＱＬＣモード１７のいずれかに設定された後、コントローラ４は、設定された書き込みモードで、ＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込む（ステップＳ１７）。そして、コントローラ４は、この書き込みに応じてＬＵＴ３３を更新する（ステップＳ１８）。より具体的には、図２６を参照して上述したように、コントローラ４は、設定された書き込みモードに対応するいずれかのライトバッファ３１１，３１２，３１３にユーザデータを蓄積する。そして、コントローラ４は、ライトバッファ３１１，３１２，３１３に蓄積されているユーザデータの量が書き込み単位分に達しているならば、その書き込み単位分のデータを、設定された書き込みモードでＮＡＮＤ型フラッシュメモリ５に書き込み、ＬＵＴ３３を更新する。一方、蓄積されているユーザデータの量が書き込み単位分に達していなければ、ステップＳ１１の手順に戻る。なお、コントローラ４は、ホスト２によりフラッシュを指示された場合にも、ライトバッファ３１１，３１２，３１３に蓄積されているユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込み、ＬＵＴ３３を更新する。
【０１５６】
以上により、ユーティライゼーションに基づいて選択された書き込みモードで、ユーザデータをＮＡＮＤ型フラッシュメモリ５に格納することができる。
【０１５７】
図３０のフローチャートは、コントローラ４によって実行されるＬＵＴの書き込み処理の手順を示す。ここでは、ＮＡＮＤ型フラッシュメモリ５にＬＵＴを書き込む書き込みモードがＳＬＣモード１５とＱＬＣモード１７のいずれか１つに設定される場合を例示する。
【０１５８】
まず、コントローラ４は、ＬＵＴの書き込みタイミングであるか否かを判定する（ステップＳ２１）。ＬＵＴの書き込みタイミングは、任意のタイミングであり、例えば、ＬＵＴのダーティデータ量が書き込み単位を満たしたタイミング、ホスト２からフラッシュを指示されたタイミング、およびメモリシステムを電源オフするタイミングを含む。ＬＵＴの書き込みタイミングでない場合（ステップＳ２１のＮＯ）、ステップＳ２１に戻り、ＬＵＴの書き込みタイミングであるか否かが再度判定される。
【０１５９】
ＬＵＴの書き込みタイミングである場合（ステップＳ２１のＹＥＳ）、コントローラ４は、ユーティライゼーションが第３閾値未満であるか否かを判定する（ステップＳ２２）。ユーティライゼーションが第３閾値未満である場合（ステップＳ２２のＹＥＳ）、コントローラ４は書き込みモードをＳＬＣモード１５に設定する（ステップＳ２３）。一方、ユーティライゼーションが第３閾値以上である場合（ステップＳ２２のＮＯ）、コントローラ４は書き込みモードをＱＬＣモード１７に設定する（ステップＳ２４）。
【０１６０】
そして、コントローラ４は、設定された書き込みモードでＮＡＮＤ型フラッシュメモリ５にＬＵＴを書き込む（ステップＳ２５）。
【０１６１】
以上により、ユーティライゼーションに基づいて選択された書き込みモードで、ＬＵＴをＮＡＮＤ型フラッシュメモリ５に格納することができる。
【０１６２】
図３１は、コントローラ４によって実行されるガベージコレクション処理の手順を示す。ここでは、データをＮＡＮＤ型フラッシュメモリ５に書き込む書き込みモードがＳＬＣモード１５、ＴＬＣモード１６、およびＱＬＣモード１７のいずれか１つに設定され、またＧＣデスティネーションブロックとして、ＳＬＣブロックとＴＬＣブロックとＱＬＣブロックの三種類のブロックが同時に確保される場合を例示する。
【０１６３】
まず、コントローラ４は、ガベージコレクション動作の開始タイミングであるか否かを判定する（ステップＳ３０１）。コントローラ４は、例えば、フリーブロック数が閾値未満である場合に、ガベージコレクション動作の開始タイミングであると判別する。ガベージコレクション動作の開始タイミングでない場合（ステップＳ３０１のＮＯ）、ステップＳ３０１に戻り、ガベージコレクション動作の開始タイミングであるかが再度判定される。
【０１６４】
ガベージコレクション動作の開始タイミングである場合（ステップＳ３０１のＹＥＳ）、コントローラ４は、ユーティライゼーションが第１閾値未満であるか否かを判定する（ステップＳ３０２）。ユーティライゼーションが第１閾値未満である場合（ステップＳ３０２のＹＥＳ）、コントローラ４は書き込みモードをＳＬＣモード１５に設定する（ステップＳ３０３）。
【０１６５】
ユーティライゼーションが第１閾値以上である場合（ステップＳ３０２のＮＯ）、コントローラ４は、ユーティライゼーションが第２閾値未満であるか否かを判定する（ステップＳ３０４）。なお、第２閾値は第１閾値よりも大きい。ユーティライゼーションが第２閾値未満である場合（ステップＳ３０４のＹＥＳ）、コントローラ４は書き込みモードをＴＬＣモード１６に設定する（ステップＳ３０５）。また、ユーティライゼーションが第２閾値以上である場合（ステップＳ３０４のＮＯ）、コントローラ４は書き込みモードをＱＬＣモード１７に設定する（ステップＳ３０６）。
【０１６６】
ステップＳ３０３、Ｓ３０５、またはＳ３０６の手順の後、すなわち、書き込みモードがＳＬＣモード１５、ＴＬＣモード１６、およびＱＬＣモード１７のいずれかに設定された後、コントローラ４はＧＣソースブロックを選択する（ステップＳ３０７）。選択されるＧＣソースブロックは、例えば、有効データが少ないブロックである。コントローラ４は、選択されたＧＣソースブロック内の有効データをＧＣバッファ３２にコピー（リード）する（ステップＳ３０８）。
【０１６７】
次いで、コントローラ４は、ＧＣバッファ３２に、設定された現在の書き込みモードに対応する書き込み単位分（ページ分）のデータが蓄積されているか否かを判定する（ステップＳ３０９）。より具体的には、コントローラ４は、現在の書き込みモードがＳＬＣモード１５であれば、ＧＣバッファ３２に１ページ分（３２ＫＢ）のデータが蓄積されているか否かを判定し、現在の書き込みモードがＴＬＣモード１６であれば、ＧＣバッファ３２に３ページ分（９６ＫＢ）のデータが蓄積されているか否かを判定し、また現在の書き込みモードがＱＬＣモード１７であれば、ＧＣバッファ３２に４ページ分（１２８ＫＢ）のデータが蓄積されているか否かを判定する。
【０１６８】
ＧＣバッファ３２に、現在の書き込みモードに対応する書き込み単位分（ページ分）のデータが蓄積されている場合（ステップＳ３０９のＹＥＳ）、コントローラ４は、ＧＣバッファ３２から、ＧＣデスティネーションブロックに、現在の書き込みモードでデータを書き込む（ステップＳ３１０）。そして、コントローラ４はこの書き込みに応じてＬＵＴを更新する（ステップＳ３１１）。一方、ＧＣバッファ３２に、現在の書き込みモードに対応するページ分のデータが蓄積されていない場合には（ステップＳ３０９のＮＯ）、ステップＳ３０７の手順に戻る。
【０１６９】
そして、コントローラ４は、ガベージコレクション動作を終了するか否かを判定する（ステップＳ３１２）。コントローラ４は、例えば、十分な数のフリーブロックが存在する場合に、ガベージコレクション動作を終了すると判定する。ガベージコレクション動作を終了すると判定した場合（ステップＳ３１２のＹＥＳ）、処理を終了する。ガベージコレクション動作を続行すると判定した場合（ステップＳ３１２のＮＯ）、ステップＳ３０７に戻り、ＧＣソースブロックがさらに選択される。
【０１７０】
以上により、ガベージコレクション動作においても、ユーティライゼーションに基づいて選択された書き込みモードで、データをＮＡＮＤ型フラッシュメモリ５に格納することができる。
【０１７１】
なお、コントローラ４は、ＧＣソースブロックの有効データを、その有効データが書き込まれていた特定の書き込みモードで、ＧＣデスティネーションブロックに書き込んでもよい。この場合、コントローラ４は、ＧＣソースブロックの有効データを、その特定の書き込みモードに対応するいずれかのＧＣバッファ３２１，３２２，３２３に蓄積する。そして、コントローラ４は、ＧＣバッファ３２１，３２２，３２３に書き込み単位分のデータが蓄積されている場合、ＧＣデスティネーションブロック（ＳＬＣ用のＧＣデスティネーションブロック、ＴＬＣ用のＧＣデスティネーションブロック、またはＱＬＣ用のＧＣデスティネーションブロック）にその特定の書き込みモードで書き込む。これにより、ＧＣソースブロック内の有効データを、ＧＣソースブロックにおいて書き込まれていた書き込みモードをそのまま維持して、ＧＣデスティネーションブロックに格納することができる。
【０１７２】
なお、図３１において破線の枠内に示したステップＳ３０７からステップＳ３１１までの手順は、図３２のフローチャートに示す手順と置き換えられてもよい。
【０１７３】
図３２のフローチャートは、有効データのＬＢＡのアクセス頻度に基づいて書き込みモードが選択される動作を含むガベージコレクション処理の手順を示す。なお、有効データのＬＢＡのアクセス頻度は、例えばクラスタ単位で判定され得る。ここでは、図３１のフローチャートに示したガベージコレクション処理に、アクセス頻度が高いＬＢＡのデータをＳＬＣモード１５でＮＡＮＤ型フラッシュメモリ５に書き込む手順が加えられる場合を例示する。
【０１７４】
まず、コントローラ４は、ＧＣソースブロックを選択する（ステップＳ３５１）。コントローラ４は、選択されたＧＣソースブロックから有効データを選択する（ステップＳ３５２）。そして、コントローラ４は、その有効データのＬＢＡのアクセス頻度が第４閾値よりも大きいか否かを判定する（ステップＳ３５３）。
【０１７５】
アクセス頻度が第４閾値よりも大きい場合（ステップＳ３５３のＹＥＳ）、コントローラ４は、その有効データをＳＬＣ用ＧＣバッファ３２１にコピー（リード）する（ステップＳ３５４）。コントローラ４は、ＳＬＣ用ＧＣバッファ３２１に書き込み単位（１ページ）分の３２ＫＢのデータが蓄積されているか否かを判定する（ステップＳ３５５）。ＳＬＣ用ＧＣバッファ３２１に１ページ分のデータが蓄積されている場合（ステップＳ３５５のＹＥＳ）、コントローラ４は、ＳＬＣ用ＧＣバッファ３２１からＧＣデスティネーションブロック（ＳＬＣ書き込み先ブロック）に、ＳＬＣモード１５でデータを書き込み（ステップＳ３５６）、ＬＵＴを更新する（ステップＳ３５７）。ＳＬＣ用ＧＣバッファ３２１に１ページ分のデータが蓄積されていない場合には（ステップＳ３５５のＮＯ）、ステップＳ３５１の手順に戻る。
【０１７６】
アクセス頻度が第４閾値以下である場合（ステップＳ３５３のＮＯ）、コントローラ４は、設定された現在の書き込みモードがいずれのモードであるかに応じて処理を分岐する（ステップＳ３５８）。現在の書き込みモードがＳＬＣモード１５である場合（ステップＳ３５８のＳＬＣ）、ステップＳ３５４の手順に進み、有効データをＳＬＣモード１５でＮＡＮＤ型フラッシュメモリ５に書き込むための手順が実行される。
【０１７７】
現在の書き込みモードがＴＬＣモード１６である場合（ステップＳ３５８のＴＬＣ）、コントローラ４は、有効データをＴＬＣ用ＧＣバッファ３２２にコピー（リード）する（ステップＳ３５９）。コントローラ４は、ＴＬＣ用ＧＣバッファ３２２に書き込み単位（３ページ）分の９６ＫＢのデータが蓄積されているか否かを判定する（ステップＳ３６０）。ＴＬＣ用ＧＣバッファ３２２に３ページ分のデータが蓄積されている場合（ステップＳ３６０のＹＥＳ）、コントローラ４は、ＴＬＣ用ＧＣバッファ３２２からＧＣデスティネーションブロック（ＴＬＣ書き込み先ブロック）に、ＴＬＣモード１６でデータを書き込み（ステップＳ３６１）、ＬＵＴを更新する（ステップＳ３６２）。ＴＬＣ用ＧＣバッファ３２２に３ページ分のデータが蓄積されていない場合には（ステップＳ３６０のＮＯ）、ステップＳ３５１の手順に戻る。
【０１７８】
さらに、現在の書き込みモードがＱＬＣモード１７である場合（ステップＳ３５８のＱＬＣ）、コントローラ４は、有効データをＱＬＣ用ＧＣバッファ３２３にコピー（リード）する（ステップＳ３６３）。コントローラ４は、ＱＬＣ用ＧＣバッファ３２３に書き込み単位（４ページ）分の１２８ＫＢのデータが蓄積されているか否かを判定する（ステップＳ３６４）。ＱＬＣ用ＧＣバッファ３２３に４ページ分のデータが蓄積されている場合（ステップＳ３６４のＹＥＳ）、コントローラ４は、ＱＬＣ用ＧＣバッファ３２３からＧＣデスティネーションブロック（ＱＬＣ書き込み先ブロック）に、ＱＬＣモード１７でデータを書き込み（ステップＳ３６５）、ＬＵＴを更新する（ステップＳ３６６）。ＱＬＣ用ＧＣバッファ３２３に４ページ分のデータが蓄積されていない場合には（ステップＳ３６４のＮＯ）、ステップＳ５１の手順に戻る。
【０１７９】
選択された有効データがＧＣバッファ３２にコピー（リード）されたか、あるいはＧＣデスティネーションブロックに書き込まれた後、コントローラ４は、ＧＣソースブロックに別の有効データが存在しているか否かを判定する（ステップＳ３６７）。ＧＣソースブロックに別の有効データが存在している場合（ステップＳ３６７のＹＥＳ）、ステップＳ３５２に戻り、その別の有効データに関する処理が続行される。ＧＣソースブロックに別の有効データが存在しない場合（ステップＳ３６７のＮＯ）、図３１のフローチャートに示したステップＳ３１２に進む。
【０１８０】
このように、コントローラ４は、ガベージコレクション動作中に、アクセス頻度が高いＬＢＡのデータを、ＳＬＣモード１５でＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
【０１８１】
なお、コントローラ４は、ガベージコレクション動作時以外でも、特定の物理ブロックのデータを、あるいは特定のＬＢＡのデータを、別の書き込みモードでＮＡＮＤ型フラッシュメモリ５に書き込むことができる。例えば、ある物理ブロック（ＱＬＣブロック）のアクセス頻度が高いことが検出された場合に、コントローラ４は、この物理ブロック内のデータをＳＬＣブロックに書き込むための処理を行う。この処理の具体的な手順は、例えば、図３２のフローチャートに示した手順におけるＧＣソースブロックを、アクセス頻度が高い物理ブロックに置き換えた手順である。
【０１８２】
また例えば、あるＬＢＡ（例えば、ＱＬＣモード１７で書き込まれているデータのＬＢＡ）のアクセス頻度が高いことが検出された場合に、コントローラ４は、このＬＢＡに対応する物理アドレスのデータ（クラスタ単位のデータ）をＳＬＣブロックに書き込むための処理を行う。コントローラ４は、このクラスタ単位のデータをＳＬＣ用ＧＣバッファ３２１に振り分ける（蓄積する）ことにより、当該データがＳＬＣブロックに書き込まれるようにする。
【０１８３】
図３３のフローチャートは、ホスト２により指定された論理アドレス範囲のデータが、ホスト２によりその論理アドレス範囲に対して指定された書き込みモードで、ＮＡＮＤ型フラッシュメモリ５に書き込まれる動作を含む書き込み処理の手順を示す。ホスト２は、任意のタイミングで、特定の書き込みモードで書き込まれるべきデータの論理アドレス（あるいは論理アドレス範囲）を、コントローラ４に通知することができる。ホスト２は、この通知を用いて、例えば、アクセス頻度が高い論理アドレス範囲のデータを、高速な読み出しおよび書き込みが可能であるＳＬＣモード１５やＴＬＣモード１６で書き込むことや、アクセス頻度が低い論理アドレス範囲のデータを、データ密度が高いＱＬＣモード１７で書き込むことをコントローラ４に要求することができる。メモリシステムのＬＢＡ範囲−書き込みモードテーブル３７１内に保持する論理アドレス範囲は０個以上である。なお、ホスト２は、論理アドレス範囲に対して、書き込みモード（ＳＬＣモード１５、ＴＬＣモード１６、またはＱＬＣモード１７）を指定するだけでなく、あるいは書き込みモードを指定することに加えて、ホスト２が期待するリード・ライト性能（高／低等）を指定することができる。ここでは、クラスタ単位のデータ毎に、書き込みモードがＳＬＣモード１５、ＴＬＣモード１６、およびＱＬＣモード１７のいずれかに設定され、また書き込み先ブロックとして、ＳＬＣブロックとＴＬＣブロックとＱＬＣブロックの三種類のブロックが同時に確保される場合を例示する。
【０１８４】
より具体的には、まず、コントローラ４は、ホスト２からライトコマンドを受け付けたか否かを判定する（ステップＳ４０１）。ライトコマンドを受け付けていない場合（ステップＳ４０１のＮＯ）、ステップＳ４０１に戻り、ホスト２からライトコマンドを受け付けたか否かが再度判定される。
【０１８５】
ホスト２からライトコマンドを受け付けた場合（ステップＳ４０１のＹＥＳ）、コントローラ４は、そのライトコマンドで指定された論理アドレスが、ホスト２により指定された論理アドレス範囲に含まれるか否かを判定する（ステップＳ４０２）。ライトコマンドで指定された論理アドレスが、ホスト２により指定された論理アドレス範囲に含まれない場合（ステップＳ４０２のＮＯ）、コントローラ４は、物理アドレスにマッピングされている論理アドレスの総和に基づく書き込み処理を行う（ステップＳ４１６）。この書き込み処理は、図２９のフローチャートに示したステップＳ１２からステップＳ１８までの手順に相当する。
【０１８６】
ライトコマンドで指定された論理アドレスが、ホスト２により指定された論理アドレス範囲に含まれる場合（ステップＳ４０２のＹＥＳ）、コントローラ４は、その論理アドレス範囲に対して、ホスト２により指定された書き込みモードに応じて処理を分岐する（ステップＳ４０３）。
【０１８７】
ホスト２により指定された書き込みモードがＳＬＣモード１５である場合（ステップＳ４０３のＳＬＣ）、コントローラ４は、ホスト２から受信したユーザデータをＳＬＣ用ライトバッファ３１１に格納する（ステップＳ４０４）。そして、コントローラ４は、ＳＬＣ用ライトバッファ３１１に書き込み単位（１ページ）分の３２ＫＢのデータが蓄積されているか否かを判定する（ステップＳ４０５）。ＳＬＣ用ライトバッファ３１１に１ページ分のデータが蓄積されている場合（ステップＳ４０５のＹＥＳ）、コントローラ４は、ＳＬＣ用ライトバッファ３１１から書き込み先ブロック（ＳＬＣ書き込み先ブロック）に、ＳＬＣモード１５でデータを書き込み（ステップＳ４０６）、ＬＵＴを更新する（ステップＳ４０７）。ＳＬＣ用ライトバッファ３１１に１ページ分のデータが蓄積されていない場合には（ステップＳ４０５のＮＯ）、ステップＳ４０６およびＳ４０７の手順がスキップされる。
【０１８８】
ホスト２により指定された書き込みモードがＴＬＣモード１６である場合（ステップＳ４０３のＴＬＣ）、コントローラ４は、ホスト２から受信したユーザデータをＴＬＣ用ライトバッファ３１２に格納する（ステップＳ４０８）。そして、コントローラ４は、ＴＬＣ用ライトバッファ３１２に書き込み単位（３ページ）分の９６ＫＢのデータが蓄積されているか否かを判定する（ステップＳ４０９）。ＴＬＣ用ライトバッファ３１２に３ページ分のデータが蓄積されている場合（ステップＳ４０９のＹＥＳ）、コントローラ４は、ＴＬＣ用ライトバッファ３１２から書き込み先ブロック（ＴＬＣ書き込み先ブロック）に、ＴＬＣモード１６でデータを書き込み（ステップＳ４１０）、ＬＵＴを更新する（ステップＳ４１１）。ＴＬＣ用ライトバッファ３１２に３ページ分のデータが蓄積されていない場合には（ステップＳ４０９のＮＯ）、ステップＳ４１０およびＳ４１１の手順がスキップされる。
【０１８９】
また、ホスト２により指定された書き込みモードがＱＬＣモード１７である場合（ステップＳ４０３のＱＬＣ）、コントローラ４は、ホスト２から受信したユーザデータをＱＬＣ用ライトバッファ３１３に格納する（ステップＳ４１２）。そして、コントローラ４は、ＱＬＣ用ライトバッファ３１３に書き込み単位（４ページ）分の１２８ＫＢのデータが蓄積されているか否かを判定する（ステップＳ４１３）。ＱＬＣ用ライトバッファ３１３に４ページ分のデータが蓄積されている場合（ステップＳ４１３のＹＥＳ）、コントローラ４は、ＱＬＣ用ライトバッファ３１３から書き込み先ブロック（ＱＬＣ書き込み先ブロック）に、ＱＬＣモード１７でデータを書き込み（ステップＳ４１４）、ＬＵＴを更新する（ステップＳ４１５）。ＱＬＣ用ライトバッファ３１３に４ページ分のデータが蓄積されていない場合には（ステップＳ４１３のＮＯ）、ステップＳ４１４およびＳ４１５の手順がスキップされる。
【０１９０】
以上により、ホスト２により指定された論理アドレス範囲のデータを、ホスト２により指定された書き込みモードでＮＡＮＤ型フラッシュメモリ５に書き込むことができる。また、ガベージコレクション動作中も上記の手順と同様にして、ホスト２により指定された論理アドレス範囲のデータを、ホスト２により指定された書き込みモードでＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
（第２実施形態）
第１実施形態では、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータの書き込みモードが、物理アドレス空間にマッピングされている論理アドレスの総数（ユーティライゼーション）に基づいて切り替えられる。これに対して、第２実施形態では、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータの書き込みモードが、ＮＡＮＤ型フラッシュメモリ５全体の疲弊度に基づいて切り替えられる。
【０１９１】
第２実施形態に係るＳＳＤ３の構成は第１実施形態のＳＳＤ３と同様であり、第２実施形態と第１実施形態とでは、モード切替部１２１によって実行される処理の手順のみが異なる。以下、第１実施形態と異なる点のみを説明する。
【０１９２】
モード切替部１２１は、ＮＡＮＤ型フラッシュメモリ５全体の疲弊度に基づいて、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータの書き込みモードを切り替える。この全体の疲弊度の指標としては、例えば、ＮＡＮＤ型フラッシュメモリ５に含まれる各ブロックのＰ／Ｅサイクル数に基づく統計値が用いられる。この統計値は、図４に示したブロック−Ｐ／Ｅサイクル数テーブル３５２を用いて、ＮＡＮＤ型フラッシュメモリ５の全ブロックそれぞれのＰ／Ｅサイクル数を統計処理することにより算出され、疲弊度３５１としてＤＲＡＭ６に格納されてもよい。
【０１９３】
図３４に示すように、モード切替部１２１は、例えば、ＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数を取得し、これらＰ／Ｅサイクル数を統計処理することにより統計値を算出する。モード切替部１２１は、ブロック−Ｐ／Ｅサイクル数テーブル３５２から、ＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数を取得してもよい。また、この統計値は、例えば、ＮＡＮＤ型フラッシュメモリ５において実行されたＰ／Ｅサイクルの総数、つまりＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数の合計値であってもよいし、ＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数の平均値であってもよい。ここで、ＮＡＮＤ型フラッシュメモリ５内の全ブロックとは、管理データのみを格納するブロックを除く全ブロックであってもよい。なお、ＮＡＮＤ型フラッシュメモリ５内のブロックが、ＳＬＣ専用ブロックグループ１８とＴＬＣ／ＱＬＣ共用ブロックグループ１９に分けて使用される場合のように、ブロックの用途が分かれている場合には、ＳＬＣ専用ブロックグループ１８に属する全ブロックの統計値と、ＴＬＣ／ＱＬＣ共用ブロックグループ１９に属する全ブロックの統計値とが別個に算出される。また、統計値は、ＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数の最大値や最小値であってもよい。
【０１９４】
モード切替部１２１は、算出されたＰ／Ｅサイクル数の統計値に基づいて、書き込みモードを動的に切り替える。
【０１９５】
図３５を参照して、Ｐ／Ｅサイクル数の統計値に基づいて、書き込みモードがＴＬＣモード１６とＱＬＣモード１７との間で切り替えられる例について説明する。不揮発性メモリに対して許容できる最大Ｐ／Ｅサイクル数は限られている。そのため、ＳＳＤ３には、その想定されるＳＳＤ３の寿命期間（例えば、５年）に基づいて、使用開始からの経過時間に対する、理想的なＰ／Ｅサイクル数の統計値を示す計画線８１が設定される。モード切替部１２１は、例えば、実際のＰ／Ｅサイクル数の統計値８２が、この計画線８１からのずれがマージンの範囲内となるように、書き込みモードを制御する。
【０１９６】
図３５に示すように、使用開始時（Ｔ０）には、書き込みモードとして、例えばＴＬＣモード１６が設定される。データがＴＬＣモード１６で書き込まれる期間中に、Ｐ／Ｅサイクル数の統計値８２が、計画線８１からのずれがマージンの上限である８１Ａに達したとき（Ｔ１）、モード切替部１２１は、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替える。これにより、リード・ライト性能が低くなるものの、Ｐ／Ｅサイクル数の増加を抑制することができる（寿命優先）。
【０１９７】
すなわち、書き込みモードがＴＬＣモード１６である場合には、１つのブロック当たりに書き込み可能なデータ量は、書き込みモードがＱＬＣモード１７である場合の３／４である。書き込みモードがＱＬＣモード１７に切り替えられると、１つのブロック当たりに書き込み可能なデータ量は、ＱＬＣモード１７におけるブロックサイズの２５パーセント分だけ増える。したがって、ＱＬＣモード１７における書き込み可能データ量はＴＬＣモード１６における書き込み可能データ量の４／３倍になるので、書き込みモードの切り替え前のホスト／ＧＣ書き込み量と書き込みモードの切り替え後のホスト／ＧＣ書き込み量が同じであれば、発生するＰ／Ｅの頻度が３／４になる。この結果、Ｐ／Ｅサイクル数の増加を抑制することができる。さらに、同一のユーティライゼーションに対して、ＮＡＮＤ型フラッシュメモリ５が記憶可能な量（物理容量）が増加すると、余裕率が向上したのと同様に、ＧＣソースブロックの有効データ量が低下するので、ガベージコレクションの頻度が下がり、ＷＡＦが低下する。その結果、Ｐ／Ｅサイクル数の増加を抑制することができる。なお、表記容量と物理容量（実装容量）の差を余裕容量、表記容量に対する余裕容量の比率を余裕率と呼ぶ。一般に、余裕率が高いほうが、ガベージコレクションにおけるフリーブロックの生成効率が上がるため、ＷＡＦが低下する。
【０１９８】
そして、データがＱＬＣモード１７で書き込まれる期間中に、Ｐ／Ｅサイクル数の統計値８２が、計画線８１からのずれがマージンの下限である８１Ｂに達したとき（Ｔ２）、モード切替部１２１は、書き込みモードをＱＬＣモード１７からＴＬＣモード１６に切り替える。これにより、Ｐ／Ｅサイクル数の増加率は上昇するものの、リード・ライト性能を高くすることができる（性能優先）。この増加率は、単位時間当たりのＰ／Ｅサイクル数によって表される。
【０１９９】
同様に、データがＴＬＣモード１６で書き込まれる期間中に、Ｐ／Ｅサイクル数の統計値８２が、計画線８１からのずれがマージンの上限である８１Ａに達したとき（Ｔ３）、モード切替部１２１は、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替える。
【０２００】
このような書き込みモードの切り替えにより、Ｐ／Ｅサイクル数の統計値は、計画線８１からのずれがマージンの範囲内となるように制御され、想定される寿命までＳＳＤ３を使用可能にすることができる。
【０２０１】
なお、Ｐ／Ｅのストレス量は、ＳＬＣモード１５とＴＬＣモード１６とＱＬＣモード１７とでそれぞれ異なり、メモリセル当たりに書き込まれるビット数が多いほど大きい。そのため、モード切替部１２１は、Ｐ／Ｅサイクル数だけでなく、いずれの書き込みモードが用いられたかに基づくストレス量や温度の影響も考慮して、ＮＡＮＤ型フラッシュメモリ５の各ブロックの疲弊度を算出し、ＮＡＮＤ型フラッシュメモリ５の全ブロックそれぞれの疲弊度を統計処理して算出された、ＮＡＮＤ型フラッシュメモリ５全体の疲弊度の統計値に基づいて書き込みモードを制御してもよい。例えば、同じ１回のＰ／Ｅサイクルであっても、低温で行われた場合は、高温で行われた場合よりも、より疲弊が進行する。ブロック−Ｐ／Ｅサイクル数テーブル３５２は、Ｐ／Ｅサイクル数に替えて、あるいはＰ／Ｅサイクル数に加えて、ブロック毎の疲弊度を管理してもよい。
【０２０２】
ここで、書き込みモードがＳＬＣモード１５とＱＬＣモード１７との間で切り替えられる場合を例示して、ＱＬＣモード１７の利用がＳＳＤ３の寿命期間中にホスト２からＳＳＤ３に対して書き込み可能な総データ量を表す指標であるＴＢＷ（Ｔｏｔａｌ  Ｂｙｔｅ  Ｗｒｉｔｔｅｎ）を増加させることができる理由について説明する。
【０２０３】
（１）上述したように、ＳＬＣバッファを利用する方法では、書き込みモードがＳＬＣモード１５である場合、ユーザデータは、まず、ＳＬＣモード１５でＳＬＣバッファに書き込まれ、その後、ガベージコレクション等によりＳＬＣバッファ内のユーザデータがＱＬＣモード１７でＱＬＣ用ブロック（ＳＬＣバッファ以外のブロック）に書き込まれる場合がある。一方、書き込みモードがＱＬＣモード１７である場合、ユーザデータは、ＳＬＣバッファを経由せずに、ＱＬＣ用ブロックに直接書き込まれる（直書きされる）。前者と後者を比較すると、ＳＬＣバッファの容量を超えるような広域のアクセスパターンの場合は、ＳＬＣバッファへの書き込みが発生しない分、後者のほうが（ＳＬＣ、ＱＬＣを合計して考えた場合の）ＷＡＦが低い。
【０２０４】
（２）同一の量のデータの書き込みを行う場合、ＳＬＣよりもＱＬＣのほうがブロック当たりの容量が大きいため、ＱＬＣのほうが消去の頻度が少なくて済む（ＳＬＣの１／４になる）。
【０２０５】
（３）上述したように、一般に、余裕率が高いほうが、ガベージコレクションにおけるフリーブロックの生成効率が上がるため、ＷＡＦが下がる。ＱＬＣモードを使うことで、物理容量を増やすことができるため、ＷＡＦが下がる。
【０２０６】
同一ユーザデータ量のホスト２からの書き込みに対して、ＷＡＦが大きいほうが、より多くのＮＡＮＤ型フラッシュメモリ５のＰ／Ｅサイクル数を必要とする。ＮＡＮＤ型フラッシュメモリ５の許容できる最大Ｐ／Ｅサイクル数が一定であるとすると、ＷＡＦが小さいほうが、ＳＳＤ３が寿命を迎えるまでに、より多くのユーザデータのホスト書込み（すなわちＴＢＷ）を受けることができる。
【０２０７】
なお、図３５で説明したＰ／Ｅサイクル数に基づく書き込みモード切替は、図１６から図１８および図２１で説明したユーティライゼーションに基づく書き込みモード切替と組み合わせて使用することができる。この場合、モード切替部１２１は、たとえユーティライゼーションがＴＬＣモード１６の使用を許容する範囲に収まっている場合であっても、Ｐ／Ｅサイクル数が上述のマージンの上限である８１Ａに達したならば、書き込みモードをＴＬＣモード１６からＱＬＣモード１７に切り替える。
【０２０８】
図３６のフローチャートは、コントローラ４によって実行されるユーザデータの書き込み処理の手順を示す。ここでは、ユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込む書き込みモードがＴＬＣモード１６とＱＬＣモード１７のいずれか一方に設定される場合を例示する。
【０２０９】
まず、コントローラ４は、ホスト２からライトコマンドを受け付けたか否かを判定する（ステップＳ５１）。ライトコマンドを受け付けていない場合（ステップＳ５１のＮＯ）、ステップＳ５１に戻り、ホスト２からライトコマンドを受け付けたか否かが再度判定される。
【０２１０】
ホスト２からライトコマンドを受け付けた場合（ステップＳ５１のＹＥＳ）、コントローラ４は、現在の書き込みモードがいずれのモードであるかに応じて処理を分岐する（ステップＳ５２）。現在の書き込みモードがＴＬＣモード１６である場合（ステップＳ５２のＴＬＣ）、コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のＰ／Ｅサイクル数の統計値が第５閾値以上であるか否かを判定する（ステップＳ５３）。Ｐ／Ｅサイクル数の統計値には、ＮＡＮＤ型フラッシュメモリ５において実行されたＰ／Ｅサイクルの総数、つまりＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数の合計値が用いられてもよいし、あるいはＮＡＮＤ型フラッシュメモリ５内の全ブロックそれぞれのＰ／Ｅサイクル数の平均値、最大値、または最小値であってもよい。第５閾値は、例えば、ＳＳＤ３の使用開始からの経過時間に応じて変動（例えば、増加）する。Ｐ／Ｅサイクル数の統計値が第５閾値以上である場合（ステップＳ５３のＹＥＳ）、コントローラ４は書き込みモードをＱＬＣモード１７に設定する（ステップＳ５４）。一方、Ｐ／Ｅサイクル数の統計値が第５閾値未満である場合（ステップＳ５３のＮＯ）、ステップＳ５４の手順がスキップされ、書き込みモードはＴＬＣモード１６に維持される。
【０２１１】
また、現在の書き込みモードがＱＬＣモード１７である場合（ステップＳ５２のＱＬＣ）、コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のＰ／Ｅサイクル数の統計値が第６閾値未満であるか否かを判定する（ステップＳ５５）。なお、第６閾値は、第５閾値よりも小さく、例えば、ＳＳＤ３の使用開始からの経過時間に応じて変動（例えば、増加）する。Ｐ／Ｅサイクル数の統計値が第６閾値未満である場合（ステップＳ５５のＹＥＳ）、コントローラ４は書き込みモードをＴＬＣモード１６に設定する（ステップＳ５６）。一方、Ｐ／Ｅサイクル数の統計値が第６閾値以上である場合（ステップＳ５５のＮＯ）、ステップＳ５６の手順がスキップされ、書き込みモードはＱＬＣモード１７に維持される。
【０２１２】
書き込みモードがＴＬＣモード１６とＱＬＣモード１７のいずれかに設定または維持された後、コントローラ４は、設定された書き込みモードで、ＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込む（ステップＳ５７）。そして、コントローラ４は、この書き込みに応じてＬＵＴ３３を更新する（ステップＳ５８）。
【０２１３】
以上により、Ｐ／Ｅサイクル数の統計値に基づいて選択された書き込みモードで、ユーザデータをＮＡＮＤ型フラッシュメモリ５に格納することができる。
【０２１４】
図３７のフローチャートは、コントローラ４によって実行されるＬＵＴの書き込み処理の手順を示す。ここでは、ＬＵＴをＮＡＮＤ型フラッシュメモリ５に書き込む書き込みモードがＳＬＣモード１５とＱＬＣモード１７のいずれか一方に設定される場合を例示する。
【０２１５】
まず、コントローラ４は、ＬＵＴの書き込みタイミングであるか否かを判定する（ステップＳ６１）。ＬＵＴの書き込みタイミングでない場合（ステップＳ６１のＮＯ）、ステップＳ６１に戻り、ＬＵＴの書き込みタイミングであるか否かが再度判定される。
【０２１６】
ＬＵＴの書き込みタイミングである場合（ステップＳ６１のＹＥＳ）、コントローラ４は、現在の書き込みモードがいずれのモードであるかに応じて処理を分岐する（ステップＳ６２）。現在の書き込みモードがＳＬＣモード１５である場合（ステップＳ６２のＳＬＣ）、コントローラ４は、Ｐ／Ｅサイクル数の統計値が第７閾値以上であるか否かを判定する（ステップＳ６３）。Ｐ／Ｅサイクル数の統計値が第７閾値以上である場合（ステップＳ６３のＹＥＳ）、コントローラ４は書き込みモードをＱＬＣモード１７に設定する（ステップＳ６４）。一方、Ｐ／Ｅサイクル数の統計値が第７閾値未満である場合（ステップＳ６３のＮＯ）、ステップＳ６４の手順がスキップされ、書き込みモードはＳＬＣモード１５に維持される。
【０２１７】
また、現在の書き込みモードがＱＬＣモード１７である場合（ステップＳ６２のＱＬＣ）、コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のＰ／Ｅサイクル数の統計値が第８閾値未満であるか否かを判定する（ステップＳ６５）。なお、第８閾値は、第７閾値よりも小さく、例えば、ＳＳＤ３の使用開始からの経過時間に応じて変動（例えば、増加）する。Ｐ／Ｅサイクル数の統計値が第８閾値未満である場合（ステップＳ６５のＹＥＳ）、コントローラ４は書き込みモードをＳＬＣモード１５に設定する（ステップＳ６６）。一方、Ｐ／Ｅサイクル数の統計値が第８閾値以上である場合（ステップＳ６５のＮＯ）、ステップＳ６６の手順がスキップされ、書き込みモードはＱＬＣモード１７に維持される。
【０２１８】
書き込みモードがＳＬＣモード１５とＱＬＣモード１７のいずれかに設定または維持された後、コントローラ４は、設定された書き込みモードでＮＡＮＤ型フラッシュメモリ５にＬＵＴを書き込む（ステップＳ６７）。
【０２１９】
以上により、Ｐ／Ｅサイクル数の統計値に基づいて選択された書き込みモードで、ＬＵＴをＮＡＮＤ型フラッシュメモリ５に格納することができる。
【０２２０】
なお、ＮＡＮＤ型フラッシュメモリ５に含まれるブロックが、ＳＬＣ専用ブロックグループ１８とＴＬＣ／ＱＬＣ共用ブロックグループ１９とに分けて使用される場合、Ｐ／Ｅサイクル数の統計値はグループ毎に算出される。また、許容できる最大Ｐ／Ｅサイクル数の統計値も、グループ毎に定義される。したがって、図３６および図３７のフローチャートに示した各閾値も、グループ毎に定義される。
【０２２１】
この場合、コントローラ４は、例えば、グループ毎に、現在のＰ／Ｅサイクル数の統計値と、閾値とに基づいて、書き込みモードを決定する。そして、コントローラ４は、２つのグループ間で決定された書き込みモードが異なる場合には、Ｐ／Ｅサイクル数の増加がより抑制される方のモードを選択し（例えば、ＳＬＣモード１５とＱＬＣモード１７であればＱＬＣモード１７を選択し）、書き込みモードとして設定する。
【０２２２】
なお、ＮＡＮＤ型フラッシュメモリ５に含まれるブロックが、ＳＬＣ専用ブロックグループ１８とＴＬＣ／ＱＬＣ共用ブロックグループ１９とに分けて使用され、寿命の観点から、ホスト書込みの書き込みモードとして、ＳＬＣモードと、ＴＬＣ／ＱＬＣ直書きモードとを使い分ける場合、ＳＬＣモードはＳＬＣブロックグループ１８に属するブロックを主に疲弊させ、ＴＬＣ／ＱＬＣ直書きモードはＴＬＣ／ＱＬＣ共用ブロックグループ１９に属するブロックを主に疲弊させる。この場合、メモリシステムとしての寿命を担保するために、それぞれのブロックグループ１８，１９の余命を考慮し、余命に余裕がある方をより疲弊させるモードを選択する。また、余命が同程度であれば性能を優先して、すなわち、狭域ワークロードであればＳＬＣモードを選択し、高域ワークロードであればＴＬＣ／ＱＬＣ直書きモードを選択する。狭域ワークロードとは、上述した通り、時系列的に近接するアクセス（複数のコマンド）において、アクセス対象の論理アドレスが狭い論理アドレス空間内におさまっているアクセスパターンのことである。広域ワークロードとは、時系列的に近接するアクセスにおいて、アクセス対象の論理アドレスが広い論理アドレス空間に亘っており、狭い論理アドレス空間内におさまっていないアクセスパターンのことである。
【０２２３】
また、ＮＡＮＤ型フラッシュメモリ５内のブロックが、ＳＬＣ専用ブロックグループ１８とＴＬＣ／ＱＬＣ共用ブロックグループ１９とに分けて使用される場合、ＳＬＣ専用ブロックグループ１８に属するブロックは、ＳＬＣモード１５での書き込みに使用されることにより、数十ｋサイクルの寿命を保つことができる。仮に、ブロックがＳＬＣモード１５とＱＬＣモード１７とで共用される場合には、ＱＬＣモード１７で許容できる最大Ｐ／Ｅサイクル数に到達した時点で（例えば、数ｋサイクル程度で）、そのブロックを使用することができなくなる。
【０２２４】
ＳＬＣ専用ブロックグループ１８に属するブロックは、Ｐ／Ｅサイクルが高い頻度で発生するように使用されることを前提として、書き換えの頻度が高いデータが配置されるようにする。一方、ＱＬＣ専用ブロックグループに属するブロックは、Ｐ／Ｅサイクルが低い頻度で発生するように使用されることを前提として、書き換えがあまり発生しないデータ（書き換えの頻度が低いデータ）が配置されるようにする。ＳＳＤ３は、ＳＬＣ専用ブロックグループ１８とＱＬＣ専用ブロックグループのいずれかがそれぞれの許容できる最大Ｐ／Ｅサイクル数に達することにより寿命を迎えるので、ＳＬＣ専用ブロックグループ１８に属するブロックとＱＬＣ専用ブロックグループに属するブロックとの使い分けのバランスを保つことにより、ＳＳＤ３全体としての寿命を長くすることができる。
【０２２５】
一方、寿命を保証する範囲内で、ＳＬＣバッファを使用することにより、（ワークロードに関わらず）瞬発性能を発揮し、また、狭域ワークロードにてリード・ライト性能を高くすることができる。
（第３実施形態）
第１実施形態および第２実施形態では、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータの書き込みモードが切り替えられる構成を示した。第３実施形態では、さらに、ＤＲＡＭ６上にキャッシュされているＬＵＴのエントリ（アドレス変換情報）が、対応するユーザデータがＮＡＮＤ型フラッシュメモリ５に書き込まれた際の書き込みモードに基づいて、あるいはそのエントリがＮＡＮＤ型フラッシュメモリ５に書き込まれた際の書き込みモードに基づいて、制御される。
【０２２６】
第３実施形態に係るＳＳＤ３の構成は第１実施形態のＳＳＤ３と同様であり、第３実施形態と、第１実施形態および第２実施形態とでは、キャッシュ制御部１２５によって実行される処理の手順のみが異なる。以下、第１実施形態および第２実施形態と異なる点のみを説明する。
【０２２７】
ＮＡＮＤ型フラッシュメモリ５には、論理アドレス（ＬＢＡ）と物理アドレスとのマッピングをそれぞれ示す複数のエントリを含むアドレス変換テーブル（ＬＵＴ）５３が格納されている。キャッシュ制御部１２５は、ＮＡＮＤ型フラッシュメモリ５から読み出されてＤＲＡＭ６にキャッシュされるＬＵＴ３３のエントリを制御する。キャッシュ制御部１２５は、ホスト２によってリードやライトが要求されたＬＢＡに対応するＬＵＴのエントリを、ＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にキャッシュする。
【０２２８】
ＬＵＴをキャッシュ可能なＤＲＡＭ６上の領域は限られている。そのため、キャッシュ制御部１２５は、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュできる空き領域がない場合には、特定の規則に従って、ＤＲＡＭ６上にキャッシュされているエントリから追い出し対象のエントリを選択する。なお、キャッシュ制御部１２５は、空き領域がない場合以外でも、追い出し対象のエントリを選択するようにしてもよい。
【０２２９】
この特定の規則には、例えば、ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ（ＬＲＵ）方式が用いられ得るが、本実施形態では、各エントリに対応するユーザデータがＮＡＮＤ型フラッシュメモリ５に書き込まれた際の書き込みモード、あるいは各エントリに対応するアドレス変換情報がＮＡＮＤ型フラッシュメモリ５に書き込まれた際の書き込みモードに基づいて、ＤＲＡＭ６上にキャッシュされているエントリから追い出し対象のエントリを選択する。追い出し対象のエントリが選択される具体的な例については後述する。
【０２３０】
キャッシュ制御部１２５は、選択された追い出し対象のエントリにダーティデータが含まれる場合には、そのエントリに含まれるアドレス変換情報をＮＡＮＤ型フラッシュメモリ５に書き戻して、当該エントリのキャッシュ領域を解放する。ダーティデータは、ＤＲＡＭ６上にキャッシュされた後に書き換えられ、書き換えられた内容がＮＡＮＤ型フラッシュメモリ５に反映されていないデータである。あるエントリに含まれるアドレス変換情報をＮＡＮＤ型フラッシュメモリ５に書き戻す際の書き込みモードには、例えば、そのエントリに対応するアドレス変換情報がＮＡＮＤ型フラッシュメモリ５に最後に書き込まれた際の書き込みモードが用いられてもよい。あるいは、第１実施形態または第２実施形態に示した構成を適用して、ユーティライゼーション、Ｐ／Ｅサイクル数の統計値等に基づいて設定された書き込みモードであってもよい。
【０２３１】
なお、選択されたエントリに含まれるデータがダーティデータでないならば、キャッシュ制御部１２５は、書き込み等の処理を何等行うことなく、当該エントリのキャッシュ領域を解放する。
【０２３２】
そして、キャッシュ制御部１２５は、解放されたキャッシュ領域に、新たなＬＵＴのエントリをキャッシュする。
【０２３３】
以上により、各エントリに対応するユーザデータがＮＡＮＤ型フラッシュメモリ５に書き込まれた際の書き込みモード、あるいは各エントリに対応するアドレス変換情報がＮＡＮＤ型フラッシュメモリ５に書き込まれた際の書き込みモードに基づいて、ＤＲＡＭ６から優先して追い出されるＬＵＴのエントリを制御することができる。なお、ＬＵＴ３３は、ＤＲＡＭ６ではなく、コントローラ４内に設けられるＳＲＡＭにキャッシュされてもよい。その場合も同様にして、キャッシュ制御部１２５は、ＮＡＮＤ型フラッシュメモリ５からＳＲＡＭにキャッシュされるエントリを制御することができる。
【０２３４】
図３８および図３９を参照して、ＤＲＡＭ６上に新たなＬＵＴのエントリがキャッシュされる動作の例を示す。ここでは、ＤＲＡＭ６にキャッシュされているＬＵＴ３３の各エントリのアドレス変換情報によって示される、ＮＡＮＤ型フラッシュメモリ５上のユーザデータの書き込みモードに基づいて、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、メモリセル当たりに格納されるビット数がより多い書き込みモード（例えば、ＱＬＣモード１７）のユーザデータに対応するエントリを優先してＤＲＡＭ６から追い出す第１ポリシーが適用される場合を例示する。
【０２３５】
キャッシュ制御部１２５は、ホスト２からＬＢＡ“４０”の読み出しを要求するリードコマンドを受け付けた場合、ＤＲＡＭ６にキャッシュされているＬＵＴ３３に、ＬＢＡ“４０”に対応するエントリが含まれているか否かを判定する。図３８に示す例では、ＤＲＡＭ６に、３つのＬＵＴのエントリをキャッシュするための３つのキャッシュ領域が設けられている。これら３つのキャッシュ領域には、ＬＢＡ“１０”のアドレス変換情報である物理アドレス“４００”を含むエントリ３３１と、ＬＢＡ“２０”のアドレス変換情報である物理アドレス“２００”を含むエントリ３３２と、ＬＢＡ“３０”のアドレス変換情報である物理アドレス“５０”を含むエントリ３３３とがキャッシュされている。以下、「アドレス変換情報である物理アドレス“Ｘ”」の表現を、「アドレス変換情報（“Ｘ”）」のように表記する。
【０２３６】
キャッシュ制御部１２５は、キャッシュされているＬＵＴ３３のエントリ３３１，３３２，３３３にＬＢＡ“４０”に対応するエントリが含まれていないので、このＬＢＡ“４０”のエントリを新たにキャッシュする領域を確保するための処理を行う。
【０２３７】
具体的には、キャッシュ制御部１２５は、管理テーブル４５を参照して、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから追い出し対象のエントリを選択する。追い出し対象のエントリは、対応するユーザデータの書き込みモードが、メモリセル当たりに格納されるビット数がより多い書き込みモードであるエントリである。管理テーブル４５は、ＬＢＡと、対応するユーザデータの書き込みモードとを示している。管理テーブル４５は、例えば、対応するユーザデータの書き込み（ホスト書き込み、ＧＣ書き込み）やアンマップに応じて更新される。また、管理テーブル４５は、ＮＡＮＤ型フラッシュメモリ５に格納され、必要に応じてＤＲＡＭ６上にキャッシュされる。
【０２３８】
図３８に示す例では、キャッシュ制御部１２５は、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから、ユーザデータの書き込みモードがＱＬＣモード１７であるＬＢＡ“２０”のエントリ３３２を選択する。キャッシュ制御部１２５は、このエントリ３３２に含まれるアドレス変換情報（“２００”）がダーティデータである場合、このデータをＮＡＮＤ型フラッシュメモリ５に書き込む。
【０２３９】
そして、キャッシュ制御部１２５は、エントリ３３２のキャッシュ領域を解放し、ＮＡＮＤ型フラッシュメモリ５に格納されているＬＵＴ５３から、ＬＢＡ“４０”のエントリに含まれるアドレス変換情報（“５００”）を読み出して、この解放された領域にキャッシュする。
【０２４０】
これにより、図３９に示すように、ＤＲＡＭ６上に、ＬＢＡ“４０”に対応するＬＵＴのエントリに含まれるアドレス変換情報（“５００”）を新たにキャッシュすることができる。したがって、リード制御部１２２は、このＬＢＡ“４０”に対応するＬＵＴのエントリに基づいて、論理アドレス（ＬＢＡ）に対応する物理アドレスを求め、ＮＡＮＤ型フラッシュメモリ５からリードコマンドに応じたデータを読み出すことができる。
【０２４１】
図４０のフローチャートは、コントローラ４によって実行される、第１ポリシーに従ったＬＵＴのキャッシュ制御処理の手順を示す。
【０２４２】
まず、コントローラ４は、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域があるかどうかを判定する（ステップＳ７１）。空き領域がある場合（ステップＳ７１のＹＥＳ）、コントローラ４は、ＤＲＡＭ６に、その新たなＬＵＴのエントリを格納する（ステップＳ７８）。
【０２４３】
一方、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域がない場合（ステップＳ７１のＮＯ）、コントローラ４は、ＤＲＡＭ６上に、対応するユーザデータの書き込みモードがＱＬＣであるＬＵＴのエントリがあるか否かを判定する（ステップＳ７２）。対応するユーザデータの書き込みモードがＱＬＣモード１７であるＬＵＴのエントリがある場合（ステップＳ７２のＹＥＳ）、コントローラ４は、そのＬＵＴのエントリを追い出し対象として選択する（ステップＳ７３）。また、対応するユーザデータの書き込みモードがＱＬＣモード１７であるＬＵＴのエントリがない場合（ステップＳ７２のＮＯ）、コントローラ４は、対応するユーザデータの書き込みモードがＴＬＣモード１６（またはＳＬＣモード１５）であるＬＵＴのエントリを追い出し対象として選択する（ステップＳ７４）。
【０２４４】
次いで、コントローラ４は、追い出し対象として選択されたエントリのデータ（アドレス変換情報）がダーティデータであるか否かを判定する（ステップＳ７５）。選択されたエントリのデータがダーティデータである場合（ステップＳ７５のＹＥＳ）、コントローラ４は、そのデータをＮＡＮＤ型フラッシュメモリ５に書き込む（書き戻す）（ステップＳ７６）。また、選択されたエントリのデータがダーティデータでない場合（ステップＳ７５のＮＯ）、ステップＳ７６の手順はスキップされる。
【０２４５】
そして、コントローラ４は、追い出し対象として選択されたエントリのキャッシュ領域を解放し（ステップＳ７７）、ＤＲＡＭ６に、新たなＬＵＴのエントリをキャッシュする（ステップＳ７８）。
【０２４６】
以上により、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、対応するユーザデータの書き込みモードがＱＬＣモード１７であるＬＵＴ３３のエントリを優先してＤＲＡＭ６から追い出すことができる。
【０２４７】
ＱＬＣモード１７で書き込まれているユーザデータのＬＢＡは、性能要求が高くないと推定され、当該ＬＢＡのＬＵＴ（アドレス変換情報）をキャッシュから追い出しても、要求に対する影響は少ないと推定される。一方、ＳＬＣモード１５で書き込まれているユーザデータのＬＢＡは、性能要求が高いと推定される。したがって、ＳＬＣモード１５で書き込まれているユーザデータのＬＢＡのＬＵＴ（アドレス変換情報）をキャッシュからなるべく追い出さないことで高性能を維持し、要求に応えることができる。
【０２４８】
図４１および図４２を参照して、ＤＲＡＭ６上に新たなＬＵＴのエントリがキャッシュされる動作の別の例を示す。ここでは、管理テーブル４５によって示される、ＮＡＮＤ型フラッシュメモリ５上のユーザデータの書き込みモードに基づいて、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、メモリセル当たりに格納されるビット数がより少ない書き込みモード（例えば、ＳＬＣモード１５）のユーザデータに対応するエントリを優先してＤＲＡＭ６から追い出す第２ポリシーが適用される場合を例示する。
【０２４９】
キャッシュ制御部１２５は、ホスト２からＬＢＡ“４０”の読み出しを要求するリードコマンドを受け付けた場合、ＤＲＡＭ６にキャッシュされたＬＵＴ３３に、ＬＢＡ“４０”に対応するエントリが含まれているか否かを判定する。そして、キャッシュ制御部１２５は、ＬＵＴ３３のエントリ３３１，３３２，３３３にＬＢＡ“４０”に対応するエントリが含まれていないので、このＬＢＡ“４０”のエントリを新たにキャッシュする領域を確保するための処理を行う。
【０２５０】
具体的には、キャッシュ制御部１２５は、管理テーブル４５を参照して、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから追い出し対象のエントリを選択する。追い出し対象のエントリは、対応するユーザデータの書き込みモードが、メモリセル当たりに格納されるビット数がより少ない書き込みモードであるエントリである。
【０２５１】
図４１に示す例では、キャッシュ制御部１２５は、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから、ユーザデータの書き込みモードがＳＬＣモード１５であるＬＢＡ“１０”のエントリ３３１を選択する。キャッシュ制御部１２５は、このエントリ３３１に含まれるデータ（“４００”）がダーティデータである場合、このデータをＮＡＮＤ型フラッシュメモリ５に書き込む。
【０２５２】
そして、キャッシュ制御部１２５は、エントリ３３１のキャッシュ領域を解放し、ＮＡＮＤ型フラッシュメモリ５に格納されているＬＵＴ５３から、ＬＢＡ“４０”のデータ（“５００”）を読み出して、この解放された領域にキャッシュする。
【０２５３】
これにより、図４２に示すように、ＤＲＡＭ６上に、ＬＢＡ“４０”に対応するＬＵＴのエントリ（“５００”）を新たにキャッシュすることができる。したがって、リード制御部１２２は、このＬＢＡ“４０”に対応するＬＵＴのエントリに基づいて、論理アドレス（ＬＢＡ）に対応する物理アドレスを求め、ＮＡＮＤ型フラッシュメモリ５からリードコマンドに応じたデータを読み出すことができる。
【０２５４】
図４３のフローチャートは、コントローラ４によって実行される、第２ポリシーに従ったＬＵＴのキャッシュ制御処理の手順を示す。
【０２５５】
まず、コントローラ４は、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域があるかどうかを判定する（ステップＳ８１）。空き領域がある場合（ステップＳ８１のＹＥＳ）、コントローラ４は、ＤＲＡＭ６に、その新たなＬＵＴのエントリを格納する（ステップＳ８８）。
【０２５６】
一方、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域がない場合（ステップＳ８１のＮＯ）、コントローラ４は、ＤＲＡＭ６上に、対応するユーザデータの書き込みモードがＳＬＣモード１５であるＬＵＴのエントリがあるか否かを判定する（ステップＳ８２）。対応するユーザデータの書き込みモードがＳＬＣモード１５であるＬＵＴのエントリがある場合（ステップＳ８２のＹＥＳ）、コントローラ４は、そのＬＵＴのエントリを追い出し対象として選択する（ステップＳ８３）。また、対応するユーザデータの書き込みモードがＳＬＣモード１５であるＬＵＴのエントリがない場合（ステップＳ８２のＮＯ）、コントローラ４は、対応するユーザデータの書き込みモードがＴＬＣモード１６（またはＱＬＣモード１７）であるＬＵＴのエントリを追い出し対象として選択する（ステップＳ８４）。
【０２５７】
次いで、コントローラ４は、追い出し対象として選択されたエントリのデータ（アドレス変換情報）がダーティデータであるか否かを判定する（ステップＳ８５）。選択されたエントリのデータがダーティデータである場合（ステップＳ８５のＹＥＳ）、コントローラ４は、そのデータをＮＡＮＤ型フラッシュメモリ５に書き込む（書き戻す）（ステップＳ８６）。また、選択されたエントリのデータがダーティデータでない場合（ステップＳ８５のＮＯ）、ステップＳ８６の手順はスキップされる。
【０２５８】
そして、コントローラ４は、追い出し対象として選択されたエントリのキャッシュ領域を解放し（ステップＳ８７）、ＤＲＡＭ６に、新たなＬＵＴのエントリをキャッシュする（ステップＳ８８）。
【０２５９】
以上により、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、対応するユーザデータの書き込みモードがＳＬＣモード１５であるＬＵＴ３３のエントリを優先してＤＲＡＭ６から追い出すことができる。
【０２６０】
ＳＬＣモード１５で書き込まれているユーザデータは、ＱＬＣモード１７で書き込まれているユーザデータよりも高速に読み出すことができるため、ＬＵＴキャッシュミスによりＬＵＴ（アドレス変換情報）の読み出しを行ったとしても、ＬＵＴの読み出し時間を含めたリード性能全体は、ＱＬＣモード１７で書き込まれているユーザデータに対するリード性能と大きく変わらない。したがって、限られたＤＲＡＭ容量で、性能を均一化することができる。
【０２６１】
図４４および図４５を参照して、ＤＲＡＭ６上に新たなＬＵＴのエントリがキャッシュされる動作のさらに別の例を示す。ここでは、ＤＲＡＭ６にキャッシュされているＬＵＴ３３の各エントリのデータ（アドレス変換情報）が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードに基づいて、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、メモリセル当たりに格納されるビット数がより多い書き込みモード（例えば、ＱＬＣモード１７）のデータに対応するエントリを優先してＤＲＡＭ６から追い出す第３ポリシーが適用される場合を例示する。
【０２６２】
キャッシュ制御部１２５は、ホスト２からＬＢＡ“４０”の読み出しを要求するリードコマンドを受け付けた場合、ＤＲＡＭ６にキャッシュされているＬＵＴ３３に、ＬＢＡ“４０”に対応するエントリが含まれているか否かを判定する。そして、キャッシュ制御部１２５は、キャッシュされているＬＵＴ３３のエントリ３３１，３３２，３３３にＬＢＡ“４０”に対応するエントリが含まれていないので、このＬＢＡ“４０”のエントリを新たにキャッシュする領域を確保するための処理を行う。
【０２６３】
具体的には、キャッシュ制御部１２５は、管理テーブル４６を参照して、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから追い出し対象のエントリを選択する。追い出し対象のエントリは、各エントリのデータ（アドレス変換情報）が格納されているＮＡＮＤ型フラッシュメモリ５上のブロックの書き込みモードが、メモリセル当たりに格納されるビット数がより多い書き込みモードであるエントリである。管理テーブル４６は、ＬＢＡと、対応するアドレス変換情報の書き込みモードとを示している。管理テーブル４６は、例えば、対応するアドレス変換情報の書き込みに応じて更新される。
【０２６４】
図４４に示す例では、キャッシュ制御部１２５は、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから、そのエントリのユーザデータの書き込みモードがＱＬＣモード１７であるＬＢＡ“２０”のエントリ３３２を選択する。キャッシュ制御部１２５は、このエントリ３３２に含まれるデータ（“２００”）がダーティデータである場合、このデータをＮＡＮＤ型フラッシュメモリ５に書き込む。
【０２６５】
そして、キャッシュ制御部１２５は、エントリ３３２のキャッシュ領域を解放し、ＮＡＮＤ型フラッシュメモリ５に格納されているＬＵＴ５３から、ＬＢＡ“４０”のデータ（“５００”）を読み出して、この解放された領域にキャッシュする。
【０２６６】
これにより、図４５に示すように、ＤＲＡＭ６上に、ＬＢＡ“４０”に対応するＬＵＴのエントリ（“５００”）を新たにキャッシュすることができる。したがって、リード制御部１２２は、このＬＢＡ“４０”に対応するＬＵＴのエントリに基づいて、論理アドレス（ＬＢＡ）に対応する物理アドレスを求め、ＮＡＮＤ型フラッシュメモリ５からリードコマンドに応じたデータを読み出すことができる。
【０２６７】
図４６のフローチャートは、コントローラ４によって実行される、第３ポリシーに従ったＬＵＴのキャッシュ制御処理の手順を示す。
【０２６８】
まず、コントローラ４は、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域があるかどうかを判定する（ステップＳ９１）。空き領域がある場合（ステップＳ９１のＹＥＳ）、コントローラ４は、ＤＲＡＭ６に、その新たなＬＵＴのエントリを格納する（ステップＳ９８）。
【０２６９】
一方、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域がない場合（ステップＳ９１のＮＯ）、コントローラ４は、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＱＬＣモード１７であるＬＵＴのエントリがＤＲＡＭ６上にあるか否かを判定する（ステップＳ９２）。アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＱＬＣモード１７であるＬＵＴのエントリがある場合（ステップＳ９２のＹＥＳ）、コントローラ４は、そのＬＵＴのエントリを追い出し対象として選択する（ステップＳ９３）。また、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＱＬＣであるＬＵＴのエントリがない場合（ステップＳ９２のＮＯ）、コントローラ４は、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＴＬＣモード１６（またはＳＬＣモード１５）であるＬＵＴのエントリを追い出し対象として選択する（ステップＳ９４）。
【０２７０】
次いで、コントローラ４は、追い出し対象として選択されたエントリのデータ（アドレス変換情報）がダーティデータであるか否かを判定する（ステップＳ９５）。選択されたエントリのデータがダーティデータである場合（ステップＳ９５のＹＥＳ）、コントローラ４は、そのデータをＮＡＮＤ型フラッシュメモリ５に書き込む（書き戻す）（ステップＳ９６）。また、選択されたエントリのデータがダーティデータでない場合（ステップＳ９５のＮＯ）、ステップＳ９６の手順はスキップされる。
【０２７１】
そして、コントローラ４は、追い出し対象として選択されたエントリのキャッシュ領域を解放し（ステップＳ９７）、ＤＲＡＭ６に、新たなＬＵＴのエントリをキャッシュする（ステップＳ９８）。
【０２７２】
以上により、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＱＬＣモード１７であるＬＵＴ３３のエントリを優先してＤＲＡＭ６から追い出すことができる。
【０２７３】
第１ポリシーの場合と同様に、ＱＬＣモード１７で書き込まれているＬＵＴのＬＢＡは、要求性能が高くないと推定されるため、ＬＵＴ（アドレス変換情報）をキャッシュから追い出したとしても、要求に対する影響は小さいと推定される。一方、ＳＬＣモード１５で書き込まれているＬＵＴのＬＢＡは、要求性能が高いと推定される。したがって、ＳＬＣモード１５で書き込まれているＬＵＴのＬＢＡをキャッシュから追い出さないことにより、高性能を維持し、要求に応えることができる。
【０２７４】
図４７および図４８を参照して、ＤＲＡＭ６上に新たなＬＵＴのエントリがキャッシュされる動作のさらに別の例を示す。ここでは、ＤＲＡＭ６にキャッシュされているＬＵＴ３３の各エントリのデータ（アドレス変換情報）が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードに基づいて、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、メモリセル当たりに格納されるビット数がより少ない書き込みモード（例えば、ＳＬＣモード１５）のデータに対応するエントリを優先してＤＲＡＭ６から追い出す第４ポリシーが適用される場合を例示する。
【０２７５】
キャッシュ制御部１２５は、ホスト２からＬＢＡ“４０”の読み出しを要求するリードコマンドを受け付けた場合、ＤＲＡＭ６にキャッシュされているＬＵＴ３３に、ＬＢＡ“４０”に対応するエントリが含まれているか否かを判定する。そして、キャッシュ制御部１２５は、キャッシュされているＬＵＴ３３のエントリ３３１，３３２，３３３にＬＢＡ“４０”に対応するエントリが含まれていないので、このＬＢＡ“４０”のエントリを新たにキャッシュする領域を確保するための処理を行う。
【０２７６】
具体的には、キャッシュ制御部１２５は、管理テーブル４６を参照して、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから追い出し対象のエントリを選択する。追い出し対象のエントリは、各エントリのデータ（アドレス変換情報）が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードが、メモリセル当たりに格納されるビット数がより少ない書き込みモードであるエントリである。
【０２７７】
図４７に示す例では、キャッシュ制御部１２５は、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリから、そのエントリのユーザデータの書き込みモードがＳＬＣモード１５であるＬＢＡ“１０”のエントリ３３１を選択する。キャッシュ制御部１２５は、このエントリ３３１に含まれるデータ（“４００”）がダーティデータである場合、このデータをＮＡＮＤ型フラッシュメモリ５に書き込む。
【０２７８】
そして、キャッシュ制御部１２５は、エントリ３３１のキャッシュ領域を解放し、ＮＡＮＤ型フラッシュメモリ５に格納されているＬＵＴ５３から、ＬＢＡ“４０”のデータ（“５００”）を読み出して、この解放された領域にキャッシュする。
【０２７９】
これにより、図４８に示すように、ＤＲＡＭ６上に、ＬＢＡ“４０”に対応するＬＵＴのエントリ（“５００”）を新たにキャッシュすることができる。したがって、リード制御部１２２は、このＬＢＡ“４０”に対応するＬＵＴのエントリに基づいて、論理アドレス（ＬＢＡ）に対応する物理アドレスを求め、ＮＡＮＤ型フラッシュメモリ５からリードコマンドに応じたデータを読み出すことができる。
【０２８０】
図４９のフローチャートは、コントローラ４によって実行される、第４ポリシーに従ったＬＵＴのキャッシュ制御処理の手順を示す。
【０２８１】
まず、コントローラ４は、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域があるかどうかを判定する（ステップＳ１０１）。空き領域がある場合（ステップＳ１０１のＹＥＳ）、コントローラ４は、ＤＲＡＭ６に、その新たなＬＵＴのエントリを格納する（ステップＳ１０８）。
【０２８２】
一方、ＤＲＡＭ６上に新たなＬＵＴのエントリをキャッシュする空き領域がない場合（ステップＳ１０１のＮＯ）、コントローラ４は、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＳＬＣモード１５であるＬＵＴのエントリがＤＲＡＭ６上にあるか否かを判定する（ステップＳ１０２）。アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＳＬＣモード１５であるＬＵＴのエントリがある場合（ステップＳ１０２のＹＥＳ）、コントローラ４は、そのＬＵＴのエントリを追い出し対象として選択する（ステップＳ１０３）。また、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＳＬＣモード１５であるＬＵＴのエントリがない場合（ステップＳ１０２のＮＯ）、コントローラ４は、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＴＬＣモード１６（またはＱＬＣモード１７）であるＬＵＴのエントリを追い出し対象として選択する（ステップＳ１０４）。
【０２８３】
次いで、コントローラ４は、追い出し対象として選択されたエントリのデータ（アドレス変換情報）がダーティデータであるか否かを判定する（ステップＳ１０５）。選択されたエントリのデータがダーティデータである場合（ステップＳ１０５のＹＥＳ）、コントローラ４は、そのデータをＮＡＮＤ型フラッシュメモリ５に書き込む（書き戻す）（ステップＳ１０６）。また、選択されたエントリのデータがダーティデータでない場合（ステップＳ１０５のＮＯ）、ステップＳ１０６の手順はスキップされる。
【０２８４】
そして、コントローラ４は、追い出し対象として選択されたエントリのキャッシュ領域を解放し（ステップＳ１０７）、ＤＲＡＭ６に、新たなＬＵＴのエントリをキャッシュする（ステップＳ１０８）。
【０２８５】
以上により、ＤＲＡＭ６にキャッシュされているＬＵＴ３３のエントリの内、アドレス変換情報が格納されているＮＡＮＤ型フラッシュメモリ５上の書き込みモードがＳＬＣモード１５であるＬＵＴ３３のエントリを優先してＤＲＡＭ６から追い出すことができる。
【０２８６】
キャッシュミス発生時、ＱＬＣモード１７で書き込まれているＬＵＴは、読み出しに時間がかかるが、ＳＬＣモード１５で書き込まれているＬＵＴは、読み出し時間は短く済むため、キャッシュミスペナルティは小さい。キャッシュミスペナルティが大きい、ＱＬＣモード１７で書き込まれているＬＵＴをキャッシュに維持し、キャッシュミスペナルティが小さい、ＳＬＣモード１５で書き込まれているＬＵＴをキャッシュから追い出すことで、限られたＤＲＡＭ容量で、性能を均一化することができる。
【０２８７】
以上説明したように、第１乃至第３実施形態によれば、メモリシステムの容量および寿命の少なくともいずれかと性能とのバランスを保つことができる。ＮＡＮＤ型フラッシュメモリ５にデータを書き込むための書き込みモードは、ＮＡＮＤ型フラッシュメモリ５に関する任意の指標に基づいて切り替えられる。この指標には、物理アドレス空間にマッピングされている論理アドレスの総数（ユーティライゼーション）や、Ｐ／Ｅサイクル数の統計値のようなＮＡＮＤ型フラッシュメモリ５全体の疲弊度が用いられ得る。このような指標に基づき、容量または寿命を優先する際には、メモリセル当たりに格納可能なビット数がより多いモード（例えば、ＱＬＣモード）が選択され、性能を優先する際には、メモリセル当たりに格納可能なビット数がより少ないモード（例えば、ＳＬＣモード）が選択される。これにより、メモリシステムの容量および寿命の少なくともいずれかと性能とのバランスを保つことができる。
【０２８８】
なお、本発明のいくつかの実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、各実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０２８９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２９０】
１…情報処理システム、２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、１０…バス、１１…ホスト  Ｉ／Ｆ、１２…ＣＰＵ、１３…ＮＡＮＤ  Ｉ／Ｆ、１４…ＤＲＡＭ  Ｉ／Ｆ、１２１…モード切替部、１２２…リード制御部、１２３…ライト制御部、１２４…ＧＣ制御部、１２５…キャッシュ制御部、１２６…アクセス頻度統計処理部、３１…ライトバッファ、３２…ＧＣバッファ、３３…ＬＵＴ。
【図１】
2019057193.tif 000003
【図２】
2019057193.tif 000004
【図３】
2019057193.tif 000005
【図４】
2019057193.tif 000006
【図５】
2019057193.tif 000007
【図６】
2019057193.tif 000008
【図７】
2019057193.tif 000009
【図８】
2019057193.tif 000010
【図９】
2019057193.tif 000011
【図１０】
2019057193.tif 000012
【図１１】
2019057193.tif 000013
【図１２】
2019057193.tif 000014
【図１３】
2019057193.tif 000015
【図１４】
2019057193.tif 000016
【図１５】
2019057193.tif 000017
【図１６】
2019057193.tif 000018
【図１７】
2019057193.tif 000019
【図１８】
2019057193.tif 000020
【図１９】
2019057193.tif 000021
【図２０】
2019057193.tif 000022
【図２１】
2019057193.tif 000023
【図２２】
2019057193.tif 000024
【図２３】
2019057193.tif 000025
【図２４】
2019057193.tif 000026
【図２５】
2019057193.tif 000027
【図２６】
2019057193.tif 000028
【図２７】
2019057193.tif 000029
【図２８】
2019057193.tif 000030
【図２９】
2019057193.tif 000031
【図３０】
2019057193.tif 000032
【図３１】
2019057193.tif 000033
【図３２】
2019057193.tif 000034
【図３３】
2019057193.tif 000035
【図３４】
2019057193.tif 000036
【図３５】
2019057193.tif 000037
【図３６】
2019057193.tif 000038
【図３７】
2019057193.tif 000039
【図３８】
2019057193.tif 000040
【図３９】
2019057193.tif 000041
【図４０】
2019057193.tif 000042
【図４１】
2019057193.tif 000043
【図４２】
2019057193.tif 000044
【図４３】
2019057193.tif 000045
【図４４】
2019057193.tif 000046
【図４５】
2019057193.tif 000047
【図４６】
2019057193.tif 000048
【図４７】
2019057193.tif 000049
【図４８】
2019057193.tif 000050
【図４９】
2019057193.tif 000051