JP7315130B2 - システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法 - Google Patents

システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法 Download PDF

Info

Publication number
JP7315130B2
JP7315130B2 JP2020526891A JP2020526891A JP7315130B2 JP 7315130 B2 JP7315130 B2 JP 7315130B2 JP 2020526891 A JP2020526891 A JP 2020526891A JP 2020526891 A JP2020526891 A JP 2020526891A JP 7315130 B2 JP7315130 B2 JP 7315130B2
Authority
JP
Japan
Prior art keywords
logical
data
solid state
address
chunk
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.)
Active
Application number
JP2020526891A
Other languages
English (en)
Other versions
JP2021509981A (ja
Inventor
プ、グイヨウ
リウ、ヤン
シュエ、チャン
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
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 ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Priority claimed from PCT/CN2019/079391 external-priority patent/WO2020052216A1/zh
Publication of JP2021509981A publication Critical patent/JP2021509981A/ja
Application granted granted Critical
Publication of JP7315130B2 publication Critical patent/JP7315130B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本願は、ストレージ分野、より具体的には、システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションのための方法に関する。
フラッシュメモリアレイは、ソリッドステートディスクおよびシステムコントローラを含むストレージシステムである。システムコントローラは、論理チャンクグループ(chunk group,CKG)のユニットにおけるソリッドステートディスクに、論理アドレスを割り当て、システムにおける利用可能なスペースが不十分である場合に、システムコントローラは、システムガベージコレクションを実行する。システムガベージコレクションの処理の間、システムコントローラは、ソリッドステートディスクに、論理チャンクグループにおける全ての有効データを、新たな論理チャンクグループに移行させるように命令し、ソリッドステートディスク内の有効データのマイグレーションをもたらす。そのため、ライトアンプリフィケーションの回数が増加される。
本願は、ライトアンプリフィケーションの回数を減らすように、システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションのための方法を提供する。
第1の態様は、システムガベージコレクションの方法を提供し、ここで、方法は、フラッシュメモリアレイに適用され、フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含む。システムコントローラは、収集予定の第1の論理チャンクグループを決定し、ここで、第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、複数の第1のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、複数の第1のデータ論理チャンクの少なくとも1つに記憶されたデータは、有効データを含み、第1の論理チャンクにおける有効データのアドレスは、第1の論理アドレスであり、ソリッドステートディスクに有効データが記憶された実アドレスと第1の論理アドレスとの間の対応関係がある。システムコントローラは、第2の論理チャンクグループを生成し、ここで、第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、有効データを記憶する第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される。システムコントローラは、少なくとも1つの第2のデータ論理チャンクにおいて、第2の論理アドレスを有効データに割り当て、そして、有効データを記憶するソリッドステートディスクに、第1の論理アドレスと実アドレスとの間の対応関係を、第2の論理アドレスと実アドレスとの間の対応関係に変更するよう命令する。
第1の態様において提供されるシステムガベージコレクションの方法では、収集予定の第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、少なくとも1つの第1のデータ論理チャンクに記憶されたデータは、有効データである。生成された第2の論理チャンクグループにおける少なくとも1つのデータ論理チャンクは、有効データを記憶する第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散されるので、有効データは、実際に移動される必要がなく、収集予定の第1の論理チャンクグループにおける少なくとも1つのデータ論理チャンクの有効データは、有効データを記憶するソリッドステートディスクに、第1の論理アドレスと実アドレスとの間の対応関係を、第2の論理アドレスと実アドレスとの間の対応関係に変更させるように命令することのみによって、生成された第2の論理チャンクグループに移行されることができる。有効データは、実際には移動されず、そのため、ライトアンプリフィケーションの回数が減らされることができる。
第1の論理チャンクグループに含まれる複数のデータ論理チャンクにおいて、一部のデータ論理チャンクのみ(又はさらに、1つのみのデータ論理チャンク)が有効データを記憶する。この場合、第2の論理チャンクグループの生成の間、第1の論理チャンクグループの有効データを、有効データを実際に移動させることなく第2の論理チャンクグループに移行させるように、第2の論理チャンクグループにおける一部のデータ論理チャンク又は1つのデータ論理チャンクが、第1のデータ論理チャンクグループにおいて、有効データを記憶するデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散されることを保証することのみが不可欠である。加えて、さらに、第1の論理チャンクグループにおけるデータ論理チャンクの一部又は全てが有効データを記憶する場合に、生成された第2の論理チャンクグループにおける少なくとも1つのデータ論理チャンクが、第1のデータ論理チャンクグループにおいて、有効データを記憶するデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散されることを保証することを条件として、ライトアンプリフィケーションの回数がまた、ある程度まで減らされるということが理解されることができる。
オプションで、他の実施例において、第2の論理チャンクグループに含まれる各データ論理チャンクは、第1の論理チャンクグループに含まれる1つのデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、分散される。このやり方で、ライトアンプリフィケーションの回数は、最も減らされることができる。
第1の態様の第1の実施例において、有効データを記憶する第1のデータ論理チャンクの量は、少なくとも1つの第2のデータ論理チャンクの量に等しい。例えば、第1の論理チャンクグループにおける1つの第1のデータ論理チャンクが、有効データを記憶する場合、第2の論理チャンクグループにおける1つの第2のデータ論理チャンクはまた、有効データを記憶する第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、分散される。第1の論理チャンクグループにおける2つの第1のデータ論理チャンクが、有効データを記憶する場合、第2の論理チャンクグループにおける2つの第2のデータ論理チャンクはまた、有効データを記憶する2つの第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、それぞれ分散される。第1の論理チャンクグループにおいて全ての第1のデータ論理チャンクが有効データを記憶する場合、第2の論理チャンクグループにおける全ての第2のデータ論理チャンクはまた、全ての第1のデータ論理チャンクが位置付けられる複数のソリッドステートディスクにおいて分散される。
第1の態様の第1の実施例を参照して、第1の態様の第2の実施例において、第2の論理チャンクグループを生成することは、具体的に、複数のソリッドステートディスクにおける複数の第1のデータ論理チャンクの分散に基づいて、第2の論理チャンクグループを生成することであってよく、ここで、生成された第2の論理チャンクグループにおける全ての第2のデータ論理チャンクは、全ての第1のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される。この方式により生成された第2の論理チャンクグループは、ライトアンプリフィケーションの回数を最も減らすことができる。
上述した実施例のいずれかを参照して、第1の態様の第3の実施例において、第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、第1のチェック論理チャンクは、複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、第2のチェック論理チャンクは、複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される。第1のチェック論理チャンクの量および第2のチェック論理チャンクの量は同じであり、両方の量は、RAIDタイプに基づいて決定される。第2のチェック論理チャンクが位置付けられるソリッドステートディスクは、第1のチェック論理チャンクが位置付けられるソリッドステートディスクと同じであってよい、又は異なってよい。通常、有効データが第1の論理チャンクグループから第2の論理チャンクグループに移行された後に、再計算が実行される必要があり、チェックデータが記憶される必要がある。そのため、第2のチェック論理チャンクの分散は、本適用に限定されるものではない。
上述した実施例のうちの何れか1つを参照して、第1の態様の第4の実施例において、収集予定の第1の論理チャンクグループは、特定条件に従って選択されてよい。例えば、フラッシュメモリアレイにおける論理チャンクグループに含まれる有効データの量が特定された閾値未満である場合、論理チャンクグループは、収集予定の第1の論理チャンクグループとして使用されてよい。代わりに、フラッシュメモリアレイにおける論理チャンクグループに含まれる無効データの量が特定された閾値より多い場合、論理チャンクグループは、収集予定の第1の論理チャンクグループとして使用されてよい。代わりに、フラッシュメモリアレイにおける無効データの最大量又は有効データの最小量を有する論理チャンクグループは、収集予定の第1の論理チャンクグループとして選択される。このやり方で、システムガベージコレクションの効率は、改善されることができる。
第2の態様は、ソリッドステートディスクにおけるガベージコレクションのための方法を提供し、ここで、方法は、ソリッドステートディスクに適用され、ソリッドステートディスクは、システムコントローラに接続される。ソリッドステートディスクは、収集予定の第1の物理ブロックから、有効データおよび有効データの逆マッピング情報を読み出し、有効データの逆マッピング情報をシステムコントローラに送信し、これにより、逆マッピング情報に対応するソース論理アドレスを取得する。そして、ソリッドステートディスクは、ターゲット論理アドレスを有効データに割り当て、有効データを第2の物理ブロックにコピーし、そして、第1の物理ブロックにおいて有効データが記憶された実アドレスとソース論理アドレスとの間の対応関係を削除し、第2の物理ブロックにおいて有効データが記憶された実アドレスとターゲット論理アドレスとの間の対応関係を生成する。最後に、ソリッドステートディスクは、第1の物理ブロックにおけるデータを消去する。
第2の態様における逆マッピング情報は、有効データの仮想アドレス、有効データのフィンガープリント、又は、ファイルにおける有効データのオフセットアドレスであってよい。順インデックス作成によって有効データの実アドレスを発見するために使用されることができる任意の情報は、本願の保護範囲に含まれる。
データの逆マッピング情報およびデータは、通常、まとめてソリッドステートディスクに書き込まれ、ソリッドステートディスクにおけるガベージコレクションの間にデータの論理アドレスの検索を容易にし、フラッシュトランスレーションレイヤにおける論理アドレスと実アドレスとの間の対応関係を変更する。従来の方式では、逆マッピング情報は、データの論理アドレスを参照する。しかしながら、本願では、有効データの実アドレスを未変更のままに維持するために、有効データの逆マッピング情報の実アドレスが未変更であることを保証することがまた、不可欠である。有効データが第1の論理チャンクグループから第2の論理チャンクグループに移行される場合に、有効データの論理アドレスが変更される。そのため、本願では、有効データの逆マッピング情報は、データの論理アドレスとすることができず、しかし、データの仮想アドレス又はデータのフィンガープリントのような情報であってよい。
そのため、本願における第2の態様の実施例に従って、有効データの論理アドレスは、有効データの逆マッピング情報に基づいてシステムコントローラから問い合わせられてよく、これにより、ソリッドステートディスクにおけるガベージコレクションを完了する。
本願の第3の態様は、システムコントローラを提供し、ここで、システムコントローラは、インタフェースおよびプロセッサを含む。インタフェースは、複数のソリッドステートディスクに接続するように構成され、プロセッサは、第1の態様における任意の方法を実行するように構成される。
本願の第4の態様は、システムガベージコレクションの装置を提供し、ここで、装置は、フラッシュメモリアレイのシステムコントローラに位置付けられ、第1の態様における任意の方法を実行するように構成される。
本願の第5の態様は、ソリッドステートディスクを提供し、ここで、ソリッドステートディスクは、フラッシュコントローラ、第1の物理ブロック、および第2の物理ブロックを含む。フラッシュコントローラは、第2の態様における方法を実行するように構成される。
本願の第6の態様は、ソリッドステートディスクにおけるガベージコレクションのための装置を提供し、第2の態様における方法を実行するように構成される。
本願の第7の態様は、フラッシュメモリアレイを提供し、ここで、フラッシュメモリアレイは、システムコントローラおよびソリッドステートディスクを含み、システムコントローラは、第1の態様における任意の方法を実行するように構成され、ソリッドステートディスクは、第2の態様における方法を実行するように構成される。
本願の第8の態様は、プログラムコードを格納するコンピュータ可読記録媒体を含む、システムガベージコレクションのためのコンピュータプログラムプロダクトを提供し、ここで、プログラムコードに含まれる命令は、第1の態様において説明された方法を実行するために使用される。
本願の第9の態様は、プログラムコードを格納するコンピュータ可読記録媒体を含む、ソリッドステートディスクにおけるガベージコレクションのためのコンピュータプログラムプロダクトを提供し、ここで、プログラムコードに含まれる命令は、第2の態様において説明された方法を実行するために使用される。
図1は、本発明の実施形態に係る適用シナリオ図である。
図2は、本発明の実施形態に係るコントローラの構造図である。
図3は、本発明の実施形態に係る論理チャンクグループの概略図である。
図4は、本発明の実施形態に係るデータを書き込む概略フローチャートである。
図5は、本発明の実施形態に係るシステムガベージコレクションの方法の概略フローチャートである。
図6は、本発明の実施形態に係るシステムガベージコレクションの方法の概略図である。
図7は、本発明の実施形態に係るソリッドステートディスクにおけるガベージコレクションのための方法の概略フローチャートである。
図8は、本発明の実施形態に係るシステムガベージコレクションの装置の概略構造図である。
図9は、本発明の実施形態に係るソリッドステートディスクにおけるガベージコレクションのための装置の概略構造図である。
本発明の実施形態は、ライトアンプリフィケーションの回数を減らすように、システムガベージコレクションの方法およびストレージシステムを提供し、それにより、ソリッドステートディスクの耐用年数を改善する。
図1は、本発明の実施形態に係るフラッシュメモリアレイの状態図である。図1に示されるフラッシュメモリアレイは、少なくとも1つのコントローラ(図1に示されるコントローラ11)と、複数のソリッドステートディスク22(図1に示された、ソリッドステートディスク22A、ソリッドステートディスク22B、ソリッドステートディスク22C、およびソリッドステートディスク22G)とを含む。コントローラ11は、ストレージエリアネットワーク(英語:storage area network,SAN)を介してホスト(図に示されない)に接続される。コントローラ11は、サーバおよびデスクトップコンピュータのようなコンピューティングデバイスであってよい。オペレーティングシステムおよびアプリケーションは、コントローラ11にインストールされる。コントローラ11は、ホストからの入出力(I/O)要求を受信してよい。コントローラ11は、更に、I/O要求に保持された(存在する場合には)データを記憶し、ソリッドステートディスク22にデータを書き込んでよい。ソリッドステートディスク(英語:Solid State Disk,SSD)は、フラッシュメモリ(英語:flash(登録商標) memory)チップを媒体として使用するメモリであり、また、ソリッドステートドライブ(Solid State Drive,SSD)と称される。
図1は、例の説明のためにのみ使用される。実施において、ストレージシステムは、2又はそれより多くのコントローラを含んでよく、それぞれのコントローラは、コントローラ11のものと同様の物理構造および機能を有する。加えて、複数のコントローラの間の接続方式と、任意のコントローラおよびソリッドステートディスク22の間の接続方式とは、複数のコントローラの間とそれぞれのコントローラおよびソリッドステートディスク22の間とで相互通信が実行されることができることを条件として、この実施形態に限定されるものではない。加えて、この実施形態では、コントローラ11は、しばしば複数のソリッドステートディスクに命令を送信する。説明しやすくするために、複数のソリッドステートディスク22を含むセットは、ソリッドステートディスクグループと称される。
図2は、コントローラ11の例の構造図である。図2に示されるように、コントローラ11は、インタフェースカード110、プロセッサ112、およびインタフェースカード113を含む。
インタフェースカード110は、ホストと通信するように構成され、コントローラ11は、インタフェースカード110を介してホストの処理命令を受信してよい。プロセッサ112は、中央演算処理装置(英語:central processing unit、CPU)であってよい。本発明のこの実施形態では、プロセッサ112は、I/O要求をホストから受信し、I/O要求を処理するように構成されてよい。I/O要求は、データライト要求又はデータリード要求であってよく、プロセッサ112は、更に、ソリッドステートディスク22に、データライト要求内のデータを送信してよい。加えて、プロセッサ112は更に、システムガベージコレクションの処理を実行するように構成されてよい。インタフェースカード113は、ソリッドステートディスク22と通信するように構成され、コントローラ11は、インタフェースカード113を介して、データライト要求(データ、データの論理アドレス、およびデータの仮想アドレスを含む)を、記憶のためにソリッドステートディスク22に送信してよい。
オプションで、コントローラ11は、更に、メモリ111を含んでよい。メモリ111は、ホストから受信したデータ又はソリッドステートディスク22から読み出されたデータを一時的に記憶するように構成される。ホストによって送信された複数のデータライト要求を受信する場合、コントローラ11は、複数のデータライト要求内のデータを、メモリ111に一時的に記憶してよい。メモリ111のサイズが、特定の閾値に達する場合、メモリ111に記憶されたデータ、データの仮想アドレス、データに割り当てられた論理アドレスは、ソリッドステートディスク22に送信される。ソリッドステートディスク22は、データを記憶する。メモリ111は、揮発性メモリ、フラッシュメモリチップ、又はこれらの組み合わせを含む。揮発性メモリは、例えば、ランダムアクセスメモリ(英語:random-access memory,RAM)である。フラッシュメモリチップは、例えば、フロッピディスク、ハードディスク、ソリッドステートディスク(solid state disk,SSD)、および光ディスクのような、プログラムコードを記憶することができる様々な機械可読媒体である。メモリ111は、電力障害が発生した場合にデータを保護する機能を有し、電力障害が発生した場合にデータを保護する機能は、システムが電力障害が発生した後に再び起動される場合に、メモリ111に記憶されたデータが失われないということを意味する。
データがフラッシュメモリアレイに書き込まれた後に、コントローラ11は、データの有効性を記録する必要がある。データの有効性は、データが変更されたかどうかに基づいて決定される。データが初めて書き込まれた場合に、データは、有効と記録されてよい(有効データと称される)。データが変更された場合、変更前のデータは、無効と記録される(無効データと称される)。具体的に、ビットマップは、データの有効性を記録するために使用されてよい。例えば、ビットマップのそれぞれの"ビット"は、サイズが1KBであるデータの論理アドレスに対応する。"ビット"が1である場合、それは論理アドレスに記憶されたデータが有効であることを示し、"ビット"が0である場合、それは論理アドレスに記憶されたデータが無効であることを示す。ビットマップは、メモリ111に記憶されてよく、又は、ソリッドステートディスクに記憶されてよい。
システムコントローラとしてのコントローラ11は、ソリッドステートディスクにおける制御チップと異なる独立のデバイスであることは留意すべきである。この実施形態では、ソリッドステートディスクにおける制御チップは、フラッシュコントローラと称される。
ソリッドステートディスク22は、フラッシュコントローラおよび複数のフラッシュメモリチップを含む。フラッシュコントローラは、コントローラ11によって送信されたデータライト要求又はデータリード要求の実行のような、処理を実行するように構成される。フラッシュコントローラは、ソリッドステートディスク22の内部に位置付けられるプロセッサであってよく、又は、ソリッドステートディスク22の外部に位置付けられるフィールドプログラマブルートアレイ(Field Programmable Gate Array,FPGA)であってよい。
フラッシュコントローラは、フラッシュトランスレーションレイヤ(英語: flash(登録商標) translation layer,FTL)を含む。フラッシュトランスレーションレイヤは、データの実アドレスと論理アドレスとの間の対応関係を記憶するように構成される。そのため、フラッシュトランスレーションレイヤは、論理アドレスを、ソリッドステートディスク内のデータの実アドレスに変換するように構成され、データライト要求又はデータリード要求内の論理アドレスは、システムコントローラによって送信される。データの論理アドレスは、システムコントローラによって割り当てられ、ソリッドステートディスクによってシステムコントローラに提供される論理アドレスの間隔のサブセットである。データの論理アドレスは、開始論理アドレスおよび長さを含み、ここで、開始論理アドレスは、論理チャンクグループにおけるデータの位置を示し、長さは、データのサイズを示す。データの実アドレスは、ソリッドステートディスクにおけるデータの物理アドレスであってよく、又は、物理アドレスを仮想化することによって取得され、フラッシュコントローラにのみ可視であるアドレスであってよい。仮想化によって取得された実アドレスは、システムコントローラに不可視である。一般的に、物理アドレスは、データが存在するページのページ番号および物理ブロックのブロック番号を含む。
ソリッドステートディスクは、一般的に、1又は複数のフラッシュメモリチップを含む。それぞれのフラッシュメモリチップは、いくつかの物理ブロック(略して、"ブロック"と称されてよい)を含む。ソリッドステートディスクは、ページ(英語:page)に基づいて読み出し又は書き込みを実行し、しかし、物理ブロックのみに基づいて、消去処理を実行する。消去処理は、ブロックの全てのビットを"1"に設定することを意味する。消去が実行される前に、フラッシュコントローラは、物理ブロックにおける有効データを他のブロックの空白ページに予めコピーする必要がある。
それぞれの物理ブロックは、複数のページ(英語:page)を含む。データライト要求の実行の間に、ソリッドステートディスクは、ページのユニットにデータを書き込む。例えば、コントローラ11は、データライト要求をフラッシュコントローラに送信する。データライト要求は、データの論理アドレスを含む。データライト要求を受信した後に、フラッシュコントローラは、継続的に、受信時間順序に従って、1又は複数の物理ブロックにデータを書き込む。継続的にデータを1又は複数の物理ブロックに書き込むことは、フラッシュコントローラが、空白の物理ブロックを検索し、空白の物理ブロックがデータで満たされるまで空白の物理ブロックにデータを書き込むということを意味する。データのサイズが物理ブロックの容量を超える場合、フラッシュコントローラは、次の空白の物理ブロックを検索し、書き込みを続ける。フラッシュトランスレーションレイヤは、データが書き込まれたページの実アドレスと論理アドレスとの間の対応関係を確立して記憶する。コントローラ11が、データを読み出すことを要求すべく、データリード要求をフラッシュコントローラに送信する場合、データリード要求は、論理アドレスを含む。フラッシュコントローラは、論理アドレスと、論理アドレスおよび実アドレスの間の対応関係とに基づいて、データを読み出し、コントローラ11にデータを送信する。
フラッシュメモリアレイでは、単一のソリッドステートディスクに故障が発生し、データ損失をもたらす可能性がある。この実施形態では、安価なディスクの冗長アレイ(Redundant Array of Inexpensive Disks,RAID)技術が、データの独立性を保証するために使用される。以下は、ソリッドステートディスクにおけるデータの冗長保護の機構を説明する。
第1に、コントローラ11は、論理チャンク(英語:chunk、略してCK)単位でソリッドステートディスクに対するスペースマネジメントを実行する。論理チャンクは、スペースコンセプトである。例えば、論理チャンクのサイズは、4MBであり、しかし、4MBに限定されるものではない。複数の異なるソリッドステートディスクからの論理チャンクは、論理チャンクセットを形成してよく、そしてコントローラ11は、特定されたRAIDタイプに従って、論理チャンクセットにおける複数の論理チャンクを、データ論理チャンクグループおよびチェック論理チャンクグループに分割する。データ論理チャンクグループは、データを記憶するように構成された少なくとも2つの論理チャンクを含み、チェック論理チャンクグループは、データのチェックデータを記憶するように構成された少なくとも1つのチェック論理チャンクを含む。この実施形態では、データ論理チャンクグループおよびチェック論理チャンクグループを含む論理チャンクセットは、論理チャンクグループと称される。メモリ111が特定のサイズのデータで満たされる場合、コントローラ11は、特定されたRAIDタイプに基づいて、データを複数のデータユニットに分割してよい。コントローラは、チェックユニットを取得すべく、複数のデータユニットに対して計算を実行する。データユニットおよびチェックユニットは、そして、ソリッドステートディスクに送信され、論理チャンクグループに記憶される。データグループにおけるそれぞれの論理チャンクは、データユニットを記憶するために使用され、チェックグループにおけるそれぞれの論理チャンクは、チェックユニットを記憶するために使用される。記憶後に、これらのデータユニットおよび対応するチェックユニットは、ストライプを形成する。論理チャンクグループは、複数のストライプを含む。
ストライプに含まれる、データユニットおよびチェックユニットのそれぞれは、ストライプユニットと称されてよい。この実施形態では、例えば、ストライプユニットのサイズは8KBであり、しかし、8KBに限定されるものではない。図3に示されるように、1つの論理チャンクは、論理チャンクセットを形成するべく、5つのソリッドステートディスクのそれぞれから選択され、そしてコントローラ11は、RAIDタイプ(例としてRAID6が使用される)に基づいて、論理チャンクセットにおける論理チャンクをグループ分けすると仮定する。例えば、論理チャンク1、論理チャンク2、および論理チャンク3は、データ論理チャンクグループにあり、論理チャンク4および論理チャンク5は、チェック論理チャンクグループにある。メモリ111に記憶されたデータのサイズが24KB(8KB*3)に達する場合、データは、3つのデータユニットに分割され、それぞれのデータユニットのサイズは8KBである。そして、2つのチェックユニットは、計算によって取得され、それぞれのチェックユニットのサイズも、8KBである。コントローラ11は、これらのデータユニットおよびチェックユニットをソリッドステートディスクに送信し、データユニットおよびチェックユニットを、論理チャンクグループ(図3において斜線部によって示される)に記憶する。RAID6の冗長保護機構に従って、いずれか2つのデータユニット又はチェックユニットが無効になる場合、無効のユニットは、残りのデータユニット又はチェックユニットに基づいて再構築されてよいということが理解できる。
図4を参照して、本発明の一実施形態は、データライト方法を提供する。本方法は、図1に示されるフラッシュメモリアレイに適用されてよく、図2に示されるコントローラ11のプロセッサ112又はソリッドステートディスク22によって実行されてよい。図4に示されるように、本方法は、以下の段階を含む。
401.コントローラ11は、ホストによって送信されたデータライト要求を受信し、ここで、データライト要求は、書き込み予定データおよび書き込み予定データの仮想アドレスを含む。コントローラ11は、そのストレージスペースを論理ユニット(Logical Unit,LU)の形態でホストに提供する。ホストと1又は複数の論理ユニットとの間にはバインディング関係がある。ユーザが、ホストを使用することによって、書き込み予定データをコントローラ11に送信する場合、データを記憶するための仮想アドレスは通常、特定される必要がある。具体的に、仮想アドレスは、データが位置付けられた論理ユニットのオフセットアドレスおよび論理ユニットの識別子である。
402.コントローラ11は、書き込み予定データをメモリ111に書き込む。
403.メモリ111におけるデータがストライプサイズに達する場合に、コントローラ11は、データを受信するためのターゲットストライプを決定する。ストライプは、図3に示された論理チャンクグループのサブセットであり、ターゲットストライプの論理アドレスは、ターゲットストライプが位置付けられた論理チャンクグループの論理アドレスのサブセットである。ストライプサイズは、ここでは、実際に、ストライプにおける全てのデータユニットのサイズである。そして、コントローラ11は、計算によって、データのチェックデータを取得する。データおよびチェックデータは、一緒にストライプを形成する。
404.コントローラ11は、論理アドレスをターゲットストライプに割り当てる。論理アドレスは、ここでは、401における仮想アドレスと異なるということを理解されたい。仮想アドレスは、コントローラ11およびホストには可視であるが、ソリッドステートディスク22には不可視であるアドレスであり、一方、404における論理アドレスは、コントローラ11およびソリッドステートディスク22には可視であるが、ホストには不可視であるアドレスである。
コントローラ11は、割り当てられた論理チャンクグループがあるかどうか決定する必要がある。割り当てられた論理チャンクグループがあり、論理チャンクグループが依然としてデータを収容するための十分なスペースを有する場合、コントローラ11は、複数のソリッドステートディスクに、データを、割り当てられた論理チャンクグループに書き込むように命令してよい。具体的に、コントローラ11は、割り当てられた論理チャンクグループの論理アドレスの間隔から、不使用の論理アドレスのセグメントを取得する。そして、405では、コントローラは、論理アドレスをデータライト要求に追加し、データライト要求をソリッドステートディスク22に送信する。システムには割り当てられた論理チャンクグループが無いということ、又は、全ての割り当てられた論理チャンクグループがデータで満たされているとコントローラ11が決定する場合、コントローラ11は、新たな論理チャンクグループを生成する必要がある。新たな論理チャンクグループの生成処理は、次の通りであってよい。コントローラ11は、コントローラ11に記憶された各ソリッドステートディスクに関する利用可能なスペースの記録に基づいて、システムにおける残りのスペースは、新たな論理チャンクグループを生成するためには十分であるということを決定する。次に、コントローラ11は、複数の異なるソリッドステートディスク22のそれぞれから、1つの論理チャンクを取得し、特定されたRAIDタイプに基づいて、これらの論理チャンクを新たな論理チャンクグループに構成する(図3における論理チャンクグループに関する説明を参照)。次に、コントローラ11は、論理アドレスのセグメントを、各論理チャンクに割り当て、これらの論理アドレスのセットは、新たな論理チャンクグループの論理アドレスである。新たな論理チャンクグループの論理アドレスでは、コントローラ11は、論理アドレスのセグメントを、ターゲットストライプの論理アドレスとして取得してよい。
405.コントローラ11は、データライト命令を、複数のソリッドステートディスク22のそれぞれに送信する。ターゲットストライプにおけるデータが複数のソリッドステートディスクにおいて分散されるべきであるので、データライト命令は、複数のソリッドステートディスクの各ソリッドステートディスク22に送信される必要がある。データライト命令を受信するソリッドステートディスク22の数は、RAIDタイプに依存する。例えば、RAIDタイプは、3+2(3つのデータユニットと2つのチェックユニット)である。この場合、ターゲットストライプにおけるデータは、5つのソリッドステートディスクに分散される。そのため、コントローラ11は、5つのデータライト命令を生成する必要があり、各データライト命令は、5つのソリッドステートディスクのうちの1つに送信される。各データライト命令は、データの一部又はチェックデータの一部、データの一部又はチェックデータの一部の論理アドレス、およびデータの一部の又はチェックデータの一部の仮想アドレスを保持する。各データライト命令における論理アドレスは、ターゲットストライプに割り当てられた論理アドレスのサブセットであり、各データライト命令における仮想アドレスは、ホストによって送信されたデータライト要求からのものであることを理解されたい。
406.データライト命令を受信する各ソリッドステートディスク22は、データライト命令におけるデータおよびデータの仮想アドレスを、物理ブロックに書き込む。オプションで、データライト命令は、データおよび仮想アドレスが同じ物理ブロックに書き込まれることを保証するためのカスタムコマンドであってよい。データが位置付けられたブロックのアドレスは、実アドレス(データが位置付けられたページ数および物理ブロックのブロック数を含む)と称され、書き込み後に、ソリッドステートディスク22は、フラッシュトランスレーションレイヤにおいて、データの実アドレスと論理アドレスとの間の対応関係を記憶する。
データと一緒に物理ブロックに書き込まれた仮想アドレスは、また、逆マッピング情報と称され、逆マッピング情報は、ソリッドステートディスク22が、ディスク内ガベージコレクションの実行の間にデータの仮想アドレスに基づいてデータの論理アドレスを取得することができるようにする。そして、データの論理アドレスは、フラッシュトランスレーションレイヤから確認され、新たな論理アドレスに変更され得る。
407.ソリッドステートディスク22がブロックへのデータの書き込みに成功した後に、コントローラ11は、データの論理アドレスと仮想アドレスとの間の対応関係を生成する。次に、ホストが、仮想アドレスにおけるデータを読み出すべく、データリード要求を送信する場合、コントローラ11は、仮想アドレスと論理アドレスとの間の対応関係に基づいて、データを、ソリッドステートディスク22から読み出してよい。
従来技術では、データと一緒に物理ブロックに書き込まれる逆マッピング情報は、データの論理アドレスである。データの論理アドレスが論理チャンクグループにおけるデータの位置を記述するため、データの論理アドレスは、データが1つの論理チャンクグループから他の論理チャンクグループに移行される場合に変化する。この場合、これはまた、データおよびデータの論理アドレスを含むデータ情報が変化することを意味する。この実施形態では、システムガベージコレクションの処理において、データ情報が属する論理チャンクグループのみを、実際にデータを移動させることなく変更するために、システムコントローラは、論理アドレスではなく、データおよびデータの仮想アドレスを、データ書き込みの間に物理ブロックに書き込む。これは、データの仮想アドレスがこの処理の間に変化しないためである。
図4に示された実施例では、逆マッピング情報は、データの仮想アドレスである。データが複数の論理チャンクグループの間で移行される場合に、データの仮想アドレスは変化しない。オプションで、他の実施例では、逆マッピング情報は、データのフィンガープリントであり、ここで、フィンガープリントは、データに対するハッシュ処理を実行することによって取得された結果である。代わりに、逆マッピング情報は、ファイルにおけるデータのオフセットアドレスである。オプションで、キーバリュー(key-value)インタフェースを有するフラッシュメモリアレイでは、ホストによってコントローラ11に送信されたデータライト要求は、仮想アドレスの代わりに、書き込み予定データのキーを含む。キーは、仮想アドレスを使用することによって計算を実行することによって取得される。この場合、逆マッピング情報は、書き込み予定データのキーである。これに応じて、407では、コントローラ11は、データ情報の論理アドレスとキーとの間の対応関係を生成する。オプションで、ログ(log)インタフェースを有するフラッシュメモリアレイでは、ホストによってコントローラ11に送信されたデータライト要求は、仮想アドレスの代わりに、書き込み予定データのログアドレスを含む。この場合、逆マッピング情報は、書き込み予定データのログアドレスである。これに応じて、407では、コントローラ11は、データ情報の論理アドレスとログアドレスとの間の対応関係を生成する。一般に、本発明のこの実施形態における逆マッピング情報は、順インデックスによってデータの実アドレスを発見するために使用されることができる任意の情報であり、上記で列挙された様々な場合に限定されるものではない。データが複数の論理チャンクグループの間で移行される場合、情報は変化しない。以下の説明では、仮想アドレスは依然として、この実施形態における例として使用される。逆マッピング情報が順インデックスによってデータの実アドレスを発見するために使用されることができる他の情報である場合、これらの処理方式は、前述において説明したものと同様である。
フラッシュメモリアレイにおいて、論理チャンクグループを生成するために十分に利用可能なスペースが常にあるということを保証するために、コントローラ11は、全体のシステムの利用可能なスペースを認識するように、リアルタイムに又は定期的に、各ソリッドステートディスク22の利用可能なスペースをモニタリングしてよい。システムの利用可能なスペースのサイズが、特定されたスペース閾値より小さい場合、システムガベージコレクションは開始される。例えば、ソリッドステートディスク22の容量は、128Gであり、図1に示されるフラッシュメモリアレイに含まれる全てのソリッドステートディスクの総容量は(フラッシュメモリアレイが10個のソリッドステートディスクを含むと仮定して)、1280Gであり、スペース閾値は、640Gに設定されてよい。言い換えれば、フラッシュメモリアレイに記憶されたデータのサイズが総容量の半分に達する場合、残りの利用可能なスペースのサイズは、また、スペース閾値に達する。この場合、コントローラ11は、システムガベージコレクションを実行してよい。640Gは、スペース閾値の例に過ぎず、スペース閾値は、代わりに、別の値に設定されてよいということが理解されることができる。加えて、システムの使用されたスペースが特定されたスペース閾値に達する場合、システムガベージコレクションはまた、トリガされてよい。システムガベージコレクションは、ソリッドステートディスク内のガベージコレクションとは異なる。ソリッドステートディスク内のガベージコレクションは、ソリッドステートディスクそのものによって完了される。
一般的に、コントローラ11は、論理チャンクグループのユニットにおいてシステムガベージコレクションを実行する。例えば、コントローラ11は、ビットマップに基づいて、論理チャンクグループにおける有効データの論理アドレスを取得し、有効データの論理アドレスを、ソリッドステートディスクグループに送信し、これによって、各ソリッドステートディスク22は、有効データの論理アドレスに基づいてデータを読み出し、データをコントローラ11に送信することができる。コントローラ11は、新たな論理アドレスを有効データに割り当て、ここで、新たな論理アドレスは、新たな論理チャンクグループに属する。コントローラ11は、そして、割り当てられた新たな論理アドレスを、ソリッドステートディスクグループに送信し、各ソリッドステートディスク22は、有効データを新たな物理ブロックに書き込んだ後の新たな論理アドレスと実アドレスとの間のマッピング関係を記憶する。そして、コントローラ11は更に、アンマップ(英語:unmap)コマンド又はトリムコマンドを、ソリッドステートディスクグループに送信し、ここで、アンマップコマンドは、収集予定の論理チャンクグループの論理アドレスの間隔を含む。アンマップコマンドの受信後、各ソリッドステートディスク22は、フラッシュトランスレーションレイヤに記憶された、論理アドレスの間隔の論理アドレスと実アドレスとの間の対応関係を削除する。ソリッドステートディスク22は、更に、ブロックを、ブロックに記憶されたデータが移行済みであるので、有効データを含まない無効ブロックとして記録してよい。ソリッドステートディスク22は、また、有効データを含まないブロックを直接消去してよい。後に、コントローラ11は、収集予定の論理チャンクグループの論理アドレスの間隔と、論理チャンクグループにより占有された実際の物理スペース(また、実アドレスと理解されてよい)とをリリースしてよい。
システムガベージコレクションは、複数の物理ブロックの間のデータのマイグレーションをもたらし、ライトアンプリフィケーションの回数が増加されるということが分かることができる。本発明のこの実施形態は、実際にデータを移動させることなく、システムガベージコレクションの処理において複数の論理チャンクグループの間の有効データのマイグレーションを完了するように、システムガベージコレクションの方法を提供し、これにより、ライトアンプリフィケーションの回数を減らす。
図5および図6を参照して、本発明の一実施形態は、システムガベージコレクションを提供する。方法は、図1に示されるフラッシュメモリアレイに適用されてよく、図2に示されるコントローラ11のプロセッサ112によって実行されてよい。図5は、本発明のこの実施形態によるシステムガベージコレクションの方法の概略フローチャートであり、図6は、2つの論理チャンクグループの間のデータのマイグレーションを実現する概略図である。図5に示されるように、方法は、以下の段階を含む。
501.ストレージシステムにおいて空きスペースが不十分である場合、コントローラ11は、複数の論理チャンクグループから少なくとも1つの論理チャンクグループをガベージコレクション対象として選択する。選択された論理チャンクグループは、特定の条件を満たす必要がある。例えば、論理チャンクグループに含まれる無効データの量は、第1の特定された閾値に達する、又は論理チャンクグループは、複数の論理チャンクグループにおける無効データの最大量を含む論理チャンクグループである、又は論理チャンクグループに含まれる無効データの量は、第2の特定された閾値より小さい、又は論理チャンクグループは、複数の論理チャンクグループにおける無効データの最低量を含む論理チャンクグループである。無効データ又は有効データの量は、上記で説明したビットマップに基づいて計算されてよい。説明しやすくするために、この実施形態では、ガベージコレクションが実行されることになっている選択された論理チャンクグループは、第1の論理チャンクグループと称される。
第1の論理チャンクグループが、第1のデータ論理チャンクグループおよび第1のチェック論理チャンクグループを含むということは、図3および図6における論理チャンクグループの説明から分かることができる。第1のデータ論理チャンクグループは、少なくとも2つのデータ論理チャンクを含み、データを記憶するように構成される。第1のチェック論理チャンクグループは、少なくとも1つの論理チャンクを含み、チェックデータを記憶するように構成される。第1のデータ論理チャンクグループに含まれた各データ論理チャンクおよび第1のチェック論理チャンクグループに含まれた各チェック論理チャンクは、複数の異なるソリッドステートディスクからのものである。
第1の論理チャンクグループは、有効データおよび無効データを含む。一般的に、システムガベージコレクションの処理では、第1の論理チャンクグループにおける有効データは、新たな論理チャンクグループに移行される必要があり、その後、第1の論理チャンクグループはリリースされる必要がある。この実施形態では、第1の論理チャンクグループにおける効データの位置は、第1の論理アドレスである。ソリッドステートディスクにおいて有効データが記憶された実アドレスと第1の論理アドレスとの間の対応関係がある。
502.コントローラ11は、複数のソリッドステートディスクにおける第1のデータ論理チャンクグループの分散に基づいて、第2の論理チャンクグループを生成する。第2の論理チャンクグループは、第1の論理チャンクグループにおける有効データを受信する論理チャンクグループである。生成された第2の論理チャンクグループのRAIDタイプは、第1の論理チャンクグループのRAIDタイプと同じであり、そのため、第2の論理チャンクグループは、第2のデータ論理チャンクグループおよび第2のチェック論理チャンクグループを含み、ここで、第2のデータ論理チャンクに含まれるデータ論理チャンクの量は、第1のデータ論理チャンクグループに含まれるデータ論理チャンクの量と同じであり、第2のチェック論理チャンクグループに含まれるチェック論理チャンクの量は、第1のチェック論理チャンクグループに含まれるチェック論理チャンクの量と同じである。加えて、複数のソリッドステートディスクにおける第2のデータ論理チャンクグループの分散は、複数のソリッドステートディスクにおける第1のデータ論理チャンクグループの分散と同じである。例えば、第1のデータ論理チャンクグループに含まれる、論理チャンク1、論理チャンク2、および論理チャンク3は、それぞれ、ソリッドステートディスク22A、ソリッドステートディスク22B、およびソリッドステートディスク22Cに位置付けられる。これらのソリッドステートディスクにおける、論理チャンク1、論理チャンク2、および論理チャンク3の分散に基づいて、コントローラ11は、ソリッドステートディスク22A、ソリッドステートディスク22B、およびソリッドステートディスク22Cのそれぞれから1つのデータ論理チャンクを取得し、第2の論理チャンクグループを生成する。言い換えれば、第2の論理チャンクグループにおける論理チャンク1'、論理チャンク2'、および論理チャンク3'はまた、それぞれ、ソリッドステートディスク22A、ソリッドステートディスク22B、およびソリッドステートディスク22Cに位置付けられる。図6に示されるように、第1の論理チャンクグループに含まれる論理チャンク1は、ソリッドステートディスク22Aにおいて分散される。第2の論理チャンクグループを生成するために、コントローラ11は、ソリッドステートディスク22Aから論理チャンク1'を取得する。同様に、第1の論理チャンクグループに含まれるデータ論理チャンク2およびデータ論理チャンク3について、コントローラ11はまた、ソリッドステートディスクにおけるデータ論理チャンク2およびデータ論理チャンク3の分散に基づいて、データ論理チャンク2'およびデータ論理チャンク3'を、対応するソリッドステートディスクから取得する。
しかしながら、この実施形態では、コントローラ11は、複数のソリッドステートディスクにおける第1のチェック論理チャンクグループの分散に基づいて、第2のチェック論理チャンクグループを生成する必要が無い。ソリッドステートディスクがデータ論理チャンクを提供するソリッドステートディスクと同じではないということを条件として、実際、コントローラ11は、複数のソリッドステートディスクから、チェック論理チャンクを提供するソリッドステートディスクを、自由に選択してよい。これは、第2のチェック論理チャンクに記憶されたチェックデータが、一般的に、マイグレーションによって第1のチェック論理チャンクから直接取得されることなく、再計算によって取得される必要があるためである。
502において、第2の論理チャンクグループに含まれるそれぞれのデータ論理チャンクは、第1の論理チャンクグループに含まれる1つのデータ論理チャンクが位置付けられるソリッドステートディスクにおいて、分散される。しかしながら、他の実施例では、第2の論理チャンクグループにおける少なくとも1つのデータ論理チャンクが、第1の論理チャンクグループにおいて有効データを記憶するデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散されるということを保証することを条件として、ライトアンプリフィケーションの回数はまた、ある程度まで減らされることができる。加えて、第1のデータ論理チャンクグループに含まれるデータ論理チャンクに記憶されたデータは、有効データであってよく、又は無効データであってよいということが理解されることができる。言い換えれば、複数のデータ論理チャンクにおいて、一部のデータ論理チャンクのみ(さらに、1つのみのデータ論理チャンク)が、おそらく、有効データを記憶する。この場合、第2の論理チャンクグループにおける一部のデータ論理チャンク又は1つのデータ論理チャンクが、第1のデータ論理チャンクグループにおいて、有効データを記憶するデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散されることを保証するということを条件として、第2の論理チャンクグループの生成の間に、ガベージコレクションは、第1の論理チャンクグループに対して実行されてよい。
503.コントローラ11は、第1の論理チャンクグループにおける有効データに第2の論理アドレスを割り当てる。例えば、有効データについて、図6において示される論理チャンク1における小さな斜線ボックスを参照する。図6に示される小さな斜線ボックスは、第1の論理チャンクグループにおける有効データの一部のみであり、有効データは、代わりに、データ論理チャンク2およびデータ論理チャンク3において分散されてよいということに留意すべきである。割り当てられた第2の論理アドレスは、第2の論理チャンクグループの論理アドレスのサブセットである。502で生成された第2の論理チャンクグループは、1つの論理チャンクグループに有効データを記憶するために使用されるのみではなくてよく、また、複数の論理チャンクグループに有効データを記憶するために使用されてもよい。
504.コントローラ11は、メモリ111に記憶された有効データの第1の論理アドレスを、第2の論理アドレスに変更する。従来のシステムガベージコレクションの間に、コントローラ11は、第1の論理チャンクグループから有効データを読み出し、有効データを第2の論理チャンクグループに再度書き込む必要がある。これは、有効データは、ソリッドステートディスクの複数の物理ブロックの間で移行され、これに応じて、有効データの実アドレスと論理アドレスの両方が変化するということを意味する。しかしながら、この実施形態では、有効データを第1の論理チャンクグループから第2の論理チャンクグループに移行させるために、有効データの論理アドレスのみが変更される(第1の論理チャンクグループにおける第1の論理アドレスは、第2の論理チャンクグループにおける第2の論理アドレスに変更される)必要があり、ソリッドステートディスクにおいて有効データが実際に記憶された位置は、変更されない。言い換えれば、この実施形態では、有効データの実アドレスを変更することなく、有効データの論理アドレスのみが変更される必要がある。例えば、第1の論理チャンクグループに対するシステムガベージコレクションを実行する前に、コントローラ11は、有効データの第1の論理アドレスと仮想アドレスとの間の対応関係を記憶する。504では、コントローラ11は、有効データの第1の論理アドレスと仮想アドレスとの間の対応関係を、割り当てられた第2の論理アドレスと仮想アドレスとの間の対応関係に変更してよい。
505.コントローラ11は、マッピング関係変更命令を複数のソリッドステートディスクに送信し、ここで、マッピング関係変更命令は、複数のソリッドステートディスクに、有効データの実アドレスと第1の論理アドレスとの間の対応関係を、第2の論理アドレスと実アドレスとの間の対応関係に変更するように命令するために使用される。504では、コントローラ11は、有効データの論理アドレスを変更し、論理アドレスの変更は更に、コントローラ11およびソリッドステートディスク22に記憶された有効データの論理アドレスが一致することを保証すべく、ソリッドステートディスクに通知される必要があり、これにより、有効データの将来の読み出しを容易にする。複数のソリッドステートディスクのそれぞれが、有効データの一部を記憶するので、コントローラ11は、マッピング関係変更命令を、各ソリッドステートディスクに送信する必要があり、これにより、ソリッドステートディスクに、ソリッドステートディスクに記憶された有効データの一部の対応関係を変更するように命令するということは理解されることができる。
第1の論理チャンクグループにおける1つのみの第1のデータ論理チャンクが、有効データを含み、生成された第2の論理チャンクグループにおける1つの第2のデータ論理チャンクが位置づけられた1つのみのソリッドステートディスクが、有効データを記憶する第1のデータ論理チャンクが位置づけられたソリッドステートディスクと同じである場合、コントローラ11は、マッピング関係変更命令を、有効データを含む第1のデータ論理チャンクが位置付けられたソリッドステートディスクに送信することのみが必要であるということが理解されることができる。同様に、第1の論理チャンクグループにおける特定の数(2に等しい又は2より多い)の第1のデータ論理チャンクが、有効データを含み、生成された第2の論理チャンクグループにおける同じ数の第2のデータ論理チャンクが位置づけられるソリッドステートディスクが、有効データを記憶する第1のデータ論理チャンクが位置づけられるソリッドステートディスクと同じである場合、コントローラ11は、マッピング関係変更命令を、有効データを記憶するソリッドステートディスクに送信することのみが必要である。
他の場合では、第1の論理チャンクグループにおけるN(Nは2に等しい又は2より大きい整数である)個の第1のデータ論理チャンクは、有効データを含み、生成された第2の論理チャンクグループにおけるM(Mは、1に等しい又は1より大きい整数である)個の第2のデータ論理チャンクが位置付けられるソリッドステートディスクは、N個の第1のデータ論理チャンクの一部が位置付けられるソリッドステートディスクと同じであり、ここで、Mは、Nより小さい。この場合、コントローラ11は、マッピング関係変更命令を、M個の第1のデータ論理チャンクが位置付けられるソリッドステートディスクに送信することのみが必要である。
図5に示されるシステムガベージコレクションの方法は、全体のフラッシュメモリアレイにおいて実施されてよく、又はフラッシュメモリアレイの一部の領域に適用可能である。例えば、複数のソリッドステートディスク22によってコントローラ11に提供される論理アドレスは、2つのセットに分割されてよい。本発明のこの実施形態において提供される方式は、第1のセットに対するシステムガベージコレクションのために使用され、従来の方式は、第2のセットに対するシステムガベージコレクションのために使用される。
第1の論理チャンクグループにおける全ての有効データが第2の論理チャンクグループに移行された後に、第1の論理チャンクグループにおける全てのデータは、無効データとなる。この場合、コントローラ11は、第1の論理チャンクグループにおけるデータを、無効データ情報(例えば、第1の論理チャンクグループにおける論理アドレス)に変更し、無効データ情報を、第1の論理チャンクグループが分散されたソリッドステートディスク22に送信してよく、ソリッドステートディスク22は、情報に基づいて、物理ブロックにおける無効データを記録し、ソリッドステートディスク22においてガベージコレクションを実行する場合に、ソリッドステートディスク22は、有効データを再度移行させることなく、無効データを含む物理ブロックを直接再利用してよい。
図5に示される実施例では、システムガベージコレクションの処理が説明される。システムガベージコレクションがコントローラ11によってトリガされて完了されることは、上述した説明から分かることができる。しかしながら、ソリッドステートディスク22は、更に、ソリッドステートディスク22においてガベージコレクションを実行してよく、仮で、ソリッドステートディスクにおけるガベージコレクションは、ディスク内ガベージコレクションと称される。ディスク内ガベージコレクションのほとんどの処理は、フラッシュコントローラによって完了され、いくつか場合、コントローラ11は、フラッシュコントローラとの協働を必要とされる。図7は、本発明の実施形態に係るディスク内ガベージコレクションの方法の概略フローチャートであり、方法は、以下の段階を含む。
701.ソリッドステートディスク22における空の物理ブロックが不十分である場合、ソリッドステートディスク22のフラッシュコントローラは、複数の物理ブロックから、少なくとも1つの収集予定の物理ブロックを選択する。ソリッドステートディスク22は、図1に示される任意のソリッドステートディスクである。選択された物理ブロックは、特定の条件を満たす必要がある。例えば、物理ブロックに含まれる無効データの量は、第3の特定された閾値に達する、又は物理ブロックは、複数の物理ブロックにおける無効データの最大量を含む物理ブロックである、又は物理ブロックに含まれる無効データの量は、第4の特定された閾値より小さい、又は物理ブロックは、複数の物理ブロックにおける無効データの最小量を含む物理ブロックである。説明しやすくするために、この実施形態では、ガベージコレクションが実行されることになっている選択された物理ブロックは、第1の物理ブロックと称される。
無効データ又は有効データの量は、ソリッドステートディスク22におけるビットマップに基づいて計算されてよい。ソリッドステートディスク22は、ビットマップを記憶し、ビットマップは、表1において示され、実アドレスに記憶されたデータの有効性を記述するために使用される。
"0"は、アドレスに記憶されたデータが無効データであることを示し、"1"は、アドレスに記憶されたデータが有効データであることを示す。ビットマップに基づいて、ソリッドステートディスク22は、各物理ブロックの有効データ又は無効データの量を取得してよく、これにより、収集予定の第1の物理ブロックを選択する。
702.フラッシュコントローラは、有効データおよび有効データの仮想アドレスを、第1の物理ブロックから読み出す。有効データが記憶された実アドレスは、表1、例えばブロック0およびページ2から分かることができる。そして、ソリッドステートディスク22は、実アドレスから、記憶された有効データを読み出す。データの仮想アドレスおよびデータがまとめて記憶されるので、有効データの仮想アドレスは、有効データの読み出しの間に読み出されてよい。
703.フラッシュコントローラは、仮想アドレスをコントローラ11に送信する。従来の方式が使用される場合、有効データの論理アドレスは、有効データと一緒に記憶され、そのため、ソリッドステートディスク22は、有効データの論理アドレスを直接取得してよい。しかしながら、この実施形態では、ソリッドステートディスク22は、論理アドレスの代わりに、有効データの仮想アドレスを記憶するので、ソリッドステートディスク22は、有効データの論理アドレスを照会するべく、仮想アドレスをコントローラ11に送信する必要がある。
703では、フラッシュコントローラは、コントローラ11によって送信された仮想アドレスに対応する論理アドレスを受信する。仮想アドレスと論理アドレスとの間の対応関係は、コントローラ11に記憶される。例えば、論理アドレスは、ここでは、図5に示される実施形態における第2の論理アドレスであってよく、又は、ソース論理アドレスと称されてよい。
704.フラッシュコントローラは、ターゲット論理アドレスを割り当てる。
705.フラッシュコントローラは、有効データを第2の物理ブロックにコピーし、ここで、第2の物理ブロックは空白の物理ブロックである。有効データおよび有効データの仮想アドレスが、まとめて記憶されるので、フラッシュコントローラはまた、有効データを第2の物理ブロックにコピーする場合に、有効データの仮想アドレスを、第2の物理ブロックにコピーする。
706.コピーが完了した後に、フラッシュコントローラは、フラッシュトランスレーションレイヤに記憶された対応関係を変更する。具体的に、フラッシュコントローラは、第1の物理ブロックにおいて有効データが記憶された実アドレスとソース論理アドレスとの間の対応関係を削除し、第2の物理ブロックにおいて有効データが記憶された実アドレスとターゲット論理アドレスとの間の対応関係を生成する。
707.第1の物理ブロックにおけるデータを消去する。
同じ方式で、ソリッドステートディスク22は、他の物理ブロックをガベージコレクション対象として選択してよく、701-707を繰り返し実行し、これにより、全体のソリッドステートディスク22におけるガベージコレクションを完了する。
図7に示される説明では、仮想アドレスは、この実施形態における例として使用される。しかしながら、仮想アドレスは、他の形態で、逆マッピング情報と置き換えられてよいということは理解されることができる。この場合、ディスク内ガベージコレクションの処理方式は、図7において説明された方式と同様であり、詳細は、ここでは繰り返されない。
加えて、この実施形態は、更に、他のストレージシステムに適用可能であり、ストレージシステムは、システムコントローラおよび複数のシングル磁気記録方式(Shingled Magnetic Recording,SMR)ディスクを含む。ストレージシステムはまた、図4、図5、および図7に示される方法の処理を実行してよく、ソリッドステートディスクのみが、シングル磁気記録方式ディスクで置き換えられる必要がある。詳細はここでは繰り返されない。
図8は、本発明の実施形態に係るシステムガベージコレクションの装置の概略構造図である。装置は、フラッシュメモリアレイのコントローラ11に位置付けられる。図8に示されるように、装置は、決定モジュール801、生成モジュール802、割り当てモジュール803、および命令モジュール804を含む。
決定モジュール801は、収集予定の第1の論理チャンクグループを決定するように構成され、ここで、第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、複数の第1のデータ論理チャンクは、フラッシュメモリアレイに含まれる複数の異なるソリッドステートディスクにおいて分散され、複数の第1のデータ論理チャンクの少なくとも1つに記憶されたデータは、有効データを含み、第1の論理チャンクにおける有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて有効データが記憶された実アドレスと第1の論理アドレスとの間の対応関係がある。モジュールの機能は、プロセッサ112によって別々に実行されてよく、又は、メモリ111におけるプログラムを呼び出すことによって、プロセッサ112によって実行されてよい。詳細について、図5に示された段階501および段階501の関連する説明を参照する。詳細はここでは繰り返されない。
生成モジュール802は、第2の論理チャンクグループを生成するように構成され、ここで、第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、有効データを記憶する第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される。モジュールの機能は、プロセッサ112によって別々に実行されてよく、又は、メモリ111におけるプログラムを呼び出すことによって、プロセッサ112によって実行されてよい。詳細について、図5に示された段階502および段階502の関連する説明を参照する。詳細はここでは繰り返されない。
割り当てモジュール803は、有効データを記憶する第1の論理チャンクが位置付けられたソリッドステートディスクにおいて分散された第2の論理チャンクにおいて、第2の論理アドレスを有効データに割り当てるように構成される。モジュールの機能は、プロセッサ112によって別々に実行されてよく、又は、メモリ111におけるプログラムを呼び出すことによって、プロセッサ112によって実行されてよい。詳細について、図5に示された段階503および段階503の関連する説明を参照する。詳細はここでは繰り返されない。
命令モジュール804は、有効データを記憶するソリッドステートディスクに、第1の論理アドレスと実アドレスとの間の対応関係を、第2の論理アドレスと実アドレスとの間の対応関係に変更するよう命令するように構成される。モジュールの機能は、プロセッサ112によって別々に実行されてよく、又は、メモリ111におけるプログラムを呼び出すことによって、プロセッサ112によって実行されてよい。詳細について、図5に示された段階505および段階505の関連する説明を参照する。詳細はここでは繰り返されない。
図9は、本発明の実施形態に係るソリッドステートディスクにおけるガベージコレクションのための装置の概略構造図である。図9に示されるように、装置は、処理モジュール901およびコレクションモジュール902を含む。
処理モジュール901は、収集予定の第1の物理ブロックから、有効データおよび有効データの逆マッピング情報を読み出し、逆マッピング情報をシステムコントローラに送信し、システムコントローラによって送信され、逆マッピング情報に対応するソース論理アドレスを受信し、ターゲット論理アドレスを有効データに割り当て、有効データを第2の物理ブロックにコピーするように構成される。モジュールの機能は、ソリッドステートディスク22内のコントローラによって実行されてよい。詳細について、図7に示された段階701から段階705および段階701から段階705の関連する説明を参照する。詳細はここでは繰り返されない。
コレクションモジュール902は、第1の物理ブロックにおいて有効データが記憶された実アドレスとソース論理アドレスとの間の対応関係を削除し、第2の物理ブロックにおいて有効データが記憶された実アドレスとターゲット論理アドレスとの間の対応関係を生成し、第1の物理ブロックにおけるデータを消去するように構成される。モジュールの機能は、ソリッドステートディスク22内のコントローラによって実行されてよい。詳細について、図7に示された段階706と段階707、および段階706と段階707の関連する説明を参照する。詳細はここでは繰り返されない。
本発明の全ての態様又は態様の実行可能な実施例は、具体的に、システム、方法、又はコンピュータプログラムプロダクトとして実施されてよいということは、当業者は理解するであろう。そのため、本発明の各態様又は各態様の実行可能な実施例は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態(ファームウェア、および常駐ソフトウェアなどを含む)、又は、ここでは「回路」、「モジュール」、又は「システム」と一様に称される、ソフトウェアおよびハードウェアの組み合わせを有する実施形態の形態を用いてよい。加えて、本発明の各態様又は各態様の実行可能な実施例は、コンピュータプログラムプロダクトの形態をとってよく、ここで、コンピュータプログラムプロダクトは、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードを参照する。
コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、および光ディスクのような、電子、磁気、光、電磁、赤外線、もしくは半導電の、システム、デバイス、もしくは装置、又はこれらの任意の適切な組み合わせを含み、しかしこれらに限定されない。
コンピュータにおけるプロセッサは、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードを読み出し、これにより、プロセッサは、フローチャートにおける各段階又は複数の段階の組み合わせにおいて特定された機能動作を実行できる。
全てのコンピュータ可読プログラムコードは、ユーザコンピュータ上で実行されてよく、又は、いくつかは、ユーザコンピュータ上で、スタンドアローンソフトウェアパッケージとして実行されてよく、又は、いくつかは、いくつかがリモートコンピュータ上で実行される間にユーザコンピュータ上で実行されてよく、又は、全ては、リモートコンピュータもしくはサーバ上で実行されてよい。いくつかの代替的な実施例の解決手段において、フローチャートにおける各段階又はブロック図の各ブロックにおいて特定される機能は、図示された順序で実行されなくてよいことにも留意されたい。例えば、言及された機能によって決まる、説明における2つの連続的な段階又は2つのブロックは、実際は、実質的に同じ時間に実行されてよく、又は、これらのブロックは、時には、逆の順序で実行されてよい。
当業者であれば、本明細書において開示された実施形態で説明された例と組み合わせて、ユニット及びアルゴリズムステップが、電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実施されてよいということを認識するであろう。これらの機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的解決策の特定の適用および設計上の制約に依存する。当業者は、説明された機能を特定の各適用のために実施すべく、複数の異なる方法を使用してよいが、当該実施が本発明の範囲を越えると見なされるべきではない。
上述した説明は、本発明の特定の実施例に過ぎず、しかし本発明の保護範囲を限定することを意図したものではない。本発明において開示された技術的範囲内で当業者が容易に考案したあらゆる変形又は置き換えは、本発明の保護範囲に含まれるものとする。そのため、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
[項目1]
システムガベージコレクションの方法であって、前記方法は、フラッシュメモリアレイに適用され、前記フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含み、前記方法は、前記システムコントローラによって実行され、
収集予定の第1の論理チャンクグループを決定する段階であって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第1のデータ論理チャンクの少なくとも1つに記憶されたデータは、有効データを含み、前記第1の論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第1の論理アドレスとの間には対応関係がある、段階と、
第2の論理チャンクグループを生成する段階であって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記有効データを記憶する前記第1のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される、段階と、
前記少なくとも1つの第2の論理チャンクにおいて、第2の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階と、を備える方法。
[項目2]
有効データを記憶する第1のデータ論理チャンクの量は、前記少なくとも1つの第2のデータ論理チャンクの量に等しい
項目1に記載の方法。
[項目3]
第2の論理チャンクグループを前記生成する段階は、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成する段階を有し、
前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目2に記載の方法。
[項目4]
前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目1から3のいずれか一項に記載の方法。
[項目5]
前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
項目4に記載の方法。
[項目6]
前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
項目4に記載の方法。
[項目7]
収集予定の第1の論理チャンクグループを前記決定する段階の前に、前記方法は、更に、前記第1の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定する段階を備える
項目1に記載の方法。
[項目8]
システムコントローラであって、前記システムコントローラは、
複数のソリッドステートディスクと通信するように構成されたインタフェースと、
プロセッサとを備え、前記プロセッサは、
収集予定の第1の論理チャンクグループを決定する段階であって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、複数の異なるソリッドステートディスクに分散され、前記複数の第1のデータ論理チャンクの少なくとも1つに記憶されたデータは、有効データを含み、前記第1の論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された実アドレスと前記第1の論理アドレスとの間には対応関係がある、段階と、
第2の論理チャンクグループを生成する段階であって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記有効データを記憶する前記第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも1つの第2の論理チャンクにおいて、第2の論理アドレスを、前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記実アドレスとの間の対応関係に変更するように、前記インタフェースを介して命令する段階と、を行うように構成される、
システムコントローラ。
[項目9]
有効データを記憶する第1のデータ論理チャンクの量は、前記少なくとも1つの第2のデータ論理チャンクの量に等しい
項目8に記載のシステムコントローラ。
[項目10]
前記プロセッサは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成するように構成され、
前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目9に記載のシステムコントローラ。
[項目11]
前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目8から10のいずれか一項に記載のシステムコントローラ。
[項目12]
前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
項目11に記載のシステムコントローラ。
[項目13]
前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
項目11に記載のシステムコントローラ。
[項目14]
前記プロセッサは更に、前記収集予定の第1の論理チャンクグループを決定する前に、前記第1の論理チャンクグループにおける有効データの量が特定された閾値未満であることを決定するように構成される
項目8に記載のシステムコントローラ。
[項目15]
フラッシュメモリアレイであって、システムコントローラおよび複数のソリッドステートディスクを備え、
前記システムコントローラは、
収集予定の第1の論理チャンクグループを決定する段階であって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第1のデータ論理チャンクの少なくとも1つに記憶されたデータは、有効データを含み、前記第1の論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第1の論理アドレスとの間には対応関係がある、段階と、
第2の論理チャンクグループを生成する段階であって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記有効データを記憶する前記第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
前記少なくとも1つの第2の論理チャンクにおいて、第2の論理アドレスを前記有効データに割り当てる段階と、
前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記実アドレスとの間の対応関係に変更するように命令する段階とを行うように構成される
フラッシュメモリアレイ。
[項目16]
有効データを記憶する第1のデータ論理チャンクの量は、前記少なくとも1つの第2のデータ論理チャンクの量に等しい
項目15に記載のフラッシュメモリアレイ。
[項目17]
前記システムコントローラは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成するように構成され、
前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目16に記載のフラッシュメモリアレイ。
[項目18]
前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目15から17のいずれか一項に記載のフラッシュメモリアレイ。
[項目19]
前記有効データを記憶する前記ソリッドステートディスクは更に、前記有効データが位置付けられる第1の物理ブロックから、前記有効データおよび前記有効データの逆マッピング情報を読み出し、前記逆マッピング情報を前記システムコントローラに送信するように構成され、
前記システムコントローラは、更に、前記逆マッピング情報に基づいて、前記逆マッピング情報に対応する前記第2の論理アドレスを照会し、前記第2の論理アドレスを、前記有効データを記憶する前記ソリッドステートディスクに送信するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、第3の論理アドレスを、前記有効データに割り当て、前記有効データを第2の物理ブロックにコピーするように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第2の論理アドレスと前記実アドレスとの間の前記対応関係を削除し、前記第2の物理ブロックにおいて前記有効データが記憶される実アドレスと前記第3の論理アドレスとの間の対応関係を生成するように構成され、
前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第1の物理ブロックが他の有効データを含まないということを決定する場合に、前記第1の物理ブロックにおけるデータを消去するように構成される
項目15に記載のフラッシュメモリアレイ。
[項目20]
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目19に記載のフラッシュメモリアレイ。
[項目21]
ソリッドステートディスクにおけるガベージコレクションのための方法であって、
前記ソリッドステートディスクは、システムコントローラに接続され、
前記方法は、前記ソリッドステートディスクによて実行され、収集予定の第1の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、
前記逆マッピング情報を前記システムコントローラに送信する段階と、
前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、
ターゲット論理アドレスを前記有効データに割り当て、前記有効データを第2の物理ブロックにコピーする段階と、
前記第1の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第2の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、
前記第1の物理ブロックにおけるデータを消去する段階とを備える
方法。
[項目22]
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目21に記載の方法。
[項目23]
ソリッドステートディスクであって、
前記ソリッドステートディスクは、コントローラと、第1の物理ブロックと、第2の物理ブロックとを備え、
前記コントローラは、
収集予定の前記第1の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、
前記逆マッピング情報を前記システムコントローラに送信する段階と、
前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、
ターゲット論理アドレスを前記有効データに割り当て、前記有効データを前記第2の物理ブロックにコピーする段階と、
前記第1の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第2の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、
前記第1の物理ブロックにおけるデータを消去する段階とを行うように構成される
ソリッドステートディスク。
[項目24]
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目23に記載のソリッドステートディスク。
[項目25]
システムガベージコレクションの装置であって、前記装置は、フラッシュメモリアレイのシステムコントローラに位置付けられ、前記装置は、
収集予定の第1の論理チャンクグループを決定するように構成される決定モジュールであって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、前記フラッシュメモリアレイに含まれる複数の異なるソリッドステートディスクにおいて分散され、前記複数の第1のデータ論理チャンクの少なくとも1つに記憶されたデータは、有効データを含み、前記第1の論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される実アドレスと前記第1の論理アドレスとの間の対応関係がある、決定モジュールと、
第2の論理チャンクグループを生成するように構成される生成モジュールであって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記有効データを記憶する前記第1のデータ論理チャンクが位置づけられるソリッドステートディスクにおいて分散される、生成モジュールと、
前記少なくとも1つの第2の論理チャンクにおいて、第2の論理アドレスを前記有効データに割り当てるように構成される割り当てモジュールと、
前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記実アドレスとの間の対応関係に変更するよう命令するように構成される命令モジュールと、を備える
装置。
[項目26]
有効データを記憶する第1のデータ論理チャンクの量は、前記少なくとも1つの第2のデータ論理チャンクの量に等しい
項目25に記載の装置。
[項目27]
前記生成モジュールは、具体的に、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成するように構成され、
前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
項目26に記載の装置。
[項目28]
前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
項目25から27のいずれか一項に記載の装置。
[項目29]
前記決定モジュールは更に、前記収集予定の第1の論理チャンクグループを決定する前に、前記第1の論理チャンクグループにおける有効データの量が特定された閾値未満であるということを決定するように構成される
項目25に記載の装置。
[項目30]
ソリッドステートディスクにおけるガベージコレクションのための装置であって、
処理モジュールであって、収集予定の第1の物理ブロックから、有効データおよび前記有効データの逆マッピング情報を読み出す段階と、前記逆マッピング情報を前記システムコントローラに送信する段階と、前記システムコントローラによって送信され、前記逆マッピング情報に対応するソース論理アドレスを受信する段階と、ターゲット論理アドレスを前記有効データに割り当て、前記有効データを第2の物理ブロックにコピーする段階と、を行うように構成される処理モジュールと、
コレクションモジュールであって、前記第1の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ソース論理アドレスとの間の対応関係を削除し、前記第2の物理ブロックにおいて前記有効データが記憶される実アドレスと前記ターゲット論理アドレスとの間の対応関係を生成する段階と、前記第1の物理ブロックにおけるデータを消去する段階とを行うように構成されるコレクションモジュールと、を備える
装置。
[項目31]
前記逆マッピング情報は、前記有効データの仮想アドレスを含む
項目30に記載の装置。

Claims (26)

  1. システムガベージコレクションの方法であって、前記方法は、フラッシュメモリアレイに適用され、前記フラッシュメモリアレイは、システムコントローラおよび複数のソリッドステートディスクを含み、前記方法は、前記システムコントローラによって実行され、
    収集予定の第1の論理チャンクグループを決定する段階であって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、特定のRAIDタイプに従って、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第1のデータ論理チャンクのうちの少なくとも1つの第1のデータ論理チャンクに記憶されたデータは、有効データを含み、前記少なくとも1つの第1のデータ論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された第1の実アドレスと前記第1の論理アドレスとの間には対応関係がある、段階と、
    第2の論理チャンクグループを生成する段階であって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記特定のRAIDタイプに従って、前記有効データを記憶する前記少なくとも1つの第1のデータ論理チャンクが位置付けられたソリッドステートディスクにおいて分散される、段階と、
    前記少なくとも1つの第2のデータ論理チャンクにおいて、第2の論理アドレスを前記有効データに割り当てる段階と、
    前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記第1の実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記第1の実アドレスとの間の対応関係に変更するように命令する段階と、を備える方法。
  2. 有効データを記憶する第1のデータ論理チャンクの数は、前記少なくとも1つの第2のデータ論理チャンクの数に等しい
    請求項1に記載の方法。
  3. 第2の論理チャンクグループを前記生成する段階は、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成する段階を有し、
    前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
    請求項2に記載の方法。
  4. 前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
    請求項1から3のいずれか一項に記載の方法。
  5. 前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
    請求項4に記載の方法。
  6. 前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
    請求項4に記載の方法。
  7. 収集予定の第1の論理チャンクグループを前記決定する段階の前に、前記方法は、更に、前記第1の論理チャンクグループにおける無効データの量が特定された閾値未満であることを決定する段階を備える
    請求項1から6のいずれか一項に記載の方法。
  8. 前記有効データの前記第1の実アドレスを変更することなく、前記有効データの前記第1の論理アドレスを前記第2の論理アドレスに変更する段階をさらに備える、請求項1から7のいずれか一項に記載の方法。
  9. 前記ソリッドステートディスクにおいて、前記有効データと、前記有効データの仮想アドレスとが同じ物理ブロックに書き込まれており、前記仮想アドレスは、ホストによって送信されたデータライト要求に含まれ、前記有効データの前記第1の論理アドレスを前記第2の論理アドレスに変更する場合、前記仮想アドレスは変化しない、請求項8に記載の方法。
  10. システムコントローラであって、前記システムコントローラは、
    複数のソリッドステートディスクと通信するように構成されたインタフェースと、
    プロセッサとを備え、前記プロセッサは、
    収集予定の第1の論理チャンクグループを決定する段階であって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、特定のRAIDタイプに従って、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第1のデータ論理チャンクのうちの少なくとも1つの第1のデータ論理チャンクに記憶されたデータは、有効データを含み、前記少なくとも1つの第1のデータ論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶された第1の実アドレスと前記第1の論理アドレスとの間には対応関係がある、段階と、
    第2の論理チャンクグループを生成する段階であって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記特定のRAIDタイプに従って、前記有効データを記憶する前記少なくとも1つの第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
    前記少なくとも1つの第2のデータ論理チャンクにおいて、第2の論理アドレスを、前記有効データに割り当てる段階と、
    前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記第1の実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記第1の実アドレスとの間の対応関係に変更するように、前記インタフェースを介して命令する段階と、を行うように構成される、
    システムコントローラ。
  11. 有効データを記憶する第1のデータ論理チャンクの数は、前記少なくとも1つの第2のデータ論理チャンクの数に等しい
    請求項10に記載のシステムコントローラ。
  12. 前記プロセッサは、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成するように構成され、
    前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
    請求項11に記載のシステムコントローラ。
  13. 前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
    請求項10から12のいずれか一項に記載のシステムコントローラ。
  14. 前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと同じである
    請求項13に記載のシステムコントローラ。
  15. 前記第2のチェック論理チャンクが位置付けられる前記ソリッドステートディスクは、前記第1のチェック論理チャンクが位置付けられる前記ソリッドステートディスクと異なる
    請求項13に記載のシステムコントローラ。
  16. 前記プロセッサは更に、前記収集予定の第1の論理チャンクグループを決定する前に、前記第1の論理チャンクグループにおける無効データの量が特定された閾値未満であることを決定するように構成される
    請求項10から15のいずれか一項に記載のシステムコントローラ。
  17. 記プロセッサは、さらに、
    前記有効データの前記第1の実アドレスを変更することなく、前記有効データの前記第1の論理アドレスを前記第2の論理アドレスに変更するように構成される、請求項10から16のいずれか一項に記載のシステムコントローラ。
  18. 前記ソリッドステートディスクにおいて、前記有効データと、前記有効データの仮想アドレスとが同じ物理ブロックに書き込まれており、前記仮想アドレスは、ホストによって送信されたデータライト要求に含まれ、前記有効データの前記第1の論理アドレスを前記第2の論理アドレスに変更する場合、前記仮想アドレスは変化しない、請求項17に記載のシステムコントローラ。
  19. フラッシュメモリアレイであって、システムコントローラおよび複数のソリッドステートディスクを備え、
    前記システムコントローラは、
    収集予定の第1の論理チャンクグループを決定する段階であって、前記第1の論理チャンクグループは、複数の第1のデータ論理チャンクを含み、前記複数の第1のデータ論理チャンクは、特定のRAIDタイプに従って、複数の異なるソリッドステートディスクにおいて分散され、前記複数の第1のデータ論理チャンクのうちの少なくとも1つの第1のデータ論理チャンクに記憶されたデータは、有効データを含み、前記少なくとも1つの第1のデータ論理チャンクにおける前記有効データの位置は、第1の論理アドレスであり、ソリッドステートディスクにおいて前記有効データが記憶される第1の実アドレスと前記第1の論理アドレスとの間には対応関係がある、段階と、
    第2の論理チャンクグループを生成する段階であって、前記第2の論理チャンクグループは、複数の第2のデータ論理チャンクを含み、少なくとも1つの第2のデータ論理チャンクは、前記特定のRAIDタイプに従って、前記有効データを記憶する前記少なくとも1つの第1のデータ論理チャンクが位置付けられるソリッドステートディスクにおいて分散される、段階と、
    前記少なくとも1つの第2のデータ論理チャンクにおいて、第2の論理アドレスを前記有効データに割り当てる段階と、
    前記有効データを記憶する前記ソリッドステートディスクに、前記第1の論理アドレスと前記第1の実アドレスとの間の前記対応関係を、前記第2の論理アドレスと前記第1の実アドレスとの間の対応関係に変更するように命令する段階とを行うように構成される
    フラッシュメモリアレイ。
  20. 有効データを記憶する第1のデータ論理チャンクの数は、前記少なくとも1つの第2のデータ論理チャンクの数に等しい
    請求項19に記載のフラッシュメモリアレイ。
  21. 前記システムコントローラは、前記複数のソリッドステートディスクにおける前記複数の第1のデータ論理チャンクの分散に基づいて、前記第2の論理チャンクグループを生成するように構成され、
    前記第2の論理チャンクグループに含まれる前記複数の第2のデータ論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものと同じソリッドステートディスクに分散される
    請求項20に記載のフラッシュメモリアレイ。
  22. 前記第1の論理チャンクグループは更に、第1のチェック論理チャンクを含み、前記第1のチェック論理チャンクは、前記複数の第1のデータ論理チャンクが位置付けられるものとは異なるソリッドステートディスクにおいて分散され、前記第2の論理チャンクグループは更に、第2のチェック論理チャンクを含み、前記第2のチェック論理チャンクは、前記複数の第2のデータ論理チャンクが位置づけられるものとは異なるソリッドステートディスクにおいて分散される
    請求項19から21のいずれか一項に記載のフラッシュメモリアレイ。
  23. 前記有効データを記憶する前記ソリッドステートディスクは更に、前記有効データが位置付けられる第1の物理ブロックから、前記有効データおよび前記有効データの逆マッピング情報を読み出し、前記逆マッピング情報を前記システムコントローラに送信するように構成され、
    前記システムコントローラは、更に、前記逆マッピング情報に基づいて、前記逆マッピング情報に対応する前記第2の論理アドレスを照会し、前記第2の論理アドレスを、前記有効データを記憶する前記ソリッドステートディスクに送信するように構成され、
    前記有効データを記憶する前記ソリッドステートディスクは、更に、第3の論理アドレスを、前記有効データに割り当て、前記有効データを第2の物理ブロックにコピーするように構成され、
    前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第2の論理アドレスと前記第1の実アドレスとの間の前記対応関係を削除し、前記第2の物理ブロックにおいて前記有効データが記憶される第2の実アドレスと前記第3の論理アドレスとの間の対応関係を生成するように構成され、
    前記有効データを記憶する前記ソリッドステートディスクは、更に、前記第1の物理ブロックが他の有効データを含まないということを決定する場合に、前記第1の物理ブロックにおけるデータを消去するように構成される
    請求項19から22のいずれか一項に記載のフラッシュメモリアレイ。
  24. 前記逆マッピング情報は、前記有効データの仮想アドレスを含む
    請求項23に記載のフラッシュメモリアレイ。
  25. 記システムコントローラは、さらに、
    前記有効データの前記第1の実アドレスを変更することなく、前記有効データの前記第1の論理アドレスを前記第2の論理アドレスに変更するように構成される、請求項19から24のいずれか一項に記載のフラッシュメモリアレイ。
  26. 前記ソリッドステートディスクにおいて、前記有効データと、前記有効データの仮想アドレスとが同じ物理ブロックに書き込まれており、前記仮想アドレスは、ホストによって送信されたデータライト要求に含まれ、前記有効データの前記第1の論理アドレスを前記第2の論理アドレスに変更する場合、前記仮想アドレスは変化しない、請求項25に記載のフラッシュメモリアレイ。
JP2020526891A 2018-09-12 2019-03-23 システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法 Active JP7315130B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201811064493.X 2018-09-12
CN201811064493 2018-09-12
CN201811233512.7 2018-10-23
CN201811233512.7A CN110895513A (zh) 2018-09-12 2018-10-23 一种***垃圾回收方法和固态硬盘中的垃圾回收方法
PCT/CN2019/079391 WO2020052216A1 (zh) 2018-09-12 2019-03-23 一种***垃圾回收方法和固态硬盘中的垃圾回收方法

Publications (2)

Publication Number Publication Date
JP2021509981A JP2021509981A (ja) 2021-04-08
JP7315130B2 true JP7315130B2 (ja) 2023-07-26

Family

ID=69785401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020526891A Active JP7315130B2 (ja) 2018-09-12 2019-03-23 システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法

Country Status (4)

Country Link
US (1) US11928053B2 (ja)
EP (1) EP3748509B1 (ja)
JP (1) JP7315130B2 (ja)
CN (1) CN110895513A (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI724550B (zh) * 2019-09-19 2021-04-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
CN112131140B (zh) * 2020-09-24 2023-07-14 北京计算机技术及应用研究所 基于ssd的支持高效存储空间管理的键值分离存储方法
US11500769B2 (en) * 2020-12-21 2022-11-15 Micron Technology, Inc. Valid data identification for garbage collection
US11567666B2 (en) * 2021-03-24 2023-01-31 Ati Technologies Ulc Handling the migration of pages of memory accessible by input-output devices
TWI773371B (zh) * 2021-06-09 2022-08-01 宇瞻科技股份有限公司 固態硬碟
CN113590505A (zh) * 2021-06-30 2021-11-02 深圳大普微电子科技有限公司 地址映射方法、固态硬盘控制器及固态硬盘
EP4250082A1 (en) 2022-03-24 2023-09-27 Samsung Electronics Co., Ltd. System and method for performing data read-write operations in zoned storage devices
CN116756091A (zh) * 2023-08-22 2023-09-15 深圳富联富桂精密工业有限公司 快照管理方法、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021187B2 (en) * 2013-01-29 2015-04-28 Sandisk Technologies Inc. Logical block address remapping
CN103970669A (zh) * 2013-02-06 2014-08-06 Lsi公司 用于加速在固态设备中的回收操作的物理到逻辑地址映射
US9183142B2 (en) * 2013-03-15 2015-11-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing flash memory write amplification and latency
JP2014203405A (ja) 2013-04-09 2014-10-27 富士通株式会社 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム
KR102072829B1 (ko) * 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
JP5967308B2 (ja) * 2013-06-17 2016-08-10 富士通株式会社 情報処理装置、制御回路、制御プログラム、及び制御方法
CN103744798A (zh) * 2013-12-17 2014-04-23 记忆科技(深圳)有限公司 固态硬盘的垃圾回收方法
US20160232088A1 (en) * 2014-07-17 2016-08-11 Sandisk Enterprise Ip Llc Garbage Collection in Storage System with Distributed Processors
KR102330391B1 (ko) 2014-09-11 2021-11-24 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법
CN104407813B (zh) * 2014-11-20 2019-02-19 上海宝存信息科技有限公司 一种基于固态存储介质的raid***及方法
KR20160075229A (ko) * 2014-12-19 2016-06-29 삼성전자주식회사 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
KR20160083762A (ko) * 2015-01-02 2016-07-12 삼성전자주식회사 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템
CN104794070B (zh) 2015-04-23 2017-10-31 南京道熵信息技术有限公司 基于动态非覆盖raid技术的固态闪存写缓存***及方法
US10095423B2 (en) * 2015-09-30 2018-10-09 Toshiba Memory Corporation Storage system that tracks mapping to a memory module to be detached therefrom
CN105549908A (zh) 2015-12-14 2016-05-04 深圳市万拓存储技术有限公司 Raid磁盘阵列重新恢复冗余的方法
TWI609323B (zh) * 2016-01-29 2017-12-21 捷鼎國際股份有限公司 資料儲存方法及其系統
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
CN106095342B (zh) * 2016-06-15 2019-05-14 华中科技大学 一种动态可变长条带的瓦记录磁盘阵列构建方法及***
TWI619018B (zh) * 2016-11-10 2018-03-21 慧榮科技股份有限公司 可用於資料儲存裝置之垃圾蒐集方法
WO2018086075A1 (zh) * 2016-11-11 2018-05-17 华为技术有限公司 一种存储***和***垃圾回收方法
CN107391391B (zh) * 2017-07-19 2019-05-14 深圳大普微电子科技有限公司 在固态硬盘的ftl实现数据拷贝的方法、***及固态硬盘
TWI692690B (zh) * 2017-12-05 2020-05-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置
WO2020007030A1 (zh) * 2018-07-06 2020-01-09 华为技术有限公司 一种***控制器和***垃圾回收方法
TWI703438B (zh) * 2018-09-11 2020-09-01 慧榮科技股份有限公司 映射表更新方法
KR20200055349A (ko) * 2018-11-13 2020-05-21 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20210017912A (ko) * 2019-08-09 2021-02-17 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)

Also Published As

Publication number Publication date
CN110895513A (zh) 2020-03-20
US20200409840A1 (en) 2020-12-31
EP3748509A1 (en) 2020-12-09
EP3748509B1 (en) 2022-10-26
EP3748509A4 (en) 2021-06-23
US11928053B2 (en) 2024-03-12
JP2021509981A (ja) 2021-04-08

Similar Documents

Publication Publication Date Title
JP7315130B2 (ja) システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法
US9996435B2 (en) Reliability scheme using hybrid SSD/HDD replication with log structured management
US20180267856A1 (en) Distributed storage system, data storage method, and software program
WO2016147281A1 (ja) 分散型ストレージシステム及び分散型ストレージシステムの制御方法
TWI533152B (zh) 資料儲存裝置及方法
WO2018189858A1 (ja) ストレージシステム
US11321229B2 (en) System controller and system garbage collection method
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US20200183831A1 (en) Storage system and system garbage collection method
WO2015162758A1 (ja) ストレージシステム
US20190243758A1 (en) Storage control device and storage control method
EP3798852B1 (en) System controller and system garbage recovery method
US10365846B2 (en) Storage controller, system and method using management information indicating data writing to logical blocks for deduplication and shortened logical volume deletion processing
US11210214B2 (en) Storage system and compression method of storing compressed data from storage controller physical address space to logical and physical address space of nonvolatile memory
US20210081137A1 (en) Disk array device, control method for disk array device, and control program for disk array device
JP6817340B2 (ja) 計算機
WO2020052216A1 (zh) 一种***垃圾回收方法和固态硬盘中的垃圾回收方法
US11947799B1 (en) Systems and methods for using the TRIM command with solid state devices
WO2017212515A1 (ja) ストレージシステム、計算機、およびストレージ制御方法
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置
JP5648918B2 (ja) ストレージシステム、ストレージ装置及びスナップショット処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200701

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220105

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220531

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220928

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221108

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221206

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20230110

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20230131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230627

R150 Certificate of patent or registration of utility model

Ref document number: 7315130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150