(57)【要約】  システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションのための方法が提供される。システムコントローラは、収集予定の第１の論理チャンクグループを決定し、ここで、第１の論理チャンクグループは、第１のデータ論理チャンクを含み、第１のデータ論理チャンクは、複数のソリッドステートディスクの第１のソリッドステートディスクに位置付けられ、有効データは、第１の論理チャンクグループにおける第１の論理アドレスに記憶され、有効データが複数のソリッドステートディスクに記憶される実アドレスと第１の論理アドレスとの間の対応関係がある。システムコントローラは、第２の論理チャンクグループを生成し、ここで、第２の論理チャンクグループにおける少なくとも１つの第２のデータ論理チャンクは、有効データを記憶する第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散され、これにより、有効データが第１の論理チャンクグループから第２の論理チャンクグループに移行されることを保証し、しかし、有効データの実アドレスは、未変更のままとなり、それにより、ライトアンプリフィケーションの回数を減らす。
2021509981.tif 000002
【特許請求の範囲】
【請求項１】
システムガベージコレクションの方法であって、前記方法は、フラッシュメモリアレイに適用され、前記フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含み、前記方法は、前記システムコントローラによって実行され、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階と、を備える方法。
【請求項２】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項１に記載の方法。
【請求項３】
第２の論理チャンクグループを前記生成する段階は、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成する段階を有し、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項２に記載の方法。
【請求項４】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
請求項４に記載の方法。
【請求項６】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
請求項４に記載の方法。
【請求項７】
収集予定の第１の論理チャンクグループを前記決定する段階の前に、前記方法は、更に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定する段階を備える
請求項１に記載の方法。
【請求項８】
システムコントローラであって、前記システムコントローラは、
複数のソリッドステートディスクと通信するように構成されたインタフェースと、
プロセッサとを備え、前記プロセッサは、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクに分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを、前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように、前記インタフェースを介して命令する段階と、を行うように構成される、
システムコントローラ。
【請求項９】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項８に記載のシステムコントローラ。
【請求項１０】
前記プロセッサは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項９に記載のシステムコントローラ。
【請求項１１】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項８から１０のいずれか一項に記載のシステムコントローラ。
【請求項１２】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
請求項１１に記載のシステムコントローラ。
【請求項１３】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
請求項１１に記載のシステムコントローラ。
【請求項１４】
前記プロセッサは更に、前記収集予定の第１の論理チャンクグループを決定する前に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定するように構成される
請求項８に記載のシステムコントローラ。
【請求項１５】
フラッシュメモリアレイであって、システムコントローラおよび複数のソリッドステートディスクを備え、
前記システムコントローラは、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階とを行うように構成される
フラッシュメモリアレイ。
【請求項１６】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項１５に記載のフラッシュメモリアレイ。
【請求項１７】
前記システムコントローラは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項１６に記載のフラッシュメモリアレイ。
【請求項１８】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項１５から１７のいずれか一項に記載のフラッシュメモリアレイ。
【請求項１９】
前記有効データを記憶する前記ソリッドステートディスクは更に、前記有効データが位置付けられる第１の物理ブロックから、前記有効データおよび前記有効データの逆マッピング情報を読み出し、前記逆マッピング情報を前記システムコントローラに送信するように構成され、
前記システムコントローラは、更に、前記逆マッピング情報に基づいて、前記逆マッピング情報に対応する前記第２の論理アドレスを照会し、前記第２の論理アドレスを、前記有効データを記憶する前記ソリッドステートディスクに送信するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、第３の論理アドレスを、前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーするように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第２の論理アドレスと前記実アドレスとの間の前記対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記第３の論理アドレスとの間の対応関係を生成するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第１の物理ブロックが他の有効データを含まないということを決定する場合に、前記第１の物理ブロックにおけるデータを消去するように構成される
請求項１５に記載のフラッシュメモリアレイ。
【請求項２０】
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
請求項１９に記載のフラッシュメモリアレイ。
【請求項２１】
ソリッドステートディスクにおけるガベージコレクションのための方法であって、
前記ソリッドステートディスクは、システムコントローラに接続され、
前記方法は、前記ソリッドステートディスクによて実行され、収集予定の第１の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、
前記逆マッピング情報を前記システムコントローラに送信する段階と、
前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、
ターゲット論理アドレスを前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーする段階と、
前記第１の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、
前記第１の物理ブロックにおけるデータを消去する段階とを備える
方法。
【請求項２２】
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
請求項２１に記載の方法。
【請求項２３】
ソリッドステートディスクであって、
前記ソリッドステートディスクは、コントローラと、第１の物理ブロックと、第２の物理ブロックとを備え、
前記コントローラは、
収集予定の前記第１の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、
前記逆マッピング情報を前記システムコントローラに送信する段階と、
前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、
ターゲット論理アドレスを前記有効データに割り当て、前記有効データを前記第２の物理ブロックにコピーする段階と、
前記第１の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、
前記第１の物理ブロックにおけるデータを消去する段階とを行うように構成される
ソリッドステートディスク。
【請求項２４】
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
請求項２３に記載のソリッドステートディスク。
【請求項２５】
システムガベージコレクションの装置であって、前記装置は、フラッシュメモリアレイのシステムコントローラに位置付けられ、前記装置は、
収集予定の第１の論理チャンクグループを決定するように構成される決定モジュールであって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、前記フラッシュメモリアレイに含まれる複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第１の論理アドレスとの間の対応関係がある、決定モジュールと、
第２の論理チャンクグループを生成するように構成される生成モジュールであって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散される、生成モジュールと、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てるように構成される割り当てモジュールと、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するよう命令するように構成される命令モジュールと、を備える
装置。
【請求項２６】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項２５に記載の装置。
【請求項２７】
前記生成モジュールは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項２６に記載の装置。
【請求項２８】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項２５から２７のいずれか一項に記載の装置。
【請求項２９】
前記決定モジュールは更に、前記収集予定の第１の論理チャンクグループを決定する前に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であるということを決定するように構成される
請求項２５に記載の装置。
【請求項３０】
ソリッドステートディスクにおけるガベージコレクションのための装置であって、
処理モジュールであって、収集予定の第１の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、前記逆マッピング情報を前記システムコントローラに送信する段階と、前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、ターゲット論理アドレスを前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーする段階と、を行うように構成される処理モジュールと、
コレクションモジュールであって、前記第１の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、前記第１の物理ブロックにおけるデータを消去する段階とを行うように構成されるコレクションモジュールと、を備える
装置。
【請求項３１】
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
請求項３０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ストレージ分野、より具体的には、システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションのための方法に関する。
【背景技術】
【０００２】
フラッシュメモリアレイは、ソリッドステートディスクおよびシステムコントローラを含むストレージシステムである。システムコントローラは、論理チャンクグループ（ｃｈｕｎｋ  ｇｒｏｕｐ，ＣＫＧ）のユニットにおけるソリッドステートディスクに、論理アドレスを割り当て、システムにおける利用可能なスペースが不十分である場合に、システムコントローラは、システムガベージコレクションを実行する。システムガベージコレクションの処理の間、システムコントローラは、ソリッドステートディスクに、論理チャンクグループにおける全ての有効データを、新たな論理チャンクグループに移行させるように命令し、ソリッドステートディスク内の有効データのマイグレーションをもたらす。そのため、ライトアンプリフィケーションの回数が増加される。
【発明の概要】
【０００３】
本願は、ライトアンプリフィケーションの回数を減らすように、システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションのための方法を提供する。
【０００４】
第１の態様は、システムガベージコレクションの方法を提供し、ここで、方法は、フラッシュメモリアレイに適用され、フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含む。システムコントローラは、収集予定の第１の論理チャンクグループを決定し、ここで、第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、第１の論理チャンクにおける有効データのアドレスは、第１の論理アドレスであり、ソリッドステートディスクに有効データが記憶された実アドレスと第１の論理アドレスとの間の対応関係がある。システムコントローラは、第２の論理チャンクグループを生成し、ここで、第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、有効データを記憶する第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される。システムコントローラは、少なくとも１つの第２のデータ論理チャンクにおいて、第２の論理アドレスを有効データに割り当て、そして、有効データを記憶するソリッドステートディスクに、第１の論理アドレスと実アドレスとの間の対応関係を、第２の論理アドレスと実アドレスとの間の対応関係に変更するよう命令する。
【０００５】
第１の態様において提供されるシステムガベージコレクションの方法では、収集予定の第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、少なくとも１つの第１のデータ論理チャンクに記憶されたデータは、有効データである。生成された第２の論理チャンクグループにおける少なくとも１つのデータ論理チャンクは、有効データを記憶する第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散されるので、有効データは、実際に移動される必要がなく、収集予定の第１の論理チャンクグループにおける少なくとも１つのデータ論理チャンクの有効データは、有効データを記憶するソリッドステートディスクに、第１の論理アドレスと実アドレスとの間の対応関係を、第２の論理アドレスと実アドレスとの間の対応関係に変更させるように命令することのみによって、生成された第２の論理チャンクグループに移行されることができる。有効データは、実際には移動されず、そのため、ライトアンプリフィケーションの回数が減らされることができる。
【０００６】
第１の論理チャンクグループに含まれる複数のデータ論理チャンクにおいて、一部のデータ論理チャンクのみ（又はさらに、１つのみのデータ論理チャンク）が有効データを記憶する。この場合、第２の論理チャンクグループの生成の間、第１の論理チャンクグループの有効データを、有効データを実際に移動させることなく第２の論理チャンクグループに移行させるように、第２の論理チャンクグループにおける一部のデータ論理チャンク又は１つのデータ論理チャンクが、第１のデータ論理チャンクグループにおいて、有効データを記憶するデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散されることを保証することのみが不可欠である。加えて、さらに、第１の論理チャンクグループにおけるデータ論理チャンクの一部又は全てが有効データを記憶する場合に、生成された第２の論理チャンクグループにおける少なくとも１つのデータ論理チャンクが、第１のデータ論理チャンクグループにおいて、有効データを記憶するデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散されることを保証することを条件として、ライトアンプリフィケーションの回数がまた、ある程度まで減らされるということが理解されることができる。
【０００７】
オプションで、他の実施例において、第２の論理チャンクグループに含まれる各データ論理チャンクは、第１の論理チャンクグループに含まれる１つのデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、分散される。このやり方で、ライトアンプリフィケーションの回数は、最も減らされることができる。
【０００８】
第１の態様の第１の実施例において、有効データを記憶する第１のデータ論理チャンクの量は、少なくとも１つの第２のデータ論理チャンクの量に等しい。例えば、第１の論理チャンクグループにおける１つの第１のデータ論理チャンクが、有効データを記憶する場合、第２の論理チャンクグループにおける１つの第２のデータ論理チャンクはまた、有効データを記憶する第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、分散される。第１の論理チャンクグループにおける２つの第１のデータ論理チャンクが、有効データを記憶する場合、第２の論理チャンクグループにおける２つの第２のデータ論理チャンクはまた、有効データを記憶する２つの第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、それぞれ分散される。第１の論理チャンクグループにおいて全ての第１のデータ論理チャンクが有効データを記憶する場合、第２の論理チャンクグループにおける全ての第２のデータ論理チャンクはまた、全ての第１のデータ論理チャンクが位置付けられる複数のソリッドステートディスクにおいて分散される。
【０００９】
第１の態様の第１の実施例を参照して、第１の態様の第２の実施例において、第２の論理チャンクグループを生成することは、具体的に、複数のソリッドステートディスクにおける複数の第１のデータ論理チャンクの分散に基づいて、第２の論理チャンクグループを生成することであってよく、ここで、生成された第２の論理チャンクグループにおける全ての第２のデータ論理チャンクは、全ての第１のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される。この方式により生成された第２の論理チャンクグループは、ライトアンプリフィケーションの回数を最も減らすことができる。
【００１０】
上述した実施例のいずれかを参照して、第１の態様の第３の実施例において、第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、第１のチェック論理チャンクは、複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、第２のチェック論理チャンクは、複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される。第１のチェック論理チャンクの量および第２のチェック論理チャンクの量は同じであり、両方の量は、ＲＡＩＤタイプに基づいて決定される。第２のチェック論理チャンクが位置付けられるソリッドステートディスクは、第１のチェック論理チャンクが位置付けられるソリッドステートディスクと同じであってよい、又は異なってよい。通常、有効データが第１の論理チャンクグループから第２の論理チャンクグループに移行された後に、再計算が実行される必要があり、チェックデータが記憶される必要がある。そのため、第２のチェック論理チャンクの分散は、本適用に限定されるものではない。
【００１１】
上述した実施例のうちの何れか１つを参照して、第１の態様の第４の実施例において、収集予定の第１の論理チャンクグループは、特定条件に従って選択されてよい。例えば、フラッシュメモリアレイにおける論理チャンクグループに含まれる有効データの量が特定された閾値未満である場合、論理チャンクグループは、収集予定の第１の論理チャンクグループとして使用されてよい。代わりに、フラッシュメモリアレイにおける論理チャンクグループに含まれる無効データの量が特定された閾値より多い場合、論理チャンクグループは、収集予定の第１の論理チャンクグループとして使用されてよい。代わりに、フラッシュメモリアレイにおける無効データの最大量又は有効データの最小量を有する論理チャンクグループは、収集予定の第１の論理チャンクグループとして選択される。このやり方で、システムガベージコレクションの効率は、改善されることができる。
【００１２】
第２の態様は、ソリッドステートディスクにおけるガベージコレクションのための方法を提供し、ここで、方法は、ソリッドステートディスクに適用され、ソリッドステートディスクは、システムコントローラに接続される。ソリッドステートディスクは、収集予定の第１の物理ブロックから、有効データおよび有効データの逆マッピング情報を読み出し、有効データの逆マッピング情報をシステムコントローラに送信し、これにより、逆マッピング情報に対応するソース論理アドレスを取得する。そして、ソリッドステートディスクは、ターゲット論理アドレスを有効データに割り当て、有効データを第２の物理ブロックにコピーし、そして、第１の物理ブロックにおいて有効データが記憶された実アドレスとソース論理アドレスとの間の対応関係を削除し、第２の物理ブロックにおいて有効データが記憶された実アドレスとターゲット論理アドレスとの間の対応関係を生成する。最後に、ソリッドステートディスクは、第１の物理ブロックにおけるデータを消去する。
【００１３】
第２の態様における逆マッピング情報は、有効データの仮想アドレス、有効データのフィンガープリント、又は、ファイルにおける有効データのオフセットアドレスであってよい。順インデックス作成によって有効データの実アドレスを発見するために使用されることができる任意の情報は、本願の保護範囲に含まれる。
【００１４】
データの逆マッピング情報およびデータは、通常、まとめてソリッドステートディスクに書き込まれ、ソリッドステートディスクにおけるガベージコレクションの間にデータの論理アドレスの検索を容易にし、フラッシュトランスレーションレイヤにおける論理アドレスと実アドレスとの間の対応関係を変更する。従来の方式では、逆マッピング情報は、データの論理アドレスを参照する。しかしながら、本願では、有効データの実アドレスを未変更のままに維持するために、有効データの逆マッピング情報の実アドレスが未変更であることを保証することがまた、不可欠である。有効データが第１の論理チャンクグループから第２の論理チャンクグループに移行される場合に、有効データの論理アドレスが変更される。そのため、本願では、有効データの逆マッピング情報は、データの論理アドレスとすることができず、しかし、データの仮想アドレス又はデータのフィンガープリントのような情報であってよい。
【００１５】
そのため、本願における第２の態様の実施例に従って、有効データの論理アドレスは、有効データの逆マッピング情報に基づいてシステムコントローラから問い合わせられてよく、これにより、ソリッドステートディスクにおけるガベージコレクションを完了する。
【００１６】
本願の第３の態様は、システムコントローラを提供し、ここで、システムコントローラは、インタフェースおよびプロセッサを含む。インタフェースは、複数のソリッドステートディスクに接続するように構成され、プロセッサは、第１の態様における任意の方法を実行するように構成される。
【００１７】
本願の第４の態様は、システムガベージコレクションの装置を提供し、ここで、装置は、フラッシュメモリアレイのシステムコントローラに位置付けられ、第１の態様における任意の方法を実行するように構成される。
【００１８】
本願の第５の態様は、ソリッドステートディスクを提供し、ここで、ソリッドステートディスクは、フラッシュコントローラ、第１の物理ブロック、および第２の物理ブロックを含む。フラッシュコントローラは、第２の態様における方法を実行するように構成される。
【００１９】
本願の第６の態様は、ソリッドステートディスクにおけるガベージコレクションのための装置を提供し、第２の態様における方法を実行するように構成される。
【００２０】
本願の第７の態様は、フラッシュメモリアレイを提供し、ここで、フラッシュメモリアレイは、システムコントローラおよびソリッドステートディスクを含み、システムコントローラは、第１の態様における任意の方法を実行するように構成され、ソリッドステートディスクは、第２の態様における方法を実行するように構成される。
【００２１】
本願の第８の態様は、プログラムコードを格納するコンピュータ可読記録媒体を含む、システムガベージコレクションのためのコンピュータプログラムプロダクトを提供し、ここで、プログラムコードに含まれる命令は、第１の態様において説明された方法を実行するために使用される。
【００２２】
本願の第９の態様は、プログラムコードを格納するコンピュータ可読記録媒体を含む、ソリッドステートディスクにおけるガベージコレクションのためのコンピュータプログラムプロダクトを提供し、ここで、プログラムコードに含まれる命令は、第２の態様において説明された方法を実行するために使用される。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の実施形態に係る適用シナリオ図である。
【００２４】
【図２】図２は、本発明の実施形態に係るコントローラの構造図である。
【００２５】
【図３】図３は、本発明の実施形態に係る論理チャンクグループの概略図である。
【００２６】
【図４】図４は、本発明の実施形態に係るデータを書き込む概略フローチャートである。
【００２７】
【図５】図５は、本発明の実施形態に係るシステムガベージコレクションの方法の概略フローチャートである。
【００２８】
【図６】図６は、本発明の実施形態に係るシステムガベージコレクションの方法の概略図である。
【００２９】
【図７】図７は、本発明の実施形態に係るソリッドステートディスクにおけるガベージコレクションのための方法の概略フローチャートである。
【００３０】
【図８】図８は、本発明の実施形態に係るシステムガベージコレクションの装置の概略構造図である。
【００３１】
【図９】図９は、本発明の実施形態に係るソリッドステートディスクにおけるガベージコレクションのための装置の概略構造図である。
【発明を実施するための形態】
【００３２】
本発明の実施形態は、ライトアンプリフィケーションの回数を減らすように、システムガベージコレクションの方法およびストレージシステムを提供し、それにより、ソリッドステートディスクの耐用年数を改善する。
【００３３】
図１は、本発明の実施形態に係るフラッシュメモリアレイの状態図である。図１に示されるフラッシュメモリアレイは、少なくとも１つのコントローラ（図１に示されるコントローラ１１）と、複数のソリッドステートディスク２２（図１に示された、ソリッドステートディスク２２Ａ、ソリッドステートディスク２２Ｂ、ソリッドステートディスク２２Ｃ、およびソリッドステートディスク２２Ｇ）とを含む。コントローラ１１は、ストレージエリアネットワーク（英語：ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ，ＳＡＮ）を介してホスト（図に示されない）に接続される。コントローラ１１は、サーバおよびデスクトップコンピュータのようなコンピューティングデバイスであってよい。オペレーティングシステムおよびアプリケーションは、コントローラ１１にインストールされる。コントローラ１１は、ホストからの入出力（Ｉ／Ｏ）要求を受信してよい。コントローラ１１は、更に、Ｉ／Ｏ要求に保持された（存在する場合には）データを記憶し、ソリッドステートディスク２２にデータを書き込んでよい。ソリッドステートディスク（英語：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ，ＳＳＤ）は、フラッシュメモリ（英語：ｆｌａｓｈ  ｍｅｍｏｒｙ）チップを媒体として使用するメモリであり、また、ソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ，ＳＳＤ）と称される。
【００３４】
図１は、例の説明のためにのみ使用される。実施において、ストレージシステムは、２又はそれより多くのコントローラを含んでよく、それぞれのコントローラは、コントローラ１１のものと同様の物理構造および機能を有する。加えて、複数のコントローラの間の接続方式と、任意のコントローラおよびソリッドステートディスク２２の間の接続方式とは、複数のコントローラの間とそれぞれのコントローラおよびソリッドステートディスク２２の間とで相互通信が実行されることができることを条件として、この実施形態に限定されるものではない。加えて、この実施形態では、コントローラ１１は、しばしば複数のソリッドステートディスクに命令を送信する。説明しやすくするために、複数のソリッドステートディスク２２を含むセットは、ソリッドステートディスクグループと称される。
【００３５】
図２は、コントローラ１１の例の構造図である。図２に示されるように、コントローラ１１は、インタフェースカード１１０、プロセッサ１１２、およびインタフェースカード１１３を含む。
【００３６】
インタフェースカード１１０は、ホストと通信するように構成され、コントローラ１１は、インタフェースカード１１０を介してホストの処理命令を受信してよい。プロセッサ１１２は、中央演算処理装置（英語：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、ＣＰＵ）であってよい。本発明のこの実施形態では、プロセッサ１１２は、Ｉ／Ｏ要求をホストから受信し、Ｉ／Ｏ要求を処理するように構成されてよい。Ｉ／Ｏ要求は、データライト要求又はデータリード要求であってよく、プロセッサ１１２は、更に、ソリッドステートディスク２２に、データライト要求内のデータを送信してよい。加えて、プロセッサ１１２は更に、システムガベージコレクションの処理を実行するように構成されてよい。インタフェースカード１１３は、ソリッドステートディスク２２と通信するように構成され、コントローラ１１は、インタフェースカード１１３を介して、データライト要求（データ、データの論理アドレス、およびデータの仮想アドレスを含む）を、記憶のためにソリッドステートディスク２２に送信してよい。
【００３７】
オプションで、コントローラ１１は、更に、メモリ１１１を含んでよい。メモリ１１１は、ホストから受信したデータ又はソリッドステートディスク２２から読み出されたデータを一時的に記憶するように構成される。ホストによって送信された複数のデータライト要求を受信する場合、コントローラ１１は、複数のデータライト要求内のデータを、メモリ１１１に一時的に記憶してよい。メモリ１１１の容量が、特定の閾値に達する場合、メモリ１１１に記憶されたデータ、データの仮想アドレス、データに割り当てられた論理アドレスは、ソリッドステートディスク２２に送信される。ソリッドステートディスク２２は、データを記憶する。メモリ１１１は、揮発性メモリ、フラッシュメモリチップ、又はこれらの組み合わせを含む。揮発性メモリは、例えば、ランダムアクセスメモリ（英語：ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ，ＲＡＭ）である。フラッシュメモリチップは、例えば、フロッピディスク、ハードディスク、ソリッドステートディスク（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ，ＳＳＤ）、および光ディスクのような、プログラムコードを記憶することができる様々な機械可読媒体である。メモリ１１１は、電力障害が発生した場合にデータを保護する機能を有し、電力障害が発生した場合にデータを保護する機能は、システムが電力障害が発生した後に再び起動される場合に、メモリ１１１に記憶されたデータが失われないということを意味する。
【００３８】
データがフラッシュメモリアレイに書き込まれた後に、コントローラ１１は、データの有効性を記録する必要がある。データの有効性は、データが変更されたかどうかに基づいて決定される。データが初めて書き込まれた場合に、データは、有効と記録されてよい（有効データと称される）。データが変更された場合、変更前のデータは、無効と記録される（無効データと称される）。具体的に、ビットマップは、データの有効性を記録するために使用されてよい。例えば、ビットマップのそれぞれの"ビット"は、サイズが１ＫＢであるデータの論理アドレスに対応する。"ビット"が１である場合、それは論理アドレスに記憶されたデータが有効であることを示し、"ビット"が０である場合、それは論理アドレスに記憶されたデータが無効であることを示す。ビットマップは、メモリ１１１に記憶されてよく、又は、ソリッドステートディスクに記憶されてよい。
【００３９】
システムコントローラとしてのコントローラ１１は、ソリッドステートディスクにおける制御チップと異なる独立のデバイスであることは留意すべきである。この実施形態では、ソリッドステートディスクにおける制御チップは、フラッシュコントローラと称される。
【００４０】
ソリッドステートディスク２２は、フラッシュコントローラおよび複数のフラッシュメモリチップを含む。フラッシュコントローラは、コントローラ１１によって送信されたデータライト要求又はデータリード要求の実行のような、処理を実行するように構成される。フラッシュコントローラは、ソリッドステートディスク２２の内部に位置付けられるプロセッサであってよく、又は、ソリッドステートディスク２２の外部に位置付けられるフィールドプログラマブルロジックゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ，ＦＰＧＡ）であってよい。
【００４１】
フラッシュコントローラは、フラッシュトランスレーションレイヤ（英語：  ｆｌａｓｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ，ＦＴＬ）を含む。フラッシュトランスレーションレイヤは、データの実アドレスと論理アドレスとの間の対応関係を記憶するように構成される。そのため、フラッシュトランスレーションレイヤは、論理アドレスを、ソリッドステートディスク内のデータの実アドレスに変換するように構成され、データライト要求又はデータリード要求内の論理アドレスは、システムコントローラによって送信される。データの論理アドレスは、システムコントローラによって割り当てられ、ソリッドステートディスクによってシステムコントローラに提供される論理アドレスの間隔のサブセットである。データの論理アドレスは、開始論理アドレスおよび長さを含み、ここで、開始論理アドレスは、論理チャンクグループにおけるデータの位置を示し、長さは、データのサイズを示す。データの実アドレスは、ソリッドステートディスクにおけるデータの物理アドレスであってよく、又は、物理アドレスを仮想化することによって取得され、フラッシュコントローラにのみ可視であるアドレスであってよい。仮想化によって取得された実アドレスは、システムコントローラに不可視である。一般的に、物理アドレスは、データが存在するページのページ番号および物理ブロックのブロック番号を含む。
【００４２】
ソリッドステートディスクは、一般的に、１又は複数のフラッシュメモリチップを含む。それぞれのフラッシュメモリチップは、いくつかの物理ブロック（略して、"ブロック"と称されてよい）を含む。ソリッドステートディスクは、ページ（英語：ｐａｇｅ）に基づいて読み出し又は書き込みを実行し、しかし、物理ブロックのみに基づいて、消去処理を実行する。消去処理は、ブロックの全てのビットを"１"に設定することを意味する。消去が実行される前に、フラッシュコントローラは、物理ブロックにおける有効データを他のブロックの空白ページに予めコピーする必要がある。
【００４３】
それぞれの物理ブロックは、複数のページ（英語：ｐａｇｅ）を含む。データライト要求の実行の間に、ソリッドステートディスクは、ページのユニットにデータを書き込む。例えば、コントローラ１１は、データライト要求をフラッシュコントローラに送信する。データライト要求は、データの論理アドレスを含む。データライト要求を受信した後に、フラッシュコントローラは、継続的に、受信時間順序に従って、１又は複数の物理ブロックにデータを書き込む。継続的にデータを１又は複数の物理ブロックに書き込むことは、フラッシュコントローラが、空白の物理ブロックを検索し、空白の物理ブロックがデータで満たされるまで空白の物理ブロックにデータを書き込むということを意味する。データのサイズが物理ブロックの容量を超える場合、フラッシュコントローラは、次の空白の物理ブロックを検索し、書き込みを続ける。フラッシュトランスレーションレイヤは、データが書き込まれたページの実アドレスと論理アドレスとの間の対応関係を確立して記憶する。コントローラ１１が、データを読み出すことを要求すべく、データリード要求をフラッシュコントローラに送信する場合、データリード要求は、論理アドレスを含む。フラッシュコントローラは、論理アドレスと、論理アドレスおよび実アドレスの間の対応関係とに基づいて、データを読み出し、コントローラ１１にデータを送信する。
【００４４】
フラッシュメモリアレイでは、単一のソリッドステートディスクに故障が発生し、データ損失をもたらす可能性がある。この実施形態では、安価なディスクの冗長アレイ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ，ＲＡＩＤ）技術が、データの見込みを保証するために使用される。以下は、ソリッドステートディスクにおけるデータの冗長保護の機構を説明する。
【００４５】
第１に、コントローラ１１は、論理チャンク（英語：ｃｈｕｎｋ、略してＣＫ）単位でソリッドステートディスクに対するスペースマネジメントを実行する。論理チャンクは、スペースコンセプトである。例えば、論理チャンクのサイズは、４MBであり、しかし、４MBに限定されるものではない。複数の異なるソリッドステートディスクからの論理チャンクは、論理チャンクセットを形成してよく、そしてコントローラ１１は、特定されたＲＡＩＤタイプに従って、論理チャンクセットにおける複数の論理チャンクを、データ論理チャンクグループおよびチェック論理チャンクグループに分割する。データ論理チャンクグループは、データを記憶するように構成された少なくとも２つの論理チャンクを含み、チェック論理チャンクグループは、データのチェックデータを記憶するように構成された少なくとも１つのチェック論理チャンクを含む。この実施形態では、データ論理チャンクグループおよびチェック論理チャンクグループを含む論理チャンクセットは、論理チャンクグループと称される。メモリ１１１が特定のサイズのデータで満たされる場合、コントローラ１１は、特定されたＲＡＩＤタイプに基づいて、データを複数のデータユニットに分割してよい。コントローラは、チェックユニットを取得すべく、複数のデータユニットに対して計算を実行する。データユニットおよびチェックユニットは、そして、ソリッドステートディスクに送信され、論理チャンクグループに記憶される。データグループにおけるそれぞれの論理チャンクは、データユニットを記憶するために使用され、チェックグループにおけるそれぞれの論理チャンクは、チェックユニットを記憶するために使用される。記憶後に、これらのデータユニットおよび対応するチェックユニットは、ストライプを形成する。論理チャンクグループは、複数のストライプを含む。
【００４６】
ストライプに含まれる、データユニットおよびチェックユニットのそれぞれは、ストライプユニットと称されてよい。この実施形態では、例えば、ストライプユニットのサイズは８ＫＢであり、しかし、８ＫＢに限定されるものではない。図３に示されるように、１つの論理チャンクは、論理チャンクセットを形成するべく、５つのソリッドステートディスクのそれぞれから選択され、そしてコントローラ１１は、ＲＡＩＤタイプ（例としてＲＡＩＤ６が使用される）に基づいて、論理チャンクセットにおける論理チャンクをグループ分けすると仮定する。例えば、論理チャンク１、論理チャンク２、および論理チャンク３は、データ論理チャンクグループにあり、論理チャンク４および論理チャンク５は、チェック論理チャンクグループにある。メモリ１１１に記憶されたデータのサイズが２４ＫＢ（８ＫＢ＊３）に達する場合、データは、３つのデータユニットに分割され、それぞれのデータユニットのサイズは８ＫＢである。そして、２つのチェックユニットは、計算によって取得され、それぞれのチェックユニットのサイズも、８ＫＢである。コントローラ１１は、これらのデータユニットおよびチェックユニットをソリッドステートディスクに送信し、データユニットおよびチェックユニットを、論理チャンクグループ（図３において斜線部によって示される）に記憶する。ＲＡＩＤ６の冗長保護機構に従って、いずれか２つのデータユニット又はチェックユニットが無効になる場合、無効のユニットは、残りのデータユニット又はチェックユニットに基づいて再構築されてよいということが理解できる。
【００４７】
図４を参照して、本発明の一実施形態は、データライト方法を提供する。本方法は、図１に示されるフラッシュメモリアレイに適用されてよく、図２に示されるコントローラ１１のプロセッサ１１２又はソリッドステートディスク２２によって実行されてよい。図４に示されるように、本方法は、以下の段階を含む。
【００４８】
４０１．コントローラ１１は、ホストによって送信されたデータライト要求を受信し、ここで、データライト要求は、書き込み予定データおよび書き込み予定データの仮想アドレスを含む。コントローラ１１は、そのストレージスペースを論理ユニット（Ｌｏｇｉｃａｌ  Ｕｎｉｔ，ＬＵ）の形態でホストに提供する。ホストと１又は複数の論理ユニットとの間にはバインディング関係がある。ユーザが、ホストを使用することによって、書き込み予定データをコントローラ１１に送信する場合、データを記憶するための仮想アドレスは通常、特定される必要がある。具体的に、仮想アドレスは、データが位置付けられた論理ユニットのオフセットアドレスおよび論理ユニットの識別子である。
【００４９】
４０２．コントローラ１１は、書き込み予定データをメモリ１１１に書き込む。
【００５０】
４０３．メモリ１１１におけるデータがストライプサイズに達する場合に、コントローラ１１は、データを受信するためのターゲットストライプを決定する。ストライプは、図３に示された論理チャンクグループのサブセットであり、ターゲットストライプの論理アドレスは、ターゲットストライプが位置付けられた論理チャンクグループの論理アドレスのサブセットである。ストライプサイズは、ここでは、実際に、ストライプにおける全てのデータユニットのサイズである。そして、コントローラ１１は、計算によって、データのチェックデータを取得する。データおよびチェックデータは、一緒にストライプを形成する。
【００５１】
４０４．コントローラ１１は、論理アドレスをターゲットストライプに割り当てる。論理アドレスは、ここでは、４０１における仮想アドレスと異なるということを理解されたい。仮想アドレスは、コントローラ１１およびホストには可視であるが、ソリッドステートディスク２２には不可視であるアドレスであり、一方、４０４における論理アドレスは、コントローラ１１およびソリッドステートディスク２２には可視であるが、ホストには不可視であるアドレスである。
【００５２】
コントローラ１１は、割り当てられた論理チャンクグループがあるかどうか決定する必要がある。割り当てられた論理チャンクグループがあり、論理チャンクグループが依然としてデータを収容するための十分なスペースを有する場合、コントローラ１１は、複数のソリッドステートディスクに、データを、割り当てられた論理チャンクグループに書き込むように命令してよい。具体的に、コントローラ１１は、割り当てられた論理チャンクグループの論理アドレスの間隔から、不使用の論理アドレスのセグメントを取得する。そして、４０５では、コントローラは、論理アドレスをデータライト要求に追加し、データライト要求をソリッドステートディスク２２に送信する。システムには割り当てられた論理チャンクグループが無いということ、又は、全ての割り当てられた論理チャンクグループがデータで満たされているとコントローラ１１が決定する場合、コントローラ１１は、新たな論理チャンクグループを生成する必要がある。新たな論理チャンクグループの生成処理は、次の通りであってよい。コントローラ１１は、コントローラ１１に記憶された各ソリッドステートディスクに関する利用可能なスペースの記録に基づいて、システムにおける残りのスペースは、新たな論理チャンクグループを生成するためには十分であるということを決定する。次に、コントローラ１１は、複数の異なるソリッドステートディスク２２のそれぞれから、１つの論理チャンクを取得し、特定されたＲＡＩＤタイプに基づいて、これらの論理チャンクを新たな論理チャンクグループに構成する（図３における論理チャンクグループに関する説明を参照）。次に、コントローラ１１は、論理アドレスのセグメントを、各論理チャンクに割り当て、これらの論理アドレスのセットは、新たな論理チャンクグループの論理アドレスである。新たな論理チャンクグループの論理アドレスでは、コントローラ１１は、論理アドレスのセグメントを、ターゲットストライプの論理アドレスとして取得してよい。
【００５３】
４０５．コントローラ１１は、データライト命令を、複数のソリッドステートディスク２２のそれぞれに送信する。ターゲットストライプにおけるデータが複数のソリッドステートディスクにおいて分散されるべきであるので、データライト命令は、複数のソリッドステートディスクの各ソリッドステートディスク２２に送信される必要がある。データライト命令を受信するソリッドステートディスク２２の数は、ＲＡＩＤタイプに依存する。例えば、ＲＡＩＤタイプは、３＋２（３つのデータユニットと２つのチェックユニット）である。この場合、ターゲットストライプにおけるデータは、５つのソリッドステートディスクに分散される。そのため、コントローラ１１は、５つのデータライト命令を生成する必要があり、各データライト命令は、５つのソリッドステートディスクのうちの１つに送信される。各データライト命令は、データの一部又はチェックデータの一部、データの一部又はチェックデータの一部の論理アドレス、およびデータの一部の又はチェックデータの一部の仮想アドレスを保持する。各データライト命令における論理アドレスは、ターゲットストライプに割り当てられた論理アドレスのサブセットであり、各データライト命令における仮想アドレスは、ホストによって送信されたデータライト要求からのものであることを理解されたい。
【００５４】
４０６．データライト命令を受信する各ソリッドステートディスク２２は、データライト命令におけるデータおよびデータの仮想アドレスを、物理ブロックに書き込む。オプションで、データライト命令は、データおよび仮想アドレスが同じ物理ブロックに書き込まれることを保証するためのカスタムコマンドであってよい。データが位置付けられたブロックのアドレスは、実アドレス（データが位置付けられたページ数および物理ブロックのブロック数を含む）と称され、書き込み後に、ソリッドステートディスク２２は、フラッシュトランスレーションレイヤにおいて、データの実アドレスと論理アドレスとの間の対応関係を記憶する。
【００５５】
データと一緒に物理ブロックに書き込まれた仮想アドレスは、また、逆マッピング情報と称され、逆マッピング情報は、ソリッドステートディスク２２が、ディスク内ガベージコレクションの実行の間にデータの仮想アドレスに基づいてデータの論理アドレスを取得することができるようにする。そして、データの論理アドレスは、フラッシュトランスレーションレイヤから確認され、新たな論理アドレスに変更され得る。
【００５６】
４０７．ソリッドステートディスク２２がブロックへのデータの書き込みに成功した後に、コントローラ１１は、データの論理アドレスと仮想アドレスとの間の対応関係を生成する。次に、ホストが、仮想アドレスにおけるデータを読み出すべく、データリード要求を送信する場合、コントローラ１１は、仮想アドレスと論理アドレスとの間の対応関係に基づいて、データを、ソリッドステートディスク２２から読み出してよい。
【００５７】
従来技術では、データと一緒に物理ブロックに書き込まれる逆マッピング情報は、データの論理アドレスである。データの論理アドレスが論理チャンクグループにおけるデータの位置を記述するため、データの論理アドレスは、データが１つの論理チャンクグループから他の論理チャンクグループに移行される場合に変化する。この場合、これはまた、データおよびデータの論理アドレスを含むデータ情報が変化することを意味する。この実施形態では、システムガベージコレクションの処理において、データ情報が属する論理チャンクグループのみを、実際にデータを移動させることなく変更するために、システムコントローラは、論理アドレスではなく、データおよびデータの仮想アドレスを、データ書き込みの間に物理ブロックに書き込む。これは、データの仮想アドレスがこの処理の間に変化しないためである。
【００５８】
図４に示された実施例では、逆マッピング情報は、データの仮想アドレスである。データが複数の論理チャンクグループの間で移行される場合に、データの仮想アドレスは変化しない。オプションで、他の実施例では、逆マッピング情報は、データのフィンガープリントであり、ここで、フィンガープリントは、データに対するハッシュ処理を実行することによって取得された結果である。代わりに、逆マッピング情報は、ファイルにおけるデータのオフセットアドレスである。オプションで、キーバリュー（ｋｅｙ−ｖａｌｕｅ）インタフェースを有するフラッシュメモリアレイでは、ホストによってコントローラ１１に送信されたデータライト要求は、仮想アドレスの代わりに、書き込み予定データのキーを含む。キーは、仮想アドレスを使用することによって計算を実行することによって取得される。この場合、逆マッピング情報は、書き込み予定データのキーである。これに応じて、４０７では、コントローラ１１は、データ情報の論理アドレスとキーとの間の対応関係を生成する。オプションで、ログ（ｌｏｇ）インタフェースを有するフラッシュメモリアレイでは、ホストによってコントローラ１１に送信されたデータライト要求は、仮想アドレスの代わりに、書き込み予定データのログアドレスを含む。この場合、逆マッピング情報は、書き込み予定データのログアドレスである。これに応じて、４０７では、コントローラ１１は、データ情報の論理アドレスとログアドレスとの間の対応関係を生成する。一般に、本発明のこの実施形態における逆マッピング情報は、順インデックスによってデータの実アドレスを発見するために使用されることができる任意の情報であり、上記で列挙された様々な場合に限定されるものではない。データが複数の論理チャンクグループの間で移行される場合、情報は変化しない。以下の説明では、仮想アドレスは依然として、この実施形態における例として使用される。逆マッピング情報が順インデックスによってデータの実アドレスを発見するために使用されることができる他の情報である場合、これらの処理方式は、前述において説明したものと同様である。
【００５９】
フラッシュメモリアレイにおいて、論理チャンクグループを生成するために十分に利用可能なスペースが常にあるということを保証するために、コントローラ１１は、全体のシステムの利用可能なスペースを認識するように、リアルタイムに又は定期的に、各ソリッドステートディスク２２の利用可能なスペースをモニタリングしてよい。システムの利用可能なスペースのサイズが、特定されたスペース閾値より小さい場合、システムガベージコレクションは開始される。例えば、ソリッドステートディスク２２の容量は、１２８Gであり、図１に示されるフラッシュメモリアレイに含まれる全てのソリッドステートディスクの総容量は（フラッシュメモリアレイが１０個のソリッドステートディスクを含むと仮定して）、１２８０Gであり、スペース閾値は、６４０Gに設定されてよい。言い換えれば、フラッシュメモリアレイに記憶されたデータのサイズが総容量の半分に達する場合、残りの利用可能なスペースのサイズは、また、スペース閾値に達する。この場合、コントローラ１１は、システムガベージコレクションを実行してよい。６４０Gは、スペース閾値の例に過ぎず、スペース閾値は、代わりに、別の値に設定されてよいということが理解されることができる。加えて、システムの使用されたスペースが特定されたスペース閾値に達する場合、システムガベージコレクションはまた、トリガされてよい。システムガベージコレクションは、ソリッドステートディスク内のガベージコレクションとは異なる。ソリッドステートディスク内のガベージコレクションは、ソリッドステートディスクそのものによって完了される。
【００６０】
一般的に、コントローラ１１は、論理チャンクグループのユニットにおいてシステムガベージコレクションを実行する。例えば、コントローラ１１は、ビットマップに基づいて、論理チャンクグループにおける有効データの論理アドレスを取得し、有効データの論理アドレスを、ソリッドステートディスクグループに送信し、これによって、各ソリッドステートディスク２２は、有効データの論理アドレスに基づいてデータを読み出し、データをコントローラ１１に送信することができる。コントローラ１１は、新たな論理アドレスを有効データに割り当て、ここで、新たな論理アドレスは、新たな論理チャンクグループに属する。コントローラ１１は、そして、割り当てられた新たな論理アドレスを、ソリッドステートディスクグループに送信し、各ソリッドステートディスク２２は、有効データを新たな物理ブロックに書き込んだ後の新たな論理アドレスと実アドレスとの間のマッピング関係を記憶する。そして、コントローラ１１は更に、アンマップ（英語：ｕｎｍａｐ）コマンド又はトリムコマンドを、ソリッドステートディスクグループに送信し、ここで、アンマップコマンドは、収集予定の論理チャンクグループの論理アドレスの間隔を含む。アンマップコマンドの受信後、各ソリッドステートディスク２２は、フラッシュトランスレーションレイヤに記憶された、論理アドレスの間隔の論理アドレスと実アドレスとの間の対応関係を削除する。ソリッドステートディスク２２は、更に、ブロックを、ブロックに記憶されたデータが移行済みであるので、有効データを含まない無効ブロックとして記録してよい。ソリッドステートディスク２２は、また、有効データを含まないブロックを直接消去してよい。後に、コントローラ１１は、収集予定の論理チャンクグループの論理アドレスの間隔と、論理チャンクグループにより占有された実際の物理スペース（また、実アドレスと理解されてよい）とをリリースしてよい。
【００６１】
システムガベージコレクションは、複数の物理ブロックの間のデータのマイグレーションをもたらし、ライトアンプリフィケーションの回数が増加されるということが分かることができる。本発明のこの実施形態は、実際にデータを移動させることなく、システムガベージコレクションの処理において複数の論理チャンクグループの間の有効データのマイグレーションを完了するように、システムガベージコレクションの方法を提供し、これにより、ライトアンプリフィケーションの回数を減らす。
【００６２】
図５および図６を参照して、本発明の一実施形態は、システムガベージコレクションを提供する。方法は、図１に示されるフラッシュメモリアレイに適用されてよく、図２に示されるコントローラ１１のプロセッサ１１２によって実行されてよい。図５は、本発明のこの実施形態によるシステムガベージコレクションの方法の概略フローチャートであり、図６は、２つの論理チャンクグループの間のデータのマイグレーションを実現する概略図である。図５に示されるように、方法は、以下の段階を含む。
【００６３】
５０１．ストレージシステムにおいて空きスペースが不十分である場合、コントローラ１１は、複数の論理チャンクグループから少なくとも１つの論理チャンクグループをガベージコレクション対象として選択する。選択された論理チャンクグループは、特定の条件を満たす必要がある。例えば、論理チャンクグループに含まれる無効データの量は、第１の特定された閾値に達する、又は論理チャンクグループは、複数の論理チャンクグループにおける無効データの最大量を含む論理チャンクグループである、又は論理チャンクグループに含まれる無効データの量は、第２の特定された閾値より小さい、又は論理チャンクグループは、複数の論理チャンクグループにおける無効データの最低量を含む論理チャンクグループである。無効データ又は有効データの量は、上記で説明したビットマップに基づいて計算されてよい。説明しやすくするために、この実施形態では、ガベージコレクションが実行されることになっている選択された論理チャンクグループは、第１の論理チャンクグループと称される。
【００６４】
第１の論理チャンクグループが、第１のデータ論理チャンクグループおよび第１のチェック論理チャンクグループを含むということは、図３および図６における論理チャンクグループの説明から分かることができる。第１のデータ論理チャンクグループは、少なくとも２つのデータ論理チャンクを含み、データを記憶するように構成される。第１のチェック論理チャンクグループは、少なくとも１つの論理チャンクを含み、チェックデータを記憶するように構成される。第１のデータ論理チャンクグループに含まれた各データ論理チャンクおよび第１のチェック論理チャンクグループに含まれた各チェック論理チャンクは、複数の異なるソリッドステートディスクからのものである。
【００６５】
第１の論理チャンクグループは、有効データおよび無効データを含む。一般的に、システムガベージコレクションの処理では、第１の論理チャンクグループにおける有効データは、新たな論理チャンクグループに移行される必要があり、その後、第１の論理チャンクグループはリリースされる必要がある。この実施形態では、第１の論理チャンクグループにおける第１の論理チャンクグループの有効データの位置は、第１の論理アドレスである。ソリッドステートディスクにおいて有効データが記憶された実アドレスと第１の論理アドレスとの間の対応関係がある。
【００６６】
５０２．コントローラ１１は、複数のソリッドステートディスクにおける第１のデータ論理チャンクグループの分散に基づいて、第２の論理チャンクグループを生成する。第２の論理チャンクグループは、第１の論理チャンクグループにおける有効データを受信する論理チャンクグループである。生成された第２の論理チャンクグループのＲＡＩＤタイプは、第１の論理チャンクグループのＲＡＩＤタイプと同じであり、そのため、第２の論理チャンクグループは、第２のデータ論理チャンクグループおよび第２のチェック論理チャンクグループを含み、ここで、第２のデータ論理チャンクに含まれるデータ論理チャンクの量は、第１のデータ論理チャンクグループに含まれるデータ論理チャンクの量と同じであり、第２のチェック論理チャンクグループに含まれるチェック論理チャンクの量は、第１のチェック論理チャンクグループに含まれるチェック論理チャンクの量と同じである。加えて、複数のソリッドステートディスクにおける第２のデータ論理チャンクグループの分散は、複数のソリッドステートディスクにおける第１のデータ論理チャンクグループの分散と同じである。例えば、第１のデータ論理チャンクグループに含まれる、論理チャンク１、論理チャンク２、および論理チャンク３は、それぞれ、ソリッドステートディスク２２Ａ、ソリッドステートディスク２２Ｂ、およびソリッドステートディスク２２Ｃに位置付けられる。これらのソリッドステートディスクにおける、論理チャンク１、論理チャンク２、および論理チャンク３の分散に基づいて、コントローラ１１は、ソリッドステートディスク２２Ａ、ソリッドステートディスク２２Ｂ、およびソリッドステートディスク２２Ｃのそれぞれから１つのデータ論理チャンクを取得し、第２の論理チャンクグループを生成する。言い換えれば、第２の論理チャンクグループにおける論理チャンク１'、論理チャンク２'、および論理チャンク３'はまた、それぞれ、ソリッドステートディスク２２Ａ、ソリッドステートディスク２２Ｂ、およびソリッドステートディスク２２Ｃに位置付けられる。図６に示されるように、第１の論理チャンクグループに含まれる論理チャンク１は、ソリッドステートディスク２２Ａにおいて分散される。第２の論理チャンクグループを生成するために、コントローラ１１は、ソリッドステートディスク２２Ａから論理チャンク１'を取得する。同様に、第１の論理チャンクグループに含まれるデータ論理チャンク２およびデータ論理チャンク３について、コントローラ１１はまた、ソリッドステートディスクにおけるデータ論理チャンク２およびデータ論理チャンク３の分散に基づいて、データ論理チャンク２'およびデータ論理チャンク３'を、対応するソリッドステートディスクから取得する。
【００６７】
しかしながら、この実施形態では、コントローラ１１は、複数のソリッドステートディスクにおける第１のチェックチャンクグループの分散に基づいて、第２のチェック論理チャンクグループを生成する必要が無い。ソリッドステートディスクがデータ論理チャンクを提供するソリッドステートディスクと同じではないということを条件として、実際、コントローラ１１は、複数のソリッドステートディスクから、チェック論理チャンクを提供するソリッドステートディスクを、自由に選択してよい。これは、第２のチェック論理チャンクに記憶されたチェックデータが、一般的に、マイグレーションによって第１のチェック論理チャンクから直接取得されることなく、再計算によって取得される必要があるためである。
【００６８】
５０２において、第２の論理チャンクグループに含まれるそれぞれのデータ論理チャンクは、第１の論理チャンクグループに含まれる１つのデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、分散される。しかしながら、他の実施例では、第２の論理チャンクグループにおける少なくとも１つのデータ論理チャンクが、第１の論理チャンクグループにおいて有効データを記憶するデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散されるということを保証することを条件として、ライトアンプリフィケーションの回数はまた、ある程度まで減らされることができる。加えて、第１のデータ論理チャンクグループに含まれるデータ論理チャンクに記憶されたデータは、有効データであってよく、又は無効データであってよいということが理解されることができる。言い換えれば、複数のデータ論理チャンクにおいて、一部のデータ論理チャンクのみ（さらに、１つのみのデータ論理チャンク）が、おそらく、有効データを記憶する。この場合、第２の論理チャンクグループにおける一部のデータ論理チャンク又は１つのデータ論理チャンクが、第１のデータ論理チャンクグループにおいて、有効データを記憶するデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散されることを保証するということを条件として、第２の論理チャンクグループの生成の間に、ガベージコレクションは、第１の論理チャンクグループに対して実行されてよい。
【００６９】
５０３．コントローラ１１は、第１の論理チャンクグループにおける有効データに第２の論理アドレスを割り当てる。例えば、有効データについて、図６において示される論理チャンク１における小さな斜線ボックスを参照する。図６に示される小さな斜線ボックスは、第１の論理チャンクグループにおける有効データの一部のみであり、有効データは、代わりに、データ論理チャンク２およびデータ論理チャンク３において分散されてよいということに留意すべきである。割り当てられた第２の論理アドレスは、第２の論理チャンクグループの論理アドレスのサブセットである。５０２で生成された第２の論理チャンクグループは、１つの論理チャンクグループに有効データを記憶するために使用されるのみではなくてよく、また、複数の論理チャンクグループに有効データを記憶するために使用されてもよい。
【００７０】
５０４．コントローラ１１は、メモリ１１１に記憶された有効データの第１の論理アドレスを、第２の論理アドレスに変更する。従来のシステムガベージコレクションの間に、コントローラ１１は、第１の論理チャンクグループから有効データを読み出し、有効データを第２の論理チャンクグループに再度書き込む必要がある。これは、有効データは、ソリッドステートディスクの複数の物理ブロックの間で移行され、これに応じて、有効データの実アドレスと論理アドレスの両方が変化するということを意味する。しかしながら、この実施形態では、有効データを第１の論理チャンクグループから第２の論理チャンクグループに移行させるために、有効データの論理アドレスのみが変更される（第１の論理チャンクグループにおける第１の論理アドレスは、第２の論理チャンクグループにおける第２の論理アドレスに変更される）必要があり、ソリッドステートディスクにおいて有効データが実際に記憶された位置は、変更されない。言い換えれば、この実施形態では、有効データの実アドレスを変更することなく、有効データの論理アドレスのみが変更される必要がある。例えば、第１の論理チャンクグループに対するシステムガベージコレクションを実行する前に、コントローラ１１は、有効データの第１の論理アドレスと仮想アドレスとの間の対応関係を記憶する。５０４では、コントローラ１１は、有効データの第１の論理アドレスと仮想アドレスとの間の対応関係を、割り当てられた第２の論理アドレスと仮想アドレスとの間の対応関係に変更してよい。
【００７１】
５０５．コントローラ１１は、マッピング関係変更命令を複数のソリッドステートディスクに送信し、ここで、マッピング関係変更命令は、複数のソリッドステートディスクに、有効データの実アドレスと第１の論理アドレスとの間の対応関係を、第２の論理アドレスと実アドレスとの間の対応関係に変更するように命令するために使用される。５０４では、コントローラ１１は、有効データの論理アドレスを変更し、論理アドレスの変更は更に、コントローラ１１およびソリッドステートディスク２２に記憶された有効データの論理アドレスが一致することを保証すべく、ソリッドステートディスクに通知される必要があり、これにより、有効データの将来の読み出しを容易にする。複数のソリッドステートディスクのそれぞれが、有効データの一部を記憶するので、コントローラ１１は、マッピング関係変更命令を、各ソリッドステートディスクに送信する必要があり、これにより、ソリッドステートディスクに、ソリッドステートディスクに記憶された有効データの一部の対応関係を変更するように命令するということは理解されることができる。
【００７２】
第１の論理チャンクグループにおける１つのみの第１のデータ論理チャンクが、有効データを含み、生成された第２の論理チャンクグループにおける１つの第２のデータ論理チャンクが位置づけられた１つのみのソリッドステートディスクが、有効データを記憶する第１のデータ論理チャンクが位置づけられたソリッドステートディスクと同じである場合、コントローラ１１は、マッピング関係変更命令を、有効データを含む第１のデータ論理チャンクが位置付けられたソリッドステートディスクに送信することのみが必要であるということが理解されることができる。同様に、第１の論理チャンクグループにおける特定の数（２に等しい又は２より多い）の第１のデータ論理チャンクが、有効データを含み、生成された第２の論理チャンクグループにおける同じ数の第２のデータ論理チャンクが位置づけられるソリッドステートディスクが、有効データを記憶する第１のデータ論理チャンクが位置づけられるソリッドステートディスクと同じである場合、コントローラ１１は、マッピング関係変更命令を、有効データを記憶するソリッドステートディスクに送信することのみが必要である。
【００７３】
他の場合では、第１の論理チャンクグループにおけるN（Nは２に等しい又は２より大きい整数である）個の第１のデータ論理チャンクは、有効データを含み、生成された第２の論理チャンクグループにおけるM（Mは、１に等しい又は１より大きい整数である）個の第２のデータ論理チャンクが位置付けられるソリッドステートディスクは、N個の第１のデータ論理チャンクの一部が位置付けられるソリッドステートディスクと同じであり、ここで、Mは、Nより小さい。この場合、コントローラ１１は、マッピング関係変更命令を、M個の第１のデータ論理チャンクが位置付けられるソリッドステートディスクに送信することのみが必要である。
【００７４】
図５に示されるシステムガベージコレクションの方法は、全体のフラッシュメモリアレイにおいて実施されてよく、又はフラッシュメモリアレイの一部の領域に適用可能である。例えば、複数のソリッドステートディスク２２によってコントローラ１１に提供される論理アドレスは、２つのセットに分割されてよい。本発明のこの実施形態において提供される方式は、第１のセットに対するシステムガベージコレクションのために使用され、従来の方式は、第２のセットに対するシステムガベージコレクションのために使用される。
【００７５】
第１の論理チャンクグループにおける全ての有効データが第２の論理チャンクグループに移行された後に、第１の論理チャンクグループにおける全てのデータは、無効データとなる。この場合、コントローラ１１は、第１の論理チャンクグループにおけるデータを、無効データ情報（例えば、第１の論理チャンクグループにおける論理アドレス）に変更し、無効データ情報を、第１の論理チャンクグループが分散されたソリッドステートディスク２２に送信してよく、ソリッドステートディスク２２は、情報に基づいて、物理ブロックにおける無効データを記録し、ソリッドステートディスク２２においてガベージコレクションを実行する場合に、ソリッドステートディスク２２は、有効データを再度移行させることなく、無効データを含む物理ブロックを直接再利用してよい。
【００７６】
図５に示される実施例では、システムガベージコレクションの処理が説明される。システムガベージコレクションがコントローラ１１によってトリガされて完了されることは、上述した説明から分かることができる。しかしながら、ソリッドステートディスク２２は、更に、ソリッドステートディスク２２においてガベージコレクションを実行してよく、仮で、ソリッドステートディスクにおけるガベージコレクションは、ディスク内ガベージコレクションと称される。ディスク内ガベージコレクションのほとんどの処理は、フラッシュコントローラによって完了され、いくつか場合、コントローラ１１は、フラッシュコントローラとの協働を必要とされる。図７は、本発明の実施形態に係るディスク内ガベージコレクションの方法の概略フローチャートであり、方法は、以下の段階を含む。
【００７７】
７０１．ソリッドステートディスク２２における空の物理ブロックが不十分である場合、ソリッドステートディスク２２のフラッシュコントローラは、複数の物理ブロックから、少なくとも１つの収集予定の物理ブロックを選択する。ソリッドステートディスク２２は、図１に示される任意のソリッドステートディスクである。選択された物理ブロックは、特定の条件を満たす必要がある。例えば、物理ブロックに含まれる無効データの量は、第３の特定された閾値に達する、又は物理ブロックは、複数の物理ブロックにおける無効データの最大量を含む物理ブロックである、又は物理ブロックに含まれる無効データの量は、第４の特定された閾値より小さい、又は物理ブロックは、複数の物理ブロックにおける無効データの最小量を含む物理ブロックである。説明しやすくするために、この実施形態では、ガベージコレクションが実行されることになっている選択された物理ブロックは、第１の物理ブロックと称される。
【００７８】
無効データ又は有効データの量は、ソリッドステートディスク２２におけるビットマップに基づいて計算されてよい。ソリッドステートディスク２２は、ビットマップを記憶し、ビットマップは、表１において示され、実アドレスに記憶されたデータの有効性を記述するために使用される。
【表１】
2021509981.tif 000003
【００７９】
"０"は、アドレスに記憶されたデータが無効データであることを示し、"１"は、アドレスに記憶されたデータが有効データであることを示す。ビットマップに基づいて、ソリッドステートディスク２２は、各物理ブロックの有効データ又は無効データの量を取得してよく、これにより、収集予定の第１の物理ブロックを選択する。
【００８０】
７０２．フラッシュコントローラは、有効データおよび有効データの仮想アドレスを、第１の物理ブロックから読み出す。有効データが記憶された実アドレスは、表１、例えばブロック０およびページ２から分かることができる。そして、ソリッドステートディスク２２は、実アドレスから、記憶された有効データを読み出す。データの仮想アドレスおよびデータがまとめて記憶されるので、有効データの仮想アドレスは、有効データの読み出しの間に読み出されてよい。
【００８１】
７０３．フラッシュコントローラは、仮想アドレスをコントローラ１１に送信する。従来の方式が使用される場合、有効データの論理アドレスは、有効データと一緒に記憶され、そのため、ソリッドステートディスク２２は、有効データの論理アドレスを直接取得してよい。しかしながら、この実施形態では、ソリッドステートディスク２２は、論理アドレスの代わりに、有効データの仮想アドレスを記憶するので、ソリッドステートディスク２２は、有効データの論理アドレスを照会するべく、仮想アドレスをコントローラ１１に送信する必要がある。
【００８２】
７０３では、フラッシュコントローラは、コントローラ１１によって送信された仮想アドレスに対応する論理アドレスを受信する。仮想アドレスと論理アドレスとの間の対応関係は、コントローラ１１に記憶される。例えば、論理アドレスは、ここでは、図５に示される実施形態における第２の論理アドレスであってよく、又は、ソース論理アドレスと称されてよい。
【００８３】
７０４．フラッシュコントローラは、ターゲット論理アドレスを割り当てる。
【００８４】
７０５．フラッシュコントローラは、有効データを第２の物理ブロックにコピーし、ここで、第２の物理ブロックは空白の物理ブロックである。有効データおよび有効データの仮想アドレスが、まとめて記憶されるので、フラッシュコントローラはまた、有効データを第２の物理ブロックにコピーする場合に、有効データの仮想アドレスを、第２の物理ブロックにコピーする。
【００８５】
７０６．コピーが完了した後に、フラッシュコントローラは、フラッシュトランスレーションレイヤに記憶された対応関係を変更する。具体的に、フラッシュコントローラは、第１の物理ブロックにおいて有効データが記憶された実アドレスとソース論理アドレスとの間の対応関係を削除し、第２の物理ブロックにおいて有効データが記憶された実アドレスとターゲット論理アドレスとの間の対応関係を生成する。
【００８６】
７０７．第１の物理ブロックにおけるデータを消去する。
【００８７】
同じ方式で、ソリッドステートディスク２２は、他の物理ブロックをガベージコレクション対象として選択してよく、７０１−７０７を繰り返し実行し、これにより、全体のソリッドステートディスク２２におけるガベージコレクションを完了する。
【００８８】
図７に示される説明では、仮想アドレスは、この実施形態における例として使用される。しかしながら、仮想アドレスは、他の形態で、逆マッピング情報と置き換えられてよいということは理解されることができる。この場合、ディスク内ガベージコレクションの処理方式は、図７において説明された方式と同様であり、詳細は、ここでは繰り返されない。
【００８９】
加えて、この実施形態は、更に、他のストレージシステムに適用可能であり、ストレージシステムは、システムコントローラおよび複数のシングル磁気記録方式（Ｓｈｉｎｇｌｅｄ  Ｍａｇｎｅｔｉｃ  Ｒｅｃｏｒｄｉｎｇ，ＳＭＲ）ディスクを含む。ストレージシステムはまた、図４、図５、および図７に示される方法の処理を実行してよく、ソリッドステートディスクのみが、シングル磁気記録方式ディスクで置き換えられる必要がある。詳細はここでは繰り返されない。
【００９０】
図８は、本発明の実施形態に係るシステムガベージコレクションの装置の概略構造図である。装置は、フラッシュメモリアレイのコントローラ１１に位置付けられる。図８に示されるように、装置は、決定モジュール８０１、生成モジュール８０２、割り当てモジュール８０３、および命令モジュール８０４を含む。
【００９１】
決定モジュール８０１は、収集予定の第１の論理チャンクグループを決定するように構成され、ここで、第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、複数の第１のデータ論理チャンクは、フラッシュメモリアレイに含まれる複数の異なるソリッドステートディスクにおいて分散され、複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、第１の論理チャンクにおける有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて有効データが記憶された実アドレスと第１の論理アドレスとの間の対応関係がある。モジュールの機能は、プロセッサ１１２によって別々に実行されてよく、又は、メモリ１１１におけるプログラムを呼び出すことによって、プロセッサ１１２によって実行されてよい。詳細について、図５に示された段階５０１および段階５０１の関連する説明を参照する。詳細はここでは繰り返されない。
【００９２】
生成モジュール８０２は、第２の論理チャンクグループを生成するように構成され、ここで、第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、有効データを記憶する第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される。モジュールの機能は、プロセッサ１１２によって別々に実行されてよく、又は、メモリ１１１におけるプログラムを呼び出すことによって、プロセッサ１１２によって実行されてよい。詳細について、図５に示された段階５０２および段階５０２の関連する説明を参照する。詳細はここでは繰り返されない。
【００９３】
割り当てモジュール８０３は、有効データを記憶する第１の論理チャンクが位置付けられたソリッドステートディスクにおいて分散された第２の論理チャンクにおいて、第２の論理アドレスを有効データに割り当てるように構成される。モジュールの機能は、プロセッサ１１２によって別々に実行されてよく、又は、メモリ１１１におけるプログラムを呼び出すことによって、プロセッサ１１２によって実行されてよい。詳細について、図５に示された段階５０３および段階５０３の関連する説明を参照する。詳細はここでは繰り返されない。
【００９４】
命令モジュール８０４は、有効データを記憶するソリッドステートディスクに、第１の論理アドレスと実アドレスとの間の対応関係を、第２の論理アドレスと実アドレスとの間の対応関係に変更するよう命令するように構成される。モジュールの機能は、プロセッサ１１２によって別々に実行されてよく、又は、メモリ１１１におけるプログラムを呼び出すことによって、プロセッサ１１２によって実行されてよい。詳細について、図５に示された段階５０５および段階５０５の関連する説明を参照する。詳細はここでは繰り返されない。
【００９５】
図９は、本発明の実施形態に係るソリッドステートディスクにおけるガベージコレクションのための装置の概略構造図である。図９に示されるように、装置は、処理モジュール９０１およびコレクションモジュール９０２を含む。
【００９６】
処理モジュール９０１は、収集予定の第１の物理ブロックから、有効データおよび有効データの逆マッピング情報を読み出し、逆マッピング情報をシステムコントローラに送信し、システムコントローラによって送信され、逆マッピング情報に対応するソース論理アドレスを受信し、ターゲット論理アドレスを有効データに割り当て、有効データを第２の物理ブロックにコピーするように構成される。モジュールの機能は、ソリッドステートディスク２２内のコントローラによって実行されてよい。詳細について、図７に示された段階７０１から段階７０５および段階７０１から段階７０５の関連する説明を参照する。詳細はここでは繰り返されない。
【００９７】
コレクションモジュール９０２は、第１の物理ブロックにおいて有効データが記憶された実アドレスとソース論理アドレスとの間の対応関係を削除し、第２の物理ブロックにおいて有効データが記憶された実アドレスとターゲット論理アドレスとの間の対応関係を生成し、第１の物理ブロックにおけるデータを消去するように構成される。モジュールの機能は、ソリッドステートディスク２２内のコントローラによって実行されてよい。詳細について、図７に示された段階７０６と段階７０７、および段階７０６と段階７０７の関連する説明を参照する。詳細はここでは繰り返されない。
【００９８】
本発明の全ての態様又は態様の実行可能な実施例は、具体的に、システム、方法、又はコンピュータプログラムプロダクトとして実施されてよいということは、当業者は理解するであろう。そのため、本発明の各態様又は各態様の実行可能な実施例は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態（ファームウェア、および常駐ソフトウェアなどを含む）、又は、ここでは「回路」、「モジュール」、又は「システム」と一様に称される、ソフトウェアおよびハードウェアの組み合わせを有する実施形態の形態を用いてよい。加えて、本発明の各態様又は各態様の実行可能な実施例は、コンピュータプログラムプロダクトの形態をとってよく、ここで、コンピュータプログラムプロダクトは、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードを参照する。
【００９９】
コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、消去可能プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、および光ディスクのような、電子、磁気、光、電磁、赤外線、もしくは半導電の、システム、デバイス、もしくは装置、又はこれらの任意の適切な組み合わせを含み、しかしこれらに限定されない。
【０１００】
コンピュータにおけるプロセッサは、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードを読み出し、これにより、プロセッサは、フローチャートにおける各段階又は複数の段階の組み合わせにおいて特定された機能動作を実行できる。
【０１０１】
全てのコンピュータ可読プログラムコードは、ユーザコンピュータ上で実行されてよく、又は、いくつかは、ユーザコンピュータ上で、スタンドアローンソフトウェアパッケージとして実行されてよく、又は、いくつかは、いくつかがリモートコンピュータ上で実行される間にユーザコンピュータ上で実行されてよく、又は、全ては、リモートコンピュータもしくはサーバ上で実行されてよい。いくつかの代替的な実施例の解決手段において、フローチャートにおける各段階又はブロック図の各ブロックにおいて特定される機能は、図示された順序で実行されなくてよいことにも留意されたい。例えば、言及された機能によって決まる、説明における２つの連続的な段階又は２つのブロックは、実際は、実質的に同じ時間に実行されてよく、又は、これらのブロックは、時には、逆の順序で実行されてよい。
【０１０２】
当業者であれば、本明細書において開示された実施形態で説明された例と組み合わせて、ユニット及びアルゴリズムステップが、電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実施されてよいということを認識するであろう。これらの機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的解決策の特定の適用および設計上の制約に依存する。当業者は、説明された機能を特定の各適用のために実施すべく、複数の異なる方法を使用してよいが、当該実施が本発明の範囲を越えると見なされるべきではない。
【０１０３】
上述した説明は、本発明の特定の実施例に過ぎず、しかし本発明の保護範囲を限定することを意図したものではない。本発明において開示された技術的範囲内で当業者が容易に考案したあらゆる変形又は置き換えは、本発明の保護範囲に含まれるものとする。そのため、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【図１】
2021509981.tif 000004
【図２】
2021509981.tif 000005
【図３】
2021509981.tif 000006
【図４】
2021509981.tif 000007
【図５】
2021509981.tif 000008
【図６】
2021509981.tif 000009
【図７】
2021509981.tif 000010
【図８】
2021509981.tif 000011
【図９】
2021509981.tif 000012
【手続補正書】
【提出日】令和2年7月1日(2020.7.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムガベージコレクションの方法であって、前記方法は、フラッシュメモリアレイに適用され、前記フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含み、前記方法は、前記システムコントローラによって実行され、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１のデータ論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階と、を備える方法。
【請求項２】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項１に記載の方法。
【請求項３】
第２の論理チャンクグループを前記生成する段階は、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成する段階を有し、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項２に記載の方法。
【請求項４】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
請求項４に記載の方法。
【請求項６】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
請求項４に記載の方法。
【請求項７】
収集予定の第１の論理チャンクグループを前記決定する段階の前に、前記方法は、更に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定する段階を備える
請求項１に記載の方法。
【請求項８】
システムコントローラであって、前記システムコントローラは、
複数のソリッドステートディスクと通信するように構成されたインタフェースと、
プロセッサとを備え、前記プロセッサは、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクに分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１のデータ論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを、前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように、前記インタフェースを介して命令する段階と、を行うように構成される、
システムコントローラ。
【請求項９】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項８に記載のシステムコントローラ。
【請求項１０】
前記プロセッサは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項９に記載のシステムコントローラ。
【請求項１１】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項８から１０のいずれか一項に記載のシステムコントローラ。
【請求項１２】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
請求項１１に記載のシステムコントローラ。
【請求項１３】
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
請求項１１に記載のシステムコントローラ。
【請求項１４】
前記プロセッサは更に、前記収集予定の第１の論理チャンクグループを決定する前に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定するように構成される
請求項８に記載のシステムコントローラ。
【請求項１５】
フラッシュメモリアレイであって、システムコントローラおよび複数のソリッドステートディスクを備え、
前記システムコントローラは、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１のデータ論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階とを行うように構成される
フラッシュメモリアレイ。
【請求項１６】
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
請求項１５に記載のフラッシュメモリアレイ。
【請求項１７】
前記システムコントローラは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
請求項１６に記載のフラッシュメモリアレイ。
【請求項１８】
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
請求項１５から１７のいずれか一項に記載のフラッシュメモリアレイ。
【請求項１９】
前記有効データを記憶する前記ソリッドステートディスクは更に、前記有効データが位置付けられる第１の物理ブロックから、前記有効データおよび前記有効データの逆マッピング情報を読み出し、前記逆マッピング情報を前記システムコントローラに送信するように構成され、
前記システムコントローラは、更に、前記逆マッピング情報に基づいて、前記逆マッピング情報に対応する前記第２の論理アドレスを照会し、前記第２の論理アドレスを、前記有効データを記憶する前記ソリッドステートディスクに送信するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、第３の論理アドレスを、前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーするように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第２の論理アドレスと前記実アドレスとの間の前記対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記第３の論理アドレスとの間の対応関係を生成するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第１の物理ブロックが他の有効データを含まないということを決定する場合に、前記第１の物理ブロックにおけるデータを消去するように構成される
請求項１５に記載のフラッシュメモリアレイ。
【請求項２０】
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
請求項１９に記載のフラッシュメモリアレイ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
図１は、本発明の実施形態に係るフラッシュメモリアレイの状態図である。図１に示されるフラッシュメモリアレイは、少なくとも１つのコントローラ（図１に示されるコントローラ１１）と、複数のソリッドステートディスク２２（図１に示された、ソリッドステートディスク２２Ａ、ソリッドステートディスク２２Ｂ、ソリッドステートディスク２２Ｃ、およびソリッドステートディスク２２Ｇ）とを含む。コントローラ１１は、ストレージエリアネットワーク（英語：ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ，ＳＡＮ）を介してホスト（図に示されない）に接続される。コントローラ１１は、サーバおよびデスクトップコンピュータのようなコンピューティングデバイスであってよい。オペレーティングシステムおよびアプリケーションは、コントローラ１１にインストールされる。コントローラ１１は、ホストからの入出力（Ｉ／Ｏ）要求を受信してよい。コントローラ１１は、更に、Ｉ／Ｏ要求に保持された（存在する場合には）データを記憶し、ソリッドステートディスク２２にデータを書き込んでよい。ソリッドステートディスク（英語：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ，ＳＳＤ）は、フラッシュメモリ（英語：ｆｌａｓｈ（登録商標）  ｍｅｍｏｒｙ）チップを媒体として使用するメモリであり、また、ソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ，ＳＳＤ）と称される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
オプションで、コントローラ１１は、更に、メモリ１１１を含んでよい。メモリ１１１は、ホストから受信したデータ又はソリッドステートディスク２２から読み出されたデータを一時的に記憶するように構成される。ホストによって送信された複数のデータライト要求を受信する場合、コントローラ１１は、複数のデータライト要求内のデータを、メモリ１１１に一時的に記憶してよい。メモリ１１１のサイズが、特定の閾値に達する場合、メモリ１１１に記憶されたデータ、データの仮想アドレス、データに割り当てられた論理アドレスは、ソリッドステートディスク２２に送信される。ソリッドステートディスク２２は、データを記憶する。メモリ１１１は、揮発性メモリ、フラッシュメモリチップ、又はこれらの組み合わせを含む。揮発性メモリは、例えば、ランダムアクセスメモリ（英語：ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ，ＲＡＭ）である。フラッシュメモリチップは、例えば、フロッピディスク、ハードディスク、ソリッドステートディスク（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ，ＳＳＤ）、および光ディスクのような、プログラムコードを記憶することができる様々な機械可読媒体である。メモリ１１１は、電力障害が発生した場合にデータを保護する機能を有し、電力障害が発生した場合にデータを保護する機能は、システムが電力障害が発生した後に再び起動される場合に、メモリ１１１に記憶されたデータが失われないということを意味する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
ソリッドステートディスク２２は、フラッシュコントローラおよび複数のフラッシュメモリチップを含む。フラッシュコントローラは、コントローラ１１によって送信されたデータライト要求又はデータリード要求の実行のような、処理を実行するように構成される。フラッシュコントローラは、ソリッドステートディスク２２の内部に位置付けられるプロセッサであってよく、又は、ソリッドステートディスク２２の外部に位置付けられるフィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ，ＦＰＧＡ）であってよい。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
フラッシュコントローラは、フラッシュトランスレーションレイヤ（英語：  ｆｌａｓｈ（登録商標）  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ，ＦＴＬ）を含む。フラッシュトランスレーションレイヤは、データの実アドレスと論理アドレスとの間の対応関係を記憶するように構成される。そのため、フラッシュトランスレーションレイヤは、論理アドレスを、ソリッドステートディスク内のデータの実アドレスに変換するように構成され、データライト要求又はデータリード要求内の論理アドレスは、システムコントローラによって送信される。データの論理アドレスは、システムコントローラによって割り当てられ、ソリッドステートディスクによってシステムコントローラに提供される論理アドレスの間隔のサブセットである。データの論理アドレスは、開始論理アドレスおよび長さを含み、ここで、開始論理アドレスは、論理チャンクグループにおけるデータの位置を示し、長さは、データのサイズを示す。データの実アドレスは、ソリッドステートディスクにおけるデータの物理アドレスであってよく、又は、物理アドレスを仮想化することによって取得され、フラッシュコントローラにのみ可視であるアドレスであってよい。仮想化によって取得された実アドレスは、システムコントローラに不可視である。一般的に、物理アドレスは、データが存在するページのページ番号および物理ブロックのブロック番号を含む。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
フラッシュメモリアレイでは、単一のソリッドステートディスクに故障が発生し、データ損失をもたらす可能性がある。この実施形態では、安価なディスクの冗長アレイ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ，ＲＡＩＤ）技術が、データの独立性を保証するために使用される。以下は、ソリッドステートディスクにおけるデータの冗長保護の機構を説明する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
フラッシュメモリアレイにおいて、論理チャンクグループを生成するために十分に利用可能なスペースが常にあるということを保証するために、コントローラ１１は、全体のシステムの利用可能なスペースを認識するように、リアルタイムに又は定期的に、各ソリッドステートディスク２２の利用可能なスペースをモニタリングしてよい。システムの利用可能なスペースのサイズが、特定されたスペース閾値より小さい場合、システムガベージコレクションは開始される。例えば、ソリッドステートディスク２２の容量は、１２８ＧＢであり、図１に示されるフラッシュメモリアレイに含まれる全てのソリッドステートディスクの総容量は（フラッシュメモリアレイが１０個のソリッドステートディスクを含むと仮定して）、１２８０ＧＢであり、スペース閾値は、６４０ＧＢに設定されてよい。言い換えれば、フラッシュメモリアレイに記憶されたデータのサイズが総容量の半分に達する場合、残りの利用可能なスペースのサイズは、また、スペース閾値に達する。この場合、コントローラ１１は、システムガベージコレクションを実行してよい。６４０ＧＢは、スペース閾値の例に過ぎず、スペース閾値は、代わりに、別の値に設定されてよいということが理解されることができる。加えて、システムの使用されたスペースが特定されたスペース閾値に達する場合、システムガベージコレクションはまた、トリガされてよい。システムガベージコレクションは、ソリッドステートディスク内のガベージコレクションとは異なる。ソリッドステートディスク内のガベージコレクションは、ソリッドステートディスクそのものによって完了される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
第１の論理チャンクグループは、有効データおよび無効データを含む。一般的に、システムガベージコレクションの処理では、第１の論理チャンクグループにおける有効データは、新たな論理チャンクグループに移行される必要があり、その後、第１の論理チャンクグループはリリースされる必要がある。この実施形態では、第１の論理チャンクグループにおける有効データの位置は、第１の論理アドレスである。ソリッドステートディスクにおいて有効データが記憶された実アドレスと第１の論理アドレスとの間の対応関係がある。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】変更
【補正の内容】
【００６７】
しかしながら、この実施形態では、コントローラ１１は、複数のソリッドステートディスクにおける第１のチェック論理チャンクグループの分散に基づいて、第２のチェック論理チャンクグループを生成する必要が無い。ソリッドステートディスクがデータ論理チャンクを提供するソリッドステートディスクと同じではないということを条件として、実際、コントローラ１１は、複数のソリッドステートディスクから、チェック論理チャンクを提供するソリッドステートディスクを、自由に選択してよい。これは、第２のチェック論理チャンクに記憶されたチェックデータが、一般的に、マイグレーションによって第１のチェック論理チャンクから直接取得されることなく、再計算によって取得される必要があるためである。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
上述した説明は、本発明の特定の実施例に過ぎず、しかし本発明の保護範囲を限定することを意図したものではない。本発明において開示された技術的範囲内で当業者が容易に考案したあらゆる変形又は置き換えは、本発明の保護範囲に含まれるものとする。そのため、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
［項目１］
システムガベージコレクションの方法であって、前記方法は、フラッシュメモリアレイに適用され、前記フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含み、前記方法は、前記システムコントローラによって実行され、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階と、を備える方法。
［項目２］
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
項目１に記載の方法。
［項目３］
第２の論理チャンクグループを前記生成する段階は、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成する段階を有し、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目２に記載の方法。
［項目４］
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目１から３のいずれか一項に記載の方法。
［項目５］
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
項目４に記載の方法。
［項目６］
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
項目４に記載の方法。
［項目７］
収集予定の第１の論理チャンクグループを前記決定する段階の前に、前記方法は、更に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定する段階を備える
項目１に記載の方法。
［項目８］
システムコントローラであって、前記システムコントローラは、
複数のソリッドステートディスクと通信するように構成されたインタフェースと、
プロセッサとを備え、前記プロセッサは、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクに分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを、前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように、前記インタフェースを介して命令する段階と、を行うように構成される、
システムコントローラ。
［項目９］
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
項目８に記載のシステムコントローラ。
［項目１０］
前記プロセッサは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目９に記載のシステムコントローラ。
［項目１１］
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目８から１０のいずれか一項に記載のシステムコントローラ。
［項目１２］
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
項目１１に記載のシステムコントローラ。
［項目１３］
前記第２のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第１のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
項目１１に記載のシステムコントローラ。
［項目１４］
前記プロセッサは更に、前記収集予定の第１の論理チャンクグループを決定する前に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定するように構成される
項目８に記載のシステムコントローラ。
［項目１５］
フラッシュメモリアレイであって、システムコントローラおよび複数のソリッドステートディスクを備え、
前記システムコントローラは、
収集予定の第１の論理チャンクグループを決定する段階であって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第１の論理アドレスとの間には対応関係がある、段階と、
第２の論理チャンクグループを生成する段階であって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階とを行うように構成される
フラッシュメモリアレイ。
［項目１６］
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
項目１５に記載のフラッシュメモリアレイ。
［項目１７］
前記システムコントローラは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目１６に記載のフラッシュメモリアレイ。
［項目１８］
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目１５から１７のいずれか一項に記載のフラッシュメモリアレイ。
［項目１９］
前記有効データを記憶する前記ソリッドステートディスクは更に、前記有効データが位置付けられる第１の物理ブロックから、前記有効データおよび前記有効データの逆マッピング情報を読み出し、前記逆マッピング情報を前記システムコントローラに送信するように構成され、
前記システムコントローラは、更に、前記逆マッピング情報に基づいて、前記逆マッピング情報に対応する前記第２の論理アドレスを照会し、前記第２の論理アドレスを、前記有効データを記憶する前記ソリッドステートディスクに送信するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、第３の論理アドレスを、前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーするように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第２の論理アドレスと前記実アドレスとの間の前記対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記第３の論理アドレスとの間の対応関係を生成するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第１の物理ブロックが他の有効データを含まないということを決定する場合に、前記第１の物理ブロックにおけるデータを消去するように構成される
項目１５に記載のフラッシュメモリアレイ。
［項目２０］
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目１９に記載のフラッシュメモリアレイ。
［項目２１］
ソリッドステートディスクにおけるガベージコレクションのための方法であって、
前記ソリッドステートディスクは、システムコントローラに接続され、
前記方法は、前記ソリッドステートディスクによて実行され、収集予定の第１の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、
前記逆マッピング情報を前記システムコントローラに送信する段階と、
前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、
ターゲット論理アドレスを前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーする段階と、
前記第１の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、
前記第１の物理ブロックにおけるデータを消去する段階とを備える
方法。
［項目２２］
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目２１に記載の方法。
［項目２３］
ソリッドステートディスクであって、
前記ソリッドステートディスクは、コントローラと、第１の物理ブロックと、第２の物理ブロックとを備え、
前記コントローラは、
収集予定の前記第１の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、
前記逆マッピング情報を前記システムコントローラに送信する段階と、
前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、
ターゲット論理アドレスを前記有効データに割り当て、前記有効データを前記第２の物理ブロックにコピーする段階と、
前記第１の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、
前記第１の物理ブロックにおけるデータを消去する段階とを行うように構成される
ソリッドステートディスク。
［項目２４］
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目２３に記載のソリッドステートディスク。
［項目２５］
システムガベージコレクションの装置であって、前記装置は、フラッシュメモリアレイのシステムコントローラに位置付けられ、前記装置は、
収集予定の第１の論理チャンクグループを決定するように構成される決定モジュールであって、前記第１の論理チャンクグループは、複数の第１のデータ論理チャンクを含み、前記複数の第１のデータ論理チャンクは、前記フラッシュメモリアレイに含まれる複数の異なるソリッドステートディスクにおいて分散され、前記複数の第１のデータ論理チャンクの少なくとも１つに記憶されたデータは、有効データを含み、前記第１の論理チャンクにおける前記有効データの位置は、第１の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第１の論理アドレスとの間の対応関係がある、決定モジュールと、
第２の論理チャンクグループを生成するように構成される生成モジュールであって、前記第２の論理チャンクグループは、複数の第２のデータ論理チャンクを含み、少なくとも１つの第２のデータ論理チャンクは、前記有効データを記憶する前記第１のデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散される、生成モジュールと、
前記少なくとも１つの第２の論理チャンクにおいて、第２の論理アドレスを前記有効データに割り当てるように構成される割り当てモジュールと、
前記有効データを記憶する前記ソリッドステートディスクに、前記第１の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第２の論理アドレスと前記実アドレスとの間の対応関係に変更するよう命令するように構成される命令モジュールと、を備える
装置。
［項目２６］
有効データを記憶する第１のデータ論理チャンクの量は、前記少なくとも１つの第２のデータ論理チャンクの量に等しい
項目２５に記載の装置。
［項目２７］
前記生成モジュールは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第１のデータ論理チャンクの分散に基づいて、前記第２の論理チャンクグループを生成するように構成され、
前記第２の論理チャンクグループに含まれる前記複数の第２のデータ論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目２６に記載の装置。
［項目２８］
前記第１の論理チャンクグループは更に、第１のチェック論理チャンクを含み、前記第１のチェック論理チャンクは、前記複数の第１のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第２の論理チャンクグループは更に、第２のチェック論理チャンクを含み、前記第２のチェック論理チャンクは、前記複数の第２のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目２５から２７のいずれか一項に記載の装置。
［項目２９］
前記決定モジュールは更に、前記収集予定の第１の論理チャンクグループを決定する前に、前記第１の論理チャンクグループにおける有効データの量が特定された閾値未満であるということを決定するように構成される
項目２５に記載の装置。
［項目３０］
ソリッドステートディスクにおけるガベージコレクションのための装置であって、
処理モジュールであって、収集予定の第１の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、前記逆マッピング情報を前記システムコントローラに送信する段階と、前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、ターゲット論理アドレスを前記有効データに割り当て、前記有効データを第２の物理ブロックにコピーする段階と、を行うように構成される処理モジュールと、
コレクションモジュールであって、前記第１の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第２の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、前記第１の物理ブロックにおけるデータを消去する段階とを行うように構成されるコレクションモジュールと、を備える
装置。
［項目３１］
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目３０に記載の装置。
【国際調査報告】
2021509981.tif 000013
2021509981.tif 000014
2021509981.tif 000015
2021509981.tif 000016
2021509981.tif 000017