(57)【要約】【課題】様々な種類のデータの記憶に有用なメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースであって、少なくとも第１種類のデータを格納するための第１ネームスペースと、前記第１種類のデータよりも低い更新頻度を有する第２種類のデータを格納するための第２ネームスペースとを含む複数のネームスペースを管理する。前記コントローラは、確保すべき物理リソースの量をネームスペース毎に指定するホストデバイスからの要求に基づいて、第１の個数の物理ブロックを前記第１ネームスペース用の物理リソースとして割り当て、第２の個数の物理ブロックを前記第２ネームスペース用の物理リソースとして割り当てる。【選択図】図３
2018200720.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを含む不揮発性メモリと、
コントローラとを具備し、
前記コントローラは、
ホストデバイスから受信される第１のネームスペース作成要求および第２のネームスペース作成要求に基づいて、第１ネームスペースおよび第２ネームスペースを作成し、
前記ホストデバイスによって前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第１ネームスペースのガベージコレクション動作によって前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第１ネームスペースのライトアンプリフィケーションを算出し、
前記ホストデバイスによって前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第２ネームスペースのガベージコレクション動作によって前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第２ネームスペースのライトアンプリフィケーションを算出し、
前記第１ネームスペースおよび前記第２ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供するように構成されている、メモリシステム。
【請求項２】
前記コントローラは、
前記第１のネームスペース作成要求に基づいて、前記第１ネームスペースを作成すると共に、前記第１のネームスペース作成要求によって指定された第１の個数の物理ブロックを前記第１ネームスペースに割り当て、
前記ホストデバイスから受信される第２のネームスペース作成要求に基づいて、前記第２ネームスペースを作成すると共に、前記第２のネームスペース作成要求によって指定された第２の個数の物理ブロックを前記第２ネームスペースに割り当てるように構成されている請求項１記載のメモリシステム。
【請求項３】
前記コントローラは、前記第１ネームスペースのＩＤに関連付けられたライトデータを前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトし、前記第２ネームスペースのＩＤに関連付けられたライトデータを前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトするように構成されている請求項１記載のメモリシステム。
【請求項４】
前記コントローラは、
対象ネームスペースのガベージコレクションの開始を要求する制御コマンドを、前記ホストデバイスから受信し、
前記対象ネームスペース用の物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択し、
有効データを前記対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行するように構成されている請求項１記載のメモリシステム。
【請求項５】
前記コントローラは、
ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を前記複数のネームスペースの共有フリーブロック群として管理し、
前記フリーブロック群から最小のプログラム／イレーズ回数のフリーブロックを選択し、
前記選択されたフリーブロックを、前記対象ネームスペースに対応する領域の前記コピー先フリーブロックとして割り当てるように構成されている請求項４記載のメモリシステム。
【請求項６】
前記コントローラは、メモリセルの消耗を抑制するための第１のコーディングを使用してライトデータをエンコードして第１符号化データを生成し、前記第１符号化データにエラー訂正コードを付加することによって第２符号化データを生成し、前記第２符号化データを物理ブロックにライトするように構成され、
前記コントローラは、さらに、前記第１符号化データと前記エラー訂正コードとの比率を、ライトデータがライトされるべきネームスペースに応じて、変更するように構成されている請求項１記載のメモリシステム。
【請求項７】
前記コントローラは、
前記ライトデータが前記第１ネームスペースにライトされるべきライトデータである場合、第１の長さの第１符号化データと第２の長さのエラー訂正コードとを含む第２符号化データが得られるように前記第１符号化データと前記エラー訂正コードとの比率を制御し、
前記ライトデータが前記第２ネームスペースにライトされるべきライトデータである場合、前記第１の長さよりも短い第３の長さの第１符号化データと前記第２の長さよりも長い第４の長さのエラー訂正コードとを含む第２符号化データが得られるように前記第１符号化データと前記エラー訂正コードとの比率を制御するように構成されている請求項６記載のメモリシステム。
【請求項８】
複数の物理ブロックを含む不揮発性メモリと、
異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースであって、第１種類のデータを格納するための第１ネームスペースと前記第１種類のデータよりも低い更新頻度を有する第２種類のデータを格納するための第２ネームスペースとを少なくとも含む複数のネームスペースを管理するコントローラとを具備し、
前記コントローラは、
ホストデバイスから受信される第１のネームスペース作成要求に基づいて、前記第１ネームスペースを作成すると共に、前記第１のネームスペース作成要求によって指定された第１の個数の物理ブロックを前記第１ネームスペースに割り当て、
前記ホストデバイスから受信される第２のネームスペース作成要求に基づいて、前記第２ネームスペースを作成すると共に、前記第２のネームスペース作成要求によって指定された第２の個数の物理ブロックを前記第２ネームスペースに割り当て、
前記第１ネームスペースのＩＤに関連付けられたライトデータを前記第１ネームスペースに対応する前記不揮発性メモリの領域に前記第１種類のデータとしてライトし、
前記第２ネームスペースのＩＤに関連付けられたライトデータを前記第２ネームスペースに対応する前記不揮発性メモリの領域に前記第２種類のデータとしてライトし、
前記ホストデバイスによって前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第１ネームスペースのガベージコレクション動作によって前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第１ネームスペースのライトアンプリフィケーションを算出し、
前記ホストデバイスによって前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第２ネームスペースのガベージコレクション動作によって前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第２ネームスペースのライトアンプリフィケーションを算出し、
前記第１ネームスペースおよび前記第２ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供するように構成されている、メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
【０００３】
このようなメモリシステムの一つとして、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。
【０００４】
ＳＳＤの種類には、シングルレベルセル（ＳＬＣ）−ＳＳＤのような小容量・高速ＳＳＤ、マルチレベルセル（ＭＬＣ）−ＳＳＤ、トリプルレベルセル（ＴＬＣ）−ＳＳＤのような大容量ＳＳＤなどがある。
【０００５】
通常、データセンターにおいては、これら複数種のＳＳＤは、用途に応じて選択的に使用される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第８６２１３２８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、データ種類毎に専用の種類のＳＳＤを使用することは、データセンターのＴＣＯ（Ｔｏｔａｌ  Ｃｏｓｔ  ｏｆ  Ｏｗｎｅｒｓｈｉｐ）を増加させる要因となる。
【０００８】
本発明が解決しようとする課題は、様々な種類のデータの記憶に有用なメモリシステムを提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、ホストデバイスから受信される第１のネームスペース作成要求および第２のネームスペース作成要求に基づいて、第１ネームスペースおよび第２ネームスペースを作成する。前記コントローラは、前記ホストデバイスによって前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第１ネームスペースのガベージコレクション動作によって前記第１ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第１ネームスペースのライトアンプリフィケーションを算出する。前記コントローラは、前記ホストデバイスによって前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第２ネームスペースのガベージコレクション動作によって前記第２ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第２ネームスペースのライトアンプリフィケーションを算出する。前記コントローラは、前記第１ネームスペースおよび前記第２ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供する。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るメモリシステムの構成例を示すブロック図。
【図２】通常の階層化ストレージシステムと単一階層ストレージシステムとの関係を説明するための図。
【図３】同実施形態のメモリシステム内に設定される複数の階層（ｔｉｅｒ）を説明するための図。
【図４】同実施形態のメモリシステム内の複数の領域とこれら領域にライトされるデータとの関係を説明するための図。
【図５】同実施形態のメモリシステムのネームスペース管理を説明するための図。
【図６】同実施形態のメモリシステムに適用される拡張ネームスペース管理コマンドを説明するための図。
【図７】同実施形態のメモリシステムによって実行される物理リソース割り当て処理のシーケンスを示す図。
【図８】同実施形態のメモリシステムによって実行される物理リソース割り当て処理の手順を示すフローチャート。
【図９】同実施形態のメモリシステムに接続されるホストによって実行されるライトコマンド送出処理の手順を示すフローチャート。
【図１０】同実施形態のメモリシステムに適用されるライトコマンドを説明するための図。
【図１１】同実施形態のメモリシステムによって実行されるライト動作の処理シーケンスを示す図。
【図１２】同実施形態のメモリシステムによって実行される、ガベージコレクション動作およびコピー先フリーブロック割り当て動作を説明するための図。
【図１３】同実施形態のメモリシステムによって実行されるライトデータ量カウント処理を説明するための図。
【図１４】同実施形態のメモリシステムによって実行されるライトデータ量カウント処理の手順を示すフローチャート。
【図１５】同実施形態のメモリシステムによって実行されるライトアンプリフィケーション（ＷＡ）算出処理の手順を示すフローチャート。
【図１６】同実施形態のメモリシステムからホストに送信されるリターンデータの例を示す図。
【図１７】同実施形態のメモリシステムによって実行されるカウンタリセット処理の手順を示すフローチャート。
【図１８】同実施形態のメモリシステムに適用される拡張ガベージコレクション制御コマンドを示す図。
【図１９】同実施形態のメモリシステムによって実行されるガベージコレクション動作の手順を示すフローチャート。
【図２０】同実施形態のメモリシステムによって実行される、エンデュランスコードとＥＣＣの比率を制御する処理を説明するための図。
【図２１】同実施形態のメモリシステムによって実行されるエンコード処理およびデコード処理を説明するための図。
【図２２】同実施形態のメモリシステム内のエンデュランスコードエンコーダの構成例を示すブロック図。
【図２３】同実施形態のメモリシステムによって実行されるエンコード処理の手順を示すフローチャート。
【図２４】同実施形態のメモリシステムによって実行されるライト制御処理の手順を示すフローチャート。
【図２５】同実施形態のメモリシステムに適用されるフラッシュアレイの構成を示す図。
【図２６】同実施形態のフラッシュアレイストレージの構成を示す図。
【図２７】同実施形態のフラッシュアレイストレージの別の構成を示す図。
【図２８】同実施形態のフラッシュアレイストレージ内のＳＳＤそれぞれの総容量と階層に割り当てられるべき物理リソースの量との関係を説明するための図。
【図２９】同実施形態のフラッシュアレイストレージのライト動作を説明するための図。
【図３０】同実施形態のホストの構成例を示すブロック図。
【図３１】同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を説明する。  
まず、図１を参照して、一実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１２】
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）３として実現されている。
【００１３】
情報処理システム１は、ホスト（ホストデバイス）２と、ＳＳＤ３とを含む。ホスト２は、サーバ、パーソナルコンピュータのような情報処理装置である。
【００１４】
ＳＳＤ３は、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。ＳＳＤ３は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１５】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、Ｅｔｈｅｒｎｅｔ（登録商標），Ｆｉｂｒｅ  ｃｈａｎｎｅｌ等が使用し得る。
【００１６】
ＳＳＤ３は、コントローラ４、不揮発性メモリ（ＮＡＮＤメモリ）５、およびＤＲＡＭ６を備える。ＮＡＮＤメモリ５は、限定されないが、複数のＮＡＮＤフラッシュメモリチップを含んでいてもよい。
【００１７】
ＮＡＮＤメモリ５は、多数のＮＡＮＤブロック（物理ブロック）Ｂ０〜Ｂｍ−１を含む。物理ブロックＢ０〜Ｂｍ−１は、消去単位として機能する。物理ブロックは「ブロック」または「消去ブロック」と称されることもある。
【００１８】
物理ブロックＢ０〜Ｂｍ−１は多数のページ（物理ページ）を含む。つまり、物理ブロックＢ０〜Ｂｍ−１の各々は、ページＰ０〜Ｐｎ−１を含む。ＮＡＮＤメモリ５においては、データのリードおよびデータのライトはページ単位で実行される。データの消去は物理ブロック単位で実行される。
【００１９】
コントローラ４は、Toggle、ONFIのようなＮＡＮＤインタフェース１３を介して、不揮発性メモリであるＮＡＮＤメモリ５に電気的に結合されている。コントローラ４は、ＮＡＮＤメモリ５のデータ管理とＮＡＮＤメモリ５のブロック管理とを実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能し得る。
【００２０】
データ管理には、（１）論理ブロックアドレス（ＬＢＡ）と物理アドレスとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。ＬＢＡと物理アドレスとの間のマッピングの管理は、ルックアップテーブル（ＬＵＴ）３３を用いて実行される。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータがライトされたＮＡＮＤメモリ５内の記憶位置を示す。物理アドレスは、物理ページアドレスと物理ブロックアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全ての物理ブロックに割り当てられている。
【００２１】
ページへのデータ書き込みは、１消去サイクル当たり１回のみ可能である。
【００２２】
このため、コントローラ４は、同じＬＢＡへのライト（上書き）を、ＮＡＮＤメモリ５上の別のページにマッピングする。つまり、コントローラ４は、この別のページにデータをライトする。そして、コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新して、このＬＢＡをこの別のページに関連付けると共に、元のページ（つまりこのＬＢＡが関連付けられていた古いデータ）を無効化する。
【００２３】
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれのプログラム／イレーズ回数を平準化するための動作である。
【００２４】
ガベージコレクションは、ＮＡＮＤメモリ５内のフリースペースを作り出すための動作である。このガベージコレクション動作は、ＮＡＮＤメモリ５のフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかの対象ブロック内の全ての有効データを別のブロック（例えばフリーブロック）にコピーする。そして、ガベージコレクション動作は、ルックアップテーブル（ＬＵＴ）３３を更新して、コピーされた有効データのＬＢＡそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみなったブロックはフリーブロックとして開放される。これによって、このブロックは消去後に再利用することが可能となる。
【００２５】
ホスト２は、ライトコマンドをＳＳＤ３に送出する。このライトコマンドは、ライトデータ（つまり書き込むべきデータ）の論理アドレス（開始論理アドレス）と、転送長とを含む。この実施形態においては、ＬＢＡが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトＩＤが論理アドレスとして使用されても良い。ＬＢＡは、論理セクタ（サイズ: 例えば５１２バイト）に付与されるシリアル番号によって表現される。シリアル番号はゼロから始まる。ＳＳＤ３のコントローラ４は、ライトコマンド内の開始論理アドレス（Starting LBA）と転送長とによって指定されるライトデータを、ＮＡＮＤメモリ５内の物理ブロックの物理ページにライトする。さらに、コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新することによって、ライトされたデータに対応するＬＢＡを、このデータがライトされた物理記憶位置に対応する物理アドレスにマッピングする。
【００２６】
次に、コントローラ４の構成について説明する。
【００２７】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ＳＲＡＭ１５等を含む。これらＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ＳＲＡＭ１５は、バス１０を介して相互接続される。
【００２８】
ホストインタフェース１１は、ホスト２から様々なコマンド（ライトコマンド、リードコマンド、拡張ネームスペース管理コマンド、拡張ガベージコレクション制御コマンド、アンマップ（ＵＮＭＡＰ）コマンド、等）を受信する。
【００２９】
ライトコマンドは、ＳＳＤ３に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、先頭の論理ブロックのＬＢＡと、転送長（論理ブロックの数）とを含む。リードコマンドは、ＳＳＤ３に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、先頭の論理ブロックのＬＢＡと、転送長（論理ブロックの数）とを含む。
【００３０】
拡張ネームスペース管理コマンドは、通常のネームスペース管理コマンドの拡張コマンドである。
【００３１】
一般に、ホストソフトウェアが指定できるのは、ネームスペース用の論理ブロックアドレス（ＬＢＡ）の数のみであり、実際にこのネームスペース用に割り当てられるべき物理ブロックの個数（不揮発性メモリ容量）を指定することはできない。すなわち、通常、ネームスペースのサイズはそのネームスペース作成動作において要求されたＬＢＡの数に基づく。通常のＳＳＤでは、このネームスペース用に割り当てられる物理ブロックの個数はＳＳＤ内のコントローラによって決定されてしまう。例えば、ネームスペース用に要求されたＬＢＡの数に対応するサイズが９０Ｍバイトであり、１つの物理ブロックの容量が１００Ｍバイトであるならば、通常のＳＳＤのコントローラは、１つの物理ブロックをこのネームスペース用に割り当てるかもしれない。あるいは、ネームスペース用に要求されたＬＢＡの数に対応するサイズが１２０Ｍバイトであり、１つの物理ブロックの容量が１００Ｍバイトであるならば、通常のＳＳＤのコントローラは、２つの物理ブロックをこのネームスペース用に割り当てるかもしれない。しかし、このようなＳＳＤ依存の物理ブロック割り当て方法では、ホストソフトウェアが、異なる特徴（耐久性）を備えたネームスペースそれぞれの作成をＳＳＤに要求することはできない。
【００３２】
拡張ネームスペース管理コマンドは、ＳＳＤ３に対し、ネームスペース用の論理ブロックアドレス（ＬＢＡ）の数を指定できるだけでなく、ＳＳＤ３に対し、このネームスペースのために割り当てるべき物理ブロックの個数を指定することができる。つまり、拡張ネームスペース管理コマンドは、作成されるべきネームスペース用に確保されるべき物理リソースの量（物理ブロックの個数）を示すパラメータを含む。拡張ネームスペース管理コマンドは、ホスト２（ホストソフトウェア）が、ホスト２内のワークロードに適した個数の物理ブロックをネームスペースそれぞれのために確保することを可能にする。通常、ネームスペースに割り当てられる物理ブロックの数が増えるほど、そのネームスペースの耐久性を高めることができる。したがって、ホストソフトウェアは、拡張ネームスペース管理コマンドを使用することにより、異なる特徴（耐久性）を備えたネームスペースそれぞれを作成することができる。
【００３３】
拡張ガベージコレクション制御コマンドは、ホスト２によってＳＳＤ３のガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドの拡張コマンドである。拡張ガベージコレクション制御コマンドは、ＳＳＤ３に対し、ガベージコレクションの対象とすべきネームスペースを指定することができる。つまり、拡張ガベージコレクション制御コマンドは、ガベージコレクションが実行されるべき対象ネームスペースを示すパラメータを含む。
【００３４】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ＳＲＡＭ１５を制御するように構成されたプロセッサである。ＣＰＵ１２は、上述のＦＴＬレイヤの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行する。
【００３５】
これらＦＴＬレイヤ処理およびコマンド処理は、ＣＰＵ１２によって実行されるファームウェアによって制御されてもよい。このファームウェアは、ＣＰＵ１２を、ネームスペース制御部２１、ライトアンプリフィケーション算出部２２、ガベージコレクション動作制御部２３、および消耗／リテンション制御部２４として機能させる。
【００３６】
ネームスペース制御部２１は、複数のネームスペースを管理するためのマルチネームスペース管理機能を有する。ネームスペースは、不揮発性メモリであるＮＡＮＤメモリ５内の一種の領域に相当する。ネームスペース制御部２１は、ホスト２からのネームスペースそれぞれの作成要求に基づいて、複数のネームスペースを作成する。換言すれば、ネームスペース制御部２１は、ホスト２からのネームスペースそれぞれの作成要求に基づいて、ＮＡＮＤメモリ５を複数の領域（ネームスペース）に論理的に分割する。ホスト２は、上述の拡張ネームスペース管理コマンドを使用してネームスペースそれぞれの作成をＳＳＤ３に要求することができる。ネームスペース制御部２１は、これら個々の領域（ネームスペース）に対して、ホスト２によって指定された個数の物理ブロックを割り当てる。これら複数の領域（ネームスペース）は、異なる更新頻度を有する複数種のデータをそれぞれ格納するために使用される。
【００３７】
例えば、頻繁に更新されるタイプのデータ（Ｈｏｔデータ）は、Ｈｏｔデータを格納するための特定の領域にライトされる。Ｈｏｔデータはダイナミックデータと称されることもある。更新の頻度が低いタイプのデータ（Ｃｏｌｄデータ）は、Ｃｏｌｄデータを格納するための特定の別の領域（ｔｉｅｒ）にライトされる。Ｃｏｌｄデータは非ダイナミックデータまたはスタティックデータと称されることもある。
【００３８】
つまり、ＳＳＤ３は物理的には一つのストレージデバイスであるが、ＳＳＤ３内の複数の領域は異なる階層（ｔｉｅｒ）ストレージとして機能する。
【００３９】
これら複数の領域は、複数のネームスペースにそれぞれ関連付けられている。これにより、ホストソフトウェアは、Ｈｏｔデータを特定のネームスペースのＩＤに関連付け、且つＣｏｌｄデータを特定の別のネームスペースのＩＤに関連付けるだけで、これらデータがライトされるべき領域（ｔｉｅｒ）を容易に指定することができる。
【００４０】
もしＨｏｔデータとＣｏｌｄデータとが同じ物理ブロックに混在される環境であったならば、ライトアンプリフィケーションは著しく増加する可能性がある。
【００４１】
なぜなら、ＨｏｔデータとＣｏｌｄデータとが混在する物理ブロックにおいては、Ｈｏｔデータの更新によって物理ブロック内の一部のデータだけが早いタイミングで無効化される一方、この物理ブロック内の残りのデータ部（Ｃｏｌｄデータ）は有効状態に長い間維持される可能性があるためである。
【００４２】
ライトアンプリフィケーション（ＷＡ）は、以下のように定義される。
【００４３】
WA=「ＳＳＤにライトされたデータの総量」 ／ 「ホストからＳＳＤにライトされたデータの総量」
「ＳＳＤにライトされたデータの総量」は、ホストからＳＳＤにライトされたデータの総量とガベージコレクション等によって内部的にＳＳＤにライトされたデータの総量との和に相当する。
【００４４】
ライトアンプリフィケーション（ＷＡ）の増加は、ＳＳＤ３内の物理ブロックそれぞれの書き換え回数（プログラム／イレーズ回数）の増加を引き起こす。つまり、ライトアンプリフィケーション（ＷＡ）が大きい程、物理ブロックのプログラム／イレーズ回数が、そのプログラム／イレーズ回数の上限値に速く達しやすくなる。この結果、ＳＳＤ３の耐久性および寿命の劣化が引き起こされる。
【００４５】
もしＨｏｔデータのみによって物理ブロックが満たされていたならば、このブロック内の全てのデータがそれらデータの更新によって、比較的速いタイミングで無効化される可能性が高い。したがって、このブロックは、ガベージコレクションを実行すること無しで、このブロックを消去することのみによって、再利用することが可能となる。
【００４６】
一方、Ｃｏｌｄデータのみによって物理ブロックが満たされているならば、このブロック内の全てのデータは、長い間、有効状態に維持される。したがって、このブロックは、ガベージコレクションの対象とならない可能性が高い。
【００４７】
本実施形態では、異なる更新頻度を有する複数種のデータは、異なる領域（異なるネームスペース）にライトされる。例えば、Ｈｏｔデータは、ある特定のネームスペース（ＮＳ＃１）に関連付けられた領域にライトされ、Ｃｏｌｄデータは、別の特定のネームスペース（ＮＳ＃ｎ）に関連付けられた別の領域にライトされる。したがって、ＨｏｔデータとＣｏｌｄデータとが同じ物理ブロックに混在するという状況の発生を防止することができる。このことは、ガベージコレクション動作が実行される頻度を減少させることを可能とし、この結果、ライトアンプリフィケーションを低下させることができる。
【００４８】
さらに、本実施形態では、ネームスペース制御部２１は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト２からの要求に基づいて、所望の個数の物理ブロックを領域（ネームスペース）それぞれに個別に割り当てる。
【００４９】
例えば、ホスト２が新たなネームスペースを作成したい時、ホスト２は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをＳＳＤ３に送出する。ネームスペース制御部２１は、ネームスペース（ＮＳ＃１）を作成し、このネームスペース（このネームスペースに関連付けられた領域）に、パラメータによって指定される個数の物理ブロックを割り当てる。
【００５０】
ホスト２は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータの値を変更しながら、ＳＳＤ３に拡張ネームスペース管理コマンドを繰り返し送出する。この結果、複数のネームスペース（領域）が作成され、ＮＡＮＤメモリ５はこれら複数の領域に論理的に分割される。
【００５１】
したがって、個々の領域のサイズ（ＬＢＡの数）と個々の領域に設定すべき耐久性とに基づいて、複数の領域（複数のｔｉｅｒ）にＮＡＮＤメモリ５の物理リソース（物理ブロックの個数）を最適に配分することができる。
【００５２】
ライトアンプリフィケーション算出部２２は、ＳＳＤ３全体のライトアンプリフィケーションではなく、個々のネームスペース（個々の領域）のライトアンプリフィケーションを算出する。これにより、ライトアンプリフィケーション算出部２２は、各ネームスペース（各領域）に対応するライトアンプリフィケーションをホスト２に提供することができる。
【００５３】
ガベージコレクション動作制御部２３は、ネームスペース単位（領域単位）で、ガベージコレクション動作を実行し、これによってＨｏｔデータとＣｏｌｄデータとが同じ物理ブロックに混在してしまうことを防止する。より詳しくは、ガベージコレクション動作制御部２３が拡張ガベージコレクション制御コマンドをホスト２から受信した時、ガベージコレクション動作制御部２３は、拡張ガベージコレクション制御コマンドによって指定される対象ネームスペースに割り当てられている物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択する。そして、ガベージコレクション動作制御部２３は、有効データを対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行する。
【００５４】
さらに、ガベージコレクション動作制御部２３は、ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を、これらネームスペースによって共有される共有フリーブロック群として管理する。つまり、これらフリーブロック群は、ネームスペース間で共有される。ガベージコレクション動作制御部２３は、最小のプログラム／イレーズ回数のフリーブロックをフリーブロック群から選択する。そして、ガベージコレクション動作制御部２３は、選択されたフリーブロックを、上述の対象ネームスペースに対応する領域のコピー先フリーブロックとして割り当てる。
【００５５】
通常、Ｃｏｌｄデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム／イレーズ回数は、Ｈｏｔデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム／イレーズ回数よりも遙かに少ない。なぜなら、ある量のＣｏｌｄデータがＣｏｌｄデータ用の領域に一旦ライトされた後は、このＣｏｌｄデータは頻繁には更新されないか、あるいは、滅多に更新されない場合が多いからである。一方、Ｈｏｔデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム／イレーズ回数は、通常、比較的多い。したがって、最小のプログラム／イレーズ回数のフリーブロックをコピー先フリーブロックとして割り当てる上述の動作は、Ｃｏｌｄデータ用の領域において使用されていたプログラム／イレーズ回数の少ないブロックを、Ｈｏｔデータ用の領域に自動的に割り当てることを可能にする。
【００５６】
消耗／リテンション制御部２４は、メモリセルの消耗を抑えるためのコードとエラー訂正コード（ＥＣＣ）との比率を制御することによって信頼性（データリテンション）と耐久性（ＤＷＰＤ値）との間のトレードオフを最適化するための動作を実行する。これにより、Ｈｏｔデータ用の領域の耐久性を高めることができ、またＣｏｌｄデータ用の領域のデータリテンション（ライトされたデータのリテンション時間）を延ばすことができる。
【００５７】
ＮＡＮＤインタフェース１３は、ＣＰＵ１２の制御の下、ＮＡＮＤメモリ５を制御するように構成されたＮＡＮＤコントローラである。
【００５８】
ＤＲＡＭインタフェース１４は、ＣＰＵ１２の制御の下、ＤＲＡＭ６を制御するように構成されたＤＲＡＭコントローラである。
【００５９】
ＤＲＡＭ６の記憶領域の一部は、ＮＡＮＤメモリ５にライトすべきデータを一時的に格納するためのライトバッファ（ＷＢ）３１として利用されてもよい。また、ＤＲＡＭ６の記憶領域は、ガベージコレクション（ＧＣ）動作中に移動されるデータを一時的に格納するためのＧＣバッファ３２として利用されてもよい。また、ＤＲＡＭ６の記憶領域は、上述のルックアップテーブル３３の格納のために用いられてもよい。ルックアップテーブル３３は、ネームスペース毎に独立したガベージコレクション（ＧＣ）動作を実行できるようにするために、複数のネームスペースにそれぞれ対応する複数のルックアップテーブル（ＬＵＴ＃１、ＬＵＴ＃２、…）に分割されていてもよい。
【００６０】
次に、ホスト２の構成について説明する。
【００６１】
ホスト２は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ４１、オペレーティングシステム４２、ファイルシステム４３が含まれる。
【００６２】
一般に知られているように、オペレーティングシステム４２は、ホスト２全体を管理し、ホスト２内のハードウェアを制御し、アプリケーションがハードウェアおよびＳＳＤ３を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
【００６３】
ファイルシステム４３は、ファイルの操作（作成、保存、更新、削除等）のための制御を行うために使用される。例えば、ＺＦＳ、Ｂｔｒｆｓ、ＸＦＳ、ｅｘｔ４、ＮＴＦＳなどがファイルシステム４２として使用されても良い。あるいは、ファイルオブジェクトシステム（例えば、Ceph Object Storage Daemon）、Key Value Store System (例えば、Rocks DB) がファイルシステム４２として使用されても良い。
【００６４】
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ４１上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
【００６５】
アプリケーションソフトウェアレイヤ１３がリードコマンドまたはライトコマンドのようなリクエストをＳＳＤ３に送出することが必要な時、アプリケーションソフトウェアレイヤ４１は、ＯＳ４２にそのリクエストを送出する。ＯＳ４２はそのリクエストをファイルシステム４３に送出する。ファイルシステム４３は、そのリクエストを、コマンド（リードコマンド、ライトコマンド等）にトランスレートする。ファイルシステム４３は、コマンドを、ＳＳＤ３に送出する。ＳＳＤ３からのレスポンスが受信された際、ファイルシステム４３は、そのレスポンスをＯＳ４２に送出する。ＯＳ４２は、そのレスポンスをアプリケーションソフトウェアレイヤ４１に送出する。
【００６６】
本実施形態では、ホスト２は、上述の拡張ネームスペース管理コマンド、拡張ガベージコレクション制御コマンド等を使用することによって、ＳＳＤ３を賢く管理、制御する。例えば、ファイルシステム４３の階層管理部４４がＨｏｔデータ用のネームスペース（領域）とＣｏｌｄデータ用のネームスペース（領域）の作成が必要な場合を想定する。階層管理部４４は、Ｈｏｔデータ用のネームスペース（領域）に割り当てるべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをＳＳＤ３に送出する。ＳＳＤ３からこのネームスペースのＩＤを含むレスポンスが受信された際、階層管理部４４は、このネームスペースのＩＤをＨｏｔデータ用のネームスペースＩＤとして管理する。次いで、階層管理部４４は、Ｃｏｌｄデータ用のネームスペース（領域）に割り当てるべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをＳＳＤ３に送出する。ＳＳＤ３からこのネームスペースのＩＤを含むレスポンスが受信された際、階層管理部４４は、このネームスペースのＩＤをＣｏｌｄデータ用のネームスペースＩＤとして管理する。
【００６７】
あるＨｏｔデータをＳＳＤ３にライトすることが必要な時、階層管理部４４は、Ｈｏｔデータ用のネームスペースＩＤを含むライトコマンドをＳＳＤ３に送出する。あるＣｏｌｄデータをＳＳＤ３にライトすることが必要な時、階層管理部４４は、Ｃｏｌｄデータ用のネームスペースＩＤを含むライトコマンドをＳＳＤ３に送出する。
【００６８】
あるＨｏｔデータをリードすることが必要な時、階層管理部４４は、Ｈｏｔデータ用のネームスペースＩＤを含むリードコマンドをＳＳＤ３に送出する。あるＣｏｌｄデータをリードすることが必要な時、階層管理部４４は、Ｃｏｌｄデータ用のネームスペースＩＤを含むリードコマンドをＳＳＤ３に送出する。
【００６９】
図２は、通常の階層化ストレージシステムと単一階層ストレージシステムとの関係を示す。
【００７０】
図２の左部に示される階層化ストレージシステムでは、３種類のＳＳＤが用途に応じて使い分けられている。階層（Ｔ１）用のＳＳＤは、小容量・高速ＳＳＤである。小容量・高速ＳＳＤは、例えば、メモリセル当たりに１ビットの情報を格納するＳＬＣ−ＳＳＤであってもよい。このため、階層（Ｔ１）用のＳＳＤは、高価格ＳＳＤである。
【００７１】
階層（Ｔ１）用のＳＳＤは、アクセス（リード／ライト）の頻度の高いデータ、例えば頻繁に更新されるデータのストレージとして使用される。アクセス頻度の高いデータの例には、ファイルシステムのメタデータが含まれる。メタデータは、ファイル内のデータの記憶位置、このデータの作成日時、このデータが更新された日時、このデータがリードされた日時、等の様々な管理情報を含む。このため、メタデータに対するアクセスの頻度（ライトアクセスの頻度、リードアクセスの頻度）は非常に高い。したがって、メタデータの格納に使用される階層（Ｔ１）用のＳＳＤには、高い耐久性が必要とされる。
【００７２】
ＳＳＤの耐久性を示す指標の一つに、ＤＷＰＤ（Drive Write Per Day）がある。例えば、ＤＷＰＤ＝１０は、１Ｔバイトの総容量を有するＳＳＤに関しては、１日当たり１０Ｔバイト（＝１０×１Ｔバイト）のデータのライトを５年間に渡って毎日実行することができることを意味する。階層（Ｔ１）用のＳＳＤには、ＤＷＰＤ＝１０の耐久性が要求される場合がある。
【００７３】
階層化ストレージシステム全体の容量に対する階層（Ｔ１）の容量の割合は、例えば、１パーセントである。メタデータのサイズはファイルの中身のサイズよりも極めて小さいからである。
【００７４】
階層（Ｔ２）用のＳＳＤは、中容量ＳＳＤである。中容量ＳＳＤは、例えば、メモリセル当たりに２ビットの情報を格納するＭＬＣ−ＳＳＤであってもよい。階層（Ｔ２）用のＳＳＤは、メタデータよりも、更新の頻度が低いデータのストレージとして使用される。階層（Ｔ２）用のＳＳＤには、ＤＷＰＤ＝１が要求される場合がある。階層化ストレージシステム全体の容量に対する階層（Ｔ２）の容量の割合は、例えば、４パーセントである。
【００７５】
階層（Ｔ３）用のＳＳＤは、低価格の大容量ＳＳＤである。この大容量ＳＳＤは、例えば、ＭＬＣ−ＳＳＤまたはＴＬＣ−ＳＳＤであってもよい。階層（Ｔ３）用のＳＳＤは、滅多に更新されないデータのストレージとして使用される。階層（Ｔ３）用のＳＳＤにおいては、ＤＷＰＤ＝０．１程度の低い耐久性で十分な場合がある。階層化ストレージシステム全体の容量に対する階層（Ｔ３）の容量の割合は、例えば、９５パーセントである。
【００７６】
図２の右部は、一台のＳＳＤに３つの階層Ｔ１〜Ｔ３の全てのデータを格納する単一階層ストレージシステムの例を示す。単一階層ストレージシステム全体に要求されるＤＷＰＤは、次のように求めることができる。
【００７７】
ＤＷＰＤ＝(10×0.01) + (1×0.04) + (0.1×0.95) ＝0.235
したがって、単一階層ストレージシステムを適用すれば、ＳＳＤに必要とされる容量は大幅に増加するものの、ＳＳＤに必要とされる耐久性は低下される。低価格・大容量のＳＳＤの実現には、ＭＬＣ−ＳＳＤまたはＴＬＣ−ＳＳＤが好適である。ＭＬＣ−ＳＳＤ／ＴＬＣ−ＳＳＤのライト速度は、ＳＬＣ−ＳＳＤのライト速度よりも遅いが、ＭＬＣ−ＳＳＤ／ＴＬＣ−ＳＳＤのリード速度はＳＬＣ−ＳＳＤと同程度である。したがって、低価格・大容量のＳＳＤを使用する単一階層ストレージシステムであっても、複数の階層間の耐久性の関係を最適化するための機能を追加することによって、階層化ストレージシステムとほぼ同等の耐久性・性能を得ることができる。
【００７８】
図３は、本実施形態のＳＳＤ３（ＳＳＤ＃１）にける複数の領域（ネームスペース）間の物理リソースの配分の例を示す。
【００７９】
ＳＳＤ＃１のストレージスペースは、例えば、異なる更新頻度を有する複数種のデータ（Ｈｏｔデータ、Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータ、Ｃｏｌｄデータ）をそれぞれ格納するための領域５１、５２、５３、５４、５５に論理的に分割される。
【００８０】
データは、その更新の頻度に応じて５つのデータグループ（Ｈｏｔデータ、Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータ、Ｃｏｌｄデータ）に分類される。Ｈｏｔデータ、Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータ、Ｃｏｌｄデータの順に、データの更新頻度は減少される。Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータは、ＨｏｔデータとＣｏｌｄデータの中間の更新頻度を有するデータである。
【００８１】
領域５１は、Ｈｏｔデータを格納するための階層ストレージ（ｔｉｅｒ＃１）として使用される。領域５１には、ネームスペース（ＮＳ＃１）が関連付けられている。領域５１は、小容量・高更新頻度のＨｏｔデータ（アクティブデータ）を格納するために利用される。ＳＳＤ＃１の総容量に対する領域５１の容量の割合の例は、１パーセントであってもよい。領域５１に要求されるＤＷＰＤの例は、１０であってもよい。
【００８２】
領域５２は、Ｗａｒｍデータを格納するための階層ストレージ（ｔｉｅｒ＃２）として使用される。領域５２には、ネームスペース（ＮＳ＃２）が関連付けられている。ＳＳＤ＃１の総容量に対する領域５２の容量の割合の例は、２パーセントであってもよい。領域５２に要求されるＤＷＰＤの例は、３であってもよい。
【００８３】
領域５３は、Ｍｉｄｄｌｅデータを格納するための階層ストレージ（ｔｉｅｒ＃３）として使用される。領域５３には、ネームスペース（ＮＳ＃３）が関連付けられている。ＳＳＤ＃１の総容量に対する領域５３の容量の割合の例は、３パーセントであってもよい。領域５３に要求されるＤＷＰＤの例は、１であってもよい。
【００８４】
領域５４は、Ｃｏｏｌデータを格納するための階層ストレージ（ｔｉｅｒ＃４）として使用される。領域５４には、ネームスペース（ＮＳ＃４）が関連付けられている。ＳＳＤ＃１の総容量に対する領域５４の容量の割合の例は、１４パーセントであってもよい。領域５４に要求されるＤＷＰＤの例は、０．３でであってもよい。
【００８５】
領域５５は、Ｃｏｌｄデータを格納するための階層ストレージ（ｔｉｅｒ＃ｎ）として使用される。領域５５には、ネームスペース（ＮＳ＃ｎ）が関連付けられている。領域５５は、大容量・低更新頻度のＣｏｌｄデータ（非アクティブデータ）を格納するために利用される。ＳＳＤ＃１の総容量に対する領域５５の容量の割合の例は、８０パーセントであってもよい。例えば、領域５５の更新の頻度は、領域５１の更新の頻度の１／１００程度である。したがって、領域５５に要求されるＤＷＰＤの例は、０．１であってもよい。
【００８６】
このように、Ｈｏｔデータ、Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータ、Ｃｏｌｄデータは異なる領域にそれぞれ格納される。よって、更新頻度が異なるデータ、例えばＨｏｔデータとＣｏｌｄデータとが同じブロックに混在するという状況の発生を防止することができる。この結果、ＳＳＤ３のライトアンプリフィケーションを低下させることができる。
【００８７】
図３のような比率で物理リソースが複数の領域５１〜５５に配分された場合、ＳＳＤ３（ＳＳＤ＃１）全体に要求されるＤＷＰＤは、次のように求めることができる。
【００８８】
ＤＷＰＤ＝(10×0.01) + (3×0.02) + (1×0.03) + (0.3×0.14) + (0.1×0.8)＝0.312  このことは、原理的には、領域５１〜５５に論理的に分割されたＳＳＤ３（ＳＳＤ＃１）は、大容量・低価格のＳＳＤによって実現可能であることを意味する。
【００８９】
本実施形態では、上述したように、ホスト２は、確保すべき物理ブロックの個数をネームスペース毎に指定することするができ、ＳＳＤ３は、指定された個数の物理ブロックを個々の領域（ｔｉｅｒ）に個別に割り当てることができる。
【００９０】
もし複数のｔｉｅｒが異なるＳＳＤによって実現されているならば、使用されるＳＳＤ自体を交換しないかぎり、個々のｔｉｅｒのサイズを変えることはできない。本実施形態では、同じ一つのＳＳＤが複数のｔｉｅｒ（領域）に論理的に分割されている。したがって、個々のｔｉｅｒのサイズを、ワークロードおよび各ｔｉｅｒ（領域）に設定すべき耐久性に合わせて最適化することができる。
【００９１】
つまり、本実施形態では、領域５１〜５５に対して幾つの物理ブロックを割り当てるかをホスト２の制御によって領域毎に決定することができる。
【００９２】
例えば、ホストソフトウェアは、Ｈｏｔデータ用の領域５１（ｔｉｅｒ＃１）に関しては、Ｈｏｔデータの予期される総量（ユーザデータ容量）を超える十分な個数の物理ブロックの割り当てをＳＳＤ３に要求してもよい。この要求に応答して、ＳＳＤ３のコントローラ４は、Ｈｏｔデータ用の領域５１（ｔｉｅｒ＃１）に専用の、指定された個数の物理ブロックを、このＨｏｔデータ用の領域５１（ｔｉｅｒ＃１）に割り当てる。例えば、Ｈｏｔデータの予期される総量（ユーザデータ容量）が１００Ｇバイトである場合、ホストソフトウェアは、２００Ｇバイトに相当する個数の物理ブロックの割り当てを要求してもよい。この場合、コントローラ４は、２００Ｇバイトに相当する個数の物理ブロックを領域５１（ｔｉｅｒ＃１）に割り当てる。この結果、領域５１（ｔｉｅｒ＃１）のユーザ領域の２倍の容量に相当する個数の物理ブロックが領域５１（ｔｉｅｒ＃１）用に割り当てられる。２００Ｇバイトからユーザ領域の容量を引いた残りの１００ＧＢの物理リソースは、領域５１（ｔｉｅｒ＃１）のオーバープロビジョン領域として機能する。
【００９３】
ここで、オーバープロビジョン領域について説明する。
【００９４】
オーバープロビジョニングは、ホスト２には利用可能なユーザスペース（ユーザアクセス可能ＬＢＡスペース）として見えないＳＳＤ３内のストレージ容量を割り当てることを意味する。ホスト２にユーザアクセス可能ＬＢＡスペースとして見えないストレージ容量が割り当てられたスペースが、オーバープロビジョン領域である。オーバープロビジョニングにより、ユーザアクセス可能ＬＢＡスペース（ユーザ領域の容量）を超える容量の物理ブロック群が割り当てられる。
【００９５】
通常のＳＳＤにおいては、ホストはあるネームスペース用のＬＢＡの数を指定することはできても、このネームスペース用に幾つの物理ブロックを割り当てるべきかを指定することはできない。また、通常は、ただ一つのオーバープロビジョン領域のみが、１台のＳＳＤ内に設定される。
【００９６】
これに対し、本実施形態では、ホスト２によって指定された個数の物理ブロックを個々のネームスペース（領域）に割り当てることができ、さらに、この結果、所望の容量のオーバープロビジョン領域を領域毎に個別に設定することができる。
【００９７】
例えば、領域５１の総容量（総ＮＳ＃１容量）は、領域５１に割り当てられた物理ブロックの総数によって決定される。領域５１は、ユーザ領域５１ａとオーバープロビジョン領域５１ｂとを含む。領域５１の総容量からユーザ領域５１ａの容量を引いた残りの容量が、オーバープロビジョン領域５１ｂとして機能する。ユーザ領域５１ａは、ＬＢＡに割り当てられた物理ブロック群である。オーバープロビジョン領域５１ｂの存在によって、領域５１内のユーザ領域５１ａの耐久性・性能が改善される。
【００９８】
他の各領域に関しても、この領域に割り当てられた物理ブロックの総数によって決定される容量からこの領域内のユーザ領域の容量を引いた残りの容量が、この領域内のオーバープロビジョン領域として機能する。
【００９９】
Ｈｏｔデータ用の領域５１と同様に、ホストソフトウェアは、Ｗａｒｍデータ用の領域５２（ｔｉｅｒ＃２）に関しても、Ｗａｒｍデータの予期される総量（ユーザ領域の容量）を超える個数の物理ブロックの割り当てをＳＳＤ３に要求してもよい。この要求に応答して、ＳＳＤ３のコントローラ４は、Ｗａｒｍデータ用の領域５２に専用の、指定された個数の物理ブロックを、このＷａｒｍデータ用の領域５２（ｔｉｅｒ＃２）に割り当てる。例えば、Ｗａｒｍデータの予期される総量（ユーザデータ容量）が２００Ｇバイトであり、ホストソフトウェアによって２５０Ｇバイトに相当する個数の物理ブロックの割り当てが要求されたならば、コントローラ４は、２５０Ｇバイトに相当する個数の物理ブロックを領域５２（ｔｉｅｒ＃２）に割り当てる。この結果、領域５２（ｔｉｅｒ＃２）のユーザ領域の容量よりも５０ＧＢだけ大きい物理リソースが領域５２（ｔｉｅｒ＃２）に割り当てられる。２５０Ｇバイトの物理リソースからユーザ領域の容量を引いた残りの５０ＧＢの物理リソースは、領域５２（ｔｉｅｒ＃２）のオーバープロビジョン領域として機能する。
【０１００】
同様にして、ホストソフトウェアは、残りの全ての領域の各々について、割り当てるべき物理ブロックの量を指定する。
【０１０１】
例えば、ホストソフトウェアは、Ｃｏｌｄデータ用の領域５５（ｔｉｅｒ＃ｎ）に関しては、Ｃｏｌｄデータの予期される総量（ユーザデータの容量）を考慮して決定される最小個数の物理ブロックの割り当てをＳＳＤ３に要求してもよい。この要求に応答して、コントローラ４は、Ｃｏｌｄデータ用の領域５５（ｔｉｅｒ＃ｎ）に専用の、指定された個数の物理ブロックを、このＣｏｌｄデータ用の領域５５（ｔｉｅｒ＃ｎ）に割り当てる。例えば、Ｃｏｌｄデータの予期される総量（ユーザデータ容量）が８０００Ｇバイトであり、ホストソフトウェアによって８００１Ｇバイトに相当する個数の物理ブロックの割り当てが要求されたならば、コントローラ４は、８００１Ｇバイトに相当する個数の物理ブロックを領域５５（ｔｉｅｒ＃ｎ）に割り当てる。この結果、領域５５（ｔｉｅｒ＃ｎ）のユーザ領域の容量よりも１ＧＢだけ大きい物理リソースが領域５５（ｔｉｅｒ＃ｎ）に割り当てられる。８００１Ｇバイトの物理リソースからユーザデータ容量を引いた残りの１ＧＢの物理リソースは、領域５５（ｔｉｅｒ＃ｎ）のオーバープロビジョン領域として機能する。
【０１０２】
このように、ＳＳＤ３は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト２からの要求に基づいて、個々の領域に対して、指定された個数の物理ブロックを割り当てる。この結果、ユーザ領域の容量に対するオーバープロビジョン領域の容量の比率を、個々の領域毎に、最適化することが可能となる。例えば、上の階層になるほど、割り当てられるオーバープロビジョン領域の量が多くなるように、個々の領域に割り当てられる物理ブロックの個数が調整されても良い。この場合、例えば、領域５５内のユーザ領域の容量に対する領域５５内のオーバープロビジョン領域の容量の比率は、領域５１内のユーザ領域の容量に対する領域５１内のオーバープロビジョン領域の容量の比率よりも小さくなる。
【０１０３】
領域５１においては、大きなサイズのオーバープロビジョン領域の活用によって、領域５１のライトアンプリフィケーションを効率よく減少することができる。なぜなら、たとえ領域５１のユーザ領域５１ａの物理ブロック群が１００Ｍバイトのデータで満たされ、この結果、これら各物理ブロックがそのブロックの消去無しで利用可能ページを含まない状態になっても、これら物理ブロックの代わりにオーバープロビジョン領域５１ｂの物理ブロック群をデータのライトに使用することができるからである。よって、領域５１のガベージコレクション動作が実行されるタイミングを十分に遅らせることができる。オーバープロビジョン領域５１ｂの物理ブロック群にデータがライトされるにつれ、ユーザ領域５１ａの物理ブロック群内のデータはその更新によって無効化される。全てのデータが無効化された物理ブロックはそのガベージコレクションなしで再利用することができる。したがって、領域５１のライトアンプリフィケーションを効率よく減少することができるので、領域５１の物理ブロック群のライト／イレーズ回数を低く抑えることができる。このことは、領域５１の耐久性を向上させることできることを意味している。
【０１０４】
領域５５のオーバープロビジョン領域は小さいので、領域５５のライトアンプリフィケーションは増加する。しかし、Ｃｏｌｄデータ用の領域５５の更新頻度は、Ｈｏｔデータ用の領域５１の更新頻度に比べて、遙かに低い。例えば、Ｃｏｌｄデータ用の領域５５の更新頻度は、Ｈｏｔデータ用の領域５１の更新頻度の１００分の１である。つまり、領域５１が１００回書き換えられる間に、領域５５は１回しか書き換えられないので、Ｃｏｌｄデータの領域５５の物理ブロックそれぞれのプログラム／イレーズ回数は非常に少ない。したがって、Ｃｏｌｄデータの領域５５に関しては、たとえそのライトアンプリフィケーションが大きくても、Ｃｏｌｄデータの領域５５の物理ブロック群のプログラム／イレーズ回数が、ＳＳＤ３のプログラム／イレーズ回数上限値にすぐに達してしまうという現象は発生しない。
【０１０５】
図４は、複数の領域５１〜５５とこれら領域５１〜５５にライトされるデータとの関係を示す。
【０１０６】
ＮＡＮＤメモリ５は、ネームスペースＮＳ＃１〜ＮＳ＃５に対応する領域５１〜５５に論理的に分割されている。ネームスペースＮＳ＃１のＩＤ（ＮＳＩＤ＝１）に関連付けられたライトデータ、つまり、Ｈｏｔデータは、領域５１にライトされる。ネームスペースＮＳ＃２のＩＤ（ＮＳＩＤ＝２）に関連付けられたライトデータ、つまり、Ｗａｒｍデータは、領域５２にライトされる。同様にして、ネームスペースＮＳ＃ｎのＩＤ（ＮＳＩＤ＝ｎ）に関連付けられたライトデータ、つまり、Ｃｏｌｄデータは、領域５５にライトされる。
【０１０７】
図５は、ＳＳＤ３によるネームスペース管理を示す。
【０１０８】
ここでは、複数のネームスペースＮＳ＃１〜ＮＳ＃ｎが作成されている場合を想定する。ネームスペースＮＳ＃１には、０〜Ｅ０の論理アドレス空間（ＬＢＡ空間）Ａ１が割り当てられている。ネームスペースＮＳ＃２には、０〜Ｅ１の論理アドレス空間（ＬＢＡ空間）Ａ２が割り当てられている。同様に、ネームスペースＮＳ＃ｎには、０〜Ｅｎの論理アドレス空間（ＬＢＡ空間）Ａｎが割り当てられている。
【０１０９】
本実施形態では、ルックアップテーブルＬＵＴは、ネームスペース毎に分割されている。つまり、ネームスペースＮＳ＃１〜ＮＳ＃ｎに対応するｎ個のルックアップテーブルＬＵＴ＃１〜ＬＵＴ＃ｎがＳＳＤ３のコントローラ４によって管理される。
【０１１０】
ルックアップテーブルＬＵＴ＃１は、ネームスペースＮＳ＃１のＬＢＡ空間Ａ１とＮＡＮＤメモリ５の物理アドレスとの間のマッピングを管理する。ルックアップテーブルＬＵＴ＃２は、ネームスペースＮＳ＃２のＬＢＡ空間Ａ２とＮＡＮＤメモリ５の物理アドレスとの間のマッピングを管理する。ルックアップテーブルＬＵＴ＃ｎは、ネームスペースＮＳ＃ｎのＬＢＡ空間ＡｎとＮＡＮＤメモリ５の物理アドレスとの間のマッピングを管理する。
【０１１１】
コントローラ１４は、ルックアップテーブルＬＵＴ＃１〜ＬＵＴ＃ｎを使用することによって、ネームスペース（領域）毎に独立してガベージコレクション動作を行う事ができる。
【０１１２】
管理データ１００は、ネームスペースＮＳ＃１〜ＮＳ＃ｎとこれらネームスペースＮＳ＃１〜ＮＳ＃ｎに割り当てられた物理ブロックの個数との間の関係を示す情報を保持しても良い。
【０１１３】
本実施形態においては、ガベージコレクションによって生成されたフリーブロックは、ネームスペースＮＳ＃１〜ＮＳ＃ｎ間で共有することができる。
【０１１４】
図６は、拡張ネームスペース管理コマンドを示す。
【０１１５】
拡張ネームスペース管理コマンドは、ネームスペースの作成および削除を含むネームスペース管理のために使用される。拡張ネームスペース管理コマンドは、以下のパラメータを含む。
【０１１６】
（１）作成／削除
（２）ＬＢＡ範囲
（３）物理リソースサイズ
（４）ｔｉｅｒ属性（オプショナル）
作成／削除のパラメータの値０ｈは、ネームスペースの作成をＳＳＤ３に要求する。作成／削除のパラメータの値１ｈは、ネームスペースの削除をＳＳＤ３に要求する。ネームスペースの削除を要求する場合には、削除対象のネームスペースのＩＤを示すパラメータが拡張ネームスペース管理コマンドに設定される。
【０１１７】
ＬＢＡ範囲のパラメータは、ネームスペースのＬＢＡ範囲（ＬＢＡ０〜ｎ−１）を示す。このＬＢＡ範囲は、このネームスペースのユーザ領域にマッピングされる。
【０１１８】
物理リソースサイズのパラメータは、ネームスペース用に確保されるべき物理ブロックの個数を示す。
【０１１９】
別の実施形態では、拡張ネームスペース管理コマンドは、物理リソースサイズのパラメータ代わりに、オーバープロビジョンのサイズを示すパラメータを含んでいてもよい。
【０１２０】
オーバープロビジョンのサイズのパラメータは、ネームスペースに関連付けられた領域内のオーバープロビジョン領域用に確保されるべき物理ブロックの個数を示す。もし拡張ネームスペース管理コマンドがオーバープロビジョンのサイズのパラメータを含むならば、ＳＳＤ３は、ネームスペースを作成し、且つこのネームスペースに関連付けられた領域内のオーバープロビジョン領域に、このパラメータによって指定された個数の物理ブロックを割り当ててもよい。
【０１２１】
ｔｉｅｒ属性のパラメータは、このネームスペースに対応する階層属性を示す。ｔｉｅｒ属性のパラメータの値とｔｉｅｒ属性との関係は、次の通りである。
【０１２２】
０００：  Ｈｏｔ
００１：  Ｗａｒｍ
０１０：  Ｍｉｄｄｌｅ
０１１：  Ｃｏｏｌ
１００：  Ｃｏｌｄ
図７は、ホスト２とＳＳＤ３とによって実行される物理リソース割り当て処理のシーケンスを示す。
【０１２３】
ホスト２は、ネームスペース（Ｈｏｔデータ用の領域）の作成を要求する拡張ネームスペース管理コマンドをＳＳＤ３に送出する。この拡張ネームスペース管理コマンドは、Ｈｏｔデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。ＳＳＤ３内の一つの物理ブロックの容量はＳＳＤ３からホスト２に報告されているので、ホスト２は、Ｈｏｔデータ用の領域に適した個数の物理ブロックを要求することができる。この拡張ネームスペース管理コマンドの受信に応答して、ＳＳＤ３のコントローラ４は、ネームスペース（ＮＳ＃１）を作成し、このネームスペース（ＮＳ＃１）に、指定された個数の物理ブロックを割り当てる（ステップＳ１１）。コントローラ４は、コマンド完了を示すレスポンスをホスト２に送出する。このレスポンスは、作成されたネームスペースのＩＤを含んでいてもよい。
【０１２４】
ホスト２は、次のネームスペース（Ｗａｒｍデータ用の領域）の作成を要求する拡張ネームスペース管理コマンドをＳＳＤ３に送出する。この拡張ネームスペース管理コマンドは、Ｗａｒｍデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、ＳＳＤ３のコントローラ４は、ネームスペース（ＮＳ＃２）を作成し、このネームスペース（ＮＳ＃２）に、指定された個数の物理ブロックを割り当てる（ステップＳ１２）。コントローラ４は、コマンド完了を示すレスポンスをホスト２に送出する。このレスポンスは、作成されたネームスペースのＩＤを含んでいてもよい。
【０１２５】
同様にして、ネームスペース（Ｍｉｄｄｌｅデータ用の領域）、ネームスペース（Ｃｏｏｌデータ用の領域）が作成される。
【０１２６】
そして、ホスト２は、次のネームスペース（Ｃｏｌｄデータ用の領域）の作成を要求する拡張ネームスペース管理コマンドをＳＳＤ３に送出する。この拡張ネームスペース管理コマンドは、Ｃｏｌｄデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、ＳＳＤ３のコントローラ４は、ネームスペース（ＮＳ＃ｎ）を作成し、このネームスペース（ＮＳ＃ｎ）に、指定された個数の物理ブロックを割り当てる（ステップＳ１３）。コントローラ４は、コマンド完了を示すレスポンスをホスト２に送出する。このレスポンスは、作成されたネームスペースのＩＤを含んでいてもよい。
【０１２７】
このようにして、指定された個数の物理ブロックをネームスペースに割り当てながらネームスペースを作成する処理が繰り返されることによって、ＮＡＮＤメモリ５は複数の領域に論理的に分割され、さらに領域毎に、指定された個数の物理ブロックが割り当てられる。
【０１２８】
図８のフローチャートは、ＳＳＤ３によって実行される物理リソース割り当て処理の手順を示す。
【０１２９】
ＳＳＤ３のコントローラ４は、拡張ネームスペース管理コマンドをホスト２から受信する（ステップＳ２１）。コントローラ４は、拡張ネームスペース管理コマンド内の作成／削除パラメータに基づいて、拡張ネームスペース管理コマンドがネームスペースの作成を要求しているか否かを判定する（ステップＳ２２）。
【０１３０】
拡張ネームスペース管理コマンドがネームスペースの作成を要求しているならば（ステップＳ２２のＹＥＳ）、コントローラ４は、拡張ネームスペース管理コマンド内の物理リソースパラメータによって指定された個数の物理ブロックを確保可能か否かを、フリーブロック群内の残り物理ブロックの個数に基づいて判定する（ステップＳ２３）。
【０１３１】
物理ブロックの個数が、指定された個数以上であるならば（ステップＳ２３のＹＥＳ）、コントローラ４は、ネームスペースを作成し、指定された個数の物理ブロックを、このネームスペースに関連付けられた領域に割り当てる（ステップＳ２４）。コントローラ４は、コマンド完了をホスト２に通知する（ステップＳ２５）。
【０１３２】
残り物理ブロックの個数が、指定された個数よりも少ないならば（ステップＳ２３のＮＯ）、コントローラ４は、エラーをホスト２に通知する（ステップＳ２６）。エラーが報告されたホスト２は、確保すべき物理ブロックの個数を変更してもよい。あるいは、エラーのレスポスが通知されたホスト２は、各ネームスペース用に確保すべき物理ブロックの個数を指定しながらネームスペースそれぞれを作成する処理を、最初からやり直しても良い。
【０１３３】
図９のフローチャートは、ホスト２よって実行されるライトコマンド送出処理の手順を示す。
【０１３４】
ホスト２は、データをライトする要求が発生した時（ステップＳ３１のＹＥＳ）、このライトデータ（書き込むべきデータ）を、Ｈｏｔデータ、Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータ、またはＣｏｌｄデータとして分類する（ステップＳ３２）。ホスト２は、例えば、メタデータ、ファイルの中身（コンテンツ）といったデータ種別に応じて、ライトデータ（書き込むべきデータ）を、Ｈｏｔデータ、Ｗａｒｍデータ、Ｍｉｄｄｌｅデータ、Ｃｏｏｌデータ、またはＣｏｌｄデータとして分類してもよい。
【０１３５】
ライトデータがＨｏｔデータであるならば（ステップＳ３３のＹＥＳ）、ホスト２は、Ｈｏｔデータ用のネームスペースのＩＤ（ＮＳＩＤ＃１）を含むライトコマンドをＳＳＤ３に送出する（ステップＳ３６）。
【０１３６】
ライトデータがＷａｒｍデータであるならば（ステップＳ３４のＹＥＳ）、ホスト２は、Ｗａｒｍデータ用のネームスペースのＩＤ（ＮＳＩＤ＃２）を含むライトコマンドをＳＳＤ３に送出する（ステップＳ３７）。
【０１３７】
ライトデータがＣｏｌｄデータであるならば（ステップＳ３５のＹＥＳ）、ホスト２は、Ｃｏｌｄデータ用のネームスペースのＩＤ（ＮＳＩＤ＃ｎ）を含むライトコマンドをＳＳＤ３に送出する（ステップＳ３８）。
【０１３８】
図１０は、ライトコマンドを示す。
【０１３９】
ライトコマンドは、以下のパラメータを含む。
【０１４０】
（１）先頭ＬＢＡ
（２）論理ブロックの数
（３）ネームスペースＩＤ
先頭ＬＢＡのパラメータは、書き込まれるべきデータの先頭ＬＢＡを示す。
【０１４１】
論理ブロックの数のパラメータは、書き込まれるべきデータに対応する論理ブロックの数（つまり、転送長）を示す。
【０１４２】
ネームスペースＩＤのパラメータは、データがライトされるべきネームスペースのＩＤを示す。
【０１４３】
図１１は、ホスト２とＳＳＤ３とによって実行されるライト動作の処理シーケンスを示す。
【０１４４】
ホスト２は、ライトコマンドをＳＳＤ３に送出し、ライトデータをＳＳＤ３に送出する。ＳＳＤ３のコントローラ４は、ライトデータをライトバッファ（ＷＢ）３１にライトし（ステップＳ４１）、そしてコマンド完了command completionのレスポンスをホスト２に通知する。この後、コントローラ４は、ライトデータを、ライトコマンド内のネームスペースＩＤによって指定されるネームスペースに関連付けられた領域内の利用可能ブロックにライトする（ステップＳ４２）。
【０１４５】
図１２は、ＳＳＤ３によって実行されるガベージコレクション動作およびコピー先フリーブロック割り当て動作を示す。
【０１４６】
上述したように、ガベージコレクション動作はネームスペース毎に実行される。ネームスペース（ＮＳ＃１）のガベージコレクション動作においては、ＳＳＤ３のコントローラ４は、ネームスペース（ＮＳ＃１）に関連付けられた領域５１内の物理ブロック（アクティブブロック）から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ４は、ルックアップテーブルＬＵＴ＃１を参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。
【０１４７】
コントローラ４は、ネームスペース間で共有されるフリーブロック群を含むフリーブロックプール（フリーブロックリスト）６０を管理する。コントローラ４は、フリーブロック群から、最小のプログラム／イレーズ回数のフリーブロックを選択する。コントローラ４は、選択されたフリーブロックを、ネームスペース（ＮＳ＃１）に、コピー先フリーブロックＢ１０００として割り当てる。コントローラ４は、ガベージコレクションの対象物理ブロック群（ここでは、ブロックＢ０〜Ｂ３）からコピー先フリーブロックＢ１０００に全ての有効データをコピーする。そして、コントローラ４は、ルックアップテーブルＬＵＴ＃１を更新して、有効データをコピー先フリーブロックＢ１０００にマッピングする。ガベージコレクションの対象物理ブロック群Ｂ０〜Ｂ３は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。
【０１４８】
他のネームスペース（ＮＳ＃２〜ＮＳ＃ｎ）についても同様にしてガベージコレクション動作が実行される。
【０１４９】
例えば、ネームスペース（ＮＳ＃ｎ）のガベージコレクション動作においては、コントローラ４は、ネームスペース（ＮＳ＃ｎ）に関連付けられた領域５５内の物理ブロック（アクティブブロック）から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ４は、ルックアップテーブルＬＵＴ＃ｎを参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。
【０１５０】
コントローラ４は、フリーブロック群から、最小のプログラム／イレーズ回数のフリーブロックを選択する。コントローラ４は、選択されたフリーブロックを、ネームスペース（ＮＳ＃ｎ）に、コピー先フリーブロックＢ１００１として割り当てる。コントローラ４は、ガベージコレクションの対象物理ブロック群（ここでは、ブロックＢ２０００〜Ｂ２００３）からコピー先フリーブロックＢ１００１に全ての有効データをコピーする。そして、コントローラ４は、ルックアップテーブルＬＵＴ＃ｎを更新して、有効データをコピー先フリーブロックＢ１００１にマッピングする。ガベージコレクションの対象物理ブロック群Ｂ２０００〜Ｂ２００３は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。
【０１５１】
上述したように、ネームスペース（ＮＳ＃ｎ）の更新の頻度はネームスペース（ＮＳ＃１）の更新の頻度よりも遙かに低いので、ネームスペース（ＮＳ＃ｎ）のガベージコレクションによって作り出されたフリーブロックのプログラム／イレーズ回数は少ない。本実施形態のガベージコレクション動作においては、ネームスペース（ＮＳ＃１）のガベージコレクションが実行される度に、ネームスペース（ＮＳ＃ｎ）で過去に使用されていた物理ブロックがネームスペース（ＮＳ＃１）のコピー先フリーブロックとして割り当てられる。したがって、ネームスペース（ＮＳ＃ｎ）で使用されていた、プログラム／イレーズ回数の少ない物理ブロックを、ネームスペース（ＮＳ＃１）において有効に再利用することが可能となる。この結果、ネームスペース（ＮＳ＃１）の耐久性を改善することができる。
【０１５２】
さらに、コントローラ４は、ネームスペース（ＮＳ＃１）の耐久性を改善するために、ネームスペース（ＮＳ＃１）とネームスペース（ＮＳ＃ｎ）との間で物理ブロックを入れ替えるウェアレベリング処理を実行することもできる。例えば、ネームスペース（ＮＳ＃１）で使用されている物理ブロックのいずれかの物理ブロックのプログラム／イレーズ回数が閾回数（閾回数はプログラム／イレーズ回数の上限よりも少ない値に設定されている）に達したならば、コントローラ４は、この物理ブロックを、ネームスペース（ＮＳ＃ｎ）内の最小プログラム／イレーズ回数の物理ブロックと入れ替えてもよい。
【０１５３】
図１３は、ＳＳＤ３によって実行されるライトデータ量カウント処理を示す。
【０１５４】
ＳＳＤ３のコントローラ４は、ＳＳＤ３全体のライトアンプリフィケーションではなく、ネームスペース毎のライトアンプリフィケーションを算出することができる。このために、コントローラ４は、ホスト２によってライトされたデータの量をカウントするためのカウンタとガベージコレクション動作によってライトされたデータの量をカウントするためのカウンタとの２種類のカウンタを、ネームスペース毎に備える。
【０１５５】
カウンタ６１およびカウンタ６２は、ネームスペース（ＮＳ＃１）のライトアンプリフィケーションを算出するために使用される。カウンタ６１は、ホスト２によってネームスペース（ＮＳ＃１）、つまり領域５１、にライトされたデータの量をカウントする。カウンタ６２は、ネームスペース（ＮＳ＃１）のガベージコレクションによってネームスペース（ＮＳ＃１）、つまり領域５１、にライトされたデータの量をカウントする。
【０１５６】
カウンタ６３およびカウンタ６４は、ネームスペース（ＮＳ＃２）のライトアンプリフィケーションを算出するために使用される。カウンタ６３は、ホスト２によってネームスペース（ＮＳ＃２）、つまり領域５２、にライトされたデータの量をカウントする。カウンタ６４は、ネームスペース（ＮＳ＃２）のガベージコレクションによってネームスペース（ＮＳ＃２）、つまり領域５２、にライトされたデータの量をカウントする。
【０１５７】
カウンタ６５およびカウンタ６６は、ネームスペース（ＮＳ＃ｎ）のライトアンプリフィケーションを算出するために使用される。カウンタ６５は、ホスト２によってネームスペース（ＮＳ＃ｎ）、つまり領域５５、にライトされたデータの量をカウントする。カウンタ６６は、ネームスペース（ＮＳ＃ｎ）のガベージコレクションによってネームスペース（ＮＳ＃ｎ）、つまり領域５５、にライトされたデータの量をカウントする。
【０１５８】
図１４のフローチャートは、ＳＳＤ３によって実行されるライトデータ量カウント処理の手順を示す。
【０１５９】
ＳＳＤ３のコントローラ４がホスト２からライトコマンドを受信した時、コントローラ４は、ライトコマンド内に含まれるネームスペースＩＤに基づいて、ライトデータがライトされるべき対象ネームスペース（領域）を決定する（ステップＳ４１〜Ｓ４３）。そして、コントローラ４は、ライトデータを対象ネームスペース（領域）にライトすると共に、ライトされるデータの量をカウントする（ステップＳ４４〜Ｓ４６）。
【０１６０】
例えば、対象ネームスペース（領域）がネームスペース（ＮＳ＃１）であれば（ステップＳ４１のＹＥＳ）、コントローラ４は、カウンタ６１を使用して、ネームスペース（ＮＳ＃１）にライトされるデータの量をカウントする（ステップＳ４４）。ステップＳ４４では、カウンタ６１の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。
【０１６１】
対象ネームスペース（領域）がネームスペース（ＮＳ＃２）であれば（ステップＳ４２のＹＥＳ）、コントローラ４は、カウンタ６３を使用して、ネームスペース（ＮＳ＃２）にライトされるデータの量をカウントする（ステップＳ４５）。ステップＳ４５では、カウンタ６３の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。
【０１６２】
対象ネームスペース（領域）がネームスペース（ＮＳ＃ｎ）であれば（ステップＳ４３のＹＥＳ）、コントローラ４は、カウンタ６５を使用して、ネームスペース（ＮＳ＃ｎ）にライトされるデータの量をカウントする（ステップＳ４６）。ステップＳ４６では、カウンタ６５の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。
【０１６３】
ネームスペース（ＮＳ＃１）のガベージコレクション動作が実行される時（ステップＳ５１のＹＥＳ）、コントローラ４は、カウンタ６２を使用して、このガベージコレクション動作によってネームスペース（ＮＳ＃１）にライトされるデータの量をカウントする（ステップＳ５４）。ステップＳ５４では、カウンタ６２のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。
【０１６４】
ネームスペース（ＮＳ＃２）のガベージコレクション動作が実行される時（ステップＳ５２のＹＥＳ）、コントローラ４は、カウンタ６４を使用して、このガベージコレクション動作によってネームスペース（ＮＳ＃２）にライトされるデータの量をカウントする（ステップＳ５５）。ステップＳ５５では、カウンタ６４のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。
【０１６５】
ネームスペース（ＮＳ＃ｎ）のガベージコレクション動作が実行される時（ステップＳ５３のＹＥＳ）、コントローラ４は、カウンタ６６を使用して、このガベージコレクション動作によってネームスペース（ＮＳ＃ｎ）にライトされるデータの量をカウントする（ステップＳ５６）。ステップＳ５６では、カウンタ６６のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。
【０１６６】
図１５のフローチャートは、ＳＳＤ３によって実行されるライトアンプリフィケーション（ＷＡ）算出処理の手順を示す。
【０１６７】
ＳＳＤ３のコントローラ４は、ホスト２によってネームスペース（ＮＳ＃１）にライトされたデータの量（カウンタ６１のカウント値）を取得する（ステップＳ６１）。コントローラ４は、ネームスペース（ＮＳ＃１）のガベージコレクション動作によってネームスペース（ＮＳ＃１）にライトされたデータの量（カウンタ６２のカウント値）を取得する（ステップＳ６２）。コントローラ４は、カウンタ６１のカウント値とカウンタ６２のカウント値とに基づいて、ネームスペース（ＮＳ＃１）のライトアンプリフィケーションを算出する（ステップＳ６３）。ネームスペース（ＮＳ＃１）のライトアンプリフィケーション（ＮＳ＃１−ＷＡ）は、次のように得られる。
【０１６８】
ＮＳ＃１−ＷＡ＝「カウンタ６１のカウント値＋カウンタ６２のカウント値」／「カウンタ６１のカウント値」
コントローラ４は、ホスト２によってネームスペース（ＮＳ＃２）にライトされたデータの量（カウンタ６３のカウント値）を取得する（ステップＳ６４）。コントローラ４は、ネームスペース（ＮＳ＃２）のガベージコレクション動作によってネームスペース（ＮＳ＃２）にライトされたデータの量（カウンタ６４のカウント値）を取得する（ステップＳ６５）。コントローラ４は、カウンタ６３のカウント値とカウンタ６４のカウント値とに基づいて、ネームスペース（ＮＳ＃２）のライトアンプリフィケーションを算出する（ステップＳ６６）。ネームスペース（ＮＳ＃２）のライトアンプリフィケーション（ＮＳ＃２−ＷＡ）は、次のように得られる。
【０１６９】
ＮＳ＃２−ＷＡ＝「カウンタ６３のカウント値＋カウンタ６４のカウント値」／「カウンタ６３のカウント値」
コントローラ４は、ホスト２によってネームスペース（ＮＳ＃ｎ）にライトされたデータの量（カウンタ６５のカウント値）を取得する（ステップＳ６７）。コントローラ４は、ネームスペース（ＮＳ＃ｎ）のガベージコレクション動作によってネームスペース（ＮＳ＃ｎ）にライトされたデータの量（カウンタ６６のカウント値）を取得する（ステップＳ６８）。コントローラ４は、カウンタ６５のカウント値とカウンタ６６のカウント値とに基づいて、ネームスペース（ＮＳ＃ｎ）のライトアンプリフィケーションを算出する（ステップＳ６９）。ネームスペース（ＮＳ＃ｎ）のライトアンプリフィケーション（ＮＳ＃ｎ−ＷＡ）は、次のように得られる。
【０１７０】
ＮＳ＃ｎ−ＷＡ＝「カウンタ６５のカウント値＋カウンタ６６のカウント値」／「カウンタ６５のカウント値」
ネームスペースそれぞれのライトアンプリフィケーションを要求するＷＡゲットコマンドがホスト２から受信された時（ステップＳ７０のＹＥＳ）、コントローラ４は、ホスト２に図１６に示すリターンデータを送出して、ネームスペースそれぞれのライトアンプリフィケーションをホスト２に通知する（ステップＳ７１）。
【０１７１】
ステップＳ６１〜Ｓ６９の処理は、ＷＡゲットコマンドの受信に応答して実行されても良い。
【０１７２】
図１７のフローチャートは、ＳＳＤ３よって実行されるカウンタリセット処理の手順を示す。
【０１７３】
このカウンタリセット処理は、ＳＳＤ３の設定の変更のような特定のリセットイベントが発生した後のＳＳＤ３の各ネームスペースのライトアンプリフィケーションを、ホスト２に提供するために利用される。ＳＳＤ３の設定の変更の例は、あるネームスペースの設定の変更であってもよいし、あるネームスペースの削除であってもよい。あるいは、ＳＳＤ３の設定の変更の例は、ＳＳＤ３全体の設定の変更であってもよい。
【０１７４】
ＳＳＤ３は、ホスト２からの要求に応じて、カウンタリセット処理を実行する。
【０１７５】
この要求は、カウンタをリセットすることを要求するコマンドであってもよい。このコマンドの受信に応答して、ＳＳＤ３は、全てのネームスペースに対応するカウンタ６１〜６６をリセットしてもよい。このコマンドがネームスペースＩＤを含む場合には、ＳＳＤ３は、ネームスペースＩＤに対応するネームスペースに関連付けられた２つのカウンタだけをリセットしてもよい。
【０１７６】
あるいは、あるネームスペースの設定またはＳＳＤ３全体の設定を変更するためのコントロールコマンドを、この要求として取り扱っても良い。あるネームスペースの設定の変更は、このネームスペースのサイズ（ＬＢＡ範囲）の変更であってもよいし、このネームスペース用の物理ブロックの個数の変更であってもよい。
【０１７７】
以下では、限定されないが、あるネームスペースの設定の変更に応答してカウンタリセット処理が実行される場合を例示してカウンタリセット処理の手順を説明する。
【０１７８】
コントローラ４がネームスペースの設定の変更を要求するコントロールコマンドをホスト２から受信した時、コントローラ４は、コントロールコマンド内のネームスペースＩＤに基づいて、設定変更の対象ネームスペースを決定する。
【０１７９】
対象ネームスペースがネームスペース（ＮＳ＃１）ならば（ステップＳ８１のＹＥＳ）、コントローラ４は、コントロールコマンド内のパラメータに従ってネームスペース（ＮＳ＃１）の設定を変更する（ステップＳ８２）。コントローラ４は、ネームスペース（ＮＳ＃１）に対応するカウンタ６１、６２のカウント値をゼロにクリアする（ステップＳ８３）。
【０１８０】
対象ネームスペースがネームスペース（ＮＳ＃２）ならば（ステップＳ８４のＹＥＳ）、コントローラ４は、コントロールコマンド内のパラメータに従ってネームスペース（ＮＳ＃２）の設定を変更する（ステップＳ８５）。コントローラ４は、ネームスペース（ＮＳ＃２）に対応するカウンタ６３、６４のカウント値をゼロにクリアする（ステップＳ８６）。
【０１８１】
対象ネームスペースがネームスペース（ＮＳ＃ｎ）ならば（ステップＳ８７のＹＥＳ）、コントローラ４は、コントロールコマンド内のパラメータに従ってネームスペース（ＮＳ＃ｎ）の設定を変更する（ステップＳ８８）。コントローラ４は、ネームスペース（ＮＳ＃ｎ）に対応するカウンタ６５、６６のカウント値をゼロにクリアする（ステップＳ８９）。
【０１８２】
図１８は、拡張ガベージコレクション（ＧＣ）制御コマンドを示す。
【０１８３】
上述したように、拡張ガベージコレクション（ＧＣ）制御コマンドは、ホスト２によってＳＳＤ３の任意のネームスペースのガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドとして使用される。
【０１８４】
この拡張ガベージコレクション（ＧＣ）制御コマンドは、以下のパラメータを含む。
【０１８５】
（１）ネームスペースＩＤ
（２）フリーブロックの量
（３）タイマ
ネームスペースＩＤのパラメータは、ガベージコレクションが実行されるべき対象ネームスペースのＩＤを示す。
【０１８６】
フリーブロックの量のパラメータは、対象ネームスペースのために確保されるべきフリーブロックの量（例えば、フリーブロックの個数）を示す。
【０１８７】
タイマのパラメータは、ガベージコレクション動作の最大時間を指定する。
【０１８８】
ホスト２は、拡張ガベージコレクション（ＧＣ）制御コマンドを使用することによって、ネームスペース（ＮＳ＃１）〜ネームスペース（ＮＳ＃ｎ）内の任意のネームスペースのガベージコレクションの実行をＳＳＤ３に要求することができる。
【０１８９】
例えば、ホスト２は、ＷＡゲットコマンドをＳＳＤ３に定期的に送信することによって個々のネームスペース（領域）のライトアンプリフィケーションを監視してもよい。あるネームスペース（領域）のライトアンプリフィケーションがこのネームスペースに対応するライトアンプリフィケーション閾値に達した時、ホスト２は、このネームスペースのネームスペースＩＤを含む拡張ガベージコレクション（ＧＣ）制御コマンドをＳＳＤ３に送出してもよい。
【０１９０】
あるいは、ホスト２があるネームスペース（領域）へのデータのライトを良好なレイテンシで行うことを望む場合に、ホスト２は、このネームスペースのネームスペースＩＤを含む拡張ガベージコレクション（ＧＣ）制御コマンドをＳＳＤ３に送出してもよい。
【０１９１】
ホスト２からの拡張ガベージコレクション（ＧＣ）制御コマンドの受信に応答して、ＳＳＤ３のコントローラ４は、対象ネームスペースのための専用の、指定された量のフリースペースを確保するためのガベージコレクション動作を実行する。コントローラ４は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、ガベージコレクション動作を終了する。
【０１９２】
図１９のフローチャートは、ＳＳＤ３によって実行されるガベージコレクション動作の手順を示す。
【０１９３】
ＳＳＤ３のコントローラ４が拡張ガベージコレクション（ＧＣ）制御コマンドをホスト２から受信した時（ステップＳ９１のＹＥＳ）、コントローラ４は、拡張ガベージコレクション（ＧＣ）制御コマンド内のネームスペースＩＤによって指定される対象ネームスペースのガベージコレクション動作を実行する（ステップＳ９２）。ステップＳ９２では、コントローラ４は、対象ネームスペースのアクティブブロック群からガベージコレクション対象の幾つかの物理ブロックを選択し、これら物理ブロックの有効データをコピー先物理ブロックにコピーする。
【０１９４】
ガベージコレクション動作は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、終了される（ステップＳ９３、Ｓ９４）。
【０１９５】
図２０は、データがライトされるべきネームスペース（領域）に応じて、メモリセルの消耗を抑えるためのコードとエラー訂正コード（ＥＣＣ）との比率を制御する処理を示す。
【０１９６】
本実施形態においては、メモリセルの消耗を抑えるためのコードとエラー訂正コード（ＥＣＣ）との比率を制御することによって信頼性（データリテンション）と耐久性（ＤＷＰＤ値）との間のトレードオフが最適化される。
【０１９７】
ここで、１回の書き込み当たりのメモリセルの消耗を抑えるためのコード（コーディング）を使用して、ライトデータをエンコードする動作の概要について説明する。
【０１９８】
ＳＳＤ３のコントローラ４は、まず、メモリセルの消耗を抑制するためのコード（コーディング）を使用してライトデータをエンコードして、第１符号化データ（図２０において“endurance code”と書かれている部分）を生成する。このコード（コーディング）は、メモリセルを激しく消耗させる特定の符号（高閾値電圧に対応する高プログラムレベルの符号）の出現頻度を下げために使用される。このコード（コーディング）としては、例えば、上述のendurance code（endurance coding）等がある。
【０１９９】
例えば、ＭＬＣにおいては、メモリセルは、プログラムによって、２ビットに対応する４つのレベル（“Ｅ”レベル、“Ａ”レベル、“Ｂ”レベル、“Ｃ”レベル）のいずれかに対応する状態（プログラムレベル）に設定される。“Ｅ”レベルは消去状態である。メモリセルの閾値電圧分布は、“Ｅ”レベル、“Ａ”レベル、“Ｂ”レベル、“Ｃ”レベルの順で高くなる。“Ｃ”レベルの状態は、メモリセルを激しく消耗させる状態（プログラムレベル）である。
【０２００】
メモリセルの消耗を抑制するためのコード（コーディング）を使用したエンコードにおいては、例えば、メモリセルの消耗が大きい特定のレベル（例えば“Ｃ”レベル）に対応する符号が、別の符号（例えば、２つの“Ｂ”レベルが連続した“Ｂ−Ｂ”に対応した長いビットパターン）に変換されてもよい。
【０２０１】
このように、エンコードにおいては、メモリセルを消耗させる特定の符号（ビットパターン）が別の長い符号（ビットパターン）に置き換えられるので、ライトデータの符号語が延びる。このため、エンコードにおいては、コントローラ４は、まず、ライトデータを可逆圧縮してもよい。そして、コントローラ４は、圧縮されたライトデータ内の各特定のビットパターンを、メモリセルの消耗の少ない別の長いビットパターンに置き換えてもよい。
【０２０２】
コントローラ４は、エンコードによって得られる第１符号化データ（図２０における“endurance code”）にエラー訂正コード（ＥＣＣ）を付加し、これによって第２符号化データ（図２０における“endurance code”と“ECC”とを含むデータ）を生成し、この第２符号化データを物理ブロック内の利用可能ページにライトする。各ページはデータ領域と冗長領域とを含む。第２符号化データのビット長は、データ領域と冗長領域とを含むページのサイズにマッチする。
【０２０３】
さらに、コントローラ４は、第１符号化データとエラー訂正コード（ＥＣＣ）の比率を、ライトデータがどの領域（ネームスペース）にライトされるかに応じて、自動的に変更する。
【０２０４】
第１符号化データ（endurance code）が長くなるほど、メモリセルを激しく消耗させる特定の符号の出現頻度が減少される。したがって、第１符号化データ（endurance code）が長くなるほど、１回の書き込み当たりのメモリセルの消耗を抑制することができる。
【０２０５】
例えば、ライトデータがＨｏｔデータ用の領域にライトされるべきライトデータである場合、コントローラ４は、Ｈｏｔデータ用の領域の耐久性（ＤＷＰＤ）を高めるために、より長い第１符号化データとより短いエラー訂正コードの組み合わせを含む第２符号化データが得られるように第１符号化データとエラー訂正コードの比率を制御する。つまり、Ｈｏｔデータのライトにおいては、信頼性（データリテンション）よりも耐久性を優先するエンコード方法が利用される。
【０２０６】
一方、ライトデータがＣｏｌｄデータ用の領域にライトされるべきライトデータである場合、コントローラ４は、Ｃｏｌｄデータ用の領域にライトされるデータのデータリテンションを伸ばすために、より短い第１符号化データとより長いエラー訂正コードの組み合わせを含む第２符号化データが得られるように第１符号化データとエラー訂正コードの比率を制御する。つまり、Ｃｏｌｄデータのライトにおいては、耐久性よりも信頼性（データリテンション）を優先するエンコード方法が利用される。
【０２０７】
本実施形態では、図２０に示されているように、書き換え頻度（更新の頻度）が高いネームスペース（領域）ほど、ＥＣＣのビット長が短くなり、代わりに第１符号化データ（エンデュランスコード）のビット長が長くなる。また、書き換え頻度（更新の頻度）が低いネームスペース（領域）ほど、ＥＣＣのビット長が長くなり、代わりに第１符号化データ（エンデュランスコード）のビット長が短くなる。
【０２０８】
ＥＣＣのビット長が長くなるほど、訂正可能なビットの数が増えるので、信頼性（データリテンション）が改善される。通常、時間の経過とともに、ビットエラーレートは増加する。したがって、訂正可能なビットの数の増加は、データリテンションを改善することができる。
【０２０９】
一方、上述したように、エンデュランスコードのビット長が長くなるほど、ページ内のメモリセル群の消耗を抑えることができるので、耐久性が改善される。
【０２１０】
図２１は、ＳＳＤ３によって実行されるエンコード処理およびデコード処理を示す。
【０２１１】
ＳＳＤ３のコントローラ４は、エンデュランスコードエンコーダ９１、ＥＣＣエンコーダ９２、エンデュランスコードデコーダ９３、およびＥＣＣデコーダ９４を含む。
【０２１２】
ＥＣＣエンコーダ９２およびＥＣＣデコーダ９４は、ＥＣＣを生成するＥＣＣエンコード処理およびエラー訂正のためのＥＣＣデコード処理をそれぞれ実行する。ＥＣＣエンコーダ９２においては、ＥＣＣを生成するために組織符号が使用される。組織符号としては、例えば、ハミング符号、ＢＨＣ符号、リードソロモン符号、等がある。
【０２１３】
エンデュランスコードエンコーダ９１およびエンデュランスコードデコーダ９３は、メモリセルの消耗を抑制するためのエンコード処理およびこのエンコード処理に対応するデコード処理を実行する。エンデュランスコードエンコーダ９１においては、第１符号化データ（エンデュランスコード）を生成するために、非組織符号であるエンデュランスコードが使用される。エンデュランスコードエンコーダ９１においては、上述したように、メモリセルを激しく消耗させる特定の符号（例えば“Ｃ”レベルに対応するビットパターン）が、別の長い符号（例えば、“Ｂ−Ｂ”に対応した長いビットパターン、等）に変換される。つまり、このエンコード処理は、符号語を伸張する伸張処理である。
【０２１４】
図２２は、エンデュランスコードエンコーダ９１の構成例を示す。
【０２１５】
エンデュランスコードエンコーダ９１は、エントロピー解析部９１１、圧縮部９１２、探索部９１４、置き換え部９１５、符号長チェック部９１６、及び出力部９１７等を含む。
【０２１６】
エントロピー解析部９１１は、ライトデータ内に出現するビットパターンそれぞれの出現回数（または出現確率）を求める。圧縮部９１２は、エントロピー解析部９１１の解析結果に基づきコードブック９１３を生成し、コードブック９１３を使用して、ライトデータを可逆圧縮する。コードブック９１３は、ライトデータ内に出現するビットパターンそれぞれとこれらビットパターンに対応する変換コードとの間の対応関係を示す。圧縮部９１２は、出現回数の多いビットパターンに短い変換コードを割り当てる。
【０２１７】
探索部９１４は、メモリセルを激しく消耗させる特定の符号を求めて、圧縮データ（圧縮されたライトデータ）を例えばその最上位ビットから探索する。特定の符号は、例えば“Ｃ”レベルに対応するビットパターンであってもよい。置き換え部９１５は、探索部９１４によって探索された特定の符号を、別の長い符号（例えば、“Ｂ−Ｂ”に対応した長いビットパターン、等）に置き換える。これによって、圧縮データ内の特定の符号が、メモリセルの消耗が少ない別の長い符号に変換される。置き換え部９１５は、コードブック９１３を更新し、これによって、上述の特定の符号に対応するコードブック９１３内の特定の変換コードを、上述の別の長い符号に置き換える。
【０２１８】
符号長チェック部９１６は、現在の圧縮データの符号長（ビット長）をチェックする。現在の圧縮データの符号長（ビット長）が予め決められた閾値（ターゲットビット長）よりも短い場合、探索および置き換えの処理が繰り返される。これにより、現在の圧縮データの符号長が最適化される。
【０２１９】
ターゲットビット長は、ライトデータがライトされるべきネームスペース（領域）に応じて適応的に変更される。したがって、書き換え頻度（更新の頻度）が高いネームスペース（領域）ほど、符号化データ（エンデュランスコード）のビット長が長くなる。換言すれば、書き換え頻度（更新の頻度）が低いネームスペース（領域）ほど、符号化データ（エンデュランスコード）のビット長が短くなる。
【０２２０】
出力部９１７は、最適化されたビット長の圧縮データを第１符号化データ（エンデュランスコード）として出力する。第１符号化データにはコードブック９１３が付加されても良い。
【０２２１】
図２３のフローチャートは、メモリセルの消耗を抑制するためのエンコード処理の手順を示す。
【０２２２】
コントローラ４は、ライトデータ内の幾つかのビットパターンの出現回数を求め、これらビットパターンを出現回数の大きい順にソートする（ステップＳ１）。コントローラ４は、エントロピー解析の結果に基づき、各ビットパターンを圧縮するための変換コードを含むコードブック９１３を生成し、そしてコードブック９１３を使用してライトデータを可逆圧縮する（ステップＳ２）。
【０２２３】
コントローラ４は、この圧縮データをメモリセルの消耗を抑制するためのコードを使用してエンコードすることによって、符号化データを生成する。
【０２２４】
この場合、コントローラ４は、まず、圧縮データから、メモリセルを消耗させるある特定の符号（特定のビットパターン）を探索する（ステップＳ３）。コントローラ４は、探索されたこの符号（ビットパターン）をメモリセルの消耗の小さな長い別の符号（ビットパターン）に変換する（ステップＳ４）。コントローラ４は、探索されたこの特定の符号に対応するコードブック内の変換コードを更新する（ステップＳ５）。
【０２２５】
コントローラ４は、現在の圧縮データ（符号化データ）のビット長がターゲットビット長よりも長いか否かを判定する（ステップＳ６）。ターゲットビット長は、データがライトされるべきネームスペース（領域）に応じて予め決定される。例えば、ネームスペースＮＳ＃１にライトされるデータ（Ｈｏｔデータ）に関しては長いターゲットビット長が使用され、ネームスペースＮＳ＃ｎにライトされるデータ（Ｃｏｌｄデータ）に関しては短いターゲットビット長が使用される。
【０２２６】
現在の圧縮データ（符号化データ）のビット長がターゲットビット長よりも短いならば、ステップＳ３〜Ｓ５の処理が再度実行される。ステップＳ３〜Ｓ５の処理が多く繰り返されるほど、メモリセルを激しく消耗させる特定の符号（例えば“Ｃ”レベルに対応するビットパターン）の出現頻度を下げることができる。その分、符号化データのビット長はより長くなる。
【０２２７】
現在の圧縮データ（符号化データ）のビット長がターゲットビット長よりも長くなったならば（ステップＳ６のＹＥＳ）、コントローラ４は、符号化データの例えば末尾にコードブックを付加する（ステップＳ７）。
【０２２８】
図２４のフローチャートは、ＳＳＤ３によって実行されるライト制御処理の手順を示す。
【０２２９】
ＳＳＤ３のコントローラ４は、受信されたライトデータがどの階層属性のネームスペース（領域）にライトされるべきライトデータであるかを判定し、この判定結果にしたがって、ライトデータをエンコードするためのエンコード方法を変更する。エンコード方法の変更は、エンデュランスコードとＥＣＣとの比率を制御することによって実行される。
【０２３０】
すなわち、ＳＳＤ３のコントローラ４がライトコマンドをホスト２から受信した時（ステップＳ１０１のＹＥＳ）、コントローラ４は、ライトコマンド内のネームスペースＩＤによって指定される対象ネームスペース（領域）の階層属性（Ｈｏｔ／Ｗａｒｍ／Ｍｉｄｄｌｅ／Ｃｏｏｌ／Ｃｏｌｄ）を判定する（ステップＳ１０２）。対象ネームスペース（領域）の階層属性は、対象ネームスペース（領域）のオーバープロビジョン領域のサイズ（ユーザ領域とオーバープロビジョン領域との比率等）に基づいて決定されてもよい。あるいは、もし対象ネームスペースの作成を要求した拡張ネームスペース管理コマンドがｔｉｅｒ属性パラメータを含んでいたならば、コントローラ４は、このｔｉｅｒ属性パラメータによって示される階層属性を、対象ネームスペースの階層属性であると判定しても良い。あるいは、ライトコマンドが、対象ネームスペースのＩＤに加え、対象ネームスペースの階層属性を示すパラメータを含んでいてもよい。
【０２３１】
例えば、対象ネームスペースの階層属性がＨｏｔならば（ステップＳ１０３のＹＥＳ）、つまりライトデータがネームスペースＮＳ＃１のＩＤに関連付けられていたならば、コントローラ４は、エンデュランスコードとＥＣＣとの比率を制御することによって信頼性よりも耐久性を優先するエンコード方法を使用して、ライトデータをエンコードする（ステップＳ１０４）。ここでのエンコード方法によれば、ライトデータは、より長いエンデュランスコードとより短いＥＣＣとの組み合わせを含むデータにエンコードされる。コントローラ４は、エンコードされたデータを、領域５１内の物理ブロックの利用可能ページにライトする（ステップＳ１０５）。
【０２３２】
例えば、対象ネームスペースの階層属性がＣｏｌｄならば（ステップＳ１０６のＹＥＳ）、つまりライトデータがネームスペースＮＳ＃ｎのＩＤに関連付けられていたならば、コントローラ４は、エンデュランスコードとＥＣＣとの比率を制御することによって耐久性よりも信頼性を優先するエンコード方法を使用して、ライトデータをエンコードする（ステップＳ１０７）。ここでのエンコード方法によれば、ライトデータは、より短いエンデュランスコードとより長いＥＣＣとの組み合わせを含むデータにエンコードされる。コントローラ４は、エンコードされたデータを、領域５５内の物理ブロックの利用可能ページにライトする（ステップＳ１０８）。
【０２３３】
図２５は、本実施形態のフラッシュアレイストレージの構成を示す。
【０２３４】
このフラッシュアレイストレージは、ホスト２からは１台のストレージデバイスとして認識される。このフラッシュアレイストレージは、大容量化および高速化を実現するために、ストライピング制御される、複数のＳＳＤ、つまりＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎを含む。
【０２３５】
ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎの各々は、不揮発性メモリを含む。さらに、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎの各々は、本実施形態のＳＳＤ３と同様のネームスペース管理機能を有している。
【０２３６】
このフラッシュアレイにおいては、領域５１（ＮＳ＃１）は、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに跨がって配置される。つまり、領域５１は、ＳＳＤ＃１のネームスペース（ＮＳ＃１）用に確保された幾つかの物理ブロックと、ＳＳＤ＃２のネームスペース（ＮＳ＃１）用に確保された幾つかの物理ブロックと、ＳＳＤ＃３のネームスペース（ＮＳ＃１）用に確保された幾つかの物理ブロックと、ＳＳＤ＃ｎのネームスペース（ＮＳ＃１）用に確保された幾つかの物理ブロックとを含む。
【０２３７】
領域５２（ＮＳ＃２）も、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに跨がって配置される。つまり、領域５２は、ＳＳＤ＃１のネームスペース（ＮＳ＃２）用に確保された幾つかの物理ブロックと、ＳＳＤ＃２のネームスペース（ＮＳ＃２）用に確保された幾つかの物理ブロックと、ＳＳＤ＃３のネームスペース（ＮＳ＃２）用に確保された幾つかの物理ブロックと、ＳＳＤ＃ｎのネームスペース（ＮＳ＃２）用に確保された幾つかの物理ブロックとを含む。
【０２３８】
領域５３（ＮＳ＃３）も、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに跨がって配置される。つまり、領域５３は、ＳＳＤ＃１のネームスペース（ＮＳ＃３）用に確保された幾つかの物理ブロックと、ＳＳＤ＃２のネームスペース（ＮＳ＃３）用に確保された幾つかの物理ブロックと、ＳＳＤ＃３のネームスペース（ＮＳ＃３）用に確保された幾つかの物理ブロックと、ＳＳＤ＃ｎのネームスペース（ＮＳ＃３）用に確保された幾つかの物理ブロックとを含む。
【０２３９】
領域５４（ＮＳ＃４）も、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに跨がって配置される。つまり、領域５４は、ＳＳＤ＃１のネームスペース（ＮＳ＃４）用に確保された幾つかの物理ブロックと、ＳＳＤ＃２のネームスペース（ＮＳ＃４）用に確保された幾つかの物理ブロックと、ＳＳＤ＃３のネームスペース（ＮＳ＃４）用に確保された幾つかの物理ブロックと、ＳＳＤ＃ｎのネームスペース（ＮＳ＃４）用に確保された幾つかの物理ブロックとを含む。
【０２４０】
領域５５（ＮＳ＃ｎ）も、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに跨がって配置される。つまり、領域５５は、ＳＳＤ＃１のネームスペース（ＮＳ＃ｎ）用に確保された幾つかの物理ブロックと、ＳＳＤ＃２のネームスペース（ＮＳ＃ｎ）用に確保された幾つかの物理ブロックと、ＳＳＤ＃３のネームスペース（ＮＳ＃ｎ）用に確保された幾つかの物理ブロックと、ＳＳＤ＃ｎのネームスペース（ＮＳ＃ｎ）用に確保された幾つかの物理ブロックとを含む。
【０２４１】
図２６は、図２５のフラッシュアレイストレージのハードウェア構成を示す。
【０２４２】
フラッシュアレイストレージ８０は、上述のＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに加え、フラッシュアレイコントローラ８１を含む。フラッシュアレイコントローラ８１は、データを、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに分散させるためのストライピング制御を実行するように構成されている。例えば、領域５１（ＮＳ＃１）にデータをライトする場合においては、例えば、最初の４ＫバイトのデータＤ１はＮＳ＃１に対応するＳＳＤ＃１内の領域にライトされ、次の４ＫバイトのデータＤ２はＮＳ＃１に対応するＳＳＤ＃２内の領域にライトされ、続く４ＫバイトのデータＤ３はＮＳ＃１に対応するＳＳＤ＃３内の領域にライトされ、続く４ＫバイトのデータＤｎはＮＳ＃１に対応するＳＳＤ＃ｎ内の領域にライトされ、続く４ＫバイトのデータＤｎ＋１はＮＳ＃１に対応するＳＳＤ＃１内の領域にライトされる。
【０２４３】
このように、ライトデータは所定データサイズ（４Ｋバイト）単位でＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに分散される。例えば、ホスト２によってＮＳ＃１への１Ｍバイトのデータをライトすることが要求され場合、１Ｍバイトのデータは各々が所定データサイズ（４Ｋバイト）を有する複数のデータ部分に分割され、これらデータ部分がＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎに並行してライトされてもよい。
【０２４４】
このように、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎは並行にして動作するので、データライトのための性能を高めることができる。
【０２４５】
フラッシュアレイコントローラ８１は、図２７に示されるように、フラッシュアレイストレージ８０内ではなく、ホスト２内に設けられていてもよい。
【０２４６】
図２８は、フラッシュアレイストレージ８０内のＳＳＤそれぞれの容量とこれらＳＳＤからある階層のために配分される容量の割合との関係を示す。
【０２４７】
ここでは、ｔｉｅｒ＃１（ＮＳ＃１）を例示して説明する。ホスト２は、拡張ネームスペース管理コマンドをフラッシュアレイコントローラ８１に送出して、フラッシュアレイストレージ８０全体の総容量の１パーセントに相当する個数の物理ブロックをｔｉｅｒ＃１（ＮＳ＃１）用に確保すべきことを要求する。フラッシュアレイコントローラ８１は、ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、…ＳＳＤ＃ｎのそれぞれの容量に基づいて、各ＳＳＤ内においてｔｉｅｒ＃１（ＮＳ＃１）用に確保されるべき物理ブロックの個数を決定する。
【０２４８】
ここでは、ＳＳＤ＃１の容量が１００ＧＢ、ＳＳＤ＃２の容量が２００ＧＢ、ＳＳＤ＃３の容量が１ＴＢ、ＳＳＤ＃ｎの容量が１００ＧＢである場合を想定する。
【０２４９】
フラッシュアレイコントローラ８１は、拡張ネームスペース管理コマンドをＳＳＤ＃１に送出して、１００ＧＢの１パーセントの容量（１ＧＢ）に相当する個数の物理ブロックをＮＳ＃１用に確保すべきことをＳＳＤ＃１に要求する。フラッシュアレイコントローラ８１は、拡張ネームスペース管理コマンドをＳＳＤ＃２に送出して、２００ＧＢの１パーセントの容量（２ＧＢ）に相当する個数の物理ブロックをＮＳ＃１用に確保すべきことをＳＳＤ＃２に要求する。フラッシュアレイコントローラ８１は、拡張ネームスペース管理コマンドをＳＳＤ＃３に送出して、１ＴＢの１パーセントの容量（１０ＧＢ）に相当する個数の物理ブロックをＮＳ＃１用に確保すべきことをＳＳＤ＃３に要求する。フラッシュアレイコントローラ８１は、拡張ネームスペース管理コマンドをＳＳＤ＃ｎに送出して、１００ＧＢの１パーセントの容量（１ＧＢ）に相当する個数の物理ブロックをＮＳ＃１用に確保すべきことをＳＳＤ＃ｎに要求する。
【０２５０】
図２９は、図２８の容量割り当てに対応するライト動作の例を示す。
【０２５１】
ストライピング制御によって領域５１（ＮＳ＃１）にデータをライトする場合においては、例えば、最初の４ＫバイトのデータＤ１はＮＳ＃１に対応するＳＳＤ＃１内の領域にライトされる。次の４ＫバイトのデータＤ２と続く４ＫバイトのデータＤ３は、ＮＳ＃１に対応するＳＳＤ＃２内の領域にライトされる。続くデータＤ３〜Ｄ１３は、ＮＳ＃１に対応するＳＳＤ＃３内の領域にライトされる。続く４ＫバイトのデータＤ１４はＮＳ＃１に対応するＳＳＤ＃ｎ内の領域にライトされ、続く４ＫバイトのデータＤ１５はＮＳ＃１に対応するＳＳＤ＃１内の領域にライトされる。
【０２５２】
図３０は、ホスト２として機能する情報処理装置のハードウェア構成例を示す。
【０２５３】
この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ（ＣＰＵ）１０１、メインメモリ１０２、ＢＩＯＳ−ＲＯＭ１０３、ネットワークコントローラ１０５、周辺インタフェースコントローラ１０６、コントローラ１０７、およびエンベデッドコントローラ（ＥＣ）１０８等を含む。
【０２５４】
プロセッサ１０１は、この情報処理装置の各コンポーネントの動作を制御するように構成されたＣＰＵである。このプロセッサ１０１は、複数のＳＳＤ３のいずれか１つからメインメモリ１０２にロードされる様々なプログラムを実行する。メインメモリ１０２は、ＤＲＡＭのようなランダムアクセスメモリから構成される。プロセッサ１０１によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ４１、ＯＳ４２およびファイルシステム４３を含む。ファイルシステム４３は、上述の階層管理部４４として機能する。
【０２５５】
また、プロセッサ１０１は、不揮発性メモリであるＢＩＯＳ−ＲＯＭ１０３に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳはハードウェア制御のためのシステムプログラムである。
【０２５６】
ネットワークコントローラ１０５は、有線ＬＡＮコントローラ、無線ＬＡＮコントローラのような通信デバイスである。周辺インタフェースコントローラ１０６は、ＵＳＢデバイスのような周辺デバイスとの通信を実行するように構成されている。
【０２５７】
コントローラ１０７は、複数のコネクタ１０７Ａにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のＳＳＤ３が複数のコネクタ１０７Ａにそれぞれ接続される。コントローラ１０７は、ＳＡＳ  ｅｘｐａｎｄｅｒ、ＰＣＩｅ  Ｓｗｉｔｃｈ、ＰＣＩｅ  ｅｘｐａｎｄｅｒ、フラッシュアレイコントローラ、またはＲＡＩＤコントローラ等である。
【０２５８】
ＥＣ１０８は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。ＥＣ１０８は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。ＥＣ１０８はワンチップマイクロコントローラのような処理回路として実現されている。ＥＣ１０８は、キーボード（ＫＢ）などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
【０２５９】
この情報処理装置においては、ホストソフトウェア（アプリケーションソフトウェアレイヤ４１、ＯＳ４２およびファイルシステム４３）の制御の下、プロセッサ１０１は、以下の処理を実行する。
【０２６０】
プロセッサ１０１は、拡張ネームスペース管理コマンドをＳＳＤ３に送出して、Ｈｏｔデータ用のネームスペースＮＳ＃１（領域５１）をＳＳＤ３内に作成する。拡張ネームスペース管理コマンドは、Ｈｏｔデータ用のネームスペースＮＳ＃１（領域５１）に割り当てるべき物理ブロックの個数を示すパラメータを含む。
【０２６１】
プロセッサ１０１は、拡張ネームスペース管理コマンドをＳＳＤ３に送出して、Ｗａｒｍデータ用のネームスペースＮＳ＃２（領域５２）をＳＳＤ３内に作成する。拡張ネームスペース管理コマンドは、Ｗａｒｍデータ用のネームスペースＮＳ＃２（領域５２）に割り当てるべき物理ブロックの個数を示すパラメータを含む。
【０２６２】
同様にして、プロセッサ１０１は、拡張ネームスペース管理コマンドをＳＳＤ３に送出して、Ｃｏｌｄデータ用のネームスペースＮＳ＃ｎ（領域５５）をＳＳＤ３内に作成する。拡張ネームスペース管理コマンドは、Ｃｏｌｄ用のネームスペースＮＳ＃ｎ（領域５５）に割り当てるべき物理ブロックの個数を示すパラメータを含む。
【０２６３】
プロセッサ１０１は、ネームスペースＮＳ＃１のネームスペースＩＤをＨｏｔデータ用のネームスペースＩＤとして管理し、ネームスペースＮＳ＃２のネームスペースＩＤをＷａｒｍデータ用のネームスペースＩＤとして管理し、そしてネームスペースＮＳ＃ｎのネームスペースＩＤをＣｏｌｄデータ用のネームスペースＩＤとして管理する。
【０２６４】
あるＨｏｔデータをＳＳＤ３にライトすることが必要な時、プロセッサ１０１は、ネームスペースＮＳ＃１のネームスペースＩＤを含むライトコマンドをＳＳＤ３に送出する。あるＣｏｌｄデータをＳＳＤ３にライトすることが必要な時、プロセッサ１０１は、ネームスペースＮＳ＃ｎのネームスペースＩＤを含むライトコマンドをＳＳＤ３に送出する。
【０２６５】
図３１は、複数のＳＳＤ３とホスト２とを含む情報処理装置の構成例を示す。
【０２６６】
この情報処理装置は、ラックに収容可能な薄い箱形の筐体２０１を備える。多数のＳＳＤ３は筐体２０１内に配置されても良い。この場合、各ＳＳＤ３は筐体２０１の前面２０１Ａに設けられたストロットに取り外し可能に挿入されてもよい。
【０２６７】
システムボード（マザーボード）２０２は筐体２０１内に配置される。システムボード（マザーボード）２０２上においては、ＣＰＵ１０１、メモリ１０２、ネットワークコントローラ１０５、コントローラ１０７を含む様々な電子部品が実装されている。これら電子部品がホスト２として機能する。
【０２６８】
以上説明したように、本実施形態によれば、複数種のデータを格納するための複数のネームスペース（領域）が管理され、さらに、確保すべき物理リソースの量（物理ブロックの個数）をネームスペース毎に指定するホスト２からの要求に基づいて、指定された個数の物理ブロックがこれらネームスペース用の物理リソースとして個別に割り当てられる。したがって、複数種のデータそれぞれの容量や更新頻度を考慮して、物理ブロック群を複数のネームスペース（領域）に容易に最適配分することができる。よって、ネームスペース（領域）毎に、格納すべきデータの更新の頻度に適した耐久性を実現でき、更新の頻度が高いデータ用のネームスペース（領域）のライトアンプリフィケーションを減少させることができるので、ＳＳＤの寿命の最大化を実現できる。
【０２６９】
換言すれば、本実施形態によれば、更新の頻度が高いデータ用のネームスペース（領域）用に多くの量のオーバープロビジョン領域を確保したり、更新の頻度が低いデータ用のネームスペース（領域）用に少ない量のオーバープロビジョン領域を確保するといった制御を柔軟に行う事ができる。これにより、更新の頻度が高いデータ用のネームスペース（領域）のライトアンプリフィケーションを減少させることができるので、ＳＳＤの寿命の最大化を実現できる。
【０２７０】
なお、本実施形態では、不揮発性メモリとしてＮＡＮＤメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０２７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２７２】
２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤメモリ、５１、５２、５３、５４、５５…領域。
【図１】
2018200720.tif 000003
【図２】
2018200720.tif 000004
【図３】
2018200720.tif 000005
【図４】
2018200720.tif 000006
【図５】
2018200720.tif 000007
【図６】
2018200720.tif 000008
【図７】
2018200720.tif 000009
【図８】
2018200720.tif 000010
【図９】
2018200720.tif 000011
【図１０】
2018200720.tif 000012
【図１１】
2018200720.tif 000013
【図１２】
2018200720.tif 000014
【図１３】
2018200720.tif 000015
【図１４】
2018200720.tif 000016
【図１５】
2018200720.tif 000017
【図１６】
2018200720.tif 000018
【図１７】
2018200720.tif 000019
【図１８】
2018200720.tif 000020
【図１９】
2018200720.tif 000021
【図２０】
2018200720.tif 000022
【図２１】
2018200720.tif 000023
【図２２】
2018200720.tif 000024
【図２３】
2018200720.tif 000025
【図２４】
2018200720.tif 000026
【図２５】
2018200720.tif 000027
【図２６】
2018200720.tif 000028
【図２７】
2018200720.tif 000029
【図２８】
2018200720.tif 000030
【図２９】
2018200720.tif 000031
【図３０】
2018200720.tif 000032
【図３１】
2018200720.tif 000033