(57)【要約】  本発明の実施例は、プロセッサと、キャッシュと、通信インタフェースとを含むコントローラを提供し、コントローラは、キャッシュから第１のデータブロックについての情報を読み取り、第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように構成され、安定性レベルは、データブロックの安定性を示すために使用され、通信インタフェースを通じて第１のデータブロックの論理アドレス及び第１のデータブロックの安定性レベルをフラッシュメモリ装置に送信するように構成される。これにより、フラッシュメモリ装置は、同じ安定性レベルを有するデータを一緒に記憶する。
2017501489.tif 000002
【特許請求の範囲】
【請求項１】
コントローラであって、
前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、
前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、
前記キャッシュは、前記第１のデータブロックについての情報を記憶し、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しく、
前記プロセッサは、
前記キャッシュから前記第１のデータブロックについての前記情報を読み取り、
(1)前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)前記第１のデータブロックの前記参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するように構成され、前記安定性レベルは、前記データブロックの安定性を示すために使用され、
前記通信インタフェースを通じて前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成されるコントローラ。
【請求項２】
データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
前記プロセッサは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項１に記載のコントローラ。
【請求項３】
データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を有し、
前記プロセッサは、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するように具体的に構成され、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であり、
前記第１の時間間隔、及び時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項１に記載のコントローラ。
【請求項４】
データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
前記プロセッサは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するように具体的に構成され、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であり、
前記第１の参照カウント間隔、前記第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項１に記載のコントローラ。
【請求項５】
前記第１のデータブロックについての前記情報は、前記第１のデータブロックのフィンガープリント情報を更に有し、前記第１のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第１のデータブロックにおいて計算を実行することにより取得され、
前記プロセッサは、
前記第１のデータブロックを受信し、
前記ハッシュ関数及び前記第１のデータブロックに従って前記第１のデータブロックの前記フィンガープリント情報を計算し、
フィンガープリント情報が前記第１のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定し、
前記第１のデータブロックを前記フラッシュメモリ装置に送信するように更に構成され、前記第１のデータブロックの前記参照カウントは、初期値に等しく、
前記第１のデータブロックの前記参照カウントを前記キャッシュに書き込むように更に構成される、請求項１、２又は４のうちいずれか１項に記載のコントローラ。
【請求項６】
前記プロセッサは、
第２のデータブロックを受信し、
前記ハッシュ関数及び前記第２のデータブロックに従って前記第２のデータブロックのフィンガープリント情報を計算し、
前記第１のデータブロックの前記フィンガープリント情報が前記第２のデータブロックの前記フィンガープリント情報と同じであると決定し、
前記初期値を増加させるように更に構成され、前記第１のデータブロックの前記参照カウントは、前記増加した初期値に等しい、請求項５に記載のコントローラ。
【請求項７】
フラッシュメモリ装置であって、
前記フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを有し、前記フラッシュメモリチップはブロックを有し、前記メインコントローラはプロセッサを有し、
前記プロセッサは、
ターゲット論理アドレスに対応する安定性レベルを取得するように構成され、前記安定性レベルは、データブロックの安定性を示すために使用され、
前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすように構成されるフラッシュメモリ装置。
【請求項８】
前記プロセッサは、最大量の無効なデータを記憶するブロックを求めて前記フラッシュメモリチップを検索するように更に構成され、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項７に記載のフラッシュメモリ装置。
【請求項９】
前記プロセッサは、最も長い時間に消去されないままになっているブロックを求めて前記フラッシュメモリチップを検索するように更に構成され、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項７に記載のフラッシュメモリ装置。
【請求項１０】
前記メインコントローラはキャッシュを更に有し、
前記プロセッサは、前記キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するように具体的に構成され、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じである、請求項７に記載のフラッシュメモリ装置。
【請求項１１】
前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項１０に記載のフラッシュメモリ装置。
【請求項１２】
コントローラがデータブロックの安定性を識別する方法であって、
前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、前記キャッシュは、前記第１のデータブロックについての情報を記憶し、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しく、前記方法は、前記プロセッサにより実行され、
前記方法は、
前記キャッシュから前記第１のデータブロックについての前記情報を読み取るステップと、
(1)前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)前記第１のデータブロックの参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するステップであり、前記安定性レベルは、前記データブロックの安定性を示すために使用されるステップと、
前記通信インタフェースを通じて前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するステップと
を有する方法。
【請求項１３】
データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
(1)前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するステップであり、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であるステップと、
前記第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップと
を有する、請求項１２に記載の方法。
【請求項１４】
データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を有し、
(2)前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するステップは、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するステップであり、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であるステップと、
前記第１の時間間隔、及び時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップと
を有する、請求項１２に記載の方法。
【請求項１５】
データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
(3)前記第１のデータブロックの前記参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するステップは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するステップであり、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であるステップと、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するステップであり、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であるステップと、
前記第１の参照カウント、前記第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップと
を有する、請求項１２に記載の方法。
【請求項１６】
前記第１のデータブロックについての前記情報は、前記第１のデータブロックのフィンガープリント情報を更に有し、前記第１のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第１のデータブロックにおいて計算を実行することにより取得され、
前記方法は、
前記第１のデータブロックを受信するステップと、
前記ハッシュ関数及び前記第１のデータブロックに従って前記第１のデータブロックの前記フィンガープリント情報を計算するステップと、
フィンガープリント情報が前記第１のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定するステップと、
前記第１のデータブロックを前記フラッシュメモリ装置に送信するステップであり、前記第１のデータブロックの前記参照カウントは、初期値に等しいステップと、
前記第１のデータブロックの前記参照カウントを前記キャッシュに書き込むステップと
を更に有する、請求項１２、１３又は１５のうちいずれか１項に記載の方法。
【請求項１７】
前記方法は、
第２のデータブロックを受信するステップと、
前記ハッシュ関数及び前記第２のデータブロックに従って前記第２のデータブロックのフィンガープリント情報を計算するステップと、
前記第１のデータブロックの前記フィンガープリント情報が前記第２のデータブロックの前記フィンガープリント情報と同じであると決定するステップと、
前記初期値を増加させるステップであり、前記第１のデータブロックの前記参照カウントは、前記増加した初期値に等しいステップと
を更に有する、請求項１６に記載の方法。
【請求項１８】
データをフラッシュメモリ装置に記憶する方法であって、
前記フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを有し、前記フラッシュメモリチップはブロックを有し、前記メインコントローラはプロセッサを有し、
前記方法は、前記プロセッサにより実行され、前記方法は、
ターゲット論理アドレスに対応する安定性レベルを取得するステップであり、前記安定性レベルは、データブロックの安定性を示すために使用されるステップと、
前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすステップと
を有する方法。
【請求項１９】
前記方法は、
最大量の無効なデータを記憶するブロックを求めて前記フラッシュメモリチップを検索するステップであり、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有するステップを更に有する、請求項１８に記載の方法。
【請求項２０】
前記方法は、
最も長い時間に消去されないままになっているブロックを求めて前記フラッシュメモリチップを検索するステップであり、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有するステップを更に有する、請求項１８に記載の方法。
【請求項２１】
前記メインコントローラはキャッシュを更に有し、
ターゲット論理アドレスに対応する安定性レベルを取得するステップは、
前記キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するステップであり、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じであるステップを有する、請求項１８に記載の方法。
【請求項２２】
前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項２１に記載の方法。
【請求項２３】
データブロックの安定性を識別する装置であって、
前記装置は、コントローラに配置され、前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、
前記装置は、
前記第１のデータブロックについての情報を記憶するように構成された記憶モジュールであり、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しい記憶モジュールと、
前記記憶モジュールから前記第１のデータブロックについての前記情報を読み取るように構成された読み取りモジュールと、
(1)前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)前記第１のデータブロックの前記参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するように構成された決定モジュールと、
前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成された送信モジュールと
を有する装置。
【請求項２４】
データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
前記決定モジュールは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項２３に記載の装置。
【請求項２５】
データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を有し、
前記決定モジュールは、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するように具体的に構成され、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であり、
前記第１の時間間隔、及び時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項２３に記載の装置。
【請求項２６】
データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
前記決定モジュールは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するように具体的に構成され、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であり、
前記第１の参照カウント間隔、前記第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項２３に記載の装置。
【請求項２７】
データをフラッシュメモリ装置に記憶する装置であって、
前記装置は、前記フラッシュメモリ装置のメインコントローラに配置され、前記フラッシュメモリ装置は、ブロックを記憶し、前記装置は、
ターゲット論理アドレスに対応する安定性レベルを取得するように構成された取得モジュールであり、前記安定性レベルは、データブロックの安定性を示すために使用される取得モジュールと、
前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすように構成されたマイグレーションモジュールと
を有する装置。
【請求項２８】
前記取得モジュールは、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するように更に構成され、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項２７に記載の装置。
【請求項２９】
前記取得モジュールは、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するように更に構成され、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項２７に記載の装置。
【請求項３０】
前記装置は記憶モジュールを更に有し、前記記憶モジュールは、論理アドレスを記憶し、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じであり、
前記取得モジュールは、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するように具体的に構成される、請求項２７に記載の装置。
【請求項３１】
前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項３０に記載の装置。
【請求項３２】
プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を有するコンピュータプログラムプロダクトであって、
前記プログラムコードに含まれる命令は、請求項１２ないし１７のうちいずれか１項に記載の方法を実行するために使用されるコンピュータプログラムプロダクト。
【請求項３３】
プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を有するコンピュータプログラムプロダクトであって、
前記プログラムコードに含まれる命令は、請求項１８ないし２２のうちいずれか１項に記載の方法を実行するために使用されるコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、ストレージ技術の分野に関し、特に、コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法に関する。
【背景技術】
【０００２】
flash  memory（フラッシュメモリ）装置は、記憶媒体がNAND  flashである不揮発性メモリであり、電源オフの後にデータが消滅しないという特徴を有する。従って、フラッシュメモリ装置は、外部メモリ又は内部メモリとして広く使用されている。記憶媒体としてNAND  flashを使用するフラッシュメモリ装置は、ソリッドステートドライブ（フルネーム：solid  state  drive、略してSSD）とも呼ばれるソリッドステートディスク（フルネーム：solid  state  disk、略してSSD）でもよく、他のメモリでもよい。
【０００３】
SSDは、一般的に複数のフラッシュメモリチップを含み、各フラッシュメモリチップは、複数のブロック（block）を有する。NAND  flashは、消去可能な特性を有する。従って、一般的な機械ハードディスク内のデータとは異なり、blockに記憶されたデータは直接変更されない。データが変更される必要がある場合、変更されたデータを記憶するアイドルblockが見つけられる必要がある。次に、変更されたデータは、アイドルblockに書き込まれ、元のデータの論理アドレスが変更されたデータにマッピングされる。元のblockに記憶された元のデータは無効になる。SSDでは、有効なデータは、blockに記憶されて論理アドレスにマッピングされたデータを示す。有効なデータは読み取られることになる。無効なデータは、blockに記憶されるが論理アドレスにマッピングされないデータを示す。無効なデータは読み取られないことになる。
【０００４】
SSDに記憶されるデータが増加すると、利用可能なアイドルblockが少なくなる。従って、アイドルblockを生成するために、SSDでガベージコレクションを実行することが必要である。ガベージコレクションは、blockの有効なデータがアイドルblockに動かされ、元のblockが消去され、これにより、消去されたblockがアイドルblockとしてデータで書き込まれることが可能になることを示す。一般的に、ガベージコレクションがSSDで実行される場合、大量の無効なデータを記憶するblockが見つけられる可能性がある。大量の無効なデータを記憶するblockが少量の有効なデータを記憶するため、アイドルblockに動かされる必要があるデータは小さい。SSDの寿命はNAND  flashの消去回数の量に関係するため、ガベージコレクションの間に動かされる少ないデータは、SSDの小さいライトアンプリフィケーション（write  amplification）を示す。しかし、異なるblockのデータが変更される可能性はほぼ等しいため、blockに含まれる無効なデータの量に明確な差は存在しない。
【発明の概要】
【０００５】
本発明の実施例の第１の態様は、コントローラを提供する。コントローラは、データ重複排除機能を備えた記憶システムに配置され、記憶システムは、フラッシュメモリ装置を含み、フラッシュメモリ装置は、第１のデータブロックを記憶する。コントローラは、プロセッサと、キャッシュと、通信インタフェースとを含む。通信インタフェースは、フラッシュメモリ装置と通信するように構成される。キャッシュは、第１のデータブロックについての情報を記憶する。第１のデータブロックについての情報は、第１のデータブロックの参照カウント、又は第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、又は第１のデータブロックの参照カウント及び第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを含む。第１のデータブロックの参照カウントは、コントローラが第１のデータブロックを受信した回数の量に等しい。プロセッサは、キャッシュから第１のデータブロックについての情報を読み取り、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように構成され、安定性レベルは、データブロックの安定性を示すために使用され、通信インタフェースを通じて第１のデータブロックの論理アドレス及び第１のデータブロックの安定性レベルをフラッシュメモリ装置に送信するように構成される。
【０００６】
第１の態様の第１の実現方式では、データブロックの参照カウントと安定性レベルとの間のマッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を含み、プロセッサは、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【０００７】
第１の態様の第２の実現方式では、データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を含み、プロセッサは、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するように具体的に構成され、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の時間間隔、及び時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【０００８】
第１の態様の第３の実現方式では、データブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を含み、プロセッサは、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するように具体的に構成され、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【０００９】
本発明の実施例の第２の態様は、メインコントローラと、フラッシュメモリチップとを含むフラッシュメモリ装置を提供する。フラッシュメモリチップはブロックを含み、メインコントローラはプロセッサを含む。プロセッサは、ターゲット論理アドレスに対応する安定性レベルを取得するように構成され、安定性レベルは、データブロックの安定性を示すために使用され、ターゲット論理アドレスのデータブロックを安定性レベルに対応するブロックに動かすように構成される。
【００１０】
第２の態様の第１の実現方式では、プロセッサは、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するように更に構成され、最大量の無効なデータを記憶するブロックは、ターゲット論理アドレスに対応するデータブロックを含む。
【００１１】
第２の態様の第２の実現方式では、プロセッサは、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するように更に構成され、最も長い時間に消去されないままになっているブロックは、ターゲット論理アドレスに対応するデータブロックを含む。
【００１２】
第２の態様の第３の実現方式では、メインコントローラはキャッシュを更に含み、プロセッサは、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、ターゲット論理アドレスに対応する安定性レベルを取得するように具体的に構成され、論理アドレスに対応する安定性レベルは、ターゲット論理アドレスに対応する安定性レベルと同じである。
【００１３】
本発明の実施例の第３の態様は、コントローラがデータブロックの安定性を識別する方法を提供する。コントローラは、データ重複排除機能を備えた記憶システムに配置され、記憶システムは、フラッシュメモリ装置を含み、フラッシュメモリ装置は、第１のデータブロックを記憶する。コントローラは、プロセッサと、キャッシュと、通信インタフェースとを含む。通信インタフェースは、フラッシュメモリ装置と通信するように構成される。キャッシュは、第１のデータブロックについての情報を記憶する。第１のデータブロックについての情報は、第１のデータブロックの参照カウント、又は第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、又は第１のデータブロックの参照カウント及び第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを含む。第１のデータブロックの参照カウントは、コントローラが第１のデータブロックを受信した回数の量に等しい。この方法は、プロセッサにより実行され、この方法は、キャッシュから第１のデータブロックについての情報を読み取るステップと、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップであり、安定性レベルは、データブロックの安定性を示すために使用されるステップと、通信インタフェースを通じて第１のデータブロックの論理アドレス及び第１のデータブロックの安定性レベルをフラッシュメモリ装置に送信するステップとを含む。
【００１４】
第３の態様の第１の実現方式では、データブロックの参照カウントと安定性レベルとの間のマッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を含み、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップは、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するステップであり、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であるステップと、第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップとを含む。
【００１５】
第３の態様の第２の実現方式では、データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を含み、(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップは、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するステップであり、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であるステップと、第１の時間間隔、及び時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップとを含む。
【００１６】
第３の態様の第３の実現方式では、データブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を含み、(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップは、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するステップであり、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であるステップと、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するステップであり、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であるステップと、第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するステップとを含む。
【００１７】
本発明の第４の態様は、データをフラッシュメモリ装置に記憶する方法を提供する。フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを含む。フラッシュメモリチップはブロックを含み、メインコントローラはプロセッサを含む。この方法は、プロセッサにより実行され、この方法は、ターゲット論理アドレスに対応する安定性レベルを取得するステップであり、安定性レベルは、データブロックの安定性を示すために使用されるステップと、ターゲット論理アドレスに対応する安定性レベルに従って、ターゲット論理アドレスのデータブロックを安定性レベルに対応するブロックに動かすステップとを含む。
【００１８】
第４の態様の第１の実現方式では、この方法は、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するステップであり、最大量の無効なデータを記憶するブロックは、ターゲット論理アドレスに対応するデータブロックを含むステップを更に含む。
【００１９】
第４の態様の第２の実現方式では、この方法は、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するステップであり、最も長い時間に消去されないままになっているブロックは、ターゲット論理アドレスに対応するデータブロックを含むステップを更に含む。
【００２０】
第４の態様の第３の実現方式では、メインコントローラはキャッシュを更に含み、ターゲット論理アドレスに対応する安定性レベルを取得するステップは、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、ターゲット論理アドレスに対応する安定性レベルを取得するステップであり、論理アドレスに対応する安定性レベルは、ターゲット論理アドレスに対応する安定性レベルと同じであるステップを含む。
【００２１】
本発明の第５の態様は、データブロックの安定性を識別する装置を提供する。この装置は、コントローラに配置され、コントローラは、データ重複排除機能を備えた記憶システムに配置され、記憶システムは、フラッシュメモリ装置を含み、フラッシュメモリ装置は、第１のデータブロックを記憶する。この装置は、第１のデータブロックについての情報を記憶するように構成された記憶モジュールであり、第１のデータブロックについての情報は、第１のデータブロックの参照カウント、又は第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、又は第１のデータブロックの参照カウント及び第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを含み、第１のデータブロックの参照カウントは、コントローラが第１のデータブロックを受信した回数の量に等しい記憶モジュールと、記憶モジュールから第１のデータブロックについての情報を読み取るように構成された読み取りモジュールと、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように構成された決定モジュールと、第１のデータブロックの論理アドレス及び第１のデータブロックの安定性レベルをフラッシュメモリ装置に送信するように構成された送信モジュールとを含む。
【００２２】
第５の態様の第１の実現方式では、データブロックの参照カウントと安定性レベルとの間のマッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を含み、決定モジュールは、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【００２３】
第５の態様の第２の実現方式では、データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を含み、決定モジュールは、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するように具体的に構成され、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の時間間隔、及び時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【００２４】
第１の態様の第３の実現方式では、データブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を含み、決定モジュールは、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するように具体的に構成され、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の参照カウント間隔、第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【００２５】
本発明の実施例の第６の態様は、データをフラッシュメモリ装置に記憶する装置を提供する。この装置は、フラッシュメモリ装置のメインコントローラに配置され、フラッシュメモリ装置は、ブロックを記憶する。この装置は、ターゲット論理アドレスに対応する安定性レベルを取得するように構成された取得モジュールであり、安定性レベルは、データブロックの安定性を示すために使用される取得モジュールと、ターゲット論理アドレスに対応する安定性レベルに従って、ターゲット論理アドレスのデータブロックを安定性レベルに対応するブロックに動かすように構成されたマイグレーションモジュールとを含む。
【００２６】
第６の態様の第１の実現方式では、取得モジュールは、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するように更に構成され、最大量の無効なデータを記憶するブロックは、ターゲット論理アドレスに対応するデータブロックを含む。
【００２７】
第６の態様の第２の実現方式では、取得モジュールは、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するように更に構成され、最も長い時間に消去されないままになっているブロックは、ターゲット論理アドレスに対応するデータブロックを含む。
【００２８】
第６の態様の第３の実現方式では、この装置は記憶モジュールを更に含み、記憶モジュールは、論理アドレスを記憶し、論理アドレスに対応する安定性レベルは、ターゲット論理アドレスに対応する安定性レベルと同じであり、取得モジュールは、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、ターゲット論理アドレスに対応する安定性レベルを取得するように具体的に構成される。
【００２９】
本発明の第７の態様は、プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を含むコンピュータプログラムプロダクトを提供し、プログラムコードに含まれる命令は、第３の態様から第３の態様の第３の実現方式のうちいずれか１つによる方法を実行するために使用される。
【００３０】
本発明の第８の態様は、プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を含むコンピュータプログラムプロダクトを提供し、プログラムコードに含まれる命令は、第４の態様から第４の態様の第３の実現方式のうちいずれか１つによる方法を実行するために使用される。
【００３１】
本発明の実施例で提供されるコントローラは、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定してもよく、安定性レベルは、データブロックの安定性を反映してもよく、データブロックの安定性レベル及び論理アドレスをフラッシュメモリ装置22に送信してもよい。これにより、フラッシュメモリ装置22は、同じ安定性レベルを有するデータブロックを一緒に記憶する。
【００３２】
本発明の実施例で提供されるフラッシュメモリ装置は、同じ安定性レベルを有するデータブロックを１つのblockに記憶してもよい。高い安定性レベルを有するデータブロックを記憶するblockについて、blockに記憶されたデータブロックが無効になる確率は低い。一般的に、blockは、無効なデータを含まないか、或いは、少量の無効なデータのみを含む。このようなblockは、高い利用率を有するblockであり、このようなblockは、フラッシュメモリ装置22でガベージコレクションが実行される場合にコレクションされない。低い安定性レベルを有するデータブロックを記憶するblockについて、blockに記憶されたデータブロックが無効になる確率は高い。blockのほとんどのデータ又は大部分のデータが全て無効になることを仮定すると、対応して、このblockに含まれる有効なデータの量は小さく、ガベージコレクションが実行されるときに動かされる必要があるデータの量は小さく、このことは、ライトアンプリフィケーションを低減する。この実施例の効果は、後のガベージコレクションにおいて動かされるべき有効なデータが低減されるという点に主に反映される点に留意すべきである。高い安定性レベルを有するデータブロックを記憶するblockと、低い安定性レベルを有するデータブロックを記憶するblockとの双方が、フラッシュメモリ装置22のライトアンプリフィケーションを低減し、これにより、フラッシュメモリ装置22の寿命を或る程度延長することが分かり得る。
【図面の簡単な説明】
【００３３】
本発明の実施例における技術的対策をより明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面を簡単に紹介する。明らかに、以下の説明における添付図面は、単に本発明のいくつかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、依然としてこれらの添付図面から他の図面を導き得る。
【図１】本発明の実施例による記憶システムの概略構成図
【図２】本発明の実施例によるコントローラの概略構成図
【図３Ａ】本発明の実施例によるフラッシュメモリ装置の記憶媒体の概略構成図
【図３Ｂ】本発明の実施例によるフラッシュメモリ装置のメインコントローラの概略構成図
【図４】本発明の実施例に従ってデータブロックの安定性を識別する方法の概略フローチャート
【図５】本発明の実施例に従ってデータをフラッシュメモリ装置に記憶する方法の概略フローチャート
【図６Ａ】本発明の実施例に従ってデータをフラッシュメモリ装置に記憶する他の方法の概略フローチャート
【図６Ｂ】本発明の実施例に従ってデータをフラッシュメモリ装置に記憶する他の方法の概略フローチャート
【図７】本発明の実施例に従ってデータブロックの安定性を識別する装置の概略構成図
【図８】本発明の実施例に従ってデータをフラッシュメモリ装置に記憶する装置の概略構成図
【発明を実施するための形態】
【００３４】
本発明の実施例は、コントローラ、フラッシュメモリ装置、データブロックの安定性を識別する方法、データをフラッシュメモリ装置に記憶する方法を提供する。これらは、同じ安定性レベルを有するデータを一緒に記憶することができる。これにより、フラッシュメモリ装置が後のガベージコレクション動作を実行するときに選択されるブロックに含まれる有効なデータの量ができるだけ小さくなり、これにより、フラッシュメモリ装置のライトアンプリフィケーションを低減する。
【００３５】
本発明の実施例を説明する前に、以下で使用される用語をまず説明する。
【００３６】
データオブジェクトは、ブロックデータ、ファイル、又は他の形式のデータでもよい実際のデータを含むオブジェクトを示す。
【００３７】
データブロックは、データオブジェクトを分割することにより形成されたデータ単位を示す。管理を簡略化するために、１つのデータオブジェクトは、複数のデータブロックに分割されてもよい。全てのデータブロックのサイズは同じである。
【００３８】
データブロックのメタデータは、データブロックの論理アドレス、データブロックの物理アドレス、論理アドレスと物理アドレスとの間のマッピング関係、及びデータブロックの書き込み時間のような、データブロックを記述するために使用される情報を示す。
【００３９】
安定したデータは、変更される低い可能性を有するデータを示す。
【００４０】
論理アドレスとも呼ばれる論理ブロックアドレス（フルネーム：logical  block  address、略してLBA）は、データブロックの記憶アドレスを示す。アドレスは、データブロックがSSDに記憶される物理アドレスではなく、外部によりアクセス可能なアドレスである。
【００４１】
物理アドレスとも呼ばれる物理ブロックアドレス（フルネーム：physical  block  address、略してPBA）は、データブロックがSSDに記憶される実際のアドレスを示す。
【００４２】
データブロックの参照カウント（reference  count又はreference  counting）は、データ重複排除機能を備えた記憶システムに適用され、記憶システムにおけるデータブロックの重複の量を示すために使用される。データ重複排除機能を備えた記憶システムでは、同じデータブロックは、記憶システムに複数回記憶される必要はない。従って、記憶システムにおけるデータブロックの重複の量は、コントローラがデータブロックを受信した回数の量に等しく、実際に１つのみのコピーが記憶される。更に、データブロックの参照カウントはまた、データブロックの物理アドレスが参照される回数の量を示してもよい。
【００４３】
SSDの有効なデータは、SSDのblockに記憶されたデータブロックが論理アドレスにマッピングされることを示す。すなわち、有効なデータの物理アドレスは、対応する論理アドレスを有する。
【００４４】
SSDの無効なデータは、SSDのblockに記憶されたデータブロックを示し、論理アドレスにマッピングされない。すなわち、無効なデータの物理アドレスは、対応する論理アドレスを有さない。
【００４５】
図１は、本発明の実施例による記憶システムの概略構成図である。図１に示す記憶システムは、コントローラ11と、複数のフラッシュメモリ装置22とを少なくとも含む。フラッシュメモリ装置22は、記憶媒体としてNAND  flashを使用する記憶装置である。フラッシュメモリ装置22は、ソリッドステートドライブ（フルネーム：solid  state  drive、略してSSD）とも呼ばれるソリッドステートディスク（フルネーム：solid  state  disk、略してSSD）を含んでもよく、他のメモリを含んでもよい。この実施例では、SSDが、フラッシュメモリ装置22を説明するための例として使用される。
【００４６】
図１は、単なる例示的な説明であり、具体的なネットワーキング方式は限定されない。例えば、コントローラ11がフラッシュメモリ装置22と通信することができるという前提で、ツリー型ネットワーキング及びリング型ネットワーキングの双方が使用され得る。
【００４７】
コントローラ11は、サーバ及びデスクトップコンピュータのような従来技術において知られているいずれかのコンピュータデバイスでもよい。コントローラ11は、ホスト（図１に図示せず）により送信されたデータオブジェクトを受信し、書き込みデータ要求をフラッシュメモリ装置22に送信してもよい。フラッシュメモリ装置22は、書き込みデータ要求に含まれるデータオブジェクトをフラッシュメモリ装置22のフラッシュメモリチップに書き込む。
【００４８】
図２を参照すると、図２は、本発明の実施例によるコントローラ11の概略構成図である。図２に示すように、コントローラ11は、プロセッサ（processor）118と、キャッシュ（cache）120と、メモリ（memory）122と、通信バス（略してバス）126と、通信インタフェース（communications  interface）128とを主に含む。プロセッサ118、キャッシュ120、メモリ122及び通信インタフェース128は、通信バス126を使用することにより相互に通信する。
【００４９】
プロセッサ118は、中央処理装置（CPU）でもよく、特定用途向け集積回路（ASIC：(application-specific  integrated  circuit)でもよく、本発明のこの実施例を実現するように構成された１つ以上の集積回路でもよい。本発明のこの実施例では、プロセッサ118は、ホストからデータオブジェクトを受信し、データオブジェクトを処理し、次に、処理されたデータオブジェクトをフラッシュメモリ装置22に送信するように構成される。
【００５０】
通信インタフェース128は、ホスト又はフラッシュメモリ装置22と通信するように構成される。
【００５１】
メモリ122は、プログラム124を記憶するように構成される。メモリ122は、例えば、高速RAMメモリ、又は不揮発性メモリ（non-volatile  memory）、又は磁気ディスク記憶装置でもよい。メモリ122は、ランダムアクセスメモリ（フルネーム：random-access  memory、略してRAM）、磁気ディスク、ハードディスク、光ディスク、ソリッドステートディスク（フルネーム：solid  state  disk、略してSSD）、又は不揮発性メモリのような、プログラムコードを記憶することができるいずれかの過渡的でない（non-transitory）機械読み取り可能媒体でもよい。
【００５２】
キャッシュ120（cache）は、ホストから受信したデータオブジェクト又はフラッシュメモリ装置22から読み取られたデータオブジェクトを一時的に記憶するように構成される。更に、キャッシュのデータ読み取り／書き込み速度は速いため、読み取りを簡略化するために、データブロックの論理アドレス及び書き込み時間についての情報のようないくつかの頻繁に使用される情報はまた、キャッシュに記憶されてもよい。キャッシュ120は、RAM、ストレージクラスメモリ（フルネーム：storage-class  memory、略してSCM）、不揮発性メモリ（フルネーム：non-volatile  memory、略してNVM）、フラッシュメモリ（flash  memory）、又はソリッドステートディスク（フルネーム：solid  state  disk、略してSSD）のような、データを記憶することができるいずれかの過渡的でない（non-transitory）機械読み取り可能媒体でもよい。これは、ここでは限定されない。
【００５３】
キャッシュ120及びメモリ122は、統合されてもよく、別々に配置されてもよい。これは、本発明のこの実施例により限定されない。
【００５４】
プログラム124は、プログラムコードを含んでもよい。プログラムコードは、コンピュータ動作命令を含む。データ重複排除機能を備えた記憶システムでは、プログラムコードは、データ重複排除モジュールと、安定性決定モジュールとを含んでもよい。データ重複排除モジュールは、ホストから受信したデータオブジェクトがフラッシュメモリ装置22に送信される前にデータを重複排除するように構成される。
【００５５】
データ重複排除機能について簡単に以下に説明する。
【００５６】
コントローラ11がホストにより送信されたデータオブジェクトを受信した後に、データオブジェクトは、同じサイズの複数のデータブロックに分割されてもよい。説明を簡略化するために、各データブロックのサイズが4KBであることが説明の例として使用される。データブロックのサイズは4KBに限定されないことが認識され得る。各データブロックについて、プロセッサ118は、データブロックと同じ他のデータブロックが各フラッシュメモリ装置22に記憶されているか否かを別々に決定する。データブロックと同じ他のデータブロックが各フラッシュメモリ装置22に記憶されていない場合、プロセッサ118は、データブロックをフラッシュメモリ装置22に書き込み、データブロックの参照カウントを初期値（例えば、1に等しい値）に設定する。データブロックと同じ他のデータブロックがフラッシュメモリ装置22に既に記憶されている場合、プロセッサ118は、データブロックの参照カウントを1だけ増加させる。記憶されるデータブロックは、フラッシュメモリ装置22に再び書き込まれる必要はない。従って、参照カウントは、データブロックの安定性を或る程度反映する。大きい参照カウントを備えたデータブロックは、長期に使用される高い確率を有する。この理由は、大きい参照カウントは、削除される小さい確率を示すからである。従って、そのデータブロックは、高い安定性レベルを有する。
【００５７】
各フラッシュメモリ装置22に記憶された他の同じデータブロックが存在するか否かを決定する一般的なやり方は、フラッシュメモリ装置22に記憶された各データブロックのフィンガープリント情報を予め記憶し、各データブロックのフィンガープリント情報は、予め設定されたハッシュ関数に従って各データブロックにおいて計算を実行することにより取得され、次に、記憶されるべきデータブロックのフィンガープリント情報を取得するために、ハッシュ関数に従って記憶されるべきデータブロックにおいて計算を実行し、フィンガープリント情報と、各データブロックの予め記憶されたフィンガープリント情報のフィンガープリント情報とをマッチさせることである。同じフィンガープリント情報が存在する場合、フラッシュメモリ装置22は、同じデータブロックを記憶している。同じフィンガープリント情報が存在しない場合、記憶されるべきデータブロックは記憶されない。各データブロックのフィンガープリント情報は、キャッシュ120に記憶されてもよく、フラッシュメモリ装置22に記憶されてもよい。更に、各フラッシュメモリ装置22に記憶された同じデータブロックが存在するか否かを決定するために、他の方式が更に使用されてもよく、これはここでは列挙されない。
【００５８】
更に、最初にフラッシュメモリ装置22に書き込まれたデータブロックについて、コントローラ11は、データブロックのフィンガープリント情報とデータブロックのLBAとの間のマッピング関係を記憶してもよい。コントローラ11がデータブロックのLBAをフラッシュメモリ装置22に送信する必要がある場合、LBAは、データブロックのフィンガープリント情報及びマッピング関係に従って見つけられてもよい。具体的には、データブロックのLBAは、フラッシュメモリ装置22がデータブロックを記憶した後にコントローラ11に送信されてもよく、コントローラ11によりデータブロックに割り当てられたLBAでもよい。フラッシュメモリ装置22は、LBAとPBAとの間のマッピング関係を記憶しているため、フラッシュメモリ装置22は、割り当てられたLBAに従って、データブロックをPBAに対応する記憶空間に書き込んでもよい。
【００５９】
しかし、参照カウントは、データブロックの安定性を決定する１つの参照ファクタでもよく、データブロックの安定性に影響を与え得る他の参照ファクタは、データブロックがフラッシュメモリ装置22に記憶されている期間の長さである。データブロックがフラッシュメモリ装置22に記憶されている期間の長さは、現在のシステム時間からデータブロックをフラッシュメモリ装置に書き込んだ時点を引いたものにより取得された差に等しくてもよい。データブロックをフラッシュメモリ装置に書き込んだ時点は、データブロックのメタデータの一部としてキャッシュ120又はフラッシュメモリ装置22に記憶されてもよい。データブロックがフラッシュメモリ装置22に記憶されている期間の長さが大きいほど、データブロックが安定しており、データブロックがフラッシュメモリ装置22に記憶されている期間の長さが小さいほど、データブロックは不安定であることが認識され得る。時間の長さは、データブロックがフラッシュメモリ装置22に記憶されている期間の長さを反映する値でもよく、現在のシステム時間からデータブロックがフラッシュメモリ装置に書き込まれた時点を引いたものにより取得された差に厳密に等しくないことが認識され得る。
【００６０】
安定性決定モジュールの主な機能は、参照カウントに基づいて、或いはデータブロックがフラッシュメモリ装置22に記憶されている期間の長さに基づいて、或いは参照カウント及びデータブロックがフラッシュメモリ装置22に記憶されている期間の長さに基づいて、データブロックの安定性を決定することである。従って、データブロックの安定性レベルが取得される。安定性レベルは、データブロックの安定性を反映する値である。大きい値は高い安定性を示し、小さい値は低い安定性を示す。或いは、安定性レベルはまた、小さい値が高い安定性を示し、大きい値が低い安定性を示すように規定されてもよい。
【００６１】
安定性決定モジュールによりデータブロックの安定性レベルを取得した後に、コントローラ11は、データブロックのLBA及び安定性レベルをフラッシュメモリ装置22に送信する。これにより、フラッシュメモリ装置22は、同じレベルを有するデータブロックを一緒に１つ以上のブロックに記憶する。
【００６２】
以下に、フラッシュメモリ装置22の構成及び機能について説明する。
【００６３】
図３Ａを参照すると、図３Ａは、本発明の実施例によるフラッシュメモリ装置22の概略構成図である。この実施例では、SSDがフラッシュメモリ装置22を説明する例として使用される。
【００６４】
図３Ａに示すように、フラッシュメモリ装置22は、メインコントローラ220と記憶媒体221とを含む。メインコントローラ220は、コントローラ11によりフラッシュメモリ装置22に送信されたI/O要求又は他の情報を受信するように構成される。例えば、情報は、データブロックの論理アドレス及び安定性レベルでもよく、メインコントローラ220は、受信したI/O要求を実行するように、例えば、I/O要求に含まれるデータブロックを記憶媒体221に書き込むように、或いは記憶媒体221からデータブロックを読み取り、データブロックをコントローラ11に戻すように更に構成される。ここでのメインコントローラ220は、SSDのメインコントローラである。
【００６５】
記憶媒体221は、一般的に複数のフラッシュ（flash）チップを含む。各フラッシュメモリチップは、複数のブロック（block）を含む。各blockは、複数のページ（page）を含む。メインコントローラ220は、ページの単位でデータブロックをblockに書き込む。
【００６６】
NAND  flashは、消去可能な特性を有する。従って、一般的な機械ハードディスク内のデータとは異なり、blockに記憶されたデータは直接変更されない。blockのデータが変更される必要がある場合、アイドルblockが見つけられる必要があり、変更されたデータは、アイドルblockに書き込まれる。次に、元のblockのデータは無効になる。SSDに記憶されるデータが増加すると、利用可能なアイドルblockが少なくなる。従って、利用可能なアイドルblockを生成するために、SSDでガベージコレクションが実行される必要がある。この実施例では、ガベージコレクションが実行される場合、一般的に、最大量の無効なデータを記憶するblockがコレクションのために順に選択される。ガベージコレクションのトリガー条件は、フラッシュメモリチップに含まれるアイドルblockの量が第１の閾値未満であることである。第１の閾値は、10より大きく100未満の整数でもよい。
【００６７】
更に、インスペクション（inspection）は、フラッシュメモリ装置22で定期的に実行される必要がある。インスペクションは、blockが長期に消去されないままになっているためデータ喪失を妨げるために、フラッシュメモリチップに記憶されたデータを定期的に動かす動作を示す。NAND  flashでは、データを維持する能力は、或る期間のみ保持される。従って、NAND  flashに記憶されたデータは、周期的に他のblockに動かされる必要がある。この実施例では、インスペクションが実行される場合、最も長い時間に消去されないままになっているblockが順に選択され、blockの有効なデータがアイドルblockに動かされ、次に、元のblockが消去される。インスペクションのトリガー条件は、現在のインスペクション周期が始まることでもよい。
【００６８】
SSDの寿命は、NAND  flashの消去回数の量に関係する。従って、SSDの内部で動かすデータの回数をできるだけ低減することは、ライトアンプリフィケーションを低減するのに有用であり、これにより、SSDの寿命を延長する。この実施例では、SSDの内部でのデータの移動は、ガベージコレクション又はインスペクションが実行される場合のblock内の有効なデータの移動を主に示す。ガベージコレクションが実行されるblockでは、blockに含まれる小さい有効なデータは、動かされるべき小さいデータを示すことが認識され得る。従って、本発明は、主に、各データブロックの安定性レベルに従って、同じ安定性レベルを備えたデータブロックを一緒に記憶する。これにより、後のガベージコレクションの実行中に動かされるべき有効なデータができるだけ小さくなる。
【００６９】
図３Ｂは、本発明の実施例に記載のフラッシュメモリ装置22のメインコントローラ220の概略構成図である。
【００７０】
メインコントローラ220は、プロセッサ（processor）218と、キャッシュ（cache）230と、通信バス（略してバス）226と、通信インタフェース（communications  interface）128とを主に含む。プロセッサ218、キャッシュ230及び通信インタフェース228は、通信バス226を使用することにより相互に通信する。
【００７１】
プロセッ218は、中央処理装置（CPU）でもよく、特定用途向け集積回路（ASIC：(application-specific  integrated  circuit)でもよく、本発明のこの実施例を実現するように構成された１つ以上の集積回路でもよい。本発明のこの実施例では、プロセッサ218は、コントローラ11からI/O要求、又はデータブロックの論理アドレス及びデータブロックの安定性レベルのような情報を受信するように構成されてもよい。更に、プロセッサ218は、I/O要求を実行するように更に構成される。
【００７２】
通信インタフェース228は、コントローラ11及び記憶媒体221と通信するように構成される。
【００７３】
キャッシュ230（cache）は、データブロックの論理アドレス及びデータブロックの安定性レベルのような、コントローラ11から受信した情報を一時的に記憶するように構成される。キャッシュ230は、RAM、SCM、及びNVMのような、データを記憶することができるいずれかの過渡的でない（non-transitory）或いは過渡的な（transitory）機械読み取り可能媒体でもよい。これは、ここでは限定されない。更に、或る適用シナリオでは、キャッシュ230はまた、メインコントローラ220の外に配置されてもよい。
【００７４】
この実施例では、マッピングテーブルは、キャッシュ230に記憶されてもよく、コントローラ11から受信したデータブロックのLBAとデータブロックの安定性レベルとの間のマッピング関係を記憶するために使用される。一般的に、キャッシュ230は、LBAとPBAとの間のマッピング関係を記録するマッピングテーブルを更に記憶する。本発明のこの実施例では、LBAと安定性レベルとの間のマッピング関係は、マッピングテーブルに基づいて追加されてもよい。
【００７５】
或いは、複数のアレイがキャッシュ230に記憶される。各アレイは、安定性レベルに対応しており、アレイは、安定性レベルに対応する複数のデータブロックの論理アドレスを記憶してもよい。
【００７６】
或いは、キャッシュ230は、マッピングテーブルを記憶しなくてもよい。その代わりに、同じ安定性レベルを備えたデータブロックの論理アドレスは、キャッシュ230の１つのキャッシュ空間に一緒に記憶される。例えば、コントローラ11は、キャッシュエリア分割情報をフラッシュメモリ装置22に事前に送信してもよい。キャッシュエリア分割情報は、異なる安定性レベル（例えば、1〜10までの10個の安定性レベル）を含む。キャッシュエリア分割情報を受信した後に、フラッシュメモリ装置22は、10個の安定性レベルに従って、キャッシュ230を10個のキャッシュエリアに分割する。各キャッシュエリアは、安定性レベルに対応しており、安定性レベルに対応するデータブロックの論理アドレスを記憶するために特に使用される。或いは、コントローラ11は、キャッシュエリア分割情報をフラッシュメモリ装置22に事前に送信しなくてもよく、データブロックの論理アドレス及びデータブロックの安定性レベルをフラッシュメモリ装置22に直接送信する。フラッシュメモリ装置22は、データブロックの安定性レベルに従って、キャッシュ230からキャッシュエリアのセグメントを区画し、キャッシュエリアを安定性レベルにマッピングする（これは、キャッシュエリアと安定性レベルとの間のマッピング関係を記憶することを意味する）。次に、キャッシュエリアは、安定性レベルに対応するデータブロックの論理アドレスを記憶するために特に使用される。前述の２つの方式の双方は、同じ安定性レベルを有するデータブロックの論理アドレスをキャッシュ230の１つのキャッシュ空間に一緒に記憶するために使用されてもよい。
【００７７】
以下に、本発明の実施例に従ってデータブロックの安定性を識別する方法を説明する。この方法は、コントローラ11の観点から、データブロックの参照カウント、時間の長さ、又は参照カウント及び時間の長さに従って、データブロックの安定性レベルを取得し、安定性レベルをフラッシュメモリ装置22に送信する処理を記載する。図４を参照すると、図４は、データブロックの安定性を識別する方法の概略フローチャートである。この方法は、図１に示す記憶システム及び図２に示すコントローラ11に適用されてもよく、コントローラ11のプロセッサ118により実行される。この方法は以下を含む。
【００７８】
ステップS201：第１のデータブロックについての情報をキャッシュ120から読み取る。第１のデータブロックについての情報は、第１のデータブロックの参照カウント、又は第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、又は第１のデータブロックの参照カウント及び第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを含む。第１のデータブロックの参照カウントは、コントローラが第１のデータブロックを受信した回数の量に等しい。
【００７９】
この実施例では、第１のデータブロックは、フラッシュメモリ装置22に記憶された複数のデータブロックのうち１つであり、第１のデータブロックは、ここでは説明のための例として使用される点に留意すべきである。更に、この実施例の第１のデータブロックは、有効なデータを含むデータブロックを示す。無効なデータを含むデータブロックの参照カウントは0である。コントローラ11は、参照カウントが0であるデータブロックについての情報をキャッシュ120から削除する。
【００８０】
更に、ステップS201のトリガー条件は、コントローラ11により受信した全てのデータブロックのサイズが予め設定されたボリューム閾値を超えたこと、又は予め設定された時間間隔が到達したこと、又は前述の２つのトリガー条件のうち１つが満たされたことに設定されてもよい。予め設定されたボリューム閾値は、図１に示す記憶システムによりユーザに提示された利用可能なボリュームに等しくてもよく、利用可能なボリュームの整数倍に等しくてもよい。
【００８１】
ステップS202：第１のデータブロックについての情報に従って、第１のデータブロックの安定性レベルを決定する。
【００８２】
コントローラ11は、安定性レベルの量を予め設定してもよい。
【００８３】
任意選択で、実現方式は、フラッシュメモリ装置22に記憶された各データブロックが参照カウントを有するため、参照カウントが複数の参照カウント間隔に分割されてもよく、各参照カウント間隔が安定性レベルに対応している。例えば、10個の安定性レベルが予め設定されることを仮定すると、参照カウント間隔と安定性レベルとの間のマッピング関係は、表１に示されてもよい。
【表１】
2017501489.tif 000003
【００８４】
次に、対応して、第１のデータブロックについての情報に従って、第１のデータブロックの安定性レベルを決定することは、具体的に、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定し、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１の参照カウント間隔及び表１に示すマッピング関係に従って、第１のデータブロックの安定性レベルを決定することでもよい。例えば、第１のデータブロックの参照カウントが3である場合、第１のデータブロックに対応する安定性レベルは9である。
【００８５】
任意選択で、他の実現方式は、複数のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを複数の時間間隔に分割することである。例えば、10個の安定性レベルが予め設定されることを仮定すると、時間間隔と安定性レベルとのマッピング関係は、表２に示されてもよい。
【表２】
2017501489.tif 000004
【００８６】
次に、対応して、第１のデータブロックについての情報に従って、第１のデータブロックの安定性レベルを決定することは、具体的に、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定し、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の時間間隔及び表２に示すマッピング関係に従って、第１のデータブロックの安定性レベルを決定することでもよい。例えば、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さが12である場合、第１のデータブロックに対応する安定性レベルは7である。
【００８７】
任意選択で、更に他の実現方式は、複数の時間の長さを少なくとも２つの時間間隔に分割し、複数の参照カウントを少なくとも２つの参照カウント間隔に分割することである。時間間隔と参照カウント間隔と安定性レベルとの間にマッピング関係が存在する。
【００８８】
例えば、時間の長さが閾値Tより大きいか否かは、時間の長さを少なくとも２つの時間間隔に分割する決定基準として使用されてもよい。一方の時間間隔は、(0,T)であり、他方の時間間隔は[T,+∞)である。時間の長さが[T,+∞)内であるデータブロックの安定性レベルは、時間の長さが(0,T)内であるデータブロックの安定性レベルより高い。各時間間隔において、参照カウントは、複数の参照カウント間隔に更に分割され、同じ参照カウント間隔を有するデータブロックの安定性レベルは同じである。異なる参照カウント間隔に属するデータブロックについて、参照カウントが大きいデータブロックの安定性レベルは、参照カウントが小さいデータブロックの安定性レベルより大きい。10個の安定性レベルが予め設定されることを仮定すると、時間間隔と参照カウント間隔と安定性レベルとの間のマッピング関係は、表３に示されてもよい。
【表３】
2017501489.tif 000005
【００８９】
或いは、複数の参照カウントは、２つの参照カウント間隔にグループ化されてもよい。一方の参照カウント間隔は、(0,10)であり、他方の参照カウント間隔は、[10,+∞)である。参照カウントが[10,+∞)内であるデータブロックの安定性レベルは、参照カウントが(0,10)内であるデータブロックの安定性レベルより高い。各参照カウント間隔において、複数の時間の長さは、複数の時間間隔に更に分割され、同じ時間間隔内のデータブロックの安定性レベルは同じである。異なる時間間隔内のデータブロックについて、時間の長さが大きいデータブロックの安定性レベルは、時間の長さが小さいデータブロックの安定性レベルより高い。10個の安定性レベルが予め設定されることを仮定すると、時間間隔と参照カウント間隔と安定性レベルとの間のマッピング関係は、表４に示されてもよい。
【表４】
2017501489.tif 000006
【００９０】
対応して、第１のデータブロックについての情報に従って、第１のデータブロックの安定性レベルを決定することは、具体的に、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定し、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定し、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の時間間隔及び参照カウント間隔と時間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定することでもよい。表３に示すマッピング関係が使用されても表４に示すマッピング関係が使用されても、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ及び参照カウントが決定される限り、第１のデータブロックの安定性レベルも決定され得ることが認識され得る。
【００９１】
任意選択で、前述の２つの実現方式で、コントローラ11がキャッシュ120に記憶された各データブロックを処理した後に、現在のタスクが完了し、各データブロックがフラッシュメモリ装置に記憶されている期間の長さから固定値が引かれてもよい。これにより、次のタスクが開始する場合、時間の長さは、小さい基数から次第に増加してもよい。
【００９２】
ステップS203：第１のデータブロックの論理アドレス及び第１のデータブロックの安定性レベルをフラッシュメモリ装置22に送信する。
【００９３】
具体的に、コントローラ11は、第１のデータブロックの論理アドレス及び安定性レベルをフラッシュメモリ装置22に独立して送信してもよく、第１のデータブロックの論理アドレス及び安定性レベルを、他のデータブロックの論理アドレス及び安定性レベルと一緒にフラッシュメモリ装置22に送信してもよい。例えば、論理アドレス及び安定性レベルは、ユーザ定義のコマンドに含まれてもよく、次に、このコマンドがフラッシュメモリ装置22に送信される。
【００９４】
この実施例では、コントローラ11は、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定してもよく、安定性レベルは、データブロックの安定性を反映してもよく、データブロックの安定性レベル及び論理アドレスをフラッシュメモリ装置22に送信してもよい。これにより、フラッシュメモリ装置22は、同じ安定性レベルを有するデータブロックを一緒に記憶する。
【００９５】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に記憶する方法を説明する。この方法は、フラッシュメモリ装置22の観点から、同じ安定性レベルを有するデータブロックを一緒に記憶する処理を記載する。図５を参照すると、図５は、データをフラッシュメモリ装置に記憶する方法の概略フローチャートである。この方法は、図１に示す記憶システム並びに図３Ａ及び図３Ｂに示すフラッシュメモリ装置22に適用されてもよく、フラッシュメモリ装置22のプロセッサ218により実行される。この方法は以下を含む。
【００９６】
ステップS301：ターゲット論理アドレスに対応する安定性レベルを取得する。安定性レベルは、データブロックの安定性を示すために使用される。
【００９７】
具体的に、ステップS301の前に、フラッシュメモリ装置22は、コントローラ11により送信された複数の論理アドレス及び論理アドレスに対応する安定性レベルを受信し、複数の論理アドレス及び論理アドレスに対応する安定性レベルをキャッシュ230に記憶してもよい。ターゲット論理アドレスは、キャッシュ230に記憶される複数の論理アドレスのうち１つである。データ移動のタスクがトリガーされた場合、ターゲット論理アドレスに対応する安定性レベルは、キャッシュ230から取得されてもよい。
【００９８】
ステップS302：ターゲット論理アドレスに対応する安定性レベルに従って、ターゲット論理アドレスのデータブロックを安定性レベルに対応するブロックに動かす。
【００９９】
この実施例では、フラッシュメモリチップのblockと安定性レベルとの間のマッピング関係は、同じ安定性レベルを有するデータブロックを同じblockに動かすように確立されてもよい。このマッピング関係に従って、ターゲット論理アドレスに対応するデータブロックは、元のブロックから読み取られ、ターゲットデータブロックに対応する安定性レベルに対応するblockに書き込まれてもよい。フラッシュメモリチップのblockと安定性レベルとの間のマッピング関係は、予め確立されてもよく、同じ安定性レベルを有する１つのデータブロック又は複数のデータブロックが最初にblockに書き込まれた後に、安定性レベルとblockとの間に記録されたマッピング関係でもよい。
【０１００】
ターゲット論理アドレスに対応するデータブロックが元のblockから読み取られることは、具体的に、一般的にフラッシュメモリ装置22のキャッシュ230又はフラッシュメモリチップがマッピングテーブルを記憶し、マッピングテーブルは、各データブロックの論理アドレスと物理アドレスとの間のマッピング関係を記憶するために使用され、これにより、ステップS301で受信した論理アドレス及びマッピングテーブルに従って、データブロックが対応する物理アドレスが位置する記憶空間から読み取られ得ることでもよい。
【０１０１】
同じ安定性レベルを有するデータブロックは、この実施例で提供される方式において１つのblockに記憶されてもよい。高い安定性レベルを有するデータブロックを記憶するblockについて、blockに記憶されたデータブロックが無効になる確率は低い。一般的に、blockは、無効なデータを含まないか、或いは、少量の無効なデータのみを含む。従って、このblockは、高い利用率を有し、フラッシュメモリ装置22でガベージコレクションが実行される場合にコレクションされない。低い安定性レベルを有するデータブロックを記憶するblockについて、blockに記憶されたデータブロックが無効になる確率は高い。blockのほとんどのデータ又は大部分のデータが全て無効になる場合、このblockに含まれる、ガベージコレクションが実行されるときに動かされる必要がある有効なデータの量は小さい。このことは、ライトアンプリフィケーションを低減することになる。この実施例の効果は、後のガベージコレクションにおいて動かされるべき有効なデータが低減されるという点に主に反映される点に留意すべきである。高い安定性レベルを有するデータブロックを記憶するblockと、低い安定性レベルを有するデータブロックを記憶するblockとの双方が、フラッシュメモリ装置22のライトアンプリフィケーションを低減することができ、これにより、フラッシュメモリ装置22の寿命を或る程度延長することが分かり得る。
【０１０２】
更に、例示的な実現方式は、前述のステップS301及びステップS302は、ガベージコレクション動作と結合される。フラッシュメモリ装置22がガベージコレクションを実行する必要がある場合、ガベージコレクションは、ステップS301及びステップS302に記載の方式で実行される。具体的に、フラッシュメモリチップに含まれるアイドルblockの量が第１の閾値未満である場合、最大量の無効なデータを記憶するブロックがフラッシュメモリチップから順に見つけられる。次に、動かされるべきデータブロックの論理アドレスは、これらのブロックから取得される。更に、論理ブロックに対応する安定性レベルは、論理アドレスと安定性レベルとの間のマッピング関係を検索することにより取得される（図５の実現方式を参照すると、論理アドレスはターゲット論理アドレスである）。次に、論理アドレスに対応する動かされるべきデータブロックは、対応するブロックに書き込まれる。
【０１０３】
他の例示的な実現方式は、前述のステップS301及びステップS302は、インスペクション動作と結合される。フラッシュメモリ装置22がインスペクションを実行する必要がある場合、インスペクションは、ステップS301及びステップS302に記載の方式で実行される。具体的に、予め設定されたインスペクション周期が始まった場合、最も長い時間に消去されないままになっているブロックがフラッシュメモリチップから順に見つけられる。次に、動かされるべきデータブロックの論理アドレスは、これらのブロックから取得される。更に、論理ブロックに対応する安定性レベルは、論理アドレスと安定性レベルとの間のマッピング関係を検索することにより取得される（図５の実現方式を参照すると、論理アドレスはターゲット論理アドレスである）。次に、論理アドレスに対応する動かされるべきデータブロックは、対応するブロックに書き込まれる。
【０１０４】
当業者は、ガベージコレクションが実行されてもインスペクションが実行されても、有効なデータのみが動かされる必要があり、無効なデータは動かされる必要がないことを認識し得る。この理由は、無効なデータは再び読み取られることができないからである。更に、有効なデータが完全に動かされた後に、全ての無効なデータはblock単位で消去され得る。この実施例では、コントローラ11により送信されてフラッシュメモリ装置22により受信された論理アドレスは、全て有効なデータを含むデータブロックの論理アドレスであるため（図４に示す実施例のステップS201の説明を参照のこと）、コントローラ11により送信されてフラッシュメモリ装置22により受信された論理アドレスに対応するデータブロックは、全て動かされる必要がある。
【０１０５】
前述に提供した２つの例示的な実現方式に従って、同じ安定性レベルを有するデータブロックは、フラッシュメモリ装置22がガベージコレクション又はインスペクションを実行する場合に一緒に記憶されてもよい。フラッシュメモリ装置は、一般的に、ガベージコレクション又はインスペクションを実行する場合にデータ移動を実行する必要があるため、この実施例では余分なデータ移動動作が存在せず、このことは、ライトアンプリフィケーションを更に低減する。
【０１０６】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に記憶する他の方法を説明する。図６Ａ及び図６Ｂを参照すると、図６Ａ及び図６Ｂは、データをフラッシュメモリ装置に記憶する概略フローチャートであり、この方法は、図１に示す記憶システムに適用されてもよい。
【０１０７】
この実施例では、ステップS101〜ステップS104は、コントローラ11が受信したデータブロックをフラッシュメモリ装置22に記憶する処理を記載している。ステップS101〜ステップS104は、図２に示すコントローラ11に適用されてもよく、コントローラ11のプロセッサ118により実行される。
【０１０８】
ステップS101において、コントローラ11は、ホストにより送信された書き込みデータ要求を受信する。書き込みデータ要求は、データオブジェクトと、データオブジェクトのアドレス情報とを含み、アドレス情報は、論理ユニット番号（流布ネーム：logical  unit  number、略してLUN）のIDと、LUNの開始アドレス及びオフセットとを含んでもよく、ファイルのIDと、ファイルの開始アドレス及びオフセットとを含んでもよく、他のものを含んでもよい。記憶システムが複数のファイルシステムを含む場合、アドレス情報は、ファイルシステムのID、ファイルのID、ファイルの開始アドレス及びオフセット等を含んでもよい。
【０１０９】
データオブジェクトは、フラッシュメモリ装置に書き込まれるべきブロックデータ又はファイルである。
【０１１０】
ステップS102において、コントローラ11は、データオブジェクトを同じサイズの複数のデータブロックに分割する。
【０１１１】
ステップS103において、コントローラ11は、複数のデータブロックからターゲットデータブロックを決定し、ターゲットデータブロックがフラッシュメモリ装置22に記憶されているか否かを決定する。
【０１１２】
具体的に、記憶のために複数のデータブロックをフラッシュメモリ装置22に送信する前に、コントローラ11は、各データブロックがフラッシュメモリ装置に記憶されているか否かを順に決定する必要があり、各データブロックがフラッシュメモリ装置に記憶されている場合、データブロックを再び記憶する必要はない。この決定方式について、データ重複排除モジュールの機能の前述の説明を参照し、ここでは再び詳細を説明しない。
【０１１３】
ステップS104において、フラッシュメモリ装置22がターゲットデータブロックと同じデータブロックを記憶していない場合、コントローラ11は、記憶のためにターゲットデータブロックをフラッシュメモリ装置22に送信する。ターゲットデータブロックの参照カウントは初期値である。更に、コントローラ11は、ターゲットデータブロックの参照カウント及びフラッシュメモリ装置22に記憶されたターゲットデータブロックに対応する論理アドレスをキャッシュ120に書き込む。フラッシュメモリ装置22がターゲットデータブロックと同じデータブロックを記憶している場合、ターゲットデータブロックと同じデータブロックの参照カウントが増加する。
【０１１４】
具体的に、フラッシュメモリ装置22に書き込まれたターゲットデータブロックに対応する論理アドレスは、コントローラ11によりターゲットデータブロックに割り当てられた論理アドレスでもよい。論理アドレスを割り当てた後に、コントローラ11は、論理アドレスをフラッシュメモリ装置22に送信する。フラッシュメモリ装置22は、論理アドレスと物理アドレスとの間のマッピング関係に従って、論理アドレスに対応する物理アドレスを取得し、ターゲットデータブロックを物理アドレスに対応する記憶空間に書き込む。他の方法では、論理アドレスは、コントローラ11により事前に割り当てられなくてもよく、データブロックを記憶した後にフラッシュメモリ装置22によりコントローラにフィードバックされた論理アドレスでもよい。
【０１１５】
ステップS101〜ステップS104に記載の方式では、コントローラ11は、受信したデータオブジェクトを複数のデータブロックに分割し、データブロックをフラッシュメモリ装置22に記憶してもよい。コントローラ11がデータ重複排除機能を有するため、フラッシュメモリ装置22に記憶されるデータブロックは異なることが認識され得る。これらの複数の異なるデータブロックについての情報は、キャッシュ120に記憶されてもよい。
【０１１６】
ステップS105〜ステップS107は、コントローラ11がフラッシュメモリ装置22に記憶された各データブロックの安定性レベルを識別し、安定性レベルをフラッシュメモリ装置22に送信する処理を記載している。ステップS105〜ステップS107は、図２に示すコントローラ11に適用されてもよく、コントローラ11のプロセッサ118により実行される。安定性レベルを識別する処理と、ステップS101〜S104において受信したデータブロックをフラッシュメモリ装置22に記憶する処理との間に順序は存在しない点に留意すべきである。
【０１１７】
ステップS105において、タスクがトリガーされた場合、コントローラ11は、ターゲットデータブロックについての情報をキャッシュ120から読み取る。
【０１１８】
ここでのタスクは、コントローラ11がフラッシュメモリ装置22の各データブロックの安定性レベルを識別するタスクを示す。
【０１１９】
具体的に、コントローラ11は、複数のデータブロックについての情報をスキャンし、各データブロックについての情報を順に読み取ってもよい。説明を簡略化するために、ターゲットデータブロックの処理方式が以下のステップの説明の例として依然として使用される。他のデータブロックの処理方式も、ターゲットデータブロックのものと同様であることが認識され得る。
【０１２０】
ターゲットデータブロックについての情報は、ターゲットデータブロックの参照カウント、又はターゲットデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、又はターゲットデータブロックの参照カウント及びターゲットデータブロックがフラッシュメモリ装置に記憶されている期間の長さを含む。
【０１２１】
ステップS106において、コントローラ11は、ターゲットデータブロックについての情報に従って、ターゲットデータブロックの安定性レベルを決定する。
【０１２２】
ステップS106は、図５に示す実施例のステップS202と同様である。詳細については、ステップS202の説明を参照のこと。
【０１２３】
ステップS107において、コントローラ11は、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの安定性レベルをフラッシュメモリ装置22に送信する。
【０１２４】
ステップS105〜ステップS107に記載の方式では、コントローラ11は、複数のデータブロックの論理アドレス及び安定性レベルをフラッシュメモリ装置22に送信してもよい。
【０１２５】
ステップS108〜S110は、フラッシュメモリ装置22がコントローラ11により送信されたデータブロックの安定性レベルを受信した後に、同じ安定性レベルを有するデータブロックを記憶する処理を記載している。ステップS108〜ステップS110は、図３Ａ及び図３Ｂに示すフラッシュメモリ装置（SSD等）に適用されてもよく、フラッシュメモリ装置22のプロセッサ218により実行される。
【０１２６】
ステップS108において、フラッシュメモリ装置22は、複数のデータブロックの論理アドレス及び論理アドレスに対応する安定性レベルを記憶する。
【０１２７】
任意選択で、記憶方式は、マッピングテーブルがフラッシュメモリ装置22のキャッシュ230において生成され、コントローラ11から受信したデータブロックの論理アドレスとデータブロックの安定性レベルとの間のマッピング関係を記憶するために使用されることである。
【０１２８】
任意選択で、他の記憶方式は、複数のアレイがキャッシュ230に記憶され、各アレイは、安定性レベルに対応していることである。複数のデータブロックの論理アドレスは、データブロックに対応するアレイに記憶される。
【０１２９】
任意選択で、更に他の記憶方式は、キャッシュ23が複数のキャッシュエリアに事前に分割され、各キャッシュエリアが安定性レベルに対応していることである。複数のデータブロックの論理アドレスは、データブロックに対応するキャッシュエリアに記憶される。
【０１３０】
ステップS109において、フラッシュメモリ装置22は、同じ安定性レベルに対応する論理アドレスの量が予め設定された閾値に到達したか否かを決定し、同じ安定性レベルに対応する論理アドレスの量が予め設定された閾値に到達した場合、同じ安定性レベルに対応する論理アドレスに従ってデータブロックを読み取る。
【０１３１】
同じ安定性レベルに対応する論理アドレスは、ステップS105〜ステップS107におけるターゲットデータブロックの論理アドレスを含んでもよい。
【０１３２】
図６Ａ及び図６Ｂに示す実現方式は、ガベージコレクション動作又はインスペクション動作と結合されなくてもよく、すなわち、この実現方式では、データ移動のトリガー条件は、図５に示す実現方式のものとは異なり、この実現方式のトリガー条件は、同じ安定性レベルに対応しておりキャッシュに記憶された論理アドレスの量が予め設定された閾値に到達することである点に留意すべきである。
【０１３３】
同じ安定性レベルに対応する論理アドレスの量が予め設定された閾値に到達したか否かを決定する以下の３つの実現方式が存在してもよい。
【０１３４】
第１の実現方式は、キャッシュ230に記憶されたマッピングテーブルに従って、同じ安定性レベルを有する論理アドレスの量が予め設定された閾値に到達したか否かを決定することである。
【０１３５】
第２の実現方式は、キャッシュ203の１つのアレイに記憶された論理アドレスの量が予め設定された閾値に到達したか否かを決定することである。
【０１３６】
第３の実現方式は、キャッシュ230の１つのキャッシュエリアに記憶された論理アドレスの量が予め設定された閾値に到達したか否かを決定することである。
【０１３７】
予め設定された閾値は、データブロックのサイズに対するブロックのボリュームの比に設定されてもよい。この実現方式によれば、論理アドレスの量が閾値に到達した場合、複数の論理アドレスに対応するデータブロックは、ちょうどアイドルblockを満たす。
【０１３８】
ステップS110において、フラッシュメモリ装置22は、アイドルブロックを求めて検索し、読み取られたデータブロックをアイドルブロックに動かす。
【０１３９】
類推して、同じ安定性レベルを有するデータブロックは、ステップS109及びステップS110に記載の方式で１つ又は複数のアイドルブロックに順に記憶されてもよい。
【０１４０】
更に、予め設定された閾値はまた、2より大きく、データブロックのサイズに対するブロックのボリュームの比未満の値に設定されてもよい。この場合、ステップS110において、同じ安定性レベルを有するデータブロックを、満たされていないブロックに記憶するために、満たされていないブロックが見つけられてもよい。
【０１４１】
図６Ａ及び図６Ｂに示す実施例では、フラッシュメモリ装置22は、同じ安定性レベルを有するデータブロックを１つ又は複数のアイドルブロックに一緒に記憶する。これにより、後のガベージコレクション動作において動かされるべき有効なデータが低減され、これにより、ライトアンプリフィケーションを低減し、フラッシュメモリ装置22の寿命を或る程度延長する。
【０１４２】
本発明の実施例は、データブロックの安定性レベルを識別する装置を更に提供する。この装置は、コントローラ11に配置され、コントローラは、図１に示す記憶システムに配置され、記憶システムは、フラッシュメモリ装置22を含み、フラッシュメモリ装置22は、第１のデータブロックを記憶する。図７に示すように、この装置40は、第１のデータブロックについての情報を記憶するように構成された記憶モジュール401であり、第１のデータブロックについての情報は、第１のデータブロックの参照カウント、又は第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、又は第１のデータブロックの参照カウント及び第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを含み、第１のデータブロックの参照カウントは、コントローラが第１のデータブロックを受信した回数の量に等しい記憶モジュール401と、記憶モジュールから第１のデータブロックについての情報を読み取るように構成された読み取りモジュール402と、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように構成された決定モジュール403と、第１のデータブロックの論理アドレス及び第１のデータブロックの安定性レベルをフラッシュメモリ装置22に送信するように構成された送信モジュール404とを含む。
【０１４３】
この実施例では、データブロックの安定性レベルを識別する装置40は、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定してもよく、安定性レベルは、データブロックの安定性を反映してもよく、データブロックの安定性レベル及び論理アドレスをフラッシュメモリ装置22に送信してもよい。これにより、フラッシュメモリ装置22は、同じ安定性レベルを有するデータブロックを一緒に記憶する。
【０１４４】
任意選択で、図７に示す実現方式では、データブロックの参照カウントと安定性レベルとの間のマッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を含む。
【０１４５】
この場合、決定モジュール403は、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【０１４６】
任意選択で、図７に示す実現方式では、データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を含む。
【０１４７】
この場合、決定モジュール403は、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するように具体的に構成され、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の時間間隔、及び時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【０１４８】
任意選択で、図７に示す実現方式では、データブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を含む。
【０１４９】
この場合、決定モジュール403は、第１のデータブロックの参照カウントに従って、第１の参照カウント間隔を決定するように具体的に構成され、第１のデータブロックの参照カウントは、第１の参照カウント間隔内であり、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さに従って、第１の時間間隔を決定するように具体的に構成され、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さは、第１の時間間隔内であり、第１の参照カウント間隔、第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定するように具体的に構成される。
【０１５０】
更に、装置40の各モジュールの具体的な実現方式について、図５又は図７に示す方法の実施例を参照し、ここでは再び詳細を説明しない。
【０１５１】
本発明の実施例は、データをフラッシュメモリ装置に記憶する装置50を更に提供する。装置50は、フラッシュメモリ装置22のSSDコントローラに配置され、フラッシュメモリ装置22は、ブロックを記憶する。この装置50は、ターゲット論理アドレスに対応する安定性レベルを取得するように構成された取得モジュール501であり、安定性レベルは、データブロックの安定性を示すために使用される取得モジュール501と、ターゲット論理アドレスに対応する安定性レベルに従って、ターゲット論理アドレスのデータブロックを安定性レベルに対応するブロックに動かすように構成されたマイグレーションモジュール502とを含む。
【０１５２】
この実施例で提供される装置50は、同じ安定性レベルを有するデータブロックを１つのブロックに記憶するために使用されてもよい。
【０１５３】
任意選択で、取得モジュール501は、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するように更に構成され、最大量の無効なデータを記憶するブロックは、ターゲット論理アドレスに対応するデータブロックを含む。
【０１５４】
任意選択で、取得モジュール501は、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するように更に構成され、最も長い時間に消去されないままになっているブロックは、ターゲット論理アドレスに対応するデータブロックを含む。
【０１５５】
任意選択で、装置50は記憶モジュール503を更に含み、記憶モジュール503は、論理アドレスを記憶し、論理アドレスに対応する安定性レベルは、ターゲット論理アドレスに対応する安定性レベルと同じである。
【０１５６】
取得モジュール501は、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、ターゲット論理アドレスに対応する安定性レベルを取得するように具体的に構成される。
【０１５７】
予め設定された閾値は、データブロックのサイズで割られたブロックのボリュームの商に等しい。
【０１５８】
更に、装置50の各モジュールの具体的な実現方式について、図６Ａ及び図６Ｂ又は図７に示す方法の実施例を参照し、ここでは再び詳細を説明しない。
【０１５９】
本発明の実施例は、プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を含む、データ処理のためのコンピュータプログラムプロダクトを提供し、プログラムコードに含まれる命令は、いずれか前述の方法の実施例の方法の手順を実行するために使用される。
【０１６０】
当業者は、前述の記憶媒体が、USBフラッシュドライブ、取り外し可能ハードディスク、磁気ディスク、光ディスク、ランダムアクセスメモリ（RAM、random-access  memory）、ソリッドステートディスク（solid  state  disk、SSD）、又は不揮発性メモリ（non-volatile  memory）のような、プログラムコードを記憶することができる様々な種類の過渡的でない（non-transitory）機械読み取り可能媒体を含むことを認識し得る。
【０１６１】
最後に、全ての前述の実施例は、本発明を限定するのではなく、単に本発明の技術的対策を説明することを意図するものである点に留意すべきである。
【図１】
2017501489.tif 000007
【図２】
2017501489.tif 000008
【図３Ａ】
2017501489.tif 000009
【図３Ｂ】
2017501489.tif 000010
【図４】
2017501489.tif 000011
【図５】
2017501489.tif 000012
【図６Ａ】
2017501489.tif 000013
【図６Ｂ】
2017501489.tif 000014
【図７】
2017501489.tif 000015
【図８】
2017501489.tif 000016
【手続補正書】
【提出日】平成28年5月31日(2016.5.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラであって、
前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、
前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、
前記キャッシュは、前記第１のデータブロックについての情報を記憶し、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しく、
前記プロセッサは、
前記キャッシュから前記第１のデータブロックについての前記情報を読み取り、
前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するように構成され、前記安定性レベルは、前記データブロックの安定性を示すために使用され、
前記通信インタフェースを通じて前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成されるコントローラ。
【請求項２】
データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
前記プロセッサは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように構成される、請求項１に記載のコントローラ。
【請求項３】
前記第１のデータブロックについての前記情報は、前記第１のデータブロックのフィンガープリント情報を更に有し、前記第１のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第１のデータブロックにおいて計算を実行することにより取得され、
前記プロセッサは、
前記第１のデータブロックを受信し、
前記ハッシュ関数及び前記第１のデータブロックに従って前記第１のデータブロックの前記フィンガープリント情報を計算し、
フィンガープリント情報が前記第１のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定し、
前記第１のデータブロックを前記フラッシュメモリ装置に送信するように更に構成され、前記第１のデータブロックの前記参照カウントは、初期値に等しく、
前記第１のデータブロックの前記参照カウントを前記キャッシュに書き込むように更に構成される、請求項１又は２に記載のコントローラ。
【請求項４】
前記プロセッサは、
第２のデータブロックを受信し、
前記ハッシュ関数及び前記第２のデータブロックに従って前記第２のデータブロックのフィンガープリント情報を計算し、
前記第１のデータブロックの前記フィンガープリント情報が前記第２のデータブロックの前記フィンガープリント情報と同じであると決定し、
前記初期値を増加させるように更に構成され、前記第１のデータブロックの前記参照カウントは、前記増加した初期値に等しい、請求項３に記載のコントローラ。
【請求項５】
フラッシュメモリ装置であって、
前記フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを有し、前記フラッシュメモリチップはブロックを有し、前記メインコントローラはプロセッサを有し、
前記プロセッサは、
ターゲット論理アドレスに対応する安定性レベルを取得するように構成され、前記安定性レベルは、データブロックの安定性を示すために使用され、
前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすように構成されるフラッシュメモリ装置。
【請求項６】
前記プロセッサは、最大量の無効なデータを記憶するブロックを求めて前記フラッシュメモリチップを検索するように更に構成され、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項５に記載のフラッシュメモリ装置。
【請求項７】
前記プロセッサは、最も長い時間に消去されないままになっているブロックを求めて前記フラッシュメモリチップを検索するように更に構成され、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項５に記載のフラッシュメモリ装置。
【請求項８】
前記メインコントローラはキャッシュを更に有し、
前記プロセッサは、前記キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するように構成され、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じである、請求項５に記載のフラッシュメモリ装置。
【請求項９】
前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項８に記載のフラッシュメモリ装置。
【請求項１０】
コントローラがデータブロックの安定性を識別する方法であって、
前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、前記キャッシュは、前記第１のデータブロックについての情報を記憶し、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しく、前記方法は、前記プロセッサにより実行され、
前記方法は、
前記キャッシュから前記第１のデータブロックについての前記情報を読み取るステップと、
前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するステップであり、前記安定性レベルは、前記データブロックの安定性を示すために使用されるステップと、
前記通信インタフェースを通じて前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するステップと
を有する方法。
【請求項１１】
データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
(1)前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するステップであり、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であるステップと、
前記第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップと
を有する、請求項１０に記載の方法。
【請求項１２】
前記第１のデータブロックについての前記情報は、前記第１のデータブロックのフィンガープリント情報を更に有し、前記第１のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第１のデータブロックにおいて計算を実行することにより取得され、
前記方法は、
前記第１のデータブロックを受信するステップと、
前記ハッシュ関数及び前記第１のデータブロックに従って前記第１のデータブロックの前記フィンガープリント情報を計算するステップと、
フィンガープリント情報が前記第１のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定するステップと、
前記第１のデータブロックを前記フラッシュメモリ装置に送信するステップであり、前記第１のデータブロックの前記参照カウントは、初期値に等しいステップと、
前記第１のデータブロックの前記参照カウントを前記キャッシュに書き込むステップと
を更に有する、請求項１０又は１１に記載の方法。
【請求項１３】
前記方法は、
第２のデータブロックを受信するステップと、
前記ハッシュ関数及び前記第２のデータブロックに従って前記第２のデータブロックのフィンガープリント情報を計算するステップと、
前記第１のデータブロックの前記フィンガープリント情報が前記第２のデータブロックの前記フィンガープリント情報と同じであると決定するステップと、
前記初期値を増加させるステップであり、前記第１のデータブロックの前記参照カウントは、前記増加した初期値に等しいステップと
を更に有する、請求項１２に記載の方法。
【請求項１４】
データをフラッシュメモリ装置に記憶する方法であって、
前記フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを有し、前記フラッシュメモリチップはブロックを有し、前記メインコントローラはプロセッサを有し、
前記方法は、前記プロセッサにより実行され、前記方法は、
ターゲット論理アドレスに対応する安定性レベルを取得するステップであり、前記安定性レベルは、データブロックの安定性を示すために使用されるステップと、
前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすステップと
を有する方法。
【請求項１５】
前記方法は、
最大量の無効なデータを記憶するブロックを求めて前記フラッシュメモリチップを検索するステップであり、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有するステップを更に有する、請求項１４に記載の方法。
【請求項１６】
前記方法は、
最も長い時間に消去されないままになっているブロックを求めて前記フラッシュメモリチップを検索するステップであり、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有するステップを更に有する、請求項１４に記載の方法。
【請求項１７】
前記メインコントローラはキャッシュを更に有し、
ターゲット論理アドレスに対応する安定性レベルを取得するステップは、
前記キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するステップであり、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じであるステップを有する、請求項１４に記載の方法。
【請求項１８】
前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項１７に記載の方法。
【請求項１９】
データブロックの安定性を識別する装置であって、
前記装置は、コントローラに配置され、前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、
前記装置は、
前記第１のデータブロックについての情報を記憶するように構成された記憶モジュールであり、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しい記憶モジュールと、
前記記憶モジュールから前記第１のデータブロックについての前記情報を読み取るように構成された読み取りモジュールと、
前記第１のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するように構成された決定モジュールであり、前記安定性レベルは、前記データブロックの安定性を示すために使用される決定モジュールと、
前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成された送信モジュールと
を有する装置。
【請求項２０】
データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
前記決定モジュールは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように構成される、請求項１９に記載の装置。
【請求項２１】
データをフラッシュメモリ装置に記憶する装置であって、
前記装置は、前記フラッシュメモリ装置のSSDコントローラに配置され、前記フラッシュメモリ装置は、ブロックを記憶し、前記装置は、
ターゲット論理アドレスに対応する安定性レベルを取得するように構成された取得モジュールであり、前記安定性レベルは、データブロックの安定性を示すために使用される取得モジュールと、
前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすように構成されたマイグレーションモジュールと
を有する装置。
【請求項２２】
前記取得モジュールは、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するように更に構成され、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項２１に記載の装置。
【請求項２３】
前記取得モジュールは、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するように更に構成され、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項２１に記載の装置。
【請求項２４】
前記装置は記憶モジュールを更に有し、前記記憶モジュールは、論理アドレスを記憶し、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じであり、
前記取得モジュールは、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するように構成される、請求項２１に記載の装置。
【請求項２５】
前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項２４に記載の装置。
【請求項２６】
プログラムコードを有するコンピュータプログラムであって、
前記プログラムコードに含まれる命令は、請求項１０ないし１３のうちいずれか１項に記載の方法を実行するために使用されるコンピュータプログラム。
【請求項２７】
プログラムコードを有するコンピュータプログラムであって、
前記プログラムコードに含まれる命令は、請求項１４ないし１８のうちいずれか１項に記載の方法を実行するために使用されるコンピュータプログラム。
【請求項２８】
コントローラであって、
前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、
前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、
前記キャッシュは、前記第１のデータブロックについての情報を記憶し、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しく、
前記プロセッサは、
前記キャッシュから前記第１のデータブロックについての前記情報を読み取り、
前記第１のデータブロックの前記参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するように構成され、前記安定性レベルは、前記データブロックの安定性を示すために使用され、
前記通信インタフェースを通じて前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成されるコントローラ。
【請求項２９】
データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
前記プロセッサは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するように構成され、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であり、
前記第１の参照カウント間隔、前記第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように構成される、請求項２８に記載のコントローラ。
【請求項３０】
前記第１のデータブロックについての前記情報は、前記第１のデータブロックのフィンガープリント情報を更に有し、前記第１のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第１のデータブロックにおいて計算を実行することにより取得され、
前記プロセッサは、
前記第１のデータブロックを受信し、
前記ハッシュ関数及び前記第１のデータブロックに従って前記第１のデータブロックの前記フィンガープリント情報を計算し、
フィンガープリント情報が前記第１のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定し、
前記第１のデータブロックを前記フラッシュメモリ装置に送信するように更に構成され、前記第１のデータブロックの前記参照カウントは、初期値に等しく、
前記第１のデータブロックの前記参照カウントを前記キャッシュに書き込むように更に構成される、請求項２８又は２９のうちいずれか１項に記載のコントローラ。
【請求項３１】
前記プロセッサは、
第２のデータブロックを受信し、
前記ハッシュ関数及び前記第２のデータブロックに従って前記第２のデータブロックのフィンガープリント情報を計算し、
前記第１のデータブロックの前記フィンガープリント情報が前記第２のデータブロックの前記フィンガープリント情報と同じであると決定し、
前記初期値を増加させるように更に構成され、前記第１のデータブロックの前記参照カウントは、前記増加した初期値に等しい、請求項３０に記載のコントローラ。
【請求項３２】
コントローラがデータブロックの安定性を識別する方法であって、
前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、前記キャッシュは、前記第１のデータブロックについての情報を記憶し、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しく、前記方法は、前記プロセッサにより実行され、
前記方法は、
前記キャッシュから前記第１のデータブロックについての前記情報を読み取るステップと、
前記第１のデータブロックの参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するステップであり、前記安定性レベルは、前記データブロックの安定性を示すために使用されるステップと、
前記通信インタフェースを通じて前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するステップと
を有する方法。
【請求項３３】
データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
前記第１のデータブロックの前記参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するステップは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するステップであり、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であるステップと、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するステップであり、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であるステップと、
前記第１の参照カウント、前記第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するステップと
を有する、請求項３２に記載の方法。
【請求項３４】
前記第１のデータブロックについての前記情報は、前記第１のデータブロックのフィンガープリント情報を更に有し、前記第１のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第１のデータブロックにおいて計算を実行することにより取得され、
前記方法は、
前記第１のデータブロックを受信するステップと、
前記ハッシュ関数及び前記第１のデータブロックに従って前記第１のデータブロックの前記フィンガープリント情報を計算するステップと、
フィンガープリント情報が前記第１のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定するステップと、
前記第１のデータブロックを前記フラッシュメモリ装置に送信するステップであり、前記第１のデータブロックの前記参照カウントは、初期値に等しいステップと、
前記第１のデータブロックの前記参照カウントを前記キャッシュに書き込むステップと
を更に有する、請求項３２又は３３に記載の方法。
【請求項３５】
前記方法は、
第２のデータブロックを受信するステップと、
前記ハッシュ関数及び前記第２のデータブロックに従って前記第２のデータブロックのフィンガープリント情報を計算するステップと、
前記第１のデータブロックの前記フィンガープリント情報が前記第２のデータブロックの前記フィンガープリント情報と同じであると決定するステップと、
前記初期値を増加させるステップであり、前記第１のデータブロックの前記参照カウントは、前記増加した初期値に等しいステップと
を更に有する、請求項３４に記載の方法。
【請求項３６】
データブロックの安定性を識別する装置であって、
前記装置は、コントローラに配置され、前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第１のデータブロックを記憶し、
前記装置は、
前記第１のデータブロックについての情報を記憶するように構成された記憶モジュールであり、前記第１のデータブロックについての前記情報は、前記第１のデータブロックの参照カウント、又は前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第１のデータブロックの参照カウント及び前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第１のデータブロックの前記参照カウントは、前記コントローラが前記第１のデータブロックを受信した回数の量に等しい記憶モジュールと、
前記記憶モジュールから前記第１のデータブロックについての前記情報を読み取るように構成された読み取りモジュールと、
前記第１のデータブロックの前記参照カウント、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第１のデータブロックの安定性レベルを決定するように構成された決定モジュールであり、前記安定性レベルは、前記データブロックの安定性を示すために使用される決定モジュールと、
前記第１のデータブロックの論理アドレス及び前記第１のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成された送信モジュールと
を有する装置。
【請求項３７】
データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
前記決定モジュールは、
前記第１のデータブロックの前記参照カウントに従って、第１の参照カウント間隔を決定するように構成され、前記第１のデータブロックの前記参照カウントは、前記第１の参照カウント間隔内であり、
前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第１の時間間隔を決定するように構成され、前記第１のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第１の時間間隔内であり、
前記第１の参照カウント間隔、前記第１の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第１のデータブロックの前記安定性レベルを決定するように構成される、請求項３６に記載の装置。
【請求項３８】
プログラムコードを有するコンピュータプログラムであって、
前記プログラムコードに含まれる命令は、請求項３２ないし３５のうちいずれか１項に記載の方法を実行するために使用されるコンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
本発明の実施例で提供されるコントローラは、(1)第１のデータブロックの参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)第１のデータブロックの参照カウント、第１のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第１のデータブロックの安定性レベルを決定してもよく、安定性レベルは、データブロックの安定性を反映してもよく、データブロックの安定性レベル及び論理アドレスをフラッシュメモリ装置に送信してもよい。これにより、フラッシュメモリ装置22は、同じ安定性レベルを有するデータブロックを一緒に記憶する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
本発明の実施例で提供されるフラッシュメモリ装置は、同じ安定性レベルを有するデータブロックを１つのblockに記憶してもよい。高い安定性レベルを有するデータブロックを記憶するblockについて、blockに記憶されたデータブロックが無効になる確率は低い。一般的に、blockは、無効なデータを含まないか、或いは、少量の無効なデータのみを含む。このようなblockは、高い利用率を有するblockであり、このようなblockは、フラッシュメモリ装置でガベージコレクションが実行される場合にコレクションされない。低い安定性レベルを有するデータブロックを記憶するblockについて、blockに記憶されたデータブロックが無効になる確率は高い。blockのほとんどのデータ又は大部分のデータが全て無効になることを仮定すると、対応して、このblockに含まれる有効なデータの量は小さく、ガベージコレクションが実行されるときに動かされる必要があるデータの量は小さく、このことは、ライトアンプリフィケーションを低減する。この実施例の効果は、後のガベージコレクションにおいて動かされるべき有効なデータが低減されるという点に主に反映される点に留意すべきである。高い安定性レベルを有するデータブロックを記憶するblockと、低い安定性レベルを有するデータブロックを記憶するblockとの双方が、フラッシュメモリ装置のライトアンプリフィケーションを低減し、これにより、フラッシュメモリ装置の寿命を或る程度延長することが分かり得る。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
コントローラ11は、サーバ及びデスクトップコンピュータのようないずれかのコンピュータデバイスでもよい。コントローラ11は、ホスト（図１に図示せず）により送信されたデータオブジェクトを受信し、書き込みデータ要求をフラッシュメモリ装置22に送信してもよい。フラッシュメモリ装置22は、書き込みデータ要求に含まれるデータオブジェクトをフラッシュメモリ装置22のフラッシュメモリチップに書き込む。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
各フラッシュメモリ装置22に記憶された他の同じデータブロックが存在するか否かを決定する一般的なやり方は、フラッシュメモリ装置22に記憶された各データブロックのフィンガープリント情報を予め記憶し、各データブロックのフィンガープリント情報は、予め設定されたハッシュ関数に従って各データブロックにおいて計算を実行することにより取得され、次に、記憶されるべきデータブロックのフィンガープリント情報を取得するために、ハッシュ関数に従って記憶されるべきデータブロックにおいて計算を実行し、フィンガープリント情報と、各データブロックの予め記憶されたフィンガープリント情報のフィンガープリント情報とをマッチさせることである。同じフィンガープリント情報が存在する場合、フラッシュメモリ装置22は、同じデータブロックを記憶している。同じフィンガープリント情報が存在する場合、記憶されるべきデータブロックは記憶されない。各データブロックのフィンガープリント情報は、キャッシュ120に記憶されてもよく、フラッシュメモリ装置22に記憶されてもよい。更に、各フラッシュメモリ装置22に記憶された同じデータブロックが存在するか否かを決定するために、他の方式が更に使用されてもよく、これはここでは列挙されない。
【国際調査報告】
2017501489.tif 000017
2017501489.tif 000018
2017501489.tif 000019
2017501489.tif 000020