JP2017501489A - コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法 - Google Patents

コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法 Download PDF

Info

Publication number
JP2017501489A
JP2017501489A JP2016535211A JP2016535211A JP2017501489A JP 2017501489 A JP2017501489 A JP 2017501489A JP 2016535211 A JP2016535211 A JP 2016535211A JP 2016535211 A JP2016535211 A JP 2016535211A JP 2017501489 A JP2017501489 A JP 2017501489A
Authority
JP
Japan
Prior art keywords
data block
flash memory
memory device
reference count
stability level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016535211A
Other languages
English (en)
Other versions
JP6147933B2 (ja
Inventor
黎明 ▲呉▼
黎明 ▲呉▼
斌 黄
斌 黄
万 ▲趙▼
万 ▲趙▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017501489A publication Critical patent/JP2017501489A/ja
Application granted granted Critical
Publication of JP6147933B2 publication Critical patent/JP6147933B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明の実施例は、プロセッサと、キャッシュと、通信インタフェースとを含むコントローラを提供し、コントローラは、キャッシュから第1のデータブロックについての情報を読み取り、第1のデータブロックの参照カウント、第1のデータブロックがフラッシュメモリ装置に記憶されている期間の長さ、及びデータブロックの参照カウントとデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、第1のデータブロックの安定性レベルを決定するように構成され、安定性レベルは、データブロックの安定性を示すために使用され、通信インタフェースを通じて第1のデータブロックの論理アドレス及び第1のデータブロックの安定性レベルをフラッシュメモリ装置に送信するように構成される。これにより、フラッシュメモリ装置は、同じ安定性レベルを有するデータを一緒に記憶する。

Description

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

Claims (33)

  1. コントローラであって、
    前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第1のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、
    前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、
    前記キャッシュは、前記第1のデータブロックについての情報を記憶し、前記第1のデータブロックについての前記情報は、前記第1のデータブロックの参照カウント、又は前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第1のデータブロックの参照カウント及び前記第1のデータブロックがフラッシュメモリ装置に記憶されている期間の長さを有し、前記第1のデータブロックの前記参照カウントは、前記コントローラが前記第1のデータブロックを受信した回数の量に等しく、
    前記プロセッサは、
    前記キャッシュから前記第1のデータブロックについての前記情報を読み取り、
    (1)前記第1のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)前記第1のデータブロックの前記参照カウント、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第1のデータブロックの安定性レベルを決定するように構成され、前記安定性レベルは、前記データブロックの安定性を示すために使用され、
    前記通信インタフェースを通じて前記第1のデータブロックの論理アドレス及び前記第1のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成されるコントローラ。
  2. データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
    前記プロセッサは、
    前記第1のデータブロックの前記参照カウントに従って、第1の参照カウント間隔を決定するように具体的に構成され、前記第1のデータブロックの前記参照カウントは、前記第1の参照カウント間隔内であり、
    前記第1の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項1に記載のコントローラ。
  3. データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を有し、
    前記プロセッサは、
    前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第1の時間間隔を決定するように具体的に構成され、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第1の時間間隔内であり、
    前記第1の時間間隔、及び時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項1に記載のコントローラ。
  4. データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
    前記プロセッサは、
    前記第1のデータブロックの前記参照カウントに従って、第1の参照カウント間隔を決定するように具体的に構成され、前記第1のデータブロックの前記参照カウントは、前記第1の参照カウント間隔内であり、
    前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第1の時間間隔を決定するように具体的に構成され、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第1の時間間隔内であり、
    前記第1の参照カウント間隔、前記第1の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項1に記載のコントローラ。
  5. 前記第1のデータブロックについての前記情報は、前記第1のデータブロックのフィンガープリント情報を更に有し、前記第1のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第1のデータブロックにおいて計算を実行することにより取得され、
    前記プロセッサは、
    前記第1のデータブロックを受信し、
    前記ハッシュ関数及び前記第1のデータブロックに従って前記第1のデータブロックの前記フィンガープリント情報を計算し、
    フィンガープリント情報が前記第1のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定し、
    前記第1のデータブロックを前記フラッシュメモリ装置に送信するように更に構成され、前記第1のデータブロックの前記参照カウントは、初期値に等しく、
    前記第1のデータブロックの前記参照カウントを前記キャッシュに書き込むように更に構成される、請求項1、2又は4のうちいずれか1項に記載のコントローラ。
  6. 前記プロセッサは、
    第2のデータブロックを受信し、
    前記ハッシュ関数及び前記第2のデータブロックに従って前記第2のデータブロックのフィンガープリント情報を計算し、
    前記第1のデータブロックの前記フィンガープリント情報が前記第2のデータブロックの前記フィンガープリント情報と同じであると決定し、
    前記初期値を増加させるように更に構成され、前記第1のデータブロックの前記参照カウントは、前記増加した初期値に等しい、請求項5に記載のコントローラ。
  7. フラッシュメモリ装置であって、
    前記フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを有し、前記フラッシュメモリチップはブロックを有し、前記メインコントローラはプロセッサを有し、
    前記プロセッサは、
    ターゲット論理アドレスに対応する安定性レベルを取得するように構成され、前記安定性レベルは、データブロックの安定性を示すために使用され、
    前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすように構成されるフラッシュメモリ装置。
  8. 前記プロセッサは、最大量の無効なデータを記憶するブロックを求めて前記フラッシュメモリチップを検索するように更に構成され、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項7に記載のフラッシュメモリ装置。
  9. 前記プロセッサは、最も長い時間に消去されないままになっているブロックを求めて前記フラッシュメモリチップを検索するように更に構成され、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項7に記載のフラッシュメモリ装置。
  10. 前記メインコントローラはキャッシュを更に有し、
    前記プロセッサは、前記キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するように具体的に構成され、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じである、請求項7に記載のフラッシュメモリ装置。
  11. 前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項10に記載のフラッシュメモリ装置。
  12. コントローラがデータブロックの安定性を識別する方法であって、
    前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第1のデータブロックを記憶し、前記コントローラは、プロセッサと、キャッシュと、通信インタフェースとを有し、前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、前記キャッシュは、前記第1のデータブロックについての情報を記憶し、前記第1のデータブロックについての前記情報は、前記第1のデータブロックの参照カウント、又は前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第1のデータブロックの参照カウント及び前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第1のデータブロックの前記参照カウントは、前記コントローラが前記第1のデータブロックを受信した回数の量に等しく、前記方法は、前記プロセッサにより実行され、
    前記方法は、
    前記キャッシュから前記第1のデータブロックについての前記情報を読み取るステップと、
    (1)前記第1のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)前記第1のデータブロックの参照カウント、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第1のデータブロックの安定性レベルを決定するステップであり、前記安定性レベルは、前記データブロックの安定性を示すために使用されるステップと、
    前記通信インタフェースを通じて前記第1のデータブロックの論理アドレス及び前記第1のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するステップと
    を有する方法。
  13. データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
    (1)前記第1のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するステップは、
    前記第1のデータブロックの前記参照カウントに従って、第1の参照カウント間隔を決定するステップであり、前記第1のデータブロックの前記参照カウントは、前記第1の参照カウント間隔内であるステップと、
    前記第1の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するステップと
    を有する、請求項12に記載の方法。
  14. データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を有し、
    (2)前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第1のデータブロックの安定性レベルを決定するステップは、
    前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第1の時間間隔を決定するステップであり、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第1の時間間隔内であるステップと、
    前記第1の時間間隔、及び時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するステップと
    を有する、請求項12に記載の方法。
  15. データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
    (3)前記第1のデータブロックの前記参照カウント、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第1のデータブロックの安定性レベルを決定するステップは、
    前記第1のデータブロックの前記参照カウントに従って、第1の参照カウント間隔を決定するステップであり、前記第1のデータブロックの前記参照カウントは、前記第1の参照カウント間隔内であるステップと、
    前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第1の時間間隔を決定するステップであり、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第1の時間間隔内であるステップと、
    前記第1の参照カウント、前記第1の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するステップと
    を有する、請求項12に記載の方法。
  16. 前記第1のデータブロックについての前記情報は、前記第1のデータブロックのフィンガープリント情報を更に有し、前記第1のデータブロックの前記フィンガープリント情報は、予め設定されたハッシュ関数に従って前記第1のデータブロックにおいて計算を実行することにより取得され、
    前記方法は、
    前記第1のデータブロックを受信するステップと、
    前記ハッシュ関数及び前記第1のデータブロックに従って前記第1のデータブロックの前記フィンガープリント情報を計算するステップと、
    フィンガープリント情報が前記第1のデータブロックの前記フィンガープリント情報と同じであるデータブロックを前記フラッシュメモリ装置が有さないと決定するステップと、
    前記第1のデータブロックを前記フラッシュメモリ装置に送信するステップであり、前記第1のデータブロックの前記参照カウントは、初期値に等しいステップと、
    前記第1のデータブロックの前記参照カウントを前記キャッシュに書き込むステップと
    を更に有する、請求項12、13又は15のうちいずれか1項に記載の方法。
  17. 前記方法は、
    第2のデータブロックを受信するステップと、
    前記ハッシュ関数及び前記第2のデータブロックに従って前記第2のデータブロックのフィンガープリント情報を計算するステップと、
    前記第1のデータブロックの前記フィンガープリント情報が前記第2のデータブロックの前記フィンガープリント情報と同じであると決定するステップと、
    前記初期値を増加させるステップであり、前記第1のデータブロックの前記参照カウントは、前記増加した初期値に等しいステップと
    を更に有する、請求項16に記載の方法。
  18. データをフラッシュメモリ装置に記憶する方法であって、
    前記フラッシュメモリ装置は、メインコントローラと、フラッシュメモリチップとを有し、前記フラッシュメモリチップはブロックを有し、前記メインコントローラはプロセッサを有し、
    前記方法は、前記プロセッサにより実行され、前記方法は、
    ターゲット論理アドレスに対応する安定性レベルを取得するステップであり、前記安定性レベルは、データブロックの安定性を示すために使用されるステップと、
    前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすステップと
    を有する方法。
  19. 前記方法は、
    最大量の無効なデータを記憶するブロックを求めて前記フラッシュメモリチップを検索するステップであり、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有するステップを更に有する、請求項18に記載の方法。
  20. 前記方法は、
    最も長い時間に消去されないままになっているブロックを求めて前記フラッシュメモリチップを検索するステップであり、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有するステップを更に有する、請求項18に記載の方法。
  21. 前記メインコントローラはキャッシュを更に有し、
    ターゲット論理アドレスに対応する安定性レベルを取得するステップは、
    前記キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するステップであり、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じであるステップを有する、請求項18に記載の方法。
  22. 前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項21に記載の方法。
  23. データブロックの安定性を識別する装置であって、
    前記装置は、コントローラに配置され、前記コントローラは、データ重複排除機能を備えた記憶システムに配置され、前記記憶システムは、フラッシュメモリ装置を有し、前記フラッシュメモリ装置は、第1のデータブロックを記憶し、
    前記装置は、
    前記第1のデータブロックについての情報を記憶するように構成された記憶モジュールであり、前記第1のデータブロックについての前記情報は、前記第1のデータブロックの参照カウント、又は前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さ、又は前記第1のデータブロックの参照カウント及び前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている期間の長さを有し、前記第1のデータブロックの前記参照カウントは、前記コントローラが前記第1のデータブロックを受信した回数の量に等しい記憶モジュールと、
    前記記憶モジュールから前記第1のデータブロックについての前記情報を読み取るように構成された読み取りモジュールと、
    (1)前記第1のデータブロックの前記参照カウント、及びデータブロックの参照カウントと安定性レベルとの間のマッピング関係、又は(2)前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係、又は(3)前記第1のデータブロックの前記参照カウント、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さ、及びデータブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係に従って、前記第1のデータブロックの安定性レベルを決定するように構成された決定モジュールと、
    前記第1のデータブロックの論理アドレス及び前記第1のデータブロックの前記安定性レベルを前記フラッシュメモリ装置に送信するように構成された送信モジュールと
    を有する装置。
  24. データブロックの参照カウントと安定性レベルとの間の前記マッピング関係は、参照カウント間隔と安定性レベルとの間のマッピング関係を有し、
    前記決定モジュールは、
    前記第1のデータブロックの前記参照カウントに従って、第1の参照カウント間隔を決定するように具体的に構成され、前記第1のデータブロックの前記参照カウントは、前記第1の参照カウント間隔内であり、
    前記第1の参照カウント間隔、及び参照カウント間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項23に記載の装置。
  25. データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間の前記マッピング関係は、時間間隔と安定性レベルとの間のマッピング関係を有し、
    前記決定モジュールは、
    前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第1の時間間隔を決定するように具体的に構成され、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第1の時間間隔内であり、
    前記第1の時間間隔、及び時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項23に記載の装置。
  26. データブロックの参照カウントと前記データブロックがフラッシュメモリ装置に記憶されている期間の長さと安定性レベルとの間のマッピング関係は、参照カウント間隔と時間間隔と安定性レベルとの間のマッピング関係を有し、
    前記決定モジュールは、
    前記第1のデータブロックの前記参照カウントに従って、第1の参照カウント間隔を決定するように具体的に構成され、前記第1のデータブロックの前記参照カウントは、前記第1の参照カウント間隔内であり、
    前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さに従って、第1の時間間隔を決定するように具体的に構成され、前記第1のデータブロックが前記フラッシュメモリ装置に記憶されている前記期間の前記長さは、前記第1の時間間隔内であり、
    前記第1の参照カウント間隔、前記第1の時間間隔、及び参照カウント間隔と時間間隔と安定性レベルとの間の前記マッピング関係に従って、前記第1のデータブロックの前記安定性レベルを決定するように具体的に構成される、請求項23に記載の装置。
  27. データをフラッシュメモリ装置に記憶する装置であって、
    前記装置は、前記フラッシュメモリ装置のメインコントローラに配置され、前記フラッシュメモリ装置は、ブロックを記憶し、前記装置は、
    ターゲット論理アドレスに対応する安定性レベルを取得するように構成された取得モジュールであり、前記安定性レベルは、データブロックの安定性を示すために使用される取得モジュールと、
    前記ターゲット論理アドレスに対応する前記安定性レベルに従って、前記ターゲット論理アドレスのデータブロックを前記安定性レベルに対応するブロックに動かすように構成されたマイグレーションモジュールと
    を有する装置。
  28. 前記取得モジュールは、最大量の無効なデータを記憶するブロックを求めてフラッシュメモリチップを検索するように更に構成され、前記最大量の無効なデータを記憶する前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項27に記載の装置。
  29. 前記取得モジュールは、最も長い時間に消去されないままになっているブロックを求めてフラッシュメモリチップを検索するように更に構成され、前記最も長い時間に消去されないままになっている前記ブロックは、前記ターゲット論理アドレスに対応する前記データブロックを有する、請求項27に記載の装置。
  30. 前記装置は記憶モジュールを更に有し、前記記憶モジュールは、論理アドレスを記憶し、前記論理アドレスに対応する安定性レベルは、前記ターゲット論理アドレスに対応する前記安定性レベルと同じであり、
    前記取得モジュールは、キャッシュに記憶された論理アドレスの量が予め設定された閾値に到達した場合、前記ターゲット論理アドレスに対応する前記安定性レベルを取得するように具体的に構成される、請求項27に記載の装置。
  31. 前記予め設定された閾値は、前記データブロックのサイズで割られた前記ブロックのボリュームの商に等しい、請求項30に記載の装置。
  32. プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を有するコンピュータプログラムプロダクトであって、
    前記プログラムコードに含まれる命令は、請求項12ないし17のうちいずれか1項に記載の方法を実行するために使用されるコンピュータプログラムプロダクト。
  33. プログラムコードを記憶するコンピュータ読み取り可能記憶媒体を有するコンピュータプログラムプロダクトであって、
    前記プログラムコードに含まれる命令は、請求項18ないし22のうちいずれか1項に記載の方法を実行するために使用されるコンピュータプログラムプロダクト。
JP2016535211A 2014-12-05 2014-12-05 コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法 Active JP6147933B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/093139 WO2016086411A1 (zh) 2014-12-05 2014-12-05 一种控制器、闪存装置、识别数据块稳定性的方法以及在闪存装置中存储数据的方法

Publications (2)

Publication Number Publication Date
JP2017501489A true JP2017501489A (ja) 2017-01-12
JP6147933B2 JP6147933B2 (ja) 2017-06-14

Family

ID=56090853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016535211A Active JP6147933B2 (ja) 2014-12-05 2014-12-05 コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法

Country Status (8)

Country Link
US (2) US9772790B2 (ja)
EP (1) EP3059679B1 (ja)
JP (1) JP6147933B2 (ja)
KR (1) KR101784893B1 (ja)
CN (1) CN105980992B (ja)
DK (1) DK3059679T3 (ja)
ES (1) ES2691484T3 (ja)
WO (1) WO2016086411A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9917894B2 (en) * 2014-08-06 2018-03-13 Quest Software Inc. Accelerating transfer protocols
KR102306672B1 (ko) * 2016-11-23 2021-09-29 삼성전자주식회사 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
US11644992B2 (en) 2016-11-23 2023-05-09 Samsung Electronics Co., Ltd. Storage system performing data deduplication, method of operating storage system, and method of operating data processing system
CN107193758A (zh) * 2017-05-19 2017-09-22 记忆科技(深圳)有限公司 一种固态硬盘的映射表管理方法及固态硬盘
US10416899B2 (en) * 2018-02-13 2019-09-17 Tesla, Inc. Systems and methods for low latency hardware memory management
US11256628B2 (en) * 2019-08-02 2022-02-22 EMC IP Holding Company LLC Volatile read cache in a content addressable storage system
KR102234886B1 (ko) * 2019-11-07 2021-04-02 숭실대학교산학협력단 플래시 메모리에서 장치 지문을 추출하는 방법 및 장치
KR20220049397A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US12014772B2 (en) 2021-11-17 2024-06-18 Samsung Electronics Co., Ltd. Storage controller and storage device including the same
KR102545465B1 (ko) * 2021-11-17 2023-06-21 삼성전자주식회사 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
US20110264843A1 (en) * 2010-04-22 2011-10-27 Seagate Technology Llc Data segregation in a storage device
JP2012014400A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 半導体メモリ装置および半導体メモリシステム
US20120023144A1 (en) * 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
US20140013032A1 (en) * 2012-07-03 2014-01-09 Research & Business Foundation Sungkyunkwan University Method and apparatus for controlling writing data in storage unit based on nand flash memory
JP2014513848A (ja) * 2011-05-15 2014-06-05 アップル インコーポレイテッド Lsb及びmsbページにおける選択的データ記憶
JP2014522537A (ja) * 2011-06-09 2014-09-04 マイクロソフト コーポレーション 使用によるフラッシュ・ベースの記憶装置へのデータ配置の管理

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US8447915B2 (en) * 2009-07-23 2013-05-21 Hitachi, Ltd. Flash memory device for allocating physical blocks to logical blocks based on an erase count
US8452932B2 (en) * 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
JP2011203916A (ja) * 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
US20120159098A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
CN103688272A (zh) 2011-03-03 2014-03-26 赛弗有限责任公司 用于数据内的共同元素的自主检测和分离的系统以及与之关联的方法和设备
US9141528B2 (en) * 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9176864B2 (en) * 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9021203B2 (en) 2012-05-07 2015-04-28 International Business Machines Corporation Enhancing tiering storage performance
KR101929584B1 (ko) * 2012-06-29 2018-12-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN102981969A (zh) * 2012-11-21 2013-03-20 记忆科技(深圳)有限公司 重复数据删除的方法及其固态硬盘
CN103019887B (zh) * 2012-12-12 2016-01-06 华为技术有限公司 数据备份方法及装置
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
CN103455435A (zh) * 2013-08-29 2013-12-18 华为技术有限公司 数据写入方法及装置
CN103455436B (zh) * 2013-09-23 2016-09-14 北京经纬恒润科技有限公司 一种ram检测方法及系统
US9390116B1 (en) * 2013-09-26 2016-07-12 Emc Corporation Insertion and eviction schemes for deduplicated cache system of a storage system
CN106775496B (zh) * 2013-10-23 2020-01-21 华为技术有限公司 一种存储数据处理方法及装置
US9529546B2 (en) * 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
US20110264843A1 (en) * 2010-04-22 2011-10-27 Seagate Technology Llc Data segregation in a storage device
JP2012014400A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 半導体メモリ装置および半導体メモリシステム
US20120023144A1 (en) * 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
JP2014513848A (ja) * 2011-05-15 2014-06-05 アップル インコーポレイテッド Lsb及びmsbページにおける選択的データ記憶
JP2014522537A (ja) * 2011-06-09 2014-09-04 マイクロソフト コーポレーション 使用によるフラッシュ・ベースの記憶装置へのデータ配置の管理
US20140013032A1 (en) * 2012-07-03 2014-01-09 Research & Business Foundation Sungkyunkwan University Method and apparatus for controlling writing data in storage unit based on nand flash memory

Also Published As

Publication number Publication date
DK3059679T3 (en) 2018-12-17
WO2016086411A1 (zh) 2016-06-09
US20170364300A1 (en) 2017-12-21
KR20160084370A (ko) 2016-07-13
US20160216915A1 (en) 2016-07-28
EP3059679A4 (en) 2017-03-01
JP6147933B2 (ja) 2017-06-14
KR101784893B1 (ko) 2017-10-12
EP3059679A1 (en) 2016-08-24
CN105980992A (zh) 2016-09-28
ES2691484T3 (es) 2018-11-27
CN105980992B (zh) 2018-02-13
EP3059679B1 (en) 2018-08-22
US9772790B2 (en) 2017-09-26

Similar Documents

Publication Publication Date Title
JP6147933B2 (ja) コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法
US10713161B2 (en) Memory system and method for controlling nonvolatile memory
US10789162B2 (en) Memory system and method for controlling nonvolatile memory
US10761731B2 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
US10635310B2 (en) Storage device that compresses data received from a host before writing therein
US9652154B2 (en) Storage module and host device for storage module defragmentation
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
CN108475230B (zh) 一种存储系统和系统垃圾回收方法
KR20170009706A (ko) 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법
US11526296B2 (en) Controller providing host with map information of physical address for memory region, and operation method thereof
CN108628762B (zh) 一种固态存储设备及其处理io命令的方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160531

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160531

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170412

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170517

R150 Certificate of patent or registration of utility model

Ref document number: 6147933

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250