JP6855102B2 - 不揮発性メモリ・システムにおけるマルチページ障害の回復 - Google Patents

不揮発性メモリ・システムにおけるマルチページ障害の回復 Download PDF

Info

Publication number
JP6855102B2
JP6855102B2 JP2018527935A JP2018527935A JP6855102B2 JP 6855102 B2 JP6855102 B2 JP 6855102B2 JP 2018527935 A JP2018527935 A JP 2018527935A JP 2018527935 A JP2018527935 A JP 2018527935A JP 6855102 B2 JP6855102 B2 JP 6855102B2
Authority
JP
Japan
Prior art keywords
data
controller
target page
stripe
page
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
JP2018527935A
Other languages
English (en)
Other versions
JP2019502987A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019502987A publication Critical patent/JP2019502987A/ja
Application granted granted Critical
Publication of JP6855102B2 publication Critical patent/JP6855102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • 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
    • 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/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、データ処理およびストレージに関し、より具体的には、マルチページ障害時のデータ回復を支援するための、フラッシュ・メモリ・システムなどの不揮発性メモリ・システムの管理に関する。
NAND型フラッシュ・メモリは、トランジスタのフローティング・ゲートまたは同様の電荷トラップ構造上の電荷としてメモリ・セル当たり1ビット以上のデータを格納する電気的にプログラマブルで消去可能な不揮発性メモリ技術である。典型的な実装例では、NAND型フラッシュ・メモリ・アレイは、物理メモリのブロック(「消去ブロック」とも称される)であって、それらの各々が、同様に多数のメモリ・セルを各々が含む複数の物理ページを含む、物理メモリのブロック内で組織化される。メモリ・セルにアクセスするために利用されるワード線およびビット線の配置によって、フラッシュ・メモリ・アレイは、概して、ページ単位でプログラムすることができるが、ブロック単位で消去される。
当技術分野で既知のように、NAND型フラッシュ・メモリのブロックは、新しいデータでプログラムされる前に消去されなければならない。NAND型フラッシュ・メモリ・セルのブロックは、高い正の消去電圧パルスを選択されたブロックのpウェル・バルク領域に印加すること、および消去されるメモリ・セルのワード線のすべてを接地にバイアスすることによって消去される。消去パルスの印加は、接地にバイアスされたメモリ・セルのフローティング・ゲートからの電子のトンネリングを促進して、メモリ・セルに正味正電荷を付与し、それにしたがって、メモリ・セルの電圧閾値を消去状態へと遷移させる。各消去パルスの後は、概ね、消去動作が成功したか否かを、例えば、消去ブロック内の閾値数未満のメモリ・セルが消去に失敗したことを検証することによって決定するために消去ブロックを読み取る消去検証動作が続く。概ね、消去パルスは、消去検証動作が成功するまで、または所定の数の消去パルスが使用されるまで(すなわち、消去パルスのバジェットが使い果たされるまで)、消去ブロックに印加され続ける。
NAND型フラッシュ・メモリ・セルは、高い正のプログラム電圧をプログラムされるメモリ・セルのワード線に印加すること、および中間パス電圧をプログラミングが禁止された同じストリング内のメモリ・セルに印加することによってプログラムすることができる。プログラム電圧の印加は、電子をフローティング・ゲートにトンネリングさせ、その状態を初期消去状態から正味負電荷を有するプログラムされた状態に変化させる。プログラミングに続いて、プログラムされたページは、通常、プログラム動作が成功したことを、例えば、プログラムされたページ内の閾値数未満のメモリ・セルがビット・エラーを含むことを検証することによって保証するように、読み取り検証動作内で読み取られる。概ね、プログラムおよび読み取り検証動作は、読み取り検証動作が成功するまで、または所定の数のプログラミング・パルスが使用されるまで(すなわち、プログラム・パルスのバジェットが使い果たされるまで)ページに適用される。
すべてのフラッシュ・ストレージ媒体を用いるエンタープライズ級のデータ・ストレージ・システムは、多くの場合、フラッシュ・カードまたはソリッド・ステート・ディスク(SSD:solid state disk)内のデータを、ページ・ストライプであって、それらの中で異なるチャネル/レーンからのフラッシュ・メモリの物理ページが一緒にグループ化されて、データ冗長性を追加するか、もしくは書き込み要求の並列処理を最適化するか、またはその両方が行われる、ページ・ストライプに組織化する。例えば、ページ・ストライプは、共通のページ・インデックスを有する物理ページからメモリ・ブロックのセットにわたって形成されてもよい。ページ・ストライプを形成するデータの整合性は、パリティ・ページをページ・ストライプに付加することによって改善され、それにしたがって、RAID5/6と同様のパリティ・スキームを実装することができる。
少なくともいくつかの事例では、選択されたRAIDパリティ・スキームがエラーなどを訂正することができないため、マルチページ障害が同じページ・ストライプ内で発生すると、フラッシュ・カードに障害が発生する。例えば、RAID5では、単一ページの障害を訂正することができるが、同じページ・ストライプの2つ以上のページ内のエラーを訂正することはできない。一方、RAID6では、二重ページ(double page)の障害を訂正することができるが、同じページ・ストライプの3つ以上のページ内のエラーを訂正することはできない。障害が発生したフラッシュ・カードに対する典型的な応答は、フラッシュ・カードのコンテンツ全体を再構築することである。フラッシュ・カードの再構築は、フラッシュ・カードのコンテンツの回復中にデータ・ストレージ・システムの性能を限定するだけでなく、フラッシュ・アレイが、回復不能なデータ損失を招く可能性がある、再構築処理中の別のフラッシュ・カードの障害に遭遇するというさらなる致命的なリスクにさらされる。
少なくとも1つの実施形態では、データ・ストレージ・システムにおけるマルチページ・エラーから回復するための改善された技術が提供される。
一態様では、データ・ストレージ・システムは、コントローラと、複数の物理ページを各々が含む複数のブロックを有する不揮発性メモリ・アレイとを含む。一方法によると、コントローラは、論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT:logical−to−physical translation)データ構造を維持し、書き込みデータを複数の物理ブロック上にストライプする第1のデータ保護スキームを実装する。データを対象ページ・ストライプから要求する読み取り要求に応答して、コントローラは対象ページ・ストライプの複数の物理ページ内のエラーを検出する。第1のデータ保護スキームによって訂正することができない、対象ページ・ストライプの複数の物理ページ内のエラーを検出することに応答して、コントローラは、LPTデータ構造をスキャンして、対象ページ・ストライプにマッピングされた論理アドレスのセットを識別し、第2のデータ保護スキームを実装する上位コントローラによって対象ページ・ストライプの回復をトリガし、回復をトリガすることは論理アドレスのセットを上位コントローラに送信することを含む。この方法の一利点は、回復性能が、読み取り障害が発生したフラッシュ・カード全体を再構築する必要がある従来技術の解決策に比べて大幅に改善されることである。
開示される技術はまた、コントローラを含むデータ・ストレージ・システムとして実現することができる。コントローラは、複数の物理ページを各々が含む複数のブロックを含む不揮発性メモリ・アレイ、および不揮発性メモリ・アレイにおいて論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT)データ構造を含むメモリに連結されるように構成されている。コントローラは、書き込みデータを複数の物理ブロック上にストライプして、複数のページ・ストライプを形成する第1のデータ保護スキームを実装するように構成されている。コントローラはまた、データを複数のページ・ストライプのうちの対象ページ・ストライプから要求する読み取り要求に応答して、対象ページ・ストライプの複数の物理ページ内のエラーを検出し、第1のデータ保護スキームによって訂正することができない、対象ページ・ストライプの複数の物理ページ内のエラーの検出に応答して、LPTデータ構造をスキャンして、対象ページ・ストライプにマッピングされた論理アドレスのセットを識別し、第2のデータ保護スキームを実装する上位コントローラによって対象ページ・ストライプの回復をトリガし、回復をトリガすることは、コントローラが論理アドレスのセットを上位コントローラに送信することを含むように構成されている。このデータ・ストレージ・システムの一利点は、回復性能が、読み取り障害が発生したフラッシュ・カード全体を再構築する必要がある従来技術の解決策に比べて大幅に改善されることである。
開示される技術はまた、プログラムとして実現することができる。プログラムは、コントローラに、不揮発性メモリ・アレイにおいて論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT)データ構造を維持することと、書き込みデータを複数の物理ブロック上にストライプして、複数のページ・ストライプを形成する第1のデータ保護スキームを実装することとを遂行させる。プログラムは、コントローラに、データを複数のページ・ストライプのうちの対象ページ・ストライプから要求する読み取り要求に応答して、対象ページ・ストライプの複数の物理ページ内のエラーを検出することと、第1のデータ保護スキームによって訂正することができない、対象ページ・ストライプの複数の物理ページ内のエラーの検出に応答して、LPTデータ構造をスキャンして、対象ページ・ストライプにマッピングされた論理アドレスのセットを識別することと、第2のデータ保護スキームを実装する上位コントローラによって対象ページ・ストライプの回復をトリガすることであって、論理アドレスのセットを上位コントローラに送信することを含む、回復をトリガすることとをさらにさせる。このプログラムの一利点は、回復性能が、読み取り障害が発生したフラッシュ・カード全体を再構築する必要がある従来技術の解決策に比べて大幅に改善されることである。
少なくとも1つの実施形態では、コントローラは、上位コントローラが対象ページ・ストライプの再構築を完了したか否かを決定し、上位コントローラが対象ページ・ストライプの再構築を完了したということを決定することに応答して、対象ページ・ストライプおよび複数の他のページ・ストライプを含むブロック・ストライプのコンテンツを不揮発性メモリ・アレイ内に再配置する。ブロック・ストライプを再配置することによって、ブロック・ストライプ内の別の障害の可能性を低減することができ、再構築によって無効化されたページを再生利用することができる。
少なくとも1つの実施形態では、第1のデータ保護スキームおよび第2のデータ保護スキームは、独立ディスクの冗長アレイ(RAID:redundant array of independent disk)データ保護スキーム(複数可)に基づいていても、またはそれらと同様であってもよいパリティベースのデータ保護スキームを含む。したがって、周知のデータ保護スキームを用いて、開示される技術を実装することができる。
少なくとも1つの実施形態では、コントローラは、読み取り要求がホスト読み取り要求であることに応答して、論理アドレスのセットを上位コントローラに送信することを控える。この事例では、対象ページ・ストライプの再構築に関連付けられた準備作業(したがって遅延)を低減することができる。
本発明の実施形態を、添付の図面を参照して、単なる例としてここで説明する。
一実施形態によるデータ処理環境の高位ブロック図である。 図1のデータ・ストレージ・システムの例示的な一インターフェース・ノードのより詳細なブロック図である。 図1のデータ・ストレージ・システムのフラッシュ・カードのより詳細なブロック図である。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な一配置を説明する。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な一配置を説明する。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な一配置を説明する。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な一配置を説明する。 図8Aは本開示によるブロック・ストライプの例示的な一実装例を示す。図8Bは本開示によるページ・ストライプの例示的な一実装例を示す。 本開示による各データ・ページ内に格納された例示的な一コードワードを説明する。 本開示による各データ保護ページ内に格納された例示的な一コードワードを示す。 一実施形態によるフラッシュ・メモリを管理するために用いられたフラッシュ管理機能およびデータ構造の高位フロー図である。 一実施形態による例示的な一ブロック・ストライプを示す。 一実施形態による、図11のLPTテーブルがページ・ストライプ内に格納された論理ページの論理ブロック・アドレス(LBA:logical block address)を物理ブロック・アドレス(PBA:physical block address)にどのようにマッピングするかの一例を説明する。 データ・ストレージ・システムにおけるマルチページ・エラーから回復するための例示的な一処理の高位論理フローチャートを示す。
図面を参照し、特に図1を参照すると、本明細書においてさらに説明される不揮発性メモリ・アレイを有するデータ・ストレージ・システム120を含む例示的な一データ処理環境100の高位ブロック図が説明されている。示されるように、データ処理環境100は、命令およびデータを処理する1つ以上のプロセッサ104を有するプロセッサ・システム102などの1つ以上のホストを含む。プロセッサ・システム102は、プロセッサ(複数可)104によって遂行された処理のプログラム・コード、オペランド、もしくは実行結果、またはそれらのすべてを格納し得るローカル・ストレージ106(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)またはディスク)をさらに含むことができる。種々の実施形態では、プロセッサ・システム102は、例えば、モバイル・コンピューティング・デバイス(スマートフォンもしくはタブレットなど)、ラップトップもしくはデスクトップ・パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム(IBMより入手可能なPOWER(IBM社の登録商標)シリーズのうちの1つなど)、またはメインフレーム・コンピュータ・システムであってもよい。プロセッサ・システム102はまた、ARM(R)、Power(IBM社の登録商標)、Intel(R)x86、またはメモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、I/Oバス・ハブなどと組み合わせられた任意の他のプロセッサなどの種々のプロセッサを使用する組み込みプロセッサ・システムであってもよい。
各プロセッサ・システム102は、I/Oチャネル110を介してデータ・ストレージ・システム120に直接的に(すなわち、介在するデバイスなしで)または間接的に(すなわち、少なくとも1つの中間デバイスを介して)連結された入出力(I/O:input/output)アダプタ108をさらに含む。種々の実施形態では、I/Oチャネル110は、例えば、ファイバ・チャネル(FC:Fibre Channel)、ファイバ・チャネル・オーバー・イーサネット(R)(FCoE:FC over Ethernet(R))、インターネット・スモール・コンピュータ・システム・インターフェイス(iSCSI:Internet Small Computer System Interface)、インフィニバンド、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP:Transport Control Protocol/IP:Internet Protocol)、周辺機器構成要素相互接続エクスプレス(PCIe:Peripheral Component Interconnect Express)などを含む既知または将来開発される通信プロトコルのいずれか1つまたはそれらの組み合わせを用いることができる。I/Oチャネル110を介して通信されるI/O動作(IOP:I/O operation)は、読み取りIOPであって、それらによってプロセッサ・システム102がデータをデータ・ストレージ・システム120から要求する、読み取りIOPと、書き込みIOPであって、それらによってプロセッサ・システム102がデータ・ストレージ・システム120内のデータのストレージを要求する、書き込みIOPとを含む。
説明される実施形態では、データ・ストレージ・システム120は、複数のインターフェース・ノード122であって、それらを通じてデータ・ストレージ・システム120がI/Oチャネル110を介して入出力動作(IOP)102を受信し、それらに応答する、複数のインターフェース・ノード122を含む。各インターフェース・ノード122は、フォールト・トレラントおよびロード・バランシングを容易にするために、複数の独立ディスクの冗長アレイ(RAID)コントローラ124の各々に連結される。例えば、RAIDコントローラ124は、ネストされたRAID(例えば、RAID50またはRAID60)を含むRAIDの1つ以上のレベルをフラッシュ・カード126にわたって実装することができる。RAIDコントローラ124の各々は、この例では、NAND型フラッシュ・ストレージ媒体を含む複数のフラッシュ・カード126の各々に(例えば、PCIeバスによって)順に連結される。他の実施形態では、他のまたは追加の不可逆的ストレージ媒体を用いることができる。
図2は、図1のデータ・ストレージ・システム120のインターフェース・ノード122のより詳細なブロック図を示す。インターフェース・ノード122は、I/Oチャネル110を介してプロセッサ・システム102へのインターフェースとして機能し、ホスト側スイッチング・ファブリック112に接続する1つ以上のインターフェース・カード111を含む。ホスト側スイッチング・ファブリック112は、スイッチとして作用し、インターフェース・カード111と、インターフェース・ノード122内の処理ユニット、すなわち、コントロール・プレーン汎用プロセッサ(GPP:general purpose processor)113、データ・プレーンGPP116、およびデータ・プレーン・プロセッサ117との間のすべてのデータ転送を処理する。典型的な一実施態様では、ホスト側スイッチング・ファブリック112は、PCIeスイッチを用いて実装することができるが、他のスイッチ技術も同様に使用することができる。データ・プレーン・プロセッサ117は、例えば、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)またはフィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)によって実装することができる専用プロセッサである。コントロール・プレーンGPP113、データ・プレーンGPP116、およびデータ・プレーン・プロセッサ117はすべて、これらの構成要素間の共有メモリ、別個のメモリ、またはそれらの組み合わせとして実装され得るメモリ114に接続される。
データ・プレーン・プロセッサ117がFPGAで実装された実施形態では、コントロール・プレーンGPP113は、データ・ストレージ・システム120の起動中にデータ・プレーン・プロセッサ117をプログラムおよび構成することができる。データ・プレーンGPP116およびコントロール・プレーンGPP113は、データ・プレーン・プロセッサ117、ならびにデータ・プレーン・プロセッサ117のコントロールを介して間接的に、またはディスク側スイッチング・ファブリック119を介して直接的に、のいずれかによるフラッシュ・カード126へのアクセスをコントロールする。コントロール・プレーンGPP113は、システム管理機能、ならびにデータ回復、スナップショット、シン・プロビジョニング、および重複排除などの上位サービスを実行する。データ・プレーンGPP116は、プロトコル固有の機能を実行する。コントロール・プレーンGPP113、データ・プレーンGPP116、およびデータ・プレーン・プロセッサ117は、PCIeスイッチまたは他のスイッチ技術で実装することができるディスク側スイッチング・ファブリック119を通じてRAIDコントローラ124に接続される。図2は、フェイルオーバーをサポートするか、もしくは他のデータ同期機能を遂行するか、またはその両方のために、データ・ストレージ・システム120内の他のインターフェース・ノード122に接続されたコントロール・プレーンGPP113およびデータ・プレーン・プロセッサ117をさらに説明する。
図3は、図1のデータ・ストレージ・システム120のフラッシュ・カード126のより詳細なブロック図を示す。フラッシュ・カード126は、フラッシュ・カード126とRAIDコントローラ124との間のインターフェースとして機能するゲートウェイ130を含む。ゲートウェイ130は、ゲートウェイ130によって受信されたIOPの前処理などの種々の管理機能を遂行するか、もしくはフラッシュ・カード126によるIOPのサービス提供をスケジューリングするか、またはその両方を行うように構成することができる汎用プロセッサ(GPP)132に連結される。GPP132は、その処理の過程でGPP132によって作成、参照、もしくは修正されるか、またはそれらのすべてが行われたデータを都合よくバッファリングすることができるGPPメモリ134(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)または磁気抵抗ランダム・アクセス・メモリ(MRAM:Magneto−resistive Random Access Memory))に連結される。
ゲートウェイ130は、複数のフラッシュ・コントローラ140であって、それらの各々がそれぞれのNAND型フラッシュ・メモリ・システム150をコントロールする、複数のフラッシュ・コントローラ140にさらに接続される。フラッシュ・コントローラ140は、例えば、関連付けられたフラッシュ・コントローラ・メモリ142(例えば、DRAM)を有するASICまたはFPGAによって実装することができる。フラッシュ・コントローラ140がFPGAによって実装された実施形態では、GPP132は、データ・ストレージ・システム120の起動中にフラッシュ・コントローラ140をプログラムおよび構成することができる。起動後、通常動作では、フラッシュ・コントローラ140は、NAND型フラッシュ・メモリ・システム150内に格納されたデータを読み取るか、もしくはNAND型フラッシュ・メモリ・システム150内のデータを格納するか、またはその両方を行うよう要求するゲートウェイ130からの読み取りおよび書き込みIOPを受信する。フラッシュ・コントローラ140は、これらのIOPを、例えば、NAND型フラッシュ・メモリ・システム150にアクセスして、NAND型フラッシュ・メモリ・システム150からもしくはそれらに要求されたデータを読み取るかもしくは書き込むことによって、またはNAND型フラッシュ・メモリ・システム150に関連付けられた1つ以上の読み取りキャッシュ、もしくは書き込みキャッシュ、あるいはその両方(図3には説明せず)にアクセスすることによってサービス提供する。
フラッシュ・コントローラ140は、NAND型フラッシュ・メモリ・システム150内の特定のメモリ位置へのアクセスを可能にするための論理−物理アドレス変換を提供するフラッシュ変換レイヤ(FTL:flash translation layer)を実装する。通常、フラッシュ・コントローラ140によって、プロセッサ・システム102などのホスト・デバイスから受信したIOPは、データがアクセスされた(読み取られたか、または書き込まれた)論理ブロック・アドレス(LBA)を含み、書き込みIOPの場合、書き込みデータは、データ・ストレージ・システム120に書き込まれる。IOPはまた、アクセスされるデータの量(またはサイズ)を指定することができる。他の情報もまた、データ・ストレージ・システム120によってサポートされるプロトコルおよび機能に応じて通信されてもよい。当業者には知られているように、NAND型フラッシュ・メモリ・システム150内で用いられるようなNAND型フラッシュ・メモリは、読み取りまたは書き込みIOPによってアクセスすることができる最小粒のデータが、フラッシュ・メモリの単一の物理ページのサイズ、例えば、16キロバイト(KB:kilobyte)で固定されるように、その構成によって制約される。ホスト・デバイスによって提供されるLBAは、論理アドレス空間内の論理ページに対応し、ページは通常4キロバイトのサイズを有する。したがって、2つ以上の論理ページを物理フラッシュ・ページ内に格納することができる。フラッシュ変換レイヤは、このLBAを、NAND型フラッシュ・メモリ・システム150内の対応する物理位置に割り当てられた物理アドレスに変換する。フラッシュ・コントローラ140は、フラッシュ・コントローラ・メモリ142内に都合よく格納することができる論理−物理変換(LPT)テーブルなどの論理−物理変換データ構造内の論理アドレスと物理アドレスとの間のアドレス変換を遂行するか、もしくはマッピングを格納するか、またはその両方を行うことができる。
NAND型フラッシュ・メモリ・システム150は、種々の実施形態において多くの形態をとることができる。ここで図4〜7を参照すると、例示的な一実施形態によるNAND型フラッシュ・メモリ・システム150内の物理メモリの一例示的配置が示される。
図4に示されるように、NAND型フラッシュ・メモリ・システム150は、32個の個々にアドレス可能なNAND型フラッシュ・メモリ・ストレージ・デバイスから形成することができる。説明される例では、フラッシュ・メモリ・ストレージ・デバイスM0a〜M15bの各々は、セル当たり1ビット以上を格納することができるボード搭載フラッシュ・メモリ・モジュールの形態をとる。したがって、フラッシュ・メモリ・モジュールは、シングル・レベル・セル(SLC:Single Level Cell)、マルチレベル・セル(MLC:Multi−Level Cell)、スリー・レベル・セル(TLC:Three Level Cell)、またはクアッド・レベル・セル(QLC:Quad Level Cell)メモリで実装することができる。32個のNAND型フラッシュ・メモリ・モジュールは、2つ(M0a、M0b)〜(M15a、M15b)の16個のグループに配置される。物理アドレス指定スキームのために、2つのモジュールの各グループは、NAND型フラッシュ・メモリ・システム150が16個のチャネルまたはレーン(レーン0〜レーン15)を含むように、時には「チャネル」と称されることもある「レーン」を形成する。
好ましい一実施形態では、個々のレーンの各々は、それを関連付けられたフラッシュ・コントローラ140に連結するそれぞれの関連付けられたバスを有する。したがって、その通信を特定の通信バスのうちの1つに向けることによって、フラッシュ・コントローラ140は、その通信をメモリ・モジュールのレーンのうちの1つに向けることができる。所与のレーンについての各通信バスが他のレーンについての通信バスとは独立しているため、フラッシュ・コントローラ140は、コマンドを発行し、種々の通信バスを介してデータを同時に送信または受信し、フラッシュ・コントローラ140が同時にまたはほぼ同時に、個々のレーンに対応するフラッシュ・メモリ・モジュールにアクセスすることを可能にすることができる。
ここで図5を参照すると、図4のフラッシュ・メモリ・モジュールM0a〜M15bのいずれかを実装するために利用することができるフラッシュ・メモリ・モジュール300の例示的な一実施形態が説明されている。図5に示されるように、フラッシュ・メモリ・モジュール300によって提供される物理ストレージの位置は、チップ・イネーブル(CE:Chip Enable)を介してアドレス指定することができるか、もしくは識別することができるか、またはその両方を行うことができる物理位置にさらに細分される。図5の例では、各フラッシュ・メモリ・チップ300の物理メモリは、フラッシュ・コントローラ140によってアサートされたそれぞれのCEラインを各々が有する4つのチップ・イネーブル(CE0、CE1、CE2、およびCE3)に分割され、対応するCE内の物理メモリの位置にまたは該位置からアクセスすることができる。各CEは同様に、2つのプレーン(例えば、プレーン0およびプレーン1)を各々が有する複数のダイ(例えば、ダイ0およびダイ1)に細分される。各プレーンは、フラッシュ・メモリ・チップの物理レイアウトのために、互いに物理的に関連付けられ、読み取りおよび書き込み動作などの種々の動作の性能のための共通の回路(例えば、I/Oバッファ)を利用する(以下に説明される)ブロックの集まりを表す。
図6および7にさらに示されるように、図5のフラッシュ・メモリ・モジュール300内のプレーンのいずれかを実装するために利用することができる例示的な一プレーン400は、例えば、物理メモリの1024個または2048個のブロックを含む。いくつかのブロックが早期に障害発生する可能性があるため、製造元は多くの場合いくつかの追加のブロックを追加することに留意されたい。通常、ブロック500は、典型的には物理的な様式で互いに関連付けられた物理ページの集まりである。この関連付けは、NAND型フラッシュ・メモリ・システム150内で消去することができる物理ストレージの位置の最小粒度であるとブロックが定義されるようなものである。図7の実施形態では、各ブロック500は、物理ページが読み取りおよび書き込みアクセスのための最小の個々にアドレス可能なデータ・ユニットであると定義される、例えば、256個または512個の物理ページを含む。例示的なシステムでは、データの各物理ページは、データ・ストレージのための共通の容量(例えば、16kB)に加えて、以下でより詳細に記載されるメタデータのための追加のストレージを有する。したがって、データは、ページ単位でNAND型フラッシュ・メモリ・システム150に書き込まれるかまたはそこから読み取られるが、ブロック単位で消去される。
NAND型フラッシュ・メモリ・システム150が実装される場合、またはセルごとに複数のビットをサポートするメモリ技術である場合、各ブロック500の複数の物理ページが同じメモリ・セルのセット内に実装されることが一般的である。例えば、図7に示されるように、ブロック500ごとに512個の物理ページと、メモリ・セルごとに2ビット(すなわち、NAND型フラッシュ・メモリ150がMLCメモリ内に実装されている)と仮定すると、ページ0〜ページ255(下位ページ)は、所与のメモリ・セルのセットの第1のビットを利用して実装することができ、ページ256〜ページ511(上位ページ)は、所与のメモリ・セルのセットの第2のビットを利用して実装することができる。下位ページおよび上位ページの実際の順序は、インターリーブされてもよく、製造元に依存する。
図7にさらに示されるように、各ブロック500は、好ましくは、そのブロック500を含む物理ページのページ使用停止ステータスを使用停止(すなわち、もはやユーザ・データを格納するために使用されない)または使用停止ではない(すなわち、アクティブであるか、またはユーザ・データを格納するためにまだ使用可能)として示すブロック・ステータス情報(BSI:block status information)502を含む。種々の実装形態では、BSI502を、ブロック500内の単一のデータ構造(例えば、ベクトルまたはテーブル)に集めることができるか、もしくはデータ・ストレージ・システム120内の他の場所で維持することができるか、またはその両々が可能である。
データ・ストレージ・システム120によって実装されたフラッシュ変換レイヤは、ホスト・デバイスが利用可能な論理アドレス空間をNAND型フラッシュ・メモリ・システム150内の物理メモリから分離するため、NAND型フラッシュ・メモリ・システム150のサイズは、ホスト・デバイスに提示される論理アドレス空間のサイズに等しくある必要はない。実施形態の多くでは、利用可能な物理メモリの合計未満の(すなわち、オーバープロビジョンのNAND型フラッシュ・メモリ・システム150に対する)論理アドレス空間を提示することが有益である。この様式でオーバープロビジョニングすることにより、論理アドレス空間が完全に利用されたときに、上記のように一定量の無効なデータが存在しても、物理メモリ・リソースが利用可能であることを保証する。まだ再生利用されていない無効なデータに加えて、エラー訂正コード(ECC:Error Correcting Code)、巡回冗長検査(CRC:Cycle Redundancy Check)、およびパリティなどのデータ保護スキームの使用に伴うメモリ障害およびメモリ・オーバーヘッドが存在しても、オーバープロビジョニングされた空間を使用して、十分な論理空間があることを保証することができる。
いくつかの実施形態では、データは一度に1ページずつNAND型フラッシュ・メモリ・システム150に書き込まれる。より強固なエラー回復が望まれる他の実施形態では、データは、本明細書において「ページ・ストライプ」と称されるNAND型フラッシュ・メモリ・システム150の関連付けられた物理ページのグループに書き込まれる。好ましい一実施形態では、高い書き込み帯域幅を達成するように、ページ・ストライプのすべてのページが異なるレーンに関連付けられる。多くの実装例では、最小消去ユニットがブロックであるため、ページ・ストライプを、ブロック・ストライプ内の各ブロックが異なるレーンに関連付けられた、図8Aに示されるようなブロック・ストライプにグループ化することができる。ブロック・ストライプが構築されると、レーンの任意の空きブロックを選択することができるが、好ましくは、同じブロック・ストライプ内のすべてのブロックは、同じまたは同様のヘルス・グレードを有する。ブロックの選択は、同じプレーン、ダイ、もしくはチップ・イネーブル、またはそれらのすべてからのものになるようにさらに制限することができることに留意されたい。ブロック・ストライプの長さは変えることができ、好ましくは、変わるが、NAND型フラッシュ・メモリ・システム150が16個のレーンを含む一実施形態では、各ブロック・ストライプは、2〜16個のブロックを含み、各ブロックは異なるレーンから来る。多様な長さのブロック・ストライプの構成に関するさらなる詳細は、参照によりそれらの全体が本明細書に組み込まれる米国特許第8,176,284号、同第8,176,360号、同第8,443,136号、および同第8,631,273号に見出すことができる。
ブロックが各レーンから選択され、ブロック・ストライプが形成されると、ページ・ストライプが、好ましくは、ブロック・ストライプ内のブロックから同じページ番号(すなわち、物理ページ・インデックス)を有する物理ページから形成される。NAND型フラッシュ・メモリ・システム150に格納された種々のページ・ストライプの長さは変えることができ、好ましくは、変わるが、一実施形態では、各ページ・ストライプは、(通常、ホスト・デバイスによって提供される)書き込みデータの1〜15個のデータ・ページ、および書き込みデータのためのデータ保護情報を格納するために使用される1つの追加ページ「データ保護ページ」)を含む。例えば、図8Bは、N個のデータ・ページ(すなわち、Dページ00〜DページN−1)および1つのデータ保護ページ(すなわち、PページN)を含む例示的な一ページ・ストライプ610を説明する。データ保護ページは、使用停止ではないページを含むページ・ストライプの任意のレーンに配置することができるが、通常、メタデータ情報を最小限に抑えるように、ロック・ストライプのすべてのページ・ストライプに対して同じレーン上にある。説明されるようにデータ保護ページを追加するためには、ガベージ・コレクションを同じブロック・ストライプのすべてのページ・ストライプに対して同時に遂行することが必要である。ブロック・ストライプのガベージ・コレクションが完了した後、ブロック・ストライプを分解することができ、各ブロックを、以下で説明される関連の使用できる状態(RTU:ready−to−use)の待ち行列に配置することができる。
図9は、図8Bのページ・ストライプ610内の各データ・ページ内に格納されたコードワードの例示的な一フォーマットを示す。典型的には、正の整数のコードワード、例えば、2または3が各データ・ページ内に格納されるが、代替的な一実施形態もまた、単一のコードワードをデータ・ページ内に格納することができる。この例では、各コードワード700は、データ・フィールド702、ならびにデータ・ページを説明するメタデータのための追加のフィールドを含む。コードワードのサイズに応じて、データ・フィールド702は、1つ以上の論理ページのためのデータを保持する。別の実施形態では、論理データ・ページの断片を保持することもできる。説明される例では、メタデータ・フィールドは、コードワード700内に格納されたLBAを含むLBAフィールド704、データ・フィールド702およびLBAフィールド704の組み合わせに対して計算されたCRC値を含むCRCフィールド706、ならびに説明される例では、データ・フィールド702、LBAフィールド704、およびCRCフィールド706のコンテンツの組み合わせから計算されたECC値を含むECCフィールド708を含む。データ・フィールド702が論理データ・ページの断片を保持する事例では、LBAフィールド704は、論理データ・ページのどの断片がデータ・フィールド702内に格納されているかの情報をさらに保持する。
図10は、図8のページ・ストライプ610のデータ保護ページ内のコードワードの例示的な一フォーマットを示す。一実施形態では、各データ保護ページは、正の整数のコードワードを格納するが、代替的な一実施形態では、データ保護ページは単一のコードワードを格納することができる。示される例では、データ保護コードワード800は、ページ・ストライプ610内のコードワード700のデータ・フィールド702のコンテンツのビット単位の排他的論理和(XOR:Exclusive OR)を含むデータXORフィールド802を含む。データ保護コードワード800は、ページ・ストライプ610内のコードワード700のLBAフィールド704のビット単位のXORを含むLBA XORフィールド804をさらに含む。データ保護コードワード800は、最終的に、データ保護コードワード800のためのCRC値およびECC値をそれぞれ格納するためのCRCフィールド806およびECCフィールド808を含む。かかる保護スキームは、パリティ・フィールドが必ずしも特定のフラッシュ・プレーン上に位置するとは限らないため、一般にRAID5と称される。しかしながら、リード・ソロモンなどの代替的なデータ保護スキームを代替的にまたは追加的に使用することができることを理解されたい。
上記のデータ・ページおよびデータ保護ページのフォーマットは、複数の異なるデータ保護メカニズムを使用してページ・ストライプ内に格納されたデータを保護する。第1に、データ・ページの各コードワード内のECCビットの使用により、フラッシュ・ページ内のコードワード内のいくつかの数のビット・エラーの訂正が可能になる。使用されるECC方法に応じて、NAND型フラッシュ・ページ内の数百ビットまたは数千ビットさえも訂正することが可能である場合がある。ECC検査および訂正が遂行された後、訂正されたCRCフィールドを使用して、訂正されたデータを検証する。これらの2つのメカニズムを一緒に使用することにより、比較的良質なエラーの訂正、およびローカルのページ内の情報のみを使用したより重大なエラーの検出が可能になる。例えば、データ・ページを格納するために利用された物理ページの障害のために、訂正不可能なエラーがデータ・ページ内に発生した場合、データ・フィールドおよび障害のあるデータ・ページのLBAフィールドのコンテンツは、他のデータ・ページおよびページ・ストライプのための1つ以上のデータ保護ページから再構築することができる。データをデータ・ストライプのレベルで再構築する能力に障害がある場合、データは、以下でさらに説明されるように、上位コントローラ(例えば、コントロール・プレーンGPP113またはRAIDコントローラ124)によって再構築することができる。
ページ・ストライプのデータ・ページおよびデータ保護ページが格納された物理メモリの位置は、NAND型フラッシュ・メモリ・システム150内で変わるが、一実施形態では、所与のページ・ストライプを含むデータ・ページおよびデータ保護ページは、好ましくは、データ・ストレージ・システム120の全体的な動作を最適化するように選択された物理メモリの位置に格納される。例えば、いくつかの実施形態では、ページ・ストライプを含むデータ・ページおよびデータ保護ページは、異なる物理レーンを利用して、データ・ページおよびデータ保護ページの各々を格納するように格納される。かかる実施形態は、フラッシュ・コントローラ140が、ページ・ストライプを含むデータのすべてのページに同時にまたはほぼ同時にアクセスすることができるため、ページ・ストライプへの効率的なアクセスをサポートする。レーンへのページの割り当ては、連続的である必要はなく(すなわち、データ・ページは任意のレーンに任意の順序で格納することができる)、ページ・ストライプが完全な長さのページ・ストライプ(例えば、15個のデータ・ページおよび1つのデータ保護ページを含む)でない限り、ページ・ストライプを格納するために利用されるレーンは隣接する必要はないことに留意されたい。
データ・ストレージ・システム120の例示的な一実施形態の全般的な物理構造および動作を説明してきたが、データ・ストレージ・システム120のある特定の動作態様を、一実施形態によるGPP132もしくはフラッシュ・コントローラ140またはその両方によって用いられるフラッシュ管理機能およびデータ構造の高位フロー図である図11を参照してここで説明する。
上述されるように、データ・ストレージ・システム120は、概して、外部デバイスが、NAND型フラッシュ・メモリ・システム150内の物理メモリの位置に直接アドレス指定するか、もしくはアクセスするか、またはその両方を行うことをさせない。その代わりに、データ・ストレージ・システム120は、概して、外部デバイスに単一の連続した論理アドレス空間を提示するように構成され、それに従って、ホスト・デバイスが論理アドレス空間内のLBAとの間でデータを読み取りおよび書き込むことを可能にしつつ、フラッシュ・コントローラ140およびGPP132が、種々のLBAに関連付けられたデータがNAND型フラッシュ・メモリ・システム150を含む物理メモリの位置に実際に存在する場所をコントロールさせる。この様式で、NAND型フラッシュ・メモリ・システム150の性能および寿命をインテリジェントに管理および最適化することができる。説明される実施形態では、各フラッシュ・コントローラ140は、関連付けられたフラッシュ・コントローラ・メモリ142内に格納することができる論理−物理変換(LPT)テーブル900などの論理−物理変換データ構造を使用して論理−物理変換を管理する。
GPP132上で実行されるフラッシュ管理コードは、例えば、GPPメモリ134内に格納され得る使用できる状態(RTU)の待ち行列906で使用する準備ができているNAND型フラッシュ・メモリ・システム150の消去されたブロックを追跡する。示される実施形態では、GPP132上で実行される管理コードは、好ましくは、チャネルごとに1つ以上のRTU待ち行列906を維持し、再使用される各消去されたブロックの識別子は、そのチャネルに対応するRTU待ち行列906のうちの1つの待ち行列に入れられる。
GPP132上で実行されるフラッシュ管理コードによって遂行されるブロック・ストライプ構築機能920は、RTU待ち行列906の待ち行列に入れられた消去されたブロックからのデータおよび関連付けられたパリティ情報を格納するための新しいブロック・ストライプを構築する。図8Aを参照して上述されるように、ブロック・ストライプは、好ましくは、異なるチャネル内に存在する同じまたは同様のヘルスのブロック(すなわち、予期される残存有効寿命)で形成され、ブロック・ストライプ構築機能920は、新しいブロック・ストライプの各ブロックを異なるチャネルの対応するRTU待ち行列906から引き出すことによって、都合よくブロック・ストライプを構築することができることを意味する。次いで、新しいブロック・ストライプがデータ配置のためにフラッシュ・コントローラ140の行列待ちに入れられる。
プロセッサ・システム102などのホストから受信された書き込みIOPに応答して、フラッシュ・コントローラ140のデータ配置機能910は、書き込み要求で示された対象LBA(複数可)が現在、NAND型フラッシュ・メモリ・システム150内の物理メモリ・ページ(複数可)にマッピングされているか否かをLPTテーブル900を参照して決定し、そうであれば、それがもはや有効ではないことを示すように対象LBAに現在関連付けられている各データ・ページのステータスを変更する。加えて、データ配置機能910は、書き込みIOPの書き込みデータおよび書き込みIOPの対象となる既存のページ・ストライプ(もしあれば)からの任意の更新されていないデータ(すなわち、書込み要求が論理ページよりも小さく、読み取り−修正−書き込み様式で処理される必要がある有効なデータが依然として存在する場合)を、必要に応じて格納するページ・ストライプを割り当てるか、もしくは書き込みIOPの書き込みデータおよび書き込みIOPの対象となる既存のページ・ストライプ(もしあれば)からの任意の更新されていない(すなわち、依然有効な)データを、空いた空間が残っている既に割り当てられたページ・ストライプに格納するか、またはその両方を行う。ページ・ストライプは、データを保持するように既に割り当てられたブロック・ストライプまたはブロック・ストライプ構築機能920によって構築された新しいブロック・ストライプのいずれかから割り当てられてもよい。好ましい一実施形態では、ページ・ストライプの割り当ては、割り当て用に利用可能なブロックのヘルスと、書き込みデータのLBAの「ヒート」(すなわち、推定または測定された書き込みアクセスの頻度)に基づくことができる。次いで、データ配置機能910は、ページ・ストライプの各ページ内の各コードワードについての、メタデータ(例えば、CRC値およびECC値)に関連付けられた書き込みデータ、および割り当てられたページ・ストライプ内のページ・ストライプについてのパリティ情報を書き込む。関連付けられたメタデータおよびパリティ情報は、十分なホスト・データがページ・ストライプに配置されるとすぐにストレージに書き込むことができる。フラッシュ・コントローラ140はまた、LPTテーブル900を更新して、書き込みデータを格納するために利用された物理ページ(複数可)を、ホスト・デバイスによって示されるLBA(複数可)に関連付ける。その後、フラッシュ・コントローラ140は、図11にさらに説明されるように、データにアクセスして、LPTテーブル900の参照によりホスト読み取りIOPをサービス提供することができる。
ブロック・ストライプ内のすべてのページが書き込まれると、フラッシュ・コントローラ140は、ブロック・ストライプを、GPP132上で実行されるフラッシュ管理コードを利用してガベージ・コレクションを容易にする占有されたブロック待ち行列902のうちの1つに配置する。上述されるように、書き込み処理を通じて、ページが無効化され、したがって、NAND型フラッシュ・メモリ・システム150の一部が使用されなくなる。関連付けられたフラッシュ・コントローラ140(もしくはGPP132またはその両方)は、最終的に、この空間をガベージ・コレクタ912によって遂行されるガベージ・コレクションを通じて再生利用する必要がある。ガベージ・コレクタ912は、例えば、ブロック・ストライプ内のブロックのヘルスおよび消去ブロック内のデータのどの程度が無効であるかを含むいくつかの要因に基づいて、ガベージ・コレクションのための特定のブロック・ストライプを選択する。説明される例では、ガベージ・コレクションは、ブロック・ストライプ全体で遂行され、GPP132上で実行されるフラッシュ管理コードは、リサイクルされる準備が整ったブロック・ストライプを、関連付けられたフラッシュ・コントローラ・メモリ142またはGPPメモリ134内に都合よく実装することができる再配置待ち行列904に記録する。
GPP132またはフラッシュ・コントローラ140によって遂行されるフラッシュ管理機能は、再配置待ち行列904の待ち行列に入れられたブロック・ストライプ内に保持された依然有効なデータを再配置する再配置機能914をさらに含む。かかるデータを再配置するために、再配置機能914は、再配置書き込み要求をデータ配置機能910に発行して、古いブロック・ストライプのデータがNAND型フラッシュ・メモリ・システム150内の新しいブロック・ストライプに書き込まれることを要求する。加えて、再配置機能914は、LPTテーブル900を更新して、データの論理アドレスと物理アドレスとの間の現在の関連付けを取り除く。いったん有効なデータがすべて古いブロック・ストライプから移動されると、古いブロック・ストライプは、古いブロック・ストライプをその構成ブロックに分解して、それに従って、ブロックの関連付けを解消するブロック・ストライプ分解機能916に渡される。次いで、フラッシュ・コントローラ140は、分解されたブロック・ストライプを以前に形成していたブロックの各々を消去し、プログラム/消去(P/E:program/erase)サイクル・カウント944内のブロックのための関連付けられたP/Eサイクル・カウントをインクリメントする。各消去されたブロックのヘルス・メトリックに基づいて、各消去されたブロックは、GPP132上で実行されるフラッシュ管理機能のうちのブロック使用停止機能918によって使用停止(すなわち、もはやユーザ・データを格納するために使用されない)にされるか、または代替的に、ブロックの識別子を関連付けられたGPPメモリ134内の適切な使用できる状態(RTU)の待ち行列906に配置することによって再使用のために準備されるかいずれかされる。
図11にさらに示されるように、GPP132上で実行されるフラッシュ管理機能は、バックグラウンド・ヘルス・チェッカー930を含む。プロセッサ・システム102などのホストの要求読み取りIOPおよび書き込みIOPとは独立して動作するバックグラウンド・ヘルス・チェッカー930は、占有されたブロック待ち行列902に記録されたブロック・ストライプに属するブロックについての1つ以上のブロック・ヘルス・メトリック942(例えば、最悪ページ、もしくは平均ページ、またはその両方のビット・エラー率(BER:bit error rate)、プログラミング電圧、および読み取り電圧など)を連続的に決定する。ブロック・ヘルス・メトリック942のうちの1つ以上に基づいて、バックグラウンド・ヘルス・チェッカー930は、再配置機能914による処理のためにブロック・ストライプを再配置待ち行列904に配置することができる。
上記の実施形態では、データ・ストレージ・システム120は、複数のレベルのエラー検出および訂正を実装して、異なるタイプのフラッシュ関連およびシステムレベルの障害から保護する。説明される実施形態では、エラー検出および訂正のレベルは、少なくとも、(1)物理ページの各コードワード内のフラッシュ・メディアのエラーの検出および訂正を容易にするECCフィールド708内に格納されたより低いレベルのデータ保護情報(例えば、ECC情報)、(2)ページ、ブロック、チップ、チャネル、およびプレーンの障害に対して保護するデータ保護コードワード800内に格納された中間レベルのデータ保護情報(例えば、パリティ情報)、ならびに(3)フラッシュ・カードの障害に対して保護するフラッシュ・カード126の上のRAIDコントローラ124によって実装されたより高いレベルのデータ保護情報(例えば、パリティ情報)を含む。少なくとも1つの実施形態によれば、より低いレベルおよび中間レベルのデータ保護情報を使用してマルチページ・エラーを訂正できないことは、フラッシュ・カード126に障害が発生すること(およびフラッシュ・カード126のコンテンツの付随する再構築)を自動的にはもたらさず、その代わりに、より高いレベルのデータ保護情報から影響を受けるページ・ストライプ内の有害なデータを再構築する試みが最初になされる。
ここで図12を参照すると、一実施形態による例示的な一ブロック・ストライプ1000が示される。この例では、ブロック・ストライプ1000は、所与のNAND型フラッシュ・メモリ・システム150のN+1個の異なるレーンから取られたN+1個のブロックから形成されている。示されるように、ブロック・ストライプ構築機能920によってブロック・ストライプ内に含めるために選択されたブロックは、任意の関連付けられたブロック・インデックス(例えば、レーン0のブロック10、レーン1のブロック5、レーン2のブロック201など)を有することができる。
ブロックを含む物理ページを順に利用して、例えば、共通のページ・インデックス(例えば、ページ0、ページM、ページ255など)を有するすべてのページから各ページ・ストライプを形成することによって、256個のページ・ストライプを形成する。上述されるように、各ページ・ストライプは、RAID5のようなパリティ・スキームが使用される場合、ページ・ストライプのための中間レベルのデータ保護情報を格納するために使用されるデータ保護ページを含む。明らかに、ページ・ストライプ内のデータ保護ページの数は、使用されるデータ保護スキームに依存し、ページ・ストライプごとに2つ以上のデータ保護ページを含むことができる。この例では、ページ・ストライプMは、LページA、LページB、・・・、LページZと表されるいくつかの論理ページを格納する。論理ページは、物理ページに整列されていても、整列されていなくてもよい。通常、圧縮された論理ページは、物理ページに整列されない。いくつかの事例では、LページDなどの論理ページが物理ページ境界をまたぐ。したがって、この例では、LページD1として表されるLページDの第1の部分は、レーン0の物理ページのページM内に存在し、LページD2として表されるLページDの第2の部分は、レーン2の物理ページのページM内に存在する。他の実装例では、データ・ページが代わりに同じレーン内の隣接する物理ページにまたがることがある。
ここで図13を参照すると、一実施形態に従って、LPTテーブル900が図12のページ・ストライプM内に格納された論理ページの論理ブロック・アドレス(LBA)を物理ブロック・アドレス(PBA)にどのようにマッピングするかの一例が説明されている。説明される実施形態では、LPTテーブル900は、複数のエントリ1100であって、それらの各々がLBAフィールド1102およびPBAフィールド1104を含む、複数のエントリ1100を含む。示されるように、各エントリ1100のLBAフィールド1102は、特定の論理ページ(例えば、LページA、LページBなど)のLBAを記録し、関連付けられたPBAフィールド1104は、レーン番号、ブロック番号、および論理ページの先頭のブロック内のオフセットの表示を含む対応するPBAを記録する。加えて、PBAフィールド1104は、プレーン、ダイ、およびチップ・イネーブル(図13には図示せず)の表示をさらに含む。したがって、LPTテーブル900は、関連付けられたNAND型フラッシュ・メモリ・システム150の任意のページ・ストライプ内に存在する各論理ページの物理ストレージの位置に関する完全な情報を提供する。
ここで図14を参照すると、データ・ストレージ・システム120などのデータ・ストレージ・システム内のマルチページ・エラーから回復するための例示的な一処理の上位論理フローチャートが示される。説明される処理は、例えば、ホスト・システムの読み取りIOPに応答して遂行される要求読み取り動作中、バックグラウンド・ヘルス・チェッカー930によって遂行されるバックグラウンド読み取り中、または再配置機能914による再配置読み取り中に、フラッシュ・コントローラ140、もしくはGPP132、またはその両方(それらのいずれかもしくは両方は概して「コントローラ」と称されることがある)によって遂行することができる。本方法は、例えば、ハードウェア、またはファームウェアもしくはソフトウェアまたはその両方を実行するハードウェア、あるいはその両方で実装することができる。説明を容易にするために、図14の処理を、以降、フラッシュ・コントローラ140によって遂行されるものとして説明する。
説明される処理は、フラッシュ・コントローラ140が読み取りIOP、バックグラウンド読み取り要求、またはサービス提供するための再配置読み取り要求を受信することに応答してブロック1200から着手する。ブロック1200で受信された読み取り要求に応答して、本処理は、関連付けられたNAND型フラッシュ・メモリ・システム150内の対象ページ・ストライプから1つ以上のページを読み取ることによって読み取り要求を処理するフラッシュ・コントローラ140を説明するブロック1202を続ける。フラッシュ・コントローラ140は、1つ以上のローカル読み取り要求を発行して、要求された論理ページ(複数可)を格納している物理ページを読み取る。フラッシュ・コントローラ140によって関連のレーンまたは複数のレーンに並列またはほぼ並列に発行され得るこれらのローカル読み取り要求(複数可)は、読み取りIOPによって指定されたLBA(複数可)に基づいてLPTテーブル900から取得されるか、またはバックグラウンド・ヘルス・チェッカー930もしくは再配置機能914によって直接指定される対象PBA(複数可)を指定する。
ブロック1204では、フラッシュ・コントローラ140は、要求された論理ページ(複数可)を含む物理ページ(複数可)を受信する。フラッシュ・コントローラ140内のECCデコーダ144は、ブロック1202でアクセスされた物理ページ内のすべてのコードワードに対してECC復号を遂行して、検出された任意のビット・エラーの訂正を試みる。示される実施形態では、コードワード内のビット・エラー(もしあれば)が訂正可能である場合、ECCデコーダ144は、ビット・エラーを訂正し、かかるビット・エラーの数および訂正可能ステータスを返却する。例えば、ECCデコーダ144は、コードワード内にエラーのビットが50個あり、ECCがコードワード内のエラーのビットを50個以上修正することができる場合、ビット・エラーは訂正可能であると決定することになる。一方、コードワード内で検出されたビット・エラーが訂正不可能な場合、ECCデコーダ144は、そのコードワードについて訂正不可能ステータスを返却する。コードワード内のビット・エラーは、(電荷ポンプの故障など)所与のメモリ・チップ内の1つ以上の構成要素の物理的障害、メモリ・チップ全体またはそのチップのための外部サポート構造(例えば、チップに対する電源供給ラインもしくはアドレス・ラインの故障)の物理的障害、環境要因(例えば、過度の温度、磁場、湿度など)、物理デバイスの酸化物レイヤ内のトラップ電荷、メモリ・セルのフローティング・ゲート(または同様の電荷トラップ・デバイス)からの電荷漏れ、または隣接するメモリ・セルの書き込みもしくは読み取りによって加えられた電気的ノイズ、あるいはこれらのすべての結果としてのチップの全部もしくは一部の物理的障害を含むが、これらに限定されない種々の要因によって引き起こされ得ることが理解されるであろう。
ブロック1206では、フラッシュ・コントローラ140は、ECCデコーダ144が、読み取られたデータ・ページ(複数可)内に格納されたすべてのコードワードについて訂正可能ステータスを返却したか否かを決定する。そうでなければ、処理は、以下で説明されるブロック1220に進む。しかしながら、フラッシュ・コントローラ140がブロック1206で、ECCデコーダ144が、読み取られたデータ・ページ(複数可)内に格納されたすべてのコードワードについて訂正可能ステータスを返却したと決定した場合、処理はブロック1208に進む。ブロック1208は、フラッシュ・コントローラ140が、読み取られたデータ・ページ内に格納されたすべてのコードワードがそれらの関連付けられたCRCフィールド706によって検証されるか否かを決定することを説明する。(CRC情報が維持されないか、または読み取りデータの二次検証が望ましくない代替的な実施形態では、ブロック1208を省略することができる。)ブロック1208において示される決定を行う際、フラッシュ・コントローラ140は、読み取られたデータ・ページ内の各データ・コードワード700について巡回冗長コードを計算し、計算されたCRCを関連するCRCフィールド706内に含まれるものと比較する。ブロック1208における否定的な決定に応答して、処理は以下で説明されるブロック1220に進む。しかしながら、フラッシュ・コントローラ140がブロック1208で、読み取りデータ内の各コードワードがその関連付けられたCRCフィールド706によって有効にされた場合、フラッシュ・コントローラ140は、必要であれば、対象論理ページ(複数可)を解凍し、解凍された論理ページ(複数可)をリクエスタに送信する(ブロック1210)。その後、処理はブロック1212で終了する。
ブロック1206に戻って、ECCデコーダ144が読み取りデータ内のすべてのコードワードについて訂正可能ステータスを返却しなかった(すなわち、ECCデコーダが1つ以上のコードワードについて訂正不可能ステータスを返却した)という決定に応答して、処理はブロック1206から、フラッシュ・コントローラ140がページ・ストライプの残りの物理ページをすべて読み取ったことを説明するブロック1220に進む。ブロック1220では、フラッシュ・コントローラ140はまた、ECCデコーダ144がページ・ストライプの残りの物理ページの各々について訂正可能ステータスを返却したか否か(および任意選択でCRC情報を検証することができるか否か)を決定する。次に、ブロック1222では、フラッシュ・コントローラ140は、より低いレベルのデータ保護情報(例えば、ECC情報)によって訂正不可能であったデータ・ページ(複数可)のコンテンツを、中間レベルのデータ保護情報を利用して回復することができるか否かを決定する。フラッシュ・コントローラ140がRAID5またはRAID6を利用する中間レベルのデータ保護スキームを実装する好ましい一実施形態では、ブロック1222に説明される決定は、フラッシュ・コントローラ140が、訂正不可能なコードワードが1つまたは2つ以上の物理ページ内に存在するか否かを決定する(RAID5のパリティは最大でも1つの物理ページのコンテンツを回復することができ、RAID6のパリティは最大でも2つの物理ページを回復することができるため)。ブロック1222での否定的な決定(例えば、訂正不可能なコードワードがRAID5について2つ以上のデータ・ページ内に存在したか、またはRAID6について3つ以上のデータ・ページ内に存在したことを意味する)に応答して、処理は、ブロック1230、および以下で説明されるような、フラッシュ・コントローラ140がより高いレベルのデータ保護情報を利用して対象ページ・ストライプの回復をトリガすることを説明する後続ブロックに進む。しかしながら、ブロック1222での肯定的な決定に応答して、処理はブロック1224に進む。
ブロック1224は、フラッシュ・コントローラ140が、訂正不可能なコードワード(複数可)を含む物理ページ(複数可)のコンテンツをページ・ストライプの他の物理ページのコンテンツから回復することを示す。例えば、中間レベルのデータ保護スキームがRAID5またはRAID6を利用する好ましい一実施形態では、訂正不可能なコードワード(複数可)を含む物理ページのコンテンツは、対象ページ・ストライプの他の物理ページのコンテンツのビット単位のXORを遂行することによって回復することができる。ブロック1226では、フラッシュ・コントローラ140はまた、再配置機能914による再配置のために対象ページ・ストライプを含むブロック・ストライプを待ち行列に入れる。(代替的な一実施形態では、影響を受けたページ・ストライプを再配置するだけでもよいし、再配置を全くトリガしなくてもよい。)次いで、処理は、説明されたブロック1210および1212に進む。
ここでブロック1230および後続ブロックを参照すると、フラッシュ・コントローラ140は、RAIDコントローラ124によって維持されたより高いレベルのデータ保護情報を利用する、対象ページ・ストライプのコンテンツを回復するための試みをトリガする。ブロック1230では、フラッシュ・コントローラ140は、最初に、ブロック1200で受信された読み取り要求がホスト読み取りIOPであったか否かを決定する。そうでなければ、処理は、ブロック1234に進む。そうであれば、フラッシュ・コントローラ140は、読み取りエラーを、RAIDコントローラ124であって、そこから読み取りIOPが受信された、RAIDコントローラ124に返却する(ブロック1232)。読み取りエラーは、より高いレベルのデータ保護情報を利用するRAIDコントローラ124による要求された論理ページ(複数可)の再構築を自動的にトリガする。
しかしながら、処理のこの時点では、ホストによって読み取られていない対象ページ・ストライプの任意の追加の障害が発生した論理ページは再構築されないことに注意することが重要である。RAIDコントローラ内の再構成が同じRAIDストライプ内(したがって、ディスク上の隣接する位置)の隣接するページが再構築されることもたらす従来の磁気ハード・ディスク・ドライブ(HDD:magnetic hard disk drive)のRAIDアレイとは異なり、かかる隣接するストレージ位置の自動再構成は、フラッシュ・カード126またはSSDなどのフラッシュベースのストレージ・デバイスには適用されない。HDDを備えたRAIDアレイでは、RAIDアレイの既知のストライピング・アルゴリズム、および隣接ディスク・セクタが(必要であれば)素早く識別、検証、および再構築されることを可能にするHDD内の追加のアドレス間接レイヤ(address indirection layer)の欠如により、再構築を他の隣接するRAIDストライプに容易に拡張することができる。しかしながら、正しい場所以外に書き出し、それによってLPTテーブルをフラッシュベースのストレージ・デバイス内に維持する必要があるため、隣接する論理ページは、概して、隣接する物理ページ内には格納されない。したがって、ページ・ストライプ内のデータ・ページは、必ずしも隣接する論理ページを格納するとは限らない。結果として、より高いレベルのRAIDは、中間レベルのデータ保護の回復障害による影響を潜在的に受ける他の論理ページに関する必要な情報を欠く。加えて、この状況では、より高いレベルのRAIDは、読み取り動作がホストによって要求された場合のみ、フラッシュ・カード126によって読み取りエラーの通知を受けるが、他の場合(例えば、バックグラウンド読み取りまたは再配置読み取り動作)は受けない。ブロック1232の後、処理はブロック1234に進む。
ブロック1234は、フラッシュ・コントローラ140がLPTテーブル900をスキャンして、対象ページ・ストライプ内に格納された論理ページに関連付けられたすべてのLBAを検索することを示す。したがって、対象ページ・ストライプのデータ・ページに対応するレーン、プレーン、ダイ、チップ・イネーブル、ブロック、およびオフセットを記録するPBAフィールド1104を有するエントリ1100を検出することによって、フラッシュ・コントローラ140は、関連付けられたLBAフィールド1102からLBAの関連するセットを取得することができる。別の実施形態では、LBAフィールドの一部は、LPTテーブル900のスキャンを加速するために、PBAフィールドと共に格納されてもよい。かかる実施形態では、フラッシュ・コントローラ140は、LPTテーブル900の全体をスキャンする必要はないが、PBAフィールドと共に格納されたLBAフィールドの一部と一致するエントリのみをスキャンする必要があるであろう。ブロック1236では、フラッシュ・コントローラ140は、ブロック1236で決定されたLBAのセットを含むかまたは参照するページ・ストライプ再構築要求を上位コントローラに送信して、対象ページ・ストライプの回復を開始する。いくつかの実施形態では、上位コントローラは、RAIDコントローラ124のうちの1つであり得、他の実施形態では、上位コントローラは、図2のコントロール・プレーンGPP113などの別のコントローラで実装することができる。いずれの場合でも、上位コントローラは、論理アドレスのセットおよびより高いレベルのデータ保護情報を利用して、(ブロック・ストライプ全体ではない場合)少なくとも対象ページ・ストライプをNAND型フラッシュ・メモリ・システム150内の新しい位置に再構築する。ページ・ストライプの再構築要求の送信は、かかるメカニズム(例えば、優れたベンダ固有のSCSIコマンドまたはコントロール情報用の別個の通信チャネルもしくはバス)が存在する場合にフラッシュ・コントローラ124によって開始されてもよいし、またはSCSIログ・センス・ページ要求を使用して上位コントロールによって開始されてもよい。読み取り障害が発生した(フラッシュ・カード126全体ではなく)ページ・ストライプ(またはブロック・ストライプ)のみを再構成することによって、回復性能が大幅に改善される。
処理は、ブロック1236から、フラッシュ・コントローラ140が、上位コントローラによる対象ページ・ストライプの再構築が完了したか否かを決定することを説明するブロック1238に進む。一実施形態では、上位コントローラは、対象ページ・ストライプの再構築の完了を示す特別なコマンドを送信することによって、対象データ・ストライプの再構築の完了をフラッシュ・コントローラ140に伝達する。代替的な一実施形態では、フラッシュ・コントローラ140は、そのNAND型フラッシュ・メモリ・システム150についてのすべての書き込みステータス通知を処理して、上位コントローラに渡されたLBAのセット内のすべてのLBAが新しい物理位置に書き込まれたか否かを検出する。フラッシュ・コントローラ140がブロック1238で、対象ブロック・ストライプが上位コントローラによって首尾よく再構築されたことに応答して、処理は、フラッシュ・コントローラ140が後続の再配置のために再配置待ち行列904に対象データ・ストライプを含むブロック・ストライプ全体を待ち行列に入れることを説明する任意選択のブロック1226に進む。ブロック・ストライプのすべての有効な論理ページが既に上位コントローラによって再構築され、再配置されている場合、ブロック・ストライプは、それがもはや有効なデータを保持しないため、代わりに、ブロック・ストライプ分解機能916によって単に分解することができる。ブロック1226に示される再配置は、図14の処理を再度遂行させるブロック・ストライプについて別の読み取り障害をトリガする場合があることに留意されたい。ブロック1226に続いて、処理は、説明されたブロック1210および1212に進む。
少なくともいくつかの実施形態では、図14の処理のさらに改良されたものを実装することができる。例えば、フラッシュ・コントローラ140がブロック1222で、対象ページ・ストライプが訂正不可能なコードワードを含む複数の物理ページを含み、これらの物理ページのうちの1つがパリティ・ページ(例えば、RAID5が用いられる場合)または中間レベルのデータ保護スキームの複数のパリティ・ページのうちの1つ(例えば、RAID6が用いられる場合)であると決定した場合、パリティ・ページは、それに関連付けられたLBAを有していないため、上位コントローラによって再構築することができない。したがって、障害のあるデータ・ページ上のLBAだけを再構築用の上位コントローラに送る必要がある。
加えて、図14に示される例示的な実施形態は、1つ以上の物理ページの回復を開始する前に、物理ページが訂正不可能なエラーを含む1つ以上のコードワードを有するまで待機する。しかしながら、ある特定の実装例は、かかる回復を訂正不可能状態(uncorrectability)前のある時点で開始することを選択することができる。例えば、一実施形態では、フラッシュ・コントローラ140は、ブロック1206において、訂正されたビット・エラーの数がECC訂正閾値よりも低いビット・エラー閾値を満たす(例えば、ビット・エラー閾値以上である)か否かをさらに決定する。例えば、一実装例が約1024バイトにわたるBCH ECCを使用し、エラーのビット50個を訂正することができる場合、フラッシュ・コントローラ140は、訂正されたビット・エラーの数が50個未満、例えば、48個に達したときにページを使用停止にすることを決定することができる。かかる実装例では、処理は、ビット・エラー閾値を超えたという決定に応答して、ブロック1206からブロック1208に進む。
加えて、使用されるフラッシュ技術に応じて、フラッシュ・コントローラ140は、コードワードが真に訂正不可能であり、回復が実施されるべきであることを決定する前に、ブロック1206およびブロック1220において追加のステップを遂行することを選択することができることも当業者は理解するであろう。例えば、フラッシュの製造業者は、そのページまたはブロックについてのある特定のパラメータを変更し、データ・ページの再読み取りを遂行するためにフラッシュ・コントローラ140を必要とすることがある。再読み取り時に検出されたビット・エラー(もしあれば)が訂正可能である場合、フラッシュ・コントローラ140は、ブロック1206からブロック1208への「はい」の経路に従うことになる。このようにして、ブロック1206は、コードワードが真に訂正不可能なエラーを含むとの決定時に、詳細には説明されないが、遂行される多くの追加のステップを含むことができる。
さらに、いくつかの実施形態では、ラッシュ・コントローラ140が対象ページ・ストライプの残りのすべての物理ページを読み取る前に、ブロック1230および1232に示されるように、障害が発生したホスト読み取りIOPが読み取りエラーを上位コントローラに返却するための再構築処理の遅延を低減することが好ましい場合がある。そうすることにより、再構築処理によるホスト読み取りIOPの追加の遅延が上位コントローラの遅延まで低減する。
本発明は、システム、方法、もしくはコンピュータ・プログラム、またはそれらのすべてであってもよい。コンピュータ・プログラムは、コンピュータ可読ストレージ媒体(複数可)に記憶されることができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持およびストレージすることができる有形のデバイスであってもよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の好適な組み合わせであってもよいが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非包括的な列挙には、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:portable compact disc read−only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、パンチ・カードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の好適な組み合わせが含まれる。本明細書において使用されるコンピュータ可読ストレージ媒体は、それ自体で、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通って伝送される電気信号などの一時的な信号であると解釈されるべきではない。
本明細書において説明されるコンピュータ可読プログラム命令は、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらのすべてを介して、コンピュータ可読ストレージ媒体または外部コンピュータもしくは外部ストレージ・デバイスから、それぞれのコンピューティング/処理デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらのすべてを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内にストレージするためのコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction−set−architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されてもよく、スタンドアローンのソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されてもよく、部分的にユーザのコンピュータ上で、および部分的にリモート・コンピュータ上で実行されてもよく、または完全にリモート・コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくはワイド・エリア・ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、または接続が外部コンピュータに(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)なされてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA:programmable logic array)を含む電子回路は、本発明の態様を遂行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによってコンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラムのフローチャートの説明、もしくはブロック図、またはその両方を参照して説明される。フローチャートの説明、もしくはブロック図、またはその両方の各ブロック、およびフローチャートの説明、もしくはブロック図、またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置を介して実行される命令が、フローチャート、もしくはブロック図のブロック(複数可)、またはその両方で指定された機能/作用を実装するための手段を作成するように、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、機械を生成してもよい。これらのコンピュータ可読プログラム命令はまた、中に格納された命令を有するコンピュータ可読ストレージ媒体がフローチャート、もしくはブロック図のブロック(複数可)、またはその両方で指定された機能/動作の態様を実装する命令を含む製品を含むように、コンピュータ、プログラマブル・データ処理装置、もしくは他のデバイス、またはそれらのすべてを特定の様式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納されてもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令がフローチャート、もしくはブロック図のブロック(複数可)、またはその両方で指定された機能/作用を実装するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で遂行させて、コンピュータ実装処理を生成してもよい。
図のフローチャートおよびブロック図は、本発明の種々の実施形態によるシステム、方法、およびコンピュータ・プログラムの可能な実装例のアーキテクチャ、機能、および動作を説明する。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能(複数可)を実装するための1つ以上の実行可能命令を含む命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替的な実装例では、ブロック内に記述された機能は、図に記述された順序から外れることがある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよく、または関連する機能に応じてブロックが時には逆の順序で実行されてもよい。また、ブロック図の角ブロック、もしくはフローチャートの説明、またはそれらのすべて、およびブロック図のブロック、もしくはフローチャートの説明、またはそれらのすべての組み合わせは、指定された機能もしくは作用を遂行するか、または特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する特定用途向けハードウェアベースのシステムによって実装することができることにも留意されたい。
説明されたように、少なくとも1つの実施形態では、複数の物理ページを各々が含む複数のブロックを含む不揮発性メモリ・アレイは、コントローラによってコントロールされる。コントローラは、使用停止と考慮されるべきである複数のブロック内の物理ページのページ・インデックスの複数の異なるネストされたサブセットのうちのそれぞれの1つによって各々が定義される複数のネストされたページ使用停止クラス(page retirement class)を実装する。複数のブロックのうちの各ブロックについて、コントローラは、ブロックの物理ページ内に格納されたデータ・ページ内の使用停止誘発エラー(retirement−causing error)の検出に応答して、ブロックが属するページ使用停止クラスの表示を更新する。コントローラは、ブロックのページ使用停止クラスに基づいて、複数のブロックからのデータを格納するためのブロック・ストライプを形成する。
少なくとも1つの実施形態では、データ・ストレージ・システムは、コントローラと、複数の物理ページを各々が含む複数のブロックを有する不揮発性メモリ・アレイとを含む。コントローラは、論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT)データ構造を維持し、書き込みデータを複数の物理ブロック上にストライプする第1のデータ保護スキームを実装する。データを対象ページ・ストライプから要求する読み取り要求に応答して、コントローラは対象ページ・ストライプの複数の物理ページ内のエラーを検出する。対象ページ・ストライプの複数の物理ページ内のエラーを検出することに応答して、コントローラは、LPTデータ構造をスキャンして、対象ページ・ストライプにマッピングされた論理アドレスのセットを識別し、第2のデータ保護スキームを実装する上位コントローラによって対象ページ・ストライプの回復を開始し、回復を開始することは論理アドレスのセットを上位コントローラに送信することを含む。
本発明は、1つ以上の好ましい実施形態を参照して説明されるように特に示されているが、本発明の趣旨および範囲から逸脱することなく、その中で形態および詳細における種々の変更がなされ得ることを当業者は理解するであろう。例えば、ある特定の機能を対象とするフラッシュ・コントローラを含むデータ・ストレージ・システムに関して態様を説明してきたが、本発明は、代替的に、プロセッサによって処理することができるプログラム・コードを格納するストレージ・デバイスを含むプログラムとして実装して、かかる機能を遂行してもよいし、またはかかる機能を遂行させてもよいことを理解されたい。本明細書において用いられる際、「ストレージ・デバイス」は、法定の製品のみを含み、エネルギーそれ自体、伝送媒体それ自体、および一時的な伝播信号それ自体を排除するように具体的に定義される。
加えて、NAND型フラッシュ・メモリの使用を含む実施形態について説明してきたが、本発明の実施形態はまた、例えば、相変化メモリ(PCM:phase−change memory)およびその組み合わせを含む他のタイプの不揮発性ランダム・アクセス・メモリ(NVRAM:non−volatile random access memory)と共に使用することができることを理解されたい。
上記の図ならびに以下の特定の構造および機能の記述は、出願人が発明したことの範囲または添付の特許請求の範囲を限定するために提示されるものではない。むしろ、図および記述は、任意の当業者が、特許保護を求める本発明を作製および使用することを教示するために提供される。本発明の商業的な一実施形態のすべての特徴が、明瞭性および理解のために説明または示されているわけではないことを当業者は理解するであろう。本発明の態様を組み込んだ実際の商業的な一実施形態の開発は、商業的な実施形態の開発者の最終目標を達成するための多数の実装固有の決定を必要とするであろうことも当業者は理解するであろう。かかる実装固有の決定には、システム関連、ビジネス関連、政府関連、ならびに特定の実装、位置、および時によって異なる場合がある他の制約の遵守が含まれていることがあり、これらの遵守である可能性があるが、これらに限定されない。開発者の取り組みは、絶対的な意味において複雑で時間を要するものであるかもしれないが、それにもかかわらず、かかる取り組みは、本開示の利益を有する当業者には日常的な業務であるであろう。本明細書において開示および教示される本発明は、多種多様な修正および代替的な形態の影響を受けやすいことが理解されねばならない。最後に、限定ではないが「a」などの単数の用語の使用は、項目の数を限定することを意図するものではない。

Claims (25)

  1. コントローラによってコントロールされる不揮発性メモリ・アレイを含むデータ・ストレージ・システムにおける方法であって、前記不揮発性メモリ・アレイは、複数の物理ページを各々が含む複数のブロックを含み、
    前記コントローラが前記不揮発性メモリ・アレイにおいて論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT)データ構造を維持することと、
    前記コントローラが書き込みデータを複数の物理ブロック上にストライプして、複数のページ・ストライプを形成する第1のデータ保護スキームを実装することと、
    データを前記複数のページ・ストライプのうちの対象ページ・ストライプから要求する読み取り要求に応答して、前記コントローラが前記対象ページ・ストライプの複数の物理ページ内のエラーを検出することと、
    前記対象ページ・ストライプの複数の物理ページ内のエラーの検出に応答して、前記コントローラが前記LPTデータ構造をスキャンして、前記対象ページ・ストライプにマッピングされた論理アドレスのセットを識別することと、前記論理アドレスのセットで示された論理ページのセットが独立ディスクの冗長アレイ(RAID)構成となっており、エラーとなったページを前記セット内の他のページから復旧して前記データ・ストレージ・システム内の新しい位置に前記対象ページ・ストライプを再構築するための第2のデータ保護スキームを実装する上位コントローラによって前記対象ページ・ストライプの回復をトリガすることであって、前記論理アドレスのセットを前記上位コントローラに送信することを含む、回復をトリガすることと、を含む、方法。
  2. 前記上位コントローラが前記対象ページ・ストライプの再構築を完了したか否かを決定することと、
    前記上位コントローラが前記対象ページ・ストライプの再構築を完了したという決定に応答して、前記対象ページ・ストライプおよび複数の他のページ・ストライプを含むブロック・ストライプのコンテンツを前記不揮発性メモリ・アレイ内に再配置することと、をさらに含む、請求項1に記載の方法。
  3. 前記上位コントローラが複数のメモリ・デバイスを制御し、
    前記第1のデータ保護スキームがパリティベースのデータ保護スキームを含み、
    前記第2のデータ保護スキームが前記複数のメモリ・デバイスにわたるRAIDデータ保護スキームを含む、請求項1に記載の方法。
  4. 前記コントローラがエラー訂正コード(ECC)を用いた第3のデータ保護スキームを利用して、前記対象ページ・ストライプの複数の物理ページ内のエラーを検出すること、をさらに含む、請求項1に記載の方法。
  5. 前記読み取り要求がホスト読み取り要求であることに応答して、前記コントローラが読み取りエラーを前記上位コントローラに送信すること、をさらに含む、請求項1に記載の方法。
  6. 前記論理アドレスのセットが前記対象ページ・ストライプの前記ページのサブセットのみにマッピングされる、請求項1に記載の方法。
  7. 前記対象ページ・ストライプの単一のデータ・ページ内の1つ以上のエラーを検出することに応答して、前記コントローラが前記第1のデータ保護スキームを利用して、対象ページのコンテンツを回復すること、をさらに含む、請求項1に記載の方法。
  8. 前記上位コントローラからの要求の受信に応答して、前記コントローラが前記上位コントローラへの前記論理アドレスのセットの送信を遂行する、請求項1に記載の方法。
  9. データ・ストレージ・システムであって、
    複数の物理ページを各々が含む複数のブロックを含む不揮発性メモリ・アレイ、および前記不揮発性メモリ・アレイにおいて論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT)データ構造を含むメモリに連結されるように構成されたコントローラであって、前記コントローラが書き込みデータを複数の物理ブロック上にストライプして、複数のページ・ストライプを形成する第1のデータ保護スキームを実装するように構成され、前記コントローラが、データを前記複数のページ・ストライプのうちの対象ページ・ストライプから要求する読み取り要求に応答して、前記対象ページ・ストライプの複数の物理ページ内のエラーを検出し、前記対象ページ・ストライプの複数の物理ページ内のエラーの検出に応答して、LPTデータ構造をスキャンして、前記対象ページ・ストライプにマッピングされた論理アドレスのセットを識別し、前記論理アドレスのセットで示された論理ページのセットが独立ディスクの冗長アレイ(RAID)構成となっており、エラーとなったページを前記セット内の他のページから復旧して前記データ・ストレージ・システム内の新しい位置に前記対象ページ・ストライプを再構築するための第2のデータ保護スキームを実装する上位コントローラによって前記対象ページ・ストライプの回復をトリガするように構成され、前記コントローラが前記論理アドレスのセットを前記上位コントローラへ送信する、コントローラを含む、データ・ストレージ・システム。
  10. 前記コントローラが、前記上位コントローラが前記対象ページ・ストライプの再構築を完了したか否かを決定し、前記上位コントローラが前記対象ページ・ストライプの再構築を完了したという決定に応答して、前記対象ページ・ストライプおよび複数の他のページ・ストライプを含むブロック・ストライプのコンテンツを前記不揮発性メモリ・アレイ内に再配置するようにさらに構成されている、請求項9に記載のデータ・ストレージ・システム。
  11. 前記上位コントローラが複数のメモリ・デバイスを制御し、
    前記第1のデータ保護スキームがパリティベースのデータ保護スキームを含み、
    前記第2のデータ保護スキームが前記複数のメモリ・デバイスにわたるRAIDデータ保護スキームを含む、請求項9に記載のデータ・ストレージ・システム。
  12. 前記コントローラがエラー訂正コード(ECC)を用いた第3のデータ保護スキームを利用して、前記対象ページ・ストライプの複数の物理ページ内のエラーを検出するようにさらに構成されている、請求項9に記載のデータ・ストレージ・システム。
  13. 前記読み取り要求がホスト読み取り要求であることに応答して、前記コントローラが読み取りエラーを前記上位コントローラに送信するように構成されている、請求項9に記載のデータ・ストレージ・システム。
  14. 前記論理アドレスのセットが前記対象ページ・ストライプの前記ページのサブセットのみにマッピングされる、請求項9に記載のデータ・ストレージ・システム。
  15. 前記対象ページ・ストライプの単一のデータ・ページ内の1つ以上のエラーを検出することに応答して、前記コントローラが前記第1のデータ保護スキームを利用して、対象ページのコンテンツを回復するように構成されている、請求項9に記載のデータ・ストレージ・システム。
  16. 前記上位コントローラからの要求の受信に応答して、前記コントローラが前記論理アドレスのセットを前記上位コントローラへ送信するように構成されている、請求項9に記載のデータ・ストレージ・システム。
  17. 前記コントローラに連結された前記不揮発性メモリ・アレイをさらに含む、請求項9に記載のデータ・ストレージ・システム。
  18. コントローラが不揮発性メモリ・アレイにおいて論理アドレスを物理アドレスにマッピングする論理−物理変換(LPT)データ構造を維持することと、
    前記コントローラが書き込みデータを複数の物理ブロック上にストライプして、複数のページ・ストライプを形成する第1のデータ保護スキームを実装することと、
    データを前記複数のページ・ストライプのうちの対象ページ・ストライプから要求する読み取り要求に応答して、前記コントローラが前記対象ページ・ストライプの多数の物理ページ内のエラーを検出することと、
    前記対象ページ・ストライプの複数の物理ページ内のエラーを検出することに応答して、前記コントローラが前記LPTデータ構造をスキャンして、前記対象ページ・ストライプにマッピングされた論理アドレスのセットを識別することと、前記論理アドレスのセットで示された論理ページのセットが独立ディスクの冗長アレイ(RAID)構成となっており、エラーとなったページを前記セット内の他のページから復旧して前記データ・ストレージ・システム内の新しい位置に前記対象ページ・ストライプを再構築するための第2のデータ保護スキームを実装する上位コントローラによって前記対象ページ・ストライプの回復をトリガすることであって、前記論理アドレスのセットを前記上位コントローラに送信することを含む、回復をトリガすることと、を前記コントローラに遂行させる、コンピュータ・プログラム。
  19. 前記コントローラに、
    前記上位コントローラが前記対象ページ・ストライプの再構築を完了したか否かを決定することと、
    前記上位コントローラが前記対象ページ・ストライプの再構築を完了したということを決定することに応答して、前記対象ページ・ストライプおよび複数の他のページ・ストライプを含むブロック・ストライプのコンテンツを前記不揮発性メモリ・アレイ内に再配置することと、をさらに遂行させる、請求項18に記載のプログラム。
  20. 前記上位コントローラが複数のメモリ・デバイスを制御し、
    前記第1のデータ保護スキームがパリティベースのデータ保護スキームを含み、
    前記第2のデータ保護スキームが前記複数のメモリ・デバイスにわたるRAIDデータ保護スキームを含む、請求項18に記載のプログラム。
  21. 前記コントローラに、
    エラー訂正コード(ECC)を用いた第3のデータ保護スキームを利用して、前記対象ページ・ストライプの複数の物理ページ内のエラーを検出すること、をさらに遂行させる、請求項18に記載のプログラム。
  22. 前記コントローラに、
    前記読み取り要求がホスト読み取り要求であることに応答して、読み取りエラーを前記上位コントローラに送信すること、をさらに遂行させる、請求項18に記載のプログラム。
  23. 前記論理アドレスのセットが前記対象ページ・ストライプの前記ページのサブセットのみにマッピングされる、請求項18に記載のプログラム。
  24. 前記コントローラに、
    前記対象ページ・ストライプの単一のデータ・ページ内の1つ以上のエラーを検出することに応答して、前記第1のデータ保護スキームを利用して、対象ページのコンテンツを回復すること、をさらに遂行させる、請求項18に記載のプログラム。
  25. 前記コントローラに、前記上位コントローラからの要求の受信に応答して、前記論理アドレスのセットを前記上位コントローラへ送信すること、をさらに遂行させる、請求項18に記載のプログラム。


JP2018527935A 2015-12-18 2016-12-09 不揮発性メモリ・システムにおけるマルチページ障害の回復 Active JP6855102B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/975,237 US9569306B1 (en) 2015-12-18 2015-12-18 Recovery of multi-page failures in non-volatile memory system
US14/975,237 2015-12-18
PCT/IB2016/057479 WO2017103751A1 (en) 2015-12-18 2016-12-09 Recovery of multi-page failures in non-volatile memory system

Publications (2)

Publication Number Publication Date
JP2019502987A JP2019502987A (ja) 2019-01-31
JP6855102B2 true JP6855102B2 (ja) 2021-04-07

Family

ID=57965077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018527935A Active JP6855102B2 (ja) 2015-12-18 2016-12-09 不揮発性メモリ・システムにおけるマルチページ障害の回復

Country Status (4)

Country Link
US (1) US9569306B1 (ja)
JP (1) JP6855102B2 (ja)
GB (1) GB2556577B (ja)
WO (1) WO2017103751A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10430279B1 (en) * 2017-02-27 2019-10-01 Tintri By Ddn, Inc. Dynamic raid expansion
US10915405B2 (en) * 2017-05-26 2021-02-09 Netapp, Inc. Methods for handling storage element failures to reduce storage device failure rates and devices thereof
US10552243B2 (en) 2017-10-12 2020-02-04 International Business Machines Corporation Corrupt logical block addressing recovery scheme
KR102398540B1 (ko) * 2018-02-19 2022-05-17 에스케이하이닉스 주식회사 메모리 장치, 반도체 장치 및 반도체 시스템
US10997012B2 (en) 2018-06-29 2021-05-04 International Business Machines Corporation Identifying defective field-replaceable units that include multi-page, non-volatile memory devices
US10929069B2 (en) 2018-09-12 2021-02-23 International Business Machines Corporation Addressing page-correlated read issues using intra-block parity
CN109684125B (zh) * 2018-12-26 2022-04-15 上海创功通讯技术有限公司 一种修复ddr物理损坏的方法、装置、设备及存储介质
US11531590B2 (en) * 2019-09-17 2022-12-20 Western Digital Technologies, Inc. Method and system for host-assisted data recovery assurance for data center storage device architectures
US11314580B2 (en) * 2020-04-30 2022-04-26 EMC IP Holding Company LLC Generating recommendations for initiating recovery of a fault domain representing logical address space of a storage system
US11436123B2 (en) 2020-06-30 2022-09-06 EMC IP Holding Company LLC Application execution path tracing for inline performance analysis
CN112486416B (zh) * 2020-11-30 2024-04-16 北京泽石科技有限公司 数据处理方法、装置、存储介质及处理器
US11409608B2 (en) * 2020-12-29 2022-08-09 Advanced Micro Devices, Inc. Providing host-based error detection capabilities in a remote execution device
US11636008B2 (en) * 2021-09-01 2023-04-25 Micron Technology, Inc. Tracking host-provided metadata in a memory sub-system
WO2023088546A1 (en) * 2021-11-17 2023-05-25 Huawei Technologies Co., Ltd. Controller and method to perform persistent memory management in a memory system
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024545B2 (en) 2007-10-19 2011-09-20 Inha-Industry Partnership Institute Efficient prefetching and asynchronous writing for flash memory
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8464021B2 (en) 2008-05-28 2013-06-11 Spansion Llc Address caching stored translation
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8463991B2 (en) * 2010-09-28 2013-06-11 Pure Storage Inc. Intra-device data protection in a raid array
US8433979B2 (en) * 2011-02-28 2013-04-30 International Business Machines Corporation Nested multiple erasure correcting codes for storage arrays
US9424128B2 (en) * 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
US9021339B2 (en) * 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
WO2014110095A1 (en) 2013-01-08 2014-07-17 Violin Memory Inc. Method and system for data storage
CN104425019B (zh) * 2013-08-23 2018-07-06 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
GB201322290D0 (en) 2013-12-17 2014-01-29 Ibm Method and device for managing a memory
US9619381B2 (en) 2013-12-24 2017-04-11 International Business Machines Corporation Collaborative health management in a storage system

Also Published As

Publication number Publication date
GB2556577A (en) 2018-05-30
JP2019502987A (ja) 2019-01-31
GB2556577B (en) 2019-01-09
WO2017103751A1 (en) 2017-06-22
GB201801788D0 (en) 2018-03-21
US9569306B1 (en) 2017-02-14

Similar Documents

Publication Publication Date Title
JP6855102B2 (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
US10235283B2 (en) Techniques for supporting in-place updates with a log-structured array controller
US10884914B2 (en) Regrouping data during relocation to facilitate write amplification reduction
US10496293B2 (en) Techniques for selecting storage blocks for garbage collection based on longevity information
US10592173B2 (en) Increasing storage efficiency of a data protection technique
TWI594120B (zh) 用於記錄非揮發性記憶體系統中之停滯時間之系統、方法及程式產品
US9690702B2 (en) Programming non-volatile memory using a relaxed dwell time
US10592110B2 (en) Techniques for dynamically adjusting over-provisioning space of a flash controller based on workload characteristics
US9274882B2 (en) Page retirement in a NAND flash memory system
US10365859B2 (en) Storage array management employing a merged background management process
US9858141B2 (en) Data deduplication with reduced hash computations
US9632702B2 (en) Efficient initialization of a thinly provisioned storage array
WO2015097956A1 (en) Extending useful life of a non-volatile memory by health grading
US9740609B1 (en) Garbage collection techniques for a data storage system
US9898215B2 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US9524116B1 (en) Reducing read-after-write errors in a non-volatile memory system using an old data copy
US9390003B2 (en) Retirement of physical memory based on dwell time
US20170115900A1 (en) Dummy page insertion for flexible page retirement in flash memory storing multiple bits per memory cell
US10884632B2 (en) Techniques for determining the extent of data loss as a result of a data storage system failure
US10115472B1 (en) Reducing read disturb effect on partially programmed blocks of non-volatile memory
CN117441164A (zh) 在非易失性存储器的控制器的写入高速缓存中镜像数据
US9430375B2 (en) Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
US9417809B1 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180911

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200825

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20200924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210215

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20210309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210312

R150 Certificate of patent or registration of utility model

Ref document number: 6855102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150