JP2017204281A - ストレージシステム、装置およびストレージシステムの方法 - Google Patents

ストレージシステム、装置およびストレージシステムの方法 Download PDF

Info

Publication number
JP2017204281A
JP2017204281A JP2017096410A JP2017096410A JP2017204281A JP 2017204281 A JP2017204281 A JP 2017204281A JP 2017096410 A JP2017096410 A JP 2017096410A JP 2017096410 A JP2017096410 A JP 2017096410A JP 2017204281 A JP2017204281 A JP 2017204281A
Authority
JP
Japan
Prior art keywords
block
gcu
blocks
data
controller
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
JP2017096410A
Other languages
English (en)
Other versions
JP7046501B2 (ja
Inventor
ライアン・ジェイ・ゴス
J Goss Ryan
アントワーヌ・クエール
Antoine Khoueir
アラ・パタポウシャン
Patapoutian Ara
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.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
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 Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2017204281A publication Critical patent/JP2017204281A/ja
Application granted granted Critical
Publication of JP7046501B2 publication Critical patent/JP7046501B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】フラッシュメモリのデータリフレッシュを改善するシステム及び方法を提供する。【解決手段】一実施形態において、前記方法は、ストレージシステムの第1ガベージコレクションユニット(GCU)を特定する工程と、第1GCUに関連するパリティ機能を計算する工程と、第1GCU内のN個のブロックの内の第1ブロック内のデータ障害を特定する工程と、第1ブロック内のデータ障害を特定した後に第1GCUから第1ブロックを除去する工程と、第1ブロックがクローンされていなければパリティ機能を再計算する工程とを含む。【選択図】図8

Description

フラッシュメモリのデータリフレッシュの改善
本開示は、フラッシュメモリのデータリフレッシュを改善する方法とシステムを対象とする。いくつかの実施形態において、本システム及び方法は、ガベージコレクションユニット(GCU)におけるブロック内のデータを、サブGCU又はブロック単位の粒度でリフレッシュしてもよい。
フラッシュメモリのデータリフレッシュを改善する記憶デバイスを説明する。一実施形態において、記憶デバイスはストレージシステムの第1ガベージコレクションユニット(GCU)を特定する工程と、第1GCUに関連するパリティ機能を計算する工程と、第1GCU内のN個のブロックの内の第1ブロック内のデータ障害を特定する工程と、第1ブロック内のデータ障害を特定した後に第1GCUから第1ブロックを除去する工程と、第1ブロックがクローンされていなければパリティ機能を再計算する工程とを実行するストレージコントローラを有してもよい。場合によっては、第1GCUは複数のブロックの内のN個のブロックを含んでもよい。
いくつかの実施形態において、ストレージコントローラは、第1ブロックが無効データを含むか否かを判定し、第1ブロックが無効データを含まないと判定されると、第1ブロックを第2ブロックにクローンしてもよい。場合によっては、ストレージコントローラは、第1ブロックが無効データを含んでも、第1ブロックを第2ブロックにクローンしてもよい。場合によっては、第1ブロックにおける有効データに対する無効データの比に基づいて、第1ブロックを第2ブロックにクローンしてもよい。
場合によっては、第2ブロックはストレージドライブにおける複数のブロックのうち利用可能なブロックであってもよく、第1GCU内のN個のブロックと異なっていてもよい。いくつかの実施形態において、ストレージコントローラは第2ブロックを第1GCUに追加してもよい。
第2ブロックを第1GCUブロックに追加した後、ストレージコントローラは第2ブロックが第1ブロックのクローンであることに基づいて、第1GCUのパリティを維持してもよい。例えば、第1GCUに対して計算したパリティは、第2ブロックを第1GCUブロックに追加した後でも、第2ブロックが第1GCUから除去された第1ブロックのクローンであるため、計算されたまま維持されてもよい。場合によっては、第1GCUのパリティはXORパリティに基づいてもよい。
いくつかの実施形態において、ストレージコントローラは第1ブロックを消去して、第1ブロックを別GCUにより利用可能としてもよい。場合によっては、第1ブロックが無効データを含むと判定されると、ストレージコントローラは第1ブロックにおける有効データに対する無効データの比を判定してもよい。第1ブロックにおける有効データに対する無効データの比に基づいて、ストレージコントローラは第1ブロックをクローンせずに第1GCUから第1ブロックを除去してもよい。場合によっては、ストレージコントローラは第1ブロック内の有効データを、複数のブロックの内のM個のブロックを有する第2GCUの内のブロックである第3ブロックにコピーしてもよい。
一実施形態において、ストレージコントローラは第1ブロックをクローンせずに第1GCUから除去したことで、第1GCU内にN−1個のブロックが残ったことに基づき、第1GCUのパリティ機能を再計算してもよい。
フラッシュメモリのデータリフレッシュを改善する装置も説明する。一実施形態において、装置はプロセッサと、プロセッサと電子通信を行うメモリと、メモリに記憶された指示とを有し、プロセッサはメモリ内の指示を実行可能で、それによりストレージシステムの第1ガベージコレクションユニット(GCU)を特定する工程と、第1GCUに関連するパリティ機能を計算する工程と、第1GCU内のN個のブロックの内の第1ブロック内のデータ障害を特定する工程と、第1ブロック内のデータ障害を特定した後に第1GCUから第1ブロックを除去する工程と、第1ブロックがクローンされていなければパリティ機能を再計算する工程とを実行する。場合によっては、第1GCUは複数のブロックの内のN個のブロックを含んでもよい。
フラッシュメモリのデータリフレッシュを改善する方法も説明する。一実施形態において、方法は、ストレージシステムの第1ガベージコレクションユニット(GCU)を特定する工程と、第1GCUに関連するパリティ機能を計算する工程と、第1GCU内のN個のブロックの内の第1ブロック内のデータ障害を特定する工程と、第1ブロック内のデータ障害を特定した後に第1GCUから第1ブロックを除去する工程と、第1ブロックがクローンされていなければパリティ機能を再計算する工程とを含んでもよい場合によっては、第1GCUは複数のブロックの内のN個のブロックを含んでもよい。
上記内容では、以下の詳細な説明が理解しなくなるよう、本開示に関わる例の特徴や技術的効果を或る程度広めに定義した。以下に更なる特徴や効果を説明する。開示される概念や具体例は、本開示と同様の目的を実現するための変形やその他構造の設計を基本として容易に利用可能である。そのような同等な構造は、添付の請求能範囲から逸脱しないものである。本明細書記載の概念の特徴、更にその機構や動作方法、並びにその関連した効果は、図を参照に以下の説明でより良く理解されよう。各図は、図示、説明のみを目的としており、請求の範囲を限定するものではない。
本開示の特性や効果は、以下の図面を参照した説明でより良く理解されよう。添付の図面において、同様な構成要素又は特徴は、同じ参照符号が付される。更に、同種の様々な要素がある場合、第1符号にダッシュや第2符号を付して他と区別してある場合もある。但し、ダッシュや第2符号が付されたものを含む、様々な構成要素について説明される特徴は、その他同様の構成要素にも当てはまる。本明細書においては第1符号しか使用されていない場合、その説明は第2符号に関わらず、同じ第1符号を有する任意の同様の構成要素に当てはまる。
各種実施形態に係わるシステムの例を示すブロック図である。 本開示の様々な態様に係わる、デバイスのブロック図である。 本開示の様々な態様に係わる、1つ以上のモジュールのブロック図である。 本開示の様々な態様に係わる、環境の一実施形態を示す図である。 本開示の様々な態様に係わる、環境の別の実施形態を示す図である。 本開示の様々な態様に係わる、環境の別の実施形態を示す図である。 本開示の様々な態様に係わる、環境の別の実施形態を示す図である。 本開示の様々な態様に係わる、方法の例を示すフローチャートである。 本開示の様々な態様に係わる、方法の例を示すフローチャートである。
以下の説明は概して、フラッシュメモリにおけるデータリフレッシュの改善に関する。ソリッドステートドライブは、当該ドライブに記憶される媒体に対して多様なアクティビティで管理が行われるため、当該ドライブの寿命を通じて、性能の変動が生じ得る。データ再配置は、ガベージコレクション(GC)のようなデータリフレッシュ呼び出しによる読み出しディスターブを軽減するよう、所定のタイミング及び/又は状況で実行されるよう設定されてもよい。それでも、データ再配置により性能の変動が生じ得る。例えば、読み出しディスターブによる高誤り率のような、なんらかの障害が生じている場合、ガベージコレクションユニット(GCU)内のブロックを個別にリフレッシュすることで、性能の変動が最小限に抑えられ得る。
現状、1つのブロックがリフレッシュ対象となっている場合でも、GCU内の全ブロックがリフレッシュされる。したがって、効率が悪く、ドライブの性能変動が激しくなる。一実施形態において、障害の発生したブロックを別ブロックにクローンすることで、対象ブロックのみがリフレッシュされる。GCU内の残りのブロックはそのまま維持されるため、当該GCU内のコンテンツは変化しない。いくつかの実施形態では、障害が発生したブロックをGCUから除去してもよい。外部コードのパリティ(複数可)を変更して、外部コードが除去されるブロックと無関係となるようにしてもよい。除去されるブロックにおける有効データは、別のGCUにおける別ブロックにコピーしてもよく、当該ブロックにおけるあらゆる無効データは、当該別のGCUにおける別ブロックにコピーされない。
図1は、本システム及び方法が実現され得る環境100の一実施形態を示すブロック図である。環境は、装置105と記憶装置110とを有してもよい。記憶装置110は、ハードディスクドライブと、ソリッドステートドライブと、ハードディスク及びソリッドステートドライブの両方を含むハイブリッドドライブとの任意の組合せを含んでもよい。いくつかの実施形態において、本明細書記載のシステム及び方法は、単一の装置(例えば装置105)で実現されてもよい。場合によっては、本明細記載の方法は、複数の記憶装置又は記憶装置のネットワークにより実現されてもよい。装置105の例としては、ストレージサーバ、ストレージエンクロージャ、ストレージコントローラ、分散ストレージシステムにおけるストレージドライブ、クラウドストレージシステムにおけるストレージドライブ、パソナルコンピュータ装置上の記憶装置、サーバ上の記憶装置等が挙げられる。いくつかの構成では、装置105はガベージコレクションモジュール130を含んでもよい。一例として、装置105は記憶装置110に接続されてもよい。いくつかの実施形態において、装置105及び記憶装置110はフラッシュメモリ又はソリッドステートドライブの構成要素であってもよい。或いは、装置105は記憶装置110のホスト(例えば、オペレーティングシステム、ホストハードウェアシステム等)の構成要素であってもよい。
一実施形態において、装置105は1つ以上のプロセッサ、メモリ及び/又は1つ以上の記憶装置を有する計算装置であってもよい。場合によっては、装置105は無線記憶装置を含んでもよい。いくいくつかの実施形態において、装置105は家庭又はオフィス設定のクラウド装置を含んでもよい。一実施形態において、装置105はスイッチ、ルータ、アクセスポイント等のネットワーク装置を含んでもよい。一例として、装置105はデータストリームを受信したり、データを記憶及び/又は処理したり、更に/或いは1つ以上のローカル及び/又は遠隔計算装置に対してデータを受信、送信、又は互いに連動して送信するよう動作してもよい。
装置105はデータベースを含んでもよい。場合によっては、データベースは装置105に内蔵されてもよい。例えば、記憶装置110はデータベースを含んでもよい。更に、又は或いは、データベースは有線及び/又は無線データベースに対する接続を有してもよい。更に、本明細書で詳述するように、装置105のプロセッサ上で、ソフトウェア及び/又はファームウェア(例えばメモリに記憶されている)が実行されてもよい。プロセッサ上で実行される当該ソフトウェア及び/又はファームウェアは、本明細書記載の動作に関連した信号を、装置105に監視、処理、要約、提示、及び/又は送信させるように動作してもよい。
いくつかの実施形態において、記憶装置110は1つ以上のネットワークを介して装置105に接続されてもよい。ネットワークの例としては、クラウドネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、バーチャルプライベートネットワーク(VPN)、パーソナルエリアネットワーク、近距離無線通信(NFC)、電気通信ネットワーク、無線ネットワーク(例えば、802.11使用)、及び/又はセルラネットワーク(例えば、3G及び/又はLTE使用)等が挙げられる。構成によっては、ネットワークはインターネット及び/又はイントラネットを含んでもよい。装置105は、無線通信リンクを介して、ネットワーク上で信号を受信及び/又は送信してもよい。いくつかの実施形態において、ユーザはローカル計算装置、遠隔計算装置、及び/又はネットワーク装置を介して、装置105の機能にアクセスしてもよい。例えば、いくつかの実施形態において、装置105はユーザに対するインタフェースとなるアプリケ−ションを有してもよい。場合によっては、装置105はネットワーク装置、遠隔計算装置、及び/又はローカル計算装置の1つ以上の機能に対するインタフェースとなるアプリケ−ションを有してもよい。
一実施形態において、装置110は記憶装置105に内蔵されてもよい。一例として、装置105は、記憶装置110の記憶媒体に対するインタフェースとなるストレージコントローラを有してもよい。ガベージコレクションモジュール130は、GCUの単一のブロックに関連する読み出しディスターブ又は高誤り率のような障害を隔離するよう構成されてもよい。ガベージコレクションモジュール130は、当該GCUの単一のブロックのデータをリフレッシュし、GCUのその他ブロックにリフレッシュデータをバイパスしてもよい。
図2は、本開示の様々な態様に対応する、電子通信に使用される装置205のブロック図200である。装置205は、図1を参照して説明したデバイス105の1つ以上の態様の一例であってもよい。装置205は、ドライブコントローラ210、ドライブバッファ215、ホストインタフェースロジック220、ドライブメディア225、ガベージコレクションモジュール130−aを有してもよい。これら構成要素は、互いに及び/又はその他構成要素と直接的及び/又は間接的に通信してもよい。
装置205の構成要素の1つ以上は、個別に又はまとめて、ハードウェアにおける利用可能な機能の一部又は全部を実行するように構成される、1つ以上の特定用途向け集積回路(ASIC)により実現されてもよい。或いは、1つ以上の集積回路上の、その他1つ以上の処理ユニット(又はコア)により機能が実行されてもよい。別の例では、本技術分野で公知のプログラミングが施されてもよい、その他の種類の集積回路を利用してもよい(例えば、ストラクチャード/プラットフォームASIC、フィールドプログラマブルゲートアレイ(FPGA)、及びその他セミカスタムIC)。各モジュールの機能は、一部又は全部、1つ以上の汎用及び/又は特定用途向けプロセッサにより実行されるようにフォーマット化されたメモリ内の指示により、実現されてもよい。
一実施形態において、ドライブコントローラ210はプロセッサ230、バッファマネージャ235、メディアコントローラ240を有してもよい。ドライブコントローラ210は、プロセッサ230を介して、装置205と装置205のホスト(例えばオペレーティングシステム、ホストハードウェアシステム等)とのインタフェースであるホストインタフェースロジック220と連動して、リード、ライトリクエストを処理してもよい。ドライブバッファ215は、装置205の内部動作用のデータを一時的に保持してもよい。例えば、ホストは、ドライブメディア225にデータを記憶するリクエストと共に、データを装置205に送信してもよい。ドライバコントローラ210は、リクエストを処理して、受信したデータをドライブメディア225に保存してもよい。場合によっては、ドライブメディア225に記憶したデータの一部を、ドライブバッファ215にコピーし、プロセッサ230がこのデータのコピーを処理、変更したり、更に/或いはドライブバッファ215に一時的に保持されたこのデータのコピーに関連した動作を実行したりしてもよい。
ガベージコレクションモジュール130−aはドライブコントローラ210外に図示されているが、いくつかの実施形態において、ドライブコントローラ210及び/又は装置205のその他構成要素の内のソフトウェア、ファームウェア及び/又はハードウェアを含んでもよい。例えば、ガベージコレクションモジュール130−aは、プロセッサ230、バッファマネージャ235、及び/又はメディアコントローラ240の少なくとも一部を含んでもよい。一例として、ガベージコレクションモジュール130−aは、プロセッサ230、バッファマネージャ235、及び/又はメディアコントローラ240により実行される1つ以上の指示を含んでもよい。
図示のとおり、ドライブメディア225は第1GCU250、第2GCU260のように2つ以上のGCUを有してもよい。図示のとおり、第1GCU250内の第1ブロック255−1から第Nブロック255−nや、第2GCU260内の第1ブロック265−1から第Mブロック265−mのように、各GCUは複数のブロックを有してもよい。各ブロックは、それぞれ複数のメモリセルを含むいくつかのページを有してもよい。いくつかの実施形態において、GCUはストレージドライブの1つ以上のダイからのブロックの論理的集合であってもよい。したがって、同一のブロックからのみ連続的に選択されたダイを含んでもよいし、いくつかの実施形態において、GCUのブロックは、任意の順序のブロックを含んでもよい。例えば、6つのブロックを有するGCUは、単一のダイからのブロック1、ブロック20、ブロック31、ブロック55、ブロック78を含んでもよい。場合によっては、GCUは、2つ以上のダイからのブロックを有しもよい。したがって、GCUは、第1ダイからのブロック3、第2ダイからのブロック27等を有してもよい。
いくつかの実施形態において、ガベージコレクションモジュール130は、1つ以上の機能を、ストレージコントローラ及び/又はストレージドライブにおいて複数のブロックに分割された複数のメモリセルと連動して実行してもよい。例えば、ストレージドライブは、いくつかのメモリセルから分割された複数のページや、ページから分割された複数のブロックや、ブロックから分割されたいくつかのガベージコレクションユニット(GCU)を含んでもよい。一例として、1ページにおよそ65,536個のメモリセルを含んでもよく、1ブロックにおよそ256ページを含んで、ブロック毎に総計16,777,216個のメモリセルとなってもよく、1GCUはおよそ64個のブロックを含んでもよい。後述のように、GCU内のブロックの数はGCU毎に異なっていてもよい。例えば、あるGCUが初期設定として64個のブロックを含むように構成された場合、あるGCUが64個のブロックを含み、別のGCUが63個のブロックを含み、更に別のGCUが60個のブロックを有し、更にまた別のGCUが70個のブロックを含む等の構成であってもよい。
一実施形態において、第1GCU250のブロック及び/又は第2GCU260のブロックに対して、パリティ(複数可)を計算してもよい。いくつかの実施形態において第1GCU250及び/又は第2GCU260の1つ以上のブロックは、パリティブロックとして構成されてもよい。場合によっては、ガベージコレクションモジュール130−aは、第1GCU250及び/又は第2GCU260の単一のブロックをリフレッシュするように構成されてもよい。例えば、いくつかの実施形態において、ガベージコレクションモジュール130−aは第1ブロック255−1に関連した障害を特定してもよい。したがって、ガベージコレクションモジュール130−aは、第1ブロック255−1のコンテンツを、第1GCU250外の別ブロックにコピーしてもよい。場合によっては、ガベージコレクションモジュール130−aは、第1ブロック255−1のコンテンツを、別ブロックにクローンして、第1ブロック255−1の完全なコピーを別ブロックに作成してもよい。この場合、ガベージコレクションモジュール130−aは第1GCU250から第1ブロック255−1を除去し、第1ブロック255−1を第1ブロック255−1のコピーである別ブロックで置き換えてもよい。したがって、パリティが計算された場合と同様に第1GCU250のデータ構造が維持されるため、ガベージコレクションモジュール130−aは第1GCU250のパリティを維持できる。
或いは、いくつかの実施形態において、ガベージコレクションモジュール130−aは第1ブロック255−1の有効、無効データを特定し、有効データのみを第1GCU250外の別ブロックにコピーしてもよい。この場合、ガベージコレクションモジュール130−aは、第1ブロック255−1を除去し、第1ブロック255−1の有効データがコピーされた別ブロックは、別GCUにおいて第1GCU250から切り離された状態に維持されてもよい。この場合、第1ブロック255−1がクローンと置き換えられていないため、ガベージコレクションモジュール130−aは第1GCU250のパリティを再計算してもよい。
図3は、ガベージコレクションモジュール130−bのブロック図300を示す。ガベージコレクションモジュール130−bは1つ以上のプロセッサと、メモリと、及び/又は1つ以上の記憶デバイスとを有してもよい。ガベージコレクションモジュール130−bは制御モジュール305と、計算モジュール310と、データモジュール315とを有してもよい。ガベージコレクションモジュール130−bは、図1及び/又は2のガベージコレクションモジュール130の一例であってもよい。これら各構成要素は互いに通信してもよい。
一実施形態において、制御モジュール305はストレージシステムの第1GCUを特定するように構成されてもよい。場合によっては、第1GCUはストレージドライブの複数のブロックの内のN個のブロックを含んでもよい。いくつかの実施形態において、計算モジュール310は1つ以上のGCUに関するパリティ機能を計算するように構成されてもよい。一例として、計算モジュール310は第1GCUのパリティ機能を計算してもよい。場合によっては、第1GCUにおけるブロックは、データブロックの1つ以上のストライプとして構成されてもよい。いくつかの実施形態において、計算モジュール310はGCUに関する複数のパリティ機能を計算してもよい。場合によっては、計算モジュール310は、あるGCUのストライプ毎に複数のパリティでパリティ機能を計算してもよい。したがって、計算モジュール310は第1GCUにおけるブロックに基づいて1つ以上のパリティブロックを計算してもよい。場合によっては、計算モジュール310は第1GCUの排他的論理和(XOR)パリティ機能を計算してもよい。例えば、計算モジュール310は、ビット単位XOR機能を利用してデータ列(即ち、第1GCUのブロックに含まれるデータ)からパリティ値を計算してもよい。いくつかの実施形態において、計算モジュール310はリード・ソロモンパリティ機能を計算してもよい。
いくつかの実施形態において、データモジュール315は第1ブロックのデータ障害を特定するように構成されてもよい。第1ブロックは、第1GCUにおけるN個のブロックの内の任意のものであってもよい。したがって、第1ブロックは文字どおりGCU内の最初のブロックであってもよいし、最後のブロックでもよいし、その間の任意のブロックであってもよい。場合によっては、障害はストレージドライブの監視性能に基づいて特定されてもよい。場合によっては、所定のスケジュールで監視を実施してもよい。いくつかの実施形態において、GCUにおけるブロック上の動作に関連した高誤り率(例えば、読み出しディスターブによる)の検出に基づいてもよい。
第1ブロックでデータ障害を特定した後、いくつかの実施形態において、制御モジュール305は第1GCUから第1ブロックを除去するように構成されてもよい。いくつかの実施形態において、計算モジュール310は、第1ブロックがクローンされていない場合に、パリティ機能を再計算するように構成されてもよい。例えば、計算モジュール310は、第1GCUにおけるN個のブロックに基づいて、第1GCUのパリティを計算してもよい。第1ブロックが第1GCU外の別ブロックにクローンされた場合、第1ブロックが第1GCUから除去され、第1ブロックがクローンされた別ブロックが第1GCUに追加され、したがって元の計算されたパリティの第1GCUにおける機能的有効性が保たれる。第1GCUに追加された別ブロックが、第1GCUから除去された第1ブロックの完全なコピーであるため、第1GCUに含まれるデータのパターンは変わらない。いくつかの実施形態において、第1GCUから第1ブロックを除去する際、データモジュール315は第1ブロックからデータを消去するように構成されてもよい。場合によっては、制御モジュール305は、消去された第1ブロックを別GCUに利用可能としてもよい。
いくつかの実施形態において、データモジュール315は第1ブロックが無効データを含むか否か判定するように構成されてもよい。いくつかの実施形態において、第1ブロックが無効データを含まないと判定された場合、データモジュール315は第1ブロックを第2ブロックにクローンするように構成されてもよい。無効データは、ストレージドライブにおいて有効ではないとされるデータを含み得る。場合によっては、第2ブロックはストレージドライブの複数のブロックの内の利用可能ブロックであってもよい。いくつかの実施形態において、第2ブロックは第1GCUにおけるN個のブロックとは異なっていてもよい。いくつかの実施形態において、第2ブロックは第2GCUのブロックであってもよい。場合によっては、第1GCU内のブロックは、第2GCU内のブロックに対して相互排他的であってもよい。
いくつかの実施形態において、データモジュール315が第1ブロックを第2ブロックにクローンした後、制御モジュール305は第2ブロックを第1GCUに追加してもよい。いくつかの実施形態において、第2ブロックの論理アドレスは更新されてもよい。例えば、論理ブロックアドレス(LBA)のマッピングが更新されてもよい。場合によっては、制御モジュール305は第2ブロックのLBAを、第1GCUに関連付けられるように更新してもよい。例えば、第2ブロックのLBAは、第2GCUに関連付けられてもよい。データモジュール315が第1ブロックを第2ブロックにクローンする際、制御モジュールは第2ブロックのLBAを、第1GCUに関連付けられるように更新してもよい。第2ブロックを第1GCUを追加した後、いくつかの実施形態において、制御モジュール305は第1GCUのパリティを、第2ブロックが第1ブロックのクローンであることに基づいて、計算されたとおりに維持するように構成されてもよい。第2ブロックは第1ブロックのクローンであるため、XORパリティの有効性が保たれる。
いくつかの実施形態において、第1ブロックが無効データを含むと判定されると、計算モジュール310は第1ブロックにおける有効データに対する無効データの比を判定するように構成されてもよい。第1ブロックにおける有効データに対する無効データの比に基づいて、いくつかの実施形態において、制御モジュール305は第1ブロックをクローンせずに第1GCUから第1ブロックを除去するように構成されてもよい。例えば、第1ブロック無効データの割合が、有効データの割合よりも高い場合、制御モジュールは第1ブロックを第1GCUから除去するように構成されてもよい。場合によっては、制御モジュールは有効データに対する状態データの比を含む1つ以上の要素に基づいて、第1ブロックを除去してもよい。例えば、制御モジュール305は、無効データと有効データとを別ブロックにコピーする時間と、有効データのみを別ブロックにコピーする時間との比較に基づいて、第1ブロックを除去するように構成されてもよい。制御モジュール305は、第1ブロックを第1ブロックのクローンで置き換えることなく、有効データのみをコピーし、GCUから第1ブロックを除去することに基づいて、パリティを再計算する時間と計算コストを判定してもよい。場合によっては、制御モジュール305はこれら時間と相対的計算コストを分析し、無効データを含む第1ブロックをクローンするか、第1ブロックの有効データのみをコピーして、クローンせずに第1ブロックを除去するかを判定してもよい。
いくつかの実施形態において、データモジュール315は第1ブロック内の有効データを第3ブロックにコピーするように構成されてもよい。場合によっては、第3ブロックは第3GCUの内のブロックであってもよい。第3GCUは、ストレージドライブ内の複数のブロックの内のM個のブロックを有する第1GCUとは異なっていてもよい。場合によっては、ブロックの数は、第1及び第3GCU間で異なっていてもよい(例えばNがMと等しくなくてもよい)。或いは、場合によっては、ブロックの数は、第1及び第3GCU間で等しくてもよい(例えばNがMと等しくなる)。したがって、場合によっては、第1ブロックの有効データのみを第3ブロックにコピーし、第1ブロック内の無効データのコピーはバイパスされる。
いくつかの実施形態において、第1ブロックをクローンで置き換えることなく第1ブロックを第1GCUから除去すると、第1GCUのブロック数はN−1となり得る。したがって、場合によっては、計算モジュール310は、第1ブロックをクローンで置き換えることなく第1ブロックを第1GCUから除去した結果、第1GCUのブロック数はN−1となったことに基づき、第1GCUのパリティ機能を再計算するように構成されてもよい。したがって、計算モジュール310はまず第1GCU内のN個のブロックに基づいてパリティ機能を計算するように構成されてもよい。計算モジュール310は、クローンと置き換えずに第1GCUからブロックの1つを除去した後、第1GCUに残存するブロック数がN−1個であることに基づいてパリティ機能を再計算するように構成されてもよい。
図4は、様々な例に応じて、フラッシュメモリにおけるデータリフレッシュを改善する環境400を示す。環境400は、いずれも図2の第1GCU250又は第2GCU260の例であり得る第1GCU405及び第2GCU410を含んでもよい。環境400の少なくとも一態様は、図1のデバイス105、図2の装置205、及び/又は図1、2及び/又は3に図示したガベージコレクションモジュール130と共に実現されてもよい。
図示のように、第1GCU405はN個のブロックを含み、第2GCU410はM個のブロックを含んでもよい。いくつかの実施形態において、NはMに等しくてもよく、即ち第1GCU405のブロックの数は第2GCU410と等しくてもよい。或いは、第1GCU405は、第2GCU410よりもブロックの数が多くても少なくてもよい。一実施形態として、環境400ではストレージドライブ上の複数のGCUの内2つのGCUが図示されている。場合によっては、第2GCU410は、第1GCU405のブロックと同じダイからのブロックを含んでもよい。或いは、第2GCU410は、第1GCU405のブロックと異なるダイからのブロックを含んでもよい。いくつかの実施形態において、第1GCU405及び/又は第2GCU410は、ストレージドライブの2つ以上のダイからのブロックを含んでもよい。上述のように、いくつかの実施形態において、パリティは第1GCU405におけるN個のブロック及び/又は第2GCU410におけるM個のブロックに基づいて計算されてもよい。したがって、第1GCU405の1つ以上のブロックは、パリティブロックとして構成され、更に/或いは第2GCU410の1つ以上のブロックはパリティブロックとして構成されてもよい。
図5は、様々な例に応じて、フラッシュメモリにおけるデータリフレッシュを改善する環境500を示す。環境500は、図4の環境400の一例であってもよい。環境500の少なくとも一態様は、図1のデバイス105、図2の装置205、及び/又は図1、2及び/又は3に図示したガベージコレクションモジュール130と共に実現されてもよい。
一実施形態において、障害は第1GCU405の第2ブロック420に関連して特定されてもよい。したがって、第2ブロック420内のデータはレフレッシュされ、第1GCU405から第2ブロック420が除去されてもよい。場合によっては、第2ブロック420からの全てのデータは第2GCU410の第3ブロック445等の別ブロックにコピーされてもよい。したがって、第3ブロック445は第2ブロック420のクローンであってもよい。或いは、第2ブロック420の有効データのみを第2GCU410の第1ブロック435のような別ブロックにコピーし、第1GCU405から第2ブロック420を除去、消去して、当該ブロックを別GCUにより利用可能としてもよい。
図6は、様々な例に応じて、フラッシュメモリにおけるデータリフレッシュを改善する環境600を示す。環境600は、図4の環境400及び/又は図5の環境500の一例であってもよい。環境600の少なくとも一態様は、図1のデバイス105、図2の装置205、及び/又は図1、2及び/又は3に図示したガベージコレクションモジュール130と共に実現されてもよい。
一実施形態において、第2ブロック420は図5を参照に上述したように、第3ブロック445にクローンされてもよい。いくつかの実施形態において、第2ブロック420のコンテンツを第3ブロック445にコピーすることにより、第3ブロック445は第2ブロック420の完全なるコピーとなってもよい。いくつかの実施形態において、第3ブロック445は第2GCU410から第1GCU405に追加されてもよい。したがって、いくつかの実施形態において、第3ブロック445は第2ブロック420のクローンであるため、第1GCU405に対応付けられた、元の計算されたパリティ機能が保たれ得る。
場合によっては、第2ブロック420は消去され、別GCUにより利用可能となってもよい。例えば、一実施形態において、消去された第2ブロック420は第2GCU410に含まれてもよい。或いは、消去された第2ブロック420は不図示の別GCUに含まれてもよい。第3ブロック445を第2GCU410から除去する際、第2GCU410に関連したパリティ機能を、パリティが前回計算された際に第2GCU410に存在していたM個のブロックではなく、第3ブロック445が第2GCU410から除去されて第2GCU410にM−1個のブロックが残ったことに基づいて第2GCU410に関連したパリティ機能が再計算されてもよい。
図7は、様々な例に応じて、フラッシュメモリにおけるデータリフレッシュを改善する環境700を示す。環境700は、図5の環境500及び/又は図6の環境600の一例であってもよい。環境700の少なくとも一態様は、図1のデバイス105、図2の装置205、及び/又は図1、2及び/又は3に図示したガベージコレクションモジュール130と共に実現されてもよい。
場合によっては、第2ブロック420を分析して、第2ブロック420における有効データに対する無効データの比を判定してもよい。第2ブロック420内の無効データ量が所定の閾値を満たす場合、第2ブロック420内の有効データのみを別GCUの別ブロックにコピーしてもよい。例えば、第1GCU405の第2ブロック420の有効データ705は、第2ブロック420から第2GCU410の第1ブロック435へとコピーされてもよい。本実施形態では、第2ブロック420を第1GCU405から除去して、第1GCU405のブロック数をNからN−1にしてもよい。第1GCU405のパリティは、第1GCU405が第2ブロック420を含むN個のブロックを有する時点で予め計算されてもよい。したがって、第1GCU405内のブロック数が1つ減り、第1GCU405のパリティは第1GCU405内に残るN−1個のブロックに基づいて再計算されてもよい。いくつかの実施形態において、第2ブロック420の有効データ705が第2GCU410の第1ブロック435にコピーされたことに基づいて、そして第2ブロック420の有効データ705が第2GCU410の第1ブロック435にコピーされたことに応じて更新された第2GCU410に基づき、第2GCU410のパリティが再計算されてもよい。
図8は、本開示の様々な態様に対応する、フラッシュメモリにおけるデータリフレッシュを改善するための方法800の例を示すフローチャートである。方法800の少なくとも一態様は、図1のデバイス105、図2の装置205、及び/又は図1、2及び/又は3に図示したガベージコレクションモジュール130と共に実現されてもよい。いくつかの例において、バックエンドサーバ、計算装置、及び/又は記憶デバイスは、1つ以上のコード群を実行して、バックエンドサーバ、計算装置、及び/又は記憶デバイスの機能要素を下記の機能の1つ以上を実行するように制御してもよい。更に、又は或いはバックエンドサーバ、計算装置、及び/又は記憶デバイスは、専用ハードウェアにより下記の機能の内の1つ以上を実行してもよい。
方法800は、ブロック805において、ストレージシステムの第1ガベージコレクションユニット(GCU)を特定する工程を含んでもよい。場合によっては、第1GCUは複数のブロックの内のN個のブロックを含んでもよい。方法800は、ブロック810において、第1GCUに関連するパリティ機能を計算する工程を含んでもよい。ブロック815において、方法800は第1ブロックにおけるデータ障害を特定する工程を含んでもよい。場合によっては、第1ブロックは第1GCU内のN個のブロックの内の任意のブロックであってもよい。方法800は、ブロック820において、第1ブロック内のデータ障害を特定した後、第1GCUから第1ブロックを除去する工程を含んでもよい。方法800は、ブロック825において、第1ブロックがクローンされない場合にパリティ機能を再計算する工程を含んでもよい。例えば、第1GCUから第1ブロックが除去されると、第1ブロックのコンテンツを第2ブロックにクローンして、第1ブロックの完全なコピーを第2ブロックに生成してもよい。第2ブロックは、第1GCU内のN個のブロックと異なるブロックであってもよい。この第2ブロックは、第1ブロックを置き換えるものであってもよく、その場合ブロック801で計算されたパリティは第1GCUに有効である。一方、第1ブロックがクローンで置き換えられずに除去されると、第1ブロックの除去に基づきパリティを再計算してもよい。
図1から3を参照に説明したガベージコレクションモジュール130及び/又は別のモジュールを利用して、ブロック805から825の動作(単数又は複数)が実行されてもよい。したがって、方法800はフラッシュメモリ内のデータリフレッシュの改善に関連するフラッシュメモリ内のデータリフレッシュの改善を実現できる。なお、方法800は単に一形態であり、方法800の動作は順序を変更したり、省略したり、更に/或いはその他変更されてもよく、これによりその他形態が実現可能、想到可能となる。
図9は、本開示の様々な態様に対応する、フラッシュメモリにおけるデータリフレッシュを改善するための方法900の例を示すフローチャートである。方法900の少なくとも一態様は、図1のデバイス105、図2の装置205、及び/又は図1、2及び/又は3に図示したガベージコレクションモジュール130と共に実現されてもよい。いくつかの例において、バックエンドサーバ、計算装置、及び/又は記憶デバイスは、1つ以上のコード群を実行して、バックエンドサーバ、計算装置、及び/又は記憶デバイスの機能要素を下記の機能の1つ以上を実行するように制御してもよい。更に、又は或いはバックエンドサーバ、計算装置、及び/又は記憶デバイスは、専用ハードウェアにより下記の機能の内の1つ以上を実行してもよい。
図8を参照して説明したように、第1GCU内のN個のブロック群に対してパリティを計算してもよい(具体的には方法800のブロック810)。同様に、いくつかの実施形態において、方法900は第1GCU内のN個のブロック群に対してパリティを計算する工程を含んでもよい。方法900は、ブロック905において、第1GCUにおける第1ブロック内の有効データに対する無効データに比を判定する工程を含んでもよい。例えば、第1ブロックは、各有効データに対して無効データを1つ含んでもよい(例えば、50%無効、50%有効)。同様に、場合によっては、第1ブロックは無効データを含まなくてもよい(例えば、100%有効データ)。場合によっては、第1ブロックは無効データが50%超であったり(例えば、60%無効、40%有効)、無効データが50%未満であったりしてもよい(例えば、25%無効、75%有効)。方法900は、ブロック910において、第1ブロックにおける有効データに対する無効データ比が所定の閾値を満たすか否かを判断する工程を含んでもよい。いくつかの実施形態において、無効データが50%超の場合に所定の閾値が満たされるものであってもよい。場合によっては、無効及び有効データのいずれも送る場合の時間と計算コストと、有効データのみを送る場合の時間と計算コストの分析により、有効データのみのコピーが短時間及び/又は低計算コストであることを示す場合に所定の閾値が満たされるものであってもよい。
方法900は、無効データの比が所定の閾値を満たさない場合、ブロック915において、第1ブロックを第2ブロックにクローンする工程を含んでもよい。第2ブロックは、第1GCU内のN個のブロックと異なるブロックであってもよい。方法900は、ブロック920において、第2ブロックを第1GCUに追加する工程を含んでもよい。方法900は、第2ブロックを第1GCUブロックに追加した後、ブロック925において、第2ブロックが第1ブロックのクローンであることに基づいて、第1GCUのパリティを前回計算したものに保つ工程を含んでもよい。
方法900は、無効データの比が所定の閾値を満たさない場合、ブロック930において、第1ブロック内の有効データを第3ブロックにコピーする工程を含んでもよい。第3ブロックは、第1GCU内のN個のブロックと異なるブロックであってもよい。方法900は、ブロック935において、第2ブロックを第1GCUから除去する工程を含んでもよい。したがって、第1ブロックは別ブロックにクローンされず、有効データのみが第3ブロックにコピーされる。第1ブロックを第1GCUから除去すると、第1GCU内にはN−1個のブロックが残る。方法900は、ブロック940において、第1ブロックを第1GCUからクローンと置き換えずに除去したことで、第1GCU内にN−1個のブロックが残ったことに基づき、第1GCUのパリティ機能を再計算する工程を含んでもよい。いくつかの実施形態において、方法900の動作を1つ以上組合せてもよい。例えば、一実施形態において、方法900は、データ(有効及び無効データ)の読み出し中に、パリティ機能を再計算する工程を含んでもよい。
図1から3を参照に説明したガベージコレクションモジュール130及び/又はその他モジュールを利用して、ブロック905から940の動作が実行されてもよい。したがって、方法900はフラッシュメモリ内のデータリフレッシュの改善に関連するフラッシュメモリ内のデータリフレッシュの改善が実現できる。なお、方法900は単に一形態であり、方法900の動作は順序を変更したり、省略したり、更に/或いはその他変更されてもよく、これによりその他形態が実現可能、想到可能となる。
いくつかの例では、方法800及び900の2つ以上の態様を組合せたり、更に/或いは分割してもよい。なお、方法800、900は単に一形態であり、方法800、900の動作は順序を変更したり、更に/或いはその他変更されてもよく、これによりその他形態が実現可能となる。
添付の図面を参照にした上述の詳細な説明では、例が説明されており、実施可能又は請求の範囲内の唯一の状況を表すものではない。本明細書において使用される「例」、「例示的」という用語は、「例、事例、又は図示」を意味し、「その他例によりも好ましい又は有利である」ということではない。詳細な説明は、記載の技術を理解するために供される具体的詳細を含む。但し、これら技術は、これら具体的詳細抜きでも実現できる。状況によっては、記載の例の概念を不明瞭にしないよう、既知の構造や装置がブロック図の形態で示される。
情報や信号は、幅広い異なるテクノロジーや技術に属する、任意のもので表すことができる。例えば、上述の説明全体で使用されるデータ、指示、コマンド、情報、信号、ビット、シンボル、チップは、電圧、電流、電磁波、磁界又は磁性粒子、光学場又は光粒子、又はこの組合せで表すことができる。
本開示に合わせて説明される、様々な図示のブロック及び構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、ASIC、FPGA又はそのプログラム可能論理デバイス、分散型ゲート又はトランジスタ論理、分散型ハードウェア構成要素、又は本明細書の機能を実行するように設計されたこれらの任意の組合せにより実現、実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいし、或るいは従来のプロセッサ、コントローラ、マイクロコントローラ、及び/又はステートマシンであってもよい。プロセッサは計算装置の組合せで実現してもよく、例えば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連動した1つ以上のマイクロプロセッサ、及び/又は同様のその他構造であってもよい。
本明細書で説明された機能は、ハードウェア、プロセッサが実行するソフトウェア、ファームウェア、又はその任意の組合せで実現してもよい。プロセッサで実行されるソフトウェアで実現される場合、機能は1つ以上の指示又はコンピュータ読み取り可能媒体のコードとして記憶又は送信されてもよい。その他の例及び携帯は、本開示及び添付の請求項の範囲及び精神に含まれるものである。例えば、ソフトウェアの性質として、上述の機能がプロセッサで実行されるソフトウェア、ハードウェア、ファームウェア、ハード配線、又はこれらの任意の組合せを利用して実現できる。機能を実現する特徴は、物理的に様々な位置に配置してもよく、機能の分散的にそれぞれ異なる物理的位置で実現されてもよい。
本明細書、更に請求項において、「及び/又は」という用語は、列挙された2つ以上の対象に使用された場合、それぞれ列挙された要素が単独で、或いはその他列挙要素と組合せて利用できることを意味している。例えば、ある構造が要素A、B、及び/又はCを含むと説明されている場合、構造はAのみ、Bのみ、Cのみ、AとBの組合せ、AとCの組合せ、BとCの組合せ、又はAとBとCとの組合せを含むものであってもよい。また、本明細書、更に請求項において、「又は」が列挙された要素(例えば、「少なくとも1つの」や「1つ以上の」という語が付された要素の列挙)が要素を列挙する際に使用されると、離接的な列挙を示し、例えば「A、B、Cの少なくとも1つ」という列挙の場合は、A又はB又はC又はAB又はAC又はBC又はABC(即ちAとBとC)となる。
更に、或る構成要素が、別の構成要素内にある、又は別の構成要素と分離しているとの開示は、あくまで例示的なものとして捉えられるべきである。これは、様々な構造で、同一の機能が実現され得るためである。様々な構造としては、1つ以上の一体的構造及び/又は分散した構造の一部として、要素を全て、大部分及び/又はある程度含むことが挙げられる。
コンピュータ読み取り可能媒体は、コンピュータ記憶媒体、通信媒体の両方を含み、これらはコンピュータプログラムの移動をしやすくする任意の媒体を含む。記憶媒体は、汎用又は専用コンピュータによりアクセス可能な、任意の入手可能な媒体であってもよい。コンピュータ読み取り可能媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD−ROM、DVD又はその他光学ディスクストレージ、磁気ディスクストレージ又はその他磁気記憶デバイス、又は汎用又は専用コンピュータ或いは汎用又は専用プロセッサによりアクセス可能で、指示又はデータ構造の形式の所望のプログラムコードの搬送に使用可能なその他任意の媒体であってもよいが、これはあくまで例示的であり、限定的に介されるべきではない。更に、任意の接続も、適切であればコンピュータ読み取り可能媒体と称される。例えば、ウェブサイト、サーバ、又はその他遠隔送信源から、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、を利用し送信される、或いは赤外線、無線、マイクロ波のような無線技術を経てソフトウェアが送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、そして赤外線、無線、マイクロ波のような無線技術も媒体の定義に含まれる。本明細書で使用されるディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光学ディスク、デジタルバーサタイルディスク(DVD)、フロッピー(登録商標)ディスク、ブルーレイディスクを含み、通常diskという場合は磁気的にデータを再生するもので、discという場合はレーザーで光学的にデータを再生するものを指す。上述の組合せも、コンピュータ読み取り可能媒体の範囲に含まれる。
本開示の上述の説明は、当業者に本開示を利用可能にするものである。当業者にとっては、本開示の様々な変形例が容易に想到可能であり、本開示の包括的な概念は、本開示の範囲を逸脱しない限り、その他の変形例にも適用可能である。したがって、本開示は本明細書記載の例や設計に限定されるものではなく、開示の概念や革新的特徴に沿って可能な限り幅広く解されるべきである。
具体的には、本開示をセキュリティシステム用途に適用できる。具体的には、本開示をストレージシステム用途に適用できる。いくつかの実施形態において、概念、技術的記載、特徴、方法、アイデア、及び/又は説明は、具体的にはストレージ及び/又はデータセキュリティシステム用途に適用され得るものである。これら具体的用途についての当該システム特有の利点は、本開示から明らかである。
本開示で説明された及び/又は図示されたプロセスパラメータ、動作、工程は、あくまで例示的なもので、適宜変更可能である。例えば、図示された及び/又は説明された工程は、特定の順序で図示、説明されていても、当該工程は図示又は説明された順序で必ずしも実行されなくてもよい。本明細書で説明された及び/又は図示された様々な例示的方法は、本明細書で説明された又は図示された1つ以上を省いてもよく、開示のものに加えて、更なる工程が追加されてもよい。
更に、本明細書では、全機能を包含する計算システムについて各種実施形態が説明及び/又は図示されているが、これら例示的実施形態の1つ以上は、様々な形態のプログラム製品として分散されてもよい。実際に分散を担うコンピュータ読み取り可能媒体の特定の種類は問わない。本明細書に開示の実施形態は、特定のタスクを実行するソフトウェアモジュールを利用して実現されてもよい。これらソフトウェアモジュールは、スクリプト、バッチ又はコンピュータ読み取り可能媒体又は計算システムに記憶可能なその他実行可能ファイルを含んでもよい。いくつかの実施形態において、これらソフトウェアモジュールは、本明細書に開示された例示的実施形態の1つ以上を実行するよう、計算システムに指示及び/又は許可してもよい。
説明のためのこの記載は、特定の実施形態を参照に記載されている。但し、上述の例示的記載は、排他的であったり、又は本システム及び方法を記載の特定の形態に限定するような意図があったりはしない。上記教示について、多様な変形、変更が可能である。実施形態は、本システム及び方法、そしてその実際の用途の原理を説明するために選択、記載されており、これにより他当業者が本システム、装置、方法、各種実施形態とその変形例を想定される特定の用途に合わせて利用できるようにするものである。

Claims (20)

  1. ストレージシステムであって、
    複数のブロックに分割される複数のメモリセルと、
    ストレージコントローラとを有し、該ストレージコントローラは、
    ストレージシステムの、前記複数のブロックの内のN個のブロックを含む、第1ガベージコレクションユニット(GCU)を特定し、
    前記第1GCUに関連するパリティ機能を計算し、
    前記第1GCU内の前記N個のブロックの内の第1ブロックのデータ障害を特定し、
    前記第1ブロックの前記データ障害を特定した後、前記第1GCUから前記第1ブロックを除去し、
    前記第1ブロックがクローンされていない場合、前記パリティ機能を再計算する、ストレージシステム。
  2. 前記ストレージコントローラは、
    前記第1ブロックが無効データを含むか否かを判定する、請求項1に記載のストレージシステム。
  3. 前記ストレージコントローラは、
    前記第1ブロックが無効データを含まないと判定された場合、前記第1ブロックを第2ブロックにクローンする、請求項2に記載のストレージシステム。
  4. 前記第2ブロックは前記複数のブロックの内の利用可能なブロックで、前記第1GCU内の前記N個のブロックと異なっている、請求項3に記載のストレージシステム。
  5. 前記ストレージコントローラは、
    前記第2ブロックを前記第1GCUに追加する、請求項3に記載のストレージシステム。
  6. 前記ストレージコントローラは、
    前記第2ブロックを前記第1GCUブロックに追加した後、前記第2ブロックが前記第1ブロックのクローンであることに基づいて、XORパリティを含む前記第1GCUのパリティを維持する、請求項5に記載のストレージシステム。
  7. 前記ストレージコントローラは、
    前記第1ブロックを消去し、
    前記第1ブロックを別GCUに利用可能にする、請求項1に記載のストレージシステム。
  8. 前記ストレージコントローラは、
    前記第1ブロックが無効データを含むと判定すると、前記第1ブロックにおける有効データに対する無効データの比を判定する、請求項2に記載のストレージシステム。
  9. 前記ストレージコントローラは、
    前記第1ブロックにおける有効データに対する無効データの比に基づいて、前記第1ブロックをクローンせずに前記第1GCUから前記第1ブロックを除去し、
    前記第1ブロック内の前記有効データを、前記複数のブロックの内のM個のブロックを有する第2GCUのブロックである第3ブロックにコピーする、請求項8に記載のストレージシステム。
  10. 前記ストレージコントローラは、
    前記第1ブロックをクローンせずに前記第1GCUから除去したことで、前記第1GCU内にN−1個のブロックが残ったことに基づき、前記第1GCUの前記パリティ機能を再計算する、請求項9に記載のストレージシステム。
  11. 装置であって、
    データセンター又はデータクラウド環境内に組み込まれるよう構成されるストレージドライブと、
    コントローラとを有し、コントローラは
    前記ストレージシステムの、前記複数のブロックの内のN個のブロックを含む、第1ガベージコレクションユニット(GCU)を特定し、
    前記第1GCUに関連するパリティ機能を計算し、
    前記第1GCU内の前記N個のブロックの内の第1ブロックのデータ障害を特定し、
    前記第1ブロックの前記データ障害を特定した後、前記第1GCUから前記第1ブロックを除去する、装置。
  12. 前記コントローラは、
    前記第1ブロックが無効データを含むか否かを判定する、請求項11に記載の装置。
  13. 前記コントローラは、
    前記第1ブロックが無効データを含まないと判定すると、前記第1ブロックを第2ブロックにクローンする、請求項12に記載の装置。
  14. 前記第2ブロックは前記複数のブロックの内の利用可能なブロックで、前記第1GCU内の前記N個のブロックと異なっている、請求項11に記載の装置。
  15. 前記コントローラは、
    前記第2ブロックを前記第1GCUに追加する、請求項13に記載の装置。
  16. 前記コントローラは、
    前記第2ブロックを前記第1GCUブロックに追加した後、前記第2ブロックが前記第1ブロックのクローンであることに基づいて、XORパリティを含む前記第1GCUのパリティを維持する、請求項15に記載の装置。
  17. 前記コントローラは、
    前記第1ブロックを消去し、
    前記第1ブロックを別GCUに利用可能にする、請求項11に記載の装置。
  18. 前記コントローラは、
    前記第1ブロックが無効データを含むと判定すると、前記第1ブロックにおける有効データに対する無効データの比を判定する、請求項12に記載の装置。
  19. ストレージシステムの方法であって、
    前記ストレージシステムの、前記複数のブロックの内のN個のブロックを含む、第1ガベージコレクションユニット(GCU)を特定する工程と、
    前記第1GCUに関連するパリティ機能を計算する工程と、
    前記第1GCU内の前記N個のブロックの内の第1ブロックのデータ障害を特定する工程と、
    前記第1ブロックの前記データ障害を特定した後、前記第1GCUから前記第1ブロックを除去する工程と、を含む方法。
  20. 前記第1ブロックが無効データを含むか否かを判定する工程、
    を更に含む、請求項19に記載の方法。
JP2017096410A 2016-05-13 2017-05-15 ストレージシステム、装置およびストレージシステムの方法 Active JP7046501B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/154,786 US10254969B2 (en) 2016-05-13 2016-05-13 Data refresh in flash memory
US15/154,786 2016-05-13

Publications (2)

Publication Number Publication Date
JP2017204281A true JP2017204281A (ja) 2017-11-16
JP7046501B2 JP7046501B2 (ja) 2022-04-04

Family

ID=60297470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017096410A Active JP7046501B2 (ja) 2016-05-13 2017-05-15 ストレージシステム、装置およびストレージシステムの方法

Country Status (4)

Country Link
US (1) US10254969B2 (ja)
JP (1) JP7046501B2 (ja)
KR (1) KR102364368B1 (ja)
CN (1) CN107391297B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190035445A1 (en) * 2017-07-31 2019-01-31 CNEX Labs, Inc. a Delaware Corporation Method and Apparatus for Providing Low Latency Solid State Memory Access
CN108415853A (zh) * 2018-03-15 2018-08-17 深圳市江波龙电子有限公司 一种垃圾回收的方法、装置及存储设备
US11138069B2 (en) 2018-06-11 2021-10-05 Seagate Technology, Llc Providing additional parity for non-standard sized parity data sets
US10896002B2 (en) 2018-06-29 2021-01-19 Seagate Technology Llc Reverse directory structure in a garbage collection unit (GCU)
JP7321851B2 (ja) 2019-09-09 2023-08-07 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US11210002B2 (en) * 2020-01-29 2021-12-28 Samsung Electronics Co., Ltd. Offloaded device-driven erasure coding
US20230280926A1 (en) * 2022-03-03 2023-09-07 Western Digital Technologies, Inc. Data Relocation With Protection For Open Relocation Destination Blocks

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08286844A (ja) * 1995-04-13 1996-11-01 Hitachi Ltd パリティ生成制御方法およびディスク制御装置
JP2010182420A (ja) * 2010-05-28 2010-08-19 Toshiba Corp 半導体記憶装置および半導体記憶装置の制御方法
US20100313101A1 (en) * 2009-06-03 2010-12-09 Kabushiki Kaisha Toshiba Memory system and computer system
WO2016067328A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426611B1 (en) * 2003-08-18 2008-09-16 Symantec Operating Corporation Method and system for improved storage system performance using cloning of cached data
US8397014B2 (en) * 2008-02-04 2013-03-12 Apple Inc. Memory mapping restore and garbage collection operations
US8417904B2 (en) * 2010-03-17 2013-04-09 Seagate Technology Llc Garbage collection management in a data storage device
TWI447739B (zh) * 2010-03-22 2014-08-01 Phison Electronics Corp 錯誤校正方法、記憶體控制器與儲存系統
CN102237128A (zh) * 2010-04-22 2011-11-09 复旦大学 一种刷新操作方法以及基于该刷新操作方法的psram
US8898373B1 (en) 2011-06-29 2014-11-25 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
JP2015525419A (ja) * 2012-06-18 2015-09-03 アクテフィオ,インク. 高度データ管理仮想化システム
WO2014047159A1 (en) * 2012-09-21 2014-03-27 Violin Memory Inc. Write cache sorting
TWI629683B (zh) * 2013-03-14 2018-07-11 美商橫杆股份有限公司 具有覆寫能力及低寫入放大的非揮發性記憶體
US9898404B2 (en) 2013-07-14 2018-02-20 Cnex Labs Method and apparatus for providing improved garbage collection process in solid state drive
US9378830B2 (en) * 2013-07-16 2016-06-28 Seagate Technology Llc Partial reprogramming of solid-state non-volatile memory cells
CN104298605A (zh) 2013-07-17 2015-01-21 光宝科技股份有限公司 固态储存装置中用于垃圾搜集动作的区块分组方法
KR20150058927A (ko) * 2013-11-21 2015-05-29 삼성전자주식회사 불 휘발성 메모리의 쓰기 속도를 제어하는 기술

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08286844A (ja) * 1995-04-13 1996-11-01 Hitachi Ltd パリティ生成制御方法およびディスク制御装置
US20100313101A1 (en) * 2009-06-03 2010-12-09 Kabushiki Kaisha Toshiba Memory system and computer system
JP2010282369A (ja) * 2009-06-03 2010-12-16 Toshiba Corp メモリシステム
JP2010182420A (ja) * 2010-05-28 2010-08-19 Toshiba Corp 半導体記憶装置および半導体記憶装置の制御方法
WO2016067328A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス

Also Published As

Publication number Publication date
KR102364368B1 (ko) 2022-02-16
CN107391297A (zh) 2017-11-24
JP7046501B2 (ja) 2022-04-04
US20170329532A1 (en) 2017-11-16
KR20170128150A (ko) 2017-11-22
US10254969B2 (en) 2019-04-09
CN107391297B (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
JP2017204281A (ja) ストレージシステム、装置およびストレージシステムの方法
US9128855B1 (en) Flash cache partitioning
US11138160B2 (en) Application performance using multidimensional predictive algorithm for automated tiering mechanisms
JP6568212B2 (ja) 重複排除システムのハッシュ・ベース・マルチテナンシ
US20190129795A1 (en) Method, device and computer readable medium for managing a storage system
JP6476932B2 (ja) ストレージ装置,制御プログラム,ストレージシステム及びデータ転送方法
US9405625B2 (en) Optimizing and enhancing performance for parity based storage
CN110618895B (zh) 一种基于纠删码的数据更新方法、装置和存储介质
US9389950B2 (en) Techniques for information protection in a solid-state device based storage pool
US9390122B2 (en) Tree comparison to manage progressive data store switchover with assured performance
US11074146B2 (en) Method, device and computer program product for managing redundant arrays of independent drives
JP7292785B2 (ja) ストレージ・システムにおけるホールを有するトラックのデステージ
JP2020514879A (ja) 特定のエンティティタイプにかかわらず接続されたエンティティセットにわたって情報を伝播するためのシステム及び方法
US10613986B2 (en) Adjustment of the number of tasks for a cache storage scan and destage application based on the type of elements to be destaged from the cache storage
US20210255965A1 (en) Integration of application indicated maximum time to cache for a two-tiered cache management mechanism
US11347418B2 (en) Method, device and computer program product for data processing
US9665308B2 (en) Optimization of the copying of change recorded data by using spare flash capacity
US11861175B2 (en) Latency in data storage systems
US11314649B2 (en) Using a machine learning module to perform destages of tracks with holes in a storage system
US10554749B2 (en) Clientless software defined grid
US20230214300A1 (en) Method, device and computer program product for storage management
US20170185305A1 (en) Optimization of disk sector duplication in a heterogeneous cloud systems environment
US10469580B2 (en) Clientless software defined grid

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220225

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: 20220301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220323

R150 Certificate of patent or registration of utility model

Ref document number: 7046501

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150