JP6496227B2 - 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能プログラム - Google Patents

持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能プログラム Download PDF

Info

Publication number
JP6496227B2
JP6496227B2 JP2015191057A JP2015191057A JP6496227B2 JP 6496227 B2 JP6496227 B2 JP 6496227B2 JP 2015191057 A JP2015191057 A JP 2015191057A JP 2015191057 A JP2015191057 A JP 2015191057A JP 6496227 B2 JP6496227 B2 JP 6496227B2
Authority
JP
Japan
Prior art keywords
page
data
pages
bev
control module
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
JP2015191057A
Other languages
English (en)
Other versions
JP2016071893A (ja
Inventor
ハレー・タブリジ
ラジブ・アガーワル
ジェフリー・ポール・フェレイラ
ジェフリー・エス・ボンウィック
マイケル・ダブリュ・シャピロ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
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 EMC Corp filed Critical EMC Corp
Publication of JP2016071893A publication Critical patent/JP2016071893A/ja
Application granted granted Critical
Publication of JP6496227B2 publication Critical patent/JP6496227B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Detection And Correction Of Errors (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Description

背景
記憶システムについての1つの重要な性能測定基準は、記憶システムに記憶されるデータの取り出しに関連するレイテンシーである。記憶システムの性能は、読み取りレイテンシーを低下させることによって向上する。記憶システムについての読み取りレイテンシーは、記憶システムが記憶媒体からエラーのないデータを確実に取り出すことが出来る場合に低下し得る。エラーのないデータが取り出されない場合、記憶システムは、取り出されたデータからエラーを取り除くために、付加的な動作を行ない得る。たとえば、記憶システムは、エラー修正コード(ECC)および/またはRAIDなどのエラー修正機構を使用し、取り出されたデータからエラーを取り除き得る、または他の方法としてエラーのないデータを生成し得る。エラー修正機構を使用すると、読み取りレイテンシーが上昇することとなり、これに対応して性能の低下が起こる。
概要
概して、1つの局面において、本発明は、持続性記憶装置を管理する方法に関し、方法は、事前読み取り要求のためのページを選択するステップを含み、ページは持続性記憶装置内に位置し、方法はさらに、事前読み取り要求をページに対して発するステップと、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値(BEV)を受け取るステップと、ページについてのBEV閾値(T)を取得するステップとを含み、Tは、ページに関連付けられたプログラム/消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、方法はさらに、BEVがTよりも大きいという第1の判定を行なうステップを含み、方法はさらに、第1の判定に基づき、mページを識別するステップを備え、mページはページの集合であり、ページはページの集合内にあり、方法はさらに、mページを将来の動作において割り当て不可能として設定するステップを含む。
概して、1つの局面において、システムは、記憶モジュール制御部と持続性記憶装置とを含む記憶モジュールと、記憶モジュールおよびクライアントに対して動作的に接続される制御モジュールとを含み、制御モジュールは、少なくとも、事前読み取り要求のためのページを選択するステップを行ない、ページは持続性記憶装置内に位置し、制御モジュールはさらに、事前読み取り要求をページに対して発するステップと、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値(BEV)を受け取るステップと、ページについてのBEV閾値(T)を取得するステップとを行ない、Tは、ページに関連付けられたプログラム/消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、制御モジュールはさらに、BEVがTよりも大きいという第1の判定を行なうステップを行ない、制御モジュールはさらに、第1の判定に基づき、mページを識別するステップを行ない、mページはページの集合であり、ページはページの集合内にあり、制御モジュールはさらに、mページを将来の動作において割り当て不可能として設定するステップを行なう。
概して、1つの局面において、本発明は、コンピュータ読み取り可能プログラムコードを含む非一時的コンピュータ読み取り可能媒体に関し、コンピュータ読み取り可能プログラムコードがコンピュータプロセッサによって実行されると、コンピュータプロセッサは、事前読み取り要求のためのページを選択し、ページは持続性記憶装置内に位置し、コンピュータプロセッサはさらに、事前読み取り要求をページに対して発し、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値(BEV)を受け取り、ページについてのBEV閾値(T)を取得し、Tは、ページに関連付けられたプログラム/消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、コンピュータプロセッサはさらに、BEVがTよりも大きいという第1の判定を行ない、コンピュータプロセッサはさらに、第1の決定に基づき、mページを識別し、mページはページの集合であり、ページはページの集合内にあり、コンピュータプロセッサはさらに、mページを将来の動作において割り当て不可能として設定する。
本発明の他の局面は、以下の記載および添付の請求項から明らかとなるであろう。
本発明の1つ以上の実施形態に従うシステムを示す図である。 本発明の1つ以上の実施形態に従うシステムを示す図である。 本発明の1つ以上の実施形態に従うシステムを示す図である。 本発明の1つ以上の実施形態に従う記憶機器を示す図である。 本発明の1つ以上の実施形態に従う記憶モジュールを示す図である。 本発明の1つ以上の実施形態に従う様々な構成部分間の関係を示す図である。 本発明の1つ以上の実施形態に従う事前読み取り要求を処理する方法を示す図である。 本発明の1つ以上の実施形態に従う読み取り要求を処理する方法を示す図である。 本発明の1つ以上の実施形態に従う例を示す図である。 本発明の1つ以上の実施形態に従う例を示す図である。 本発明の1つ以上の実施形態に従う例を示す図である。 本発明の1つ以上の実施形態に従う例を示す図である。
詳細な記載
本発明の具体的な実施形態は、添付の図面を参照してここで詳細に記載される。本発明の実施形態についての以下の詳細な記載においては、本発明についてのより十分な理解を提供するために、多くの具体的な詳細が述べられる。しかしながら、本発明がこれらの具体的な詳細が無くとも実施され得ることは当業者にとって明白である。他の場合において、記載が不必要に複雑化することを避けるべく、周知の特徴については詳細に記載されていない。
図1から図7Dについての以下の記載において、本発明の様々な実施形態で図面に関連して記載される構成部分は、他の図面に関連して記載される1つ以上の同様の名称が付された構成部分と等しいものであり得る。簡潔化のために、これらの構成部分についての記載は各図面に関して繰り返されない。したがって、各図面の構成部分の各々およびすべての実施形態は、引用により援用され、1つ以上の同様の名称が付された構成部品を有するその他すべての図面内において任意で存在するものと仮定される。加えて、本発明の様々な実施形態に従い、図面の構成部分についての記載は、他の図面において対応する同様の名称が付された構成部分に関連して記載される実施形態に加えて、またはそれに関連して、またはそれに代えて実施され得る任意の実施形態として解釈される。
概して、本発明の実施形態は、以前に記憶されたデータが後に要求された時に取り出すことができなくなる可能性の高い固体記憶装置内のページを事前に識別することによって固体記憶装置の利用を向上させることに関する。言い換えると、本発明の実施形態は、将来障害を起こし得るページを事前に識別する。このような障害は、RAID(Redundant Array of Inexpensive Disks)スキームなどのエラー修正機構の実行を誘因する可能性が高い。本発明の実施形態は、事前に読み取られたページ上のデータについてのビットエラー値(BEV)が閾値(T)よりも大きいかどうかに基づいて、障害を起こす可能性の高いページを事前に識別する。ここで、Tは、ページのP/Eサイクル値(p)、および事前に読み取られたページ上のデータの保持時間(t)に依存する。将来に障害を起こす可能性の高いページを事前に識別する能力により、このようなページがデータを記憶することが制限され、結果として、記憶されたデータを読み取るためにエラー修正機構を呼び出す必要性が制限される。RAID(または他のエラー修正機構)が呼び出される可能性が低いことから、システムの性能が向上する(すなわち、読み取り要求を処理する際の読み取りレイテンシーが低下する)。
以下の記載では、本発明の1つ以上の実施形態を実施するための1つ以上のシステムおよび方法が記載される。
図1Aから図1Cは、本発明の1つ以上の実施形態に従うシステムを示す。図1Aを参照すると、システムは、記憶機器(102)に動作的に接続される1つ以上のクライアント(クライアントA(100A)、クライアントM(100M))を含む。
本発明の一実施形態において、クライアント(100A,100M)は、読み取り要求を記憶機器(102)に対して発する機能、および/または書き込み要求を記憶機器(102)に対して発する機能を含む任意の物理システムに対応する。図1Aには示されていないが、クライアント(100A,100M)の各々は、クライアントプロセッサ(図示せず)、クライアントメモリ(図示せず)、ならびに本発明の1つ以上の実施形態を実施するために必要な任意の他のソフトウェアおよび/またはハードウェアを含み得る。
本発明の一実施形態において、クライアント(100A〜100M)は、ファイルシステムを含むオペレーティングシステム(OS)を実行するように構成される。ファイルシステムは、記憶機器(102)に対するファイルの記憶および取り出しのための機構を提供する。より具体的には、ファイルシステムは、読み取り要求および書き込み要求を記憶機器に対して発するために必要な動作を行なう機能を含む。また、ファイルシステムは、ファイルの作成および削除、ファイルの読み取りおよび書き込み、ファイル内のシーク、ディレクトリの作成および削除、ディレクトリ内容の管理などを可能にするプログラミングインターフェイスを提供する。加えて、ファイルシステムはまた、ファイルシステムを作成および削除する管理インターフェイスを提供する。本発明の一実施形態において、ファイルにアクセスするために、オペレーティングシステムは(ファイルシステムを介して)通常、各ファイル内のデータを開く、閉じる、読み取る、および書き込むための、および/または対応するメタデータを操作するためのファイル操作インターフェイスを提供する。
図1Aについての説明を続けると、本発明の一実施形態において、クライアント(100A,100M)は、周辺構成要素相互接続(Peripheral Component Interconnect)(PCI)、PCI−Express(PCIe)、PCI−eXtended(PCI−X)、不揮発性メモリExpress(NVMe)、PCI−Expressファブリックにわたる不揮発性メモリExpress(NVMe)、イーサネットファブリックにわたる不揮発性メモリExpress(NVMe)、およびInfinibandファブリックにわたる不揮発性メモリExpress(NVMe)のうちの1つ以上のプロトコルを使用して記憶機器(102)と通信するように構成される。当業者は、本発明が上記のプロトコルに限定されないことを理解するであろう。
本発明の1つの実施形態において、記憶機器(102)は、揮発性および持続性の記憶装置を含むシステムであり、1つ以上のクライアント(100A,100M)からの読み取り要求および/書き込み要求の処理を行なうように構成される。記憶機器(102)の様々な実施形態は、図2において以下に記載される。
図1Bを参照すると、図1Bは、メッシュ構成で配置される複数の記憶機器(104A,104B,104C,104D)(記憶機器メッシュ(104)として図1Bに示される)にクライアント(100A,100M)が接続されるシステムを示す。図1Bに示されるように、記憶機器メッシュ(104)は、完全接続メッシュ構成で示される。すなわち、記憶機器メッシュ(104)におけるすべての記憶機器(104A,104B,104C,104D)が記憶機器メッシュ(104)におけるすべての他の記憶機器(104A,104B,104C,104D)に直接的に接続される。本発明の一実施形態において、クライアント(100A,100M)の各々は、記憶機器メッシュ(104)における1つ以上の記憶機器(104A,104B,104C,104D)に直接的に接続され得る。当業者は、本発明から逸脱することなく他のメッシュ構成(たとえば、部分的に接続するメッシュ)を使用して記憶機器メッシュが実施され得ることを理解するであろう。
図1Cを参照すると、図1Cは、ファンアウト(fan-out)構成で配置された複数の記憶機器(104A,104B,104C,104D)にクライアント(100A,100M)が接続されるシステムを示す。この構成において、各クライアント(100A,100M)は記憶機器(104A,104B,104C,104D)のうちの1つ以上に接続されるが、個々の記憶機器(104A,104B,104C,104D)間の通信は無い。
図1Aから図1Cは、限られた数のクライアントに接続される記憶機器を示しているが、記憶機器は本発明から逸脱することなく任意の数のクライアントに接続され得ることを当業者は理解するであろう。図1Aから図1Cは様々なシステム構成を示しているが、本発明は上記のシステム構成に限定されないことを当業者は理解するであろう。さらに、本発明から逸脱することなく任意の他の物理的接続を使用してクライアントが(システムの配置に関係なく)記憶機器に接続され得ることを当業者は理解するであろう。
図2は、本発明の1つ以上の実施形態に従う記憶機器の実施形態を示す。記憶機器は、制御モジュール(200)と記憶モジュールグループ(202)とを含む。これらの構成部分の各々は以下に記載される。概して、制御モジュール(200)は、1つ以上のクライアントからの読み取り要求および書き込み要求の処理を管理するように構成される。特に、制御モジュールは、IOM(以下に記載)を介して1つ以上のクライアントから要求を受け取り、要求を処理し(記憶モジュールへ要求を送ることも含み得る)、要求が処理された後のクライアントへの応答を提供するように構成される。加えて、制御モジュール(200)は、事前読み取り要求を生成して発するとともに、様々なガーベジコレクション動作を行なう機能を含む。読み取り要求の処理に対する制御モジュールの動作は、図5および図6を参照して以下に記載される。制御モジュールにおける構成部分についての追加の詳細は以下に含まれる。
図2についての説明を続けると、本発明の一実施形態において、制御モジュール(200)は、入出力モジュール(IOM)(204)と、プロセッサ(208)と、メモリ(210)と、任意のフィールドプログラマブルゲートアレイ(FPGA)(212)とを含む。本発明の一実施形態において、IOM(204)は、クライアント(たとえば、図1Aから図1Cにおける100A、100M)と記憶機器における他の構成部分との間の物理インターフェイスである。IOMは、PCI、PCIe、PCI−X、イーサネット(IEEE802.3a〜802.3bjで規定された様々な規格を含むが、これらに限定されない)、Infiniband、およびコンバージドイーサネット(RoCE)にわたるリモートダイレクトメモリアクセス(RDMA)のプロトコルのうちの1つ以上を支持する。本発明から逸脱することなく上記のプロトコル以外のプロトコルを使用してIOMが実施され得ることを当業者は理解するであろう。
図2について続けると、プロセッサ(208)は、命令を実行するように構成された、シングルコアもしくはマルチコアの電子回路のグループである。本発明の一実施形態において、プロセッサ(208)は、複雑命令セット(CISC)アーキテクチャまたは縮小命令セット(RISC)アーキテクチャを使用して実施され得る。本発明の1つ以上の実施形態において、プロセッサ(208)は、ルートコンプレックス(PCIeプロトコルによって定義される)を含む。本発明の一実施形態において、制御モジュール(200)がルートコンプレックス(これはプロセッサ(208)に統合され得る)を含む場合、メモリ(210)はルートコンプレックスを介してプロセッサ(208)に接続される。代替的に、メモリ(210)は、他の二地点間接続機構を使用してプロセッサ(208)に直接的に接続される。本発明の一実施形態において、メモリ(210)は、動的ランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAM、およびDDR SDRAMを含むがこれらに限定されない任意の揮発性メモリに対応する。
本発明の一実施形態において、プロセッサ(208)は、インメモリデータ構造(図示せず)を作成および更新するように構成され、インメモリデータ構造はメモリ(210)に記憶される。本発明の一実施形態において、インメモリデータ構造は、図4に記載される情報を含む。
本発明の一実施形態において、プロセッサは、様々なタイプの処理をFPGA(212)に任せるように構成される。本発明の一実施形態において、FPGA(212)は、記憶モジュールに書き込まれたデータおよび/または記憶モジュールから読み出されたデータについてのチェックサムを計算する機能を含む。さらに、FPGA(212)は、RAIDスキーム(たとえば、RAID2〜RAID6)を使用し、記憶モジュールにデータを記憶する目的でPおよび/またはQパリティ情報を計算する機能、および/またはRAIDスキーム(たとえば、RAID2〜RAID6)を使用し、記憶された破損データを回復するのに必要な様々な計算を行なう機能を含み得る。本発明の一実施形態において、記憶モジュールグループ(202)は、各々がデータを記憶するように構成された1つ以上の記憶モジュール(214A,214N)を含む。記憶モジュールの一実施形態は、図3において以下に記載される。
図3は、本発明の1つ以上の実施形態に従う記憶モジュールを示す。記憶モジュール(300)は、記憶モジュール制御部(302)と、メモリ(図示せず)と、1つ以上の固体メモリモジュール(304A,304N)とを含む。これらの構成部分の各々は、以下に記載される。
本発明の一実施形態において、記憶モジュール制御部(300)は、1つ以上の制御モジュールに対するデータの読み取りおよび/または書き込みの要求を受け取るように構成される。さらに、記憶モジュール制御部(300)は、メモリ(図示せず)および/または固体メモリモジュール(304A,304N)を使用して読み取り要求および書き込み要求を処理するように構成される。
本発明の一実施形態において、メモリ(図示せず)は、動的ランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAM、およびDDR SDRAMを含むがこれらに限定されない任意の揮発性メモリに対応する。
本発明の一実施形態において、固体メモリモジュールは、固体メモリを使用して持続性データを記憶するデータ記憶装置に対応する。本発明の一実施形態において、固体メモリは、NANDフラッシュメモリおよびNORフラッシュメモリを含み得るが、これらに限定されない。さらに、NANDフラッシュメモリおよびNORフラッシュメモリは、シングルレベルセル(SLC)、マルチレベルセル(MLC)、またはトリプルレベルセル(TLC)を含み得る。当業者は、本発明の実施形態が記憶クラスメモリに限定されないことを理解するであろう。
図4は、本発明の1つ以上の実施形態に従う、様々な構成部分間の関係を示す。より具体的に、図4は、制御モジュールのメモリに記憶される様々なタイプの情報を示す。さらに、制御モジュールは、制御モジュールのメモリに記憶された情報を更新する機能を含む。以下に記載される情報は、1つ以上のインメモリデータ構造に記憶され得る。さらに、インメモリデータ構造内の以下の情報を体系化するために任意のデータ構造タイプ(たとえば、アレイ、リンクリスト、ハッシュ表など)が使用され得る。但し、データ構造タイプは情報間の関係(以下に記載)を維持する。
メモリは、物理アドレス(402)に対する論理アドレス(400)のマッピングを含む。本発明の一実施形態において、論理アドレス(400)は、クライアント(たとえば、図1Aにおける100A、100M)の視点からデータが常駐しているように見えるアドレスである。言い換えると、論理アドレス(400)は、記憶機器に対して読み取り要求を発する時にクライアント上のファイルシステムによって使用されるアドレスに対応する。
本発明の一実施形態において、論理アドレスは、ハッシュ関数(たとえば、SHA−1,MD−5など)をn組に対して適用することによって生成されるハッシュ値である(またはこれを含む)。ここでn組は<オブジェクトID,オフセットID>である。本発明の一実施形態において、オブジェクトIDはファイルを定義し、オフセットIDはファイルの開始アドレスに対する位置を定義する。本発明の他の実施形態において、n組は<オブジェクトID,オフセットID,発生時間>であり、ここで発生時間はファイル(オブジェクトIDを使用して識別される)が作成された時間に対応する。代替的に、論理アドレスは、論理オブジェクトIDおよび論理バイトアドレス、または論理オブジェクトIDおよび論理アドレスオフセットを含み得る。本発明の他の実施形態において、論理アドレスは、オブジェクトIDおよびオフセットIDを含む。当業者は、複数の論理アドレスが単一の物理アドレスに対してマッピングされ得ること、ならびに論理アドレスの内容および/またはフォーマットが上記の実施形態に限定されないことを理解するであろう。
本発明の一実施形態において、物理アドレス(402)は、図3の固体メモリモジュール(304A,304N)における物理的位置に対応する。本発明の一実施形態において、物理アドレスは、<記憶モジュール,チャネル,チップイネーブル,LUN,面,ブロック,ページ番号,バイト>のn組として定義される。
本発明の一実施形態において、各物理アドレス(402)は、プログラム/消去(P/E)サイクル値(404)に関連付けられる。P/Eサイクル値は、(i)物理アドレスによって定義される物理的位置上で行われたP/Eサイクルの数、または(ii)P/Eサイクル範囲(たとえば、5,000〜9,999P/Eサイクル)を表わし得て、ここで、物理アドレスによって定義される物理的位置上で行われたP/Eサイクルの数は、P/Eサイクル範囲内である。本発明の一実施形態において、P/Eサイクルは、消去ブロックにおける1つ以上のページ(すなわち、消去動作のための最小のアドレス可能単位であり、通常は複数ページの集合である)に対するデータの書き込み、およびそのブロックの消去であり、順番はいずれでもよい。
P/Eサイクル値は、ページごと、ブロックごと、ブロックの集合ごと、および/または任意の他の細分性のレベルで記憶され得る。制御モジュールは、データが固体記憶モジュールに書き込まれた(および/または消去された)時に適切な方法でP/Eサイクル値(402)を更新する機能を含む。
本発明の一実施形態において、すべてのデータ(すなわち、クライアント上のファイルシステムが固体記憶モジュールに書き込むように要求したデータ)(406)は、発生時間(408)に対応付けられる。発生時間(408)は、(i)固体記憶モジュールにおける物理的位置にデータが書き込まれた時間、(ii)固体記憶モジュールに対してデータを書き込む書き込み要求をクライアントが発した時間、または(iii)上記(i)または(ii)における書き込み事象に対応する無単位値(たとえば、シーケンス番号)に対応し得る。
本発明の一実施形態において、インメモリデータ構造は、読み取り要求の一部として、または事前読み取り要求の一部として読み取られた任意のページについての少なくとも1つのビットエラー値(BEV)を含む。BEVは、誤っている取り出されたデータ(すなわち、読み取り要求または事前読み取り要求への応答としてページから読み取られたデータ)におけるビット数を指定する。BEVは、代替的に、誤っている所与のページにおけるビットの割合として表現され得る。所与のページについてのBEVは、エラー修正コード(ECC)を使用して判定され得て、所与のページ上に記憶されたデータについてのECCもページ上に記憶される。言い換えると、ページは、データとデータについてのECCとを含み得る。ページについてのBEVは、記憶モジュール制御部(たとえば、図3、302)によって判定され得る。制御モジュールにおけるメモリ(図2、210)は、所与のページから取得された最後のBEVを記憶し得る、および/または所与のページについての複数のBEVを記憶し得る。
記憶されたBEV値は、図5のステップ512および図6のステップ618における判定の一部として使用され得る。記憶されたBEVの使用に関する追加の詳細は、図5および図6において以下に記載される。
本発明の一実施形態において、インメモリデータ構造は、BEV閾値(416)に対する<保持時間,P/Eサイクル値>のマッピングを含む。本発明の一実施形態において、保持時間は、固体記憶モジュールに対するデータの書き込みの間で経過した時間、および固体記憶モジュールからデータが読み取られる時間に対応する。保持時間は、時間の単位(秒、日、月など)で表わされ得る、または無単位値で表わされ得る(たとえば、発生時間が無単位値で表わされる場合)。本発明の一実施形態において、<保持時間,P/Eサイクル値>におけるP/Eサイクル値は、P/Eサイクル、またはP/Eサイクル範囲として表わされ得る。
本発明の一実施形態において、BEV閾値(416)は、保持時間とP/Eサイクル値との所与の組み合わせについて、時間t+1におけるページの障害を予測する時間tでのBEVを判定するための実験を行なうことによって確かめられる。BEV閾値(416)は、固体メモリモジュールから上手くデータを読み取ることができるように最適化される一方、持続性記憶装置におけるmページは割り当て不可能として不必要にマーキングされることはない。
保持時間およびP/Eサイクル値に基づいてBEV閾値を修正することにより、記憶機器は、所与の保持時間およびP/Eサイクル値における所与のページの障害の可能性を変化させ得る様々な変数を考慮に入れる。上記の変数に基づいて時間経過に伴ってどのようにページに障害が起こるかを理解することにより、所与のページが将来障害を起こし得るかを事前に判定するために適切なBEV閾値が使用され得る。
本発明の一実施形態において、所与の<保持時間(t),P/Eサイクル値(p)>についてのBEV閾値(416)は、実験的に以下のように判定され得る。(i)P/Eサイクル値(p)について時間t+1(たとえば、2ヶ月の保持時間)におけるページの集合のBEVを判定する。(ii)RAID(または他のエラー修正機構)の使用を誘因し得るすべてのページを識別する(すなわち、取り出されたデータにおけるエラーを修正するためにECCが使用され得ないすべてのページ)。(iii)P/Eサイクル値(p)(すなわち、(i)で使用されたものと同じP/Eサイクル値)について時間t(たとえば、1ヶ月の保持時間)における(ii)で識別されたすべてのページについてのBEVを判定する。(iv)エラー修正機構起動リミット(たとえば、読み取りのうちの1%のみがt+1でエラー修正機構の使用を誘因する)に時間t+1で到達するまで(ii)において識別されたページの数を減少させることにより、BEV閾値(T(p,t))を識別する。
より具体的には、(iv)において、(ii)で識別されたページが、最も高いBEVを有する(ii)のページから始まり、(ii)において識別されたページの集合から順次取り除かれる。(ii)から取り除かれる各ページについては、取り除かれるページが一部を構成するmページ内の他のページも取り除かれる(たとえば、ページAが(ii)から取り除かれ、mページが4つのページを有する場合、ページAが属するmページの一部である他の3つのページも取り除かれる)。時間tで上述のページが取り除かれる結果、これらのページは時間t+1においてデータを記憶しないこととなり、これらのページはt+1においてエラー修正機構の軌道を誘因することができない。BEV閾値の判定の例は、図7A〜図7Cに記載される。
本発明の一実施形態において、制御モジュール(図2、200)は、上記の情報(図4を参照)を使用し、(i)クライアント読み取り要求の処理、(ii)書き込み要求の処理、(iii)事前読み取り要求の処理、および(iv)ガーベジコレクション動作のうちの1つ以上を行なう。制御モジュールは、以下の要求および/または動作のうちの1つ以上を平行して行ない得る。
本発明の一実施形態において、クライアント読み取り要求がクライアント(たとえば、図1A、100A)によって発せられ、読み取り要求は論理アドレスを含む。読み取り要求に対する応答は、(i)持続性記憶装置から取り出されたデータ、および任意の持続性記憶装置から取り出されたデータについてのBEV、または(ii)データが破損したこと(すなわち、データを持続性記憶装置から取り出すことができないこと、ならびに/または記憶モジュール制御部および/もしくは制御モジュールによって実施されるエラー修正機構を使用してデータを修正もしくは再構築することができないこと)を示す通知である。読み取り要求の処理に関する追加の詳細は、以下の図6に含まれる。
本発明の一実施形態において、事前読み取り要求は制御モジュール(たとえば、図2、200)によって発せられ、事前読み取り要求は物理アドレスを含む。事前読み取り要求に対する応答は、持続性記憶装置から取り出されたデータについてのBEV、および任意の持続性記憶装置から取り出されたデータである。読み取り要求の処理に関する追加の詳細は、以下の図5に含まれる。
本発明の一実施形態において、書き込み要求はクライアント(たとえば、図1A、100A)によって発せられ、書き込み要求は、持続性記憶装置に記憶されるデータまたはデータへの参照を含む。書き込み要求を受け取ると、制御モジュールは、データを持続性記憶装置に記憶するために使用される1つ以上のページを判定する。データを記憶するために選択されたページは、持続性記憶装置における割り当て可能なページの集合から識別され、ここで制御モジュールは割り当て可能なページのリストを保持する。ページは、データが書き込み要求の一部として、またはガーベジコレクション動作(以下に記載)の一部として書き込まれ得る場合には割り当て可能なページ(以下の図5および図6で説明される)とみなされる。
本発明の一実施形態において、ガーベジコレクション動作は、制御モジュールによって実施されるガーベジコレクション処理の一部として行われる。ガーベジコレクション処理の目的は、デッドページ(すなわち、ライブデータ(すなわち、制御モジュールおよび/またはクライアント上で実行される1つ以上のアプリケーションによって使用されるデータ)をもはや含まないページ)を再生することにある。これは、(i)ライブページとデッドページとの組み合わせを含む、持続性記憶装置内のブロックを識別すること、および(ii)ライブページのみを含む持続性記憶装置内の他のブロックにおける1つ以上のページへライブデータを移動させることによって実現され得る。ガーベジコレクション動作の一部として新しいページに再び書き込まれるデータは、割り当て可能なページであるページのみに書き込まれ得る(以下の図5および図6で説明)。
フローチャートを見ると、フローチャートには様々なステップが連続的に示されるとともに記載されるが、当業者は、一部またはすべてのステップが異なる順序で実行されてもよく、結合または省略されてもよく、一部またはすべてのステップが並行して実行されてもよいことを理解するであろう
図5は、本発明の1つ以上の実施形態に係る、記憶機器によってクライアント読み取り要求を処理する方法を示す。
ステップ500において、持続性記憶装置内のページが事前読み取り要求のために選択される。ページは、持続性記憶装置内の任意のライブページ(すなわち、ライブデータを含む任意のページ)であり得る。ライブページのリストは、制御モジュールによって維持/管理され得て、制御モジュール内のメモリに記憶され得る。
ステップ502において、事前読み取り要求が制御モジュールによって記憶モジュールに対して発せられ、ここで記憶モジュールは、ページ(ステップ500において選択された)が位置する固体メモリモジュールを含む記憶モジュールである。読み取り要求のフォーマットは、記憶モジュール制御部によって支持される任意のフォーマットであり得る。事前読み取り要求は、要求がたとえばクライアント読み取り要求に対する事前読み取り要求であることを示すフラグ(または他の内容)とともにページ(ステップ500において選択された)の物理アドレスを含み得る。
ステップ504において、ページ(すなわち、ステップ500において選択されたページ)から読み取られたデータについてのBEVを少なくとも含む応答が記憶モジュールから受け取られる。
ステップ506において、所与の保持時間およびP/Eサイクル値についてBEVがBEV閾値(T(t,p))よりも大きいかどうかについての判定が行われる。本発明の一実施形態において、保持時間(t)は、物理アドレスに記憶されたデータについて判定される。保持時間は、データの発生時間(図4、408を参照)、および事前読み取り要求の時間(たとえば、制御モジュールが事前読み取り要求を発する時間)を使用して判定され得る。データの発生時間は、制御モジュールのメモリ(たとえば、図2、210)から取得される。保持時間は、事前読み取り要求の時間と発生時間との間の差を判定することによって計算され得る。本発明の一実施形態において、P/Eサイクルは、ページの物理アドレスをキーとして使用してインメモリデータ構造(制御モジュールのメモリ内に位置する)において参照を行なうことによって判定され得る。クエリの結果は、物理アドレスに関連付けられた実際のP/Eサイクル値(たとえば、物理アドレスに対応する物理的位置が位置するブロックに関連付けられたP/Eサイクル値)であり得る、またはP/Eサイクル値範囲(たとえば、5,000〜9,999P/Eサイクル)であり得て、ここで物理アドレスに関連付けられた実際のP/Eサイクル値は、P/Eサイクル値範囲内にある。BEV閾値(T(t,p))は、キー<保持時間,P/Eサイクル値>を使用してインメモリデータ構造(図4を参照)から取得される。
所与の保持時間およびP/Eサイクル値について、BEVがBEV閾値(T(t,p))よりも小さい場合、処理が終了する。そうでなければ、処理はステップ508に進む。
ステップ508において、ページ(ステップ500において選択された)を含むmページは、割り当て不可能としてマークされる。より具体的には、ページ(ステップ500において選択された)と同じmページの一部である各ページは、割り当て不可能としてマークされる。ひとたびページが割り当て不可能としてマークされると、そのページは、書き込み動作またはガーベジコレクション動作の一部として将来のライブデータを記憶するために使用されない。本発明の一実施形態において、mページは1つ以上のページである。mページ内のページは、単一のアトミックトランザクションにおいて持続性記憶装置に書き込まれ得る。たとえば、mページは、単一のアトミックトランザクションで持続性記憶装置に書き込まれる4つのページであり得る。mページの単一のページに対するデータの書き込みが失敗すると、トランザクション全体(すなわち、mページを構成する4つのページへのデータの書き込み)が失敗する。
図5についての説明を続けると、ステップ510において、ページ(ステップ500において選択された)内のデータが修正可能であるか(すなわち、記憶モジュール制御部がページのECCのみを使用してデータ中のエラーを修正できるか)についての判定が行なわれる。ページ内のデータがECCで修正できない場合、処理はステップ514へ進む。そうでなければ、処理はステップ512へ進む。
ステップ512において、ガーベジコレクション処理の一部としてRAIDスキームまたは他のエラー修正機構を呼び出してページ(ステップ500において選択された)内の破損データを再構築するかどうかについての判定が行なわれる。RAIDスキームまたは他のエラー修正機構を呼び出して破損データを再構築するかどうかについての判定は、RAIDストライプ内の他のページ(ページはその一部である)の状態に基づき得る。
たとえば、RAIDストライプ内に6つのページがあり(4つのデータページ、1つのPパリティページ、1つのQパリティページ)、1つのページのみが破損している場合、上記のRAIDストライプはRAIDストライプ内の全てのデータを再構築するのに十分な非破損ページを依然として有し得ることから、RAIDスキームまたは他のエラー修正機構を呼び出さない判定が行なわれ得る。言い換えると、上記のRAIDストライプは、RAIDストライプ内に少なくとも4つの非破損ページがある場合にはRAIDストライプ内の全てのデータを再構築することが可能であり得る。ここでRAIDストライプ内には5つの非破損ページがあることから、データを回復する能力に影響を与えることなく、RAIDストライプ内の1つの付加的なページが破損してもよい。しかしながら、上記のRAIDストライプが2つの破損ページ(すなわち、ECCで修正可能でなかったページ)を含む場合、RAIDストライプ内の1つの付加的な破損ページ(すなわち、3つの破損ページ)により、RAIDストライプ内の破損データを再構築する能力が無くなることから、ページ(ステップ500において選択された)上のデータおよび他の破損ページ内のデータを再構築する判定が行なわれる。
本発明の一実施形態において、制御モジュールは、RAIDストライプの構成(すなわち、どのページがRAIDストライプの一部か)、およびRAIDストライプの配置(すなわち、パリティページの数、各パリティページにおけるパリティ値のタイプ(たとえば、Pパリティ値、Qパリティ値など))を追跡する。制御モジュールは、所与のRAIDストライプ内のどのページがECCにより修正可能か、およびECCにより修正不可能かを判定するためにBEV(412)を使用し得る。
当業者は、本発明から逸脱することなく他の方法を使用してRAIDスキームまたは他のエラー修正機構を呼び出すかどうかについて判定し得ることを理解するであろう。
図5についての説明を続けると、ステップ514において、ページ内のデータがECCにより修正可能である場合、ページに対するガーベジコレクションがスケジューリングされる。ページ(またはページが位置するブロック)に対してガーベジコレクションをスケジューリングすることは、ガーベジコレクション動作の一部として処理される次のページとしてページをスケジューリングすることを含み得る(すなわち、ライブデータがページから読み取られ、新しい割り当て可能な持続性記憶装置内のページに書き込まれる(ひとたびECCによって修正される))。
ステップ514について続けると、ページ上のデータがECCによって修正可能でない場合、ページ上のデータはRAIDスキームを使用して再構築されなければならない。より具体的には、ページに対してガーベジコレクションがスケジューリングされる。ページ(またはページが位置するブロック)に対してガーベジコレクションをスケジューリングすることは、ガーベジコレクション動作の一部として処理される次のページとしてページをスケジューリングすることを含み得る(すなわち、ページについてのデータが再構築され、再構築されたデータが新しい割り当て可能な持続性記憶装置内のページに書き込まれる)。ページ上のデータの再構築は、RAIDストライプ内の複数の他のページからデータを読み取り、ページ上のデータを再構築するために制御モジュールによって1つ以上の動作を行なうことを含み得る。そして、処理が終了する。
本発明の一実施形態において、図5に示される処理は、持続性記憶装置内のすべてのライブページに対して周期的に行なわれる。図5に示される処理は、制御モジュール内で実行される低優先度スレッドを使用して実施され得る。
図6は、本発明の1つ以上の実施形態に従う、記憶機器によってクライアント読み取り要求を処理する方法を示す。
ステップ600において、クライアントから制御モジュールによってクライアント読み取り要求が受け取られ、ここでクライアント読み取り要求は論理アドレスを含む。ステップ602において、物理アドレス(ページ番号を含む)が論理アドレスから判定される。上述のように、制御モジュール内のメモリは、物理アドレスに対する論理アドレスのマッピングを含む(図4の説明、400、402を参照)。本発明の一実施形態において、物理アドレスは、ステップ600においてクライアント要求から取得された論理アドレスとともに物理アドレスに対する論理アドレスのマッピングを使用して参照(またはクエリ)を行なうことによって判定される。
ステップ604において、制御モジュール読み取り要求は、物理アドレスを使用して生成される。制御モジュール読み取り要求のフォーマットは、記憶モジュール制御部によって支持される任意のフォーマットであり得る。
ステップ606において、記憶モジュールから応答が受け取られ、応答は、ページ(すなわち、ステップ500において選択されたページ)から読み取られたデータについてのBEV、および(i)ページからのデータまたは(ii)データが破損している(すなわち、ページ上のデータがECCによって修正可能でない)という表示のいずれかを含む。
ステップ608において、ステップ606において受け取られた応答がデータを含むかどうかについての判定が行なわれる。ステップ606において受け取られた応答がデータを含む場合、処理はステップ612に進む。そうでなければ、処理はステップ610に進む。
ステップ610において、ステップ606において受け取られた応答がデータを含まない場合、制御モジュールは、たとえばRAIDスキームまたは他のエラー修正機構を使用したページ上のデータの再構築へ進む。
ステップ612において、データ(または再構築されたデータ)がクライアントへ提供される。ステップ614において、BEVが所与の保持時間およびP/Eサイクル値についてのBEV閾値(T(t,p))よりも大きいかどうかについての判定が行なわれる。本発明の一実施形態において、保持時間(t)は物理アドレスに格納されたデータについて判定される。BEVが所与の保持時間およびP/Eサイクル値についてのBEV閾値(T(t,p))よりも大きい場合、処理は終了する。そうでない場合には、処理はステップ616に進む。
ステップ616において、ページ(ステップ500において選択された)を含むmページは、割り当て不可能としてマークされる。より具体的には、ページ(602で物理アドレスにおいて指定される)と同じmページの一部である各ページは、割り当て不可能としてマークされる。
ステップ618において、データを事前に修正するかどうかについての判定が行なわれる。データがECCによって修正可能である場合、上記のステップ510に従って判定が行なわれ得る。データがECCによって修正可能でない場合、ステップ512に従って事前に修正するかどうかについての判定が行なわれ得る。データを事前に修正すると判定された場合、処理はステップ620に進む。そうでない場合、処理は終了する。ステップ620において、ステップ514における上記の説明に従い、ページに対してガーベジコレクションがスケジューリングされる。
図7A〜図7Dは、本発明の1つ以上の実施形態に従う例を示す。以下の例は、本発明の範囲を限定することを意図していない。
図7A〜図7Cに関し、図7A〜図7Cは、pのP/Eサイクル値を伴う保持時間t−1 についてのBEV閾値を判定するための一実施形態を示し、その目的は、保持時間tにおいて読み取られたデータの1%未満に破損データを修正するためのRAIDの使用を制限することにある。図7Aは、保持時間tにおけるページについてのBEVの分布を示す。本発明の実施形態を実施しない場合、読み取り要求の3.25%が、破損データを再構築するためのRAIDスキームの使用を必要する(すなわち、ページの3.25%が50ビットエラーよりも大きいBEVを有し、これはこの例においてECCを使用して修正され得るビットエラーの最大数である)。
図7Bは、保持時間t−1における同じページについてのBEVの分布を示す。図7Cは、保持時間tにおいて破損したページについての保持時間t−1におけるBEVの分布を示す(すなわち、保持時間tにおいて50よりも大きいBEVを有していたページ)。図7Cに示されるページは、保持時間tにおいて50よりも大きいBEVを有するページの数がページ全体の1%未満となるまで順次取り除かれる(対応するmページの一部である関連ページとともに高いBEVから始まる)。この例において、取り除かれるページの数は、保持時間t−1において43よりも大きいBEVを有するページに対応する。この例において、時間tにおいて取り除かれたページの割合は7.69%である(すなわち持続性記憶装置内のページの7.69%が割り当て不可能である)。
図7Dを参照すると、図7Dは、本発明の1つ以上の実施形態を実施した場合の仮想的な性能の利益を示す。具体的には、pのP/Eサイクル値、および読み取り要求の1%以下でRAIDを呼び出すという条件において、本発明の実施形態は、読み取り要求の1%以下についてRAIDを呼出し、本発明の実施形態を実施しない記憶機器は、保持時間を5にインクリメントした時に読み取り要求の10%以下でRAIDを呼び出す。言い換えると、本発明の実施形態を実施しない記憶機器においては、本発明の1つ以上の実施形態を実施する記憶機器と比較して、RAIDが10倍の頻度で呼び出され、このような記憶機器についての読み取りレイテンシーが高まることとなる。
本発明の1つ以上の実施形態は、システムにおける1つ以上のプロセッサによって実行される命令を使用して実施され得る。さらに、このような命令は、1つ以上の非一時的コンピュータ読み取り可能媒体上に記憶されるコンピュータ読み取り可能命令に対応し得る。
限られた数の実施形態に関して本発明が記載されたが、当業者は、本開示の恩恵を受け、ここに開示される本発明の範囲から逸脱しない他の実施形態を考案することができることを理解するであろう。このため、本発明の範囲は、添付の請求項のみによって限定されるべきである。

Claims (17)

  1. 持続性記憶装置を管理する方法であって、方法は、
    記憶機器内の制御モジュールが、事前読み取り要求のためのページを選択するステップを備え、前記ページは前記持続性記憶装置内に位置し、前記制御モジュールは前記持続性記憶装置に対して動作的に接続され、および前記持続性記憶装置は前記記憶機器内に位置し、前記方法はさらに、
    前記制御モジュールが、前記事前読み取り要求を前記ページに対して発するステップと、
    前記事前読み取り要求に応答し、前記ページ上に記憶されたデータについてのビットエラー値(BEV)を受け取るステップと、
    前記ページについてのBEV閾値(T)を取得するステップとを備え、Tは、前記ページに関連付けられたプログラム/消去サイクル値と前記ページ上に記憶された前記データの保持時間とを使用して判定され、方法はさらに、
    前記BEVがTよりも大きいという第1の判定を行なうステップを備え、
    方法はさらに、前記第1の判定に基づき、
    mページを識別するステップを備え、前記mページはページの集合であり、前記ページは前記ページの集合内にあり、方法はさらに、
    前記mページを将来の動作において割り当て不可能として設定するステップを備え、
    前記保持時間は、前記データが前記ページに書き込まれた第1の時間、および前記事前読み取り要求に関連付けられた第2の時間を使用して判定され
    前記第1の時間は、メモリ内のインメモリデータ構造から取得され、前記メモリは制御モジュール内に置かれる、方法。
  2. 前記ページ上の前記データはエラー修正コードを使用して修正可能であるという第2の判定を行なうステップをさらに備え、方法はさらに、
    前記第2の判定に基づき、
    前記ページ上の前記データが新しい割り当て可能な持続性記憶装置内のページに書き込まれるようにスケジューリングするステップを備える、請求項1に記載の方法。
  3. 前記スケジューリングするステップの後に、
    ガーベジコレクション動作の一部として、前記ページ上の前記データを前記新しい割り当て可能なページに対して書き込むステップをさらに備える、請求項2に記載の方法。
  4. 前記第1の判定を行なった後に、前記ページ上の前記データはエラー修正コードを使用して修正可能でないという第2の判定を行なうステップをさらに備え、方法はさらに、
    前記第2の判定に基づき、RAID修正機構を使用して前記ページ上の前記データを事前に修正する第3の判定を行なうステップを備える、請求項1に記載の方法。
  5. 前記第3の判定では、前記持続性記憶装置内の少なくとも1つの他のページのBEVが考慮され、前記ページおよび前記少なくとも1つの他のページは、RAIDストライプの一部である、請求項4に記載の方法。
  6. 将来の動作は、書き込み動作とガーベジコレクション動作とからなるグループから選択される少なくとも1つを含む、請求項1に記載の方法。
  7. 前記BEVは、前記ページ内の誤ったビットの割合を指定する、請求項1に記載の方法。
  8. 前記BEVは、前記ページ内の誤ったビットの数を指定する、請求項1に記載の方法。
  9. 前記BEVは、エラー修正コードを使用して判定される、請求項1に記載の方法。
  10. 前記ページは、前記持続性記憶装置内の固体メモリモジュール上に位置し、前記固体メモリモジュールはマルチレベルセル(MLC)を含む、請求項1に記載の方法。
  11. 前記プログラム/消去サイクル値は、プログラム/消去値範囲である、請求項1に記載の方法。
  12. システムであって、
    記憶モジュール制御部と持続性記憶装置とを含む記憶モジュールと、
    前記記憶モジュールおよびクライアントに対して動作的に接続される制御モジュールとを備え、
    前記制御モジュールは、
    事前読み取り要求のためのページを選択するステップを行ない、前記ページは前記持続性記憶装置内に位置し、前記制御モジュールはさらに、
    前記事前読み取り要求を前記ページに対して発するステップと、
    前記事前読み取り要求に応答し、前記ページ上に記憶されたデータについてのビットエラー値(BEV)を受け取るステップと、
    前記ページについてのBEV閾値(T)を取得するステップとを行ない、Tは、前記ページに関連付けられたプログラム/消去サイクル値と前記ページ上に記憶された前記データの保持時間とを使用して判定され、前記制御モジュールはさらに、
    前記BEVがTよりも大きいという第1の判定を行なうステップを行ない、前記制御モジュールはさらに、
    前記第1の判定に基づき、
    mページを識別するステップを行ない、前記mページはページの集合であり、前記ページは前記ページの集合内にあり、前記制御モジュールはさらに、
    前記mページを将来の動作において割り当て不可能として設定するステップを行ない、
    前記制御モジュールはメモリを含み、前記メモリは、前記持続性記憶装置内に記憶されたすべてのデータについての発生時間と複数のエントリーとを含むインメモリデータ構造を含み、前記複数のエントリーの各々は、複数のBEV閾値のうちの1つ、複数のP/Eサイクル値のうちの1つ、および複数の保持時間のうちの1つを含み、
    前記BEV閾値を取得するステップは、前記インメモリデータ構造において参照を行なうステップを含み、
    前記ページ上に記憶された前記データについての前記保持時間は、前記ページ上に記憶された前記データについての発生時間を使用して、前記メモリから判定される、システム。
  13. 前記持続性記憶装置はフラッシュメモリを含み、前記ページは前記フラッシュメモリ内に位置する、請求項12に記載のシステム。
  14. 前記制御モジュールはさらに、
    前記ページ上の前記データはエラー修正コードを使用して修正可能であるという第2の判定を行なうステップをさらに行ない、前記制御モジュールはさらに、
    前記第2の判定に基づき、
    前記ページ上の前記データが新しい割り当て可能な持続性記憶装置内のページに書き込まれるようにスケジューリングするステップを行ない、
    前記スケジューリングするステップの後に、ガーベジコレクション動作の一部として、前記ページ上の前記データを前記新しい割り当て可能なページに対して書き込むステップを行なう、請求項12に記載のシステム。
  15. 前記制御モジュールはさらに、
    前記第1の判定を行なった後に、前記ページ上の前記データはエラー修正コードを使用して修正可能でないという第2の判定を行なうステップを行ない、
    前記第2の判定に基づき、RAID修正機構を使用して前記ページ上の前記データを事前に修正する第3の判定を行なうステップを行なう、請求項12に記載のシステム。
  16. 前記第3の判定では、前記持続性記憶装置内の少なくとも1つの他のページのBEVが考慮され、前記ページおよび前記少なくとも1つの他のページは、RAIDストライプの一部である、請求項15に記載のシステム。
  17. コンピュータ読み取り可能プログラムであって、前記コンピュータ読み取り可能プログラムがコンピュータプロセッサによって実行されると、前記コンピュータプロセッサは、
    記憶機器内の制御モジュールによって、事前読み取り要求のためのページを選択し、前記ページは持続性記憶装置内に位置し、前記制御モジュールは前記持続性記憶装置に対して動作的に接続され、および前記持続性記憶装置は前記記憶機器内に位置し、前記コンピュータプロセッサはさらに、
    前記制御モジュールによって、前記事前読み取り要求を前記ページに対して発し、
    前記事前読み取り要求に応答し、前記ページ上に記憶されたデータについてのビットエラー値(BEV)を受け取り、
    前記ページについてのBEV閾値(T)を取得し、Tは、前記ページに関連付けられたプログラム/消去サイクル値と前記ページ上に記憶された前記データの保持時間とを使用して判定され、前記コンピュータプロセッサはさらに、
    前記BEVがTよりも大きいという第1の判定を行ない、
    前記第1の判定に基づき、
    mページを識別し、前記mページはページの集合であり、前記ページは前記ページの集合内にあり、前記コンピュータプロセッサはさらに、
    前記mページを将来の動作において割り当て不可能として設定し、
    前記保持時間は、前記データが前記ページに書き込まれた第1の時間、および前記事前読み取り要求に関連付けられた第2の時間を使用して判定され
    前記第1の時間は、メモリ内のインメモリデータ構造から取得され、前記メモリは制御モジュール内に置かれる、プログラム。
JP2015191057A 2014-09-30 2015-09-29 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能プログラム Active JP6496227B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/501,917 US9690655B2 (en) 2014-09-30 2014-09-30 Method and system for improving flash storage utilization by predicting bad m-pages
US14/501,917 2014-09-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017246493A Division JP6820248B2 (ja) 2014-09-30 2017-12-22 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体

Publications (2)

Publication Number Publication Date
JP2016071893A JP2016071893A (ja) 2016-05-09
JP6496227B2 true JP6496227B2 (ja) 2019-04-03

Family

ID=54291029

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015191057A Active JP6496227B2 (ja) 2014-09-30 2015-09-29 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能プログラム
JP2017246493A Active JP6820248B2 (ja) 2014-09-30 2017-12-22 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017246493A Active JP6820248B2 (ja) 2014-09-30 2017-12-22 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体

Country Status (4)

Country Link
US (2) US9690655B2 (ja)
EP (1) EP3002680A1 (ja)
JP (2) JP6496227B2 (ja)
CN (1) CN105468293B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652345B2 (en) * 2015-09-24 2017-05-16 The Florida International University Board Of Trustees Techniques and systems for local independent failure domains
US10419563B2 (en) * 2016-04-28 2019-09-17 Microsoft Technology Licensing, Llc Persistent notification customization
KR102659829B1 (ko) * 2016-08-24 2024-04-22 삼성전자주식회사 Raid 동작을 제어하는 방법 및 시스템
US10095417B1 (en) 2016-12-13 2018-10-09 EMC IP Holding Company LLC Method and system for improving flash storage read performance in partially programmed blocks
CN108255634B (zh) * 2016-12-28 2020-08-07 华为技术有限公司 一种数据读取方法及装置
US10289550B1 (en) 2016-12-30 2019-05-14 EMC IP Holding Company LLC Method and system for dynamic write-back cache sizing in solid state memory storage
US11069418B1 (en) 2016-12-30 2021-07-20 EMC IP Holding Company LLC Method and system for offline program/erase count estimation
US10338983B2 (en) 2016-12-30 2019-07-02 EMC IP Holding Company LLC Method and system for online program/erase count estimation
CN111897751B (zh) 2017-01-26 2024-10-18 华为技术有限公司 一种数据传输的方法、装置、设备和系统
US10290331B1 (en) * 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for modulating read operations to support error correction in solid state memory
US10403366B1 (en) * 2017-04-28 2019-09-03 EMC IP Holding Company LLC Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
CN107301132A (zh) * 2017-06-09 2017-10-27 华中科技大学 一种闪存垃圾回收优化方法
CN109426622B (zh) * 2017-08-31 2020-11-24 香港理工大学深圳研究院 一种提高闪存固态盘寿命的方法及高寿命闪存固态盘
US10776202B1 (en) * 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10642525B2 (en) * 2017-12-07 2020-05-05 Western Digital Technologies, Inc. Multiple-stage data lifetime management for storage devices
US11086705B2 (en) 2019-03-18 2021-08-10 International Business Machines Corporation Managing the reliability of pages in non-volatile random access memory
KR20220020008A (ko) 2020-08-11 2022-02-18 삼성전자주식회사 비휘발성 메모리를 포함하는 메모리 저장 장치 및 전자 장치
US11461025B2 (en) * 2020-11-05 2022-10-04 Macronix International Co., Ltd. Data retention in memory devices
KR20240059953A (ko) * 2022-10-28 2024-05-08 에스케이하이닉스 주식회사 타임스탬프를 기초로 가비지 컬렉션 또는 웨어 레벨링을 제어하는 스토리지 장치 및 그 동작 방법
CN117391109B (zh) * 2023-03-21 2026-04-10 苏州协同创新智能制造科技有限公司 一种基于risc-v架构的主动标识载体

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
JP4059472B2 (ja) 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
US8321025B2 (en) * 2006-07-31 2012-11-27 Cranial Medical Systems, Inc. Lead and methods for brain monitoring and modulation
US8751726B2 (en) * 2007-12-05 2014-06-10 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
JP4489127B2 (ja) 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP2010079486A (ja) 2008-09-25 2010-04-08 Panasonic Corp 半導体記録装置
US8516343B2 (en) 2008-11-10 2013-08-20 Fusion-Io, Inc. Apparatus, system, and method for retiring storage regions
JP5221332B2 (ja) 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US20100332894A1 (en) 2009-06-30 2010-12-30 Stephen Bowers Bit error threshold and remapping a memory device
US8189379B2 (en) * 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
US8489966B2 (en) 2010-01-08 2013-07-16 Ocz Technology Group Inc. Solid-state mass storage device and method for failure anticipation
US8139379B2 (en) * 2010-02-17 2012-03-20 Fsp Technology Inc. Reverse energy recovery circuit
JP2013542533A (ja) 2010-10-27 2013-11-21 エルエスアイ コーポレーション フラッシュメモリベースのデータ記憶のための順応ecc技術
US9086983B2 (en) 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
CN104011800B (zh) 2011-12-28 2017-03-08 英特尔公司 用于非易失性存储器阵列的存储器单元的循环耐久性延展
US9058281B2 (en) * 2012-06-01 2015-06-16 Seagate Technology Llc Allocating memory usage based on quality metrics
JP2014126989A (ja) * 2012-12-26 2014-07-07 Sony Corp 制御装置、制御方法、及び、プログラム
US9263158B2 (en) * 2013-08-16 2016-02-16 Seagate Technology Llc Determining data retention time in a solid-state non-volatile memory
US9496043B1 (en) * 2015-06-24 2016-11-15 International Business Machines Corporation Dynamically optimizing flash data retention or endurance based on data write frequency

Also Published As

Publication number Publication date
US9690655B2 (en) 2017-06-27
US20160092304A1 (en) 2016-03-31
US10339001B2 (en) 2019-07-02
US20170262336A1 (en) 2017-09-14
CN105468293B (zh) 2019-02-12
EP3002680A1 (en) 2016-04-06
JP6820248B2 (ja) 2021-01-27
JP2018085122A (ja) 2018-05-31
JP2016071893A (ja) 2016-05-09
CN105468293A (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
JP6496227B2 (ja) 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能プログラム
JP6778170B2 (ja) 持続性記憶装置からデータを読み取る方法およびシステム、ならびに非一時的記憶媒体
US9905289B1 (en) Method and system for systematic read retry flow in solid state memory
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
JP2023524014A (ja) 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること
US11893269B2 (en) Apparatus and method for improving read performance in a system
US8601347B1 (en) Flash memory device and storage control method
US10108359B2 (en) Method and system for efficient cache buffering in a system having parity arms to enable hardware acceleration
CN113126907B (zh) 用于存储器装置的异步电力损失恢复
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
JP2018085122A5 (ja)
TW201237624A (en) Two-level system main memory
KR102867694B1 (ko) 메모리 시스템의 동작 방법 및 장치
US10459803B2 (en) Method for management tables recovery
US10861556B2 (en) Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
CN108268339B (zh) 用于在线编程/擦除计数估计的方法和系统
US10445199B2 (en) Bad page management in storage devices
US11487439B1 (en) Utilizing host memory buffers for storage device recoveries
US11966638B2 (en) Dynamic rain for zoned storage systems
US10290331B1 (en) Method and system for modulating read operations to support error correction in solid state memory
US10095417B1 (en) Method and system for improving flash storage read performance in partially programmed blocks
US12039193B2 (en) Apparatus, method and computer program for managing memory page updates within non-volatile memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161025

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190308

R150 Certificate of patent or registration of utility model

Ref document number: 6496227

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250