(57)【要約】  本発明は、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムを提供する。上記方法はＳＳＤに適用され、書き込み予定データを保持する書き込み要求をコントローラからＳＳＤにより受信する段階と、書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階と、圧縮データをＳＳＤにより記憶する段階と、第１フィードバック情報をコントローラへＳＳＤにより送信する段階とを備え、第１フィードバック情報が、圧縮データが記憶された後のＳＳＤの残存容量を示す。圧縮機能は、コントローラからＳＳＤへ移され、その結果、コントローラの計算上のプレッシャーが低減される。
2019519047.tif 000002
【特許請求の範囲】
【請求項１】
ソリッドステートディスクＳＳＤに適用されるデータ処理方法であって、
コントローラから、書き込み予定データを保持する書き込み要求を前記ＳＳＤにより受信する段階と、
前記書き込み予定データを前記ＳＳＤにより圧縮して圧縮データを取得する段階と、
前記圧縮データを前記ＳＳＤにより記憶する段階と、
第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階であって、前記第１フィードバック情報が、前記圧縮データが記憶された後の前記ＳＳＤの残存容量を示す、送信する段階と
を備える、
データ処理方法。
【請求項２】
前記方法が、
第２フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階
を更に備え、
前記第２フィードバック情報が、前記ＳＳＤの論理容量を示し、
前記ＳＳＤの前記論理容量が、前記ＳＳＤに記憶されているデータの非圧縮データ量及び前記ＳＳＤの利用可能な物理空間の容量の和である、請求項１に記載の方法。
【請求項３】
前記方法が、
ブランク論理ブロックを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階であって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記ＳＳＤの論理容量のセグメントに対応する、割り当てる段階と、
割り当てられた前記ブランク論理ブロックを有効論理ブロックへ前記ＳＳＤにより変換する段階であって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、変換する段階と、
前記ＳＳＤにおける残存ブランク論理ブロックの数を前記ＳＳＤにより問い合わせる段階と
を更に備え、
前記第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階が、前記第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階であって、前記第１フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び／又は、前記残存容量を含み、前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、送信する段階を有する、請求項１または２に記載の方法。
【請求項４】
前記書き込み予定データを前記ＳＳＤにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階の後に、前記書き込み予定データを前記ＳＳＤにより圧縮して前記圧縮データを取得する段階を有し、
前記方法が、
前記ＳＳＤで追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、前記ＳＳＤにより決定する段階
を更に備える、請求項３に記載の方法。
【請求項５】
前記方法が、
新しいブランク論理ブロックに対応するエントリを、前記ＳＳＤで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記ＳＳＤのマッピングテーブルへ前記ＳＳＤにより追加する段階
を更に備える、請求項４に記載の方法。
【請求項６】
前記方法が、
前記ＳＳＤで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記ＳＳＤにおける分離論理ブロックをブランク論理ブロックへ前記ＳＳＤにより更新する段階
を更に備え、
前記分離論理ブロックは、論理アドレスが前記ＳＳＤで使用不可能な論理ブロックである、請求項４または５に記載の方法。
【請求項７】
前記ＳＳＤで追加する必要のあるブランク論理ブロックの前記数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、
Ｄは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
Ｌは、前記ＳＳＤにおける論理ブロックの長さを示す、請求項４から６の何れか一項に記載の方法。
【請求項８】
前記方法が、
前記コントローラからコマンドを前記ＳＳＤにより受信する段階であって、前記コマンドが論理アドレス範囲を備え、前記コマンドが前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、
前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ前記ＳＳＤにより変換する段階であって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と
を更に備える、請求項３から７の何れか一項に記載の方法。
【請求項９】
前記方法が、
前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを前記ＳＳＤにより決定する段階と、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を前記ＳＳＤにより選択する段階であって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択する段階と、
前記部分的なオーバープロビジョニング空間を前記ＳＳＤの前記利用可能な物理空間として前記ＳＳＤにより用いる段階と
を更に備える、請求項８に記載の方法。
【請求項１０】
第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する前記段階の前に、前記方法が、
前記ＳＳＤの前記利用可能な物理空間を前記ＳＳＤにより問い合わせる段階と、
前記利用可能な物理空間の前記容量を前記残存容量と前記ＳＳＤにより決定する段階と
を更に備える、請求項１または２に記載の方法。
【請求項１１】
コントローラから書き込み要求を前記ＳＳＤにより受信する前記段階の後に、前記方法が、
論理アドレスを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階と、
前記マッピングテーブルに在り、前記論理アドレスに対応するエントリに、マッピング情報を前記ＳＳＤにより記録する段階と
を更に備え、
前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの前記長さ、に関する情報を含む、請求項１から１０の何れか一項に記載の方法。
【請求項１２】
コントローラから書き込み要求を前記ＳＳＤにより受信する前記段階の後に、前記方法が、
論理アドレスを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階と、
前記マッピングテーブルに在り、前記論理アドレスに対応するエントリに、マッピング情報を前記ＳＳＤにより記録する段階であって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、記録する段階と、
前記物理ページ上に前記圧縮データのメタデータを前記ＳＳＤにより記憶する段階であって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの前記長さを含む、記憶する段階と
を更に備える、請求項１から１０の何れか一項に記載の方法。
【請求項１３】
前記書き込み要求が、前記書き込み予定データの前記データ長を含み、
前記書き込み予定データの前記論理アドレスが、前記データ長に基づいて割り当てられる、請求項１１または１２に記載の方法。
【請求項１４】
前記圧縮データを前記ＳＳＤにより記憶する段階の後に、前記方法が、
前記ＳＳＤにおける前記書き込み予定データの前記論理アドレスを前記コントローラへ前記ＳＳＤにより送信する段階
を更に備える、請求項１から１３の何れか一項に記載の方法。
【請求項１５】
前記方法が、
前記コントローラから読み出し要求を前記ＳＳＤにより受信する段階であって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、受信する段階と、
前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを前記ＳＳＤにより読み出す段階と、
前記ターゲットデータを前記ＳＳＤにより圧縮解除して前記読み出すべきデータを取得する段階と、
前記読み出すべきデータを前記コントローラへ前記ＳＳＤにより送信する段階と
を更に備える、請求項１４に記載の方法。
【請求項１６】
記憶装置であって、
コントローラから、書き込み予定データを保持する書き込み要求を受信するように構成される第１受信モジュールと、
前記書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮モジュールと、
前記圧縮データを記憶するように構成される第１記憶モジュールと、
第１フィードバック情報を前記コントローラへ送信するように構成される第１送信モジュールであって、前記第１フィードバック情報が、前記圧縮データが記憶された後の前記記憶装置の残存容量を示す、第１送信モジュールと
を備える、
記憶装置。
【請求項１７】
前記記憶装置が、
第２フィードバック情報を前記コントローラへ送信するように構成される第２送信モジュール
を更に備え、
前記第２フィードバック情報が、前記記憶装置の論理容量を示し、
前記記憶装置の前記論理容量が、前記記憶装置に記憶されているデータの非圧縮データ量及び前記記憶装置の利用可能な物理空間の容量の和である、請求項１６に記載の記憶装置。
【請求項１８】
前記記憶装置が、
ブランク論理ブロックを前記書き込み予定データへ割り当てるように構成される割り当てモジュールであって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記記憶装置の論理容量のセグメントに対応する、割り当てモジュールと、
割り当てられた前記ブランク論理ブロックを有効論理ブロックへ変換するように構成される第１変換モジュールであって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、第１変換モジュールと、
前記記憶装置における残存ブランク論理ブロックの数を問い合わせるように構成される第１問い合わせモジュールと
を更に備え、
前記第１送信モジュールが、前記第１フィードバック情報を前記コントローラへ送信するように具体的に構成され、
前記第１フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び／又は、前記残存容量を含み、
前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、請求項１６または１７に記載の記憶装置。
【請求項１９】
前記圧縮モジュールは、前記割り当てモジュールが前記ブランク論理ブロックを前記書き込み予定データへ割り当てた後に、前記書き込み予定データを圧縮して前記圧縮データを取得するように具体的に構成され、
前記記憶装置が、
前記記憶装置で追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、決定するように構成される第１決定モジュール
を更に備える、請求項１８に記載の記憶装置。
【請求項２０】
前記記憶装置が、
前記新しいブランク論理ブロックに対応するエントリを、前記記憶装置で追加する必要のあるブランク論理ブロックの前記数に従って、前記マッピングテーブルへ追加するように構成される追加モジュール
を更に備える、請求項１９に記載の記憶装置。
【請求項２１】
前記記憶装置が、
前記記憶装置における分離論理ブロックを、前記記憶装置で追加する必要のある前記ブランク論理ブロックの前記数に従って、ブランク論理ブロックへ更新するように構成される更新モジュール
を更に備え、
前記分離論理ブロックは、論理アドレスが前記記憶装置で使用不可能な論理ブロックである、請求項１９または２０に記載の記憶装置。
【請求項２２】
前記記憶装置で追加する必要のあるブランク論理ブロックの前記数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、
Ｄは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
Ｌは、前記記憶装置における論理ブロックの長さを示す、請求項１９から２１の何れか一項に記載の記憶装置。
【請求項２３】
前記記憶装置が、
前記コントローラからコマンドを受信するように構成される第２受信モジュールであって、前記コマンドが論理アドレス範囲を含み、前記コマンドが前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、第２受信モジュールと、
前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第２変換モジュールであって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、第２変換モジュールと
を更に備える、請求項１８から２２の何れか一項に記載の記憶装置。
【請求項２４】
前記記憶装置が、
前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを決定するように構成される第２決定モジュールと、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールであって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択モジュールと、
前記部分的なオーバープロビジョニング空間を、前記記憶装置の前記利用可能な物理空間として用いるように構成される第３決定モジュールと
を更に備える、請求項２３に記載の記憶装置。
【請求項２５】
前記記憶装置が、
前記第１フィードバック情報が前記コントローラへ送信される前に、前記記憶装置の前記利用可能な物理空間を問い合わせるように構成される第２問い合わせモジュールと、
前記利用可能な物理空間の前記容量を、前記残存容量と決定するように構成される第４決定モジュールと
を更に備える、請求項１６または１７に記載の記憶装置。
【請求項２６】
前記記憶装置が、
前記書き込み要求が前記コントローラから受信された後に、論理アドレスを前記書き込み予定データへ割り当てるように構成される第５決定モジュールと、
前記マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第１記録モジュールであって、前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの前記長さ、に関する情報を含む、第１記録モジュールと
を更に備える、請求項１６から２５の何れか一項に記載の記憶装置。
【請求項２７】
前記記憶装置が、
前記書き込み要求が前記コントローラから受信される後に、論理アドレスを前記書き込み予定データへ割り当てるように構成される第６決定モジュールと、
前記マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第２記録モジュールであって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、第２記録モジュールと、
前記物理ページ上に前記圧縮データのメタデータを記憶するように構成される第２記憶モジュールであって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの前記長さを含む、第２記憶モジュールと
を更に備える、請求項１６から２５の何れか一項に記載の記憶装置。
【請求項２８】
前記書き込み要求が、前記書き込み予定データの前記データ長を含み、
前記書き込み予定データの前記論理アドレスが、前記データ長に基づいて割り当てられる、請求項２６または２７に記載の方法。
【請求項２９】
前記記憶装置が、
前記書き込み要求が前記コントローラから受信された後に、前記記憶装置における前記書き込み予定データの前記論理アドレスを前記コントローラへ送信するように構成される第３送信モジュール
を更に備える、請求項１６から２８の何れか一項に記載の記憶装置。
【請求項３０】
前記記憶装置が、
前記コントローラから読み出し要求を受信するように構成される第３受信モジュールであって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、第３受信モジュールと、
前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、
前記ターゲットデータを圧縮解除して前記読み出すべきデータを取得するように構成される圧縮解除モジュールと、
前記読み出すべきデータを前記コントローラへ送信するように構成される第４送信モジュールと
を更に備える、請求項２９に記載の記憶装置。
【請求項３１】
コントローラと、
請求項１６から３０の何れか一項に記載の記憶装置と
を備え、
前記コントローラが、
前記書き込み予定データを含む書き込み要求を生成することと、
前記記憶装置から、前記書き込み要求に対する応答メッセージを受信することであって、前記応答メッセージが、前記記憶装置における前記書き込み予定データの論理アドレスを含む、受信することと、
ディスクアレイにおける前記書き込み予定データの論理アドレスと前記記憶装置における前記書き込み予定データの前記論理アドレスとの間のマッピング関係を記録することと
を実行するように構成される、
記憶システム。
【請求項３２】
前記コントローラが、
ホストから新たな書き込み予定データを受信し、
前記第１フィードバック情報に従って、前記記憶装置の残存容量を決定し、
前記記憶装置の前記残存容量が前記新たな書き込み予定データのサイズよりも大きい場合に、前記新たな書き込み予定データを前記記憶装置へ書き込む
ように更に構成される、請求項３１に記載の記憶システム。
【請求項３３】
コントローラと通信するように構成される通信インタフェースと、
記憶空間を提供するように構成される記憶媒体と、
前記通信インタフェース及び前記記憶媒体に接続されるプロセッサと
を備え、
前記プロセッサは、
前記通信インタフェースを介して前記コントローラから、書き込み予定データを保持する書き込み要求を受信することと、
前記書き込み予定データを圧縮して圧縮データを取得することと、
前記記憶媒体に前記圧縮データを記憶することと、
前記通信インタフェースを介して第１フィードバック情報を前記コントローラへ送信することであって、前記第１フィードバック情報が、前記圧縮データが記憶された後の前記記憶媒体の残存容量を示す、送信することと
を実行するように構成される、
ソリッドステートディスク。
【請求項３４】
前記プロセッサが、前記通信インタフェースを介して第２フィードバック情報を前記コントローラへ送信するように更に構成され、
前記第２フィードバック情報が、前記記憶媒体の論理容量を示し、
前記記憶媒体の前記論理容量が、前記記憶媒体に記憶されているデータの非圧縮データ量と前記記憶媒体の利用可能な物理空間との容量の和である、請求項３３に記載のソリッドステートディスク。
【請求項３５】
前記プロセッサが、
前記書き込み予定データへブランク論理ブロックを割り当てることであって、前記ブランク論理ブロックが、利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記記憶媒体の論理容量のセグメントに対応する、割り当てることと、
割り当てられた前記ブランク論理ブロックを有効論理ブロックへ変換することであって、前記有効論理ブロックは、論理アドレスが有効データで占有される論理ブロックである、変換することと、
前記ソリッドステートディスクにおける残存ブランク論理ブロックの数を問い合わせることと
を実行するように更に構成され、
前記プロセッサが、前記通信インタフェースを介して前記第１フィードバック情報を前記コントローラへ送信するように具体的に構成され、
前記第１フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び／又は、前記残存容量を含み、
前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、請求項３３または３４に記載のソリッドステートディスク。
【請求項３６】
前記プロセッサは、前記プロセッサが前記ブランク論理ブロックを前記書き込み予定データへ割り当てた後に、前記書き込み予定データを圧縮して前記圧縮データを取得するように具体的に構成され、
前記プロセッサが、前記ソリッドステートディスクで追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、決定するように更に構成される、請求項３５に記載のソリッドステートディスク。
【請求項３７】
前記プロセッサが、新しいブランク論理ブロックに対応するエントリを、前記ソリッドステートディスクで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記ソリッドステートディスクのマッピングテーブルへ追加するように更に構成される、請求項３６に記載のソリッドステートディスク。
【請求項３８】
前記プロセッサが、前記ソリッドステートディスクで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記ソリッドステートディスクにおける分離論理ブロックを、ブランク論理ブロックへ更新するように更に構成され、
前記分離論理ブロックは、論理アドレスが前記ソリッドステートディスクで使用不可能な論理ブロックである、請求項３６または３７に記載のソリッドステートディスク。
【請求項３９】
前記ソリッドステートディスクで追加する必要のあるブランク論理ブロックの前記数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、
Ｄは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
Ｌは、前記ソリッドステートディスクにおける論理ブロックの長さを示す、請求項３６から３８の何れか一項に記載のソリッドステートディスク。
【請求項４０】
前記プロセッサが、
前記通信インタフェースを介して前記コントローラからコマンドを受信することであって、前記コマンドが、論理アドレス範囲を備え、前記コマンドが、前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信することと、
前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換することであって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換することと
を実行するように更に構成される、請求項３５から３９の何れか一項に記載のソリッドステートディスク。
【請求項４１】
前記プロセッサが、
前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを決定することと、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択することであって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択することと、
前記部分的なオーバープロビジョニング空間を、前記記憶媒体の前記利用可能な物理空間として用いることと
を実行するように更に構成される、請求項４０に記載のソリッドステートディスク。
【請求項４２】
前記プロセッサが、前記通信インタフェースを介して前記第１フィードバック情報を前記コントローラへ送信する前に、前記プロセッサが、
前記記憶媒体の前記利用可能な物理空間を問い合わせ、
前記利用可能な物理空間の前記容量を前記残存容量と決定する
ように更に構成される、請求項３３または３４に記載のソリッドステートディスク。
【請求項４３】
前記プロセッサが、前記通信インタフェースを介して前記コントローラから前記書き込み要求を受信した後に、前記プロセッサが、
論理アドレスを前記書き込み予定データへ割り当て、
前記マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録する
ように更に構成され、
前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの前記長さ、に関する情報を含む、請求項３３から４２の何れか一項に記載のソリッドステートディスク。
【請求項４４】
前記プロセッサが、前記通信インタフェースを介して前記コントローラから前記書き込み要求を受信した後に、前記プロセッサが、
論理アドレスを前記書き込み予定データへ割り当てることと、
前記マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録することであって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、記録することと、
前記物理ページ上に前記圧縮データのメタデータを記憶することであって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置及び前記圧縮データの前記長さを含む、記憶することと
を実行するように更に構成される、請求項３３から４２の何れか一項に記載のソリッドステートディスク。
【請求項４５】
前記書き込み要求が、前記書き込み予定データの前記データ長を含み、
前記書き込み予定データの前記論理アドレスが、前記データ長に基づいて割り当てられる、請求項４３または４４に記載のソリッドステートディスク。
【請求項４６】
前記プロセッサが前記圧縮データを記憶した後に、前記プロセッサが、前記記憶媒体における前記書き込み予定データの前記論理アドレスを、前記通信インタフェースを介して前記コントローラへ送信するように更に構成される、請求項３３から４５の何れか一項に記載のソリッドステートディスク。
【請求項４７】
前記プロセッサが、
前記通信インタフェースを介して前記コントローラから読み出し要求を受信することであって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、受信することと、
前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すことと、
前記ターゲットデータを圧縮解除して前記読み出すべきデータを取得することと、
前記通信インタフェースを介して前記読み出すべきデータを前記コントローラへ送信することと
を実行するように更に構成される、請求項４６に記載のソリッドステートディスク。
【請求項４８】
コントローラと、
請求項３３から４７の何れか一項に記載のソリッドステートディスクと
を備え、
前記コントローラが、前記書き込み予定データを備える書き込み要求を生成することと、
前記通信インタフェースを介して前記プロセッサから前記書き込み要求に対する応答メッセージを受信することであって、前記応答メッセージが、前記記憶媒体における前記書き込み予定データの論理アドレスを含む、受信することと、
ディスクアレイにおける前記書き込み予定データの論理アドレスと前記記憶媒体における前記書き込み予定データの前記論理アドレスとの間のマッピング関係を記録することと
を実行するように構成される、
記憶システム。
【請求項４９】
前記コントローラが、
ホストから新たな書き込み予定データを受信し、
前記第１フィードバック情報に従って、前記ソリッドステートディスクの残存容量を決定し、
前記ソリッドステートディスクの前記残存容量が前記新たな書き込み予定データのサイズよりも大きい場合に、前記新たな書き込み予定データを前記ソリッドステートディスクへ書き込む
ように更に構成される、請求項４８に記載の記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システムの分野に関し、特に、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムに関する。
【背景技術】
【０００２】
記憶システムは、概して、ホスト、コントローラ（あるいは、ストレージコントローラまたはストレージアレイコントローラと称される）及びディスクアレイを有する。コントローラは、ホストとディスクアレイとの間のブリッジであり、ホストとディスクとの間で通信及びデータ交換を制御するように構成される。
【０００３】
現在、全ての主流の記憶システムは、圧縮機能及び圧縮解除機能をサポートしている。例えば、データがディスクに書き込まれる前に、記憶システムは、概して、そのデータを圧縮する。他の例では、データがディスクから読み出された後、記憶システムはまずそのデータを圧縮解除し、次に圧縮解除データをホストへ返す。データの圧縮及び圧縮解除により、ディスク空間を節約できる。
【０００４】
従来技術において、記憶システムの圧縮機能及び圧縮解除機能は、主に、コントローラによって実装され、具体的にはコントローラにおけるプロセッサによって実装されてよい。例えば、書き込み要求（または、書き込み入力／出力（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ、ＩＯ）と称される）に対して、コントローラは、まず、データを圧縮し、そして次に圧縮データをディスクに書き込む。読み出し要求（または、読み出しＩＯと称される）に対して、コントローラは、まず、ディスクから圧縮データを読み出し、そして次に、読み出しデータを圧縮解除し、そして圧縮解除データをホストへ返す。上述の処理から、コントローラが、圧縮及び圧縮解除の全処理に関与する必要があることが理解できる。しかしながら、データの圧縮及び圧縮解除には、大量のコンピューティングリソースの消費が必要であり、コントローラにより多くの計算上のプレッシャーをもたらす。
【発明の概要】
【０００５】
本願では、コントローラの計算上のプレッシャーを低減するために、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムを提供する。
【０００６】
第１態様によると、データ処理方法が提供され、ここで、当該方法がソリッドステートディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ、ＳＳＤ）に適用される。具体的には、上記方法はＳＳＤにより実行されてよく、例えば、ＳＳＤの中のプロセッサにより実行されてよい。上記方法は、コントローラから、書き込み予定データを保持する書き込み要求をＳＳＤにより受信する段階及び書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階、を備える。ＳＳＤが、論理ブロックに従って、書き込み予定データを圧縮してもよいことが理解されるべきである。即ち、圧縮手段によって取得される圧縮ブロックの数が、書き込み予定データに割り当てられる論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）の数によって決まる。加えて、ＳＳＤは、固定長圧縮または可変長圧縮を用いてよい。上記方法は、圧縮データをＳＳＤにより記憶する段階、及び、第１フィードバック情報をコントローラへＳＳＤにより送信する段階を更に備える。ここで、第１フィードバック情報は、圧縮データが記憶された後のＳＳＤの残存容量を示す。第１フィードバック情報は、残存容量を複数の方法で、例えば、直接的に示す方法や間接的に示す方法で示してよいことが理解されるべきである。例えば、直接的に示す方法とは、ＳＳＤが、当該ＳＳＤの残存容量をコントローラへ直接レポートすることであってよい。間接的に示す方法とは、ＳＳＤが当該ＳＳＤの残存容量の変化をコントローラへレポートし、コントローラが、同様に、ＳＳＤの残存容量の変化に従って、当該ＳＳＤの残存容量を決定できることであってよい。
【０００７】
従来技術において、データ圧縮は、コントローラにより実行され、コントローラ自らが、ＳＳＤの容量を管理すべくアドレス空間を生成する。そのアドレス空間は、固定長のアドレス空間である。一度、アドレス空間が生成されると、そのアドレス空間のサイズは変化しない。その結果、ＳＳＤが、データ圧縮によりもたらされる容量の増加についてコントローラに通知できたとしても、コントローラは、増加した容量を利用することができず、ＳＳＤのストレージリソースを浪費する結果となる。本実装態様では、第１に、圧縮機能がコントローラからＳＳＤへ移され、その結果、コントローラの計算上のプレッシャーを低減することができる。第２に、ＳＳＤの容量管理機能がＳＳＤへ移され、ＳＳＤは、残存容量をコントローラへフィードバックする。ＳＳＤが自身の残存容量を正確に取得できるので、ＳＳＤのストレージリソースの浪費が回避される。
【０００８】
第１態様を参照すると、第１態様のある実装態様において、上記方法が、第２フィードバック情報をコントローラへＳＳＤにより送信する段階を更に備える。ここで、第２フィードバック情報が、ＳＳＤの論理容量を示し、ＳＳＤの論理容量が、ＳＳＤに記憶されているデータの非圧縮データ量及びＳＳＤの利用可能な物理空間の容量の和である。
【０００９】
第１態様を参照すると、第１態様のある実装態様において、第１フィードバック情報をコントローラへＳＳＤにより送信する段階の前に、上記方法が、ＳＳＤの利用可能な物理空間をＳＳＤにより問い合わせる段階と、利用可能な物理空間の容量を残存容量とＳＳＤにより決定する段階とを更に備える。
【００１０】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、書き込み予定データへブランク論理ブロックをＳＳＤにより割り当てる段階であって、ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックはが記ＳＳＤの論理容量のセグメントに対応する、割り当てる段階と、ブランク論理ブロックを有効論理ブロックへＳＳＤにより変換する段階であって、有効論理ブロックは、論理アドレスが有効データで占有される論理ブロックである、変換する段階と、ＳＳＤにおける残存ブランク論理ブロックの数をＳＳＤにより問い合わせる段階と、を更に有する。ここで、第１フィードバック情報をコントローラへＳＳＤにより送信する段階が、第１フィードバック情報をコントローラへＳＳＤにより送信する段階を有し、第１フィードバック情報が、残存ブランク論理ブロックの数、及び／又は、残存容量を有し、残存容量が、残存ブランク論理ブロックの数に基づいて決定される。本実装態様では、ブランク論理ブロックを書き込み予定データへ割り当てた後に、ＳＳＤが、ブランク論理ブロックを有効論理ブロックへ直接変換してもよく、または、ブランク論理ブロックを書き込み予定データへ割り当てた後に、ＳＳＤが、最初に圧縮及び記憶オペレーションを書き込み予定データに実行し、次に、ブランク論理ブロックを有効論理ブロックへ変換してもよいことが、理解されるべきである。
【００１１】
第１態様を参照すると、第１態様のある実装態様において、ＳＳＤは、当該ＳＳＤのマッピングテーブルに従って、ＳＳＤに論理ブロックを記録する。
【００１２】
第１態様を参照すると、第１態様のある実装態様において、書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを書き込み予定データへＳＳＤにより割り当てる段階の後に、書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階を備え、上記方法は、ＳＳＤで追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って、ＳＳＤにより決定する段階を更に備える。
【００１３】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、新しいブランク論理ブロックに対応するエントリを、ＳＳＤで追加する必要のあるブランク論理ブロックの数に従って、ＳＳＤのマッピングテーブルへＳＳＤにより追加する段階を更に備える。
【００１４】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、新しいブランク論理ブロックに対応するエントリを、ＳＳＤで追加する必要のあるブランク論理ブロックの数に従って、ＳＳＤのマッピングテーブルの最後にＳＳＤにより追加する段階を更に備える。
【００１５】
動的に長さが変化するマッピングテーブルを整備することにより、ＳＳＤの論理容量の変化が簡便に記録されてよい。
【００１６】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、ＳＳＤで追加する必要のあるブランク論理ブロックの数に従って、ＳＳＤにおける分離論理ブロックを、ブランク論理ブロックへＳＳＤにより更新する段階を更に備える。ここで分離論理ブロックは、その論理アドレスがＳＳＤで使用不可能な論理ブロックである。
【００１７】
マッピングテーブルにおける論理ブロックのステータスを動的に更新することにより、ＳＳＤにおける論理ブロックの管理を容易にしてよい。
【００１８】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、コントローラからコマンドをＳＳＤにより受信する段階であって、コマンドが論理アドレス範囲を有し、コマンドが論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、論理アドレス範囲における有効論理ブロックを分離論理ブロックへＳＳＤにより変換する段階であって、分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と、を更に備える。上記コマンドは、例えば、トリム／アンマップ（ｔｒｉｍ／ｕｎｍａｐ）コマンドであってよい。
【００１９】
この解決法では、論理ブロックは、ブランク論理ブロック、有効論理ブロック及び分離論理ブロックへ分類される。ＳＳＤにおける論理ブロックのステータスを更新かつ整備することによって、ＳＳＤでの論理ブロックのデータストレージを十分に反映させることができるだけでなく、ＳＳＤの論理容量の動的な変化もまた十分に反映させることができる。
【００２０】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、論理アドレス範囲におけるデータによって占有される物理空間のサイズをＳＳＤにより決定する段階と、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間をＳＳＤにより選択する段階であって、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい、選択する段階と、部分的なオーバープロビジョニング空間をＳＳＤの利用可能な物理空間としてＳＳＤにより用いる段階と、を更に備える。
【００２１】
第１態様を参照すると、第１態様のある実装態様において、ＳＳＤで追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、ここでＤは書き込み予定データの長さと圧縮データの長さとの間の差を示し、ＬはＳＳＤにおける論理ブロックの長さを示す。Ｍはテーブル参照手段により取得されてよく、または、オンラインの計算手段により取得されてもよい。
【００２２】
第１態様を参照すると、第１態様のある実装態様において、ＳＳＤで追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して１を減算した結果に等しく、ここでＤは書き込み予定データの長さと圧縮データの長さとの間の差を示し、ＬはＳＳＤにおける論理ブロックの長さを示す。Ｍはテーブル参照手段により取得されてよく、または、オンラインの計算手段により取得されてもよい。
【００２３】
第１態様を参照すると、第１態様のある実装態様において、コントローラから書き込み要求をＳＳＤにより受信する段階の後に、上記方法が、論理アドレスを書き込み予定データへＳＳＤにより割り当てる段階と、マッピングテーブルに在り、論理アドレスに対応するエントリにマッピング情報をＳＳＤにより記録する段階とを備える。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を更に備える。
【００２４】
上述のマッピング情報を用いることで圧縮データの物理アドレスを直接的に位置付けることができ、これにより、ＳＳＤのアドレス指定の効率を改善できる。
【００２５】
第１態様を参照すると、第１態様のある実装態様において、コントローラから書き込み要求をＳＳＤにより受信する段階の後に、上記方法が、論理アドレスを書き込み予定データへＳＳＤにより割り当てる段階と、マッピングテーブルに在り、論理アドレスに対応するエントリに、マッピング情報をＳＳＤにより記録する段階であって、マッピング情報が、圧縮データを記憶する物理ページに関する情報を有する、記録する段階と、物理ページ上に圧縮データのメタデータをＳＳＤにより記憶する段階と、を更に備える。ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
【００２６】
論理アドレスとデータブロックの物理アドレスとの間のマッピング関係が、マッピングテーブル及び物理ページにより一緒に記録されるので、その結果、ＳＳＤにおいてマッピングテーブルにより占有されるメモリを減少させることができ、かつ、ＳＳＤのメモリ空間を節約できる。
【００２７】
第１態様を参照すると、第１態様のある実装態様において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、上記データ長に基づいて割り当てられる。
【００２８】
第１態様を参照すると、第１態様のある実装態様において、圧縮データをＳＳＤにより記憶する段階の後に、上記方法が、ＳＳＤにおける書き込み予定データの論理アドレスをコントローラへＳＳＤにより送信する段階を更に備える。
【００２９】
第１態様を参照すると、第１態様のある実装態様において、上記方法が、コントローラから読み出し要求をＳＳＤにより受信する段階であって、読み出し要求が、読み出すべきデータの論理アドレスを備える、受信する段階と、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータをＳＳＤにより読み出す段階と、ターゲットデータをＳＳＤにより圧縮解除して読み出すべきデータを取得する段階と、読み出すべきデータをＳＳＤによりコントローラへ送信する段階と、を更に備える。
【００３０】
第１態様を参照すると、第１態様のある実装態様において、第１フィードバック情報をコントローラへＳＳＤにより送信する段階の前に、上記方法が、コントローラにより送信された問い合わせ要求メッセージをＳＳＤにより受信する段階であって、問い合わせ要求メッセージが、ＳＳＤの残存容量を問い合わせるために用いられる、受信する段階を更に備えてよい。ここで、コントローラへ第１フィードバック情報をＳＳＤにより送信する段階が、コントローラへ問い合わせ応答メッセージをＳＳＤにより送信する段階を有し、ここで、問い合わせ応答メッセージが第１フィードバック情報を有する。具体的には、ＳＳＤは、コントローラにより送信された問い合わせメッセージを受信する。ここで、問い合わせメッセージは、ＳＳＤにおける残存ブランク論理ブロックの数を問い合わせるために具体的に用いられ、問い合わせ応答メッセージをコントローラへＳＳＤにより送信し、ここで、問い合わせ応答メッセージは、残存ブランク論理ブロックの数を示すために用いられる。
【００３１】
第１態様を参照すると、第１態様のある実装態様において、第１フィードバック情報をコントローラへＳＳＤにより送信する段階は、第１フィードバック情報をコントローラへＳＳＤにより能動的に送信する段階を備える。具体的には、ＳＳＤは、残存ブランク論理ブロックの数をコントローラへ能動的に送信してよい。ＳＳＤが、残存ブランク論理ブロックの数をコントローラへ、１つの期間に従ってフィードバックしてもよく、あるいは、残存ブランク論理ブロックをレポートするイベントによってトリガされてもよいことが理解されるべきである。
【００３２】
第２態様によると、記憶装置が提供される。ここで記憶装置は、第１態様での方法を実行するためのモジュールを備える。
【００３３】
第３態様によると、ソリッドステートディスクが提供され、通信インタフェース、記憶媒体及びプロセッサを備える。ここで、通信インタフェースはコントローラと通信を実行するように構成され、記憶媒体は記憶空間を提供するように構成され、プロセッサは通信インタフェース及び記憶媒体に接続され、通信インタフェース及び記憶媒体を用いることにより、第１態様における方法を実行する。
【００３４】
第４態様によると、コンピュータ可読媒体が提供される。ここで、コンピュータ可読媒体は、ソリッドステートディスクにより実行されるプログラムコードを記憶する。プログラムコードは、第１態様における方法を実行するための命令を有する。
【００３５】
上述の実装態様において、マッピングテーブルは、ＳＳＤの論理アドレス空間を示すために用いられてよい。
【００３６】
上述の実装態様において、ＳＳＤにおける論理ブロックは、ＳＳＤの論理アドレス空間に関する基本単位である。
【００３７】
上述の実装態様において、書き込み予定データの論理アドレスをＳＳＤにより決定する段階が、Ｎ個のブランク論理ブロックを、書き込み予定データにおけるＮ個のデータブロックへ、ＳＳＤにより割り当てる段階と、Ｎ個のブランク論理ブロックの論理アドレスを書き込み予定データの論理アドレスとしてＳＳＤにより用いる段階と、を有してよい。ここで、ブランク論理ブロックが、ＳＳＤでの利用可能な論理アドレスを有する論理ブロックであり、Ｎ個のデータブロックにおける各データブロックの長さは、ＳＳＤでの論理ブロックの長さと同一であり、Ｎは１に等しいかまたはそれよりも大きな整数である。
【００３８】
従来技術において、ＳＳＤの全ての論理アドレスは、コントローラによって割り当てられ、管理される。しかしながら、ＳＳＤは、自身のデータストレージと圧縮ステータスをほとんど把握している。そこで、本実装態様では、ＳＳＤの論理アドレスを割り当て管理する機能が、コントローラからＳＳＤへ移動させ、これにより、ＳＳＤにおける論理アドレスの割り当て及び管理の方式をより適切なものとする。
【００３９】
上述の実装態様において、Ｎ個のブランク論理ブロックを、書き込み予定データにおけるＮ個のデータブロックへＳＳＤにより割り当てる段階は、ＳＳＤにおける論理ブロックからＮ個のブランク論理ブロックをＳＳＤによりランダムに選択する段階を有してよい。
【００４０】
上述の実装態様において、Ｎ個のブランク論理ブロックを、書き込み予定データにおけるＮ個のデータブロックへＳＳＤにより割り当てる段階は、マッピングテーブルにおけるブランク論理ブロックに対応するエントリの位置に従って、最初の位置におけるＮ個のブランク論理ブロックをＳＳＤにより選択する段階を有してよい。
【００４１】
上述の実装態様において、ＳＳＤは、前もってセットされた圧縮粒度に従って、書き込み予定データをスライスし、Ｎ個のデータブロックを取得してよい。ここで、圧縮粒度は、ＳＳＤにおける論理ブロックの長さに等しく、Ｎは１よりも大きな整数である。圧縮粒度は、ＳＳＤにおけるデータブロックの圧縮単位、つまりは、圧縮のための単位として用いられるサイズを具体的に示してよい。
【００４２】
圧縮粒度は、論理ブロックの長さと等しくなるように設定される。これにより、ＳＳＤにおける実装を簡素化し、マッピングテーブルの管理を容易にしてよい。
【００４３】
従来技術において、データはコントローラにより圧縮され、コントローラ自らが、ＳＳＤの容量を管理すべくアドレス空間を生成する。そのアドレス空間は、固定長のアドレス空間である。一度、アドレス空間の生成が完了すると、そのアドレス空間のサイズは変化しないまま保持される。従って、データ圧縮によりもたらされた容量の増加についてＳＳＤがコントローラに通知することができたとしても、コントローラは増加した容量を用いることができず、ＳＳＤのストレージリソースを浪費する結果となる。本発明の実施形態においては、第１に、圧縮機能がコントローラからＳＳＤへ移動され、その結果、コントローラの計算上のプレッシャーが低減される。第２に、ＳＳＤの容量管理機能はＳＳＤへ移動され、ＳＳＤが残存容量をコントローラへフィードバックする。ＳＳＤが自身の残存容量を正確に取得することができるので、ＳＳＤにおけるストレージリソースの浪費が回避される。
【図面の簡単な説明】
【００４４】
本発明の実施形態における技術的解決法をより明確に説明すべく、本発明の実施形態を説明するために必要な添付の図面を以下で簡潔に説明する。以下の説明における添付の図面は、本発明の実施形態のいくつかを示すものに過ぎず、当業者であれば、これら添付の図面から創造的努力なく他の図面をさらに導き出し得ることは明らかである。
【００４５】
【図１】記憶システムによって、ホストの書き込み要求を処理するフローチャートである。
【００４６】
【図２】記憶システムによって、ホストの書き込み要求を処理するフローチャートである。
【００４７】
【図３】本発明の実施形態に係る記憶システムの概略構造図である。
【００４８】
【図４】本発明の実施形態に係るマッピングテーブルの一例の図である。
【００４９】
【図５】本発明の実施形態に係る論理ブロックの状態遷移の図である。
【００５０】
【図６】本発明の実施形態に係る論理ブロックと物理ブロックとの間のマッピングの一例の図である。
【００５１】
【図７】本発明の実施形態に係る固定長圧縮システムにおける圧縮手順の一例の図である。
【００５２】
【図８】本発明の実施形態に係る、圧縮ブロックの丸め処理方式の一例の図である。
【００５３】
【図９】本発明の実施形態に係る、マッピング情報の記憶方式の一例の図である。
【００５４】
【図１０】本発明の実施形態に係る、マッピング情報の記憶方式の一例の図である。
【００５５】
【図１１】本発明の実施形態に係る物理ページの一例の図である。
【００５６】
【図１２】本発明の実施形態に係る書き込み要求を処理するフローチャートである。
【００５７】
【図１３】固定長圧縮における段階１２１４の実装態様の概略フローチャートである。
【００５８】
【図１４】可変長圧縮における段階１２１４の実装態様の概略フローチャートである。
【００５９】
【図１５】本発明の実施形態に係るトリム／アンマップ手順の一例の図である。
【００６０】
【図１６】本発明の実施形態に係る読み出し要求を処理する概略フローチャートである。
【００６１】
【図１７】本発明の実施形態に係る記憶装置の概略構造図である。
【００６２】
【図１８】本発明の実施形態に係る記憶システムの概略構造図である。
【００６３】
【図１９】本発明の実施形態に係るソリッドステートディスクの概略構造図である。
【００６４】
【図２０】本発明の実施形態に係る記憶システムの概略構造図である。
【発明を実施するための形態】
【００６５】
以下、本発明の実施形態における添付の図面を参照して、本発明の実施形態における技術的解決法を明確かつ完全に説明する。説明される実施形態が、本発明の実施形態の全てではなく一部であることは明らかである。創造的な取り組みなしに、本発明の実施形態に基づき当業者に得られたすべての他の実施形態は、本発明の保護範囲に属する。
【００６６】
本発明の実施形態におけるディスク（ｄｉｓｋ）とはＳＳＤを指してよく、ディスクアレイとはＳＳＤアレイを指してよいことに注意すべきである。
【００６７】
理解し易くするために、最初に、既存の記憶システムにおけるデータ圧縮方式が、図１及び図２を参照して簡潔に説明される。
【００６８】
図１は、記憶システムによって、ホストの書き込み要求（またはＩＯと称される）を処理するフローチャートである。図１の記憶システムは、固定長圧縮に基づく記憶システムである。固定長圧縮では、データブロックを１または複数の固定長圧縮ブロックに圧縮してよい。例えば、記憶システムの圧縮粒度が４ＫＢであると仮定した場合（即ち、４ＫＢが圧縮の単位として用いられる）に、固定長圧縮に基づく記憶システムは、４ＫＢのデータブロックを０．５ＫＢの整数倍に圧縮する。例えば、４ＫＢのデータブロックは、以下の粒度、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、３ＫＢ、３．５ＫＢまたは４ＫＢ、のうちの１つに圧縮される（４ＫＢのデータブロックの圧縮サイズが３．５ＫＢよりも大きい場合には、そのデータブロックは圧縮される必要がない。）具体的には、４ＫＢのデータブロックの圧縮された長さが、０．５ＫＢと１ＫＢの間であると仮定した場合に、１ＫＢのデータブロックを取得すべく、上方アライメントオペレーションが該データブロックに対して実行される必要がある。上方アライメントの特定の態様は、圧縮データの最後に０を追加することであってよく、１ＫＢになるまで圧縮データに充填（スタフ、ｓｔｕｆｆ）する。データブロックの圧縮粒度は、また、８ＫＢや１６ＫＢ等、他のいかなる粒度であってよく、各圧縮粒度のデータブロックは、０．５ＫＢの整数倍や１ＫＢの整数倍等に圧縮されてよいことが理解されるべきである。このことは、本発明の実施形態において具体的には限定されない。  説明のため、以下では主に、４ＫＢの圧縮粒度において、圧縮ブロックとなるべき４ＫＢが、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、３ＫＢ、３．５ＫＢまたは４ＫＢのうちの１つに圧縮される一例を用いる。
【００６９】
１０２．ホストが書き込み要求をコントローラへ送信する。
【００７０】
書き込み要求は、ディスクに書き込まれる予定のデータを有してよい。コントローラは、また、ストレージコントローラと称されてよく、物理的な記憶空間を提供するディスクを管理してよい。ディスクがアレイを形成する場合には、コントローラは、また、アレイコントローラと称されてよい。
【００７１】
１０４．コントローラが、ディスクに書き込まれる予定のデータを、固定長に従って、パーティション化する。
【００７２】
具体的には、ディスクへ書き込まれる予定のデータが、データブロックを生成すべく、圧縮粒度に従って、パーティション化されてよい。例えば、圧縮粒度が４ＫＢである場合に、４ＫＢが、ディスクへ書き込まれる予定のデータをパーティション化するための単位として用いられる。
【００７３】
１０６．コントローラは、パーティション化されたデータブロックを圧縮し、圧縮データに対して上方アライメントオペレーションを実行する。
【００７４】
４ＫＢのデータブロックが圧縮された後に形成される圧縮データの長さが０．５ＫＢ未満だと仮定した場合には、圧縮データに対して切り上げオペレーションが実行されてよく、圧縮データは、０．５ＫＢの圧縮ブロックとなるように充填される。
【００７５】
１０８．コントローラは、圧縮ブロックに丸め処理を行い、適切なディスクを選択する。
【００７６】
例えば、圧縮ブロックは、物理ページのサイズの単位で丸め処理されてよい（ここでは、４ＫＢの物理ページが、説明のため一例として用いられる）。４ＫＢのデータブロックが丸め処理によって取得される毎に、書き込み要求が生成されてよい。次に、１または複数の生成された書き込み要求で保持されるデータが、選択されたディスクに一度に書き込まれてよい。代わりに、複数の４ＫＢのデータブロックが丸め処理により取得された後に、データブロックが、選択されたディスクに一度に書き込まれてもよい。
【００７７】
加えて、コントローラは、丸め処理されたデータを記憶するためのディスクを選択する必要がある。ディスクを検索するための複数のポリシーまたは方式があり得る。例えば、ディスクの残りの空間が、ディスクに書き込まれる予定のデータの長さよりも大きいことが確かであるならば、コントローラは、ディスクアレイからランダムにディスクを選択してよい。代わりに、コントローラは、複数のディスクに記憶されるデータが均等になるように、ディスクアレイにおける各ディスクの現在のデータストレージ容量等の要因に基づいて、適切なディスクを選択する。
【００７８】
１１０．コントローラは、書き込み要求を選択されたディスクへ送信する。
【００７９】
書き込み要求は、ディスクへ書き込まれる予定のデータと、コントローラにより書き込み要求におけるデータへ割り当てられるディスクの論理アドレスとを有してよい。
【００８０】
１１２．上述の段階が処理された後、データは最後にディスクへ到達し、ディスクは、当該ディスクの物理アドレスにそのデータを書き込み、そして、書き込み要求成功応答をコントローラへ返す。
【００８１】
１１４．コントローラは、ホストへ書き込み要求成功応答をフィードバックする。
【００８２】
図２は、記憶システムによって、ホストの書き込み要求を処理するフローチャートである。図２の記憶システムは、可変長圧縮に基づく記憶システムである。固定長圧縮と異なり、可変長圧縮では、データブロックが固定長へ圧縮されることを必要としない。依然として４ＫＢの圧縮粒度が、一例として用いられ、４ＫＢのデータブロックの圧縮された長さが２７７８Ｂだと仮定した場合に、２７７８Ｂのデータブロックは調整される必要がない。即ち、圧縮された長さは変化しない。図２の段階２０２から２１４は、基本的に図１の段階１０２から１１４と同様であり、繰り返しを回避すべく、詳細をここで再度説明しない。図１及び図２の間の主な違いは、可変長圧縮が段階２０６におけるデータブロックに対して実行されるが、固定長圧縮は段階１０６のデータブロックに対して実行されるという点にある。
【００８３】
図１及び図２のどちらも、書き込み要求処理手順を説明する。ホストがディスクからデータを読み出す必要がある場合、ホストは読み出し要求をコントローラへ送信する。読み出し要求を受信した後、コントローラは、まず、ディスクからデータを取得し、次に、データを圧縮解除し、圧縮解除データをホストへ返す。読み出し要求処理手順は、書き込み要求処理手順の逆手順であり、繰り返しを回避すべく、詳細をここで再度詳細には説明しない。
【００８４】
上記の説明に基づくと、従来技術では、圧縮機能及び圧縮解除機能が、主に、コントローラにより実施されることが理解できる。記憶システムでのデータ処理の規模がますます増大しているので、圧縮機能及び圧縮解除機能は、コントローラの大量のコンピューティングリソースを消費する必要がある。その結果、コントローラによる書き込み要求の処理における遅延は長くなり、更には、記憶システム全体のパフォーマンスが減少する。
【００８５】
技術の進展に伴い、ＳＳＤが、ディスクアレイによって主に用いられる記憶媒体の１つとなっている。ＳＳＤと従来のハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ、ＨＤＤ）の違いの１つは、ＳＳＤが、データ処理能力を有するプロセッサを有するという点にある。従来技術において、ＳＳＤのプロセッサは、主に、ブロック管理、ガベージコレクション、ウェアレベリング、論理アドレスと物理アドレスとの間の変換等の単純な機能を実行するように構成される。しかしながら、技術の進展に伴い、ＳＳＤの中のプロセッサの処理能力はますます強力なものとなり、ＳＳＤが上述した機能のみを実行するために用いられるとしたら、ＳＳＤの中のプロセッサの処理能力を十分に発揮することができない。そこで、ＳＳＤの中のプロセッサの処理能力を十分に使用し、コントローラの負荷を減らすために、圧縮機能及び圧縮解除機能がＳＳＤへ移されてよい。従って、本発明の実施形態では、圧縮機能及び圧縮解除機能のどちらもがＳＳＤにより実施されてよい。以下、本発明の実施形態における記憶システムの構成構造と記憶システムの構成要素に関する諸機能を、図３を参照して詳細に説明する。
【００８６】
図３は、本発明の実施形態に係る記憶システムの概略構造図である。図３の記憶システムは、ホスト（ｈｏｓｔ）３１０、コントローラ３２０及びＳＳＤ３３０を備える。図３から見て取れるように、コントローラ３２０は、ホスト３１０及びＳＳＤ３３０の間に位置付けられ、ブリッジとしてホスト３１０及びＳＳＤ３３０の間のデータ交換を実行する。
【００８７】
具体的には、コントローラ３２０は、中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）（または、計算能力を有する別のチップ、例えば、フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ Ａｒｒａｙ、ＦＰＧＡ））及びキャッシュ（Ｃａｃｈｅ）等の構成要素を有してよい。図３のコントローラ３２０は、ホストから分離されている。しかしながら、本発明の実施形態は、これに限定されるものではない。コントローラ３２０は、独立したハードウェアデバイスであってよく、または、ホスト３１０上で統合されたソフトウェアモジュールであってよい。加えて、コントローラ３２０は、１または複数のＳＳＤに接続されてもよい。
【００８８】
依然として図３を参照すると、ＳＳＤは、フラッシュメモリチップを有してよい（フラッシュメモリチップは、ＳＳＤにおける記憶媒体である）。ＳＳＤ（またはＳＳＤの中のプロセッサ）は、ＳＳＤにおけるブロックを管理するように構成されたブロック管理部を有してよく、ここで、ブロック（ｂｌｏｃｋ）とは、ＳＳＤにおける基本的な消去単位である。例えば、ＳＳＤは、ブロック管理部を用いてＳＳＤにおけるブロックの識別子を整備し、ガベージコレクションの後にブロックを消去し、ＳＳＤにおける不良ブロックを記録及び置換する。ＳＳＤは、ＳＳＤの中のデータのアドレス指定を実行するように構成された物理アドレス変換部への論理アドレスを更に有してよい。ガベージコレクション部は、ＳＳＤにおける無効データにガベージコレクションを実行するように構成され、例えば、あるブロックにおける有効データを別のブロックへ移動する。ウェアレベリング部は、ＳＳＤにおけるブロックの摩耗程度（即ち、書き込み／消去サイクル）ができるだけ均一となるように、ＳＳＤにおけるブロックの書き込み／消去サイクルを制御するように構成される。
【００８９】
更に、ＳＳＤにおける圧縮機能及び圧縮解除機能を実行すべく、圧縮及び圧縮解除部が、ＳＳＤへ加えられてよい。具体的には、コントローラの書き込み要求を受信した場合に、ＳＳＤは、まず、書き込み要求における書き込み予定データを圧縮し、次に、圧縮データをＳＳＤにけるフラッシュメモリチップに書き込む。コントローラの読み出し要求を受信した場合に、ＳＳＤは、ＳＳＤにおけるフラッシュメモリチップからデータを読み出し、そして、読み出したデータを圧縮解除し、圧縮解除データをコントローラへ返してよい。
【００９０】
ＳＳＤでのデータ圧縮は、ＳＳＤの論理容量の変化を伴う。具体的には、ＳＳＤの論理容量が４００ＧＢであるが、このＳＳＤにおいて、受信した４００ＧＢのデータが４：１の圧縮比に従って圧縮され、１００ＧＢの圧縮データが取得されることを、コントローラが把握すると仮定する。この場合、ディスクが依然として３００ＧＢのデータを記憶可能であること、即ち、この場合にディスクが依然として３００ＧＢの論理容量を有することをコントローラが把握できないとすると、ＳＳＤリソースの浪費がもたらされる。以下、問題の原因を説明する。
【００９１】
第１に、より望ましい説明のため、ＳＳＤに関連する３種類の容量、即ち、媒体容量、物理容量及び論理容量がまず説明される。
【００９２】
媒体容量：ＳＳＤにおけるフラッシュメモリチップの合計容量である。例えば、公称で４００ＧＢを有するＳＳＤにおいて、ＳＳＤの中のフラッシュメモリチップの容量は、一般的には４００ＧＢよりも大きく、例えば５１２ＧＢでありうる。即ち、５１２ＧＢの媒体容量のうち、冗長空間とも称される、１１２ＧＢのオーバープロビジョニング（Ｏｖｅｒ  Ｐｒｏｖｉｓｉｏｎｉｎｇ、ＯＰ）空間が存在する。オーバープロビジョニング空間は、ＳＳＤの信頼性を向上するために用いられ、一般的にはユーザが用いることはできない。確かに、異なるメーカーがＳＳＤを設計する場合に用いられる冗長性比は異なっており、その結果、ＳＳＤのオーバープロビジョニング空間のサイズもまた変化する。オーバープロビジョニング空間は、不良ブロック置換またはガベージコレクションの間のデータ移行のために用いられてよい。
【００９３】
物理容量：ＳＳＤで利用可能な公称の容量である。それは、ユーザがＳＳＤでデータを記憶するために用いることのできる記憶媒体の容量に等しい。例えば、公称４００ＧＢを有するＳＳＤで、対応する物理容量は４００ＧＢである。データが記憶される前に、ＳＳＤがそのデータを圧縮するか否かに関係なく、ＳＳＤの物理容量は変化しない。
【００９４】
論理容量：ＳＳＤに実際に記憶できるデータの合計容量、即ち、データ記憶に用いることのできるＳＳＤの容量である。ＳＳＤがデータを圧縮しないならば、論理容量は、一般的には、物理容量に等しい。データを記憶する前に、ＳＳＤがそのデータを圧縮する場合、ＳＳＤの論理容量は、ＳＳＤの利用可能な物理空間とＳＳＤに記憶されるデータのうちの非圧縮データ量との和に等しい。従って、論理容量は動的に変化する。例えば、４００ＧＢの物理容量を有するＳＳＤに対して、データサイズが１２００ＧＢであり、そして、当該データが圧縮され、ＳＳＤに実際に記憶される圧縮データのサイズが４００ＧＢであると、ＳＳＤの論理容量は１２００ＧＢである。論理容量は、ディスクに記憶されるデータの圧縮比に関連しており、異なるデータが記憶されると動的に変化する。
【００９５】
理解し易くするために、以下では、一例として、ＳＳＤの論理容量の変化の計算方式を、固定長圧縮及び可変長圧縮を用いて別々に説明する。
【００９６】
ＳＳＤの公称物理容量が４００ＧＢだと仮定すると、ＳＳＤの初期の公称論理容量は４００ＧＢに等しい。一例として、４ＫＢのデータブロックの圧縮ステータスに対して、４ＫＢの圧縮粒度が依然として用いられ、ＳＳＤの論理容量の増加量が、以下のいくつかの方式で計算されてよい。
【００９７】
（１）４ＫＢのデータブロックが０．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−０．５ＫＢ＝３．５ＫＢとなる。
【００９８】
（２）４ＫＢのデータブロックが１ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−１ＫＢ＝３ＫＢとなる。
【００９９】
（３）４ＫＢのデータブロックが１．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−１．５ＫＢ＝２．５ＫＢとなる。
【０１００】
（４）４ＫＢのデータブロックが２ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−２ＫＢ＝２ＫＢとなる。
【０１０１】
（５）４ＫＢのデータブロックが２．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−２．５ＫＢ＝１．５ＫＢとなる。
【０１０２】
（６）４ＫＢのデータブロックが３ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−３ＫＢ＝１ＫＢとなる。
【０１０３】
（７）４ＫＢのデータブロックが３．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−３．５ＫＢ＝０．５ＫＢとなる。
【０１０４】
以下、ＳＳＤの論理容量の増加量の計算についての具体例を提供する。
【０１０５】
４Ｍ４ＫＢのデータブロックがあると仮定すると、これらのデータブロックの合計長さは１６ＧＢである。
【０１０６】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ２ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−２ＫＢ）＝２ＧＢとなる。
【０１０７】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ１．５ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−１．５ＫＢ）＝２．５ＧＢとなる。
【０１０８】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ１ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−１ＫＢ）＝３ＧＢとなる。
【０１０９】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ０．５ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−０．５ＫＢ）＝３．５ＧＢとなる。
【０１１０】
結論として、合計１６ＧＢのデータが、ＳＳＤに記憶される。圧縮することにより、この１６ＧＢのデータにより実際に占有される物理容量は、２ＧＢ＋１．５ＧＢ＋１ＧＢ＋０．５ＧＢ＝５ＧＢとなる。この場合、ＳＳＤの論理容量の増加量は、２ＧＢ＋２．５ＧＢ＋３ＧＢ＋３．５ＧＢ＝１１ＧＢとなり、論理容量は４１１ＧＢへ変化する。
【０１１１】
可変長圧縮では、４ＫＢのデータブロックの圧縮サイズは、例えば、２７７８Ｂ、１６７８Ｂ、２０１２Ｂ及び１２１２Ｂ等の可変長のデータブロックへ圧縮されてよい。４ＫＢのデータブロックの圧縮ステータスに対して、以下に、ＳＳＤの論理容量の増加量の計算方式の一例を提供する。
【０１１２】
（１）４ＫＢのデータブロックが２７７８Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−２７７８Ｂ＝１３１８Ｂとなる。
【０１１３】
（２）４ＫＢのデータブロックが１６７８Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−１６７８Ｂ＝２４１８Ｂとなる。
【０１１４】
（３）４ＫＢのデータブロックが２０１２Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−２０１２Ｂ＝２０８４Ｂとなる。
【０１１５】
（４）４ＫＢのデータブロックが１２１２Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−１２１２Ｂ＝２８８４Ｂとなる。
【０１１６】
上記の説明から、固定長圧縮または可変長圧縮に関係なく、ＳＳＤの論理容量が、データブロックの圧縮ステータスに従って、動的に変化することが理解できる。確かに、データ圧縮に加えて、トリム／アンマップオペレーションが、また、ＳＳＤの論理容量を変化させてよい。トリム／アンマップオペレーションは、以下で詳細に説明される。
【０１１７】
結論として、ＳＳＤの論理容量は、データの圧縮ステータスに従って、動的に変化する。もしコントローラが、ＳＳＤの論理容量の動的な変化を把握できず、かつ、コントローラが論理容量の増加を認識できず、しかしながら、従来技術においてそうであるように、依然としてＳＳＤの論理容量は変化しないと判断するならば、圧縮することで節約した記憶空間を十分に利用することができず、ＳＳＤの記憶空間の浪費がもたらされる。従って、コントローラ及びＳＳＤの間の協働を許容し、ＳＳＤが動的に変化する論理容量を検出・管理してＳＳＤの論理容量の動的な変化をコントローラへ示すことを可能とする一連の解決策をいかに設計するかは、圧縮機能及び圧縮解除機能がＳＳＤへ移される場合に、考慮される必要のある問題である。
【０１１８】
上述の問題を解決すべく、可変長マッピングテーブル管理部３３１及び論理ブロックステータス管理部３３２（図３を参照すると）がＳＳＤへ加えられてよく、ＳＳＤ論理アドレス管理部３２１がコントローラへ加えられてよい。以下、これらのユニットの機能を詳細に説明する。
【０１１９】
可変長マッピングテーブル管理部３３１は、ＳＳＤのマッピングテーブルを管理し整備するように構成されてよい。マッピングテーブルは、ＳＳＤの論理アドレス空間を反映する。マッピングテーブルは、１または複数のエントリ（または、アイテムと称される）を有する。各エントリは、論理アドレス空間における論理アドレス範囲に対応する。マッピングテーブルにおける各エントリに対応する論理アドレス範囲は、マッピングテーブルの基本粒度である。例えば、各エントリが４ＫＢの論理アドレス範囲に対応すると仮定した場合、マッピングテーブルの基本粒度は、４ＫＢである。一般的に、各エントリは１つの論理ブロックに対応する。各エントリに対応する論理アドレス範囲は、論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）と称される。加えて、マッピングテーブルは、ＬＢＡを物理ブロックアドレス（Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＰＢＡ）にマッピングするために用いられてよく、マッピングテーブルに記録されるマッピング関係は、データのアドレス指定を実行するために用いられてよい。本発明の実施形態において、ＳＳＤのマッピングテーブルの長さは、ＳＳＤの論理容量が変化するにつれて、動的に変化してよい。
【０１２０】
更に、ＳＳＤにおける圧縮及び圧縮解除処理は、マッピングテーブルを用いることによりマスクされてよい。具体的には、ＳＳＤのマッピングテーブルは、ＳＳＤの論理アドレス空間におけるデータの記憶ステータスを反映し、占有された論理アドレス空間のサイズは、データの元のサイズ（非圧縮のサイズ）によって決まる。即ち、論理アドレス空間におけるデータ記憶には圧縮現象は存在せず、このことは、マッピングテーブルを用いて、ＳＳＤによるデータの圧縮処理をマスクすることに等しい。
【０１２１】
加えて、マッピングテーブルの基本粒度は、圧縮粒度と一致し続けてよい。マッピングテーブルは、ＳＳＤの中のメモリに位置付けられてよい。
【０１２２】
依然として図３を参照すると、論理ブロックステータス管理部３３２は、ＳＳＤにおける論理ブロックのステータスを管理し整備するように構成されてよい。具体的には、ＳＳＤは３つのステータスの論理ブロック：ブランク論理ブロック（またはブランクブロックと称される）、有効論理ブロック（または有効ブロックと称される）、及び分離論理ブロック（または分離ブロックと称される）、を有してよい。ブランク論理ブロックは、利用可能な論理アドレスを有する論理ブロックを指してよいと理解されるべきである。ブランク論理ブロックの数は、ＳＳＤの残存論理容量を反映してよく、あるいは、ブランク論理ブロックの数は、ＳＳＤの残存する利用可能な空間を反映してもよい。加えて、ブランク論理ブロックの数は、ＳＳＤの論理容量が変化するにつれて、動的に変化してよい。従って、ブランク論理ブロックの数の動的な変化は、ＳＳＤの論理容量の動的な変化の測定基準（メトリック、ｍｅｔｒｉｃ）として用いられてよい。有効論理ブロックとは、その論理アドレスが有効データを記憶する論理ブロックを指してよく、有効データとは、トリムまたはアンマップされないデータを指してよい。分離論理ブロックとは、その論理アドレスが使用不可能な論理ブロックを指してよく、例えば、論理アドレスが無効データにより占有された論理ブロックを指してよい。無効データは、例えば、トリム／アンマップオペレーションにより無効とマークされたデータであってよい。
【０１２３】
具体的には、ＳＳＤのマッピングテーブルは、図４に示される形式を用いて、ＳＳＤの１次元論理アドレス空間を示してよい。図４の正方形のボックスは、マッピングテーブルの基本粒度を表す。基本粒度は、４ＫＢ／８ＫＢ／１６ＫＢ／３２ＫＢ／６４ＫＢなどであってよい。マッピングテーブルで示される１次元論理アドレス空間の長さは、可変であってよく、即ち、動的に増加または減少してよい。加えて、マッピングテーブルは、分離論理ブロックを有してよく、図４における分離論理ブロックは、対角縞により特定される。分離論理ブロックに対応する論理アドレス範囲におけるデータは、無効データであり、分離論理ブロックに対応する論理アドレスを一時的に用いることができない。
【０１２４】
ＳＳＤにおける論理ブロックは、上述の３つのステータスの間を遷移してよい。以下では、図５を参照して、ＳＳＤにおける論理ブロックの状態遷移処理を詳細に説明する。
【０１２５】
最初に、論理ブロックに対応する論理アドレスが未使用の場合、論理ブロックはブランク論理ブロックである。有効データを記憶するためにブランク論理ブロックの論理アドレスが用いられると、ブランク論理ブロックは、有効論理ブロックへ変化する。
【０１２６】
次に、トリム／アンマップオペレーションにより、有効論理ブロックが、分離論理ブロックへ変化してよい（トリム／アンマップオペレーションに関する詳細な説明については、以下のトリム／アンマップ手順を参照されたい）。以下のシナリオを検討する。まず、圧縮比４を有する一群のデータがＳＳＤへ書き込まれ、次に、圧縮不可能な一群のデータがＳＳＤへ書き込まれる。ＳＳＤの物理容量が４００ＧＢだと仮定すると、圧縮比４を有するデータがＳＳＤへ書き込まれる場合、ＳＳＤは、実際には１６００ＧＢのデータを記憶することができる。この場合、ＳＳＤの論理容量は、４００ＧＢから１６００ＧＢへ拡大される。この場合、マッピングテーブルにより反映される論理アドレス空間は、１６００ＧＢである。次に、ＳＳＤのデータが更新され、圧縮不可能な４００ＧＢのデータが、ＳＳＤに記憶される。この場合、ＳＳＤは、実際には４００ＧＢのデータのみを記憶することができる。この場合、ＳＳＤに対応する論理容量は、１６００ＧＢから４００ＧＢへ再び減少する。論理容量が減少する間、論理アドレス空間の一部は確実に無効となり、分離論理ブロックが、論理アドレス空間に生成される。
【０１２７】
次に、ＳＳＤの論理容量が増加するにつれて、分離論理ブロックが、再度、ブランク論理ブロックへ更新されてよい。具体的には、ＳＳＤの論理容量が増加する場合には、ＳＳＤの論理アドレス範囲が増加し、これに応じて、ＳＳＤにおけるブランク論理ブロックの数が増加する。この場合、マッピングテーブルにおける分離論理ブロックをブランク論理ブロックへ更新することが、優先的に考慮されてよい。マッピングテーブルにおける全ての分離論理ブロックがブランク論理ブロックへ更新されると、新しいブランク論理ブロックに対応するエントリが、マッピングテーブルの最後に加えられてよい。即ち、ブランク論理ブロックが加えられる。
【０１２８】
マッピングテーブルは、ＳＳＤの論理アドレスから物理アドレスへのマッピング関係を記録してよい。マッピング関係は、論理ブロックの論理アドレスと物理ブロックの物理アドレスとの間のマッピング関係によって、具体的に反映されてよい。ＳＳＤにおける物理ブロックのサイズは、必要により設定されてよい。例えば、物理ブロックは、１／４物理ページ、１／２物理ページ、１物理ページ、複数の物理ページ、１つのブロック（ｂｌｏｃｋ）、または複数のブロック、を有してよい。論理ブロックから物理ブロックへのマッピング関係とは、複数の論理ブロックが１つの物理ブロックにマッピングされること、即ち、多数対１のマッピング関係であってよい。ＳＳＤが、物理ブロックのサイズに従って、ＳＳＤの物理アドレス範囲を、１または複数の物理ブロックへ分割してよいことが理解されるべきである。図６は、複数の物理ブロックのうちの１つを示す。図６を参照すると、ＳＳＤが固定長圧縮及び可変長圧縮のいずれをサポートするかに関係なく、各論理ブロックが、１つの物理ブロックに対応してよく、複数の圧縮ブロックが、各物理ブロックに記憶されてもよい。
【０１２９】
マッピングテーブルにおけるマッピング情報は、物理ブロックにおける圧縮ブロックの記憶場所を示してよい。マッピング情報についての複数の特定の形が、存在してよい。例えば、マッピング情報は、圧縮ブロックを記憶する物理ページに関する情報（例えば、物理ページの識別子または数）、物理ページ上の圧縮ブロックの開始位置に関する情報、及び圧縮ブロックの長さの情報等の情報、を有してよい。この指定方式において、圧縮ブロックは迅速に位置付けられることができ、アドレス指定効率は高い。オプションで、マッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有してよい。物理ページ上の圧縮ブロックの開始位置、及び圧縮ブロックの長さは、メタデータとして物理ページ上に記憶されてよく、例えば、物理ページのヘッダに記憶されてよい。一般的に、マッピングテーブルはＳＳＤのメモリ空間に記憶されるので、マッピング情報における物理ページ情報のみが記憶されれば、マッピングテーブルの長さは低減され、ＳＳＤのメモリ空間が節約されうる。ＳＳＤが固定長圧縮及び可変長圧縮のいずれをサポートするかに関係なく、１または複数の上述の実装態様が、ＳＳＤにおけるマッピング情報に対して、用いられてよい。このことは、本発明の実施形態において具体的には限定されない。詳細は、具体例を参照して以下で説明される。
【０１３０】
依然として図３を参照すると、コントローラにおけるＳＳＤ論理アドレス管理部３２１は、ＳＳＤの残存論理容量またはＳＳＤの論理容量の変化をモニタリングし、または、問い合わせるように構成されてよい。具体的には、ＳＳＤ論理アドレス管理部３２１は、ＳＳＤにおけるブランク論理ブロックの数をモニタリングし、または、問い合わせることにより、ＳＳＤの論理容量の変化を把握してよい。コントローラは、複数の方法でＳＳＤにおけるブランク論理ブロックの数をモニタリングし、または、問い合わせてよい。以下に、いくつかの任意の解決策を提供する。実際には、以下の解決策のうちの１または複数が選択されてよい。
【０１３１】
解決策１：コントローラが、リアルタイムでＳＳＤにおけるブランク論理ブロックの数を検出する。具体的には、コントローラが、当該コントローラによって記録されるＳＳＤにおけるブランク論理ブロックの数が特定の閾値（例えば、１００）未満だと検出した場合に（ここでの数は、コントローラにより記録される、ＳＳＤにおける残存ブランク論理ブロックの数を指しており、その数は、ＳＳＤにおける実際の残存ブランク論理ブロックの数と等しくなくてもよいことが理解されるべきである）、コントローラは、ＳＳＤからブランク論理ブロックの数を能動的に問い合わせる。例えば、先の問い合わせにおいて、コントローラは、ＳＳＤが５００のブランク論理ブロックを有することを把握する。後続のデータ書き込み処理において、コントローラは、コントローラによって記録されるＳＳＤにおける残存ブランク論理ブロックの数を、更新し続けてよい。コントローラによりＳＳＤに記録される残存ブランク論理ブロックの数が１００未満であるとコントローラが発見する場合に、コントローラは、ＳＳＤから、このＳＳＤにおける残存ブランク論理ブロックの実際の数を、能動的に問い合わせてよい。
【０１３２】
解決策２：コントローラが、トリム／アンマップ領域に対応するデータ量のサイズに従って、ＳＳＤにおけるブランク論理ブロックの数を問い合わせるかどうかを決定する。例えば、コントローラは、トリムまたはアンマップされたデータ量を記録し、トリムまたはアンマップされたデータ量が１ＧＢに到達する毎に、コントローラは、ＳＳＤにおけるブランク論理ブロックの数を能動的に問い合わせる。
【０１３３】
解決策３：コントローラが、ＳＳＤに書き込まれるデータ量に従って、ＳＳＤにおけるブランク論理ブロックの数を問い合わせるかどうかを決定する。例えば、コントローラが１ＧＢのデータ量をＳＳＤに書き込む毎に、コントローラは、ＳＳＤにおけるブランク論理ブロックの数を能動的に問い合わせる。
【０１３４】
解決策４：ＳＳＤが、ブランク論理ブロックの数を能動的にレポートする。例えば、ＳＳＤが、ＳＳＤにおけるブランク論理ブロックの数を周期的にレポートしてよく、あるいは、ブランク論理ブロックの数の変化が閾値を超えた場合に、ＳＳＤが、コントローラへ現在のブランク論理ブロックの数をレポートする。
【０１３５】
以下では、一例として、ＳＳＤにおける圧縮処理の実装態様を、固定長圧縮及び可変長圧縮を用いて別々に詳細に説明する。
【０１３６】
固定長圧縮方式
【０１３７】
最初に、固定長圧縮システムにおける圧縮処理手順が、図７を参照して説明される。図７に示されるように、コントローラを有するシステムが、破線の上方に位置付けられ、１または複数のＳＳＤを有するディスクが、破線の下方に位置付けられる。図７では、説明のため一例として、４ＫＢの圧縮粒度が依然として用いられる。実際には、８ＫＢや１６ＫＢ等の他の圧縮粒度が、また、用いられてよく、圧縮粒度は、本発明の実施形態において具体的には限定されない。
【０１３８】
具体的には、コントローラは、まず、ホストから、ディスクに記憶される必要のあるデータを受信してよく、次に、そのデータに重複排除を実行してよい（即ち、重複データを削除する。具体的な重複排除方式については、従来技術を参照のこと）。次に、コントローラは、重複排除データを圧縮せずに、当該重複排除データをＳＳＤへ直接送信し、ＳＳＤが圧縮処理を実行する。ＳＳＤは、４ＫＢを単位として用いてデータを圧縮する。圧縮データのサイズは、データの圧縮比により変動する。ＳＳＤが固定長圧縮方式を用いるため、上方アライメントオペレーションが圧縮データに実行される必要があり、その結果、圧縮データの長さは、０．５ＫＢの整数倍となる。例えば、圧縮データのサイズが０．５ＫＢと１ＫＢの間である場合、上方アライメントの原理に従って、圧縮データは１ＫＢになるように充填される必要があり、１ＫＢの圧縮ブロックが取得される。
【０１３９】
次に、圧縮ブロックは、ＳＳＤの物理アドレスへ書き込まれる必要がある。ＳＳＤが、基本の読み出しまたは書き込み単位として、一般的に物理ページを用いることが理解されるべきである。物理ページのサイズは、ＳＳＤの種類に関連するが、本発明の実施形態において具体的には限定されない。本発明の実施形態において、４ＫＢの物理ページが、説明のための一例として用いられる。データが物理ページに書き込まれる前に、圧縮ブロックが、４ＫＢサイズへ丸め処理された圧縮ブロックを丸め処理すべく、４ＫＢを単位として用いることで丸め処理されて（または再グループ化されて）よい。このように、丸め処理された一群の圧縮ブロックが、一度に４ＫＢの物理ページに簡便に書き込まれてよい。図８は、圧縮ブロックの丸め処理のいくつかの方式を提供する。以下では、複数の圧縮ブロックを１つの物理ページへ丸め処理するいくつかの任意の実装態様を更に提供する。
【０１４０】
２つの圧縮ブロックが１つの物理ページへ丸められる：（０．５ＫＢ、３．５ＫＢ）、（１ＫＢ、３ＫＢ）、（１．５ＫＢ、２．５ＫＢ）、（２ＫＢ、２ＫＢ）。
【０１４１】
３つの圧縮ブロックが１つの物理ページへ丸められる：（１ＫＢ、１ＫＢ、２ＫＢ）、（０．５ＫＢ、１．５ＫＢ、２ＫＢ）（０．５ＫＢ、１ＫＢ、２．５ＫＢ）、（０．５ＫＢ、０．５ＫＢ、３ＫＢ）。
【０１４２】
４つの圧縮ブロックが１つの物理ページへ丸められる：（０．５ＫＢ、０．５ＫＢ、１．５ＫＢ、１．５ＫＢ）、（０．５ＫＢ、１ＫＢ、０．５ＫＢ、２ＫＢ）、（０．５ＫＢ、１．５ＫＢ、１ＫＢ、１ＫＢ）、（０．５ＫＢ、２．５ＫＢ、０．５ＫＢ、０．５ＫＢ）。
【０１４３】
コントローラから受信したデータに対して、ＳＳＤは、ある圧縮粒度でデータを整列及び圧縮する必要があるだけでなく、ＳＳＤにおけるデータの論理アドレスをそのデータに割り当てて、そのデータの論理アドレスと物理アドレスとの間のマッピング関係を記録する必要がある。
【０１４４】
具体的には、図９を参照すると、マッピング情報が、マッピングテーブルのエントリに記録されてよく、ＳＳＤは、データのアドレスを指定すべく、マッピング情報を用いることにより、論理アドレスを、当該データの物理アドレスへ直接変換してよい。マッピング情報は、物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有してよい。
【０１４５】
物理ページに関する情報とは、物理ページの数であってよいことに注意すべきである。物理ページは、グローバルに固有な数を有してよく、または、物理ブロックがグローバルに固有な数を有してもよいが、物理ページの数は、その物理ブロックにおいて固有である。
【０１４６】
マッピングテーブルのエントリに記録されるマッピング情報が、４ＫＢの物理ページに対して上述の３種類の情報を有する場合には、５１２ＧＢの媒体容量を有するＳＳＤは、１ピースのマッピング情報の要素を記録するために、ほぼ３４ビット（ｂｉｔ）を必要とする。具体的な解析は以下である。
【０１４７】
４ＫＢの物理ページに対し、５１２ＧＢは１２８Ｍ４ＫＢに対応するので、ほぼ２８ビットが、その４ＫＢの物理ページのアドレス指定に必要とされる。
【０１４８】
物理ページ上の圧縮ブロックの開始アドレスに対して、固定長圧縮方式での０．５ＫＢに従って、境界アライメントが圧縮ブロックの開始アドレスに実行されるので、物理ページ上の圧縮ブロックの開始アドレスに関して８つの可能性がある。即ち、開始アドレスは０、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、２．５ＫＢ、３ＫＢ及び３．５ＫＢに対応する。この場合、物理ページ上の圧縮ブロックの開始アドレスに関する全ての可能性は、３ビットを用いて示すことができる。
【０１４９】
圧縮ブロックの長さに対し、全ての圧縮ブロックは０．５ＫＢの整数倍であるので、圧縮ブロックの長さに関して８つの可能性、即ち、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、２．５ＫＢ、３ＫＢ、３．５ＫＢ及び４ＫＢ、がある。従って、圧縮ブロックの長さに関する全ての可能性は、３ビットを用いて示すことができる。
【０１５０】
上記の説明から、１つの圧縮ブロック（例えば、０．５ＫＢまたは１．５ＫＢの１つの圧縮ブロック）を配置するために、ほぼ３４ビットのマッピング情報が必要とされることが理解できる。１ピースのマッピング情報により必要とされるビット数は、ＳＳＤの容量、及び／又は、圧縮粒度に従って変動することに注意すべきである。このことは、本発明の実施形態において具体的には限定されない。
【０１５１】
可変長圧縮の実装態様
【０１５２】
可変長圧縮において、上方アライメントオペレーションが圧縮データに対して実行される必要がない。圧縮ブロックのサイズは同一に保たれてよく、かつ、上方アライメントされない。依然として４ＫＢが一例として用いられ、４ＫＢのデータブロックの圧縮データサイズが、２７７８Ｂ及び３６００Ｂであると仮定すると、圧縮ブロックの長さは、２７７８Ｂ及び３６００Ｂに保たれてよい。
【０１５３】
図１０を参照すると、物理ページの長さが１６ＫＢであると仮定すると、可変長圧縮によって取得される異なるサイズの圧縮ブロックが、次に完全な圧縮ブロックを配置することが不可能となるまで、物理ページ上に、順に、配置されてよい。使用することができない部分的な記憶空間が、物理ページの最後に存在してよい。部分的な記憶空間は、１つの完全な圧縮ブロックを含むには小さすぎる。使用することができない部分的な記憶空間はフラグメント（ｆｒａｇｍｅｎｔ）と称されてよく、フラグメントは、有効データを記憶できない。
【０１５４】
マッピングテーブルの基本粒度が４ＫＢであり、物理ぺージのサイズが１６ＫＢであると仮定した場合に、４ＫＢのデータブロックの論理アドレスと物理アドレスとの間のマッピング関係は、以下の３つの解決策のうちの１つのいずれかを用いることにより、ＳＳＤに記録されてよい。
【０１５５】
解決策１：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有する。物理ページのヘッダがメタデータを記憶し、メタデータが、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さを示す。圧縮ブロックが読み出されることになっている場合、マッピングテーブルに記憶されるマッピング情報に従って、対応する物理ページがまず見つけられ、次に、物理ページ上のデータが全体として読み出されてよい。そして、物理ページ上の圧縮ブロックの開始アドレス及び長さに対して、物理ページのヘッダ情報が検索される。具体的には、物理ページのヘッダ情報は、複数の圧縮ブロックのメタデータを記憶してよい。圧縮ブロックのメタデータの検索を助けるべく、４ＫＢのデータブロックのＬＢＡとメタデータとの間の対応が、物理ページのヘッダ情報の中に確立されてよい。この場合、ＳＳＤは、データブロックのＬＢＡに従って、圧縮ブロックに対応するメタデータを検索することができる。
【０１５６】
解決策２：解決策１と同様に、解決策２では、圧縮ブロックの物理ページに関する情報がマッピングテーブルに記憶され、圧縮ブロックのメタデータが物理ページ上に記憶される。マッピングテーブルが、圧縮ブロックの物理ページに関する情報を記憶するだけでなく、インデックス情報も記憶するという点で、違いがある。インデックス情報は、物理ページ上に記憶される一連の全ての圧縮ブロックにおける圧縮ブロックの位置を記述してよい。このように、物理ページのメタデータを検索する場合に、ＳＳＤは、解決策１で行うように複雑なＬＢＡを検索することによって圧縮ブロックのメタデータを位置付ける必要がなく、インデックス情報に従ってメタデータを位置づければよいので、これにより、メタデータのデータ量を低減し、物理ページの記憶空間を節約する。
【０１５７】
解決策３：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有する。この解決策では、メタデータは物理ページ上に記憶される必要がなく、その結果、物理ページの実装態様が簡易化される。加えて、マッピング情報に従ってメタデータを検索する処理が省略され、これにより、物理アドレスのアドレス指定の効率を改善する。
【０１５８】
以下、図１１を参照して上述の解決策１を詳細に説明する。図１１を参照すると、１つの物理ページが３つの領域へ分割される。上端領域は、物理ページのヘッダ領域であり、ヘッダ情報の記憶に用いられる。中央領域は、データ記憶領域であり、複数の圧縮ブロックを記憶する。下端領域は、フラグメント領域である。これらの領域は、以下で、別々に説明される。
【０１５９】
１．ヘッダ領域
【０１６０】
ヘッダ情報が、物理ページのヘッダ領域に記憶される。ヘッダ情報は、物理ページ上に記憶される圧縮ブロックのメタデータを有する。メタデータのフォーマットは、ＬＢＡ＋物理ページの開始アドレス＋圧縮ブロックの長さ、であってよい。確かに、インデックス情報がマッピングテーブルにすでに存在する場合には、メタデータのフォーマットは、インデックス情報＋物理ページの開始アドレス＋圧縮ブロックの長さ、であってよい。加えて、マッピング情報はまた、ＳＳＤのオーバープロビジョニング空間に記憶されてよく、その結果、物理ページの記憶空間を節約できる。
【０１６１】
２．データ記憶領域
【０１６２】
データ記憶領域は、圧縮ブロックを記憶するために用いられる。物理ページ上に、複数の圧縮ブロックが、コンパクトに一緒に記憶されてよい。
【０１６３】
３．フラグメント領域
【０１６４】
フラグメント領域は、未使用の記憶領域であり、１つの完全な圧縮ブロックを記憶するには短すぎ、従って、余りとして扱うしかない。
【０１６５】
上述では、固定長圧縮及び可変長圧縮の実装態様を説明した。図１２を参照して、以下、ＳＳＤにおいてデータ圧縮を実行する間の書き込み要求処理手順を詳細に説明する。
【０１６６】
図１２は、本発明の実施形態に係る書き込み要求を処理するフローチャートである。図１２に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１２において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１２における段階は、図１２に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１２のオペレーションの全てが実行されることになっている必要はない。
【０１６７】
１２０２．ホストが、書き込み要求をコントローラへ送信する。
【０１６８】
具体的には、書き込み要求は、以下の情報を有してよい：ＬＵＮ_ＩＤ＋ＬＢＡ＋ＬＥＮ＋ＤＡＴＡＤＡＴＡは、書き込み予定データを示す。ＬＵＮ_ＩＤは、論理ユニット番号（Ｌｏｇｉｃａｌ Ｕｎｉｔ  Ｎｕｍｂｅｒ、ＬＵＮ）の数を示す。ここで、ＬＢＡは、ＳＳＤの論理アドレスではなく、ＬＵＮ上のＤＡＴＡの論理アドレスを示す。ＬＵＮの論理アドレスとは、一般的には、ホストへ示されるディスクアレイのＬＢＡを指す。ＬＥＮは、データ長さを示し、ＤＡＴＡは、書き込み予定データである。システムで定義されるＬＢＡ及びＬＥＮは、一般的に、１セクタ当たりを基準としており、セクタのサイズは、一般的に、０．５ＫＢであることが理解されるべきである。ＬＥＮが１０と仮定すると、ＤＡＴＡの長さは、１０×０．５ＫＢ＝５ＫＢとなることが理解されてよい。確かに、各セクタは、他のサイズやフォーマットを更に有してもよい。このことは、本発明の実施形態において具体的には限定されない。ここでは、０．５ＫＢのセクタサイズが、説明のための一例として用いられる
【０１６９】
１２０４．コントローラは、書き込み予定データに境界アライメント処理を実行し、境界アライメント処理後に取得されたデータを、固定されたサイズに従い、パーティション化する。これは、任意選択の段階である。
【０１７０】
コントローラによるＤＡＴＡに対する境界アライメント処理は、後続のデータのパーティション化を容易にし、その結果、コントローラは、固定サイズに従ってデータをパーティション化する場合に、整数個のパーティション化されたデータブロックを取得することができる。
【０１７１】
コントローラは、複数の方法で、データをパーティション化してよい。以下で、２つの任意のパーティション化の方式を提供する。
【０１７２】
パーティション化方式１：コントローラは、パーティション化された各データブロックが、圧縮可能なユニットとなるように、ＳＳＤの圧縮粒度に従って、パーティション化を実行する。例えば、ＳＳＤの圧縮粒度が４ＫＢであり、書き込み予定データのＬＥＮが１０（つまり、５ＫＢ）だと仮定する。この場合、コントローラは、まず、５ＫＢのデータに対して境界アライメント処理を実行して８ＫＢのデータを取得し、次に、４ＫＢの粒度で８ＫＢのデータをパーティション化し、２つの４ＫＢのデータブロックを取得する。５ＫＢのデータに対するコントローラによる境界処理の実行の方式とは、例えば、コントローラがＳＳＤから３ＫＢのデータを読み出し、当該データと５ＫＢのデータとを丸め処理して、８ＫＢのデータを取得する、というものであってよい。
【０１７３】
パーティション化方式２：コントローラは、ＳＳＤによって一度に処理可能な書き込み予定データの最大単位に基づいて、パーティション化を実行する。例えば、ＳＳＤによって一度に処理可能な書き込み予定データの最大単位が１２８ＫＢであるならば、ここでは、パーティション化は１２８ＫＢに従って実行されてよい。このような処理方式は、コントローラのオペレーションを簡単にする。続いて、ＳＳＤは、圧縮粒度に従って、１２８ＫＢのデータをパーティション化し続ける。例えば、ＳＳＤのプロセッサは、１２８ＫＢのデータを、３２個の４ＫＢのデータブロックへパーティション化する。
【０１７４】
データがパーティション化された後、コントローラは、パーティション化されたデータブロックを１つの単位（ユニット）として用いることで、ＳＳＤへ書き込み要求を送信してもよいことに注意すべきである。この場合、パーティション化された各データブロックにおけるＬＵＮ_ＩＤ＋ＬＢＡ＋ＬＥＮ＋ＤＡＴＡ等のパラメータは、パーティション化の前の完全なデータにおけるＬＵＮ_ＩＤ＋ＬＢＡ＋ＬＥＮ＋ＤＡＴＡ等のパラメータに基づいて、決定されてよい。
【０１７５】
１２０６．コントローラは、パーティション化されたデータブロックを記憶するためのＳＳＤをディスクアレイから選択する。
【０１７６】
コントローラは、複数のポリシーに従ってＳＳＤを選択してよく、例えば、複数のＳＳＤの間のウェアレベリング、フォールトトレランス処理、及び冗長性関係等に基づいて適切なＳＳＤを選択してよい。ＳＳＤの選択の間、ＳＳＤに十分なブランク論理ブロックが存在することがまず保証される必要があることに注意すべきである。ディスクアレイの中のＳＳＤにおけるブランク論理ブロックの数は、ＳＳＤの論理容量が変化するにつれて、動的に変化する。コントローラは、ＳＳＤにおけるブランク論理ブロックの数を、上述のブランク論理ブロック問い合わせ解決策に従って、問い合わせてよい。
【０１７７】
１２０８．コントローラは、パーティション化された各データブロックに対応する書き込み要求をＳＳＤへ送信してよい。
【０１７８】
書き込み要求は、パーティション化されたデータブロックのＬＥＮ＋ＤＡＴＡ情報を保持してよい。ＬＥＮは、書き込み要求におけるデータの長さを示し、ＤＡＴＡは、書き込み要求におけるデータコンテンツ（またはデータそのものとして参照され、即ち、データブロック）を示す。ここで、書き込まれる必要のある、書き込み要求におけるデータのＳＳＤでの位置が特定さなくてもよいことが理解されるべきである。即ち、ＳＳＤにおけるデータの実際の記憶場所は、ＳＳＤ自身により決定されてよい。
【０１７９】
１２１０．ＳＳＤが、書き込み要求におけるデータにパーティション化処理を実行する。
【０１８０】
段階１２１０は、任意選択の段階であることが理解されるべきである。段階１２０４において、圧縮粒度に従って、コントローラがデータをパーティション化する場合、ＳＳＤにより受信された書き込み要求におけるデータのサイズは、基本圧縮単位であり、その結果、パーティション化が再度実行される必要はなく、後続のオペレーションは直接実行されてよい。段階１２０４において、コントローラが、Ｎ倍の圧縮粒度に従って、データをパーティション化する場合、ＳＳＤにより受信された書き込み要求におけるデータのサイズは、圧縮粒度のＮ倍となり、そのデータは、段階１２１０において、圧縮粒度に従って、Ｎ個のデータブロックへパーティション化されてよい。特殊な場合として、ＳＳＤにより受信されるデータブロックのサイズが圧縮単位の整数倍ではない場合、ＳＳＤは、まず、データブロックに充填を行って圧縮単位の整数倍とし、次に、その圧縮単位のサイズに従って、パーティション化を実行してよい。
【０１８１】
１２１２．ＳＳＤが、ブランク論理ブロックをパーティション化されたデータブロックへ割り当てる。
【０１８２】
ＳＳＤは、ＳＳＤにおける論理ブロックのステータスを問い合わせ、データブロックを記憶するためのブランク論理ブロックを選択してよい。ブランク論理ブロックは、複数の方法で選択されてよい。例えば、ブランク論理ブロックはＳＳＤからランダムに選択されてよく、あるいは、前方に論理アドレスを有するブランク論理ブロックが、マッピングテーブルにおける一連のブランク論理ブロックに従って、優先的に選択されてよい。このことは、本発明の実施形態において具体的には限定されない。
【０１８３】
論理ブロックのステータスは、ビットマップにより示されてよい。ビットマップは、ＳＳＤのメモリに記憶されてよい。データブロックがブランク論理ブロックに記憶された後、ブランク論理ブロックの状態が変化してよく、その結果、ブランク論理ブロックは、有効論理ブロックへ変化する。
【０１８４】
１２１４．ＳＳＤが、パーティション化されたデータブロックを圧縮し、圧縮ブロックをＳＳＤへ書き込み、マッピングテーブルにマッピング情報を記録する。
【０１８５】
段階１２１４を実行する方式は、固定長圧縮をサポートするＳＳＤ及び可変長圧縮をサポートするＳＳＤにより異なってよく、以下、図１３及び図１４を参照して、別々に説明される。
【０１８６】
１２１６．ＳＳＤが、論理容量の変化に従って、論理ブロックのステータスを調整する。
【０１８７】
具体的には、論理容量が、１つの論理ブロックのサイズにより増加する毎に、１つの分離論理ブロックがブランク論理ブロックへ変換される。分離論理ブロックは、ＳＳＤにおける全ての分離ブロックからランダムに選択された分離論理ブロックであってよく、あるいは、分離論理ブロックは、ＳＳＤにおける全ての分離ブロックの前方に論理アドレスを有する分離論理ブロックであってよい。ＳＳＤに分離論理ブロックが存在しない場合には、ブランク論理ブロックに対応するエントリが、マッピングテーブルの最後に加えられてよい。これは、ＳＳＤにブランク論理ブロックを追加することに等しい。
【０１８８】
論理ブロックのステータスの調整が完了した後、ＳＳＤの残存論理容量を示すべく、ＳＳＤにおける現在のブランク論理ブロックの数が、コントローラへ送信されてよい。例えば、現在、ＳＳＤが１０００のブランク論理ブロックを有すると仮定する（各ブランク論理ブロックは４ＫＢの実際の物理空間に対応し、合計で１０００×４ＫＢの実際に利用可能な論理空間がある）。ＳＳＤに含まれるブランク論理ブロックの数をコントローラが問い合わせると、ＳＳＤは、問い合わせ結果をコントローラへ返す。現在は１０００個のブランク論理ブロックがある。従って、コントローラは、ＳＳＤへ１０００個の４ＫＢのデータブロックを書き込んでよい。コントローラによりＳＳＤへ書き込まれた１０００個のデータブロックのうちの５００個が、それぞれ２ＫＢへ圧縮可能であり、かつ、他の５００個のデータブロックが、それぞれ１ＫＢへと圧縮可能であると仮定する。元々は、これらのデータブロックを記憶するためには、１０００個のブランク論理ブロックが消費される必要がある。現在は、圧縮のおかげで、（５００×２＋５００×１）／４＝３７５個のブランク論理ブロックのみが消費される。即ち、３７５個のブランク論理ブロックのみが、１０００個の４ＫＢのデータブロックを記憶するために消費される。そして、コントローラが、利用可能なブランク論理ブロックの数を再度問い合わせた場合に、ＳＳＤは、問い合わせ結果を返す。現在、１０００−３７５＝６２５個のブランク論理ブロックが利用可能である。
【０１８９】
１２１８．ＳＳＤが、書き込み要求に対する応答メッセージをコントローラへ送信する。
【０１９０】
書き込み要求におけるデータブロックがＳＳＤに書き込まれた後に、ＳＳＤが、応答メッセージをコントローラへ送信する。ＳＳＤにおけるデータブロックの論理アドレス、例えばＬＢＡは、応答メッセージで保持されてよい。応答メッセージの具体的な形式は、段階１２０４で説明されたパーティション化の方式に関連する。
【０１９１】
段階１２０４において、コントローラが、圧縮粒度に従って、データをパーティション化する場合に、ＳＳＤは、そのデータを更にパーティション化する必要はなく、ＳＳＤは、論理アドレスを書き込み要求におけるデータへ直接的に割り当てて、かつ、そのデータに対して圧縮及び記憶オペレーションを実行してよい。上述の書き込み要求に対する応答メッセージは、標準的な書き込み完了コマンドであってよく、データブロックに対応する１つのＬＢＡのみを保持する必要がある。
【０１９２】
段階１２０４において、コントローラが、より大きな圧縮粒度に従ってデータをパーティション化する場合には、段階１２１８における応答メッセージは、複数のパーティション化されたデータブロックに対応する複数のＬＢＡを保持する必要がある。この場合、新たな書き込完了コマンドが定義されてよい。新たな書き込完了コマンドのデータ量は、標準的な書き込み完了コマンドのデータ量よりも大きい必要がある。例えば、標準的な書き込み完了コマンドが１６バイトである場合に、新たに定義された書き込み完了コマンドは、より多くのＬＢＡを含むべく、３２／６４／１２８バイトであってよい。複数のＬＢＡが、書き込み完了コマンドと共に戻される必要がある場合には、書き込み完了コマンドにおける一連の複数のＬＢＡは、複数のＬＢＡに対応する一連のデータブロックと一致し続けてよいことに注意すべきである。このように、複数のＬＢＡにそれぞれ対応するデータのＬＢＡを示すために、さらなるバイトを消費する必要がない。
【０１９３】
１２２０．コントローラが、ディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を確立する。
【０１９４】
コントローラは、段階１２０２でホストによって送信された書き込み要求を受信する。書き込み要求は、ディスクアレイのＬＵＮ_ＩＤ及びＬＢＡを保持する。段階１２１８でコントローラに受信される書き込み完了コマンドは、ＳＳＤのＬＢＡを有する。コントローラは、ディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を確立する。
【０１９５】
例えば、ストレージコントローラは、段階１２０２で受信した書き込み要求に従って、開始位置ＬＢＡ＝０から、ＬＵＮ_ＩＤが０のＬＵＮデバイスに、２つの４ＫＢのデータブロックを続けて書き込む。システムで定義されるＬＢＡ及びＬＥＮは、概して、１セクタ当たりを基準とし、セクタサイズは、一般的に０．５ＫＢであるので、４ＫＢのデータブロックのＬＥＮは８である。このようにディスクアレイの第１のデータブロックの論理アドレスは、（ＬＵＮ_ＩＤ＝０、ＬＢＡ＝０、ＬＥＮ＝８）により示されてよく、ディスクアレイにおける第２のデータブロックの論理アドレスは、（ＬＵＮ_ＩＤ＝０、ＬＢＡ＝８、ＬＥＮ＝８）により示されてよい。第１のデータブロックが、ＩＤが２のＳＳＤにおける第２の論理ブロックに書き込まれ、第２のデータブロックが、ＩＤが３のＳＳＤにおける第３の論理ブロックに書き込まれると仮定すると、ＳＳＤにおける第１のデータブロックの論理アドレスは、（ＳＳＤ_ＩＤ＝２、ＬＢＡ＝８、ＬＥＮ＝８）により示され、ＳＳＤにおける第２のデータブロックの論理アドレスは、（ＳＳＤ_ＩＤ＝３、ＬＢＡ＝１６、ＬＥＮ＝８）により示されてよい。この場合、コントローラは、以下のテーブルに示されるマッピング関係を確立してよい。
【表１】
2019519047.tif 000003
【０１９６】
コントローラは、後続のデータ読み出しを容易にすべく、ディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を記録してよい。具体的には、これまでにＳＳＤへ書き込まれたデータをホストが読み出す必要がある場合に、コントローラは、ホストの読み出し要求を、記録されたマッピング関係テーブルに基づいてＳＳＤに対する読み出し要求へ変換し、対応するデータをホストへ返す。例えば、ホストは、ＬＵＮ_ＩＤが０である、即ち、先述の表の第２行の、第２のピースの４ＫＢデータを読み出す必要がある。先述の表に示されるマッピング関係に基づいて、コントローラは、ＩＤが３であるＳＳＤに記憶されるデータのＬＢＡ１６の位置を見つける。次に、コントローラは、ＩＤが３であるＳＳＤへ読み出し要求を送信し、ＬＢＡ１６の位置にあるデータを読み出し、その読み出したデータをホストへ返してよい。
【０１９７】
１２２２．コントローラが、書き込み要求コマンド実行成功メッセージをホストへ送信する。
【０１９８】
図１３は、固定長圧縮における段階１２１４の実装態様の概略フローチャートである。図１３に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１３において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１３における段階は、図１３に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１３のオペレーションの全てが実行されることになっている必要はない。
【０１９９】
１３０２．データブロックを圧縮し、上方アライメントオペレーションを実行する。
【０２００】
例えば、データブロックの圧縮粒度は４ＫＢである。固定長圧縮では、０．５ＫＢの整数倍に圧縮されるべきデータが必要である。データブロックが圧縮された後、圧縮データが１．５ＫＢから２ＫＢの間である場合には、２ＫＢの圧縮ブロックを取得すべく、上方アライメントオペレーションが実行される。
【０２０１】
１３０４．複数の圧縮ブロックを１つの物理ページへ結合する。
【０２０２】
圧縮ブロックを丸め処理する方式は、上記で詳細に説明されている。詳細は図８を参照し、ここでは再度説明しない。固定長圧縮により、１つの物理ページに複数の圧縮ブロックがフィリングされてよく、フラグメントは生成されない。
【０２０３】
１３０６．丸め処理された圧縮ブロックをＳＳＤの媒体へ書き込む。
【０２０４】
例えば、複数の圧縮ブロックが、１つの完全な物理ページへ丸め処理された後に、複数の圧縮ブロックが、ＳＳＤの媒体へ書き込まれる。書き込み成功の後、マッピングテーブルにおける圧縮ブロックのマッピング情報が更新され、論理アドレスに対応する物理アドレスがマッピングテーブルに記録される。本発明の実施形態がこれに限定されるものではなく、全ての処理される圧縮ブロックが、また、一度に、ＳＳＤの媒体に書き込まれてよいことに注意すべきである。
【０２０５】
１３０８．論理容量の変化を計算する。
【０２０６】
例えば、論理容量の変化は１つのデータブロックが圧縮される毎に計算されてよく、あるいは、論理容量の変化は全てのデータが圧縮された後に計算されてもよい。本発明の実施形態は、これに具体的に限定されるものではない。論理容量の変化の計算の特定の態様は、上記で詳細に説明されており、ここでは再び説明しない。
【０２０７】
図１４は、可変長圧縮における段階１２１４の実装態様の概略フローチャートである。図１４に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１４において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１４における段階は、図１４に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１４のオペレーションの全てが実行される必要はない。
【０２０８】
１４０２．データブロックを圧縮して圧縮ブロックを取得する。
【０２０９】
可変長圧縮のおかげで、ここではデータに対して上方アライメントオペレーションを実行する必要がなく、圧縮ブロックのサイズは同一に保持される。
【０２１０】
１４０４．複数の圧縮ブロックを１つの物理ページへ結合する。
【０２１１】
例えば、可変長の圧縮ブロックは、１つの物理ページへ、全て丸め処理されてよい。１つの完全な圧縮ブロックを更に含むことができない最後の残存領域は、フラグメントとして役目を果たしてよく、有効データを記憶しない。
【０２１２】
１４０６．丸め処理された圧縮ブロックを、解決策１の方式で、ＳＳＤの媒体へ書き込む。
【０２１３】
解決策１：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有する。物理ページのヘッダがメタデータを記憶し、メタデータが、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さを示す。圧縮ブロックが読み出されることになっている場合、マッピングテーブルに記憶されるマッピング情報に従って、対応する物理ページがまず確認され、次に、物理ページ上のデータが、全体として読み出されてよい。そして、物理ページ上の圧縮ブロックの開始アドレス及び長さを求めて、物理ページのヘッダ情報が検索される。具体的には、物理ページのヘッダ情報は、複数の圧縮ブロックのメタデータを記憶してよい。圧縮ブロックのメタデータの検索を助けるべく、４ＫＢのデータブロックのＬＢＡとメタデータとの間の対応が、物理ページのヘッダ情報の中で確立されてよい。この場合、ＳＳＤは、データブロックのＬＢＡに従って、圧縮ブロックに対応するメタデータを検索することができる。
【０２１４】
１４０８．丸め処理された圧縮ブロックを、解決策２の方式で、ＳＳＤの媒体へ書き込む。
【０２１５】
解決策２：解決策１と同様に、解決策２では、圧縮ブロックの物理ページに関する情報がマッピングテーブルに記憶され、圧縮ブロックのメタデータが物理ページ上に記憶される。    マッピングテーブルが、圧縮ブロックの物理ページに関する情報を記憶するだけでなく、インデックス情報も記憶するという点で違いがあり、ここで、インデックス情報は、物理ページ上に記憶される一連の全ての圧縮ブロックにおける圧縮ブロックの位置を記述してよい。このように、物理ページのメタデータを検索する場合に、ＳＳＤは、解決策１で行うように複雑なＬＢＡを検索することによって圧縮ブロックのメタデータを位置付ける必要がなく、インデックス情報に従ってメタデータを位置づける必要があるので、これにより、メタデータのデータ量を低減し、物理ページの記憶空間を節約する。
【０２１６】
１４１０．丸め処理された圧縮ブロックを、解決策３の方式で、ＳＳＤの媒体へ書き込む。
【０２１７】
解決策３：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有する。この解決策では、メタデータは、物理ページ上に記憶される必要がなく、その結果、物理ページの実装態様が簡易化される。加えて、マッピング情報に従ってメタデータを検索する処理が省略され、これにより、物理アドレスのアドレス指定の効率を改善する。
【０２１８】
実際には、段階１４０６から段階１４１０のうちの１つの段階のみが実行される必要があることが理解されるべきである。
【０２１９】
１４１２．論理容量の変化を計算する。
【０２２０】
例えば、論理容量の変化が、１つのデータブロックが圧縮される毎に計算されてよく、あるいは、論理容量の変化は全てのデータが圧縮された後に計算されてもよい。本発明の実施形態がこれに具体的に限定されるものではない。論理容量の変化の計算の特定の態様は、上記で詳細に説明されており、ここでは再び説明しない。
【０２２１】
上述では、図５を参照して３つの状態の間の論理ブロックの遷移を詳細に説明した。ここで、分離論理ブロックは、トリム／アンマップコマンドをトリガすることで生成される。以下、図１５を参照して、トリム／アンマップに関連する処理手順を詳細に説明する。
【０２２２】
図１５は、本発明の実施形態に係るトリム／アンマップ手順の一例の図である。図１５に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１５において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１５における段階は、図１５に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１５のオペレーションの全てが実行されることになっている必要はない。
【０２２３】
理解し易くするために、まず、トリム／アンマップオペレーションの処理が、簡潔に説明される。
【０２２４】
一般的に、ホストが、ディスクからあるデータを削除する必要がある場合、コントローラは、トリム／アンマップコマンドをＳＳＤへ送信し、まず、そのデータを無効データとしてマークする。ＳＳＤの機能により、無効データにより一時的に占有された物理ブロックは、新しいデータが書き込まれることができず（即ち、上書きできない）、その無効データが位置付けられた物理ブロックが、ガベージコレクションメカニズムを用いて消去された後でのみ、新しいデータを記憶し続けることができる。
【０２２５】
コントローラが、論理アドレス範囲をトリムまたはアンマップする場合に、論理アドレス範囲に対応する論理ブロックは、有効論理ブロックから分離論理ブロックへ変化してよい。ＳＳＤのトリム／アンマップオペレーションを容易にすべく、トリム／アンマップコマンドにおける論理アドレス範囲は、論理ブロックの倍数に従って選択されてよい。
【０２２６】
トリム／アンマップは、ＳＳＤの論理容量の減少量及びＳＳＤの利用可能な論理容量の増加量を伴う。具体的には、トリム／アンマップコマンドが指示される論理アドレス範囲は、無効とマークされてよく、この場合、論理アドレス範囲に対応する容量は、ＳＳＤの論理容量から除去される必要がある。加えて、論理アドレス範囲に対応する物理空間は、直ちには利用することができない。なぜならば、トリム／アンマップオペレーションは、物理空間におけるデータを無効としてマークするだけであり、その物理空間は、ガベージコレクションメカニズムを用いてリリースされる必要があるからである。しかしながら、オーバープロビジョニング空間が存在するので、物理空間に対応する論理容量の増加が、直ちに反映されることが可能である。詳細は、図１５の段階を参照して、以下で説明される。
【０２２７】
１５０２．コントローラが、トリム／アンマップコマンドをＳＳＤへ送信する。
【０２２８】
概して、コントローラは、ホストが送信するトリム／アンマップコマンドをまず受信する。ここで、コマンドは、データセグメントを無効データとしてマークするように命令するために用いられる。コントローラは、ＳＳＤにおけるデータセグメントの論理アドレス範囲を見つけ、次に、トリム／アンマップコマンドをＳＳＤへ送信し、ＳＳＤに対し、論理アドレス範囲にあるデータを無効データとしてマークするか、または、当該アドレス範囲におけるデータの論理アドレスと物理アドレスとの間のマッピング関係をキャンセルするように命令する。コントローラがＳＳＤへ送信するトリム／アンマップコマンドは、トリムまたはアンマップされるべきデータの論理アドレス、例えば、ＳＳＤにおいてトリムまたはアンマップされるべきデータのＬＢＡ＋ＬＥＮを保持してよい。
【０２２９】
１５０４．ＳＳＤが、特定の論理アドレス範囲におけるデータにトリム／アンマップオペレーションを実行する。
【０２３０】
具体的には、ＳＳＤが、論理アドレス範囲における論理ブロックを選択し、次に、マッピングテーブルに在りかつその論理ブロックに対応するエントリからマッピング情報を取り出し、その物理ブロックにおける論理ブロックの物理アドレスを見つけて、そして、その物理アドレスにおけるデータを無効としてマークしてよい。
【０２３１】
物理ブロックにおいて、２つの統計的な値が維持されてよい。ここで、１つの値は、その物理ブロックに記憶されるデータブロックの合計数を示してよく、他の値は、その物理ブロックに記憶される有効データブロックの数を示してよい。ＳＳＤは、物理ブロックにおける有効データブロックの数または有効データブロックのパーセンテージに従って、ガベージコレクションを実行するか否かを決定してよい。データが物理ブロックに書き込まれると、物理ブロックに対応する有効データブロックの数が増加する。物理ブロックにおける１つの有効データブロックが、トリムまたはアンマップされる毎に、その物理ブロックにおける有効データブロックの数は１だけ減少する。トリム／アンマップオペレーションは、上述の方式で、論理アドレス範囲における全ての論理ブロックが処理されるまで、周期的に実行される。
【０２３２】
１５０６．ＳＳＤが、トリム／アンマップコマンドによりもたらされる論理容量の減少量を計算する。
【０２３３】
トリム／アンマップコマンドに対応するアドレス範囲における全論理ブロックのマッピング関係がキャンセルされた後に、ＳＳＤの論理容量が、計算され、調整されてよい。特定の計算方式では、以下の式を参照する。（論理容量の減少量）＝（トリム／アンマップオペレーション範囲における論理アドレスの論理容量）
【０２３４】
１５０８．ＳＳＤが、トリム／アンマップコマンドによりもたらされる利用可能な論理容量の増加量を計算する。
【０２３５】
具体的には、無効データが、ＳＳＤの８０ＫＢの物理空間を占有していると仮定する。８０ＫＢの物理空間は、ガベージコレクションの後でのみリリースすることができるが、８０ＫＢのオーバープロビジョニング空間が、まず、ＳＳＤのオーバープロビジョニング空間から借りられ、次に、無効データで占有された８０ＫＢの物理空間がガベージコレクションメカニズムを用いてリリースされた後、８０ＫＢのオーバープロビジョニング空間におけるデータが、物理容量に対応する記憶空間へ移動される。
【０２３６】
このメカニズムを用いることにより、ひとたびトリム／アンマップオペレーションが無効データを生成しても、その無効データにより占有された物理空間を「リリース」すべく、オーバープロビジョニング空間が借りられてよい。この場合、ＳＳＤの利用可能な論理容量は、これに応じて８０ＫＢ増加する。論理ブロックのサイズが８ＫＢである場合、１０個の分離論理ブロックがブランク論理ブロックに変換されてよい。これは、１０個の利用可能なブランク論理ブロックの追加に等しい。リリースされたブランク論理ブロックは、新たな書き込み予定データを記憶するために用いられることができる。
【０２３７】
例えば、ＳＳＤにより受信されるトリム／アンマップコマンドにより示される論理アドレス範囲が１００Ｋであると仮定すると、圧縮されたストレージのおかげで、その１００Ｋの論理アドレス範囲におけるデータにより実際に占有される物理空間は、８０Ｋとなる。この場合、８０Ｋのオーバープロビジョニング空間が、オーバープロビジョニング空間から借りられてよい。８０Ｋのオーバープロビジョニング空間は、新しいデータを記憶するために用いられることができる。本例では、トリム／アンマップコマンドによりもたらされる、ＳＳＤの論理容量の減少量は１００Ｋである。オーバープロビジョニング空間を用いることにより、ＳＳＤの利用可能な論理容量の増加量は８０Ｋである。
【０２３８】
上述では、図１０を参照して書き込み要求処理手順を詳細に説明した。読み出し要求（または、読み出しＩＯと称される）処理手順は、書き込み要求処理手順の逆手順である。以下、図１６を参照して、本発明の実施形態に係る読み出し要求処理手順を詳細に説明する。
【０２３９】
図１６は、本発明の実施形態に係る読み出し要求を処理する概略フローチャートである。図１６に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１６において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１６における段階は、図１６に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１６のオペレーションの全てが実行されることになっている必要はない。
【０２４０】
１６０２．ホストが読み出し要求をコントローラへ送信する。
【０２４１】
ホストが送信する読み出し要求は、ＬＵＮ＿ＩＤ、ディスクアレイにおいて読み出すべきデータのＬＢＡ、及び読み出すべきデータの長さを有してよい。
【０２４２】
１６０４．コントローラが、読み出し要求をＳＳＤへ送信する。
【０２４３】
具体的には、コントローラは、段階１６０２で受信されるＬＵＮ＿ＩＤ、ディスクアレイにおいて読み出すべきデータのＬＢＡ、及び、読み出すべきデータの長さに従って、コントローラ自らにより整備されるマッピングテーブルを問い合わせて（マッピングテーブルは、ホストへ示されるディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を示すために用いられてよい）、読み出すべきデータが位置付けられるＳＳＤ、並びにＳＳＤにおける読み出すべきデータのＬＢＡ及び長さを決定してよい。
【０２４４】
１６０６．ＳＳＤが、マッピングテーブルに基づいて、ＳＳＤの媒体から圧縮データを読み出す。
【０２４５】
ＳＳＤが、固定長圧縮方式を用い、マッピングテーブルが、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始アドレス、及び圧縮データの長さ、に関する情報を記憶すると仮定した場合に、ＳＳＤは、マッピングテーブルに記憶される情報に従って、圧縮データを直接的に位置付けてよい。
【０２４６】
ＳＳＤが可変長圧縮方式を用い、マッピングテーブルが、圧縮データを記憶する物理ページに関する情報のみを記憶し、物理ページ上の圧縮データの開始アドレス及び長さが、当該物理ページのヘッダに位置付けられると仮定した場合に、ＳＳＤは、まず、物理ページに関する情報に従って物理ページを見つけ、物理ページのヘッダ情報からその物理ページ上の圧縮データの開始アドレス及び長さを見つけ、次に、圧縮データの開始アドレス及び長さに従って、その圧縮データをその物理ページ上に位置付けてよい。
【０２４７】
１６０８．ＳＳＤが、圧縮データに圧縮解除オペレーションを実行し、読み出すべきデータを取得する。
【０２４８】
ＳＳＤは、内部の圧縮解除部を用いて圧縮データを圧縮解除し、読み出すべきデータを復元してよい。
【０２４９】
１６１０．ＳＳＤが、読み出すべきデータをコントローラへ返す。
【０２５０】
１６１２．コントローラは、読み出すべきデータをホストへ返してもよい。
【０２５１】
上述では、図１から図１６を参照して、本発明の実施形態に係るデータ処理方法を詳細に説明した。以下、図１７及び図１８を参照して本発明の実施形態に係るＳＳＤを詳細に説明する。図１７または図１８におけるＳＳＤは、図１から図１６におけるＳＳＤにより実行される各段階を実行可能であることが理解されるべきである。繰り返しを回避すべく、詳細をここで再度説明しない。
【０２５２】
以下、本発明の装置の実施形態及びシステムの実施形態を説明する。装置の実施形態及びシステムの実施形態は上述の方法を実行すべく用いられることが可能であるため、詳細を説明しない部分については、上記方法の実施形態を参照されたい。
【０２５３】
図１７は、本発明の実施形態に係る記憶装置の概略構造図である。記憶装置１７００の機能またはロジックは、ソフトウェアのみを用いて実装されてよく、または、ハードウェアのみを用いて実装されてもよく、または、ソフトウェア及びハードウェアの組み合わせを用いて実装されてもよいことが理解されるべきである。例えば、記憶装置１７００は、ソフトウェア及びハードウェアの組み合わせを用いて実装されてよい。この場合、以下の説明における受信モジュールは受信回路を用いて実装されてよく、以下の説明における圧縮モジュールはコンピュータコードを用いて実装されてよい。他の例では、記憶装置１７００は、ハードウェアのみを用いて実装されてよく、以下の説明における各モジュールの機能またはロジックは、ロジック回路を用いて実装されてよい。他の例では、記憶装置１７００は、ハードウェアのみを用いて実装されてよく、以下の説明における各モジュールは、コンピュータコードに対応する機能モジュールであってよい。
【０２５４】
記憶装置１７００が、書き込み予定データを保持する書き込み要求をコントローラから受信するように構成される第１受信モジュール１７１０と、圧縮データを取得すべく、書き込み予定データを圧縮するように構成された圧縮モジュール１７２０と、圧縮データを記憶するように構成される第１記憶モジュール１７３０と、第１フィードバック情報をコントローラへ送信するように構成される第１送信モジュール１７４０とを有し、第１フィードバック情報は、圧縮データが記憶された後の記憶装置１７００の残存容量を示す。
【０２５５】
オプションで、ある実施形態において、記憶装置１７００は、第２フィードバック情報をコントローラへ送信するように構成される第２送信モジュールを更に有し、ここで第２フィードバック情報が、記憶装置１７００の論理容量を示し、記憶装置１７００の論理容量は、記憶装置１７００に記憶されているデータの非圧縮データ量及び記憶装置１７００の利用可能な物理空間の容量の和である。
【０２５６】
オプションで、ある実施形態において、記憶装置１７００が、書き込み予定データへブランク論理ブロックを割り当てるように構成される割り当てモジュールであって、各論理ブロックは記憶装置１７００の論理容量のセグメントに対応する、割り当てモジュールと、割り当てられたブランク論理ブロックを有効論理ブロックへ変換するように構成される第１変換モジュールであって、有効論理ブロックが、その論理アドレスが有効データで占有される論理ブロックである、第１変換モジュールと、記憶装置１７００における残存ブランク論理ブロックの数を問い合わせるように構成される第１問い合わせモジュールと、を更に有し、第１送信モジュール１７４０は、第１フィードバック情報をコントローラへ送信するように具体的に構成され、第１フィードバック情報が、残存ブランク論理ブロックの数、及び／又は、残存容量を有し、残存容量は、残存ブランク論理ブロックの数に基づいて決定される。
【０２５７】
オプションで、ある実施形態において、圧縮モジュール１７２０は、割り当てモジュールがブランク論理ブロックを書き込み予定データへ割り当てた後に、圧縮データを取得すべく書き込み予定データを圧縮するように具体的に構成され、記憶装置１７００が、記憶装置１７００で追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って決定するように構成される第１決定モジュールを更に有する。
【０２５８】
オプションで、ある実施形態において、記憶装置１７００が、新しいブランク論理ブロックに対応するエントリを、記憶装置１７００で追加する必要のあるブランク論理ブロックの数に従って、マッピングテーブルへ追加するように構成される追加モジュールを更に有する。
【０２５９】
オプションで、ある実施形態において、記憶装置１７００が、記憶装置１７００における分離論理ブロックを、記憶装置１７００で追加する必要のあるブランク論理ブロックの数に従って、ブランク論理ブロックへ更新するように構成される更新モジュールを更に有し、分離論理ブロックは、その論理アドレスが記憶装置１７００で使用不可能な論理ブロックである。
【０２６０】
オプションで、ある実施形態において、記憶装置１７００で追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、ここでＤは書き込み予定データの長さと圧縮データとの長さの間の差を示し、Ｌは記憶装置１７００における論理ブロックの長さを示す。
【０２６１】
オプションで、ある実施形態において、記憶装置１７００が、コントローラからコマンドを受信するように構成される第２受信モジュールと、論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第２変換モジュールとを更に有する。ここで、コマンドが論理アドレス範囲を有し、コマンドが論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられ、分離論理ブロックは、その論理アドレスが使用不可能な論理ブロックである。
【０２６２】
オプションで、ある実施形態において、記憶装置１７００が、論理アドレス範囲におけるデータによって占有される物理空間のサイズを決定するように構成される第２決定モジュールと、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールと、部分的なオーバープロビジョニング空間を、記憶装置１７００の利用可能な物理空間として用いるように構成される第３決定モジュールとを更に有する。ここで、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい。
【０２６３】
オプションで、ある実施形態において、記憶装置１７００が、第１フィードバック情報がコントローラへ送信される前に、記憶装置１７００の利用可能な物理空間を問い合わせるように構成される第２問い合わせモジュールと、利用可能な物理空間の容量を残存容量と決定するように構成される第４決定モジュールと、を更に有する。
【０２６４】
オプションで、ある実施形態において、記憶装置１７００が、書き込み要求がコントローラから受信された後に、論理アドレスを書き込み予定データへ割り当てるように構成される第５決定モジュールと、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように構成される第１記録モジュールとを更に有する。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を有する。
【０２６５】
オプションで、ある実施形態において、記憶装置１７００が、書き込み要求がコントローラから受信される後に、論理アドレスを書き込み予定データへ割り当てるように構成される第６決定モジュールと、マッピングテーブルに在り、論理アドレスに対応するエントリにマッピング情報を記録するように構成される第２記録モジュールであって、マッピング情報が、圧縮データを記憶する物理ページに関する情報を有する、第２記録モジュールと、物理ページ上に圧縮データのメタデータを記憶するように構成される第２記憶モジュールを更に有する。ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
【０２６６】
オプションで、ある実施形態において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、データ長に基づいて割り当てられる。
【０２６７】
オプションで、ある実施形態において、記憶装置１７００が、書き込み要求がコントローラから受信される後に、記憶装置１７００における書き込み予定データの論理アドレスをコントローラへ送信するように構成される第３送信モジュールを更に有する。
【０２６８】
オプションで、ある実施形態において、記憶装置１７００が、コントローラから読み出し要求を受信するように構成され、読み出し要求が、読み出すべきデータの論理アドレスを有する、第３受信モジュールと、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、ターゲットデータを圧縮解除して読み出すべきデータを取得するように構成される圧縮解除モジュールと、読み出すべきデータをコントローラへ送信するように構成される第４送信モジュールと、を更に有する。
【０２６９】
記憶装置１７００が、例えばＳＳＤであってよいことに注意すべきである。記憶装置１７００は、通信インタフェース、記憶媒体及びプロセッサを有するＳＳＤにより実装されてよい。プロセッサは、メモリ内のコンピュータ命令を実行することにより、方法の実施形態で説明されたオペレーションを実行してよい。
【０２７０】
プロセッサは、内部のハードウェアの論理的接続を用いることで、方法の実施形態で説明されたオペレーションを更に実行してよく、例えば、特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、短縮してＡＳＩＣ）を用いることで、またはプログラマブル論理デバイス（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、短縮してＰＬＤ）を用いることで、オペレーションを実装してよい。ＰＬＤは、コンプレックスプログラマブルロジックデバイス（英語でｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、短縮してＣＰＬＤ）、ＦＰＧＡ、ジェネリックアレイロジック（英語で、ｇｅｎｅｒｉｃ  ａｒｒａｙ  ｌｏｇｉｃ、短縮してＧＡＬ）またはこの組み合わせであってよい。本発明の実施形態において、例えば、記憶装置はＳＳＤの中にあってよい。ＳＳＤは、記憶媒体及びプロセッサを有する。記憶媒体は、記憶空間を提供するように構成される。ＳＳＤのプロセッサが、書き込み予定データを保持する書き込み要求をコントローラから受信するように構成される第１受信回路と、書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮回路と、圧縮データを記憶するように構成される第１記憶回路と、第１フィードバック情報をコントローラへ送信するように構成される第１送信回路とを有する。ここで、第１フィードバック情報が、圧縮データが記憶された後のＳＳＤの残存容量を示す。
【０２７１】
図１８は、本発明の実施形態に係る記憶システムの概略構造図である。図１８の記憶システム１８００は、図１７で説明されたコントローラ１８１０及び記憶装置１７００を有する。
【０２７２】
コントローラ１８１０が、書き込み予定データを備える書き込み要求を生成し、記憶装置１７００から書き込み要求に対する応答メッセージを受信し。ここで、応答メッセージが、記憶装置１７００における書き込み予定データの論理アドレスを有し、ディスクアレイにおける書き込み予定データの論理アドレスと記憶装置１７００における書き込み予定データの論理アドレスとの間のマッピング関係を記録するように構成される。
【０２７３】
オプションで、ある実施形態において、コントローラ１８１０が、ホストから新たな書き込み予定データを受信し、第１フィードバック情報に従って記憶装置１７００の残存容量を決定し、記憶装置１７００の残存容量が新たな書き込み予定データのサイズよりも大きい場合に、新たな書き込み予定データを記憶装置１７００へ書き込むように、更に構成される。
【０２７４】
図１９は、本発明の実施形態に係るソリッドステートディスクの概略構造図である。図１９のソリッドステートディスク１９００は、コントローラと通信するように構成される通信インタフェース１９１０と、記憶空間を提供するように構成される記憶媒体１９２０と、通信インタフェース１９１０及び記憶媒体１９２０に接続され、通信インタフェース１９１０を介してコントローラから書き込み要求を受信するように構成されるプロセッサ１９３０とを有する。ここで、書き込み要求が、書き込み予定データを保持し、圧縮データを取得すべく書き込み予定データを圧縮し、記憶媒体１９２０に圧縮データを記憶し、通信インタフェース１９１０を介して第１フィードバック情報をコントローラへ送信し、第１フィードバック情報は、圧縮データが記憶された後の記憶媒体１９２０の残存容量を示す。
【０２７５】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介して第２フィードバック情報をコントローラへ送信するように更に構成され、ここで、第２フィードバック情報は記憶媒体１９２０の論理容量を示し、記憶媒体１９２０の論理容量が、記憶媒体１９２０に記憶されているデータの非圧縮データ量及び記憶媒体１９２０の利用可能な物理空間の容量の和である。
【０２７６】
オプションで、ある実施形態において、プロセッサ１９３０が、書き込み予定データへブランク論理ブロックを割り当て、割り当てられたブランク論理ブロックを有効論理ブロックへ変換し、ソリッドステートディスク１９００における残存ブランク論理ブロックの数を問い合わせるように更に構成される。ここで、ブランク論理ブロックは利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックは記憶媒体１９２０の論理容量のセグメントに対応し、有効論理ブロックは、その論理アドレスが有効データで占有される論理ブロックであり、プロセッサ１９３０が、通信インタフェース１９１０を介して第１フィードバック情報をコントローラへ送信するように具体的に構成され、第１フィードバック情報が、残存ブランク論理ブロックの数、及び／又は、残存容量を有し、残存容量は、残存ブランク論理ブロックの数に基づいて決定される。
【０２７７】
オプションで、ある実施形態において、プロセッサ１９３０がブランク論理ブロックを書き込み予定データへ割り当てた後に、プロセッサ１９３０が、圧縮データを取得すべく書き込み予定データを圧縮するように具体的に構成され、プロセッサ１９３０が、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って決定するように更に構成される。
【０２７８】
オプションで、ある実施形態において、プロセッサ１９３０が、新しいブランク論理ブロックに対応するエントリを、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数に従って、ソリッドステートディスク１９００のマッピングテーブルへ追加するように更に構成される。
【０２７９】
オプションで、ある実施形態において、プロセッサ１９３０が、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数に従って、ソリッドステートディスク１９００における分離論理ブロックを、ブランク論理ブロックへ更新するように更に構成される。ここで、分離論理ブロックは、その論理アドレスがソリッドステートディスク１９００で使用不可能な論理ブロックである。
【０２８０】
オプションで、ある実施形態において、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、ここでＤは書き込み予定データの長さと圧縮データの長さとの間の差を示し、Ｌはソリッドステートディスク１９００における論理ブロックの長さを示す。
【０２８１】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介してコントローラからコマンドを受信し、論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように更に構成される。ここで、コマンドが論理アドレス範囲を有し、コマンドは論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられ、分離論理ブロックは、その論理アドレスが使用不可能な論理ブロックである。
【０２８２】
オプションで、ある実施形態において、プロセッサ１９３０が、論理アドレス範囲におけるデータによって占有される物理空間のサイズを決定し、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択し、部分的なオーバープロビジョニング空間を、記憶媒体１９２０の利用可能な物理空間として用いるように更に構成される。ここで、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい。
【０２８３】
オプションで、ある実施形態において、プロセッサ１９３０が通信インタフェース１９１０を介して第１フィードバック情報をコントローラへ送信する前に、プロセッサが１９３０、記憶媒体１９２０の利用可能な物理空間を問い合わせ、利用可能な物理空間の容量を残存容量と決定するように更に構成される。
【０２８４】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介してコントローラから書き込み要求を受信した後に、プロセッサ１９３０が、論理アドレスを書き込み予定データへ割り当て、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように更に構成される。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を有する。
【０２８５】
オプションで、ある実施形態において、プロセッサ１９３０が通信インタフェース１９１０を介してコントローラから書き込み要求を受信した後に、プロセッサ１９３０が、論理アドレスを書き込み予定データへ割り当て、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように更に構成される。ここで、マッピング情報が、圧縮データを記憶する物理ページに関する情報を含み、プロセッサ１９３０は、物理ページ上に圧縮データのメタデータを記憶するように更に構成され、ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
【０２８６】
オプションで、ある実施形態において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、データ長に基づいて割り当てられる。
【０２８７】
オプションで、ある実施形態において、プロセッサ１９３０が圧縮データを記憶した後に、プロセッサ１９３０が記憶媒体１９２０における書き込み予定データの論理アドレスを、通信インタフェース１９１０を介してコントローラへ送信するように更に構成される。
【０２８８】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介してコントローラから読み出し要求を受信するように更に構成され、ここで読み出し要求が、読み出すべきデータの論理アドレスを備える。プロセッサ１９３０が、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出し、ターゲットデータを圧縮解除して読み出すべきデータを取得し、通信インタフェース１９１０を介して読み出すべきデータをコントローラへ送信するように更に構成される。
【０２８９】
図２０は、本発明の実施形態に係る記憶システムの概略構造図である。図２０の記憶システム２０００は、図１９のコントローラ２０１０及びソリッドステートディスク１９００を有する。
【０２９０】
コントローラ２０１０が、書き込み予定データを有する書き込み要求を生成し、通信インタフェース１９１０を介してプロセッサ１９３０から書き込み要求に対する応答メッセージを受信するように構成され、ここで、応答メッセージが、記憶媒体１９２０における書き込み予定データの論理アドレスを有する。コントローラ２０１０が、ディスクアレイにおける書き込み予定データの論理アドレスと記憶媒体１９２０における書き込み予定データの論理アドレスとの間のマッピング関係を記録するように更に構成される。
【０２９１】
オプションで、ある実施形態において、コントローラ２０１０が、ホストから新たな書き込み予定データを受信し、第１フィードバック情報に従ってソリッドステートディスク１９００の残存容量を決定し、ソリッドステートディスク１９００の残存容量が新たな書き込み予定データのサイズよりも大きい場合に、新たな書き込み予定データを記ソリッドステートディスク１９００へ書き込むように、更に構成される。
【０２９２】
本明細書において、「及び／又は」は、３種類の関係が存在してよいこと表す。例えば、Ａ及び／又はＢは、以下の３つのケース、すなわち、Ａのみが存在すること、Ａ及びＢの両方が存在すること、及びＢのみが存在することを表してよい。加えて、本明細書における記号「／」は概して、関連対象物間の「または」の関係を示す。
【０２９３】
当業者であれば、本明細書において開示される実施形態を参照して説明された例におけるユニット及びアルゴリズム段階が、電子的ハードウェア、又は、コンピュータソフトウェア及び電子的ハードウェアの組み合わせにより実装されてよいことが認識され得る。機能が、ハードウェアにより実行されるか、又は、ソフトウェアにより実行されるかは、技術的解決法の特定の用途及び設計制約条件に依存する。当業者であれば、具体的な用途毎に、説明した機能を実装する際に利用する方法を変更し得るが、このような実装が本発明の範囲を超えるものとみなされるべきではない。
【０２９４】
当業者には明確に理解され得るように、説明を簡便かつ簡単にする目的で、前述のシステム、装置、及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照されたく、詳細は説明しない。
【０２９５】
本出願において提供されたいくつかの実施形態では、開示されたシステム、装置、及び方法が他の方式で実装されてよいことが理解されるべきである。例えば、説明した装置の実施形態は、一例に過ぎない。例えば、ユニットの区分は、論理的機能の区分に過ぎず、実際の実装においては他の区分であってよい。例えば、複数のユニットまたは構成要素が丸め処理され、または、別のシステムに統合されてよく、あるいは、いくつかの特徴は無視されるかまたは実行されなくてよい。加えて、表示または議論されている相互結合もしくは直接的結合または通信接続は、いくつかのインタフェース、装置またはユニット間の間接的結合もしくは通信接続、もしくは電気的接続、機械的接続、または他の形態の接続によって実装されてよい。
【０２９６】
別個の構成要素として説明されたユニットは、物理的に離れていても離れていなくてもよく、またユニットとして表示された構成要素が、物理的なユニットであってもそうでなくてもよく、あるいは１か所に配置されても、複数のネットワークユニットに分散されてもよい。ユニットのいくつか又は全ては、実施形態の解決手段の目的を実現するために、実際の必要に従って選択されてよい。
【０２９７】
加えて、本発明の実施形態における機能ユニットが１つの処理ユニットに統合されてよく、もしくはユニットの各々が物理的に単独で存在してよく、または２つまたはそれより多くのユニットが１つのユニットに統合される。
【０２９８】
機能がソフトウェア機能ユニットの形態で実装され、単独の製品として販売または使用されるとき、当該機能は、コンピュータ可読記憶媒体に記憶されてよい。そのような理解に基づいて、本発明の技術的解決手段は本質的に、または従来技術に寄与する部分は、または技術的解決手段の一部は、ソフトウェア製品の形態で実装されてよいソフトウェア製品は、記憶媒体に記憶され、本発明の実施形態において説明される方法の段階の全てまたは一部を実行するようコンピュータデバイス（これはパーソナルコンピュータ、サーバ、またはネットワークデバイスであってよい）に命令するためのいくつかの命令を含む。上述の記憶媒体は、ＵＳＢフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、または光ディスク等の、プログラムコードを記憶することができる任意の媒体を含む。
【０２９９】
上記の説明は、単に本発明の特定の実装態様に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明において開示される技術的範囲内において当業者により容易に想到されるあらゆる変形または置き換えが、本発明の保護範囲に属するものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲によって決まるものとする。
【図１】
2019519047.tif 000004
【図２】
2019519047.tif 000005
【図３】
2019519047.tif 000006
【図４】
2019519047.tif 000007
【図５】
2019519047.tif 000008
【図６】
2019519047.tif 000009
【図７】
2019519047.tif 000010
【図８】
2019519047.tif 000011
【図９】
2019519047.tif 000012
【図１０】
2019519047.tif 000013
【図１１】
2019519047.tif 000014
【図１２】
2019519047.tif 000015
【図１３】
2019519047.tif 000016
【図１４】
2019519047.tif 000017
【図１５】
2019519047.tif 000018
【図１６】
2019519047.tif 000019
【図１７】
2019519047.tif 000020
【図１８】
2019519047.tif 000021
【図１９】
2019519047.tif 000022
【図２０】
2019519047.tif 000023
【手続補正書】
【提出日】平成31年1月30日(2019.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソリッドステートディスクＳＳＤに適用されるデータ処理方法であって、
コントローラから、書き込み予定データを保持する書き込み要求を前記ＳＳＤにより受信する段階と、
前記書き込み予定データを前記ＳＳＤにより圧縮して圧縮データを取得する段階と、
前記圧縮データを前記ＳＳＤにより記憶する段階と、
第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階であって、前記第１フィードバック情報が、前記圧縮データが記憶された後の前記ＳＳＤの残存容量を示す、送信する段階と
を備える、
データ処理方法。
【請求項２】
前記方法が、
ブランク論理ブロックを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階であって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記ＳＳＤの論理容量のセグメントに対応する、割り当てる段階と、
割り当てられた前記ブランク論理ブロックを有効論理ブロックへ前記ＳＳＤにより変換する段階であって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、変換する段階と、
前記ＳＳＤにおける残存ブランク論理ブロックの数を前記ＳＳＤにより問い合わせる段階と
を更に備え、
前記第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階が、前記第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階であって、前記第１フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び／又は、前記残存容量を含み、前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、送信する段階を有する、請求項１に記載の方法。
【請求項３】
前記書き込み予定データを前記ＳＳＤにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階の後に、前記書き込み予定データを前記ＳＳＤにより圧縮して前記圧縮データを取得する段階を有し、
前記方法が、
前記ＳＳＤで追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、前記ＳＳＤにより決定する段階
を更に備える、請求項２に記載の方法。
【請求項４】
前記方法が、
新しいブランク論理ブロックに対応するエントリを、前記ＳＳＤで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記ＳＳＤのマッピングテーブルへ前記ＳＳＤにより追加する段階
を更に備える、請求項３に記載の方法。
【請求項５】
前記方法が、
前記ＳＳＤで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記ＳＳＤにおける分離論理ブロックをブランク論理ブロックへ前記ＳＳＤにより更新する段階
を更に備え、
前記分離論理ブロックは、論理アドレスが前記ＳＳＤで使用不可能な論理ブロックである、請求項３または４に記載の方法。
【請求項６】
前記ＳＳＤで追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、
Ｄは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
Ｌは、前記ＳＳＤにおける論理ブロックの長さを示す、請求項３から５の何れか一項に記載の方法。
【請求項７】
前記方法が、
前記コントローラからコマンドを前記ＳＳＤにより受信する段階であって、前記コマンドが論理アドレス範囲を備え、前記コマンドが前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、
前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ前記ＳＳＤにより変換する段階であって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と
を更に備える、請求項２から６の何れか一項に記載の方法。
【請求項８】
前記方法が、
前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを前記ＳＳＤにより決定する段階と、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を前記ＳＳＤにより選択する段階であって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択する段階と、
前記部分的なオーバープロビジョニング空間を前記ＳＳＤの利用可能な物理空間として前記ＳＳＤにより用いる段階と
を更に備える、請求項７に記載の方法。
【請求項９】
第１フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する前記段階の前に、前記方法が、
前記ＳＳＤの利用可能な物理空間を前記ＳＳＤにより問い合わせる段階と、
前記利用可能な物理空間の容量を前記残存容量と前記ＳＳＤにより決定する段階と
を更に備える、請求項１に記載の方法。
【請求項１０】
コントローラから書き込み要求を前記ＳＳＤにより受信する前記段階の後に、前記方法が、
論理アドレスを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階と、
前記ＳＳＤのマッピングテーブルに在り、前記論理アドレスに対応するエントリに、マッピング情報を前記ＳＳＤにより記録する段階と
を更に備え、
前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さ、に関する情報を含む、請求項１から９の何れか一項に記載の方法。
【請求項１１】
コントローラから書き込み要求を前記ＳＳＤにより受信する前記段階の後に、前記方法が、
論理アドレスを前記書き込み予定データへ前記ＳＳＤにより割り当てる段階と、
前記ＳＳＤのマッピングテーブルに在り、前記論理アドレスに対応するエントリに、マッピング情報を前記ＳＳＤにより記録する段階であって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、記録する段階と、
前記物理ページ上に前記圧縮データのメタデータを前記ＳＳＤにより記憶する段階であって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さを含む、記憶する段階と
を更に備える、請求項１から９の何れか一項に記載の方法。
【請求項１２】
前記書き込み要求が、前記書き込み予定データのデータ長を含み、
前記書き込み予定データの論理アドレスが、前記データ長に基づいて割り当てられる、請求項１０または１１に記載の方法。
【請求項１３】
前記圧縮データを前記ＳＳＤにより記憶する段階の後に、前記方法が、
前記ＳＳＤにおける前記書き込み予定データの論理アドレスを前記コントローラへ前記ＳＳＤにより送信する段階
を更に備える、請求項１から１２の何れか一項に記載の方法。
【請求項１４】
前記方法が、
前記コントローラから読み出し要求を前記ＳＳＤにより受信する段階であって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、受信する段階と、
前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを前記ＳＳＤにより読み出す段階と、
前記ターゲットデータを前記ＳＳＤにより圧縮解除して前記読み出すべきデータを取得する段階と、
前記読み出すべきデータを前記コントローラへ前記ＳＳＤにより送信する段階と
を更に備える、請求項１３に記載の方法。
【請求項１５】
前記方法が、
第２フィードバック情報を前記コントローラへ前記ＳＳＤにより送信する段階
を更に備え、
前記第２フィードバック情報が、前記ＳＳＤの論理容量を示し、
前記ＳＳＤの前記論理容量が、前記ＳＳＤに記憶されているデータの非圧縮データ量及び前記ＳＳＤの利用可能な物理空間の容量の和である、請求項１から１４の何れか一項に記載の方法。
【請求項１６】
記憶装置であって、
コントローラから、書き込み予定データを保持する書き込み要求を受信するように構成される第１受信モジュールと、
前記書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮モジュールと、
前記圧縮データを記憶するように構成される第１記憶モジュールと、
第１フィードバック情報を前記コントローラへ送信するように構成される第１送信モジュールであって、前記第１フィードバック情報が、前記圧縮データが記憶された後の前記記憶装置の残存容量を示す、第１送信モジュールと
を備える、
記憶装置。
【請求項１７】
前記記憶装置が、
ブランク論理ブロックを前記書き込み予定データへ割り当てるように構成される割り当てモジュールであって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記記憶装置の論理容量のセグメントに対応する、割り当てモジュールと、
割り当てられた前記ブランク論理ブロックを有効論理ブロックへ変換するように構成される第１変換モジュールであって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、第１変換モジュールと、
前記記憶装置における残存ブランク論理ブロックの数を問い合わせるように構成される第１問い合わせモジュールと
を更に備え、
前記第１送信モジュールが、前記第１フィードバック情報を前記コントローラへ送信するように具体的に構成され、
前記第１フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び／又は、前記残存容量を含み、
前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、請求項１６に記載の記憶装置。
【請求項１８】
前記圧縮モジュールは、前記割り当てモジュールが前記ブランク論理ブロックを前記書き込み予定データへ割り当てた後に、前記書き込み予定データを圧縮して前記圧縮データを取得するように具体的に構成され、
前記記憶装置が、
前記記憶装置で追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、決定するように構成される第１決定モジュール
を更に備える、請求項１７に記載の記憶装置。
【請求項１９】
前記記憶装置が、
新しいブランク論理ブロックに対応するエントリを、前記記憶装置で追加する必要のあるブランク論理ブロックの前記数に従って、マッピングテーブルへ追加するように構成される追加モジュール
を更に備える、請求項１８に記載の記憶装置。
【請求項２０】
前記記憶装置が、
前記記憶装置における分離論理ブロックを、前記記憶装置で追加する必要のある前記ブランク論理ブロックの前記数に従って、ブランク論理ブロックへ更新するように構成される更新モジュール
を更に備え、
前記分離論理ブロックは、論理アドレスが前記記憶装置で使用不可能な論理ブロックである、請求項１８または１９に記載の記憶装置。
【請求項２１】
前記記憶装置で追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、
Ｄは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
Ｌは、前記記憶装置における論理ブロックの長さを示す、請求項１８から２０の何れか一項に記載の記憶装置。
【請求項２２】
前記記憶装置が、
前記コントローラからコマンドを受信するように構成される第２受信モジュールであって、前記コマンドが論理アドレス範囲を含み、前記コマンドが前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、第２受信モジュールと、
前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第２変換モジュールであって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、第２変換モジュールと
を更に備える、請求項１７から２１の何れか一項に記載の記憶装置。
【請求項２３】
前記記憶装置が、
前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを決定するように構成される第２決定モジュールと、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールであって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択モジュールと、
前記部分的なオーバープロビジョニング空間を、前記記憶装置の利用可能な物理空間として用いるように構成される第３決定モジュールと
を更に備える、請求項２２に記載の記憶装置。
【請求項２４】
前記記憶装置が、
前記第１フィードバック情報が前記コントローラへ送信される前に、前記記憶装置の利用可能な物理空間を問い合わせるように構成される第２問い合わせモジュールと、
前記利用可能な物理空間の容量を、前記残存容量と決定するように構成される第４決定モジュールと
を更に備える、請求項１６に記載の記憶装置。
【請求項２５】
前記記憶装置が、
前記書き込み要求が前記コントローラから受信された後に、論理アドレスを前記書き込み予定データへ割り当てるように構成される第５決定モジュールと、
マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第１記録モジュールであって、前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さ、に関する情報を含む、第１記録モジュールと
を更に備える、請求項１６から２４の何れか一項に記載の記憶装置。
【請求項２６】
前記記憶装置が、
前記書き込み要求が前記コントローラから受信される後に、論理アドレスを前記書き込み予定データへ割り当てるように構成される第６決定モジュールと、
マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第２記録モジュールであって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、第２記録モジュールと、
前記物理ページ上に前記圧縮データのメタデータを記憶するように構成される第２記憶モジュールであって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さを含む、第２記憶モジュールと
を更に備える、請求項１６から２４の何れか一項に記載の記憶装置。
【請求項２７】
前記書き込み要求が、前記書き込み予定データのデータ長を含み、
前記書き込み予定データの前記論理アドレスが、前記データ長に基づいて割り当てられる、請求項２５または２６に記載の記憶装置。
【請求項２８】
前記記憶装置が、
前記書き込み要求が前記コントローラから受信された後に、前記記憶装置における前記書き込み予定データの論理アドレスを前記コントローラへ送信するように構成される第３送信モジュール
を更に備える、請求項１６から２７の何れか一項に記載の記憶装置。
【請求項２９】
前記記憶装置が、
前記コントローラから読み出し要求を受信するように構成される第３受信モジュールであって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、第３受信モジュールと、
前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、
前記ターゲットデータを圧縮解除して前記読み出すべきデータを取得するように構成される圧縮解除モジュールと、
前記読み出すべきデータを前記コントローラへ送信するように構成される第４送信モジュールと
を更に備える、請求項２８に記載の記憶装置。
【請求項３０】
コントローラと、
請求項１６から２９の何れか一項に記載の記憶装置と
を備え、
前記コントローラが、
前記書き込み予定データを含む書き込み要求を生成することと、
前記記憶装置から、前記書き込み要求に対する応答メッセージを受信することであって、前記応答メッセージが、前記記憶装置における前記書き込み予定データの論理アドレスを含む、受信することと、
ディスクアレイにおける前記書き込み予定データの論理アドレスと前記記憶装置における前記書き込み予定データの前記論理アドレスとの間のマッピング関係を記録することと
を実行するように構成される、
記憶システム。
【請求項３１】
前記コントローラが、
ホストから新たな書き込み予定データを受信し、
前記第１フィードバック情報に従って、前記記憶装置の残存容量を決定し、
前記記憶装置の前記残存容量が前記新たな書き込み予定データのサイズよりも大きい場合に、前記新たな書き込み予定データを前記記憶装置へ書き込む
ように更に構成される、請求項３０に記載の記憶システム。
【請求項３２】
前記記憶装置が、
第２フィードバック情報を前記コントローラへ送信するように構成される第２送信モジュール
を更に備え、
前記第２フィードバック情報が、前記記憶装置の論理容量を示し、
前記記憶装置の前記論理容量が、前記記憶装置に記憶されているデータの非圧縮データ量及び前記記憶装置の利用可能な物理空間の容量の和である、請求項１６から２９の何れか一項に記載の記憶装置。
【請求項３３】
コントローラと通信するように構成される通信インタフェースと、
記憶空間を提供するように構成される記憶媒体と、
前記通信インタフェース及び前記記憶媒体に接続されるプロセッサと
を備え、
前記プロセッサは、
前記通信インタフェースを介して前記コントローラから、書き込み予定データを保持する書き込み要求を受信することと、
前記書き込み予定データを圧縮して圧縮データを取得することと、
前記記憶媒体に前記圧縮データを記憶することと、
前記通信インタフェースを介して第１フィードバック情報を前記コントローラへ送信することであって、前記第１フィードバック情報が、前記圧縮データが記憶された後の前記記憶媒体の残存容量を示す、送信することと
を実行するように構成される、
ソリッドステートディスク。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システムの分野に関し、特に、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムに関する。
【背景技術】
【０００２】
記憶システムは、概して、ホスト、コントローラ（あるいは、ストレージコントローラまたはストレージアレイコントローラと称される）及びディスクアレイを有する。コントローラは、ホストとディスクアレイとの間のブリッジであり、ホストとディスクとの間で通信及びデータ交換を制御するように構成される。
【０００３】
現在、全ての主流の記憶システムは、圧縮機能及び圧縮解除機能をサポートしている。例えば、データがディスクに書き込まれる前に、記憶システムは、概して、そのデータを圧縮する。他の例では、データがディスクから読み出された後、記憶システムはまずそのデータを圧縮解除し、次に圧縮解除データをホストへ返す。データの圧縮及び圧縮解除により、ディスク空間を節約できる。
【０００４】
従来技術において、記憶システムの圧縮機能及び圧縮解除機能は、主に、コントローラによって実装され、具体的にはコントローラにおけるプロセッサによって実装されてよい。例えば、書き込み要求（または、書き込み入力／出力（ＩＯ）と称される）に対して、コントローラは、まず、データを圧縮し、そして次に圧縮データをディスクに書き込む。読み出し要求（または、読み出しＩＯと称される）に対して、コントローラは、まず、ディスクから圧縮データを読み出し、そして次に、読み出しデータを圧縮解除し、そして圧縮解除データをホストへ返す。上述の処理から、コントローラが、圧縮及び圧縮解除の全処理に関与する必要があることが理解できる。しかしながら、データの圧縮及び圧縮解除には、大量のコンピューティングリソースの消費が必要であり、コントローラにより多くの計算上のプレッシャーをもたらす。
【発明の概要】
【０００５】
本発明では、コントローラの計算上のプレッシャーを低減するために、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムを提供する。
【０００６】
第１態様によると、データ処理方法が提供され、ここで、当該方法がソリッドステートディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ、ＳＳＤ）に適用される。具体的には、上記方法はＳＳＤにより実行されてよく、例えば、ＳＳＤの中のプロセッサにより実行されてよい。上記方法は、コントローラから、書き込み予定データを保持する書き込み要求をＳＳＤにより受信する段階及び書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階、を備える。ＳＳＤが、論理ブロックに従って、書き込み予定データを圧縮してもよいことが理解されるべきである。即ち、圧縮手段によって取得される圧縮ブロックの数が、書き込み予定データに割り当てられる論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）の数によって決まる。加えて、ＳＳＤは、固定長圧縮または可変長圧縮を用いてよい。上記方法は、圧縮データをＳＳＤにより記憶する段階、及び、第１フィードバック情報をコントローラへＳＳＤにより送信する段階を更に備える。ここで、第１フィードバック情報は、圧縮データが記憶された後のＳＳＤの残存容量を示す。第１フィードバック情報は、残存容量を複数の方法で、例えば、直接的に示す方法や間接的に示す方法で示してよいことが理解されるべきである。例えば、直接的に示す方法とは、ＳＳＤが、当該ＳＳＤの残存容量をコントローラへ直接レポートすることであってよい。間接的に示す方法とは、ＳＳＤが当該ＳＳＤの残存容量の変化をコントローラへレポートし、コントローラが、同様に、ＳＳＤの残存容量の変化に従って、当該ＳＳＤの残存容量を決定できることであってよい。
【０００７】
従来技術において、データ圧縮は、コントローラにより実行され、コントローラ自らが、ＳＳＤの容量を管理すべくアドレス空間を生成する。そのアドレス空間は、固定長のアドレス空間である。一度、アドレス空間が生成されると、そのアドレス空間のサイズは変化しない。その結果、ＳＳＤが、データ圧縮によりもたらされる容量の増加についてコントローラに通知できたとしても、コントローラは、増加した容量を利用することができず、ＳＳＤのストレージリソースを浪費する結果となる。本実装態様では、第１に、圧縮機能がコントローラからＳＳＤへ移され、その結果、コントローラの計算上のプレッシャーを低減することができる。第２に、ＳＳＤの容量管理機能がＳＳＤへ移され、ＳＳＤは、残存容量をコントローラへフィードバックする。ＳＳＤが自身の残存容量を正確に取得できるので、ＳＳＤのストレージリソースの浪費が回避される。
【０００８】
第１態様を参照すると、第１態様のある実装態様において、上記方法が、第２フィードバック情報をコントローラへＳＳＤにより送信する段階を更に備える。ここで、第２フィードバック情報が、ＳＳＤの論理容量を示し、ＳＳＤの論理容量が、ＳＳＤに記憶されているデータの非圧縮データ量及びＳＳＤの利用可能な物理空間の容量の和である。
【０００９】
第１態様を参照すると、第１態様のある実装態様において、第１フィードバック情報をコントローラへＳＳＤにより送信する段階の前に、上記方法が、ＳＳＤの利用可能な物理空間をＳＳＤにより問い合わせる段階と、利用可能な物理空間の容量を残存容量とＳＳＤにより決定する段階とを更に備える。
【００１０】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、書き込み予定データへブランク論理ブロックをＳＳＤにより割り当てる段階であって、ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックはが記ＳＳＤの論理容量のセグメントに対応する、割り当てる段階と、ブランク論理ブロックを有効論理ブロックへＳＳＤにより変換する段階であって、有効論理ブロックは、論理アドレスが有効データで占有される論理ブロックである、変換する段階と、ＳＳＤにおける残存ブランク論理ブロックの数をＳＳＤにより問い合わせる段階と、を更に有する。ここで、第１フィードバック情報をコントローラへＳＳＤにより送信する段階が、第１フィードバック情報をコントローラへＳＳＤにより送信する段階を有し、第１フィードバック情報が、残存ブランク論理ブロックの数、及び／又は、残存容量を有し、残存容量が、残存ブランク論理ブロックの数に基づいて決定される。本実装態様では、ブランク論理ブロックを書き込み予定データへ割り当てた後に、ＳＳＤが、ブランク論理ブロックを有効論理ブロックへ直接変換してもよく、または、ブランク論理ブロックを書き込み予定データへ割り当てた後に、ＳＳＤが、最初に圧縮及び記憶オペレーションを書き込み予定データに実行し、次に、ブランク論理ブロックを有効論理ブロックへ変換してもよいことが、理解されるべきである。
【００１１】
第１態様を参照すると、第１態様のある実装態様において、ＳＳＤは、当該ＳＳＤのマッピングテーブルに従って、ＳＳＤに論理ブロックを記録する。
【００１２】
第１態様を参照すると、第１態様のある実装態様において、書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを書き込み予定データへＳＳＤにより割り当てる段階の後に、書き込み予定データをＳＳＤにより圧縮して圧縮データを取得する段階を備え、上記方法は、ＳＳＤで追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って、ＳＳＤにより決定する段階を更に備える。
【００１３】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、新しいブランク論理ブロックに対応するエントリを、ＳＳＤで追加する必要のあるブランク論理ブロックの数に従って、ＳＳＤのマッピングテーブルへＳＳＤにより追加する段階を更に備える。
【００１４】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、新しいブランク論理ブロックに対応するエントリを、ＳＳＤで追加する必要のあるブランク論理ブロックの数に従って、ＳＳＤのマッピングテーブルの最後にＳＳＤにより追加する段階を更に備える。
【００１５】
動的に長さが変化するマッピングテーブルを整備することにより、ＳＳＤの論理容量の変化が簡便に記録されてよい。
【００１６】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、ＳＳＤで追加する必要のあるブランク論理ブロックの数に従って、ＳＳＤにおける分離論理ブロックを、ブランク論理ブロックへＳＳＤにより更新する段階を更に備える。ここで分離論理ブロックは、その論理アドレスがＳＳＤで使用不可能な論理ブロックである。
【００１７】
マッピングテーブルにおける論理ブロックのステータスを動的に更新することにより、ＳＳＤにおける論理ブロックの管理を容易にしてよい。
【００１８】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、コントローラからコマンドをＳＳＤにより受信する段階であって、コマンドが論理アドレス範囲を有し、コマンドが論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、論理アドレス範囲における有効論理ブロックを分離論理ブロックへＳＳＤにより変換する段階であって、分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と、を更に備える。上記コマンドは、例えば、トリム／アンマップ（ｔｒｉｍ／ｕｎｍａｐ）コマンドであってよい。
【００１９】
この解決法では、論理ブロックは、ブランク論理ブロック、有効論理ブロック及び分離論理ブロックへ分類される。ＳＳＤにおける論理ブロックのステータスを更新かつ整備することによって、ＳＳＤでの論理ブロックのデータストレージを十分に反映させることができるだけでなく、ＳＳＤの論理容量の動的な変化もまた十分に反映させることができる。
【００２０】
第１態様を参照すると、第１態様のある実装態様において、上記方法は、論理アドレス範囲におけるデータによって占有される物理空間のサイズをＳＳＤにより決定する段階と、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間をＳＳＤにより選択する段階であって、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい、選択する段階と、部分的なオーバープロビジョニング空間をＳＳＤの利用可能な物理空間としてＳＳＤにより用いる段階と、を更に備える。
【００２１】
第１態様を参照すると、第１態様のある実装態様において、ＳＳＤで追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、ここでＤは書き込み予定データの長さと圧縮データの長さとの間の差を示し、ＬはＳＳＤにおける論理ブロックの長さを示す。Ｍはテーブル参照手段により取得されてよく、または、オンラインの計算手段により取得されてもよい。
【００２２】
第１態様を参照すると、第１態様のある実装態様において、ＳＳＤで追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して１を減算した結果に等しく、ここでＤは書き込み予定データの長さと圧縮データの長さとの間の差を示し、ＬはＳＳＤにおける論理ブロックの長さを示す。Ｍはテーブル参照手段により取得されてよく、または、オンラインの計算手段により取得されてもよい。
【００２３】
第１態様を参照すると、第１態様のある実装態様において、コントローラから書き込み要求をＳＳＤにより受信する段階の後に、上記方法が、論理アドレスを書き込み予定データへＳＳＤにより割り当てる段階と、マッピングテーブルに在り、論理アドレスに対応するエントリにマッピング情報をＳＳＤにより記録する段階とを備える。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を更に備える。
【００２４】
上述のマッピング情報を用いることで圧縮データの物理アドレスを直接的に位置付けることができ、これにより、ＳＳＤのアドレス指定の効率を改善できる。
【００２５】
第１態様を参照すると、第１態様のある実装態様において、コントローラから書き込み要求をＳＳＤにより受信する段階の後に、上記方法が、論理アドレスを書き込み予定データへＳＳＤにより割り当てる段階と、マッピングテーブルに在り、論理アドレスに対応するエントリに、マッピング情報をＳＳＤにより記録する段階であって、マッピング情報が、圧縮データを記憶する物理ページに関する情報を有する、記録する段階と、物理ページ上に圧縮データのメタデータをＳＳＤにより記憶する段階と、を更に備える。ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
【００２６】
論理アドレスとデータブロックの物理アドレスとの間のマッピング関係が、マッピングテーブル及び物理ページにより一緒に記録されるので、その結果、ＳＳＤにおいてマッピングテーブルにより占有されるメモリを減少させることができ、かつ、ＳＳＤのメモリ空間を節約できる。
【００２７】
第１態様を参照すると、第１態様のある実装態様において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、上記データ長に基づいて割り当てられる。
【００２８】
第１態様を参照すると、第１態様のある実装態様において、圧縮データをＳＳＤにより記憶する段階の後に、上記方法が、ＳＳＤにおける書き込み予定データの論理アドレスをコントローラへＳＳＤにより送信する段階を更に備える。
【００２９】
第１態様を参照すると、第１態様のある実装態様において、上記方法が、コントローラから読み出し要求をＳＳＤにより受信する段階であって、読み出し要求が、読み出すべきデータの論理アドレスを備える、受信する段階と、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータをＳＳＤにより読み出す段階と、ターゲットデータをＳＳＤにより圧縮解除して読み出すべきデータを取得する段階と、読み出すべきデータをＳＳＤによりコントローラへ送信する段階と、を更に備える。
【００３０】
第１態様を参照すると、第１態様のある実装態様において、第１フィードバック情報をコントローラへＳＳＤにより送信する段階の前に、上記方法が、コントローラにより送信された問い合わせ要求メッセージをＳＳＤにより受信する段階であって、問い合わせ要求メッセージが、ＳＳＤの残存容量を問い合わせるために用いられる、受信する段階を更に備えてよい。ここで、コントローラへ第１フィードバック情報をＳＳＤにより送信する段階が、コントローラへ問い合わせ応答メッセージをＳＳＤにより送信する段階を有し、ここで、問い合わせ応答メッセージが第１フィードバック情報を有する。具体的には、ＳＳＤは、コントローラにより送信された問い合わせメッセージを受信する。ここで、問い合わせメッセージは、ＳＳＤにおける残存ブランク論理ブロックの数を問い合わせるために具体的に用いられる。ＳＳＤは、問い合わせ応答メッセージをコントローラへ送信し、ここで、問い合わせ応答メッセージは、残存ブランク論理ブロックの数を示すために用いられる。
【００３１】
第１態様を参照すると、第１態様のある実装態様において、第１フィードバック情報をコントローラへＳＳＤにより送信する段階は、第１フィードバック情報をコントローラへＳＳＤにより能動的に送信する段階を備える。具体的には、ＳＳＤは、残存ブランク論理ブロックの数をコントローラへ能動的に送信してよい。ＳＳＤが、残存ブランク論理ブロックの数を周期的にコントローラへフィードバックしてもよく、あるいは、残存ブランク論理ブロックのレポートは、イベントによってトリガされてもよいことが理解されるべきである。
【００３２】
第２態様によると、記憶装置が提供される。ここで記憶装置は、第１態様での方法を実行するように構成されるモジュールを備える。
【００３３】
第３態様によると、ソリッドステートディスクが提供され、通信インタフェース、記憶媒体及びプロセッサを備える。ここで、通信インタフェースはコントローラと通信するように構成され、記憶媒体は記憶空間を提供するように構成され、プロセッサは通信インタフェース及び記憶媒体に接続され、通信インタフェース及び記憶媒体を用いることにより、第１態様における方法を実行する。
【００３４】
第４態様によると、コンピュータ可読媒体が提供される。ここで、コンピュータ可読媒体は、ソリッドステートディスクにより実行される予定のプログラムコードを記憶する。プログラムコードは、第１態様における方法を実行するために用いられる命令を有する。
【００３５】
上述の実装態様において、マッピングテーブルは、ＳＳＤの論理アドレス空間を示すために用いられてよい。
【００３６】
上述の実装態様において、ＳＳＤにおける論理ブロックは、ＳＳＤの論理アドレス空間に関する基本単位である。
【００３７】
上述の実装態様において、書き込み予定データの論理アドレスをＳＳＤにより決定する段階が、Ｎ個のブランク論理ブロックを、書き込み予定データにおけるＮ個のデータブロックへ、ＳＳＤにより割り当てる段階と、Ｎ個のブランク論理ブロックの論理アドレスを書き込み予定データの論理アドレスとしてＳＳＤにより用いる段階と、を有してよい。ここで、ブランク論理ブロックが、ＳＳＤでの利用可能な論理アドレスを有する論理ブロックであり、Ｎ個のデータブロックにおける各データブロックの長さは、ＳＳＤでの論理ブロックの長さと同一であり、Ｎは１に等しいかまたはそれよりも大きな整数である。
【００３８】
従来技術において、ＳＳＤの全ての論理アドレスは、コントローラによって割り当てられ、管理される。しかしながら、ＳＳＤが、自身のデータストレージと圧縮ステータスを最もよく把握している。そこで、本実装態様では、ＳＳＤの論理アドレスを割り当て管理する機能が、コントローラからＳＳＤへ移され、これにより、ＳＳＤにおける論理アドレスの割り当て及び管理の方式をより適切なものとする。
【００３９】
上述の実装態様において、Ｎ個のブランク論理ブロックを、書き込み予定データにおけるＮ個のデータブロックへＳＳＤにより割り当てる段階は、ＳＳＤにおける論理ブロックからＮ個のブランク論理ブロックをＳＳＤによりランダムに選択する段階を有してよい。
【００４０】
上述の実装態様において、Ｎ個のブランク論理ブロックを、書き込み予定データにおけるＮ個のデータブロックへＳＳＤにより割り当てる段階は、マッピングテーブルにおけるブランク論理ブロックに対応するエントリの位置に従って、前方におけるＮ個のブランク論理ブロックをＳＳＤにより選択する段階を有してよい。
【００４１】
上述の実装態様において、ＳＳＤは、前もってセットされた圧縮粒度に従って、書き込み予定データをパーティション化し、Ｎ個のデータブロックを取得してよい。ここで、圧縮粒度は、ＳＳＤにおける論理ブロックの長さに等しく、Ｎは１よりも大きな整数である。圧縮粒度は、ＳＳＤにおけるデータブロックの圧縮単位、つまりは、圧縮のための単位として用いられるサイズを具体的に示してよい。
【００４２】
圧縮粒度は、論理ブロックの長さと等しい値に設定され、これにより、ＳＳＤの中の実装を簡素化し、マッピングテーブルの管理を容易にする。
【００４３】
従来技術において、データ圧縮はコントローラにより実行され、コントローラ自らが、ＳＳＤの容量を管理すべくアドレス空間を生成する。そのアドレス空間は、固定長のアドレス空間である。一度、アドレス空間が生成されると、そのアドレス空間のサイズは変化しない。その結果、データ圧縮によりもたらされた容量の増加についてＳＳＤがコントローラに通知することができたとしても、コントローラは増加した容量を利用することができず、ＳＳＤのストレージリソースを浪費する結果となる。本発明においては、第１に、圧縮機能がコントローラからＳＳＤへ移され、その結果、コントローラの計算上のプレッシャーを低減することができる。第２に、ＳＳＤの容量管理機能はＳＳＤへ移され、ＳＳＤが残存容量をコントローラへフィードバックする。ＳＳＤが自身の残存容量を正確に取得することができるので、ＳＳＤにおけるストレージリソースの浪費が回避される。
【図面の簡単な説明】
【００４４】
本発明の技術的解決法をより明確に説明すべく、本発明の好適な実施形態を示す添付の図面を以下で簡潔に説明する。以下の説明における添付の図面は、本発明の実施形態のいくつかを示すものに過ぎないことは、明らかである。
【００４５】
【図１】記憶システムによって、ホストの書き込み要求を処理するフローチャートである。
【００４６】
【図２】記憶システムによって、ホストの書き込み要求を処理するフローチャートである。
【００４７】
【図３】本発明の実施形態に係る記憶システムの概略構造図である。
【００４８】
【図４】本発明の実施形態に係るマッピングテーブルの一例の図である。
【００４９】
【図５】本発明の実施形態に係る論理ブロックの状態遷移の図である。
【００５０】
【図６】本発明の実施形態に係る論理ブロックと物理ブロックとの間のマッピングの一例の図である。
【００５１】
【図７】本発明の実施形態に係る固定長圧縮システムにおける圧縮手順の一例の図である。
【００５２】
【図８】本発明の実施形態に係る、圧縮ブロックの丸め処理方式の一例の図である。
【００５３】
【図９】本発明の実施形態に係る、マッピング情報の記憶方式の一例の図である。
【００５４】
【図１０】本発明の実施形態に係る、マッピング情報の記憶方式の一例の図である。
【００５５】
【図１１】本発明の実施形態に係る物理ページの一例の図である。
【００５６】
【図１２】本発明の実施形態に係る書き込み要求を処理するフローチャートである。
【００５７】
【図１３】固定長圧縮における段階１２１４の実装態様の概略フローチャートである。
【００５８】
【図１４】可変長圧縮における段階１２１４の実装態様の概略フローチャートである。
【００５９】
【図１５】本発明の実施形態に係るトリム／アンマップ手順の一例の図である。
【００６０】
【図１６】本発明の実施形態に係る読み出し要求を処理する概略フローチャートである。
【００６１】
【図１７】本発明の実施形態に係る記憶装置の概略構造図である。
【００６２】
【図１８】本発明の実施形態に係る記憶システムの概略構造図である。
【００６３】
【図１９】本発明の実施形態に係るソリッドステートディスクの概略構造図である。
【００６４】
【図２０】本発明の実施形態に係る記憶システムの概略構造図である。
【発明を実施するための形態】
【００６５】
以下、本発明の好適な実施形態を示す添付の図面を参照して、本発明の技術的解決法を明確かつ完全に説明する。説明される実施形態が、本発明の実施形態の全てではなく一部であることは明らかである。
【００６６】
本発明の実施形態におけるディスク（ｄｉｓｋ）とはＳＳＤを指してよく、ディスクアレイとはＳＳＤアレイを指してよいことに注意すべきである。
【００６７】
理解し易くするために、最初に、既存の記憶システムにおけるデータ圧縮方式が、図１及び図２を参照して簡潔に説明される。
【００６８】
図１は、記憶システムによって、ホストの書き込み要求（またはＩＯと称される）を処理するフローチャートである。図１の記憶システムは、固定長圧縮に基づく記憶システムである。固定長圧縮では、データブロックを１または複数の固定長圧縮ブロックに圧縮してよい。例えば、記憶システムの圧縮粒度が４ＫＢであると仮定した場合（即ち、４ＫＢが圧縮の単位として用いられる）に、固定長圧縮に基づく記憶システムは、４ＫＢのデータブロックを０．５ＫＢの整数倍に圧縮する。例えば、４ＫＢのデータブロックは、以下の粒度、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、３ＫＢ、３．５ＫＢまたは４ＫＢ、のうちの１つに圧縮される（４ＫＢのデータブロックの圧縮サイズが３．５ＫＢよりも大きい場合には、そのデータブロックは圧縮される必要がない。）具体的には、４ＫＢのデータブロックの圧縮された長さが、０．５ＫＢと１ＫＢの間であると仮定した場合に、１ＫＢのデータブロックを取得すべく、上方アライメントオペレーションが該データブロックに対して実行される必要がある。上方アライメントの特定の態様は、圧縮データの最後に０を追加することであってよく、１ＫＢになるまで圧縮データに充填（スタフ、ｓｔｕｆｆ）する。データブロックの圧縮粒度は、また、８ＫＢや１６ＫＢ等、他のいかなる粒度であってよく、各圧縮粒度のデータブロックは、０．５ＫＢの整数倍や１ＫＢの整数倍等に圧縮されてよいことが理解されるべきである。このことは、本発明の実施形態において具体的には限定されない。  説明のため、以下では主に、４ＫＢの圧縮粒度において、圧縮ブロックとなるべき４ＫＢが、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、３ＫＢ、３．５ＫＢまたは４ＫＢのうちの１つに圧縮される一例を用いる。
【００６９】
１０２．ホストが書き込み要求をコントローラへ送信する。
【００７０】
書き込み要求は、ディスクに書き込まれる予定のデータを有してよい。コントローラは、また、ストレージコントローラと称されてよく、物理的な記憶空間を提供するディスクを管理してよい。ディスクがアレイを形成する場合には、コントローラは、また、アレイコントローラと称されてよい。
【００７１】
１０４．コントローラが、ディスクに書き込まれる予定のデータを、固定長に従って、パーティション化する。
【００７２】
具体的には、ディスクへ書き込まれる予定のデータが、データブロックを生成すべく、圧縮粒度に従って、パーティション化されてよい。例えば、圧縮粒度が４ＫＢである場合に、４ＫＢが、ディスクへ書き込まれる予定のデータをパーティション化するための単位として用いられる。
【００７３】
１０６．コントローラは、パーティション化されたデータブロックを圧縮し、圧縮データに対して上方アライメントオペレーションを実行する。
【００７４】
４ＫＢのデータブロックが圧縮された後に形成される圧縮データの長さが０．５ＫＢ未満だと仮定した場合には、圧縮データに対して切り上げオペレーションが実行されてよく、圧縮データは、０．５ＫＢの圧縮ブロックとなるように充填される。
【００７５】
１０８．コントローラは、圧縮ブロックに丸め処理を行い、適切なディスクを選択する。
【００７６】
例えば、圧縮ブロックは、物理ページのサイズの単位で丸め処理されてよい（ここでは、４ＫＢの物理ページが、説明のため一例として用いられる）。４ＫＢのデータブロックが丸め処理によって取得される毎に、書き込み要求が生成されてよい。次に、１または複数の生成された書き込み要求で保持されるデータが、選択されたディスクに一度に書き込まれてよい。代わりに、複数の４ＫＢのデータブロックが丸め処理により取得された後に、データブロックが、選択されたディスクに一度に書き込まれてもよい。
【００７７】
加えて、コントローラは、丸め処理されたデータを記憶するためのディスクを選択する必要がある。ディスクを検索するための複数のポリシーまたは方式があり得る。例えば、ディスクの残りの空間が、ディスクに書き込まれる予定のデータの長さよりも大きいことが確かであるならば、コントローラは、ディスクアレイからランダムにディスクを選択してよい。代わりに、コントローラは、複数のディスクに記憶されるデータが均等になるように、ディスクアレイにおける各ディスクの現在のデータストレージ容量等の要因に基づいて、適切なディスクを選択する。
【００７８】
１１０．コントローラは、書き込み要求を選択されたディスクへ送信する。
【００７９】
書き込み要求は、ディスクへ書き込まれる予定のデータと、コントローラにより書き込み要求におけるデータへ割り当てられるディスクの論理アドレスとを有してよい。
【００８０】
１１２．上述の段階が処理された後、データは最後にディスクへ到達し、ディスクは、当該ディスクの物理アドレスにそのデータを書き込み、そして、書き込み要求成功応答をコントローラへ返す。
【００８１】
１１４．コントローラは、ホストへ書き込み要求成功応答をフィードバックする。
【００８２】
図２は、記憶システムによって、ホストの書き込み要求を処理するフローチャートである。図２の記憶システムは、可変長圧縮に基づく記憶システムである。固定長圧縮と異なり、可変長圧縮では、データブロックが固定長へ圧縮されることを必要としない。依然として４ＫＢの圧縮粒度が、一例として用いられ、４ＫＢのデータブロックの圧縮された長さが２７７８Ｂだと仮定した場合に、２７７８Ｂのデータブロックは調整される必要がない。即ち、圧縮された長さは変化しない。図２の段階２０２から２１４は、基本的に図１の段階１０２から１１４と同様であり、繰り返しを回避すべく、詳細をここで再度説明しない。図１及び図２の間の主な違いは、可変長圧縮が段階２０６におけるデータブロックに対して実行されるが、固定長圧縮は段階１０６のデータブロックに対して実行されるという点にある。
【００８３】
図１及び図２のどちらも、書き込み要求処理手順を説明する。ホストがディスクからデータを読み出す必要がある場合、ホストは読み出し要求をコントローラへ送信する。読み出し要求を受信した後、コントローラは、まず、ディスクからデータを取得し、次に、データを圧縮解除し、圧縮解除データをホストへ返す。読み出し要求処理手順は、書き込み要求処理手順の逆手順であり、繰り返しを回避すべく、詳細をここで再度説明しない。
【００８４】
上記の説明に基づくと、従来技術では、圧縮機能及び圧縮解除機能が、主に、コントローラにより実施されることが理解できる。記憶システムでのデータ処理の規模がますます増大しているので、圧縮機能及び圧縮解除機能は、コントローラの大量のコンピューティングリソースを消費する必要がある。その結果、コントローラによる書き込み要求の処理における遅延は長くなり、更には、記憶システム全体のパフォーマンスが減少する。
【００８５】
技術の進展に伴い、ＳＳＤが、ディスクアレイによって主に用いられる記憶媒体の１つとなっている。ＳＳＤと従来のハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ、ＨＤＤ）の違いの１つは、ＳＳＤが、データ処理能力を有するプロセッサを有するという点にある。従来技術において、ＳＳＤのプロセッサは、主に、ブロック管理、ガベージコレクション、ウェアレベリング、論理アドレスと物理アドレスとの間の変換等の単純な機能を実行するように構成される。しかしながら、技術の進展に伴い、ＳＳＤの中のプロセッサの処理能力はますます強力なものとなり、ＳＳＤが上述した機能のみを実行するために用いられるとしたら、ＳＳＤの中のプロセッサの処理能力を十分に発揮することができない。そこで、ＳＳＤの中のプロセッサの処理能力を十分に使用し、コントローラの負荷を減らすために、圧縮機能及び圧縮解除機能がＳＳＤへ移されてよい。従って、本発明の実施形態では、圧縮機能及び圧縮解除機能のどちらもがＳＳＤにより実施されてよい。以下、本発明の実施形態における記憶システムの構成構造と記憶システムの構成要素に関する諸機能を、図３を参照して詳細に説明する。
【００８６】
図３は、本発明の実施形態に係る記憶システムの概略構造図である。図３の記憶システムは、ホスト（ｈｏｓｔ）３１０、コントローラ３２０及びＳＳＤ３３０を備える。図３から見て取れるように、コントローラ３２０は、ホスト３１０及びＳＳＤ３３０の間に位置付けられ、ブリッジとしてホスト３１０及びＳＳＤ３３０の間のデータ交換を実行する。
【００８７】
具体的には、コントローラ３２０は、中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）（または、計算能力を有する別のチップ、例えば、フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ Ａｒｒａｙ、ＦＰＧＡ））及びキャッシュ（Ｃａｃｈｅ）等の構成要素を有してよい。図３のコントローラ３２０は、ホストから分離されている。しかしながら、本発明の実施形態は、これに限定されるものではない。コントローラ３２０は、独立したハードウェアデバイスであってよく、または、ホスト３１０上で統合されたソフトウェアモジュールであってよい。加えて、コントローラ３２０は、１または複数のＳＳＤに接続されてもよい。
【００８８】
依然として図３を参照すると、ＳＳＤは、フラッシュメモリチップを有してよい（フラッシュメモリチップは、ＳＳＤにおける記憶媒体である）。ＳＳＤ（またはＳＳＤの中のプロセッサ）は、ＳＳＤにおけるブロックを管理するように構成されたブロック管理部を有してよく、ここで、ブロック（ｂｌｏｃｋ）とは、ＳＳＤにおける基本的な消去単位である。例えば、ＳＳＤは、ブロック管理部を用いてＳＳＤにおけるブロックの識別子を整備し、ガベージコレクションの後にブロックを消去し、ＳＳＤにおける不良ブロックを記録及び置換する。ＳＳＤは、ＳＳＤの中のデータのアドレス指定を実行するように構成された物理アドレス変換部への論理アドレスを更に有してよい。ガベージコレクション部は、ＳＳＤにおける無効データにガベージコレクションを実行するように構成され、例えば、あるブロックにおける有効データを別のブロックへ移動する。ウェアレベリング部は、ＳＳＤにおけるブロックの摩耗程度（即ち、書き込み／消去サイクル）ができるだけ均一となるように、ＳＳＤにおけるブロックの書き込み／消去サイクルを制御するように構成される。
【００８９】
更に、ＳＳＤにおける圧縮機能及び圧縮解除機能を実行すべく、圧縮及び圧縮解除部が、ＳＳＤへ加えられてよい。具体的には、コントローラの書き込み要求を受信した場合に、ＳＳＤは、まず、書き込み要求における書き込み予定データを圧縮し、次に、圧縮データをＳＳＤにけるフラッシュメモリチップに書き込む。コントローラの読み出し要求を受信した場合に、ＳＳＤは、ＳＳＤにおけるフラッシュメモリチップからデータを読み出し、そして、読み出したデータを圧縮解除し、圧縮解除データをコントローラへ返してよい。
【００９０】
ＳＳＤでのデータ圧縮は、ＳＳＤの論理容量の変化を伴う。具体的には、ＳＳＤの論理容量が４００ＧＢであるが、このＳＳＤにおいて、受信した４００ＧＢのデータが４：１の圧縮比に従って圧縮され、１００ＧＢの圧縮データが取得されることを、コントローラが把握すると仮定する。この場合、ディスクが依然として３００ＧＢのデータを記憶可能であること、即ち、この場合にディスクが依然として３００ＧＢの論理容量を有することをコントローラが把握できないとすると、ＳＳＤリソースの浪費がもたらされる。以下、問題の原因を説明する。
【００９１】
第１に、より望ましい説明のため、ＳＳＤに関連する３種類の容量、即ち、媒体容量、物理容量及び論理容量がまず説明される。
【００９２】
媒体容量：ＳＳＤにおけるフラッシュメモリチップの合計容量である。例えば、公称で４００ＧＢを有するＳＳＤにおいて、ＳＳＤの中のフラッシュメモリチップの容量は、一般的には４００ＧＢよりも大きく、例えば５１２ＧＢでありうる。即ち、５１２ＧＢの媒体容量のうち、冗長空間とも称される、１１２ＧＢのオーバープロビジョニング（ＯＰ）空間が存在する。オーバープロビジョニング空間は、ＳＳＤの信頼性を向上するために用いられ、一般的にはユーザが用いることはできない。確かに、異なるメーカーがＳＳＤを設計する場合に用いられる冗長性比は異なっており、その結果、ＳＳＤのオーバープロビジョニング空間のサイズもまた変化する。オーバープロビジョニング空間は、不良ブロック置換またはガベージコレクションの間のデータ移行のために用いられてよい。
【００９３】
物理容量：ＳＳＤで利用可能な公称の容量である。それは、ユーザがＳＳＤでデータを記憶するために用いることのできる記憶媒体の容量に等しい。例えば、公称４００ＧＢを有するＳＳＤで、対応する物理容量は４００ＧＢである。データが記憶される前に、ＳＳＤがそのデータを圧縮するか否かに関係なく、ＳＳＤの物理容量は変化しない。
【００９４】
論理容量：ＳＳＤに実際に記憶できるデータの合計容量、即ち、データ記憶に用いることのできるＳＳＤの容量である。ＳＳＤがデータを圧縮しないならば、論理容量は、一般的には、物理容量に等しい。データを記憶する前に、ＳＳＤがそのデータを圧縮する場合、ＳＳＤの論理容量は、ＳＳＤの利用可能な物理空間とＳＳＤに記憶されるデータのうちの非圧縮データ量との和に等しい。従って、論理容量は動的に変化する。例えば、４００ＧＢの物理容量を有するＳＳＤに対して、データサイズが１２００ＧＢであり、そして、当該データが圧縮され、ＳＳＤに実際に記憶される圧縮データのサイズが４００ＧＢであると、ＳＳＤの論理容量は１２００ＧＢである。論理容量は、ディスクに記憶されるデータの圧縮比に関連しており、異なるデータが記憶されると動的に変化する。
【００９５】
理解し易くするために、以下では、一例として、ＳＳＤの論理容量の変化の計算方式を、固定長圧縮及び可変長圧縮を用いて別々に説明する。
【００９６】
ＳＳＤの公称物理容量が４００ＧＢだと仮定すると、ＳＳＤの初期の公称論理容量は４００ＧＢに等しい。一例として、４ＫＢのデータブロックの圧縮ステータスに対して、４ＫＢの圧縮粒度が依然として用いられ、ＳＳＤの論理容量の増加量が、以下のいくつかの方式で計算されてよい。
【００９７】
（１）４ＫＢのデータブロックが０．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−０．５ＫＢ＝３．５ＫＢとなる。
【００９８】
（２）４ＫＢのデータブロックが１ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−１ＫＢ＝３ＫＢとなる。
【００９９】
（３）４ＫＢのデータブロックが１．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−１．５ＫＢ＝２．５ＫＢとなる。
【０１００】
（４）４ＫＢのデータブロックが２ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−２ＫＢ＝２ＫＢとなる。
【０１０１】
（５）４ＫＢのデータブロックが２．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−２．５ＫＢ＝１．５ＫＢとなる。
【０１０２】
（６）４ＫＢのデータブロックが３ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−３ＫＢ＝１ＫＢとなる。
【０１０３】
（７）４ＫＢのデータブロックが３．５ＫＢの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４ＫＢ−３．５ＫＢ＝０．５ＫＢとなる。
【０１０４】
以下、ＳＳＤの論理容量の増加量の計算についての具体例を提供する。
【０１０５】
４Ｍ４ＫＢのデータブロックがあると仮定すると、これらのデータブロックの合計長さは１６ＧＢである。
【０１０６】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ２ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−２ＫＢ）＝２ＧＢとなる。
【０１０７】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ１．５ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−１．５ＫＢ）＝２．５ＧＢとなる。
【０１０８】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ１ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−１ＫＢ）＝３ＧＢとなる。
【０１０９】
これらのデータブロックにおいて合計１Ｍのデータブロックが、それぞれ０．５ＫＢに圧縮されると仮定すると、ＳＳＤの論理容量の増加量は、１Ｍ×（４ＫＢ−０．５ＫＢ）＝３．５ＧＢとなる。
【０１１０】
結論として、合計１６ＧＢのデータが、ＳＳＤに記憶される。圧縮することにより、この１６ＧＢのデータにより実際に占有される物理容量は、２ＧＢ＋１．５ＧＢ＋１ＧＢ＋０．５ＧＢ＝５ＧＢとなる。この場合、ＳＳＤの論理容量の増加量は、２ＧＢ＋２．５ＧＢ＋３ＧＢ＋３．５ＧＢ＝１１ＧＢとなり、論理容量は４１１ＧＢへ変化する。
【０１１１】
可変長圧縮では、４ＫＢのデータブロックの圧縮サイズは、例えば、２７７８Ｂ、１６７８Ｂ、２０１２Ｂ及び１２１２Ｂ等の可変の長さへ圧縮されてよい。４ＫＢのデータブロックの圧縮ステータスに対して、以下に、ＳＳＤの論理容量の増加量の計算方式の一例を提供する。
【０１１２】
（１）４ＫＢのデータブロックが２７７８Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−２７７８Ｂ＝１３１８Ｂとなる。
【０１１３】
（２）４ＫＢのデータブロックが１６７８Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−１６７８Ｂ＝２４１８Ｂとなる。
【０１１４】
（３）４ＫＢのデータブロックが２０１２Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−２０１２Ｂ＝２０８４Ｂとなる。
【０１１５】
（４）４ＫＢのデータブロックが１２１２Ｂの圧縮ブロックに圧縮される：ＳＳＤの論理容量の増加量は、４０９６Ｂ−１２１２Ｂ＝２８８４Ｂとなる。
【０１１６】
上記の説明から、固定長圧縮または可変長圧縮に関係なく、ＳＳＤの論理容量が、データブロックの圧縮ステータスに従って、動的に変化することが理解できる。確かに、データ圧縮に加えて、トリム／アンマップオペレーションが、また、ＳＳＤの論理容量を変化させてよい。トリム／アンマップオペレーションは、以下で詳細に説明される。
【０１１７】
結論として、ＳＳＤの論理容量は、データの圧縮ステータスに従って、動的に変化する。もしコントローラが、ＳＳＤの論理容量の動的な変化を把握できず、かつ、コントローラが論理容量の増加を認識できず、しかしながら、従来技術においてそうであるように、依然としてＳＳＤの論理容量は変化しないと判断するならば、圧縮することで節約した記憶空間を十分に利用することができず、ＳＳＤの記憶空間の浪費がもたらされる。従って、コントローラ及びＳＳＤの間の協働を許容し、ＳＳＤが動的に変化する論理容量を検出・管理してＳＳＤの論理容量の動的な変化をコントローラへ示すことを可能とする一連の解決策をいかに設計するかは、圧縮機能及び圧縮解除機能がＳＳＤへ移される場合に、考慮される必要のある問題である。
【０１１８】
上述の問題を解決すべく、可変長マッピングテーブル管理部３３１及び論理ブロックステータス管理部３３２（図３を参照すると）がＳＳＤへ加えられてよく、ＳＳＤ論理アドレス管理部３２１がコントローラへ加えられてよい。以下、これらのユニットの機能を詳細に説明する。
【０１１９】
可変長マッピングテーブル管理部３３１は、ＳＳＤのマッピングテーブルを管理し整備するように構成されてよい。マッピングテーブルは、ＳＳＤの論理アドレス空間を反映する。マッピングテーブルは、１または複数のエントリ（または、アイテムと称される）を有する。各エントリは、論理アドレス空間における論理アドレス範囲に対応する。マッピングテーブルにおける各エントリに対応する論理アドレス範囲は、マッピングテーブルの基本粒度である。例えば、各エントリが４ＫＢの論理アドレス範囲に対応すると仮定した場合、マッピングテーブルの基本粒度は、４ＫＢである。一般的に、各エントリは１つの論理ブロックに対応する。各エントリに対応する論理アドレス範囲は、論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）と称される。加えて、マッピングテーブルは、ＬＢＡを物理ブロックアドレス（Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＰＢＡ）にマッピングするために用いられてよく、マッピングテーブルに記録されるマッピング関係は、データのアドレス指定を実行するために用いられてよい。本発明の実施形態において、ＳＳＤのマッピングテーブルの長さは、ＳＳＤの論理容量が変化するにつれて、動的に変化してよい。
【０１２０】
更に、ＳＳＤにおける圧縮及び圧縮解除処理は、マッピングテーブルを用いることによりマスクされてよい。具体的には、ＳＳＤのマッピングテーブルは、ＳＳＤの論理アドレス空間におけるデータの記憶ステータスを反映し、占有された論理アドレス空間のサイズは、データの元のサイズ（非圧縮のサイズ）によって決まる。即ち、論理アドレス空間におけるデータ記憶には圧縮現象は存在せず、このことは、マッピングテーブルを用いて、ＳＳＤによるデータの圧縮処理をマスクすることに等しい。
【０１２１】
加えて、マッピングテーブルの基本粒度は、圧縮粒度と一致し続けてよい。マッピングテーブルは、ＳＳＤの中のメモリに位置付けられてよい。
【０１２２】
依然として図３を参照すると、論理ブロックステータス管理部３３２は、ＳＳＤにおける論理ブロックのステータスを管理し整備するように構成されてよい。具体的には、ＳＳＤは３つのステータスの論理ブロック：ブランク論理ブロック（またはブランクブロックと称される）、有効論理ブロック（または有効ブロックと称される）、及び分離論理ブロック（または分離ブロックと称される）、を有してよい。ブランク論理ブロックは、利用可能な論理アドレスを有する論理ブロックを指してよいと理解されるべきである。ブランク論理ブロックの数は、ＳＳＤの残存論理容量を反映してよく、あるいは、ブランク論理ブロックの数は、ＳＳＤの残存する利用可能な空間を反映してもよい。加えて、ブランク論理ブロックの数は、ＳＳＤの論理容量が変化するにつれて、動的に変化してよい。従って、ブランク論理ブロックの数の動的な変化は、ＳＳＤの論理容量の動的な変化の測定基準（メトリック、ｍｅｔｒｉｃ）として用いられてよい。有効論理ブロックとは、その論理アドレスが有効データを記憶する論理ブロックを指してよく、有効データとは、トリムまたはアンマップされないデータを指してよい。分離論理ブロックとは、その論理アドレスが使用不可能な論理ブロックを指してよく、例えば、論理アドレスが無効データにより占有された論理ブロックを指してよい。無効データは、例えば、トリム／アンマップオペレーションにより無効とマークされたデータであってよい。
【０１２３】
具体的には、ＳＳＤのマッピングテーブルは、図４に示される形式を用いて、ＳＳＤの１次元論理アドレス空間を示してよい。図４の正方形のボックスは、マッピングテーブルの基本粒度を表す。基本粒度は、４ＫＢ／８ＫＢ／１６ＫＢ／３２ＫＢ／６４ＫＢなどであってよい。マッピングテーブルで示される１次元論理アドレス空間の長さは、可変であってよく、即ち、動的に増加または減少してよい。加えて、マッピングテーブルは、分離論理ブロックを有してよく、図４における分離論理ブロックは、対角縞により特定される。分離論理ブロックに対応する論理アドレス範囲におけるデータは、無効データであり、分離論理ブロックに対応する論理アドレスを一時的に用いることができない。
【０１２４】
ＳＳＤにおける論理ブロックは、上述の３つのステータスの間を遷移してよい。以下では、図５を参照して、ＳＳＤにおける論理ブロックの状態遷移処理を詳細に説明する。
【０１２５】
最初に、論理ブロックに対応する論理アドレスが未使用の場合、論理ブロックはブランク論理ブロックである。有効データを記憶するためにブランク論理ブロックの論理アドレスが用いられると、ブランク論理ブロックは、有効論理ブロックへ変化する。
【０１２６】
次に、トリム／アンマップオペレーションにより、有効論理ブロックが、分離論理ブロックへ変化してよい（トリム／アンマップオペレーションに関する詳細な説明については、以下のトリム／アンマップ手順を参照されたい）。以下のシナリオを検討する。まず、圧縮比４を有する一群のデータがＳＳＤへ書き込まれ、次に、圧縮不可能な一群のデータがＳＳＤへ書き込まれる。ＳＳＤの物理容量が４００ＧＢだと仮定すると、圧縮比４を有するデータがＳＳＤへ書き込まれる場合、ＳＳＤは、実際には１６００ＧＢのデータを記憶することができる。この場合、ＳＳＤの論理容量は、４００ＧＢから１６００ＧＢへ拡大される。この場合、マッピングテーブルにより反映される論理アドレス空間は、１６００ＧＢである。次に、ＳＳＤのデータが更新され、圧縮不可能な４００ＧＢのデータが、ＳＳＤに記憶される。この場合、ＳＳＤは、実際には４００ＧＢのデータのみを記憶することができる。この場合、ＳＳＤに対応する論理容量は、１６００ＧＢから４００ＧＢへ再び減少する。論理容量が減少する間、論理アドレス空間の一部は確実に無効となり、分離論理ブロックが、論理アドレス空間に生成される。
【０１２７】
次に、ＳＳＤの論理容量が増加するにつれて、分離論理ブロックが、再度、ブランク論理ブロックへ更新されてよい。具体的には、ＳＳＤの論理容量が増加する場合には、ＳＳＤの論理アドレス範囲が増加し、これに応じて、ＳＳＤにおけるブランク論理ブロックの数が増加する。この場合、マッピングテーブルにおける分離論理ブロックをブランク論理ブロックへ更新することが、優先的に考慮されてよい。マッピングテーブルにおける全ての分離論理ブロックがブランク論理ブロックへ更新されると、新しいブランク論理ブロックに対応するエントリが、マッピングテーブルの最後に加えられてよい。即ち、ブランク論理ブロックが加えられる。
【０１２８】
マッピングテーブルは、ＳＳＤの論理アドレスから物理アドレスへのマッピング関係を記録してよい。マッピング関係は、論理ブロックの論理アドレスと物理ブロックの物理アドレスとの間のマッピング関係によって、具体的に反映されてよい。ＳＳＤにおける物理ブロックのサイズは、必要により設定されてよい。例えば、物理ブロックは、１／４物理ページ、１／２物理ページ、１物理ページ、複数の物理ページ、１つのブロック（ｂｌｏｃｋ）、または複数のブロック、を有してよい。論理ブロックから物理ブロックへのマッピング関係とは、複数の論理ブロックが１つの物理ブロックにマッピングされること、即ち、多数対１のマッピング関係であってよい。ＳＳＤが、物理ブロックのサイズに従って、ＳＳＤの物理アドレス範囲を、１または複数の物理ブロックへ分割してよいことが理解されるべきである。図６は、複数の物理ブロックのうちの１つを示す。図６を参照すると、ＳＳＤが固定長圧縮及び可変長圧縮のいずれをサポートするかに関係なく、各論理ブロックが、１つの物理ブロックに対応してよく、複数の圧縮ブロックが、各物理ブロックに記憶されてもよい。
【０１２９】
マッピングテーブルにおけるマッピング情報は、物理ブロックにおける圧縮ブロックの記憶場所を示してよい。マッピング情報についての複数の特定の形が、存在してよい。例えば、マッピング情報は、圧縮ブロックを記憶する物理ページに関する情報（例えば、物理ページの識別子または数）、物理ページ上の圧縮ブロックの開始位置に関する情報、及び圧縮ブロックの長さの情報等の情報、を有してよい。この指定方式において、圧縮ブロックは迅速に位置付けられることができ、アドレス指定効率は高い。オプションで、マッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有してよい。物理ページ上の圧縮ブロックの開始位置、及び圧縮ブロックの長さは、メタデータとして物理ページ上に記憶されてよく、例えば、物理ページのヘッダに記憶されてよい。一般的に、マッピングテーブルはＳＳＤのメモリ空間に記憶されるので、マッピング情報における物理ページ情報のみが記憶されれば、マッピングテーブルの長さは低減され、ＳＳＤのメモリ空間が節約されうる。ＳＳＤが固定長圧縮及び可変長圧縮のいずれをサポートするかに関係なく、１または複数の上述の実装態様が、ＳＳＤにおけるマッピング情報に対して、用いられてよい。このことは、本発明の実施形態において具体的には限定されない。詳細は、具体例を参照して以下で説明される。
【０１３０】
依然として図３を参照すると、コントローラにおけるＳＳＤ論理アドレス管理部３２１は、ＳＳＤの残存論理容量またはＳＳＤの論理容量の変化をモニタリングし、または、問い合わせるように構成されてよい。具体的には、ＳＳＤ論理アドレス管理部３２１は、ＳＳＤにおけるブランク論理ブロックの数をモニタリングし、または、問い合わせることにより、ＳＳＤの論理容量の変化を把握してよい。コントローラは、複数の方法でＳＳＤにおけるブランク論理ブロックの数をモニタリングし、または、問い合わせてよい。以下に、いくつかの任意の解決策を提供する。実際には、以下の解決策のうちの１または複数が選択されてよい。
【０１３１】
解決策１：コントローラが、リアルタイムでＳＳＤにおけるブランク論理ブロックの数を検出する。具体的には、コントローラが、当該コントローラによって記録されるＳＳＤにおけるブランク論理ブロックの数が特定の閾値（例えば、１００）未満だと検出した場合に（ここでの数は、コントローラにより記録される、ＳＳＤにおける残存ブランク論理ブロックの数を指しており、その数は、ＳＳＤにおける実際の残存ブランク論理ブロックの数と等しくなくてもよいことが理解されるべきである）、コントローラは、ＳＳＤからブランク論理ブロックの数を能動的に問い合わせる。例えば、先の問い合わせにおいて、コントローラは、ＳＳＤが５００のブランク論理ブロックを有することを把握する。後続のデータ書き込み処理において、コントローラは、コントローラによって記録されるＳＳＤにおける残存ブランク論理ブロックの数を、更新し続けてよい。コントローラによりＳＳＤに記録される残存ブランク論理ブロックの数が１００未満であるとコントローラが発見する場合に、コントローラは、ＳＳＤから、このＳＳＤにおける残存ブランク論理ブロックの実際の数を、能動的に問い合わせてよい。
【０１３２】
解決策２：コントローラが、トリム／アンマップ領域に対応するデータ量のサイズに従って、ＳＳＤにおけるブランク論理ブロックの数を問い合わせるかどうかを決定する。例えば、コントローラは、トリムまたはアンマップされたデータ量を記録し、トリムまたはアンマップされたデータ量が１ＧＢに到達する毎に、コントローラは、ＳＳＤにおけるブランク論理ブロックの数を能動的に問い合わせる。
【０１３３】
解決策３：コントローラが、ＳＳＤに書き込まれるデータ量に従って、ＳＳＤにおけるブランク論理ブロックの数を問い合わせるかどうかを決定する。例えば、コントローラが１ＧＢのデータ量をＳＳＤに書き込む毎に、コントローラは、ＳＳＤにおけるブランク論理ブロックの数を能動的に問い合わせる。
【０１３４】
解決策４：ＳＳＤが、ブランク論理ブロックの数を能動的にレポートする。例えば、ＳＳＤが、ＳＳＤにおけるブランク論理ブロックの数を周期的にレポートしてよく、あるいは、ブランク論理ブロックの数の変化が閾値を超えた場合に、ＳＳＤが、コントローラへ現在のブランク論理ブロックの数をレポートする。
【０１３５】
以下では、一例として、ＳＳＤにおける圧縮処理の実装態様を、固定長圧縮及び可変長圧縮を用いて別々に詳細に説明する。
【０１３６】
固定長圧縮方式
【０１３７】
最初に、固定長圧縮システムにおける圧縮処理手順が、図７を参照して説明される。図７に示されるように、コントローラを有するシステムが、破線の上方に位置付けられ、１または複数のＳＳＤを有するディスクが、破線の下方に位置付けられる。図７では、説明のため一例として、４ＫＢの圧縮粒度が依然として用いられる。実際には、８ＫＢや１６ＫＢ等の他の圧縮粒度が、また、用いられてよく、圧縮粒度は、本発明の実施形態において具体的には限定されない。
【０１３８】
具体的には、コントローラは、まず、ホストから、ディスクに記憶される必要のあるデータを受信してよく、次に、そのデータに重複排除を実行してよい（即ち、重複データを削除する。具体的な重複排除方式については、従来技術を参照のこと）。次に、コントローラは、重複排除データを圧縮せずに、当該重複排除データをＳＳＤへ直接送信し、ＳＳＤが圧縮処理を実行する。ＳＳＤは、４ＫＢを単位として用いてデータを圧縮する。圧縮データのサイズは、データの圧縮比により変動する。ＳＳＤが固定長圧縮方式を用いるため、上方アライメントオペレーションが圧縮データに実行される必要があり、その結果、圧縮データの長さは、０．５ＫＢの整数倍となる。例えば、圧縮データのサイズが０．５ＫＢと１ＫＢの間である場合、上方アライメントの原理に従って、圧縮データは１ＫＢになるように充填される必要があり、１ＫＢの圧縮ブロックが取得される。
【０１３９】
次に、圧縮ブロックは、ＳＳＤの物理アドレスへ書き込まれる必要がある。ＳＳＤが、基本の読み出しまたは書き込み単位として、一般的に物理ページを用いることが理解されるべきである。物理ページのサイズは、ＳＳＤの種類に関連するが、本発明の実施形態において具体的には限定されない。本発明の実施形態において、４ＫＢの物理ページが、説明のための一例として用いられる。データが物理ページに書き込まれる前に、圧縮ブロックが、４ＫＢを単位として用いることで丸め処理されて（または再グループ化されて）よく、４ＫＢサイズへ丸め処理された圧縮ブロックを取得する。このように、丸め処理された一群の圧縮ブロックが、一度に４ＫＢの物理ページに簡便に書き込まれてよい。図８は、圧縮ブロックの丸め処理のいくつかの方式を提供する。以下では、複数の圧縮ブロックを１つの物理ページへ丸め処理するいくつかの任意の実装態様を更に提供する。
【０１４０】
２つの圧縮ブロックが１つの物理ページへ丸められる：（０．５ＫＢ、３．５ＫＢ）、（１ＫＢ、３ＫＢ）、（１．５ＫＢ、２．５ＫＢ）、（２ＫＢ、２ＫＢ）。
【０１４１】
３つの圧縮ブロックが１つの物理ページへ丸められる：（１ＫＢ、１ＫＢ、２ＫＢ）、（０．５ＫＢ、１．５ＫＢ、２ＫＢ）（０．５ＫＢ、１ＫＢ、２．５ＫＢ）、（０．５ＫＢ、０．５ＫＢ、３ＫＢ）。
【０１４２】
４つの圧縮ブロックが１つの物理ページへ丸められる：（０．５ＫＢ、０．５ＫＢ、１．５ＫＢ、１．５ＫＢ）、（０．５ＫＢ、１ＫＢ、０．５ＫＢ、２ＫＢ）、（０．５ＫＢ、１．５ＫＢ、１ＫＢ、１ＫＢ）、（０．５ＫＢ、２．５ＫＢ、０．５ＫＢ、０．５ＫＢ）。
【０１４３】
コントローラから受信したデータに対して、ＳＳＤは、ある圧縮粒度でデータを整列及び圧縮する必要があるだけでなく、ＳＳＤにおけるデータの論理アドレスをそのデータに割り当てて、そのデータの論理アドレスと物理アドレスとの間のマッピング関係を記録する必要がある。
【０１４４】
具体的には、図９を参照すると、マッピング情報が、マッピングテーブルのエントリに記録されてよく、ＳＳＤは、データのアドレスを指定すべく、マッピング情報を用いることにより、論理アドレスを、当該データの物理アドレスへ直接変換してよい。マッピング情報は、物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有してよい。
【０１４５】
物理ページに関する情報とは、物理ページの数であってよいことに注意すべきである。物理ページは、グローバルに固有な数を有してよく、または、物理ブロックがグローバルに固有な数を有してもよいが、物理ページの数は、その物理ブロックにおいて固有である。
【０１４６】
マッピングテーブルのエントリに記録されるマッピング情報が、４ＫＢの物理ページに対して上述の３種類の情報を有する場合には、５１２ＧＢの媒体容量を有するＳＳＤは、１ピースのマッピング情報の要素を記録するために、ほぼ３４ビット（ｂｉｔ）を必要とする。具体的な解析は以下である。
【０１４７】
４ＫＢの物理ページに対し、５１２ＧＢは１２８Ｍ４ＫＢに対応するので、ほぼ２８ビットが、その４ＫＢの物理ページのアドレス指定に必要とされる。
【０１４８】
物理ページ上の圧縮ブロックの開始アドレスに対して、固定長圧縮方式での０．５ＫＢに従って、境界アライメントが圧縮ブロックの開始アドレスに実行されるので、物理ページ上の圧縮ブロックの開始アドレスに関して８つの可能性がある。即ち、開始アドレスは０、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、２．５ＫＢ、３ＫＢ及び３．５ＫＢに対応する。この場合、物理ページ上の圧縮ブロックの開始アドレスに関する全ての可能性は、３ビットを用いて示すことができる。
【０１４９】
圧縮ブロックの長さに対し、全ての圧縮ブロックは０．５ＫＢの整数倍であるので、圧縮ブロックの長さに関して８つの可能性、即ち、０．５ＫＢ、１ＫＢ、１．５ＫＢ、２ＫＢ、２．５ＫＢ、３ＫＢ、３．５ＫＢ及び４ＫＢ、がある。従って、圧縮ブロックの長さに関する全ての可能性は、３ビットを用いて示すことができる。
【０１５０】
上記の説明から、１つの圧縮ブロック（例えば、０．５ＫＢまたは１．５ＫＢの１つの圧縮ブロック）を配置するために、ほぼ３４ビットのマッピング情報が必要とされることが理解できる。１ピースのマッピング情報により必要とされるビット数は、ＳＳＤの容量、及び／又は、圧縮粒度に従って変動することに注意すべきである。このことは、本発明の実施形態において具体的には限定されない。
【０１５１】
可変長圧縮の実装態様
【０１５２】
可変長圧縮において、上方アライメントオペレーションが圧縮データに対して実行される必要がない。圧縮ブロックのサイズは同一に保たれてよく、かつ、上方アライメントされない。依然として４ＫＢが一例として用いられ、４ＫＢのデータブロックの圧縮データサイズが、２７７８Ｂ及び３６００Ｂであると仮定すると、圧縮ブロックの長さは、２７７８Ｂ及び３６００Ｂに保たれてよい。
【０１５３】
図１０を参照すると、物理ページの長さが１６ＫＢであると仮定すると、可変長圧縮によって取得される異なるサイズの圧縮ブロックが、次に完全な圧縮ブロックを配置することが不可能となるまで、物理ページ上に、順に、配置されてよい。使用することができない部分的な記憶空間が、物理ページの最後に存在してよい。部分的な記憶空間は、１つの完全な圧縮ブロックを含むには小さすぎる。使用することができない部分的な記憶空間はフラグメント（ｆｒａｇｍｅｎｔ）と称されてよく、フラグメントは、有効データを記憶できない。
【０１５４】
マッピングテーブルの基本粒度が４ＫＢであり、物理ぺージのサイズが１６ＫＢであると仮定した場合に、４ＫＢのデータブロックの論理アドレスと物理アドレスとの間のマッピング関係は、以下の３つの解決策のうちの１つのいずれかを用いることにより、ＳＳＤに記録されてよい。
【０１５５】
解決策１：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有する。物理ページのヘッダがメタデータを記憶し、メタデータが、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さを示す。圧縮ブロックが読み出されることになっている場合、マッピングテーブルに記憶されるマッピング情報に従って、対応する物理ページがまず見つけられ、次に、物理ページ上のデータが全体として読み出されてよい。そして、物理ページ上の圧縮ブロックの開始アドレス及び長さに対して、物理ページのヘッダ情報が検索される。具体的には、物理ページのヘッダ情報は、複数の圧縮ブロックのメタデータを記憶してよい。圧縮ブロックのメタデータの検索を助けるべく、４ＫＢのデータブロックのＬＢＡとメタデータとの間の対応が、物理ページのヘッダ情報の中に確立されてよい。この場合、ＳＳＤは、データブロックのＬＢＡに従って、圧縮ブロックに対応するメタデータを検索することができる。
【０１５６】
解決策２：解決策１と同様に、解決策２では、圧縮ブロックの物理ページに関する情報がマッピングテーブルに記憶され、圧縮ブロックのメタデータが物理ページ上に記憶される。マッピングテーブルが、圧縮ブロックの物理ページに関する情報を記憶するだけでなく、インデックス情報も記憶するという点で、違いがある。インデックス情報は、物理ページ上に記憶される一連の全ての圧縮ブロックにおける圧縮ブロックの位置を記述してよい。このように、物理ページのメタデータを検索する場合に、ＳＳＤは、解決策１で行うように複雑なＬＢＡを検索することによって圧縮ブロックのメタデータを位置付ける必要がなく、インデックス情報に従ってメタデータを位置づければよいので、これにより、メタデータのデータ量を低減し、物理ページの記憶空間を節約する。
【０１５７】
解決策３：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有する。この解決策では、メタデータは物理ページ上に記憶される必要がなく、その結果、物理ページの実装態様が簡易化される。加えて、マッピング情報に従ってメタデータを検索する処理が省略され、これにより、物理アドレスのアドレス指定の効率を改善する。
【０１５８】
以下、図１１を参照して上述の解決策１を詳細に説明する。図１１を参照すると、１つの物理ページが３つの領域へ分割される。上端領域は、物理ページのヘッダ領域であり、ヘッダ情報の記憶に用いられる。中央領域は、データ記憶領域であり、複数の圧縮ブロックを記憶する。下端領域は、フラグメント領域である。これらの領域は、以下で、別々に説明される。
【０１５９】
１．ヘッダ領域
【０１６０】
ヘッダ情報が、物理ページのヘッダ領域に記憶される。ヘッダ情報は、物理ページ上に記憶される圧縮ブロックのメタデータを有する。メタデータのフォーマットは、ＬＢＡ＋物理ページの開始アドレス＋圧縮ブロックの長さ、であってよい。確かに、インデックス情報がマッピングテーブルにすでに存在する場合には、メタデータのフォーマットは、インデックス情報＋物理ページの開始アドレス＋圧縮ブロックの長さ、であってよい。加えて、マッピング情報はまた、ＳＳＤのオーバープロビジョニング空間に記憶されてよく、その結果、物理ページの記憶空間を節約できる。
【０１６１】
２．データ記憶領域
【０１６２】
データ記憶領域は、圧縮ブロックを記憶するために用いられる。物理ページ上に、複数の圧縮ブロックが、コンパクトに一緒に記憶されてよい。
【０１６３】
３．フラグメント領域
【０１６４】
フラグメント領域は、未使用の記憶領域であり、１つの完全な圧縮ブロックを記憶するには短すぎ、従って、余りとして扱うしかない。
【０１６５】
上述では、固定長圧縮及び可変長圧縮の実装態様を説明した。図１２を参照して、以下、ＳＳＤにおいてデータ圧縮を実行する間の書き込み要求処理手順を詳細に説明する。
【０１６６】
図１２は、本発明の実施形態に係る書き込み要求を処理するフローチャートである。図１２に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１２において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１２における段階は、図１２に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１２のオペレーションの全てが実行されることになっている必要はない。
【０１６７】
１２０２．ホストが、書き込み要求をコントローラへ送信する。
【０１６８】
具体的には、書き込み要求は、以下の情報を有してよい：ＬＵＮ_ＩＤ＋ＬＢＡ＋ＬＥＮ＋ＤＡＴＡＤＡＴＡは、書き込み予定データを示す。ＬＵＮ_ＩＤは、論理ユニット番号（Ｌｏｇｉｃａｌ Ｕｎｉｔ  Ｎｕｍｂｅｒ、ＬＵＮ）の数を示す。ここで、ＬＢＡは、ＳＳＤの論理アドレスではなく、ＬＵＮ上のＤＡＴＡの論理アドレスを示す。ＬＵＮの論理アドレスとは、一般的には、ホストへ示されるディスクアレイのＬＢＡを指す。ＬＥＮは、データ長さを示し、ＤＡＴＡは、書き込み予定データである。システムで定義されるＬＢＡ及びＬＥＮは、一般的に、１セクタ当たりを基準としており、セクタのサイズは、一般的に、０．５ＫＢであることが理解されるべきである。ＬＥＮが１０と仮定すると、ＤＡＴＡの長さは、１０×０．５ＫＢ＝５ＫＢとなることが理解されてよい。確かに、各セクタは、他のサイズやフォーマットを更に有してもよい。このことは、本発明の実施形態において具体的には限定されない。ここでは、０．５ＫＢのセクタサイズが、説明のための一例として用いられる
【０１６９】
１２０４．コントローラは、書き込み予定データに境界アライメント処理を実行し、境界アライメント処理後に取得されたデータを、固定されたサイズに従い、パーティション化する。これは、任意選択の段階である。
【０１７０】
コントローラによるＤＡＴＡに対する境界アライメント処理は、後続のデータのパーティション化を容易にし、その結果、コントローラは、固定サイズに従ってデータをパーティション化する場合に、整数個のパーティション化されたデータブロックを取得することができる。
【０１７１】
コントローラは、複数の方法で、データをパーティション化してよい。以下で、２つの任意のパーティション化の方式を提供する。
【０１７２】
パーティション化方式１：コントローラは、パーティション化された各データブロックが、圧縮可能なユニットとなるように、ＳＳＤの圧縮粒度に従って、パーティション化を実行する。例えば、ＳＳＤの圧縮粒度が４ＫＢであり、書き込み予定データのＬＥＮが１０（つまり、５ＫＢ）だと仮定する。この場合、コントローラは、まず、５ＫＢのデータに対して境界アライメント処理を実行して８ＫＢのデータを取得し、次に、４ＫＢの粒度で８ＫＢのデータをパーティション化し、２つの４ＫＢのデータブロックを取得する。５ＫＢのデータに対するコントローラによる境界処理の実行の方式とは、例えば、コントローラがＳＳＤから３ＫＢのデータを読み出し、当該データと５ＫＢのデータとを丸め処理して、８ＫＢのデータを取得する、というものであってよい。
【０１７３】
パーティション化方式２：コントローラは、ＳＳＤによって一度に処理可能な書き込み予定データの最大単位に基づいて、パーティション化を実行する。例えば、ＳＳＤによって一度に処理可能な書き込み予定データの最大単位が１２８ＫＢであるならば、ここでは、パーティション化は１２８ＫＢに従って実行されてよい。このような処理方式は、コントローラのオペレーションを簡単にする。続いて、ＳＳＤは、圧縮粒度に従って、１２８ＫＢのデータをパーティション化し続ける。例えば、ＳＳＤのプロセッサは、１２８ＫＢのデータを、３２個の４ＫＢのデータブロックへパーティション化する。
【０１７４】
データがパーティション化された後、コントローラは、パーティション化されたデータブロックを１つの単位（ユニット）として用いることで、ＳＳＤへ書き込み要求を送信してもよいことに注意すべきである。この場合、パーティション化された各データブロックにおけるＬＵＮ_ＩＤ＋ＬＢＡ＋ＬＥＮ＋ＤＡＴＡ等のパラメータは、パーティション化の前の完全なデータにおけるＬＵＮ_ＩＤ＋ＬＢＡ＋ＬＥＮ＋ＤＡＴＡ等のパラメータに基づいて、決定されてよい。
【０１７５】
１２０６．コントローラは、パーティション化されたデータブロックを記憶するためのＳＳＤをディスクアレイから選択する。
【０１７６】
コントローラは、複数のポリシーに従ってＳＳＤを選択してよく、例えば、複数のＳＳＤの間のウェアレベリング、フォールトトレランス処理、及び冗長性関係等に基づいて適切なＳＳＤを選択してよい。ＳＳＤの選択の間、ＳＳＤに十分なブランク論理ブロックが存在することがまず保証される必要があることに注意すべきである。ディスクアレイの中のＳＳＤにおけるブランク論理ブロックの数は、ＳＳＤの論理容量が変化するにつれて、動的に変化する。コントローラは、ＳＳＤにおけるブランク論理ブロックの数を、上述のブランク論理ブロック問い合わせ解決策に従って、問い合わせてよい。
【０１７７】
１２０８．コントローラは、パーティション化された各データブロックに対応する書き込み要求をＳＳＤへ送信してよい。
【０１７８】
書き込み要求は、パーティション化されたデータブロックのＬＥＮ＋ＤＡＴＡ情報を保持してよい。ＬＥＮは、書き込み要求におけるデータの長さを示し、ＤＡＴＡは、書き込み要求におけるデータコンテンツ（またはデータそのものとして参照され、即ち、データブロック）を示す。ここで、書き込まれる必要のある、書き込み要求におけるデータのＳＳＤでの位置が特定さなくてもよいことが理解されるべきである。即ち、ＳＳＤにおけるデータの実際の記憶場所は、ＳＳＤ自身により決定されてよい。
【０１７９】
１２１０．ＳＳＤが、書き込み要求におけるデータにパーティション化処理を実行する。
【０１８０】
段階１２１０は、任意選択の段階であることが理解されるべきである。段階１２０４において、圧縮粒度に従って、コントローラがデータをパーティション化する場合、ＳＳＤにより受信された書き込み要求におけるデータのサイズは、基本圧縮単位であり、その結果、パーティション化が再度実行される必要はなく、後続のオペレーションは直接実行されてよい。段階１２０４において、コントローラが、Ｎ倍の圧縮粒度に従って、データをパーティション化する場合、ＳＳＤにより受信された書き込み要求におけるデータのサイズは、圧縮粒度のＮ倍となり、そのデータは、段階１２１０において、圧縮粒度に従って、Ｎ個のデータブロックへパーティション化されてよい。特殊な場合として、ＳＳＤにより受信されるデータブロックのサイズが圧縮単位の整数倍ではない場合、ＳＳＤは、まず、データブロックに充填を行って圧縮単位の整数倍とし、次に、その圧縮単位のサイズに従って、パーティション化を実行してよい。
【０１８１】
１２１２．ＳＳＤが、ブランク論理ブロックをパーティション化されたデータブロックへ割り当てる。
【０１８２】
ＳＳＤは、ＳＳＤにおける論理ブロックのステータスを問い合わせ、データブロックを記憶するためのブランク論理ブロックを選択してよい。ブランク論理ブロックは、複数の方法で選択されてよい。例えば、ブランク論理ブロックはＳＳＤからランダムに選択されてよく、あるいは、前方に論理アドレスを有するブランク論理ブロックが、マッピングテーブルにおける一連のブランク論理ブロックに従って、優先的に選択されてよい。このことは、本発明の実施形態において具体的には限定されない。
【０１８３】
論理ブロックのステータスは、ビットマップにより示されてよい。ビットマップは、ＳＳＤのメモリに記憶されてよい。データブロックがブランク論理ブロックに記憶された後、ブランク論理ブロックの状態が変化してよく、その結果、ブランク論理ブロックは、有効論理ブロックへ変化する。
【０１８４】
１２１４．ＳＳＤが、パーティション化されたデータブロックを圧縮し、圧縮ブロックをＳＳＤへ書き込み、マッピングテーブルにマッピング情報を記録する。
【０１８５】
段階１２１４を実行する方式は、固定長圧縮をサポートするＳＳＤ及び可変長圧縮をサポートするＳＳＤにより異なってよく、以下、図１３及び図１４を参照して、別々に説明される。
【０１８６】
１２１６．ＳＳＤが、論理容量の変化に従って、論理ブロックのステータスを調整する。
【０１８７】
具体的には、論理容量が、１つの論理ブロックのサイズにより増加する毎に、１つの分離論理ブロックがブランク論理ブロックへ変換される。分離論理ブロックは、ＳＳＤにおける全ての分離ブロックからランダムに選択された分離論理ブロックであってよく、あるいは、分離論理ブロックは、ＳＳＤにおける全ての分離ブロックの前方に論理アドレスを有する分離論理ブロックであってよい。ＳＳＤに分離論理ブロックが存在しない場合には、ブランク論理ブロックに対応するエントリが、マッピングテーブルの最後に加えられてよい。これは、ＳＳＤにブランク論理ブロックを追加することに等しい。
【０１８８】
論理ブロックのステータスの調整が完了した後、ＳＳＤの残存論理容量を示すべく、ＳＳＤにおける現在のブランク論理ブロックの数が、コントローラへ送信されてよい。例えば、現在、ＳＳＤが１０００のブランク論理ブロックを有すると仮定する（各ブランク論理ブロックは４ＫＢの実際の物理空間に対応し、合計で１０００×４ＫＢの実際に利用可能な論理空間がある）。ＳＳＤに含まれるブランク論理ブロックの数をコントローラが問い合わせると、ＳＳＤは、問い合わせ結果をコントローラへ返す。現在は１０００個のブランク論理ブロックがある。従って、コントローラは、ＳＳＤへ１０００個の４ＫＢのデータブロックを書き込んでよい。コントローラによりＳＳＤへ書き込まれた１０００個のデータブロックのうちの５００個が、それぞれ２ＫＢへ圧縮可能であり、かつ、他の５００個のデータブロックが、それぞれ１ＫＢへと圧縮可能であると仮定する。元々は、これらのデータブロックを記憶するためには、１０００個のブランク論理ブロックが消費される必要がある。現在は、圧縮のおかげで、（５００×２＋５００×１）／４＝３７５個のブランク論理ブロックのみが消費される。即ち、３７５個のブランク論理ブロックのみが、１０００個の４ＫＢのデータブロックを記憶するために消費される。そして、コントローラが、利用可能なブランク論理ブロックの数を再度問い合わせた場合に、ＳＳＤは、問い合わせ結果を返す。現在、１０００−３７５＝６２５個のブランク論理ブロックが利用可能である。
【０１８９】
１２１８．ＳＳＤが、書き込み要求に対する応答メッセージをコントローラへ送信する。
【０１９０】
書き込み要求におけるデータブロックがＳＳＤに書き込まれた後に、ＳＳＤが、応答メッセージをコントローラへ送信する。ＳＳＤにおけるデータブロックの論理アドレス、例えばＬＢＡは、応答メッセージで保持されてよい。応答メッセージの具体的な形式は、段階１２０４で説明されたパーティション化の方式に関連する。
【０１９１】
段階１２０４において、コントローラが、圧縮粒度に従って、データをパーティション化する場合に、ＳＳＤは、そのデータを更にパーティション化する必要はなく、ＳＳＤは、論理アドレスを書き込み要求におけるデータへ直接的に割り当てて、かつ、そのデータに対して圧縮及び記憶オペレーションを実行してよい。上述の書き込み要求に対する応答メッセージは、標準的な書き込み完了コマンドであってよく、データブロックに対応する１つのＬＢＡのみを保持する必要がある。
【０１９２】
段階１２０４において、コントローラが、より大きな圧縮粒度に従ってデータをパーティション化する場合には、段階１２１８における応答メッセージは、複数のパーティション化されたデータブロックに対応する複数のＬＢＡを保持する必要がある。この場合、新たな書き込完了コマンドが定義されてよい。新たな書き込完了コマンドのデータ量は、標準的な書き込み完了コマンドのデータ量よりも大きい必要がある。例えば、標準的な書き込み完了コマンドが１６バイトである場合に、新たに定義された書き込み完了コマンドは、より多くのＬＢＡを含むべく、３２／６４／１２８バイトであってよい。複数のＬＢＡが、書き込み完了コマンドと共に戻される必要がある場合には、書き込み完了コマンドにおける一連の複数のＬＢＡは、複数のＬＢＡに対応する一連のデータブロックと一致し続けてよいことに注意すべきである。このように、複数のＬＢＡにそれぞれ対応するデータのＬＢＡを示すために、さらなるバイトを消費する必要がない。
【０１９３】
１２２０．コントローラが、ディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を確立する。
【０１９４】
コントローラは、段階１２０２でホストによって送信された書き込み要求を受信する。書き込み要求は、ディスクアレイのＬＵＮ_ＩＤ及びＬＢＡを保持する。段階１２１８でコントローラに受信される書き込み完了コマンドは、ＳＳＤのＬＢＡを有する。コントローラは、ディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を確立する。
【０１９５】
例えば、ストレージコントローラは、段階１２０２で受信した書き込み要求に従って、開始位置ＬＢＡ＝０から、ＬＵＮ_ＩＤが０のＬＵＮデバイスに、２つの４ＫＢのデータブロックを続けて書き込む。システムで定義されるＬＢＡ及びＬＥＮは、概して、１セクタ当たりを基準とし、セクタサイズは、一般的に０．５ＫＢであるので、４ＫＢのデータブロックのＬＥＮは８である。このようにディスクアレイの第１のデータブロックの論理アドレスは、（ＬＵＮ_ＩＤ＝０、ＬＢＡ＝０、ＬＥＮ＝８）により示されてよく、ディスクアレイにおける第２のデータブロックの論理アドレスは、（ＬＵＮ_ＩＤ＝０、ＬＢＡ＝８、ＬＥＮ＝８）により示されてよい。第１のデータブロックが、ＩＤが２のＳＳＤにおける第２の論理ブロックに書き込まれ、第２のデータブロックが、ＩＤが３のＳＳＤにおける第３の論理ブロックに書き込まれると仮定すると、ＳＳＤにおける第１のデータブロックの論理アドレスは、（ＳＳＤ_ＩＤ＝２、ＬＢＡ＝８、ＬＥＮ＝８）により示され、ＳＳＤにおける第２のデータブロックの論理アドレスは、（ＳＳＤ_ＩＤ＝３、ＬＢＡ＝１６、ＬＥＮ＝８）により示されてよい。この場合、コントローラは、以下のテーブルに示されるマッピング関係を確立してよい。
【表１】
2019519047.tif 000024
【０１９６】
コントローラは、後続のデータ読み出しを容易にすべく、ディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を記録してよい。具体的には、これまでにＳＳＤへ書き込まれたデータをホストが読み出す必要がある場合に、コントローラは、ホストの読み出し要求を、記録されたマッピング関係テーブルに基づいてＳＳＤに対する読み出し要求へ変換し、対応するデータをホストへ返す。例えば、ホストは、ＬＵＮ_ＩＤが０である、即ち、先述の表の第２行の、第２のピースの４ＫＢデータを読み出す必要がある。先述の表に示されるマッピング関係に基づいて、コントローラは、ＩＤが３であるＳＳＤに記憶されるデータのＬＢＡ１６の位置を見つける。次に、コントローラは、ＩＤが３であるＳＳＤへ読み出し要求を送信し、ＬＢＡ１６の位置にあるデータを読み出し、その読み出したデータをホストへ返してよい。
【０１９７】
１２２２．コントローラが、書き込み要求コマンド実行成功メッセージをホストへ送信する。
【０１９８】
図１３は、固定長圧縮における段階１２１４の実装態様の概略フローチャートである。図１３に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１３において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１３における段階は、図１３に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１３のオペレーションの全てが実行されることになっている必要はない。
【０１９９】
１３０２．データブロックを圧縮し、上方アライメントオペレーションを実行する。
【０２００】
例えば、データブロックの圧縮粒度は４ＫＢである。固定長圧縮では、０．５ＫＢの整数倍に圧縮されるべきデータが必要である。データブロックが圧縮された後、圧縮データが１．５ＫＢから２ＫＢの間である場合には、２ＫＢの圧縮ブロックを取得すべく、上方アライメントオペレーションが実行される。
【０２０１】
１３０４．複数の圧縮ブロックを１つの物理ページへ結合する。
【０２０２】
圧縮ブロックを丸め処理する方式は、上記で詳細に説明されている。詳細は図８を参照し、ここでは再度説明しない。固定長圧縮により、１つの物理ページに複数の圧縮ブロックがフィリングされてよく、フラグメントは生成されない。
【０２０３】
１３０６．丸め処理された圧縮ブロックをＳＳＤの媒体へ書き込む。
【０２０４】
例えば、複数の圧縮ブロックが、１つの完全な物理ページへ丸め処理された後に、複数の圧縮ブロックが、ＳＳＤの媒体へ書き込まれる。書き込み成功の後、マッピングテーブルにおける圧縮ブロックのマッピング情報が更新され、論理アドレスに対応する物理アドレスがマッピングテーブルに記録される。本発明の実施形態がこれに限定されるものではなく、全ての処理される圧縮ブロックが、また、一度に、ＳＳＤの媒体に書き込まれてよいことに注意すべきである。
【０２０５】
１３０８．論理容量の変化を計算する。
【０２０６】
例えば、論理容量の変化は１つのデータブロックが圧縮される毎に計算されてよく、あるいは、論理容量の変化は全てのデータが圧縮された後に計算されてもよい。本発明の実施形態は、これに具体的に限定されるものではない。論理容量の変化の計算の特定の態様は、上記で詳細に説明されており、ここでは再び説明しない。
【０２０７】
図１４は、可変長圧縮における段階１２１４の実装態様の概略フローチャートである。図１４に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１４において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１４における段階は、図１４に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１４のオペレーションの全てが実行される必要はない。
【０２０８】
１４０２．データブロックを圧縮して圧縮ブロックを取得する。
【０２０９】
可変長圧縮のおかげで、ここではデータに対して上方アライメントオペレーションを実行する必要がなく、圧縮ブロックのサイズは同一に保持される。
【０２１０】
１４０４．複数の圧縮ブロックを１つの物理ページへ結合する。
【０２１１】
例えば、可変長の圧縮ブロックは、１つの物理ページへ、全て丸め処理されてよい。１つの完全な圧縮ブロックを更に含むことができない最後の残存領域は、フラグメントとして役目を果たしてよく、有効データを記憶しない。
【０２１２】
１４０６．丸め処理された圧縮ブロックを、解決策１の方式で、ＳＳＤの媒体へ書き込む。
【０２１３】
解決策１：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有する。物理ページのヘッダがメタデータを記憶し、メタデータが、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さを示す。圧縮ブロックが読み出されることになっている場合、マッピングテーブルに記憶されるマッピング情報に従って、対応する物理ページがまず確認され、次に、物理ページ上のデータが、全体として読み出されてよい。そして、物理ページ上の圧縮ブロックの開始アドレス及び長さを求めて、物理ページのヘッダ情報が検索される。具体的には、物理ページのヘッダ情報は、複数の圧縮ブロックのメタデータを記憶してよい。圧縮ブロックのメタデータの検索を助けるべく、４ＫＢのデータブロックのＬＢＡとメタデータとの間の対応が、物理ページのヘッダ情報の中で確立されてよい。この場合、ＳＳＤは、データブロックのＬＢＡに従って、圧縮ブロックに対応するメタデータを検索することができる。
【０２１４】
１４０８．丸め処理された圧縮ブロックを、解決策２の方式で、ＳＳＤの媒体へ書き込む。
【０２１５】
解決策２：解決策１と同様に、解決策２では、圧縮ブロックの物理ページに関する情報がマッピングテーブルに記憶され、圧縮ブロックのメタデータが物理ページ上に記憶される。    マッピングテーブルが、圧縮ブロックの物理ページに関する情報を記憶するだけでなく、インデックス情報も記憶するという点で違いがあり、ここで、インデックス情報は、物理ページ上に記憶される一連の全ての圧縮ブロックにおける圧縮ブロックの位置を記述してよい。このように、物理ページのメタデータを検索する場合に、ＳＳＤは、解決策１で行うように複雑なＬＢＡを検索することによって圧縮ブロックのメタデータを位置付ける必要がなく、インデックス情報に従ってメタデータを位置づける必要があるので、これにより、メタデータのデータ量を低減し、物理ページの記憶空間を節約する。
【０２１６】
１４１０．丸め処理された圧縮ブロックを、解決策３の方式で、ＳＳＤの媒体へ書き込む。
【０２１７】
解決策３：マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有する。この解決策では、メタデータは、物理ページ上に記憶される必要がなく、その結果、物理ページの実装態様が簡易化される。加えて、マッピング情報に従ってメタデータを検索する処理が省略され、これにより、物理アドレスのアドレス指定の効率を改善する。
【０２１８】
実際には、段階１４０６から段階１４１０のうちの１つの段階のみが実行される必要があることが理解されるべきである。
【０２１９】
１４１２．論理容量の変化を計算する。
【０２２０】
例えば、論理容量の変化が、１つのデータブロックが圧縮される毎に計算されてよく、あるいは、論理容量の変化は全てのデータが圧縮された後に計算されてもよい。本発明の実施形態がこれに具体的に限定されるものではない。論理容量の変化の計算の特定の態様は、上記で詳細に説明されており、ここでは再び説明しない。
【０２２１】
上述では、図５を参照して３つの状態の間の論理ブロックの遷移を詳細に説明した。ここで、分離論理ブロックは、トリム／アンマップコマンドをトリガすることで生成される。以下、図１５を参照して、トリム／アンマップに関連する処理手順を詳細に説明する。
【０２２２】
図１５は、本発明の実施形態に係るトリム／アンマップ手順の一例の図である。図１５に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１５において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１５における段階は、図１５に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１５のオペレーションの全てが実行されることになっている必要はない。
【０２２３】
理解し易くするために、まず、トリム／アンマップオペレーションの処理が、簡潔に説明される。
【０２２４】
一般的に、ホストが、ディスクからあるデータを削除する必要がある場合、コントローラは、トリム／アンマップコマンドをＳＳＤへ送信し、まず、そのデータを無効データとしてマークする。ＳＳＤの機能により、無効データにより一時的に占有された物理ブロックは、新しいデータが書き込まれることができず（即ち、上書きできない）、その無効データが位置付けられた物理ブロックが、ガベージコレクションメカニズムを用いて消去された後でのみ、新しいデータを記憶し続けることができる。
【０２２５】
コントローラが、論理アドレス範囲をトリムまたはアンマップする場合に、論理アドレス範囲に対応する論理ブロックは、有効論理ブロックから分離論理ブロックへ変化してよい。ＳＳＤのトリム／アンマップオペレーションを容易にすべく、トリム／アンマップコマンドにおける論理アドレス範囲は、論理ブロックの倍数に従って選択されてよい。
【０２２６】
トリム／アンマップは、ＳＳＤの論理容量の減少量及びＳＳＤの利用可能な論理容量の増加量を伴う。具体的には、トリム／アンマップコマンドが指示される論理アドレス範囲は、無効とマークされてよく、この場合、論理アドレス範囲に対応する容量は、ＳＳＤの論理容量から除去される必要がある。加えて、論理アドレス範囲に対応する物理空間は、直ちには利用することができない。なぜならば、トリム／アンマップオペレーションは、物理空間におけるデータを無効としてマークするだけであり、その物理空間は、ガベージコレクションメカニズムを用いてリリースされる必要があるからである。しかしながら、オーバープロビジョニング空間が存在するので、物理空間に対応する論理容量の増加が、直ちに反映されることが可能である。詳細は、図１５の段階を参照して、以下で説明される。
【０２２７】
１５０２．コントローラが、トリム／アンマップコマンドをＳＳＤへ送信する。
【０２２８】
概して、コントローラは、ホストが送信するトリム／アンマップコマンドをまず受信する。ここで、コマンドは、データセグメントを無効データとしてマークするように命令するために用いられる。コントローラは、ＳＳＤにおけるデータセグメントの論理アドレス範囲を見つけ、次に、トリム／アンマップコマンドをＳＳＤへ送信し、ＳＳＤに対し、論理アドレス範囲にあるデータを無効データとしてマークするか、または、当該アドレス範囲におけるデータの論理アドレスと物理アドレスとの間のマッピング関係をキャンセルするように命令する。コントローラがＳＳＤへ送信するトリム／アンマップコマンドは、トリムまたはアンマップされるべきデータの論理アドレス、例えば、ＳＳＤにおいてトリムまたはアンマップされるべきデータのＬＢＡ＋ＬＥＮを保持してよい。
【０２２９】
１５０４．ＳＳＤが、特定の論理アドレス範囲におけるデータにトリム／アンマップオペレーションを実行する。
【０２３０】
具体的には、ＳＳＤが、論理アドレス範囲における論理ブロックを選択し、次に、マッピングテーブルに在りかつその論理ブロックに対応するエントリからマッピング情報を取り出し、その物理ブロックにおける論理ブロックの物理アドレスを見つけて、そして、その物理アドレスにおけるデータを無効としてマークしてよい。
【０２３１】
物理ブロックにおいて、２つの統計的な値が維持されてよい。ここで、１つの値は、その物理ブロックに記憶されるデータブロックの合計数を示してよく、他の値は、その物理ブロックに記憶される有効データブロックの数を示してよい。ＳＳＤは、物理ブロックにおける有効データブロックの数または有効データブロックのパーセンテージに従って、ガベージコレクションを実行するか否かを決定してよい。データが物理ブロックに書き込まれると、物理ブロックに対応する有効データブロックの数が増加する。物理ブロックにおける１つの有効データブロックが、トリムまたはアンマップされる毎に、その物理ブロックにおける有効データブロックの数は１だけ減少する。トリム／アンマップオペレーションは、上述の方式で、論理アドレス範囲における全ての論理ブロックが処理されるまで、周期的に実行される。
【０２３２】
１５０６．ＳＳＤが、トリム／アンマップコマンドによりもたらされる論理容量の減少量を計算する。
【０２３３】
トリム／アンマップコマンドに対応するアドレス範囲における全論理ブロックのマッピング関係がキャンセルされた後に、ＳＳＤの論理容量が、計算され、調整されてよい。特定の計算方式では、以下の式を参照する。（論理容量の減少量）＝（トリム／アンマップオペレーション範囲における論理アドレスの論理容量）
【０２３４】
１５０８．ＳＳＤが、トリム／アンマップコマンドによりもたらされる利用可能な論理容量の増加量を計算する。
【０２３５】
具体的には、無効データが、ＳＳＤの８０ＫＢの物理空間を占有していると仮定する。８０ＫＢの物理空間は、ガベージコレクションの後でのみリリースすることができるが、８０ＫＢのオーバープロビジョニング空間が、まず、ＳＳＤのオーバープロビジョニング空間から借りられ、次に、無効データで占有された８０ＫＢの物理空間がガベージコレクションメカニズムを用いてリリースされた後、８０ＫＢのオーバープロビジョニング空間におけるデータが、物理容量に対応する記憶空間へ移動される。
【０２３６】
このメカニズムを用いることにより、ひとたびトリム／アンマップオペレーションが無効データを生成しても、その無効データにより占有された物理空間を「リリース」すべく、オーバープロビジョニング空間が借りられてよい。この場合、ＳＳＤの利用可能な論理容量は、これに応じて８０ＫＢ増加する。論理ブロックのサイズが８ＫＢである場合、１０個の分離論理ブロックがブランク論理ブロックに変換されてよい。これは、１０個の利用可能なブランク論理ブロックの追加に等しい。リリースされたブランク論理ブロックは、新たな書き込み予定データを記憶するために用いられることができる。
【０２３７】
例えば、ＳＳＤにより受信されるトリム／アンマップコマンドにより示される論理アドレス範囲が１００Ｋであると仮定すると、圧縮されたストレージのおかげで、その１００Ｋの論理アドレス範囲におけるデータにより実際に占有される物理空間は、８０Ｋとなる。この場合、８０Ｋのオーバープロビジョニング空間が、オーバープロビジョニング空間から借りられてよい。８０Ｋのオーバープロビジョニング空間は、新しいデータを記憶するために用いられることができる。本例では、トリム／アンマップコマンドによりもたらされる、ＳＳＤの論理容量の減少量は１００Ｋである。オーバープロビジョニング空間を用いることにより、ＳＳＤの利用可能な論理容量の増加量は８０Ｋである。
【０２３８】
上述では、図１０を参照して書き込み要求処理手順を詳細に説明した。読み出し要求（または、読み出しＩＯと称される）処理手順は、書き込み要求処理手順の逆手順である。以下、図１６を参照して、本発明の実施形態に係る読み出し要求処理手順を詳細に説明する。
【０２３９】
図１６は、本発明の実施形態に係る読み出し要求を処理する概略フローチャートである。図１６に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図１６において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図１６における段階は、図１６に示された順序とは異なる順序に従って実行されてよく、場合によっては、図１６のオペレーションの全てが実行されることになっている必要はない。
【０２４０】
１６０２．ホストが読み出し要求をコントローラへ送信する。
【０２４１】
ホストが送信する読み出し要求は、ＬＵＮ＿ＩＤ、ディスクアレイにおいて読み出すべきデータのＬＢＡ、及び読み出すべきデータの長さを有してよい。
【０２４２】
１６０４．コントローラが、読み出し要求をＳＳＤへ送信する。
【０２４３】
具体的には、コントローラは、段階１６０２で受信されるＬＵＮ＿ＩＤ、ディスクアレイにおいて読み出すべきデータのＬＢＡ、及び、読み出すべきデータの長さに従って、コントローラ自らにより整備されるマッピングテーブルを問い合わせて（マッピングテーブルは、ホストへ示されるディスクアレイのＬＢＡとＳＳＤのＬＢＡとの間のマッピング関係を示すために用いられてよい）、読み出すべきデータが位置付けられるＳＳＤ、並びにＳＳＤにおける読み出すべきデータのＬＢＡ及び長さを決定してよい。
【０２４４】
１６０６．ＳＳＤが、マッピングテーブルに基づいて、ＳＳＤの媒体から圧縮データを読み出す。
【０２４５】
ＳＳＤが、固定長圧縮方式を用い、マッピングテーブルが、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始アドレス、及び圧縮データの長さ、に関する情報を記憶すると仮定した場合に、ＳＳＤは、マッピングテーブルに記憶される情報に従って、圧縮データを直接的に位置付けてよい。
【０２４６】
ＳＳＤが可変長圧縮方式を用い、マッピングテーブルが、圧縮データを記憶する物理ページに関する情報のみを記憶し、物理ページ上の圧縮データの開始アドレス及び長さが、当該物理ページのヘッダに位置付けられると仮定した場合に、ＳＳＤは、まず、物理ページに関する情報に従って物理ページを見つけ、物理ページのヘッダ情報からその物理ページ上の圧縮データの開始アドレス及び長さを見つけ、次に、圧縮データの開始アドレス及び長さに従って、その圧縮データをその物理ページ上に位置付けてよい。
【０２４７】
１６０８．ＳＳＤが、圧縮データに圧縮解除オペレーションを実行し、読み出すべきデータを取得する。
【０２４８】
ＳＳＤは、内部の圧縮解除部を用いて圧縮データを圧縮解除し、読み出すべきデータを復元してよい。
【０２４９】
１６１０．ＳＳＤが、読み出すべきデータをコントローラへ返す。
【０２５０】
１６１２．コントローラは、読み出すべきデータをホストへ返してもよい。
【０２５１】
上述では、図１から図１６を参照して、本発明の実施形態に係るデータ処理方法を詳細に説明した。以下、図１７及び図１８を参照して本発明の実施形態に係るＳＳＤを詳細に説明する。図１７または図１８におけるＳＳＤは、図１から図１６におけるＳＳＤにより実行される各段階を実行可能であることが理解されるべきである。繰り返しを回避すべく、詳細をここで再度説明しない。
【０２５２】
以下、本発明の装置の実施形態及びシステムの実施形態を説明する。装置の実施形態及びシステムの実施形態は上述の方法を実行すべく用いられることが可能であるため、詳細を説明しない部分については、上記方法の実施形態を参照されたい。
【０２５３】
図１７は、本発明の実施形態に係る記憶装置の概略構造図である。記憶装置１７００の機能またはロジックは、ソフトウェアのみを用いて実装されてよく、または、ハードウェアのみを用いて実装されてもよく、または、ソフトウェア及びハードウェアの組み合わせを用いて実装されてもよいことが理解されるべきである。例えば、記憶装置１７００は、ソフトウェア及びハードウェアの組み合わせを用いて実装されてよい。この場合、以下の説明における受信モジュールは受信回路を用いて実装されてよく、以下の説明における圧縮モジュールはコンピュータコードを用いて実装されてよい。他の例では、記憶装置１７００は、ハードウェアのみを用いて実装されてよく、以下の説明における各モジュールの機能またはロジックは、ロジック回路を用いて実装されてよい。他の例では、記憶装置１７００は、ソフトウェアのみを用いて実装されてよく、以下の説明における各モジュールは、コンピュータコードに対応する機能モジュールであってよい。
【０２５４】
記憶装置１７００が、書き込み予定データを保持する書き込み要求をコントローラから受信するように構成される第１受信モジュール１７１０と、圧縮データを取得すべく、書き込み予定データを圧縮するように構成された圧縮モジュール１７２０と、圧縮データを記憶するように構成される第１記憶モジュール１７３０と、第１フィードバック情報をコントローラへ送信するように構成される第１送信モジュール１７４０とを有し、第１フィードバック情報は、圧縮データが記憶された後の記憶装置１７００の残存容量を示す。
【０２５５】
オプションで、ある実施形態において、記憶装置１７００は、第２フィードバック情報をコントローラへ送信するように構成される第２送信モジュールを更に有し、ここで第２フィードバック情報が、記憶装置１７００の論理容量を示し、記憶装置１７００の論理容量は、記憶装置１７００に記憶されているデータの非圧縮データ量及び記憶装置１７００の利用可能な物理空間の容量の和である。
【０２５６】
オプションで、ある実施形態において、記憶装置１７００が、書き込み予定データへブランク論理ブロックを割り当てるように構成される割り当てモジュールであって、各論理ブロックは記憶装置１７００の論理容量のセグメントに対応する、割り当てモジュールと、割り当てられたブランク論理ブロックを有効論理ブロックへ変換するように構成される第１変換モジュールであって、有効論理ブロックが、その論理アドレスが有効データで占有される論理ブロックである、第１変換モジュールと、記憶装置１７００における残存ブランク論理ブロックの数を問い合わせるように構成される第１問い合わせモジュールと、を更に有し、第１送信モジュール１７４０は、第１フィードバック情報をコントローラへ送信するように具体的に構成され、第１フィードバック情報が、残存ブランク論理ブロックの数、及び／又は、残存容量を有し、残存容量は、残存ブランク論理ブロックの数に基づいて決定される。
【０２５７】
オプションで、ある実施形態において、圧縮モジュール１７２０は、割り当てモジュールがブランク論理ブロックを書き込み予定データへ割り当てた後に、圧縮データを取得すべく書き込み予定データを圧縮するように具体的に構成され、記憶装置１７００が、記憶装置１７００で追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って決定するように構成される第１決定モジュールを更に有する。
【０２５８】
オプションで、ある実施形態において、記憶装置１７００が、新しいブランク論理ブロックに対応するエントリを、記憶装置１７００で追加する必要のあるブランク論理ブロックの数に従って、マッピングテーブルへ追加するように構成される追加モジュールを更に有する。
【０２５９】
オプションで、ある実施形態において、記憶装置１７００が、記憶装置１７００における分離論理ブロックを、記憶装置１７００で追加する必要のあるブランク論理ブロックの数に従って、ブランク論理ブロックへ更新するように構成される更新モジュールを更に有し、分離論理ブロックは、その論理アドレスが記憶装置１７００で使用不可能な論理ブロックである。
【０２６０】
オプションで、ある実施形態において、記憶装置１７００で追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、ここでＤは書き込み予定データの長さと圧縮データとの長さの間の差を示し、Ｌは記憶装置１７００における論理ブロックの長さを示す。
【０２６１】
オプションで、ある実施形態において、記憶装置１７００が、コントローラからコマンドを受信するように構成される第２受信モジュールと、論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第２変換モジュールとを更に有する。ここで、コマンドが論理アドレス範囲を有し、コマンドが論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられ、分離論理ブロックは、その論理アドレスが使用不可能な論理ブロックである。
【０２６２】
オプションで、ある実施形態において、記憶装置１７００が、論理アドレス範囲におけるデータによって占有される物理空間のサイズを決定するように構成される第２決定モジュールと、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールと、部分的なオーバープロビジョニング空間を、記憶装置１７００の利用可能な物理空間として用いるように構成される第３決定モジュールとを更に有する。ここで、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい。
【０２６３】
オプションで、ある実施形態において、記憶装置１７００が、第１フィードバック情報がコントローラへ送信される前に、記憶装置１７００の利用可能な物理空間を問い合わせるように構成される第２問い合わせモジュールと、利用可能な物理空間の容量を残存容量と決定するように構成される第４決定モジュールと、を更に有する。
【０２６４】
オプションで、ある実施形態において、記憶装置１７００が、書き込み要求がコントローラから受信された後に、論理アドレスを書き込み予定データへ割り当てるように構成される第５決定モジュールと、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように構成される第１記録モジュールとを更に有する。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を有する。
【０２６５】
オプションで、ある実施形態において、記憶装置１７００が、書き込み要求がコントローラから受信される後に、論理アドレスを書き込み予定データへ割り当てるように構成される第６決定モジュールと、マッピングテーブルに在り、論理アドレスに対応するエントリにマッピング情報を記録するように構成される第２記録モジュールであって、マッピング情報が、圧縮データを記憶する物理ページに関する情報を有する、第２記録モジュールと、物理ページ上に圧縮データのメタデータを記憶するように構成される第２記憶モジュールを更に有する。ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
【０２６６】
オプションで、ある実施形態において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、データ長に基づいて割り当てられる。
【０２６７】
オプションで、ある実施形態において、記憶装置１７００が、書き込み要求がコントローラから受信される後に、記憶装置１７００における書き込み予定データの論理アドレスをコントローラへ送信するように構成される第３送信モジュールを更に有する。
【０２６８】
オプションで、ある実施形態において、記憶装置１７００が、コントローラから読み出し要求を受信するように構成され、読み出し要求が、読み出すべきデータの論理アドレスを有する、第３受信モジュールと、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、ターゲットデータを圧縮解除して読み出すべきデータを取得するように構成される圧縮解除モジュールと、読み出すべきデータをコントローラへ送信するように構成される第４送信モジュールと、を更に有する。
【０２６９】
記憶装置１７００が、例えばＳＳＤであってよいことに注意すべきである。記憶装置１７００は、通信インタフェース、記憶媒体及びプロセッサを有するＳＳＤにより実装されてよい。プロセッサは、メモリ内のコンピュータ命令を実行することにより、方法の実施形態で説明されたオペレーションを実行してよい。
【０２７０】
プロセッサは、内部のハードウェアの論理的接続を用いることで、方法の実施形態で説明されたオペレーションを更に実行してよく、例えば、特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、短縮してＡＳＩＣ）を用いることで、またはプログラマブル論理デバイス（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、短縮してＰＬＤ）を用いることで、オペレーションを実装してよい。ＰＬＤは、コンプレックスプログラマブルロジックデバイス（英語でｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、短縮してＣＰＬＤ）、ＦＰＧＡ、ジェネリックアレイロジック（英語で、ｇｅｎｅｒｉｃ  ａｒｒａｙ  ｌｏｇｉｃ、短縮してＧＡＬ）またはこの組み合わせであってよい。本発明の実施形態において、例えば、記憶装置はＳＳＤの中にあってよい。ＳＳＤは、記憶媒体及びプロセッサを有する。記憶媒体は、記憶空間を提供するように構成される。ＳＳＤのプロセッサが、書き込み予定データを保持する書き込み要求をコントローラから受信するように構成される第１受信回路と、書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮回路と、圧縮データを記憶するように構成される第１記憶回路と、第１フィードバック情報をコントローラへ送信するように構成される第１送信回路とを有する。ここで、第１フィードバック情報が、圧縮データが記憶された後のＳＳＤの残存容量を示す。
【０２７１】
図１８は、本発明の実施形態に係る記憶システムの概略構造図である。図１８の記憶システム１８００は、図１７で説明されたコントローラ１８１０及び記憶装置１７００を有する。
【０２７２】
コントローラ１８１０が、書き込み予定データを備える書き込み要求を生成し、記憶装置１７００から書き込み要求に対する応答メッセージを受信し。ここで、応答メッセージが、記憶装置１７００における書き込み予定データの論理アドレスを有し、ディスクアレイにおける書き込み予定データの論理アドレスと記憶装置１７００における書き込み予定データの論理アドレスとの間のマッピング関係を記録するように構成される。
【０２７３】
オプションで、ある実施形態において、コントローラ１８１０が、ホストから新たな書き込み予定データを受信し、第１フィードバック情報に従って記憶装置１７００の残存容量を決定し、記憶装置１７００の残存容量が新たな書き込み予定データのサイズよりも大きい場合に、新たな書き込み予定データを記憶装置１７００へ書き込むように、更に構成される。
【０２７４】
図１９は、本発明の実施形態に係るソリッドステートディスクの概略構造図である。図１９のソリッドステートディスク１９００は、コントローラと通信するように構成される通信インタフェース１９１０と、記憶空間を提供するように構成される記憶媒体１９２０と、通信インタフェース１９１０及び記憶媒体１９２０に接続され、通信インタフェース１９１０を介してコントローラから書き込み要求を受信するように構成されるプロセッサ１９３０とを有する。ここで、書き込み要求が、書き込み予定データを保持し、圧縮データを取得すべく書き込み予定データを圧縮し、記憶媒体１９２０に圧縮データを記憶し、通信インタフェース１９１０を介して第１フィードバック情報をコントローラへ送信し、第１フィードバック情報は、圧縮データが記憶された後の記憶媒体１９２０の残存容量を示す。
【０２７５】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介して第２フィードバック情報をコントローラへ送信するように更に構成され、ここで、第２フィードバック情報は記憶媒体１９２０の論理容量を示し、記憶媒体１９２０の論理容量が、記憶媒体１９２０に記憶されているデータの非圧縮データ量及び記憶媒体１９２０の利用可能な物理空間の容量の和である。
【０２７６】
オプションで、ある実施形態において、プロセッサ１９３０が、書き込み予定データへブランク論理ブロックを割り当て、割り当てられたブランク論理ブロックを有効論理ブロックへ変換し、ソリッドステートディスク１９００における残存ブランク論理ブロックの数を問い合わせるように更に構成される。ここで、ブランク論理ブロックは利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックは記憶媒体１９２０の論理容量のセグメントに対応し、有効論理ブロックは、その論理アドレスが有効データで占有される論理ブロックであり、プロセッサ１９３０が、通信インタフェース１９１０を介して第１フィードバック情報をコントローラへ送信するように具体的に構成され、第１フィードバック情報が、残存ブランク論理ブロックの数、及び／又は、残存容量を有し、残存容量は、残存ブランク論理ブロックの数に基づいて決定される。
【０２７７】
オプションで、ある実施形態において、プロセッサ１９３０がブランク論理ブロックを書き込み予定データへ割り当てた後に、プロセッサ１９３０が、圧縮データを取得すべく書き込み予定データを圧縮するように具体的に構成され、プロセッサ１９３０が、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って決定するように更に構成される。
【０２７８】
オプションで、ある実施形態において、プロセッサ１９３０が、新しいブランク論理ブロックに対応するエントリを、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数に従って、ソリッドステートディスク１９００のマッピングテーブルへ追加するように更に構成される。
【０２７９】
オプションで、ある実施形態において、プロセッサ１９３０が、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数に従って、ソリッドステートディスク１９００における分離論理ブロックを、ブランク論理ブロックへ更新するように更に構成される。ここで、分離論理ブロックは、その論理アドレスがソリッドステートディスク１９００で使用不可能な論理ブロックである。
【０２８０】
オプションで、ある実施形態において、ソリッドステートディスク１９００で追加する必要のあるブランク論理ブロックの数Ｍは、ＤをＬで除算して切り捨てた結果に等しく、ここでＤは書き込み予定データの長さと圧縮データの長さとの間の差を示し、Ｌはソリッドステートディスク１９００における論理ブロックの長さを示す。
【０２８１】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介してコントローラからコマンドを受信し、論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように更に構成される。ここで、コマンドが論理アドレス範囲を有し、コマンドは論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられ、分離論理ブロックは、その論理アドレスが使用不可能な論理ブロックである。
【０２８２】
オプションで、ある実施形態において、プロセッサ１９３０が、論理アドレス範囲におけるデータによって占有される物理空間のサイズを決定し、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択し、部分的なオーバープロビジョニング空間を、記憶媒体１９２０の利用可能な物理空間として用いるように更に構成される。ここで、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい。
【０２８３】
オプションで、ある実施形態において、プロセッサ１９３０が通信インタフェース１９１０を介して第１フィードバック情報をコントローラへ送信する前に、プロセッサが１９３０、記憶媒体１９２０の利用可能な物理空間を問い合わせ、利用可能な物理空間の容量を残存容量と決定するように更に構成される。
【０２８４】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介してコントローラから書き込み要求を受信した後に、プロセッサ１９３０が、論理アドレスを書き込み予定データへ割り当て、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように更に構成される。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を有する。
【０２８５】
オプションで、ある実施形態において、プロセッサ１９３０が通信インタフェース１９１０を介してコントローラから書き込み要求を受信した後に、プロセッサ１９３０が、論理アドレスを書き込み予定データへ割り当て、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように更に構成される。ここで、マッピング情報が、圧縮データを記憶する物理ページに関する情報を含み、プロセッサ１９３０は、物理ページ上に圧縮データのメタデータを記憶するように更に構成され、ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
【０２８６】
オプションで、ある実施形態において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、データ長に基づいて割り当てられる。
【０２８７】
オプションで、ある実施形態において、プロセッサ１９３０が圧縮データを記憶した後に、プロセッサ１９３０が記憶媒体１９２０における書き込み予定データの論理アドレスを、通信インタフェース１９１０を介してコントローラへ送信するように更に構成される。
【０２８８】
オプションで、ある実施形態において、プロセッサ１９３０が、通信インタフェース１９１０を介してコントローラから読み出し要求を受信するように更に構成され、ここで読み出し要求が、読み出すべきデータの論理アドレスを備える。プロセッサ１９３０が、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出し、ターゲットデータを圧縮解除して読み出すべきデータを取得し、通信インタフェース１９１０を介して読み出すべきデータをコントローラへ送信するように更に構成される。
【０２８９】
図２０は、本発明の実施形態に係る記憶システムの概略構造図である。図２０の記憶システム２０００は、図１９のコントローラ２０１０及びソリッドステートディスク１９００を有する。
【０２９０】
コントローラ２０１０が、書き込み予定データを有する書き込み要求を生成し、通信インタフェース１９１０を介してプロセッサ１９３０から書き込み要求に対する応答メッセージを受信するように構成され、ここで、応答メッセージが、記憶媒体１９２０における書き込み予定データの論理アドレスを有する。コントローラ２０１０が、ディスクアレイにおける書き込み予定データの論理アドレスと記憶媒体１９２０における書き込み予定データの論理アドレスとの間のマッピング関係を記録するように更に構成される。
【０２９１】
オプションで、ある実施形態において、コントローラ２０１０が、ホストから新たな書き込み予定データを受信し、第１フィードバック情報に従ってソリッドステートディスク１９００の残存容量を決定し、ソリッドステートディスク１９００の残存容量が新たな書き込み予定データのサイズよりも大きい場合に、新たな書き込み予定データを記ソリッドステートディスク１９００へ書き込むように、更に構成される。
【０２９２】
本明細書において、「及び／又は」は、３種類の関係が存在してよいこと表す。例えば、Ａ及び／又はＢは、以下の３つのケース、すなわち、Ａのみが存在すること、Ａ及びＢの両方が存在すること、及びＢのみが存在することを表してよい。加えて、本明細書における記号「／」は概して、関連対象物間の「または」の関係を示す。
【０２９３】
当業者であれば、本明細書において開示される実施形態を参照して説明された例におけるユニット及びアルゴリズム段階が、電子的ハードウェア、又は、コンピュータソフトウェア及び電子的ハードウェアの組み合わせにより実装されてよいことが認識され得る。機能が、ハードウェアにより実行されるか、又は、ソフトウェアにより実行されるかは、技術的解決法の特定の用途及び設計制約条件に依存する。当業者であれば、具体的な用途毎に、説明した機能を実装する際に利用する方法を変更し得るが、このような実装が本発明の範囲を超えるものとみなされるべきではない。
【０２９４】
当業者には明確に理解され得るように、説明を簡便かつ簡単にする目的で、前述のシステム、装置、及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照されたく、詳細は説明しない。
【０２９５】
本発明において提供されたいくつかの実施形態では、開示されたシステム、装置、及び方法が他の方式で実装されてよいことが理解されるべきである。例えば、説明した装置の実施形態は、一例に過ぎない。例えば、ユニットの区分は、論理的機能の区分に過ぎず、実際の実装においては他の区分であってよい。例えば、複数のユニットまたは構成要素が丸め処理され、または、別のシステムに統合されてよく、あるいは、いくつかの特徴は無視されるかまたは実行されなくてよい。加えて、表示または議論されている相互結合もしくは直接的結合または通信接続は、いくつかのインタフェース、装置またはユニット間の間接的結合もしくは通信接続、もしくは電気的接続、機械的接続、または他の形態の接続によって実装されてよい。
【０２９６】
別個の構成要素として説明されたユニットは、物理的に離れていても離れていなくてもよく、またユニットとして表示された構成要素が、物理的なユニットであってもそうでなくてもよく、あるいは１か所に配置されても、複数のネットワークユニットに分散されてもよい。ユニットのいくつか又は全ては、実施形態の解決手段の目的を実現するために、実際の必要に従って選択されてよい。
【０２９７】
加えて、本発明の実施形態における機能ユニットが１つの処理ユニットに統合されてよく、もしくはユニットの各々が物理的に単独で存在してよく、または２つまたはそれより多くのユニットが１つのユニットに統合される。
【０２９８】
機能がソフトウェア機能ユニットの形態で実装され、単独の製品として販売または使用されるとき、当該機能は、コンピュータ可読記憶媒体に記憶されてよい。そのような理解に基づいて、本発明の技術的解決手段は本質的に、または従来技術に寄与する部分は、または技術的解決手段の一部は、ソフトウェア製品の形態で実装されてよいソフトウェア製品は、記憶媒体に記憶され、本発明の実施形態において説明される方法の段階の全てまたは一部を実行するようコンピュータデバイス（これはパーソナルコンピュータ、サーバ、またはネットワークデバイスであってよい）に命令するためのいくつかの命令を含む。上述の記憶媒体は、ＵＳＢフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、または光ディスク等の、プログラムコードを記憶することができる任意の媒体を含む。
【０２９９】
上記の説明は、単に本発明の特定の実装態様に過ぎず、本発明を限定することを意図するものではない。
【国際調査報告】
2019519047.tif 000025
2019519047.tif 000026
2019519047.tif 000027
2019519047.tif 000028