JP2018517213A - メモリにおけるストライプマッピング - Google Patents

メモリにおけるストライプマッピング Download PDF

Info

Publication number
JP2018517213A
JP2018517213A JP2017563321A JP2017563321A JP2018517213A JP 2018517213 A JP2018517213 A JP 2018517213A JP 2017563321 A JP2017563321 A JP 2017563321A JP 2017563321 A JP2017563321 A JP 2017563321A JP 2018517213 A JP2018517213 A JP 2018517213A
Authority
JP
Japan
Prior art keywords
stripe
stripes
memory devices
memory
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017563321A
Other languages
English (en)
Other versions
JP6422600B2 (ja
Inventor
マクグローリン,エドワード
エム. ジェデロー,ジョセフ
エム. ジェデロー,ジョセフ
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2018517213A publication Critical patent/JP2018517213A/ja
Application granted granted Critical
Publication of JP6422600B2 publication Critical patent/JP6422600B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/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
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Abstract

本開示の例は、メモリにおけるRAID(Redundant Array Of Independent Disks)ストライプマッピングに関する装置および方法を提供する。方法の例は、ストライプマップに従って複数のメモリデバイスの保存ボリュームにわたっていくつかのストライプにデータを書き込むこと、を含み、いくつかのストライプの各々は、いくつかの要素を含み、ストライプマップは、いくつかのストライプを識別するためのいくつかのストライプインデックスおよびいくつかのストライプの各々に含められる要素を識別するためのいくつかの要素識別子を含む。
【選択図】図1

Description

本開示は、一般に、半導体メモリデバイス、方法、およびシステムに関し、より具体的には、メモリにおけるストライプマッピングに関する。
メモリデバイスは、コンピュータまたは他の電子デバイスにおける、内部の、半導体の、集積回路として典型的に備えられる。揮発性及び不揮発性メモリを含む多くの異なるタイプのメモリがある。揮発性メモリは、そのデータを維持するために電力を必要とする場合があり、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)および同期型ダイナミックランダムアクセスメモリ(SDRAM)、その他を含む。不揮発性メモリは、電力が与えられないとき、保存された情報を保持することで持続性のあるデータを提供することが可能であり、NANDフラッシュメモリ、NORフラッシュメモリ、リードオンリーメモリ(ROM)、EEPROM(Electrically Erasable Programmable ROM)、EPROM(Erasable Programmable ROM)およびPCRAM(Phase Change Random Access Memory)、その他を含む場合がある。
メモリデバイスは、組み合わされてソリッドステートドライブを形成することが可能である。ソリッドステートドライブは、例えばNANDフラッシュメモリおよびNORフラッシュメモリといった不揮発性メモリおよび/または例えばDRAMおよびSRAMといった揮発性メモリを、不揮発性および揮発性メモリの他の多様なタイプの他に、含み得る。窒化物層に電荷捕獲の情報を保存するSONOS(Semiconductor−Oxide−Nitride−Oxide−Semiconductor)およびMONOS(Metal−Oxide−Nitride−Oxide−Semiconductor)キャパシタ構造を使用するフローティングゲートフラッシュデバイスおよび電荷捕獲フラッシュ(CTF)デバイスを含むフラッシュメモリデバイスは、電子用途の広い範囲で不揮発性メモリとして利用され得る。フラッシュメモリデバイスは、高メモリ密度、高信頼性および低電力消費を可能とする1トランジスタメモリセルを典型的に使用する。
ソリッドステートドライブは、性能、サイズ、重量、耐久性、動作温度範囲および電力消費の観点でハードドライブに対する利点を持ち得るため、SSDはコンピュータのための主記憶デバイスとしてのハードディスクの代わりとして使用されることが可能である。例えば、SSDは可動部品がなくそれによってシーク時間、待ち時間、および磁気ディスクドライブに関連する他の電気機械的な遅延を防ぎ得るために、磁気ディスクドライブと比べたとき、より優れた性能を持つことが可能である。内部バッテリ供給を使用しない場合があり、したがってドライブをより汎用的かつコンパクトにすることが可能なフラッシュSSDを作るために、SSD製造者は非揮発性フラッシュメモリを使用することが可能である。
SSDは、例えばいくつかのメモリチップといったいくつかの(本明細書で使用される場合、「いくつかの」あるものは、1つまたはそれより多くのそのようなものをさすことが可能であり、例えばいくつかのメモリデバイスは1つまたはそれより多くのメモリデバイスをさすことが可能である。)メモリデバイスを含むことが可能である。当業者が理解するであろうように、メモリチップはいくつかのダイおよび/または論理ユニット(LUN)を含むことが可能である。各ダイはいくつかのメモリアレイおよび周辺回路をその上に含むことが可能である。メモリアレイはいくつかの物理ページに整理されるいくつかのメモリセルを含むことが可能であり、物理ページはいくつかのブロックに整理されることが可能である。
RAID(Redundant Array Of Independent Disks)は複数のメモリデバイスの間でデータを分割および/または複製するコンピュータデータ保存方式のための包括的用語である。RAIDアレイにおける複数のメモリデバイスはコンピュータのユーザおよびオペレーティングシステムには、単一の、例えばディスクといった、メモリデバイス、として見え得る。歴史的に、RAIDは複数のハードディスクドライブ(HDD)と共に動作してきた。
本開示のいくつかの実施形態に従う、少なくとも1つのメモリシステムを含むコンピューティングシステムの形態の装置の機能ブロック図である。 本開示のいくつかの実施形態に従う、メモリデバイスの部分の図を示す。 ストライプ基準で動作される保存ボリュームのブロック図を示す。 本開示のいくつかの実施形態に従う、ストライプマップを示す。 本開示のいくつかの実施形態に従う、ストライプマップを示す。
本開示は、メモリにおけるRAID(Redundant Array Of Independent Disks)ストライプマッピングのための方法および装置を含む。1つの方法の実施形態はストライプマップに従って複数のメモリデバイスの保存ボリュームにわたっていくつかのストライプにデータを書き込むことを含み、いくつかのストライプの各々はいくつかの要素を含み、ストライプマップはいくつかのストライプを識別するためのいくつかのストライプインデックスおよびいくつかのストライプの各々に含められる要素を識別するためのいくつかの要素識別子を含む。
いくつかの実施形態において、ストライプによってインデックス付けされるストライプマップが作成されることが可能である。ストライプマップはいくつかのメモリデバイスにデータを書き込むときに使用されることになる各ストライプのためのストライプページインデックスを含むことが可能である。ストライプマップは例えばページといった各要素を、ストライプに含められることになるいくつかのメモリデバイス上で、識別することも可能である。例えば、ストライピングマップは第一のストライプのストライプインデックスを用いて第一のストライプを識別することが可能であり、また、第一のストライプに含められることになる、例えばページといったいくつかの要素を識別することも可能である。ストライプはいくつかのページを含むことが可能であり、ストライプのいくつかのページの各々はメモリシステムの異なるチャネルに結合されることが可能である。
いくつかの実施形態において、ストライプマップは各ストライプが様々なビットエラーレートを持つ要素を持つようにメモリシステムにおけるストライプを定義するために使用されることが可能である。様々なビットエラーレートを持つ要素を持つメモリシステムはストライプを読み出すときにエラーを返す複数の要素を特定のストライプが持つことになる可能性を低減することが可能である。
本開示の以下の詳細な記載において、本明細書の一部を成し、開示の1つまたはそれより多くの実施形態がどのように実施され得るのかが例示として示される添付図面に対して参照が行われる。これらの実施形態は当業者が本開示の実施形態を実施することが可能であるために充分に詳細に記載されており、また、他の実施形態が利用され得ることおよび処理の、電気的なおよび/または構造上の変更が本開示の範囲から逸脱することなくなされ得ることが理解されるべきである。本明細書で使用される場合、指定「N」、「M」、「P」、「R」、「S」、「W」および「V」は、特に図面において参照番号に関連する場合は、そのように指定されるいくつかの特定の特徴は本開示の1つまたはそれより多くの実施形態において含められることが可能であることを示す。
本明細書での数字は、最初の1つまたは複数の数字は図面番号に対応し残りの数字は図面での要素またはコンポーネントを識別するナンバリング上の慣例に従う。異なる図の間における同様の要素またはコンポーネントは同様の数字の使用によって識別され得る。例えば、108は図1での「08」を参照する場合があり、同様の要素は図2では208として参照される場合がある。理解されるであろうように、本明細書での様々な実施形態において示される要素は本開示のいくつかの追加の実施形態を提供するために、追加、交換および/または除去されることが可能である。加えて、理解されるであろうように、図面で提供される要素の比率および相対的な大きさは本発明の実施形態を説明することが意図されており、限定の意味で取られるべきでない。
図1は、本開示のいくつかの実施形態に従う、少なくとも1つのメモリシステムを含むコンピューティングシステムの形態の装置の機能ブロック図である。本明細書で使用される場合、ホスト110、メモリデバイス120、メモリアレイ、コントローラおよび/または検出回路は「装置」として独立的にも扱われ得る。図1に示される実施形態において、例えばソリッドステートドライブ(SSD)といったメモリシステム104は例えば制御回路といったハードウエアとして、ファームウエアとしておよび/またはソフトウエアとして実装されることが可能なホストインタフェース106およびメモリコントローラ108、および、例えば不揮発性マルチレベルメモリセルを含むソリッドステートメモリデバイスといったいくつかのメモリデバイス110−1、...、110−Nを含むことが可能である。メモリデバイス110−1、...、110−Nは、例えばメモリデバイスにフォーマットされたフィルシステムと共に、メモリシステムのために保存ボリュームを提供することが可能である。いくつかの実施形態において、メモリコントローラ108は物理ホストインタフェース106およびメモリデバイス110−1、...、110−Nを含むプリント基板に結合される特定用途向け集積回路(ASIC)であることが可能である。
図1に示されるように、メモリコントローラ108は複数のチャネルによってホストインタフェース106およびメモリデバイス110−1、...、110−Nに結合されることが可能である。メモリコントローラ108は、当業者に理解されるであろうように、他のメモリ動作に加えて、本明細書に記載される動作を実施するように構成されることが可能である。ホストインタフェース106はメモリシステム104とホスト102といった他のデバイスとの間で情報を伝達するために使用されることが可能である。ホスト102は、例えばプロセッサといったメモリアクセスデバイスを含むことが可能である。当業者は、「プロセッサ」は並列処理システムといったいくつかのプロセッサ、いくつかのコプロセッサ、その他といったいくつかのプロセッサを意図することが可能であるということを理解するだろう。ホストの例はラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタルレコーディング装置、デジタル再生装置、携帯電話、PDA、メモリカードリーダ、インタフェースハブ、その他を含む。いくつかの実施形態にとって、ホストインタフェー106は標準化されたインタフェースの形態であることが可能である。例えば、メモリシステム104がコンピューティングシステム100で情報保存のために使用される場合、物理ホストインタフェース106は、その他のコネクタおよびインタフェースの中でも、SATA(Serial Advanced Technology Attachment)、PCIe(Peripheral Component Interconnect express)、またはユニバーサルシリアルバス(USB)とすることが可能である。しかし、一般に、ホストインタフェース106は、制御、アドレス、情報、その他の信号を、ホストインタフェース106と互換性のある受信機能を持つメモリシステム104とホストシステム102との間で、受け渡すためのインタフェースを提供することが可能である。
メモリコントローラ108はホストインタフェース106に結合されおよび/またはこれと一体化されることが可能であるホストインタフェース回路を含むことが可能である。ホストインタフェース回路は、例えば物理層、リンク層および/またはトランスポート層といったいくつかの層を介してホストシステム102とインタフェースすることが可能である。当業者は、特定のホストインタフェースのための層の数は、SATA(Serial Advanced Technology Attachment)、PCIe(Peripheral Component Interconnect express)、ユニバーサルシリアルバス(USB)、その他といったインタフェース規格によって定義されることが可能であることを理解するだろう。本明細書で使用される場合、トランスポート層は、少なくとも、SATA規格の一部としてのトランスポート層および/またはPCIe規格の一部としてのトランザクション層を指す場合がある。当業者は、SATA規格に従うトランスポート層はPCIe規格に従うトランザクション層に類似する場合があることを理解するだろう。実施形態は特定の規格に限定されない。
一般に、ホストインタフェース回路は、例えばPCIeバスから受信したといったような、ホストシステムから受信したコマンドパケットを、ホスト―メモリ翻訳反応(host−memory translation responses)を、要求しているホストへの送信のためのホストシステムコマンドに変換するための、コマンド命令に変換することが可能である。例えば、ホストインタフェース回路はPCIe準拠のトランザクション層のパケットからのSATAコマンドパケットを生成することが可能である。ホストインタフェース回路は複数のアドレスに関連付けられる情報をホストシステム102から受信するように構成されることが可能である。
メモリコントローラ108は例えば読み出しおよび/または書き込みコマンドといった受信コマンドと関連付けられるアドレスといったメモリアドレスにホストアドレスを翻訳するように構成されるホスト―メモリ翻訳回路(host−memory translation circuitry)を含むことが可能である。ホスト―メモリ翻訳回路は、例えば、ホストセクタ読み出しおよび書き込み動作を、メモリデバイス110−1、...、110−Nの特定の部分に向けられるコマンドに変換する場合がある。各ホスト動作は単一セクタのまたは複数セクタのメモリデバイス110−1、...、110−N動作に翻訳されることが可能である。例えば、ホスト読み出しコマンドおよびホスト書き込みコマンドはメモリデバイス110−1、...、110−N読み出しコマンドおよびメモリデバイス110−1、...、110−N書き込みコマンドに翻訳されることが可能である。
本開示のいくつかの実施形態によれば、書き込み情報は、複数のチャネルにわたって、例えばRAID動作に関連していくつかのソリッドステートメモリデバイスに、ストライピングされることが可能である。当業者が理解するであろうように、ストライピングすることは、例えば1より多いデバイス上でといったような、複数のチャネルにわたって保存されるように、情報を分割することを含む。分割された情報を保存する1つより多くのデバイスの部分はストライプと総称される。対照的に、ミラーリングは1つより多くのデバイス上に情報の重複したコピーを保存することを含む場合がある。
メモリコントローラ108は(図示されない)LBAテーブルおよび/またはブロックテーブルを維持することが可能である。LBAテーブルは、いくつかのメモリデバイス110−1、...、110−Nに、ページの物理ページアドレスを保存することが可能であり、対応する論理アドレスを含むことが可能である。LBAテーブルは例えば関連付けられるSATAコマンドといった関連付けられるコマンドに保持されるLBAによってインデックス付けされることが可能である。LBAテーブルは対応する情報が保存可能な論理ブロックアドレスに対応する検索物理ページに使用されることが可能である。ブロックテーブルはいくつかのメモリデバイス110−1、...、110−Nに消去可能なブロックのための情報を保存することが可能である。ブロックテーブルに保存される情報は有効なページ情報、消去回数および他の状態情報を含むことが可能である。ブロックテーブルからアクセスされる情報は物理ブロックアドレスによってインデックス付けされることが可能である。
メモリコントローラ108は情報を、他の動作の他、読み出し、書き込み、および消去するために、メモリデバイス110−1、...、110−Nと通信することが可能である。メモリデバイス110−1、...、110−Nは、総体的なメモリコントローラ108に結合されているように図示されるが、本開示のいくつかの実施形態は各メモリチャネルのための別個の不揮発性メモリコントローラを含むことが可能である。メモリデバイス110−1、...、110−Nは例えば不揮発性メモリセルといったメモリセルのいくつかのアレイを含むことが可能である。アレイは例えば、NAND構造を持つフラッシュアレイであることが可能である。NAND構造において、「行」のメモリセルの制御ゲートは例えばワード線といったアクセスに結合されることが可能であり、メモリセルは選択ゲートソーストランジスタおよび選択ゲートドレイントランジスタの間の「ストリング」におけるドレインに直列ソースで(in series source)に結合されることが可能である。ストリングは例えばビット線といったデータ線に、選択ゲートドレイントランジスタによって接続されることが可能である。「行」および「ストリング」という語の使用はメモリセルの線形の配置も直交する配置も暗示しない。当業者によって理解されるであろうように、メモリセルのビット線およびソース線への接続の方法は、アレイがNAND構造なのか、NOR構造なのかまたはいくつかの他のメモリアレイ構造なのかに依存する。
メモリデバイス110−1、...、110−Nは集団にまとめられることが可能ないくつかのメモリセルを含むことが可能である。本明細書で使用される場合、集団はメモリセルの、ページ、ブロック、プレーン、ダイ、アレイ全体または他の集団といった、いくつかのメモリセルを含むことが可能である。例えば、いくつかのメモリアレイはメモリセルのブロックを作るメモリセルのいくつかのページを含むことが可能である。いくつかのブロックがメモリセルのプレーンに含められることが可能である。いくつかのメモリセルのプレーンがダイに含められることが可能である。例として、128GBのメモリデバイスは、例えば4096バイトの書き込み情報に加えて218バイトのオーバーヘッド情報といったページ当たり4314バイトの情報、ブロック当たり128ページ、プレーン当たり2048ブロックおよびデバイス当たり16プレーンを含むことが可能である。
いくつかの実施形態において、メモリコントローラ108は第一のストライプマップ120および第二のストライプマップ122を含むことが可能である。いくつかの実施形態において、第一のストライプマップ120の少なくとも一部および/または第二のストライプマップ122の少なくとも一部はメモリデバイス110−1、...、110−N、ホストシステム102および/または別個の(不図示の)保存場所にも保存されることが可能である。第二のストライプマップ122は第一のストライプマップ102の逆であることが可能であり、その場合は、第一のストライプマップ120および第二のストライプマップ122は同じ情報を含み、しかし第一のストライプマップ120はストライプインデックスによってインデックス付けされ、第二のストライプマップ122はページ識別子によってインデックス付けされる。従って、第一のストライプマップ120はいくつかのページを特定のストライプに関連付けるために使用されることが可能であり、第二のストライプマップ122はいくつかのストライプを特定のページに関連付けるために使用されることが可能である。第一のストライプマップ120はメモリデバイス110−1、...、110−Nの特定のページを特定のストライプに関連付けるデータ構造であることが可能である。第一のストライプマップ120は、その各々がメモリデバイス110−1、...、110−Nでのストライプを識別するいくつかのストライプインデックスを含むことが可能である。第一のストライプマップ120は、メモリデバイス110−1、...、110−Nの特定のページを第一のストライプマップ120のストライプインデックスによって識別されるストライプと関連付けることが可能である。
いくつかの実施形態において、メモリコントローラ108は特定のページのビットエラーレートおよび/またはメモリデバイス110−1、...、110−N内の特定のページの物理的位置に基づいてストライプマップにおける特定のストライプと関連付けるための特定のページを選択することが可能である。例えば、メモリコントローラ108は、より低いビットエラーレートを持ついくつかのページとより高いビットエラーレートを持ついくつかのページを、ストライプの各々が様々なビットエラーレートを持つページを含むことになるように、ストライプに含ませるために、選択することが可能である。様々なビットエラーレートを持つページを含むストライプは訂正不可能なECCエラーをより持ちにくくあり、従ってECC動作はストライプを読み出すときにエラーを訂正するために使用されることが可能である。
また、メモリコントローラ108はメモリデバイス110−1、...、110−N上でのページの物理的場所に基づいてページを選択することが可能である。例えば、メモリコントローラ108は、例えば「端のページ」といったアレイの端の近くに置かれるいくつかのページ、および、アレイの中心に向かって置かれるいくつかのページを、ストライプの各々がメモリデバイス110−1、...、110−N上での様々な物理的場所を持つページを含むことになるように、選択することが可能である。メモリコントローラ108は様々な数のページを持つストライプマップにおいてストライプを含むことが可能である。例えば、あるストライプは6ページ含むことが可能であり、他のストライプは5ページ含むことが可能である。また、特定のページはメモリデバイス110−1、...、110−N上の1つより多くのストライプに含められることが可能である。
ページ識別子は、メモリデバイス110−1、...、110−Nにおける特定のページの場所を識別するために、チャネル情報、デバイス情報、ブロック情報および/またはページ情報を含むことが可能である。ページ識別子はページの物理アドレスを含むことが可能である。ページ識別子は読み出しおよび/または書き込み動作を実行するときページの場所を特定するためにメモリコントローラ108によって使用されることが可能である。
ホスト―メモリ翻訳回路は第一のおよび/または第二のレベルエラー検出回路(図1に図示されず)を含むことが可能である。エラー検出回路として参照されるが、エラー検出回路はエラー訂正を行うことも可能である。第一のレベルエラー検出回路は、当業者によって理解されるであろうように、メモリデバイス110−1、...、110−Nに保存される情報と関連付けられるエラーを検出するおよび/または訂正するために、BCHエラー訂正といったエラー訂正を適用するように構成されることが可能である。例えば、第一のレベルエラー検出回路は1080ビットの符号語ににわたるエラー訂正の29ビットを提供することが可能である。第二のレベルエラー検出回路は、例えば訂正不可能なエラー訂正符号(UECC)エラーといった、第一のレベルエラー検出によっては訂正可能ではないエラーを、例えば訂正可能なエラーの閾値の量を超えて存在するということを特定することにより、検出することが可能である。第二のレベルエラー検出回路はRAID排他的OR(XOR)回路を含むことが可能である。RAID XOR回路はホストインタフェース回路から受信する情報に基づいてパリティ情報を計算することが可能である。いくつかのメモリデバイス110−1、...、110−Nに書き込まれる各ビットに関して、パリティビットはRAID XOR回路によって計算されることが可能であり、メモリデバイス110−1、...、110−Nの特定の1つに書き込まれることが可能である。
第二のストライプマップ122はメモリデバイス110−1、...、110−Nでの特定のストライプをメモリデバイス110−1、...、110−Nでの特定のページに関連付けるデータ構造であることが可能である。第二のストライプマップ122はページによってインデックス付けされることが可能であり、その各々がメモリデバイス110−1、...、110−Nでのページを識別するいくつかのページ識別子を含むことが可能である。第二のストライプマップ122は第二のストライプマップ122でインデックス付けされるページにどのストライプが関連付けられるかを示すことが可能である。ページによってインデックス付けされる第二のストライプマップ122はストライプによってインデックス付けされる第一のストライプマップ120の逆であることが可能である。
いくつかの実施形態において、第二のストライプマップ122はRAID読み出しエラー回復動作を実施するために第二のレベルエラー検出回路によって使用されることが可能である。RAID読み出しエラー回復動作はUECCエラーが起きるときに実行されることが可能であり、メモリデバイス110−1、...、110−Nにおける1つまたはそれより多くのストライプの一部である不良なページからのデータは異なるページに移動されることが可能である。不良なページは、読み出し動作を行うときにUECCエラーが起こるページである場合がある。RAID読み出しエラー回復動作は、不良なページのページ識別子を第二のストライプマップ122に置くことによって第二のストライプマップ122を使用することが可能であり、不良なページを含んだメモリデバイス110−1、...、110−Nにおけるストライプを特定することが可能である。不良なページを含むと第二のストライプマップ122によって識別されるストライプは、不良なページからのデータがパリティデータを使って回復され、データがメモリデバイス110−1、...、110−Nでの異なるページに移動されるように、更新されることが可能である。第一のストライプマップ120はメモリデバイス110−1、...、110−Nでの更新されたストライプに異なるページのページ識別子を関連付けるようにその後更新されることが可能である。
図1の実施形態は、本開示の実施形態を不明瞭にしないために、図示されない追加の回路を、含むことが可能である。例えば、メモリシステム104は、I/O回路を介したI/O接続にわたって提供されるアドレス信号をラッチするためにアドレス回路を含むことが可能である。アドレス信号は行デコーダおよび列デコーダによって、メモリデバイス110−1、...、110−Nにアクセスするために、受信されデコードされることが可能である。アドレス入力接続の数はメモリデバイス110−1、...、110−Nの密度および構造に依存するということが当業者によって理解されるだろう。
図2は、本開示のいくつかの実施形態に従う、メモリデバイス210の部分の図を示す。メモリデバイス210は、図1に示されるメモリデバイス110−1〜110―Nといったデバイスであることが可能である。
図2に示されるように、メモリデバイス210は、メモリセルのいくつかの物理ブロック260−0(ブロック0)、260−1(ブロック1)、...、260−M(ブロックM)を含むことが可能である。図2に示される例において、符号「M」は、メモリデバイス210はいくつかの物理ブロックを含むことが可能であることを示すために使用される。例として、メモリデバイス210での物理ブロックの数は、128ブロック、4096ブロックまたは32768ブロックであり得、しかし、実施形態は、メモリデバイスでの物理ブロックの特定の数にも複数(multiple)にも限定されない。図2に示される実施形態において、メモリデバイス210は、例えば各物理ブロック260−0、260−1、...、260−Mが、例えば各物理ブロックにおけるセルが実質的に同時の方法で消去されることが可能であるといったように単位(unit)として共に消去されることが可能であるように、例えばNANDフラッシュメモリデバイス210であることが可能である。例えば、各物理ブロックにおけるセルが1つの消去動作で共に消去されることが可能である。
符号「R」は、例えば260−0、260−1、...、260−Mといったような物理ブロックはいくつかの行を含むことが可能であることを示すために使用される。いくつかの例において、各物理ブロックにおける、例えばワード線といった行の数は32であり得、しかし、実施形態は、物理ブロック当たりの、行270−0、270−1、...、270−Rの特定の数に限定されない。当業者が理解するであろうように、各行270−0、270−1、...、270−Rは、例えば偶数のページおよび奇数のページといった1つまたはそれより多くの物理ページを含むことが可能である。物理ページは、例えば共に書き込みおよび/または読み出しされるいくつかのセルといった書き込みおよび/または読み出しの単位、または、メモリセルの機能の集団、を指す。従って、偶数のページおよび奇数のページは、別個の書き込みおよび/または読み出し動作で書き込まれおよび/または読み出されることが可能である。
図2に示されるように、本開示のいくつかの実施形態において、ページは、いくつかのセクタ280−0、280−1、...、280−Sに情報を保存することが可能である。符号「S」はページがいくつかのセクタを含むことが可能であることを示すために使用される。情報はシステムおよび/またはユーザデータを含むことが可能である。各セクタ280−0、280−1、...、280−Sは、システムおよび/またはユーザデータを保存することが可能であり、エラー訂正符号(ECC)情報といったオーバーヘッド情報、および論理ブロックアドレス(LBA)情報を含むことが可能である。当業者が理解するであろうように、論理ブロックアドレス付けは、例えば各セクタが一意のLBAに対応するような、情報のセクタを識別するためにホストによって使用されることが可能である方式である。いくつかの実施形態において、セクタは保存ボリュームの最小のアドレス付け可能な部分である。例として、情報のセクタは、例えば256バイト、512バイトまたは1024バイトといったあるバイト数の情報であり得る。例えば、SSDはページに、4、8または16個のセクタを持ち得、その場合、セクタは512バイトであり得、また、SSDは物理ブロック当たりで128、256または512個のページを持ち得、従って物理ブロックサイズは131072バイト、262144バイトおよび524288バイト、である。実施形態はこれらの例に限定されない。
物理ブロック260−0、260−1、...、260−M、行270−0、270−1、...、270−R、セクタ280−0、280−1、...、280−Sおよびページのための他の構成が可能であることが注意されたい。例えば、物理ブロック260−0、260−1、...、260−Mの行270−0、270−1、...、270−Rは、例えば512バイトより多いまたは少ない情報を含むことが可能である単一のセクタに対応する情報を各々保存することが可能である。
図3は、ストライプ基準で動作される保存ボリューム340のブロック図を示す。保存ボリューム340は、例えば図1の、メモリシステム(例えば図1のメモリシステム104)での、ソリッドステートメモリデバイス110−1、...、110−Nといったいくつかのソリッドステートメモリデバイスにフォーマットされるファイルシステムによって提供されることが可能である。本明細書で記載されるように、各ソリッドステートメモリデバイスは、メモリチャネル342−1、...、342−(N−1)、342−Nと関連付けられることが可能である。しかし、いくつかの実施形態はデバイス当たりに複数のチャネルを含み得るように、例えばメモリチップといったメモリデバイス当たりの1つのチャネルに実施形態は限定されない。1つのメモリチップは、例えばメモリチップがメモリセルの物理プレーンを1つより多く含む場合のように、1つより多くのチャネルによってメモリコントローラに結合されることが可能である。情報は、いくつかのソリッドステートメモリデバイスによって提供される保存ボリューム340にわたっていくつかのストライプ344−1、344−2、...、344−Pに書き込まれることが可能である。
メモリシステムは、例えば図1に示されるホスト102といったホストシステムから書き込み情報を受信することが可能である。例えば図1のメモリコントローラ108に関連付けられるRAID XOR回路といったメモリシステムは、書き込み情報のためのパリティ情報を計算することが可能である。いくつかの実施形態において、書き込み情報およびパリティ情報は、書き込み情報が例えばチャネル342−1、...、342−(N−1)といったいくつかの利用可能なチャネルのサブセットにわたって書き込まれることが可能であるように、かつ、パリティ情報が、例えばチャネル342−Nといったいくつかの利用可能なチャネルの第二のサブセットにわたって書き込まれることが可能であるように、保存ボリューム340にわたるストライプであることが可能である。例えば、メモリシステムは、7つのチャネルが書き込み情報を書き込むために使用され1つのチャネルがパリティ情報を書き込むために使用される8つのチャネルを含むことが可能である。本明細書に記載されるように、パリティ情報は異なるストライプのための異なるチャネルにわたって書き込まれることが可能である。実施形態は、書き込み情報のためのNチャネルのN−1およびパリティ情報のための1つのチャネルを使用することに限定されない。本開示のいくつかの実施形態によれば、RAID構造および/またはストライプサイズはプログラム可能な選択肢であることが可能である。
RAID構造は、複数のメモリデバイスにわたって情報を分割および/または複製するために考案されるRAID保存方式の実装を表す。例えば、情報は、2つまたはそれより多くのデバイスにわたってストライピングされおよび/またはミラーリングされることが可能である。ストライピングは、書き込み情報を要素に分割すること、および、いくつかのメモリデバイスの各々に少なくとも1つの要素を保存することを含むことが可能である。ミラーリングは、書き込み情報のコピーを少なくとも2つのメモリデバイスに冗長に保存することが可能である。ストライピングおよびミラーリングは両方、エラー検出の使用を含むことが可能である。パリティ情報は、書き込み情報として同じメモリデバイスに、および/または書き込み情報を保存するデバイスとは別のデバイスに、保存されることが可能である。本開示のいくつかの実施形態によれば、メモリシステムによって実装される特定のRAID構造はプログラム可能な選択肢であることが可能である。
本明細書で使用される場合、ストライプサイズは、それにわたって情報がストライピングされるいくつかのチャネルを指すことが可能である。本開示のいくつかの実施形態によれば、メモリシステムのストライプサイズは、メモリシステムにとって利用可能な任意の数のチャネルがストライプのために使用されることが可能であるように、プログラム可能な選択肢であることが可能である。例えば、32個のチャネルと、対応するいくつかのメモリデバイスは、2から32個のチャンネルの任意のストライプサイズを持つことが可能である。いくつかの実施形態は、不揮発性メモリに関連付けられるいくつかのチャネルのサブセットを各々が含む少なくとも2つの部分に不揮発性メモリを論理的に分離することを含むことが可能である。そのような実施形態は、少なくとも2つの部分の各々のために独立的に、ストライプ基準で不揮発性メモリを動作させることを含むことが可能である。例えば、書き込み情報およびパリティ情報のいくつかのページは、各ストライプに書き込まれることが可能であり、その場合、第一のストライプは、メモリシステムのいくつかのチャネルのあるサブセットのみにわたって書き込まれ、また、第二のストライプは、メモリシステムのいくつかのチャネルの別のサブセットのみにわたって書き込まれる。更に、ストライプサイズは、メモリシステムの動作の間に変化し得る。ブロックテーブルは、メモリシステムのどの部分がどのストライプに対応するのかを継続的に把握するために使用されることが可能である。
図1でのメモリコントローラ108に関連付けられるECC回路は、書き込み情報の要素のための第一のレベルエラー訂正情報、および/または、メモリデバイスに保存される、例えばパリティ情報といった、第二のレベル訂正情報、を計算することが可能である。図3は、チャネル342−1、...、342−(N−1)に関連して保存されている書き込み情報346と第一のレベルエラー訂正情報348、および、チャネル342−Nと関連して保存されているパリティ情報350および第一のレベルエラー訂正情報348の図示を含む。ストライプが書き込まれるとき、書き込み情報およびエラー訂正情報の両方が共に書き込まれる。もしエラーが、書き込み情報であるかパリティ情報であるかを問わず情報において検出されると、第一のレベルエラー訂正情報は、例えば上記のパリティ情報と関連付けられる訂正といったエラー訂正の第二のレベルの前におよび/またはそれを実施することなく、エラーを訂正することを意図して、第一のレベルエラー訂正情報が使用されることが可能である。メモリシステムは、閾値の数の誤りのビットが訂正されることを可能とするのに十分な第一のレベルエラー訂正情報を保存し得る。第一のレベルエラー訂正情報で訂正可能なものより多くのビットエラーを含む、例えばUECCエラーといったエラーが書き込み動作の間にもし検出されると、例えば上記の第二のストライプマップおよびパリティ情報を使用するような、エラー訂正の第二のレベルが、例えばエラーに関連付けられる情報がパリティ情報および書き込み情報の残りを用いて再作成され得るといったように、実装され得る。
図4は本開示のいくつかの実施形態に従うストライプマップ420を示す。この例では「ページ」が参照されるが、ストライプはページではない要素を含むことが可能である。
図4に示される例では、ストライプマップ420はストライプインデックス列430およびいくつかのページ識別子列434を含むテーブルである。図4において、いくつかのストライプはストライプインデックス432−1、432−2、432−3、...432−Vによって指定される。ストライプインデックス432−1、432−2、432−3、...、432−Vの各々はいくつかのページと関連付けられる。例えば、ストライプインデックス432−1はページ識別子436−1、436−2、436−3および436−4と関連付けられ;ストライプインデックス432−2はページ識別子436−5、436−3、436−6および436−4と関連付けられ;ストライプインデックス432−3はページ識別子436−2、436−7、436−4および436−1と関連付けられ;ストライプインデックス432−Vはページ識別子436−8、436−7、436−4および436−Wと関連付けられる。2つまたはそれより多くのストライプは共通のページを含むことが可能である。例えば、ストライプインデックス432−1、432−2および432−3は全てページ識別子436−4と関連付けられる。また、ストライプは異なる数のページと関連付けられることが可能である。例えば、ストライプインデックス432−1は4つのページと関連付けられ、ストライプインデックス432−Vは3つのページと関連付けられる。
データがストライプインデックスによって識別されるストライプに書き込まれるときにストライプマップで指定されるように関連付けられるページにデータが書き込まれるように、データはストライプマップに従ってメモリデバイスに書き込まれることが可能である。例えば、ストライプインデックス432−1によって指定されるストライプを書き込むとき、データはページ識別子436−1、436−2、436−3および436−4によって識別されるページに書き込まれることになる。ページ識別子は、チャネル情報、デバイス情報、ブロック情報および/またはページ情報を含むことが可能である。また、各ストライプはパリティページを含むことが可能であり、各ストライプのパリティページはストライプマップの列の1つにおけるページ識別子によって指定されることが可能である。例えば、各ストライプのパリティページはストライプマップの第二の列におけるページ識別子によって識別されることが可能である。
図5は本開示のいくつかの実施形態に従う、ストライプマップ522を示す。この例では「ページ」が参照されるが、ストライプはページではない要素を含むことが可能である。ストライプマップ522は図4との関連で上記されたストライプマップ420の逆であることが可能である。図5に示される例において、ストライプマップ522はいくつかのストライプインデックス列430およびページ識別子列534を含むテーブルである。図5において、いくつかのページはページ識別子536−1、536−2、536−3、536−4、536−5、536−6、536−7、536−8、...、532−Vによって指定される。ページ識別子536−1、536−2、536−3、536−4、536−5、536−6、536−7、536−8、...、532−Vの各々はストライプインデックス532−1、532−2、532−3、...、532−Vによって指定されるいくつかのストライプと関連付けられる。例えば、ページ識別子536―3はストライプインデックス532−1および532−2によって参照されるストライプと関連付けられる。従って、UECCエラーに応じて、ストライプマップテーブル531はRAID読み出しエラー回復動作を実行するために使用されることが可能である。RAID読み出しエラー回復動作は1つまたはそれより多くのストライプの一部である不良なページからのデータを異なるページに移動することを含むことが可能である。RAID読み出しエラー回復動作はストライプマップ522での不良なページのページ識別子の場所を特定し、不良なページを含んだストライプを特定するために、ストライプマップ522を使用することが可能である。ストライプマップ522によって不良なページを含むと識別されるストライプは不良なページからのデータがパリティデータを使用して回復され、データが異なるページに移動されるように、更新されることが可能である。図4のストライプマップ420はその後、異なるページのページ識別子を更新されたストライプと関連付けるために更新されることが可能である。
本開示はメモリにおけるRAIDストライプマッピングのための方法およびデバイスを含む。1つの方法の実施形態はストライプマップに従って複数のメモリデバイスの保存ボリュームにわたっていくつかのストライプにデータ書き込むことを含み、その場合、いくつかのストライプの各々はいくつかの要素を含み、;およびストライプマップはいくつかのストライプを識別するためのいくつかのストライプインデックスおよびいくつかのストライプの各々に含められる要素を特定するためのいくつかの要素識別子を含む。
本明細書において特定の実施形態が図示され記載されてきたが、同様の結果を達成するように推定される仕組み(arrangement)は示された特定の実施形態の代用となることが可能であるということを当業者は理解するだろう。この開示は本開示のいくつかの実施形態の適合または変形を網羅することが意図されている。上記記載は説明の方法でなされ、限定の方法でなされたものではないということが理解されるべきである。上記実施形態の組み合わせおよび本明細書に具体的には記載されない他の実施形態が、上記記載を検討することで当業者に明らかになるだろう。本開示のいくつかの実施形態の範囲は上記の構造および方法が使用される他の用途を含む。従って、本開示のいくつかの実施形態の範囲は添付の特許請求の範囲およびそれら特許請求の範囲が権利を与えられる均等物の最大限の範囲を参照して決定されるべきである。
前述の詳細な説明において、開示を効率的にする目的で、いくつかの特徴が単一の実施形態にまとめられている。開示のこの方法は本開示の開示される実施形態が各請求項で明確に記載されているものより多くの特徴を使用しなければならないという意図を反映するものとして解釈されるべきでない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は単一の開示の実施形態の全ての特徴より少ないものにある。従って、以下の特許請求の範囲は、各請求項が別個の実施形態としてそれ自身存在する状態で、詳細な説明にここで組みこまれる。
図1は、本開示のいくつかの実施形態に従う、少なくとも1つのメモリシステムを含むコンピューティングシステムの形態の装置の機能ブロック図である。本明細書で使用される場合、ホスト102、メモリデバイス120、メモリアレイ、コントローラおよび/または検出回路は「装置」として独立的にも扱われ得る。図1に示される実施形態において、例えばソリッドステートドライブ(SSD)といったメモリシステム104は例えば制御回路といったハードウエアとして、ファームウエアとしておよび/またはソフトウエアとして実装されることが可能なホストインタフェース106およびメモリコントローラ108、および、例えば不揮発性マルチレベルメモリセルを含むソリッドステートメモリデバイスといったいくつかのメモリデバイス110−1、...、110−Nを含むことが可能である。メモリデバイス110−1、...、110−Nは、例えばメモリデバイスにフォーマットされたフィルシステムと共に、メモリシステムのために保存ボリュームを提供することが可能である。いくつかの実施形態において、メモリコントローラ108は物理ホストインタフェース106およびメモリデバイス110−1、...、110−Nを含むプリント基板に結合される特定用途向け集積回路(ASIC)であることが可能である。
図5は本開示のいくつかの実施形態に従う、ストライプマップ522を示す。この例では「ページ」が参照されるが、ストライプはページではない要素を含むことが可能である。ストライプマップ522は図4との関連で上記されたストライプマップ420の逆であることが可能である。図5に示される例において、ストライプマップ522はいくつかのストライプインデックス列530およびページ識別子列534を含むテーブルである。図5において、いくつかのページはページ識別子536−1、536−2、536−3、536−4、536−5、536−6、536−7、536−8、...、532−Vによって指定される。ページ識別子536−1、536−2、536−3、536−4、536−5、536−6、536−7、536−8、...、532−Vの各々はストライプインデックス532−1、532−2、532−3、...、532−Vによって指定されるいくつかのストライプと関連付けられる。例えば、ページ識別子536―3はストライプインデックス532−1および532−2によって参照されるストライプと関連付けられる。従って、UECCエラーに応じて、ストライプマップテーブル522はRAID読み出しエラー回復動作を実行するために使用されることが可能である。RAID読み出しエラー回復動作は1つまたはそれより多くのストライプの一部である不良なページからのデータを異なるページに移動することを含むことが可能である。RAID読み出しエラー回復動作はストライプマップ522での不良なページのページ識別子の場所を特定し、不良なページを含んだストライプを特定するために、ストライプマップ522を使用することが可能である。ストライプマップ522によって不良なページを含むと識別されるストライプは不良なページからのデータがパリティデータを使用して回復され、データが異なるページに移動されるように、更新されることが可能である。図4のストライプマップ420はその後、異なるページのページ識別子を更新されたストライプと関連付けるために更新されることが可能である。

Claims (29)

  1. ストライプマッピングのための方法であって、
    ストライプマップに従って複数のメモリデバイスの保存ボリュームにわたっていくつかのストライプにデータを書き込むこと、を含み、
    前記いくつかのストライプの各々は、いくつかの要素を含み、
    前記ストライプマップは、前記いくつかのストライプを識別するためのいくつかのストライプインデックスおよび前記いくつかのストライプの各々に含められる要素を識別するためのいくつかの要素識別子を含む、
    方法。
  2. 前記いくつかのストライプインデックスの各々を前記複数のメモリデバイスにおける前記要素の一部と関連付けることによって前記ストライプマップを作成することを含む、
    請求項1に記載の方法。
  3. 前記いくつかのストライプの各々をパリティ要素識別子と関連付けることによって前記ストライプマップを作成することを含む、
    請求項1に記載の方法。
  4. 前記要素と関連付けられるビットエラーレートに基づいて前記いくつかのストライプに含めるために前記要素を選択することによって前記ストライプマップを作成することを含む、
    請求項1に記載の方法。
  5. 前記複数のメモリデバイス内の前記ページの場所に基づいて前記いくつかのストライプに含めるために前記ページを選択することによって前記ストライプマップを作成することを含む、
    請求項1に記載の方法。
  6. 前記いくつかのストライプにデータを書き込むことは、前記データを前記いくつかの要素に分割することおよび前記いくつかの要素を前記複数のメモリデバイスに書き込むことを含む、
    請求項1から5のいずれか一項に記載の方法。
  7. 前記いくつかの要素を前記複数のメモリデバイスに書き込むことは、少なくとも1つの要素を前記複数のメモリデバイスの各々に書き込むことを含む、
    請求項6に記載の方法。
  8. 前記いくつかの要素を前記複数のメモリデバイスに書き込むことは、少なくとも1つの要素を前記複数のメモリデバイスのサブセットの各々に書き込むことを含む、
    請求項6に記載の方法。
  9. 少なくとも1つの要素を前記複数のメモリデバイスのサブセットの各々に書き込むことは、前記書き込みデータの各ページを前記複数のメモリデバイスのサブセットの各々に書き込むことを含む、
    請求項8に記載の方法。
  10. ストライプマッピングのための方法であって、
    特定の要素で起きる読み出しエラーの可能性に基づいて特定のストライプに含められるいくつかのストライプとメモリにおいて関連付けられる各要素のための要素識別子情報を含むストライプマップを保存することと、
    前記ストライプマップの前記要素識別子情報に基づいて前記メモリにわたってストライピングされるデータを、前記メモリにおける前記いくつかのストライプに書き込むこと、
    を含む方法。
  11. 前記ストライプマップを保存することは、前記いくつかのストライプの各々のために特定のストライプインデックスを提供することを含む、
    請求項10に記載の方法。
  12. 前記ストライプマップを保存することは、前記いくつかのストライプと関連付けられる各要素のために物理アドレスを提供することを含む、
    請求項10に記載の方法。
  13. 前記いくつかのストライプと関連付けられる各要素のための前記物理アドレスは、チャネル情報、デバイス情報、ブロック情報およびページ情報を含む、
    請求項12に記載の方法。
  14. 要素によってインデックス付けされかつ各特定の要素と関連付けられる各ストライプを識別する逆ストライプマップを保存することを含む、
    請求項10から12のいずれか一項に記載の方法。
  15. 不良な要素の要素識別子を異なる要素の要素識別子と交換することによって前記ストライプマップを更新することを含む、
    請求項10から12のいずれか一項に記載の方法。
  16. 前記ストライプマップは、特定のストライプと関連付けられる、可変である特定数の要素を含む、
    請求項10から12のいずれか一項に記載の方法。
  17. 前記ストライプマップは、前記いくつかのストライプの各々に含められるパリティ要素識別子を含む、
    請求項10から12のいずれか一項に記載の方法。
  18. ストライプマッピングのための方法であって、
    要素によってインデックス付けされ、かつ、複数のメモリデバイスにおけるいくつかの要素のうちの各特定の要素と関連付けられる各ストライプを識別する、ストライプマップを保存することと、
    前記ストライプマップにおける不良な要素の位置を特定することによって読み出しエラー回復動作を実施し、かつ、前記ストライプマップによって示されるように前記不良な要素と関連付けられるいくつかのストライプの各々を更新すること、
    を含む方法。
  19. 前記いくつかのストライプの各々を更新することは、要素ページを新しい要素と交換することを含む、
    請求項18に記載の方法。
  20. 前記読み出しエラー回復動作を、エラー訂正符号(ECC)動作の失敗に応じて実施することを含む、
    請求項18または19のいずれか一項に記載の方法。
  21. 前記ストライプマップから不良な要素の要素識別子を除去することによって前記ストライプマップを更新することを含む、
    請求項18または19のいずれか一項に記載の方法。
  22. 装置であって、
    いくつかのメモリデバイスと、
    前記いくつかのメモリデバイスに結合され、かつ、
    特定のストライプの特定の要素を定義するストライプマップであって、前記いくつかのメモリデバイスにおけるいくつかのストライプの各要素のための要素識別子を含むストライプマップを保存し、
    前記ストライプマップによって定義される前記いくつかのストライプの要素に書き込まれるデータを前記いくつかのメモリデバイスに書き込む、
    ように構成されるコントローラ、
    を含む装置。
  23. 各要素のための前記要素識別子は、チャネル情報、デバイス情報、ブロック情報、およびページ情報を含む、
    請求項22に記載の装置。
  24. いくつかの要素のうちの任意の要素は特定のストライプに含められることが可能である、
    請求項22に記載の装置。
  25. 特定のストライプの前記特定の要素は前記いくつかのメモリデバイスにおける様々な(varied)物理的な場所を含む、
    請求項22から24のいずれか一項に記載の装置。
  26. 前記様々な物理的な場所は、前記物理的な場所と関連付けられるビットエラーレートに基づいて選択される、
    請求項25に記載の装置。
  27. 装置であって、
    いくつかのメモリデバイスと、
    前記いくつかのメモリデバイスに結合され、かつ、
    特定のページおよび各特定のページと関連付けられるいくつかのストライプを識別するストライプマップを保存し、
    前記ストライプマップにおける不良なページの場所を特定することおよび前記ストライプマップによって示されるように、前記不良なページと関連付けられる前記いくつかのストライプの各々を更新すること、によってRAID読み出しエラー回復動作を実施する、
    ように構成されるコントローラ、
    を含む装置。
  28. 前記ストライプマップは、ページ識別子を用いて、前記特定のページの各々を識別する、
    請求項27に記載の装置。
  29. 前記不良なページと関連付けられる前記いくつかのストライプの各々は、前記いくつかのストライプの各々における新しいページを含むことによって更新される、
    請求項27または28のいずれか一項に記載の装置。
JP2017563321A 2015-06-10 2016-06-07 メモリにおけるストライプマッピング Active JP6422600B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/735,838 2015-06-10
US14/735,838 US9766837B2 (en) 2015-06-10 2015-06-10 Stripe mapping in memory
PCT/US2016/036138 WO2016200764A1 (en) 2015-06-10 2016-06-07 Stripe mapping in memory

Publications (2)

Publication Number Publication Date
JP2018517213A true JP2018517213A (ja) 2018-06-28
JP6422600B2 JP6422600B2 (ja) 2018-11-14

Family

ID=57504083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017563321A Active JP6422600B2 (ja) 2015-06-10 2016-06-07 メモリにおけるストライプマッピング

Country Status (7)

Country Link
US (3) US9766837B2 (ja)
EP (1) EP3289441B1 (ja)
JP (1) JP6422600B2 (ja)
KR (1) KR101874290B1 (ja)
CN (1) CN107743617B (ja)
TW (1) TWI599946B (ja)
WO (1) WO2016200764A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529672B2 (en) * 2014-09-25 2016-12-27 Everspin Technologies Inc. ECC word configuration for system-level ECC compatibility
US10073621B1 (en) * 2016-03-31 2018-09-11 EMC IP Holding Company LLC Managing storage device mappings in storage systems
US10545825B2 (en) * 2016-04-29 2020-01-28 Synamedia Limited Fault-tolerant enterprise object storage system for small objects
CN107870730B (zh) * 2016-09-23 2020-11-20 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和系统
US10365983B1 (en) * 2017-04-27 2019-07-30 EMC IP Holding Company LLC Repairing raid systems at per-stripe granularity
US10719399B2 (en) 2018-01-08 2020-07-21 International Business Machines Corporation System combining efficient reliable storage and deduplication
US10901840B2 (en) * 2018-06-28 2021-01-26 Western Digital Technologies, Inc. Error correction decoding with redundancy data
US11017112B2 (en) * 2018-07-03 2021-05-25 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10747614B2 (en) * 2018-07-23 2020-08-18 Micron Technology, Inc. Hybrid iterative error correcting and redundancy decoding operations for memory sub-systems
CN111124269B (zh) 2018-10-31 2023-10-27 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机可读存储介质
CN111124262B (zh) * 2018-10-31 2023-08-22 伊姆西Ip控股有限责任公司 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质
US11204716B2 (en) 2019-01-31 2021-12-21 EMC IP Holding Company LLC Compression offloading to RAID array storage enclosure
US11055188B2 (en) * 2019-04-12 2021-07-06 EMC IP Holding Company LLC Offloading error processing to raid array storage enclosure
TWI708260B (zh) * 2019-08-15 2020-10-21 華邦電子股份有限公司 儲存裝置及存取方法
US10970170B2 (en) 2019-08-29 2021-04-06 Micron Technology, Inc. Shared parity protection
KR20220023476A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
KR20220072242A (ko) * 2020-11-25 2022-06-02 삼성전자주식회사 비휘발성 메모리 장치의 데이터 기입 방법 및 이를 수행하는 비휘발성 메모리 장치
KR20220077573A (ko) * 2020-12-02 2022-06-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11520500B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction when downshifting multi-level memory cells
US11650881B2 (en) 2021-03-19 2023-05-16 Micron Technology, Inc. Managing storage reduction and reuse in the presence of storage device failures
US11892909B2 (en) 2021-03-19 2024-02-06 Micron Technology, Inc. Managing capacity reduction due to storage device failure
US11520656B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction and recovery due to storage device failure
US11307931B1 (en) * 2021-03-19 2022-04-19 Micron Technology, Inc. Using zones to manage capacity reduction due to storage device failure
US11733884B2 (en) 2021-03-19 2023-08-22 Micron Technology, Inc. Managing storage reduction and reuse with failing multi-level memory cells
US11605439B2 (en) * 2021-03-31 2023-03-14 Micron Technology, Inc. Remapping bad blocks in a memory sub-system
US11822814B2 (en) * 2022-02-28 2023-11-21 Western Digital Technologies, Inc. Dynamic XOR bin mapping in memory devices
US12001685B2 (en) * 2022-03-31 2024-06-04 Cohesity, Inc. Performing an in-line erasure coding process using a write-ahead log

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020066050A1 (en) * 2000-11-28 2002-05-30 Lerman Jesse S. Method for regenerating and streaming content from a video server using raid 5 data striping
US20100005228A1 (en) * 2008-07-07 2010-01-07 Kabushiki Kaisha Toshiba Data control apparatus, storage system, and computer program product
JP2013536959A (ja) * 2010-08-31 2013-09-26 マイクロン テクノロジー, インク. ストライプに基づく不揮発性多値メモリ操作
JP2013539132A (ja) * 2010-09-28 2013-10-17 ピュア・ストレージ・インコーポレイテッド Ssd環境のための適応的raid

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5570376A (en) * 1994-10-05 1996-10-29 Sun Microsystems, Inc. Method and apparatus for identifying faults within a system
US6513093B1 (en) * 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US6902882B2 (en) * 2000-05-23 2005-06-07 Kerong Gu Methods of monitoring production of gene products and uses thereof
JP3682256B2 (ja) * 2001-11-30 2005-08-10 株式会社東芝 ディスクアレイ装置及び同装置におけるパリティ処理方法
JP3702231B2 (ja) * 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
JP4238514B2 (ja) 2002-04-15 2009-03-18 ソニー株式会社 データ記憶装置
US7386663B2 (en) * 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7380157B2 (en) * 2004-10-27 2008-05-27 Pillar Data Systems, Inc. Staggered writing for data storage systems
US7386758B2 (en) * 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
TWI350526B (en) 2005-11-21 2011-10-11 Infortrend Technology Inc Data access methods and storage subsystems thereof
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
IT1399634B1 (it) * 2010-04-26 2013-04-26 G S G Srl Macchina per il trattamento di miscele alimentari ad attivazione centralizzata
US8898206B1 (en) * 2010-04-28 2014-11-25 Netapp, Inc. Mechanism for distributed inode to path traversal in a striped volume system
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
JP5980798B2 (ja) 2010-12-01 2016-08-31 シーゲイト テクノロジー エルエルシーSeagate Technology LLC 独立したシリコン素子の動的な上位レベルの冗長モード管理
KR101732030B1 (ko) 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US9251059B2 (en) * 2011-09-23 2016-02-02 Avalanche Technology, Inc. Storage system employing MRAM and redundant array of solid state disk
US8694849B1 (en) * 2011-12-19 2014-04-08 Pmc-Sierra Us, Inc. Shuffler error correction code system and method
WO2013119074A1 (ko) 2012-02-09 2013-08-15 Noh Sam Hyuk 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
JP6039699B2 (ja) * 2012-07-23 2016-12-07 株式会社日立製作所 ストレージシステム及びデータ管理方法
US9348758B2 (en) 2012-09-24 2016-05-24 Sk Hynix Memory Solutions Inc. Virtual addressing with multiple lookup tables and RAID stripes
US8862818B1 (en) 2012-09-27 2014-10-14 Emc Corporation Handling partial stripe writes in log-structured storage
US8977594B2 (en) 2012-12-21 2015-03-10 Zetta Inc. Systems and methods for state consistent replication
GB2517435A (en) * 2013-08-19 2015-02-25 Ibm Fast data back-up and restore between volatile and flash memory
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9274888B2 (en) * 2013-11-15 2016-03-01 Qualcomm Incorporated Method and apparatus for multiple-bit DRAM error recovery
US20150363118A1 (en) * 2014-06-17 2015-12-17 Netapp, Inc. Techniques for harmonic-resistant file striping
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9639268B2 (en) * 2014-08-21 2017-05-02 Datrium, Inc. Distributed data storage system with key-based addressing
KR20160083762A (ko) * 2015-01-02 2016-07-12 삼성전자주식회사 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020066050A1 (en) * 2000-11-28 2002-05-30 Lerman Jesse S. Method for regenerating and streaming content from a video server using raid 5 data striping
US20100005228A1 (en) * 2008-07-07 2010-01-07 Kabushiki Kaisha Toshiba Data control apparatus, storage system, and computer program product
JP2010015516A (ja) * 2008-07-07 2010-01-21 Toshiba Corp データ制御装置、ストレージシステムおよびプログラム
JP2013536959A (ja) * 2010-08-31 2013-09-26 マイクロン テクノロジー, インク. ストライプに基づく不揮発性多値メモリ操作
US20130339580A1 (en) * 2010-08-31 2013-12-19 Micron Technology, Inc. Stripe-based non-volatile multilevel memory operation
JP2013539132A (ja) * 2010-09-28 2013-10-17 ピュア・ストレージ・インコーポレイテッド Ssd環境のための適応的raid
US20140317447A1 (en) * 2010-09-28 2014-10-23 Pure Storage, Inc. Adaptive raid for an ssd environment

Also Published As

Publication number Publication date
EP3289441A4 (en) 2018-09-05
WO2016200764A1 (en) 2016-12-15
US20170357467A1 (en) 2017-12-14
US11042441B2 (en) 2021-06-22
CN107743617A (zh) 2018-02-27
US10339005B2 (en) 2019-07-02
EP3289441B1 (en) 2020-04-29
EP3289441A1 (en) 2018-03-07
TWI599946B (zh) 2017-09-21
TW201709044A (zh) 2017-03-01
US20190324847A1 (en) 2019-10-24
CN107743617B (zh) 2019-06-04
JP6422600B2 (ja) 2018-11-14
KR101874290B1 (ko) 2018-07-03
KR20180005284A (ko) 2018-01-15
US9766837B2 (en) 2017-09-19
US20160364181A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
US11042441B2 (en) Stripe mapping in memory
US8266501B2 (en) Stripe based memory operation
US9235503B2 (en) Stripe-based non-volatile multilevel memory operation
US9298545B2 (en) Data protection across multiple memory blocks
US9274883B2 (en) Apparatuses and methods for storing validity masks and operating apparatuses

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180115

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180115

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180903

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181016

R150 Certificate of patent or registration of utility model

Ref document number: 6422600

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