(57)【要約】  本発明の実施例は、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムを提供する。本発明の実施例では、複数のblockの中の第１のblockの有効容量が第１のターゲットデータのサイズ未満である場合、プライマリコントローラは、第１のターゲットデータを第１の部分と第２の部分とに分割し、第１の部分のサイズは、第１のblockの有効容量であり、第２の部分のサイズは、第１のターゲットデータのサイズから第１の部分のサイズを減算したものであり、複数のblockから第２のblockを決定し、第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、第１の部分を第１のblockに書き込み、第２の部分を第２のblockに書き込む。このことは、ブロック利用率を改善し、SSDの記憶空間を節約することができる。
2016524770.tif 000002
【特許請求の範囲】
【請求項１】
プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
前記プライマリコントローラは、
第１のターゲットデータを受信し、
前記複数のblockの中の第１のblockの有効容量が前記第１のターゲットデータのサイズ未満である場合、前記第１のターゲットデータを前記第１のターゲットデータの第１の部分と前記第１のターゲットデータの第２の部分とに分割し、前記第１のターゲットデータの前記第１の部分のサイズは、前記第１のblockの前記有効容量であり、前記第１のターゲットデータの前記第２の部分のサイズは、前記第１のターゲットデータの前記サイズから前記第１のターゲットデータの前記第１の部分の前記サイズを減算したものであり、
前記複数のblockの中の第２のblockを決定し、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、
前記第１のターゲットデータの前記第１の部分を前記第１のblockに書き込み、
前記第１のターゲットデータの前記第２の部分を前記第２のblockに書き込むように構成されるフラッシュメモリ装置。
【請求項２】
前記第２のblockは、予め設定されたblockである、請求項１に記載のフラッシュメモリ装置。
【請求項３】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラは、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するように構成される、請求項１に記載のフラッシュメモリ装置。
【請求項４】
前記プライマリコントローラは、
第２のターゲットデータを受信し、
前記複数のblockの中の第３のblockの有効容量が前記第２のターゲットデータのサイズ未満である場合、前記第２のターゲットデータを前記第２のターゲットデータの第１の部分と前記第２のターゲットデータの第２の部分とに分割し、前記第２のターゲットデータの前記第１の部分のサイズは、前記第３のblockの前記有効容量であり、前記第２のターゲットデータの前記第２の部分のサイズは、前記第２のターゲットデータの前記サイズから前記第２のターゲットデータの前記第１の部分の前記サイズを減算したものであり、
前記第２のターゲットデータの前記第１の部分を前記第３のblockに書き込み、前記第２のターゲットデータの前記第２の部分を前記第２のblockに書き込み、
前記データフラグを前記第２のblockに追加するように更に構成される、請求項３に記載のフラッシュメモリ装置。
【請求項５】
プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
前記プライマリコントローラは、
第１のターゲットデータを受信し、前記第１のターゲットデータを前記複数のblockの中の第１のblockに書き込み、
前記第１のblockがデータで満たされた場合、前記第１のblockに書き込まれていない前記第１のターゲットデータ内のデータを取得し、前記第１のblockの有効容量は、前記第１のターゲットデータのサイズ未満であり、
前記複数のblockの中の第２のblockを決定し、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、
前記第１のblockに書き込まれていない前記第１のターゲットデータ内の前記データを前記第２のblockに書き込むように構成されるフラッシュメモリ装置。
【請求項６】
前記第２のblockは、予め設定されたblockである、請求項５に記載のフラッシュメモリ装置。
【請求項７】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラは、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するように構成される、請求項５に記載のフラッシュメモリ装置。
【請求項８】
前記プライマリコントローラは、
第２のターゲットデータを受信し、前記第２のターゲットデータを前記複数のblockの中の第３のblockに書き込み、
前記第３のblockがデータで満たされた場合、前記第３のblockに書き込まれていない前記第２のターゲットデータ内のデータを取得し、前記第３のblockの有効容量は、前記第２のターゲットデータのサイズ未満であり、
前記第３のblockに書き込まれていない前記第２のターゲットデータ内の前記データを前記第２のblockに書き込み、
前記データフラグを前記第２のblockに追加するように更に構成される、請求項７に記載のフラッシュメモリ装置。
【請求項９】
データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
前記プライマリコントローラにより、第１のターゲットデータを受信するステップと、
前記複数のblockの中の第１のblockの有効容量が前記第１のターゲットデータのサイズ未満である場合、前記第１のターゲットデータを前記第１のターゲットデータの第１の部分と前記第１のターゲットデータの第２の部分とに分割するステップであり、前記第１のターゲットデータの前記第１の部分のサイズは、前記第１のblockの前記有効容量であり、前記第１のターゲットデータの前記第２の部分のサイズは、前記第１のターゲットデータの前記サイズから前記第１のターゲットデータの前記第１の部分の前記サイズを減算したものであるステップと、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップであり、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、
前記プライマリコントローラにより、前記第１のターゲットデータの前記第１の部分を前記第１のblockに書き込み、前記第１のターゲットデータの前記第２の部分を前記第２のblockに書き込むステップと
を有する方法。
【請求項１０】
前記第２のblockは、予め設定されたblockである、請求項９に記載の方法。
【請求項１１】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップは、前記プライマリコントローラにより、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するステップを有する、請求項９に記載の方法。
【請求項１２】
前記プライマリコントローラにより、第２のターゲットデータを受信するステップと、
前記複数のblockの中の第３のblockの有効容量が前記第２のターゲットデータのサイズ未満である場合、前記第２のターゲットデータを前記第２のターゲットデータの第１の部分と前記第２のターゲットデータの第２の部分とに分割するステップであり、前記第２のターゲットデータの前記第１の部分のサイズは、前記第３のblockの前記有効容量であり、前記第２のターゲットデータの前記第２の部分のサイズは、前記第２のターゲットデータの前記サイズから前記第２のターゲットデータの前記第１の部分の前記サイズを減算したものであるステップと、
前記プライマリコントローラにより、前記第２のターゲットデータの前記第１の部分を前記第３のblockに書き込み、前記第２のターゲットデータの前記第２の部分を前記第２のblockに書き込むステップと、
前記プライマリコントローラにより、前記データフラグを前記第２のblockに追加するステップと
を更に有する、請求項１１に記載の方法。
【請求項１３】
データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
前記プライマリコントローラにより、第１のターゲットデータを受信し、前記第１のターゲットデータを前記複数のblockの中の第１のblockに書き込むステップと、
前記第１のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第１のblockに書き込まれていない前記第１のターゲットデータ内のデータを取得するステップであり、前記第１のblockの有効容量は、前記第１のターゲットデータのサイズ未満であるステップと、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップであり、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、
前記プライマリコントローラにより、前記第１のblockに書き込まれていない前記第１のターゲットデータ内の前記データを前記第２のblockに書き込むステップと
を有する方法。
【請求項１４】
前記第２のblockは、予め設定されたblockである、請求項１３に記載の方法。
【請求項１５】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップは、前記プライマリコントローラにより、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するステップを有する、請求項１３に記載の方法。
【請求項１６】
前記プライマリコントローラにより、第２のターゲットデータを受信し、前記第２のターゲットデータを前記複数のblockの中の第３のblockに書き込むステップと、
前記第３のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第３のblockに書き込まれていない前記第２のターゲットデータ内のデータを取得するステップであり、前記第３のblockの有効容量は、前記第２のターゲットデータのサイズ未満であるステップと、
前記プライマリコントローラにより、前記第３のblockに書き込まれていない前記第２のターゲットデータ内の前記データを前記第２のblockに書き込むステップと、
前記プライマリコントローラにより、前記データフラグを前記第２のblockに追加するステップと
を更に有する、請求項１５に記載の方法。
【請求項１７】
請求項１ないし４のうちいずれか１項に記載のフラッシュメモリ装置及びコントローラを有する記憶システムであって、
前記コントローラは、第１のターゲットデータを前記フラッシュメモリ装置に送信するように構成される記憶システム。
【請求項１８】
請求項５ないし８のうちいずれか１項に記載のフラッシュメモリ装置及びコントローラを有する記憶システムであって、
前記コントローラは、第１のターゲットデータを前記フラッシュメモリ装置に送信するように構成される記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、ストレージ技術の分野に関し、特に、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムに関する。
【背景技術】
【０００２】
Flash  Memory（フラッシュメモリ）装置は、記憶媒体がFlashユニットである不揮発性メモリであり、電源停止の後にデータが消滅しないという特徴を有する。従って、フラッシュメモリ装置は、外部又は内部メモリとして広く使用されている。記憶媒体としてFlashユニットを使用するフラッシュメモリ装置は、ソリッド・ステート・ドライブ（Solid  State  Drive、SSD）とも呼ばれるソリッド・ステート・ディスク（Solid  State  Device、SSD）でもよく、他のメモリでもよい。
【０００３】
１つのSSDは、一般的に複数のフラッシュチップを含み、各フラッシュチップは、複数のブロック（block）を含む。各blockは複数のページ（page）を更に含む。或る場合には、損傷を受けたページ（損傷ページとも呼ばれる）がblock内に発生する可能性がある。SSDが損傷ページを含むblockにデータを書き込むときに、損傷ページを含むblockがデータを記憶するのに不十分である場合、一般的にデータのオーバーフローを記憶するために新たなblockが見つけられる。従って、SSDでは、或るデータにより書き込まれているが、データで満たされていない多数のblockが存在する。これは、blockの空間利用率を低減し、SSDの記憶空間の浪費を生じる。
【発明の概要】
【０００４】
本発明の実施例で提供される、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムは、blockの空間利用率を改善し、SSDの記憶空間を節約することができる。
【０００５】
第１の態様によれば、本発明の実施例は、フラッシュメモリ装置を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、プライマリコントローラは、第１のターゲットデータを受信し、複数のblockの中の第１のblockの有効容量が第１のターゲットデータのサイズ未満である場合、第１のターゲットデータを第１のターゲットデータの第１の部分と第１のターゲットデータの第２の部分とに分割し、第１のターゲットデータの第１の部分のサイズは、第１のblockの有効容量であり、第１のターゲットデータの第２の部分のサイズは、第１のターゲットデータのサイズから第１のターゲットデータの第１の部分のサイズを減算したものであり、複数のblockの中の第２のblockを決定し、第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、第１のターゲットデータの第１の部分を第１のblockに書き込み、第１のターゲットデータの第２の部分を第２のblockに書き込むように構成される。
【０００６】
第１の態様の第１の可能な実現方式では、第２のblockは、予め設定されたblockである。
【０００７】
第１の態様の第２の可能な実現方式では、第２のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラは、データフラグに従って複数のblockの中の第２のblockを決定するように具体的に構成される。
【０００８】
第１の態様の第２の可能な実現方式を参照して、第１の態様の第３の可能な実現方式では、プライマリコントローラは、第２のターゲットデータを受信し、複数のblockの中の第３のblockの有効容量が第２のターゲットデータのサイズ未満である場合、第２のターゲットデータを第２のターゲットデータの第１の部分と第２のターゲットデータの第２の部分とに分割し、第２のターゲットデータの第１の部分のサイズは、第３のblockの有効容量であり、第２のターゲットデータの第２の部分のサイズは、第２のターゲットデータのサイズから第２のターゲットデータの第１の部分のサイズを減算したものであり、第２のターゲットデータの第１の部分を第３のblockに書き込み、第２のターゲットデータの第２の部分を第２のblockに書き込み、データフラグを第２のblockに追加するように更に構成される。
【０００９】
第２の態様によれば、本発明の実施例は、フラッシュメモリ装置を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、プライマリコントローラは、第１のターゲットデータを受信し、第１のターゲットデータを複数のblockの中の第１のblockに書き込み、第１のblockがデータで満たされた場合、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得し、第１のblockの有効容量は、第１のターゲットデータのサイズ未満であり、複数のblockの中の第２のblockを決定し、第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、第１のblockに書き込まれていない第１のターゲットデータ内のデータを第２のblockに書き込むように構成される。
【００１０】
第２の態様の第１の可能な実現方式では、第２のblockは、予め設定されたblockである。
【００１１】
第２の態様の第２の可能な実現方式では、第２のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラは、データフラグに従って複数のblockの中の第２のblockを決定するように具体的に構成される。
【００１２】
第２の態様の第２の可能な実現方式を参照して、第２の態様の第３の可能な実現方式では、プライマリコントローラは、第２のターゲットデータを受信し、第２のターゲットデータを複数のblockの中の第３のblockに書き込み、第３のblockがデータで満たされた場合、第３のblockに書き込まれていない第２のターゲットデータ内のデータを取得し、第３のblockの有効容量は、第２のターゲットデータのサイズ未満であり、第３のblockに書き込まれていない第２のターゲットデータ内のデータを第２のblockに書き込み、データフラグを第２のblockに追加するように更に構成される。
【００１３】
第３の態様によれば、本発明の実施例は、データをフラッシュメモリ装置に書き込む方法を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、この方法は、プライマリコントローラにより、第１のターゲットデータを受信し、複数のblockの中の第１のblockの有効容量が第１のターゲットデータのサイズ未満である場合、第１のターゲットデータを第１のターゲットデータの第１の部分と第１のターゲットデータの第２の部分とに分割するステップであり、第１のターゲットデータの第１の部分のサイズは、第１のblockの有効容量であり、第１のターゲットデータの第２の部分のサイズは、第１のターゲットデータのサイズから第１のターゲットデータの第１の部分のサイズを減算したものであるステップと、プライマリコントローラにより、複数のblockの中の第２のblockを決定するステップであり、第２のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、プライマリコントローラにより、第１のターゲットデータの第１の部分を第１のblockに書き込み、第１のターゲットデータの第２の部分を第２のblockに書き込むステップとを含む。
【００１４】
第３の態様の第１の可能な実現方式では、第２のblockは、予め設定されたblockである。
【００１５】
第３の態様の第２の可能な実現方式では、第２のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラにより、複数のblockの中の第２のblockを決定するステップは、プライマリコントローラにより、データフラグに従って複数のblockの中の第２のblockを決定するステップを含む。
【００１６】
第３の態様の第２の可能な実現方式を参照して、第３の態様の第３の可能な実現方式では、この方法は、プライマリコントローラにより、第２のターゲットデータを受信し、複数のblockの中の第３のblockの有効容量が第２のターゲットデータのサイズ未満である場合、第２のターゲットデータを第２のターゲットデータの第１の部分と第２のターゲットデータの第２の部分とに分割するステップであり、第２のターゲットデータの第１の部分のサイズは、第３のblockの有効容量であり、第２のターゲットデータの第２の部分のサイズは、第２のターゲットデータのサイズから第２のターゲットデータの第１の部分のサイズを減算したものであるステップと、プライマリコントローラにより、第２のターゲットデータの第１の部分を第３のblockに書き込み、第２のターゲットデータの第２の部分を第２のblockに書き込むステップと、プライマリコントローラにより、データフラグを第２のblockに追加するステップとを更に含む。
【００１７】
第４の態様によれば、本発明の実施例は、データをフラッシュメモリ装置に書き込む方法を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、この方法は、プライマリコントローラにより、第１のターゲットデータを受信し、第１のターゲットデータを複数のblockの中の第１のblockに書き込むステップと、第１のblockがデータで満たされた場合、プライマリコントローラにより、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得するステップであり、第１のblockの有効容量は、第１のターゲットデータのサイズ未満であるステップと、プライマリコントローラにより、複数のblockの中の第２のblockを決定するステップであり、第２のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、プライマリコントローラにより、第１のblockに書き込まれていない第１のターゲットデータ内のデータを第２のblockに書き込むステップとを含む。
【００１８】
第４の態様の第１の可能な実現方式では、第２のblockは、予め設定されたblockである。
【００１９】
第４の態様の第２の可能な実現方式では、第２のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラにより、複数のblockの中の第２のblockを決定するステップは、プライマリコントローラにより、データフラグに従って複数のblockの中の第２のblockを決定するステップを含む。
【００２０】
第４の態様の第２の可能な実現方式を参照して、第４の態様の第３の可能な実現方式では、この方法は、プライマリコントローラにより、第２のターゲットデータを受信し、第２のターゲットデータを複数のblockの中の第３のblockに書き込むステップと、第３のblockがデータで満たされた場合、プライマリコントローラにより、第３のblockに書き込まれていない第２のターゲットデータ内のデータを取得するステップであり、第３のblockの有効容量は、第２のターゲットデータのサイズ未満であるステップと、プライマリコントローラにより、第３のblockに書き込まれていない第２のターゲットデータ内のデータを第２のblockに書き込むステップと、プライマリコントローラにより、データフラグを第２のblockに追加するステップとを更に含む。
【００２１】
第５の態様によれば、本発明の実施例は、記憶システムを提供し、記憶システムは、第１の態様又は第１の態様の第１〜第３の可能な実現方式のいずれか１つによるフラッシュメモリ装置及びコントローラを含み、コントローラは、第１のターゲットデータをフラッシュメモリ装置に送信するように構成される。
【００２２】
第６の態様によれば、本発明の実施例は、記憶システムを提供し、記憶システムは、第２の態様又は第２の態様の第１〜第３の可能な実現方式のいずれか１つによるフラッシュメモリ装置及びコントローラを含み、コントローラは、第１のターゲットデータをフラッシュメモリ装置に送信するように構成される。
【００２３】
本発明の実施例は、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムを提供する。本発明の実施例では、複数のblockの中の第１のblockの有効容量が第１のターゲットデータのサイズ未満である場合、フラッシュメモリ装置のプライマリコントローラは、第１のターゲットデータを第１のターゲットデータの第１の部分と第１のターゲットデータの第２の部分とに分割し、第１のターゲットデータの第１の部分のサイズは、第１のblockの有効容量であり、第１のターゲットデータの第２の部分のサイズは、第１のターゲットデータのサイズから第１のターゲットデータの第１の部分のサイズを減算したものであり、複数のblockの中の第２のblockを決定し、第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、第１のターゲットデータの第１の部分を第１のblockに書き込み、第１のターゲットデータの第２の部分を第２のblockに書き込む。第２のblockは、データによって書き込まれているがデータで満たされていないblockであるため、本発明の実施例の実現方式によれば、第１のターゲットデータのサイズから第１のblockの有効容量を減算することにより取得されたデータの部分は、第２のblockに記憶され得る。新たなblockは、このデータの部分を記憶するために選択されない。これにより、ブロック利用率を改善し、SSDの記憶空間を節約する。
【００２４】
更に、本発明の実施例は、データをフラッシュメモリ装置に書き込む他の方法、他のフラッシュメモリ装置及び他の記憶システムを提供する。本発明の実施例では、プライマリコントローラは、第１のターゲットデータを受信し、第１のターゲットデータを複数のblockの中の第１のblockに書き込み、第１のblockがデータで満たされた場合、プライマリコントローラは、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得し、第１のblockの有効容量は、第１のターゲットデータのサイズ未満であり、プライマリコントローラは、複数のblockの中の第２のblockを決定し、第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、プライマリコントローラは、第１のblockに書き込まれていない第１のターゲットデータ内のデータを第２のblockに書き込む。実施例では、プライマリコントローラは、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得してもよく、データを第２のblockに書き込む。第２のblockは、データによって書き込まれているがデータで満たされていないblockであるため、本発明の実施例の実現方式によれば、第１のターゲットデータのサイズから第１のblockの有効容量を減算することにより取得されたデータの部分は、第２のblockに記憶され得る。新たなblockは、このデータを記憶するために選択されない。これにより、ブロック利用率を改善し、SSDの記憶空間を節約する。
【図面の簡単な説明】
【００２５】
本発明の実施例の技術的対策を更に明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面を簡単に紹介する。明らかに、以下の説明の添付図面は、本発明の単に幾つかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、これらの添付図面から依然として他の図面を導き得る。
【図１】本発明の実施例による記憶システムの概略構成図
【図２】本発明の実施例によるフラッシュメモリ装置のプライマリコントローラの概略構成図
【図３】本発明の実施例によるフラッシュメモリ装置の記憶媒体の概略構成図
【図４】本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む概略フローチャート
【図５】本発明の実施例に従ってデータがフラッシュメモリ装置に書き込まれる事例の概略図
【図６】本発明の実施例に従ってデータがフラッシュメモリ装置に書き込まれる他の事例の概略図
【図７】本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む他の概略フローチャート
【発明を実施するための形態】
【００２６】
本発明の実施例は、blockの空間利用率を改善することができる、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムを提供する。
【００２７】
図１は、本発明の実施例による記憶システムの概略構成図を示している。図１に示す記憶システムは、コントローラ11とフラッシュメモリ装置22とを含む。記憶媒体としてFlashユニットを使用する記憶装置であるフラッシュメモリ装置22は、ソリッド・ステート・ドライブ（Solid  State  Drive、SSD）とも呼ばれるソリッド・ステート・ディスク（Solid  State  Device、SSD）を含んでもよく、他のメモリを更に含んでもよい。この実施例では、一例としてSSDを使用することにより、フラッシュメモリ装置22について説明する。
【００２８】
図１は、例示的な説明に過ぎず、特定のネットワーキング方式を限定するものではない。例えば、コントローラ11及びフラッシュメモリ装置22が相互に通信することができる限り、カスケード型ツリーネットワーキング及びリングネットワーキングの双方が使用されてもよい。
【００２９】
コントローラ11は、従来技術で知られているいずれかのコンピューティングデバイスを含んでもよく、例えば、サーバ又はデスクトップコンピュータを含んでもよい。オペレーティングシステム及び他のアプリケーションプログラムは、コントローラにインストールされる。コントローラ11は、入出力（I/O）要求をフラッシュメモリ装置22に送信してもよい。例えば、書き込みデータ要求は、フラッシュメモリ装置22に送信され、これにより、フラッシュメモリ装置22は、書き込みデータ要求で搬送された書き込まれるべきデータを記憶媒体に書き込む。本発明のこの実施例におけるI/O要求は、書き込みデータ要求又は読み取りデータ要求でもよい点に留意すべきである。
【００３０】
フラッシュメモリ装置22は、プライマリコントローラ220と記憶媒体221とを含む。
【００３１】
プライマリコントローラ220は、コントローラ11からI/O要求を受信して処理するように構成される。記憶媒体221は、データを記憶するように構成される。
【００３２】
図２を参照すると、図２は、本発明の実施例によるフラッシュメモリ装置22のプライマリコントローラ220の概略構成図である。図２に示すように、プライマリコントローラ220は、プロセッサ（processor）218と、キャッシュ（cache）230と、通信バス（略してバス）226と、通信インタフェース（Communication  Interface）228とを主に含む。プロセッサ218、キャッシュ230及び通信インタフェース228は、通信バス226を使用することにより、相互通信を行う。
【００３３】
通信インタフェース228は、コントローラ11又は記憶媒体221と通信するように構成される。
【００３４】
キャッシュ230は、コントローラ11から受信したデータ又は記憶媒体221から読み取ったデータを一時的に記憶するように構成される。キャッシュ230は、RAM、ROM、フラッシュメモリ（Flash  memory）又はソリッド・ステート・ディスク（Solid  State  Disk、SSD）のように、データを記憶することができるいずれかの過渡的でない（non-transitory）機械読み取り可能な媒体でもよく、ここでは限定されない。例えば、コントローラ11により送信された書き込みデータ要求が受信された場合、書き込みデータ要求は、キャッシュ230に記憶されてもよく、また、プロセッサ218により処理される。更に、或る適用事例では、キャッシュ230は、プライマリコントローラ220の外部に配置されてもよい。
【００３５】
プロセッサ218は、中央処理装置CPUでもよく、特定用途向け集積回路ASIC（Application  Specific  Integrated  Circuit）でもよく、本発明のこの実施例を実現するように構成された１つ以上の集積回路でもよい。本発明のこの実施例では、プロセッサ218は、ホストから書き込みデータ要求又は読み取りデータ要求を受信し、書き込みデータ要求又は読み取りデータ要求を処理し、書き込みデータ要求又は読み取りデータ要求を記憶媒体221に送信し、他の動作を実行するように構成されてもよい。
【００３６】
プロセッサ218は、様々なプログラム命令を記憶するように構成されたバッファ（図面に図示せず）を更に含んでもよい。例えば、バッファは、フラッシュ変換レイヤ（Flash  Translation  Layer、FTL）を含んでもよい。プロセッサ218は、FTLを使用することにより、損傷ページについての統計の収集のような動作を実行して損傷ページについての統計の収集結果をFTLの構成情報に記憶してもよい。或いは、プロセッサ218は、他のソフトウェアモジュールを使用することにより、同様の機能を実現してもよい。従って、FTLの機能と同様の機能を有し、損傷ページについての統計の収集のような動作を実行して損傷ページについての統計の収集結果をソフトウェアモジュールの構成情報に記憶し得る如何なるソフトウェアモジュールも、本発明の実施例の保護範囲に入る。
【００３７】
更に、キャッシュ230及びプロセッサ218のキャッシュは、一緒に配置されてもよく、別々に配置されてもよく、本発明のこの実施例では限定されない。
【００３８】
図３を参照すると、図３は、本発明の実施例による記憶媒体221の概略構成図である。この実施例では、記憶媒体221は、Flashユニットを示し、Flashユニットは、シングルレイヤセル（フルネーム：Single  Layer  Cell、略してSLC）、マルチレイヤセル（フルネーム：Multi-Layer  Cell、略してMLC）又は他の記憶セルでもよい。
【００３９】
記憶媒体221は、一般的に複数のフラッシュ（Flash）チップを含む。SSDでは、複数のフラッシュチップを共に接続するためにチャネル（channel）が使用される。書き込みデータ要求の並行処理は、チャネルで実現されてもよい。一例として図３に示す４つのチャネルが使用される。プライマリコントローラ220がコントローラ11により送信された４つの書き込みデータ要求を受信した場合、４つのチャネルのそれぞれが書き込みデータ要求を処理してもよく、これにより、書き込みデータ要求を処理する際の効率を改善する。
【００４０】
各フラッシュチップは、複数のブロック（block）を含み、SSDにより実行される消去動作は、単位としてblockを用いて実行される。フラッシュユニットの消去機能のため、blockに記憶されたデータが、一般的な機械的ハードドライブのように直接的に変更され得ないことを当業者は習得し得る。blockのデータが変更される必要がある場合、SSDのプライマリコントローラ220は、新たなblockを見つけ、変更されたデータを新たなblockに書き込み、元のblockのデータは無効なデータになる。SSDがガベージコレクションを実行する場合、無効なデータは消去される。例えば、SSDがガベージコレクションを実行する必要がある場合、block内の有効なデータは、まず他の新たなblockに動かされ、元のblockに記憶された全てのデータ（有効なデータ及び無効なデータを含む）が消去される。きれいに消去された後に、blockは空のblockになる。本発明のこの実施例では、blockの有効なデータは、blockに記憶されており、変更されていないデータを示し、データのこの部分は読み取られてもよい。blockの無効なデータは、blockに記憶されており、変更されたデータを示し、データのこの部分は読み取られることができない。
【００４１】
各blockは、複数のページ（page）を含んでもよい。或る場合には、blockのpageに損傷が発生する可能性があり、本発明のこの実施例では、損傷が発生したページは損傷ページと呼ばれる。blockに損傷ページが存在する場合、blockの実際の容量は、損傷ページを含まないblockの容量より小さくなる。本発明のこの実施例では、blockの実際の容量は、有効容量と呼ばれる。例えば、blockの標準容量は1Mであり、各pageのサイズは4KBである。blockに１つの損傷ページが存在する場合、blockの有効容量は、1Mから4KBを減算したものである。本発明のこの実施例では、blockの標準容量は、損傷ページを含まない空のblockの容量を示し、空のblockは、きれいに消去されたblockを示し、有効なデータも無効なデータも含まない。blockの有効容量は、blockの標準容量から損傷ページの容量を減算したものに等しい。損傷ページの容量は、各損傷ページのサイズと損傷ページの数との積に等しい。
【００４２】
本発明のこの実施例では、blockの標準容量は、コントローラ11に予め記憶され、コントローラ11により、サイズが標準容量と同じターゲットデータをフラッシュメモリ装置22に送信するために使用されてもよい。各blockの標準容量は、2のN乗（M）であり、Nは正の整数である。blockの標準容量は同じでもよく、異なってもよい。blockの標準容量が異なる場合、Nの値は異なってもよい。この場合、コントローラ11によりフラッシュメモリ装置22に送信されるターゲットデータのサイズは、最大のblockの標準容量以上である。
【００４３】
更に、本発明のこの実施例では、SSDが書き込みデータ要求を処理する場合、データはまた、単位としてpageを使用することにより書き込まれる。例えば、受信側のコントローラ11は、書き込みデータ要求をプライマリコントローラ220に送信する。書き込みデータ要求は、論理ブロックアドレス（Logical  Block  Address、LBA）のセグメント及びターゲットデータを搬送し、LBAは、コントローラ11によりアクセスされ得るアドレスである。書き込みデータ要求を受信した場合、プライマリコントローラ220は、所定のポリシーに従ってターゲットデータをblockに書き込んでもよい。ターゲットデータが書き込まれる複数のpageのアドレスは、ターゲットデータを実際に記憶するアドレスであり、物理アドレスとも呼ばれる。SSDは、LBAのセグメントと複数のpageのアドレスとの間の対応関係を設定して記憶してもよい。LBAのセグメントと複数のpageのアドレスとの間の対応関係は、FTLにより管理される。コントローラ11が後に読み取りデータ要求をプライマリコントローラ220に送信し、ターゲットデータを読み取ることを要求した場合、読み取りデータ要求はLBAを搬送する。この場合、プライマリコントローラ220は、LBAと、LBAと物理アドレスとの間の対応関係とに従ってターゲットデータを読み出し、ターゲットデータをコントローラ11に戻してもよい。
【００４４】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む手順を紹介する。本発明のこの実施例におけるデータをフラッシュメモリ装置に書き込む方法は、図２及び図３に示すフラッシュメモリ装置において実現されてもよい。図４に示すように、この方法は以下のステップを含む。
【００４５】
ステップS101：プライマリコントローラ220は、第１のターゲットデータを受信する。
【００４６】
第１のターゲットデータは、コントローラ11によりプライマリコントローラ220に送信されてもよい。更に、第１のターゲットデータは、書き込みデータ要求で搬送されたデータでもよく、複数の書き込みデータ要求で搬送されたデータでもよい。第１のターゲットデータのサイズは、blockの標準容量と同じである。blockの標準容量は、コントローラ11に予め記憶されてもよい。
【００４７】
具体的に、ステップS101は、プロセッサ218により実行されてもよい。通信インタフェース228を通じて、コントローラ11により送信された第１のターゲットデータを受信した後に、プロセッサ218は、第１のターゲットデータをキャッシュ230に書き込んでもよい。
【００４８】
ステップS102：プライマリコントローラ220は、第１のターゲットデータを複数のblockの中の第１のblockに書き込む。
【００４９】
任意選択の実現方式は、プロセッサ218が空のblockをランダムに選択し、空のblockがまさに損傷ページを含むblockであることである。第１のblockは損傷ページを含むため、第１のblockの有効容量は、第１のblockの標準容量未満である。具体的に、第１のblockの有効容量は、第１のblockの標準容量から第１のblockに含まれる損傷ページの容量を減算したものに等しい。
【００５０】
具体的に、プロセッサ218がステップS102を実行する前に、第１のblockの損傷ページについての情報の統計は収集されなくてもよく、データを書き込む動作が直接実行される。第１のblockの損傷ページについての情報の統計は、プロセッサ218がデータを書き込む動作を実行する前に事前に収集されてもよいことが認識され得る。
【００５１】
しかし、第１のターゲットデータのサイズが第１のblockの標準容量であり、第１のblockが損傷ページを含む場合、第１のblockの有効容量は第１のblockの標準容量未満であるため、第１のターゲットデータは、完全には第１のblockに書き込まれることができない。
【００５２】
説明を容易にするために、図５に示す例に参照が行われ得る。図５は、データが第１のblock及び第２のblockに書き込まれる事例の概略図である。
【００５３】
図５に示すように、第１のターゲットデータは、第１のblockに書き込まれる。第１のblockは損傷ページを含む。
【００５４】
ステップS103：第１のblockがデータで満たされた場合、プライマリコントローラ220は、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得する。
【００５５】
具体的に、ステップS104は、プロセッサ218により実行される。
【００５６】
第１のblockに書き込まれていない第１のターゲットデータ内のデータのサイズは、第１のblockの損傷ページの容量である。第１のターゲットデータのサイズは、第１のblockの有効容量より大きいため、第１のblockがデータで満たされた場合、第１のblockに書き込まれることができないデータの部分が依然として存在する。このデータの部分のサイズは、第１のblockの損傷ページの容量である。説明を容易にするために、第１のblockに書き込まれることができないこのデータの部分は、以下のステップにおいてオーバーフローデータと呼ばれる。
【００５７】
図５に示すように、第１のターゲットデータが第１のblockに書き込まれる場合、第１のblockはデータで満たされる。図５に示す第１のblockの斜線領域は、第１のblockに書き込まれている第１のターゲットデータ内のデータである。
【００５８】
ステップS104：プライマリコントローラ220は、第２のblockを決定する。第２のblockは、データによって書き込まれているがデータで満たされていないblockである。
【００５９】
具体的に、ステップS104は、プロセッサ218により実行される。
【００６０】
第２のblockは、初期化中にフラッシュメモリ装置22により設定されたblockでもよく、特にオーバーフローデータを記憶するために使用される。或いは、第２のblockは、データフラグを有してもよい。データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用される。データフラグは、第２のblockの属性でもよい。属性の値は、数字、文字、文字列等でもよい。本発明のこの実施例は、データフラグの形式に限定を設定しない。機能がデータによって書き込まれているがデータで満たされてないblockを識別するものである如何なるフラグも、本発明のこの実施例の保護範囲内に入るものとする。このように、プライマリコントローラ220は、データフラグに従って第２のblockを決定してもよい。データフラグは、フラッシュメモリ装置22が前の書き込みデータ要求を処理したときにデータのオーバーフローが発生した場合、オーバーフローデータがblockに記憶された後にblockに追加されるフラグでもよい。データフラグが追加された後に、blockは、第２のblockとしての機能を果たし、特にオーバーフローデータを記憶するために使用される。フラッシュメモリ装置22が書き込みデータ動作を処理する毎に、データのオーバーフローが発生した場合、オーバーフローデータは、第２のblockに書き込まれる。第２のblockがデータで満たされた場合、フラッシュメモリ装置22は、オーバーフローデータを記憶し続けるために、第２のblockとしての機能を果たすための複数のblockから新たなblockを選択してもよいことが認識され得る。図５に示すように、データ（図５に示す元のデータ）が既に第２のblockに記憶されている。更に、第２のblockは、損傷ページを含んでもよく、損傷ページを含まなくてもよい。
【００６１】
この実施例は、説明の例としてSSDにおいて１つのチャネルを使用する点に留意すべきである。SSDにおける１つのチャネルでは、データによって書き込まれているがデータで満たされていない１つのみのblockが存在する。SSDが複数のチャネルを有する場合、各チャネルは、データによって書き込まれているがデータで満たされていない１つのblockを有する。更に、本発明のこの実施例はまた、１つのチャネル上の複数の並行ユニットで複数のI/O要求の並行処理を実現してもよい。この場合、各並行ユニットは、データによって書き込まれているがデータで満たされていない１つのみのblockを有する。
【００６２】
ステップS105：プライマリコントローラ220は、第１のblockに書き込まれていない第１のターゲットデータ内のデータを第２のblockに書き込む。
【００６３】
具体的に、ステップS105は、プロセッサ218により実行される。
【００６４】
図５に示すように、第１のターゲットデータの残りのデータは、第２のblockに書き込まれる。
【００６５】
本発明のこの実施例によれば、プライマリコントローラ220は、第１のターゲットデータを受信し、複数のblockから第１のblockを選択する。第１のblockの有効容量は第１のターゲットデータのサイズ未満であるため、第１のblockは、全体の第１のターゲットデータを記憶するのに十分な容量を有さない。第１のblockがデータで満たされた場合、プライマリコントローラ220は、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得し、データを第２のblockに書き込む。第２のblockは、データによって書き込まれているがデータで満たされていないblockである。第１のターゲットデータのオーバーフローは、データによって書き込まれているがデータで満たされていないblockに書き込まれる。このことは、新たな空のblockがオーバーフローデータを記憶するために見つけられることを回避し、これにより、block利用率を改善する。
【００６６】
本発明の実施例の技術的効果を更に説明するために、前述の実施例において、ステップS101の前に、プライマリコントローラ220は、コントローラ11により送信された第２のターゲットデータを更に受信してもよい。第２のターゲットデータのサイズは、blockの標準容量と同じである。プライマリコントローラ220は、第２のターゲットデータを複数のblockの中の第３のblockに書き込む。第３のblockは、第１のblockと同様に、空のblockであり、損傷ページを含む。従って、第３のblockの有効容量は、第２のターゲットデータのサイズ未満である。第３のblockがデータで満たされた場合、プライマリコントローラ220は、第３のblockに書き込まれていない第２のターゲットデータ内のデータを取得し、第３のblockに書き込まれていない第２のターゲットデータ内のデータを第２のblockに書き込む。更に、第３のblockに書き込まれていない第２のターゲットデータ内のデータを第２のblockに書き込んだ後に、プライマリコントローラ220は、データフラグを第２のblockに追加してもよい。データフラグは、第２のblockがデータによって書き込まれているがデータで満たされていないblockであることを識別するために使用される。従って、プライマリコントローラ220が他のターゲットデータを後に受信したときに、他のターゲットデータが空のblockに書き込まれてオーバーフローが発生した場合、オーバーフローデータは、第２のblockに書き込まれてもよい。これにより、SSDのblockの利用率を最大限まで改善する。
【００６７】
更に、図４に示す実施例では、好ましい実現方式は、ステップS104はステップS101〜ステップS103の後に実行され得ることである。換言すると、この実現方式では、プライマリコントローラ220は、まず、第１のターゲットデータを第１のblock（損傷ページを含む空のblock）に書き込む必要があり、第１のblockに書き込まれていない第１のターゲットデータ内のデータを取得した後に、プライマリコントローラ220は、第２のblock（データによって書き込まれているがデータで満たされていないblock）を決定する。この実現方式によりもたらされる利点は、連続するLBAのセグメントに対応するデータが１つのblockに最大限まで記憶されることが確保され得ることである。
【００６８】
前述の実現方式の技術的効果を説明するために、図６が比較の説明のために使用される。図６は、実施例に従ってデータがフラッシュメモリ装置22に書き込まれる他の事例の概略図である。図６に示すように、
【００６９】
第１のターゲットデータを受信した場合、フラッシュメモリ装置22は、まず第２のblockを決定し、第１のターゲットデータを第２のblockに書き込む。データ（図６において元のデータと呼ばれる）が既に第２のblockに記憶されているため、第２のblockに書き込まれるときに、第２のblockがデータで満たされるまで、第１のターゲットデータは元のデータに続いて書き込まれてもよい。データが既に第２のblockに記憶されており、第２のblockが損傷ページを含んでもよいため、第１のターゲットデータは、第２のblockに完全には書き込まれることができない。第２のblockがデータで満たされた場合、第２のblockに書き込まれていない第１のターゲットデータ内のデータが取得されてもよい。第２のblockに書き込まれていない第１のターゲットデータ内のデータのサイズは、第２のblockの元のデータのサイズと、第２のblockに含まれる損傷ページの容量との和である。次に、空のblock（本発明のこの実施例では第１のblock）が複数のblockから選択されてもよい。第２のblockに書き込まれていない第１のターゲットデータ内のデータは、第１のblockに書き込まれる。
【００７０】
前述の説明及び図６から、第１のターゲットデータは第１のblock及び第２のblockに記憶されることが習得され得る。しかし、図５に示す実現方式との相違は、図６に示す実現方式では、第１のblockに記憶されたデータと第２のblockに記憶されたデータとの双方が、図５の第１のblockに記憶されたデータ未満であるという点にある。
【００７１】
更に、前述の説明に従って、SSDがターゲットデータをblockに書き込んだ後に、ターゲットデータが書き込まれたblockの複数のページのアドレスは、ターゲットデータを実際に記憶するアドレスであり、物理アドレスとも呼ばれることが習得され得る。ターゲットデータが１つのblockに最大限まで記憶される場合、ターゲットデータの物理アドレスが連続する程度が最高になる。ガベージコレクションがblockで実行される場合、生成されるフラグメントの数は最小になる。
【００７２】
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む他の方法の手順を紹介する。この方法は、図２及び図３に示すフラッシュメモリ装置において実現されてもよい。図７に示すように、この方法は以下のステップを含む。
【００７３】
ステップS201：ステップS201は、図４に示す実施例のステップS101と同じであり、ステップS101の説明に参照が行われてもよい。
【００７４】
ステップS202：複数のblockの中の第１のblockの有効容量が第１のターゲットデータのサイズ未満である場合、プライマリコントローラ220は、第１のターゲットデータを第１のターゲットデータの第１の部分と第１のターゲットデータの第２の部分とに分割する。第１のターゲットデータの第１の部分のサイズは、第１のblockの有効容量であり、第１のターゲットデータの第２の部分のサイズは、第１のターゲットデータのサイズから第１のターゲットデータの第１の部分のサイズを減算したものである。
【００７５】
第１のターゲットデータを受信した場合、プライマリコントローラ220は、第１のターゲットデータを記憶するために、SSDの複数のblockから第１のblockを選択してもよい。第１のblockは空のblockである。しかし、第１のblockは、損傷ページを含むblockでもよい。第１のblockが損傷ページを含む場合、第１のblockの有効容量は、第１のターゲットデータのサイズ未満である。この理由は、第１のターゲットデータのサイズは、blockの標準容量に等しいからである。
【００７６】
具体的に、SSDに含まれる複数のblockについて、プロセッサ218は、FTLを使用することにより、各blockの損傷ページについての統計を収集し、損傷ページについての情報を記録してもよい。損傷ページについての情報は、blockが損傷ページを含むか否かについての情報、含まれる損傷ページの数又は容量についての情報等を示す。
【００７７】
任意選択で、プロセッサ218は、統計の収集によって取得された各blockの損傷ページについての情報をFTLの構成情報に記憶してもよい。コントローラ11により送信された第１のターゲットデータが受信された場合、プロセッサ218は、FTLに記憶された損傷ページについての情報に従って空のblockを選択する。空のblockを選択する場合、プロセッサ218は、FTLに記憶された損傷ページについての情報に従って、損傷ページを含まない空のblockを優先的に選択してもよい点に留意すべきである。この場合、プロセッサ218は、受信した第１のターゲットデータを損傷ページを含まない空のblockに直接書き込んでもよい。
【００７８】
しかし、本発明のこの実施例で説明した要点は、プロセッサ218が損傷ページを含む空のblockを選択した場合である。理由は、損傷ページを含まない空のblockが使い果たされたことでもよく、プロセッサ218が損傷ページを含む空のblockをランダムに選択したことでもよく、他の理由が存在してもよい。詳細は、本発明のこの実施例では説明しない。
【００７９】
更に、本発明のこの実施例では、プロセッサ218は、少ない損傷ページを有する空のblockを優先的に選択してもよい。
【００８０】
第１のblockの有効容量が第１のターゲットデータのサイズ未満である場合、プロセッサ218は、第１のblockの損傷ページについての情報に従って、第１のターゲットデータを第１の部分と第２の部分とに分割してもよい。
【００８１】
損傷ページについての情報が第１のblockに含まれる損傷ページの数である場合、第１のblockに含まれる損傷ページの容量は、各損傷ページのサイズで乗算された損傷ページの数である。第１のblockの有効容量は、第１のblockの標準容量から損傷ページの容量を減算したものであり、これにより、第１の部分のサイズが取得される。更に、損傷ページについての情報は、第１のblockに含まれる損傷ページの容量でもよく、第１のblockの有効容量でもよく、第１のblockの有効容量を取得するために使用され得る他の情報でもよい。
【００８２】
更に、第１のターゲットデータがコントローラ11によりプライマリコントローラ220に送信された書き込みデータ要求で搬送された場合、第１のターゲットデータを第１の部分と第２の部分とに分割することは、具体的に、書き込みデータ要求を２つの書き込みデータ要求に分割することでもよい。分割後に取得された一方の書き込みデータ要求は、第１の部分を搬送し、他方の書き込みデータ要求は、第２の部分を搬送する。第１のターゲットデータがコントローラ11によりプライマリコントローラ220に送信された複数の書き込みデータ要求で搬送された場合、第１のターゲットデータを第１の部分と第２の部分とに分割することは、具体的に、複数の書き込みデータ要求を書き込みデータ要求の２つの部分に分割することでもよい。書き込みデータ要求の第１の部分で搬送されるデータは、第１の部分であり、書き込みデータ要求の第２の部分で搬送されるデータは、第２の部分である。
【００８３】
ステップS203：プライマリコントローラ220は、複数のblockの中の第２のblockを決定する。第２のblockは、データによって書き込まれているがデータで満たされていないblockである。
【００８４】
具体的に、ステップS203は、プロセッサ218により実行される。
【００８５】
第２のblockは、初期化中にフラッシュメモリ装置22により設定されたblockでもよく、特にオーバーフローデータを記憶するために使用される。或いは、第２のblockは、データフラグを有してもよい。データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用される。このように、プライマリコントローラ220は、データフラグに従って第２のblockを決定してもよい。データフラグは、フラッシュメモリ装置22が前の書き込みデータ要求を処理したときにデータのオーバーフローが発生した場合、オーバーフローデータがblockに記憶された後にblockに追加されるフラグでもよい。データフラグが追加された後に、blockは、第２のblockとしての機能を果たし、特にオーバーフローデータを記憶するために使用される。フラッシュメモリ装置22が書き込みデータ動作を処理する毎に、データのオーバーフローが発生した場合、オーバーフローデータは、第２のblockに書き込まれる。第２のblockがデータで満たされた場合、フラッシュメモリ装置22は、オーバーフローデータを記憶し続けるために、第２のblockとしての機能を果たすための複数のblockから新たなblockを選択してもよいことが認識され得る。
【００８６】
この実施例は、説明の例としてSSDにおいて１つのチャネルを使用する点に留意すべきである。SSDにおける１つのチャネルでは、データによって書き込まれているがデータで満たされていない１つのみのblockが存在する。SSDが複数のチャネルを有する場合、各チャネルは、データによって書き込まれているがデータで満たされていない１つのblockを有する。
【００８７】
ステップS204：プライマリコントローラ220は、第１のターゲットデータの第１の部分を第１のblockに書き込み、第１のターゲットデータの第２の部分を第２のblockに書き込む。
【００８８】
任意選択で、プロセッサ218は、データの２つの部分を２つのblockに並行して書き込んでもよく、まず第１の部分を第１のblockに書き込み、次に第２の部分を第２のblockに書き込んでもよく、まず第２の部分を第２のblockに書き込み、次に第１の部分を第１のblockに書き込んでもよく、ここでは限定されない。
【００８９】
図４に示す実施例との相違は、図６に示す実施例では、プライマリコントローラ220が第１のターゲットデータを第１のblock及び第２のblockに書き込む前に、第１のターゲットデータが第１の部分と第２の部分とに分割される必要がある点にある。第１の部分のサイズは、第１のblockの有効容量と同じであり、第２の部分のサイズは、第１のblockの損傷ページの容量と同じである。分割が完了した後に、プライマリコントローラ220は、データの２つの部分を２つのblockに書き込む。第１のターゲットデータのオーバーフローは、データによって書き込まれているがデータで満たされていないblockに書き込まれるため、この実現方式ではblock利用率が改善され得る。
【００９０】
同様に、図４に示す実施例と同様に、ステップS201の前に、プライマリコントローラ220は、コントローラ11により送信された第２のターゲットデータを更に受信してもよい。第２のターゲットデータのサイズは、blockの標準容量と同じである。複数のblockの中の第３のblockが損傷ページを含む空のblockである場合、第３のblockの有効容量は、第２のターゲットデータのサイズ未満である。プライマリコントローラ220は、第２のターゲットデータを第１の部分と第２の部分とに分割してもよい。第１の部分のサイズは、第３のblockの有効容量と同じであり、第２の部分のサイズは、第２のターゲットデータのサイズから第１の部分のサイズを減算したものである。更に、プライマリコントローラ220は、更に、複数のblockから第２の部分を記憶するために使用されるblockを選択する必要があり、第２の部分を選択されたblockに書き込んだ後に、プライマリコントローラ220は、データフラグをblockに追加してもよい。データフラグは、blockがデータによって書き込まれているがデータで満たされていないblockであることを識別するために使用される。blockは、前に説明した第２のblockである。従って、プライマリコントローラ220が他のターゲットデータを後に受信したときに、他のターゲットデータが空のblockに書き込まれたときにオーバーフローが発生した場合、オーバーフローデータは、第２のblockに書き込まれてもよい。これにより、SSDのblockの利用率を最大限まで改善する。更に、この実施例において第２のblockがデータで満たされた場合、新たなblockは、ターゲットデータのオーバーフローを記憶するために使用される第２のblockとして選択されてもよい点に留意すべきである。
【００９１】
当業者は、本発明の各態様又は各態様の可能な実現方式がシステム、方法又はコンピュータ・プログラム・プロダクトとして具体的に実現されてもよいことを認識し得る。従って、本発明の各態様又は各態様の可能な実現方式は、ハードウェアのみの実施例、ソフトウェアのみの実施例（ファームウェア、常駐ソフトウェア等を含む）、又はソフトウェアとハードウェアとの組み合わせの実施例の形式を使用してもよい。これらは、ここでは一律に「回路」、「モジュール」又は「システム」と呼ばれる。更に、本発明の各態様又は各態様の可能な実現方式は、コンピュータ・プログラム・プロダクトの形式になってもよい。コンピュータ・プログラム・プロダクトは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを示す。
【００９２】
コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体又はコンピュータ読み取り可能な記憶媒体でもよい。コンピュータ読み取り可能な記憶媒体は、ランダム・アクセス・メモリ（RAM）、読み取り専用メモリ（ROM）、消去可能プログラム可能読み取り専用メモリ（EPROM又はフラッシュメモリ）、光ファイバ及びコンパクトディスク読み取り専用メモリ（CD-ROM）のような、電子、磁気、光学、電磁気、赤外線若しくは半導体システム、デバイス若しくは装置、又はこれらのいずれか適切な組み合わせを含み、これらに限定されない。
【００９３】
コンピュータのプロセッサは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを読み取り、これにより、プロセッサは、フローチャートの各ステップ又はステップの組み合わせで指定された機能及び動作を実行することができ、ブロック図の各ブロック又はブロックの組み合わせで指定された機能及び動作を実現するように装置が生成される。
【００９４】
全てのコンピュータ読み取り可能なプログラムコードは、ユーザコンピュータで実行されてもよく、いくつかがスタンドアローンのソフトウェアパッケージとしてユーザコンピュータで実行されてもよく、いくつかがリモートコンピュータで実行されつつ、いくつかがユーザのコンピュータで実行されてもよい。或いは、全てのコードがリモートコンピュータ又はサーバで実行されてもよい。また、或る別の実現対策では、フローチャートの各ステップ又はブロック図の各ブロックで指定された機能は、図示の順序で行われなくてもよい点に留意すべきである。例えば、関与する機能に依存する図面における２つの連続するステップ又は２つのブロックは、実際に実質的に同時に実行されてもよく、これらのブロックは場合によって逆の順序で実行されてもよい。
【００９５】
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせにより実現されてもよいことを認識し得る。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的対策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現は、本発明の範囲を超えるものとして考えられるべきではない。
【００９６】
前述の説明は、本発明の単に特定の実現方式に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術的範囲内で当業者により容易に把握される如何なる変更又は置換も、本発明の保護範囲内に入るものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【図１】
2016524770.tif 000003
【図２】
2016524770.tif 000004
【図３】
2016524770.tif 000005
【図４】
2016524770.tif 000006
【図５】
2016524770.tif 000007
【図６】
2016524770.tif 000008
【図７】
2016524770.tif 000009
【手続補正書】
【提出日】平成27年10月13日(2015.10.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
前記プライマリコントローラは、
第１のターゲットデータを受信し、
前記複数のblockの中の第１のblockの有効容量が前記第１のターゲットデータのサイズ未満である場合、前記第１のターゲットデータを前記第１のターゲットデータの第１の部分と前記第１のターゲットデータの第２の部分とに分割し、前記第１のターゲットデータの前記第１の部分のサイズは、前記第１のblockの前記有効容量であり、前記第１のターゲットデータの前記第２の部分のサイズは、前記第１のターゲットデータの前記サイズから前記第１のターゲットデータの前記第１の部分の前記サイズを減算したものであり、
前記複数のblockの中の第２のblockを決定し、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、
前記第１のターゲットデータの前記第１の部分を前記第１のblockに書き込み、
前記第１のターゲットデータの前記第２の部分を前記第２のblockに書き込むように構成されるフラッシュメモリ装置。
【請求項２】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラは、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するように構成される、請求項１に記載のフラッシュメモリ装置。
【請求項３】
前記プライマリコントローラは、
第２のターゲットデータを受信し、
前記複数のblockの中の第３のblockの有効容量が前記第２のターゲットデータのサイズ未満である場合、前記第２のターゲットデータを前記第２のターゲットデータの第１の部分と前記第２のターゲットデータの第２の部分とに分割し、前記第２のターゲットデータの前記第１の部分のサイズは、前記第３のblockの前記有効容量であり、前記第２のターゲットデータの前記第２の部分のサイズは、前記第２のターゲットデータの前記サイズから前記第２のターゲットデータの前記第１の部分の前記サイズを減算したものであり、
前記第２のターゲットデータの前記第１の部分を前記第３のblockに書き込み、前記第２のターゲットデータの前記第２の部分を前記第２のblockに書き込み、
前記データフラグを前記第２のblockに追加するように更に構成される、請求項２に記載のフラッシュメモリ装置。
【請求項４】
前記第２のblockは、予め設定されたblockである、請求項１に記載のフラッシュメモリ装置。
【請求項５】
プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
前記プライマリコントローラは、
第１のターゲットデータを受信し、前記第１のターゲットデータを前記複数のblockの中の第１のblockに書き込み、
前記第１のblockがデータで満たされた場合、前記第１のblockに書き込まれていない前記第１のターゲットデータ内のデータを取得し、前記第１のblockの有効容量は、前記第１のターゲットデータのサイズ未満であり、
前記複数のblockの中の第２のblockを決定し、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであり、
前記第１のblockに書き込まれていない前記第１のターゲットデータ内の前記データを前記第２のblockに書き込むように構成されるフラッシュメモリ装置。
【請求項６】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラは、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するように構成される、請求項５に記載のフラッシュメモリ装置。
【請求項７】
前記プライマリコントローラは、
第２のターゲットデータを受信し、前記第２のターゲットデータを前記複数のblockの中の第３のblockに書き込み、
前記第３のblockがデータで満たされた場合、前記第３のblockに書き込まれていない前記第２のターゲットデータ内のデータを取得し、前記第３のblockの有効容量は、前記第２のターゲットデータのサイズ未満であり、
前記第３のblockに書き込まれていない前記第２のターゲットデータ内の前記データを前記第２のblockに書き込み、
前記データフラグを前記第２のblockに追加するように更に構成される、請求項６に記載のフラッシュメモリ装置。
【請求項８】
前記第２のblockは、予め設定されたblockである、請求項５に記載のフラッシュメモリ装置。
【請求項９】
データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
前記プライマリコントローラにより、第１のターゲットデータを受信するステップと、
前記複数のblockの中の第１のblockの有効容量が前記第１のターゲットデータのサイズ未満である場合、前記第１のターゲットデータを前記第１のターゲットデータの第１の部分と前記第１のターゲットデータの第２の部分とに分割するステップであり、前記第１のターゲットデータの前記第１の部分のサイズは、前記第１のblockの前記有効容量であり、前記第１のターゲットデータの前記第２の部分のサイズは、前記第１のターゲットデータの前記サイズから前記第１のターゲットデータの前記第１の部分の前記サイズを減算したものであるステップと、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップであり、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、
前記プライマリコントローラにより、前記第１のターゲットデータの前記第１の部分を前記第１のblockに書き込み、前記第１のターゲットデータの前記第２の部分を前記第２のblockに書き込むステップと
を有する方法。
【請求項１０】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップは、前記プライマリコントローラにより、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するステップを有する、請求項９に記載の方法。
【請求項１１】
前記プライマリコントローラにより、第２のターゲットデータを受信するステップと、
前記複数のblockの中の第３のblockの有効容量が前記第２のターゲットデータのサイズ未満である場合、前記第２のターゲットデータを前記第２のターゲットデータの第１の部分と前記第２のターゲットデータの第２の部分とに分割するステップであり、前記第２のターゲットデータの前記第１の部分のサイズは、前記第３のblockの前記有効容量であり、前記第２のターゲットデータの前記第２の部分のサイズは、前記第２のターゲットデータの前記サイズから前記第２のターゲットデータの前記第１の部分の前記サイズを減算したものであるステップと、
前記プライマリコントローラにより、前記第２のターゲットデータの前記第１の部分を前記第３のblockに書き込み、前記第２のターゲットデータの前記第２の部分を前記第２のblockに書き込むステップと、
前記プライマリコントローラにより、前記データフラグを前記第２のblockに追加するステップと
を更に有する、請求項１０に記載の方法。
【請求項１２】
前記第２のblockは、予め設定されたblockである、請求項９に記載の方法。
【請求項１３】
データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
前記プライマリコントローラにより、第１のターゲットデータを受信し、前記第１のターゲットデータを前記複数のblockの中の第１のblockに書き込むステップと、
前記第１のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第１のblockに書き込まれていない前記第１のターゲットデータ内のデータを取得するステップであり、前記第１のblockの有効容量は、前記第１のターゲットデータのサイズ未満であるステップと、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップであり、前記第２のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、
前記プライマリコントローラにより、前記第１のblockに書き込まれていない前記第１のターゲットデータ内の前記データを前記第２のblockに書き込むステップと
を有する方法。
【請求項１４】
前記第２のblockは、データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
前記プライマリコントローラにより、前記複数のblockの中の第２のblockを決定するステップは、前記プライマリコントローラにより、前記データフラグに従って前記複数のblockの中の前記第２のblockを決定するステップを有する、請求項１３に記載の方法。
【請求項１５】
前記プライマリコントローラにより、第２のターゲットデータを受信し、前記第２のターゲットデータを前記複数のblockの中の第３のblockに書き込むステップと、
前記第３のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第３のblockに書き込まれていない前記第２のターゲットデータ内のデータを取得するステップであり、前記第３のblockの有効容量は、前記第２のターゲットデータのサイズ未満であるステップと、
前記プライマリコントローラにより、前記第３のblockに書き込まれていない前記第２のターゲットデータ内の前記データを前記第２のblockに書き込むステップと、
前記プライマリコントローラにより、前記データフラグを前記第２のblockに追加するステップと
を更に有する、請求項１４に記載の方法。
【請求項１６】
前記第２のblockは、予め設定されたblockである、請求項１３に記載の方法。
【請求項１７】
請求項１ないし４のうちいずれか１項に記載のフラッシュメモリ装置及びコントローラを有する記憶システムであって、
前記コントローラは、第１のターゲットデータを前記フラッシュメモリ装置に送信するように構成される記憶システム。
【請求項１８】
請求項５ないし８のうちいずれか１項に記載のフラッシュメモリ装置及びコントローラを有する記憶システムであって、
前記コントローラは、第１のターゲットデータを前記フラッシュメモリ装置に送信するように構成される記憶システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
フラッシュメモリ装置は、記憶媒体がFlashユニットである不揮発性メモリであり、電源停止の後にデータが消滅しないという特徴を有する。従って、フラッシュメモリ装置は、外部又は内部メモリとして広く使用されている。記憶媒体としてFlashユニットを使用するフラッシュメモリ装置は、ソリッド・ステート・ドライブ（Solid  State  Drive、SSD）とも呼ばれるソリッド・ステート・ディスク（Solid  State  Device、SSD）でもよく、他のメモリでもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
コントローラ11は、従来技術で知られているいずれかのコンピューティングデバイスを含んでもよく、例えば、サーバ又はデスクトップコンピュータを含んでもよい。オペレーティングシステム及び他のアプリケーションプログラムは、コントローラ11にインストールされる。コントローラ11は、入出力（I/O）要求をフラッシュメモリ装置22に送信してもよい。例えば、書き込みデータ要求は、フラッシュメモリ装置22に送信され、これにより、フラッシュメモリ装置22は、書き込みデータ要求で搬送された書き込まれるべきデータを記憶媒体に書き込む。本発明のこの実施例におけるI/O要求は、書き込みデータ要求又は読み取りデータ要求でもよい点に留意すべきである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
図３を参照すると、図３は、本発明の実施例による記憶媒体221の概略構成図である。この実施例では、記憶媒体221は、Flashユニットを示し、Flashユニットは、シングルレベルセル（フルネーム：Single-Level  Cell、略してSLC）、マルチレベルセル（フルネーム：Multi-Level  Cell、略してMLC）又は他の記憶セルでもよい。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
更に、本発明のこの実施例では、SSDが書き込みデータ要求を処理する場合、データはまた、単位としてpageを使用することにより書き込まれる。例えば、コントローラ11は、書き込みデータ要求をプライマリコントローラ220に送信する。書き込みデータ要求は、論理ブロックアドレス（Logical  Block  Address、LBA）のセグメント及びターゲットデータを搬送し、LBAは、コントローラ11によりアクセスされ得るアドレスである。書き込みデータ要求を受信した場合、プライマリコントローラ220は、所定のポリシーに従ってターゲットデータをblockに書き込んでもよい。ターゲットデータが書き込まれる複数のpageのアドレスは、ターゲットデータを実際に記憶するアドレスであり、物理アドレスとも呼ばれる。SSDは、LBAのセグメントと複数のpageのアドレスとの間の対応関係を設定して記憶してもよい。LBAのセグメントと複数のpageのアドレスとの間の対応関係は、FTLにより管理される。コントローラ11が後に読み取りデータ要求をプライマリコントローラ220に送信し、ターゲットデータを読み取ることを要求した場合、読み取りデータ要求はLBAを搬送する。この場合、プライマリコントローラ220は、LBAと、LBAと物理アドレスとの間の対応関係とに従ってターゲットデータを読み出し、ターゲットデータをコントローラ11に戻してもよい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
具体的に、ステップS103は、プロセッサ218により実行される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
図４に示す実施例との相違は、図７に示す実施例では、プライマリコントローラ220が第１のターゲットデータを第１のblock及び第２のblockに書き込む前に、第１のターゲットデータが第１の部分と第２の部分とに分割される必要がある点にある。第１の部分のサイズは、第１のblockの有効容量と同じであり、第２の部分のサイズは、第１のblockの損傷ページの容量と同じである。分割が完了した後に、プライマリコントローラ220は、データの２つの部分を２つのblockに書き込む。第１のターゲットデータのオーバーフローは、データによって書き込まれているがデータで満たされていないblockに書き込まれるため、この実現方式ではblock利用率が改善され得る。
ではblock利用率が改善され得る。
【国際調査報告】
2016524770.tif 000010
2016524770.tif 000011
2016524770.tif 000012
2016524770.tif 000013