JP5841056B2 - ストライプベースのメモリ動作 - Google Patents

ストライプベースのメモリ動作 Download PDF

Info

Publication number
JP5841056B2
JP5841056B2 JP2012530857A JP2012530857A JP5841056B2 JP 5841056 B2 JP5841056 B2 JP 5841056B2 JP 2012530857 A JP2012530857 A JP 2012530857A JP 2012530857 A JP2012530857 A JP 2012530857A JP 5841056 B2 JP5841056 B2 JP 5841056B2
Authority
JP
Japan
Prior art keywords
stripe
data
memory
control circuit
writing
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
JP2012530857A
Other languages
English (en)
Other versions
JP2013506190A (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 JP2013506190A publication Critical patent/JP2013506190A/ja
Application granted granted Critical
Publication of JP5841056B2 publication Critical patent/JP5841056B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Description

本開示は、一般に、半導体メモリ装置、方法、およびシステムに関し、より詳細には、ストライプベースのメモリ動作に関する。
メモリ装置は、通常、コンピューターまたは他の電子機器の内部にある、半導体集積回路として提供される。揮発性および不揮発性メモリを含め、様々な種類のメモリがある。揮発性メモリは、そのデータを保持するために電力を必要とし得、とりわけ、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、およびシンクロナスダイナミックランダムアクセスメモリ(SDRM)を含む。不揮発性メモリは、電力が供給されていない場合に、格納された情報を保持することにより、永続的データを提供することができ、とりわけ、NANDフラッシュメモリ、NORフラッシュメモリ、読み取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、および相変化ランダムアクセスメモリ(PCRAM)を含むことができる。
メモリ装置は、ソリッドステートドライブ(SSD)を形成するために結合できる。様々な他の種類の不揮発性および揮発性メモリとして、ソリッドステートドライブは、例えば、NANDフラッシュメモリおよびNORフラッシュメモリなどの不揮発性メモリを含むことができ、かつ/または、例えば、DRAMおよびSRAMなどの揮発性メモリを含むことができる。フラッシュメモリ装置は、窒化物層の電荷捕獲に情報を格納する半導体−酸化物−窒化物−酸化物−半導体および金属−酸化物−窒化物−酸化物−半導体のコンデンサ構造を使用するフローティングゲート型フラッシュデバイスおよびチャージトラップ型フラッシュ(CTF)デバイスを含め、広範に渡る電子応用で不揮発性メモリとして利用され得る。フラッシュメモリ装置は、通常、高メモリ密度、高信頼性および低消費電力を可能にする1トランジスタメモリセルを使用する。
ソリッドステートドライブは、性能、サイズ、重さ、耐久性、動作温度範囲、および消費電力に関してハードドライブより有利であるため、SSDは、コンピューター用の主記憶装置としてハードディスク装置を置き換えるために使用できる。例えば、SSDは、可動部品がなく、シーク時間、待ち時間、および磁気ディスクドライブに関連する他の電気機械的遅延を回避し得るため、磁気ディスクに比較して優れた性能を有することができる。SDD製造業者は、不揮発性フラッシュメモリを使用して、内蔵バッテリー電源を使用しなくてもよいフラッシュSDDを作成し、そのドライブをより多目的かつ小型にすることができる。
SSDは、例えば、いくつかのメモリチップ(本明細書では、「いくつかの(a number of)」何かは、1つまたは複数のかかる何かを指すことができ、例えば、いくつかのメモリ装置は、1つまたは複数のメモリ装置を指すことができる)など、いくつかのメモリ装置を含むことができる。当業者には分かるように、メモリチップは、いくつかのダイおよび/または論理ユニット(LUN)を含むことができる。各ダイは、いくつかのメモリアレイおよびその上の周辺回路を含むことができる。メモリアレイは、いくつかの物理ページに編成されたいくつかのメモリセルを含むことができ、物理ページはいくつかのブロックに編成することができる。
レイド(RAID:redundant array of independent disk)は、データを複数のメモリ装置に分割および/または複製するコンピューターのデータ記憶方式のための包括的用語である。RAIDアレイ内の複数のメモリ装置は、ユーザーおよびコンピューターのオペレーティングシステムには、単一のメモリ装置(例えば、ディスクなど)として見え得る。歴史的に、RAIDは、複数のハードディスクドライブ(HDD)で動作された。
本開示の1つまたは複数の実施形態に従った、少なくとも1つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。 本開示の1つまたは複数の実施形態に従った、メモリシステムの機能ブロック図である。 本開示の1つまたは複数の実施形態に従った、不揮発性メモリ制御回路の機能ブロック図である。 本開示の1つまたは複数の実施形態に従った、ストライプベースで動作される記憶ボリュームの機能ブロック図である。 本開示の1つまたは複数の実施形態に従った、メモリ装置の一部の概略図を示す。
本開示は、ストライプベースのメモリ動作のための方法および装置を含む。一方法実施形態は、複数のメモリ装置の記憶ボリュームに渡る第1ストライプにデータを書き込むことを含む。第1ストライプの一部は、複数のメモリ装置の記憶ボリュームに渡る第2ストライプの一部に更新データを書き込むことによって更新される。第1ストライプのその一部は無効にされる。第1ストライプの無効な部分および第1ストライプの残りは、第1ストライプがリクレイムされるまで保持される。
本開示の以降の詳細な説明では、本明細書の一部を形成する添付の図が参照され、それらの図では、実例として、本開示の1つまたは複数の実施形態がどのように実施され得るかが示されている。これらの実施形態では、当業者が本開示の実施形態を実施できるようにするだけの十分な詳細が説明されており、また、他の実施形態が利用され得、本開示の範囲から逸脱することなく、プロセス、電気的、および/または構造的変更がなされ得ることを理解されたい。本明細書では、指示子「N」、「M」、「P」、「R」、および「S」は、特に図中の参照数字に関して、そのように指示されたいくつかの特定の機能が、本開示の1つまたは複数の実施形態に含めることができることを示す。
本明細書の図は、上桁の数字が図の番号に対応し、残りの数字がその図の要素または構成要素を特定する番号付け方式に従う。異なる図の同様の要素または構成要素は、同様の数字を使用することによって特定され得る。例えば、108は、図1の要素「08」を指し得、同様の要素は、図2では208として参照され得る。理解されるように、本明細書の様々な実施形態で示される要素は、本開示のいくつか追加の実施形態を提供するために、追加、交換、および/または除去できる。さらに、理解されるように、図で提供されている要素の比率および相対的サイズは、本発明の実施形態を説明することを目的としており、限定する趣旨で理解されるべきではない。
図1は、本開示の1つまたは複数の実施形態に従った、少なくとも1つのメモリシステム104を含むコンピューティングシステム100の機能ブロック図である。図1に示す実施形態では、メモリシステム104(例えば、ソリッドステートドライブ(SDD))は、物理ホストインタフェース106、メモリシステム制御回路108(例えば、SSDコントローラ)、および1つまたは複数のソリッドステートメモリ装置110−1、...、110−Nを含むことができる。ソリッドステートメモリ装置110−1、...、110−Nは、メモリシステムに対して、例えば、そのメモリ装置に対してフォーマットされたファイルシステムで、記憶ボリュームを提供できる。1つまたは複数の実施形態では、メモリシステム制御回路108は、物理インタフェース106およびソリッドステートメモリ装置110−1、...、110−Nを含む、プリント基板に結合された特定用途向け集積回路(ASIC)にできる。
図1に示すように、メモリシステム制御回路108は、物理ホストインタフェース106およびソリッドステートメモリ装置110−1、...、110−Nに結合できる。物理ホストインタフェース106は、メモリシステム104とホストシステム102などの別の装置との間で情報を伝達するために使用できる。ホストシステム102は、メモリアクセス装置(例えば、プロセッサ)を含むことができる。当業者には、「プロセッサ」は、並列処理システム、いくつかのコプロセッサなど、1つまたは複数のプロセッサを表すことができることが分かるであろう。ホストシステムの例は、ラップトップコンピューター、パーソナルコンピューター、デジタルカメラ、デジタル録音再生装置、携帯電話、PDA、メモリカードリーダー、インタフェースハブ、および同類のものを含む。1つまたは複数の実施形態について、物理ホストインタフェース106は、標準化されたインタフェースの形にできる。例えば、メモリシステム104がコンピューティングシステム100でデータ記憶用に使用される場合、物理ホストインタフェース106は、他のコネクタおよびインタフェースとして、シリアルATA(SATA:serial advanced technology attachment)、PCI Express(PCIe:peripheral component interconnect express)、またはユニバーサルシリアルバス(USB)にすることができる。しかし、一般に、物理ホストインタフェース106は、メモリシステム104と、物理ホストインタフェース106に対して互換性のあるレセプターを有するホストシステム102との間で、制御、アドレス、データ、および他の信号を渡すためのインタフェースを提供できる。
メモリシステム制御回路108は、いくつかの動作の中で特に、データの読み取り、書き込み、および消去を行うために、ソリッドステートメモリ装置110−1、...、110−Nと通信することができる。メモリシステム制御回路108は、1つまたは複数の集積回路および/または個別部品であり得る回路を有することができる。1つまたは複数の実施形態について、メモリシステム制御回路108内の回路は、ソリッドステートメモリ装置110−1、...、110−Nに渡るアクセスを制御するための制御回路およびホストシステム102とメモリシステム104との間に変換層を提供するための回路を含み得る。従って、メモリコントローラは、適切な時期に適切な入出力接続で、適切な信号を受信するために、ソリッドステートメモリ装置110−1、...、110−Nの入出力接続(図1に示さず)を選択的に結合できる。同様に、ホストシステム102とメモリシステム104との間の通信プロトコルは、ソリッドステートメモリ装置110−1、...、110−Nのアクセスで必要なプロトコルとは異なり得る。メモリシステム制御回路108は、その後、ソリッドステートメモリ装置110−1、...、110−Nに対する所望のアクセスを達成するために、ホストから受信したコマンドを適切なコマンドに変換できる。
ソリッドステートメモリ装置110−1、...、110−Nは、1つまたは複数のメモリセル(例えば、不揮発性メモリセルなど)のアレイを含むことができる。アレイは、例えば、NAND構造のフラッシュアレイにできる。NAND構造では、メモリセルの「行(row)」の制御ゲートは、アクセス(例えば、ワード線)と結合することができ、他方、メモリセルは、選択ゲートソーストランジスタと選択ゲートドレイントランジスタとの間の「ストリング」内でソースからドレインへと順番に結合できる。このストリングは、選択ゲートドレイントランジスタにより、データ(例えば、ビット線)に結合できる。「行」および「ストリング」という用語の使用は、メモリセルの線状配列または直交配列のどちらも意味しない。当業者には分かるように、メモリセルのビット線およびソース線への接続方法は、アレイがNAND構造、NOR構造、または他のメモリアレイ構造のいずれであるかによって決まる。
ソリッドステートメモリ装置110−1、...、110−Nは、グループ化できるいくつかのメモリセルを含むことができる。本明細書では、グループは、ページ、ブロック、プレーン(plane)、ダイ、アレイ全体、またはメモリセルの他のグループなど、1つまたは複数のメモリセルを含むことができる。例えば、いくつかのメモリアレイは、メモリセルのブロックを構成するいくつかのページのメモリセルを含むことができる。いくつかのブロックは、メモリセルのプレーンに含まれる。いくつかのプレーンのメモリセルは、1つのダイに含まれる。一例として、128GBのメモリ装置は1ページ当たり4314バイトのデータ、1ブロック当たり128ページ、1プレーン当たり2048ブロック、1装置当たり16プレーンを含むことができる。
メモリシステム104は、ソリッドステートメモリ装置110−1、...、110−N上の摩耗率を制御するためにウェアレベリング(wear leveling)を実装できる。ソリッドステートメモリアレイは、いくつかのプログラムおよび/または消去サイクルの後、エラー(例えば、障害)を経験する可能性がある。ウェアレベリングは、特定のグループ上で実行されるプログラムおよび/または消去サイクルの数を減少させることができる。ウェアレベリングは、ブロックをリクレイム(reclaim)するために移動される有効なブロックの量を最小限にするために動的ウェアレベリングを含むことができる。動的ウェアレベリングは、ガーベジコレクションと呼ばれる技術を含むことができる。ガーベジコレクションは、例えば、「欲張りアルゴリズム(greedy algorithm)」に従って、最も多い無効なページを有するブロックをリクレイムすること(例えば、消去および書き込み用に利用可能にすること)を含むことができる。代替として、ガーベジコレクションは、閾値より多い無効なページを持つブロックをリクレイムすることを含むことができる。書き込み動作のために十分な空きブロックが存在する場合、ガーベジコレクション動作は生じ得ない。例えば、無効なページは、異なるページに更新されているデータのページにできる。静的ウェアレベリングは、ブロックの寿命を延ばすために、消去カウントの高いブロックに静的データを書き込むことを含む。本開示の1つまたは複数の実施形態は、ウェアレベリング(例えば、ガーベジコレクションおよび/またはリクラメーション(reclamation))を、ブロックベースではなくストライプベースで実行することができる。本開示の1つまたは複数の実施形態によれば、リクラメーションプロセスは、閾値より少ない使用可能な空きブロック数に応じて、開始することができる。
書き込み増幅(write amplification)は、ソリッドステートメモリ装置110−1、...、110−Nにデータを書き込む際に生じ得るプロセスである。データをメモリアレイにランダムに書き込む場合、制御回路はアレイ内で空き領域を探して走査する。メモリアレイ内の空き領域は、データを格納しておらず、かつ/または消去されている、個々のセル、ページ、および/またはメモリセルのブロックであり得る。データを選択した記憶位置に書き込むために十分な空き領域がある場合、データはメモリアレイの選択した記憶位置に書き込まれる。選択した記憶位置に十分な空き領域がない場合、メモリアレイ内のデータは、選択した記憶位置に既に存在するデータを読み取り、コピー、移動、またはそうでない場合は、再書き込みおよび消去により新しい記憶位置に再配置して、その選択した記憶位置に書き込まれる新しいデータのために空き領域を残す。メモリアレイ内の古いデータの再配置は、メモリ装置によって実行される書き込み量が、選択した記憶位置に十分な空き領域があった場合に生じる書き込み量を超えて増幅されるため、書き込み増幅と呼ばれる。本開示の1つまたは複数のストライプベースのメモリ動作実施形態が、本明細書で説明するように、書き込み増幅を削減するために使用できる。
図1の実施形態は、本開示の実施形態を曖昧にしないために図示されていない追加の回路を含むことができる。例えば、メモリシステム104は、入出力回路を経て入出力接続で提供されるアドレス信号をラッチするためにアドレス回路を含むことができる。アドレス信号は、ソリッドステートメモリ装置110−1、...、110−Nにアクセスするために行デコーダおよび列デコーダによって受信および復号できる。当業者には、アドレス入力接続数がソリッドステートメモリ装置110−1、...、110−Nの密度および構造によって決まることが理解されるであろう。
図2は、本開示の1つまたは複数の実施形態によるメモリシステム204の機能ブロック図である。メモリシステム204は、メモリシステム制御回路208を含むことができる。メモリシステム制御回路208は、1つまたは複数のソリッドステートメモリ装置(例えば、不揮発性メモリ210および/または揮発性メモリ212)と結合することができる。メモリシステム204およびメモリシステム制御回路208は、それぞれ、図1に示すメモリシステム104およびメモリシステム制御回路108に類似することができる。
メモリシステム制御回路208は、ホストインタフェース回路214、ホストメモリ変換回路216、メモリ管理回路218、スイッチ220、不揮発性メモリ制御回路222、および/または揮発性メモリ制御回路224を含むことができる。本明細書で説明する通り、メモリシステム制御回路208は、ASICの形で提供できるが、実施形態はそのように限定されない。
ホストインタフェース回路214は、ホストメモリ変換回路216に結合できる。ホストインタフェース回路214は、図1に示す物理インタフェース106などの、ホストシステムへの物理インタフェースに結合および/またはそれを組み込むことができる。ホストインタフェース回路214は、物理層、リンク層、および/またはトランスポート層を含む、いくつかの層を介して、ホストシステム(例えば、図1のホストシステム102)とインタフェースを取ることができる。当業者には、特定のホストインタフェースに対する層の数は、シリアルATA(SATA)、PCI Express(PCIe)、ユニバーサルシリアルバス(USB)などの、インタフェース規格によって定義できることが理解されるであろう。本明細書では、トランスポート層は、少なくとも、SATA規格の一部としてのトランスポート層および/またはPCIe規格の一部としてのトランザクション層を示すことができる。当業者には、SATA規格によるトランスポート層は、PCIe規格によるトランザクション層に類似できることが理解されるであろう。ホストインタフェース回路214は、拡張ホストコントローラインタフェース(AHCI)準拠のホストバスアダプタ(HBA)を含むことができる。
一般に、ホストインタフェース回路214は、ホストシステムから(例えば、PCIeバスから)受信したコマンドパケットのホストメモリ変換回路216に対するコマンド命令への変換、および要求ホストへの送信のために、ホストメモリ変換応答のホストシステムコマンドへの変換に関与する。例えば、ホストインタフェース回路214は、PCIeベースのトランザクション層パケットからSATAコマンドパケットを構築できる。ホストインタフェース回路214は、ホストシステムから複数のアドレスに関連するデータを受信するように構成できる。ホストインタフェース回路214は、複数のアドレスの1つまたは複数に関連する更新データを受信できる。
ホストメモリ変換回路216は、ホストインタフェース回路214、メモリ管理回路218、および/またはスイッチ220に結合できる。ホストメモリ変換回路216は、ホストアドレスをメモリアドレス(例えば、読み取りおよび/または書き込みコマンドなどの受信したコマンドに関連するアドレス)に変換するように構成できる。ホストメモリ変換回路216は、例えば、ホストセクター読み取りおよび書き込み動作を、不揮発性メモリ210の特定の部分に向けられたコマンドに変換し得る。各ホスト動作は、単一または複数セクターの不揮発性メモリ210動作に変換できる。例えば、ホスト読み取りおよび書き込みコマンドは、不揮発性メモリ210の読み取りおよび書き込みコマンドに変換できる。ホストメモリ変換回路216は、RAID排他的論理和(XOR)回路226などの、第2レベルのエラー検出/訂正回路を含むことができる。RAID XOR回路226は、ホストインタフェース回路214から受信したデータに基づきパリティデータを計算できる。
本開示の1つまたは複数の実施形態によると、書き込みデータは、RAID動作において、複数のソリッドステートメモリ装置に渡ってストライプ化できる。当業者には分かるように、ストライピングは、複数の装置上に格納できるようにデータを分割することを含む。分割データを格納する複数の装置の一部は、集合的にストライプと呼ばれる。対照的に、ミラーリングは、データの重複するコピーを複数の装置に格納することを含み得る。ストライピングについては、図4に関連してより詳細に説明する。一例として、書き込みデータが、8つのメモリ装置の7つに渡ってストライプ化でき、そこで、パリティデータが8番目のメモリ装置に格納できる。例えば、メモリシステム204は複数の不揮発性メモリ装置210を含むことができ、各々、別個のチャネルでメモリシステム制御回路208と結合されている。例えば、8つのメモリ装置の7つに書き込まれた各ビットに対して、パリティビットがRAID XOR回路226によって計算されて、8番目のメモリ装置に書き込むことができ、例えば、7つのメモリ装置の各々からのビット0が、パリティ(8番目)メモリ装置でビット0を生成するために使用できる。
メモリ管理回路218は、ホストメモリ変換回路216およびスイッチ220に結合できる。メモリ管理回路218は、初期化、ウェアレベリングを含め、これらに限定されず、例えば、ガーベジコレクションおよび/もしくはブロックリクラメーション、ならびに/またはエラー検出/訂正など、いくつかのプロセスを、例えば、プロセッサ228の動作によって制御できる。メモリ管理回路218は、ウェアレベリングの候補(例えば、ガーベジコレクション)を決定するために、ブロックテーブル(例えば、ブロックテーブル236)にアクセスできる。メモリ管理回路218は、ストライプの一部(例えば、1つまたは複数のブロック)が有効か無効かについて、ブロックテーブル(例えば、ブロックテーブル236)に指示を提供するように構成できる。メモリ管理回路218は、論理アドレスに関連するデータが更新された場合に、LBAテーブル(例えば、LBAテーブル234)を論理アドレスに対応する新しい物理アドレスで更新できる。ストライプベースの動作に関して、メモリ管理回路218は、特定ストライプの一部に関連する検出されたエラーに応じて、特定ストライプから特定ストライプの一部が有効に除去されるように構成できる。
メモリ管理回路218は、例えば、ウェアレベリング動作の一部として、ブロックテーブル(例えば、ブロックテーブル236)内で消去カウントの高いブロックを検索できる。メモリ管理回路は、特定ブロックの消去カウントを閾値と比較できる。例えば、消去カウントの最も低いブロックの消去カウントが特定ブロックから減算される。差異が閾値より大きい場合、特定ブロックはブロックリクラメーションの候補として示すことができる。
メモリ管理回路218は、例えば、動的ウェアレベリング動作の一部として、その中に閾値量の無効な(例えば、未使用の)部分(例えば、ページ)のガーベジコレクションを有するブロックを検索できる。ブロックテーブル(例えば、ブロックテーブル236)の検索後、メモリ管理回路218は、最も多くの無効なページを有するストライプをストライプベースのリクラメーションプロセスの候補として示すことができる。メモリ管理回路218は、リクラメーション回路230を含むことができる。リクラメーションは、ウェアレベリングの一部として、メモリ管理回路218によって起動できるプロセスである。リクラメーションは、ブロックが消去される前に、全ての無効なページを消去されるブロックから新しい記憶位置に移動させることを伴う。
スイッチ220は、ホストメモリ変換回路216、メモリ管理回路218、不揮発性制御回路222、および/または揮発性メモリ制御回路224に結合できる。スイッチ220は、クロスバースイッチにすることができ、1つまたは複数のバッファ(例えば、スタティックランダムアクセスメモリ(SRAM)バッファ)を含むか、および/またはそれに結合することができる。スイッチ220は、メモリシステム制御回路208の様々な構成要素間のインタフェースを提供できる。スイッチ220は、構成要素間に一貫したアクセスおよび実装を提供するために、メモリシステム制御回路208の異なる構成要素に関連し得る定義された信号プロトコルの変動を説明できる。1つまたは複数の実施形態では、スイッチ220は、直接メモリアクセス(DMA)モジュールにできる。
不揮発性メモリ制御回路222(例えば、コントローラ)は、スイッチ220および1つまたは複数の不揮発性メモリ装置210に結合できる。その他の情報としては、1つまたは複数の不揮発性メモリ装置210は、本明細書で説明する通り、論理ブロックアドレス(LBA)テーブル234−Cおよび/またはブロックテーブル236−Cのコピーを格納できる。いくつかの実施形態では、メモリシステム制御回路208は、全メモリチャネルに対して、1つの不揮発性メモリコントローラを含むことができる。1つまたは複数の他の実施形態では、各メモリチャネルは、個別の不揮発性メモリコントローラに結合される。
各チャネルに対する個別の不揮発性メモリコントローラを含む1つまたは複数の実施形態は、各コントローラに結合された個別の第1レベルのエラー検出/訂正回路232および/または複数のチャネルで使用できる1つまたは複数の第1レベルのエラー検出/訂正回路232を含むことができる。第1レベルのエラー検出/訂正回路232は、当業者には分かるように、不揮発性メモリ210に格納されているデータに関連するエラーを検出および/または訂正するために、BCHエラー訂正などのエラー訂正に適用するように構成できる。例えば、第1レベルのエラー検出/訂正回路は、1080ビットの符号語について29ビットのエラー訂正を提供できる。第1レベルのエラー検出/訂正回路232は、シングルおよび/またはマルチレベルセル(SLC/MLC)動作に対して、異なるエラー訂正方式を提供するように構成できる。第1レベルのエラー検出/訂正回路232は、第1レベルのエラー検出/訂正によって訂正不可能なエラー(例えば、UECCエラー)を、訂正可能エラーの閾値よりも多いエラーがあることを判定することなどにより、検出できる。図4に関してより詳細に説明するように、本開示の1つまたは複数の実施形態は、UECCエラーの訂正を提供する。例えば、UECCエラーまたは他のエラーのあるストライプの一部は、ストライプから有効に除去することができ、不揮発性メモリ制御回路222は、除去された部分なしでストライプを動作するように構成できる。
不揮発性メモリ制御回路222は、本明細書で説明するように、いくつかのメモリチャネルに渡る第1ストライプ内にデータを書き込むように構成できる。不揮発性メモリ制御回路222は、第1ストライプ内のデータを読み取りまたはコピーすることなく、メモリチャネル数に渡る第2ストライプに更新データを書き込むように構成できる。1つまたは複数の実施形態では、不揮発性メモリ制御回路222は、ストライプの残りを読み取ることなく、ページベースでストライプの部分を読み取るように構成できる。不揮発性メモリ制御回路222は、メモリチャネル数に関連するいくつかの不揮発性メモリ装置をRAIDとして動作するように構成できる。メモリチャネル数の少なくとも1つがパリティチャネルとして動作でき、従って、メモリチャネル数の少なくとも1つに関連する1つまたは複数のメモリ装置がパリティメモリ装置として動作できる。ストライプベースのメモリ動作に関するさらなる詳細については、以下で本開示全体を通して、図4の説明に関連して提供される。
揮発性メモリ制御回路224は、スイッチ220および1つまたは複数の揮発性メモリ装置212に結合できる。他の情報としては、1つまたは複数の揮発性メモリ装置は、LBAテーブル234および/またはブロックテーブル236に格納できる。LBAテーブル234は、ページの物理ページアドレスを1つまたは複数の不揮発性メモリ装置210に格納して、対応する論理アドレスを含むことができる。LBAテーブル234は、関連するSATAコマンドに含まれているLBAによってインデックス付けできる。LBAテーブル234は、対応する情報が格納できる論理ブロックアドレスに対応する物理ページアドレスを検索するために使用できる。ブロックテーブル236は、消去可能ブロックに関する情報を1つまたは複数の不揮発性メモリ装置210内に格納できる。ブロックテーブル236に格納されている情報は、有効なページ情報、消去カウント、および他の状態情報を含むことができる。ブロックテーブル236からアクセスされる情報は、物理ブロックアドレスによってインデックス付けできる。
図3は、本開示の1つまたは複数の実施形態に従った、不揮発性メモリ制御回路322の機能ブロック図である。不揮発性メモリ制御回路322は、図2に示す不揮発性メモリ制御回路222に類似することができる。不揮発性メモリ制御回路322は、1つまたは複数のソリッドステートメモリ装置310−1、...、310−Nに結合できる。1つまたは複数の実施形態では、各ソリッドステートメモリ装置310−1、...、310−Nは、別個のチャネルによって不揮発性メモリ制御回路322に結合できる。各チャネルは、別個のチャネルメモリ制御回路338−1、...、338−Nと関連付けできる。しかし、1つまたは複数の実施形態では、より少ない(例えば、1つの)不揮発性メモリ制御回路322が複数のチャネルに対する制御を提供できるので、実施形態は、そのように限定されない。不揮発性メモリ制御回路は、ページ読み取り、ストライプ書き込み、およびストライプ消去を含め、1つまたは複数のソリッドステートメモリ装置310−1、...、310−N上でいくつかの動作を実行できる。
ページ読み取り動作は、メモリのページへのアクセスを可能にできる。ページ読み取りコマンドは、特定のチャネルメモリコントローラ338−1、...、338−Nに送信(例えば、キュー登録)されて、1つまたは複数のソリッドステートメモリ装置310−1、...、310−N上で実行できる。例えば、ページ読み取り動作は、ページサイズに応じて、4キロバイト(KB)、8KB、または別の量のデータ、加えてメタデータをサポートできる。ページ読み取り動作からのデータは、例えば、DMA動作で、チャネルメモリコントローラ338−1、...、338−Nにより、ソリッドステートメモリ装置310−1、...、310−N内のページから読み取りバッファへ転送できる。装置状態は、メモリチャネル上での動作が完了すると提供できる。
ストライプ書き込み動作は、複数のページ書き込み動作(例えば、不揮発性メモリ制御回路322に関連する各チャネル毎に1ページ書き込み動作)を含むことができる。1つまたは複数の実施形態では、ストライプ書き込み動作における複数のページ書き込み動作は、複数のチャネルに渡って実質的に同時に実行できる。ページ書き込み動作は、メモリのページへのアクセスを可能にできる。ページ書き込みコマンドは、所望のチャネルメモリコントローラ338−1、...、338−Nに送信(例えば、キュー登録)されて、1つまたは複数のソリッドステートメモリ装置310−1、...、310−N上で実行できる。例えば、ページ書き込み動作は、ソリッドステートメモリ装置310−1、...、310−Nのページサイズに応じて、4キロバイト(KB)、8KB、または別の量のデータ、加えてメタデータをサポートできる。ページ書き込み動作からのデータは、書き込みバッファからソリッドステートメモリ装置310−1、...、310−N内のページへ、チャネルメモリコントローラ338−1、...、338−Nによって転送できる。ストライプ書き込み動作のための書き込みデータは、例えば、図1に示すホストシステム102のような、ホストシステムから受信できる。
書き込みデータは、複数のソリッドステートメモリ装置310−1、...、310−Nの記憶ボリュームに渡ってストライプ化できる。例えば、ホストから受信された書き込みデータの第1ページは第1メモリ装置に、第2ページは第2メモリ装置に、などと、書き込むことができる。別の実施形態例では、ホストから受信した書き込みデータの第1ページの第1断片(例えば、セクター)は、第1メモリ装置に、第1ページの第2断片は第2装置に、などと、書き込むことができる。データはストライプベースの動作で書き込み得るが、データはまだページベース動作で読み取られ得る。
ストライプリクラメーション動作は、複数のブロック消去動作(例えば、不揮発性メモリ制御回路322に関連する各チャネル毎に1ブロック消去)を含むことができる。1つまたは複数の実施形態では、ストライプリクラメーション動作における複数のブロック消去動作は、複数のチャネルに渡って実質的に同時に実行できる。ブロック消去コマンドは1つまたは複数のソリッドステートメモリ装置310−1、...、310−N上で実行できる。ストライプベースの動作に関するさらなる詳細について、本明細書で説明する。
図4は、本開示の1つまたは複数の実施形態に従った、ストライプベースで動作される記憶ボリューム440のブロック図を示す。記憶ボリューム440は、メモリシステム(例えば、図1のメモリシステム104)内のいくつかのソリッドステートメモリ装置(例えば、図1のソリッドステートメモリ装置110−1、...、110−N)に対してフォーマットされたファイルシステムによって提供できる。本明細書で説明する通り、各ソリッドステートメモリ装置は、メモリチャネル442−1、...、442−(N−1),442−Nに関連付けることができる。データは、ソリッドステートメモリ装置数によって提供される記憶ボリュームに渡るいくつかのストライプ444−1,444−2、...、444−Pに書き込むことができる。
メモリシステムは、ホストシステムから書き込みデータを受信できる。メモリシステム(例えば、図2のホストメモリ変換回路216に関連するRAID XOR回路226)は、書き込みデータに対するパリティデータを計算できる。1つまたは複数の実施形態では、書き込みデータおよびパリティデータは、書き込みデータが利用可能なチャネル数のサブセット(例えば、チャネル442−1、...、442−(N−1))に渡って書き込まれ、パリティデータが利用可能なチャネル数の第2サブセット(チャネル442−N)に渡って書き込むことができるように、記憶ボリューム440に渡ってストライプ化できる。例えば、メモリシステムは、書き込みデータの書き込みに7つのチャネルが使用され、1つのチャネルがパリティデータの書き込みに使用される場合に、8つのチャネルを含むことができるが、実施形態は、そのように限定されない。しかし、実施形態は、書き込みデータに対してN個のチャネルのうちのN−1個を使用し、パリティデータに対して単一チャネルを使用するように限定されない。本開示の1つまたは複数の実施形態によれば、RAID構造および/またはストライプサイズは、プログラム可能な選択肢である。
RAID構造は、複数のメモリ装置に渡ってデータを分割および/または複製するために、考案されたRAID記憶方式の実装を表すことができる。例えば、データは、2つ以上の装置に渡ってストライプ化および/またはミラー化できる。さらに、ストライピングは、書き込みデータの断片への分割、および少なくとも1つの断片のいくつかのメモリ装置の各々への格納を含むことができる。ミラーリングは、書き込みデータのコピーの少なくとも2つのメモリ装置への重複格納を含むことができる。ストライピングおよびミラーリングは両方とも、第1レベルおよび/または第2レベルのエラー検出/訂正の使用を含むことができる。パリティデータは書き込みデータと同じメモリ装置に格納することも、および/または書き込みデータを格納する装置とは別個の装置に格納することもできる。本開示の1つまたは複数の実施形態によれば、メモリシステムによって実装される特定のRAID構造は、プログラム可能な選択肢にすることができる。
本明細書では、ストライプサイズは、データがその数のメモリ装置に渡ってストライプ化されるメモリ装置の数を参照できる。本開示の1つまたは複数の実施形態によれば、メモリシステムに対するストライプサイズは、メモリシステムに対して任意の数の利用可能なメモリ装置がストライプのために使用できるように、プログラム可能な選択肢にすることができる。例えば、32のチャネルおよび32の対応するメモリ装置を含むメモリシステムは、2〜32のメモリ装置のいずれのストライプサイズも有することができる。さらに、ストライプサイズは、本明細書で説明するように、例えば、メモリストライプの有効に除去された部分に応じて、メモリシステムの動作中に変更できる。本明細書で説明するように、ブロックテーブルは、ストライプ化するメモリシステム構成の部分を追跡記録するために使用できる。
パリティデータの格納は、メモリストライプの有効に除去された部分(例えば、UECCエラーを経験する部分)に関連するデータが再作成されるのを可能にできる。メモリチャネル、メモリ装置、メモリのブロック、メモリのページ、またはメモリ装置の別の部分が訂正不可能なエラーまたは他のエラーを経験することがある。例えば、書き込みデータは、チャネル442−1、...、442−(N−1)に渡る第1ストライプ444−1に書き込むことができる。パリティデータは、チャネル442−Nに渡る第1ストライプ444−1に書き込むことができる。第1チャネル442−1が訂正不可能なエラーまたは他のエラーを経験すると、442−(N−1)までのチャネルに関連する書き込みデータおよびチャネル442−Nに関連するパリティデータは、第1チャネル442−1に渡って書き込まれたデータを再作成するために使用できる。パリティデータを作成する場合と同様に、メモリシステム(例えば、図2のRAID XOR回路226)は、訂正不可能なエラーまたは他のエラーを経験するメモリシステムの一部に関連するデータに対する置換データを計算するために、書き込みデータと共にパリティデータを使用できる。
図2の不揮発性メモリ制御回路222に関連するECC回路232は、書き込みデータ446の断片用のエラー訂正データ448および/またはメモリ装置に格納されるパリティデータ450を計算できる。図4は、チャネル442−1、...、442−(N−1)に関連して格納されている書き込みデータ446およびエラー訂正データ448ならびにチャネル442−Nに関連して格納されているパリティデータ450およびエラー訂正データ448の図を含む。ストライプが書き込まれる際に、書き込みデータおよびエラー訂正データの両方を一緒に書き込むことができる。書き込みデータまたはパリティデータのいずれかのデータ内でエラーが検出されると、第2レベルのエラー訂正(例えば、前述したパリティデータに関連する訂正)の実施前におよび/または実施することなく、第1レベルのエラー訂正で、エラー訂正データがエラーを訂正しようとする試みで使用できる。メモリシステムは、閾値数の誤りビットを訂正可能にする十分なエラー訂正データを格納し得る。エラー訂正データで訂正可能な数よりも多いビットエラーを含むエラーが検出されると(例えば、読み取り動作中のUECCエラー)、第2レベルのエラー訂正(例えば、前述したパリティデータの使用)が実施され得、例えば、エラーに関連するデータがパリティデータおよび書き込みデータの残りを使用して再作成され得る。
データは第1ストライプ444−1に書き込むことができる。ストライプへのデータ書き込みは、書き込みデータのいくつかの断片(例えば、ページ、セクターなど)への分割、および各チャネル442−1、...、442−(N−1),442−Nに関連するメモリ装置への断片の書き込みを含むことができる。1つまたは複数の実施形態は、複数のメモリ装置の各々への(例えば、各チャネル442−1、...、442−(N−1),442−Nへの)少なくとも1つの断片の書き込みを含むことができる。書き込みデータと共にパリティデータの書き込みを含むいくつかの実施形態では、書き込みデータの少なくとも1つの断片がチャネルの第1サブセット(例えば、チャネル442−1、...、442−(N−1))に関連する1つまたは複数のメモリ装置に書き込まれ、パリティデータがチャネルの第2サブセット(例えば、442−N)に関連する1つまたは複数のメモリ装置に書き込まれる。
メモリシステムは、書き込みコマンド、書き込みデータ、および書き込みデータに関連するいくつかのLBAを受信できる。LBA数に関連する書き込みデータは、第1ストライプ444−1に書き込むことができる。その後、メモリシステムは、書き込みコマンドを受信して、第1ストライプ444−1に書き込まれたデータに関連する特定の1つまたは複数のLBA(例えば、第1ストライプ444−1に書き込まれたデータに関連する少なくとも1つのLBAと同じLBA)に関連する書き込みデータを更新できる。場合によっては、後続の書き込みコマンドは、更新データに加えて、無関係なデータ(例えば、関連するデータが第1ストライプ444−1に書き込まれなかったLBAに関連するデータ)を伴い得る。場合によっては、更新データを含む後続の書き込みコマンドは、無関係なデータを含む別の後続の書き込みコマンドと結合され得る。
1つまたは複数の実施形態では、第1ストライプ444−1の一部は、記憶ボリューム440に渡って書き込まれる第2ストライプ444−2の一部に更新データを書き込むことによって更新できる。メモリシステムは、更新データを書き込み、同時に、別の無関係なデータを第2ストライプ444−2に書き込むことができる。更新データおよび無関係なデータの第2ストライプ444−2への書き込みは、更新データだけを第2ストライプ444−2に書き込むことに比べて、第2ストライプ444−2の記憶ボリュームの利用を増加させる。「無関係なデータ」は、関連データが第1ストライプに書き込まれたLBAに関連しないデータを意味する。第2ストライプ444−2の書き込みに関連して、メモリシステムはLBAテーブル(例えば、図2のLBAテーブル234)を、特定のLBAに関して更新されたデータ位置で更新できる。メモリシステムは、更新データに関連する第1ストライプ444−1の一部が現在は無効であることを示すために、ブロックテーブル(例えば、図2のブロックテーブル236)を更新できる。
第1ストライプに格納されているデータの断片を更新するためのいくつかの従来の手法によれば、データのストライプ全体が読み取られ、断片が更新されて(例えば、変更されて)、そのストライプ(更新データおよび第1ストライプからのデータの残り)が同じ第1ストライプまたは第2ストライプのいずれかに書き込まれていた。しかし、本開示の1つまたは複数の実施形態によれば、第1ストライプのデータの断片は、第1ストライプを読み取ることもコピーすることもなく、更新できる。かかる実施形態は、読み取りまたはコピー動作を含まない更新書き込み動作を可能にすることにより、いくつかの従来の手法に対してデバイス性能を向上させることができる(例えば、小規模なランダム書き込み性能が向上できる)。
第1ストライプ444−1の無効な一部および第1ストライプ444−1の残りは、第1ストライプ444−1がリクレイムされるまで保持され得る。第1ストライプ444−1の無効な部分の保持は、第1ストライプ444−1の無効な部分が第1ストライプ444−1の残りと異なる消去ブロックにある場合でさえ、第1ストライプ444−1の無効な部分の消去の防止を含むことができる。第1ストライプの残りの保持は、少なくとも第1ストライプ444−1の残りの部分の読み取りを含むことができる。いくつかの実施形態では、非更新データの一部は、非更新データの残りを読み取ることなく読み取ることができる。第1ストライプ444−1の残りの保持は、第1ストライプ444−1の残りの消去の防止を含むことができる。つまり、第1ストライプ444−1の残りは、第1ストライプの無効な部分が更新されていないかのように、動作し続けることができる。
第1ストライプ444−1は、前述の通り、パリティデータの使用を含め、エラー訂正を容易にするために、本明細書で説明するように、保持できる。すなわち、第1ストライプ444−1の一部を無効にした後、第1ストライプ444−1の有効な部分でUECCエラーが生じ得る。第1ストライプに格納されているパリティデータは、第1ストライプ444−1内の非更新書き込みデータ(本明細書では「オリジナル(original)」と呼ぶ)に基づいて計算されたため、非更新書き込みデータは、UECCエラーのある第1ストライプ444−1の有効な部分に対する置換データを計算するために使用されたであろう。UECCエラーに応じて計算された置換データは、第1ストライプ444−1からのデータの残りを書き込むことなく、第3ストライプ(例えば、444−P)に書き込むことができる。いくつかの実施形態では、置換データは、第1ストライプ444−1および/または第2ストライプ444−2内のデータに無関係なデータと同時に第3ストライプに書き込むことができる。本開示の1つまたは複数の実施形態によれば、無効なデータが異なるストライプの有効なデータで更新された後、無効なデータはストライプ内で保持できる。かかる実施形態は、ストライプの一部を更新する際に、ストライプ全体の読み取りおよびコピーを含むいくつかの従来の手法に関する動作上のオーバーヘッドの量を削減できる。
第1ストライプ444−1は、リクレイムされ得る、例えば、消去されて将来の書き込み動作で利用可能にされ得る。第1ストライプ444−1のリクレイミング(reclaiming)は、例えば、本明細書で説明の通り、ウェアレベリング動作に応じて、第1ストライプ444−1の残り(例えば、有効な部分)の第3ストライプ(例えば、ストライプ444−P)へのコピーを含むことができる。例えば、第1ストライプ444−1は、第1ストライプ444−1の全ての部分が無効な(例えば、他のストライプに更新されている)場合に、リクレイムされ得る。第1ストライプ444−1の有効な部分の第3ストライプへのコピーは、有効な部分からのデータおよび他の無関係なデータの第3ストライプへの同時書き込みを含むことができる。第1ストライプをリクレイムすることは、第1ストライプに関連するソリッドステートメモリ装置を消去することを含むことができる。本開示の1つまたは複数の実施形態は、いくつかの従来の手法に従って生じ得るようなブロックベースよりはむしろ、ストライプベースでのメモリシステムの部分をリクレイムすることを含むことができる。ストライプベースのリクラメーションは、パリティデータ、有効データ、および無効データを用いた後のUECC訂正での潜在的使用のために、無効データをストライプ内に保持する能力をさらに提供できる。
本開示の1つまたは複数の実施形態は、第1ストライプ444−1の一部に関連したエラーの検出、第1ストライプ444−1からの第1ストライプ444−1の一部の有効な除去(例えば、無効化)、および除去された部分なしでの第1ストライプ444−1の動作を含むことができる。例えば、UECCエラーは、特定チャネル、例えば、チャネル442−(N−1)に関連し得る。チャネル442−(N−1)に渡って書き込まれたデータは、第1ストライプ444−1に関連したチャネルの残りからの書き込みデータおよびパリティデータ(および適用できる場合にはエラー訂正データ)を用いて置換データを計算することにより再作成できる。置換データは、例えば、第1ストライプ444−1からのデータの残りを書き込むことなく、第2ストライプ444−2に書き込むことができる。その後、第1ストライプ444−1は、除去されたチャネル442−(N−1)を使用することなく、動作可能である。例えば、第1ストライプ444−1への後続の書き込み動作は、除去されたチャネル442−(N−1)以外のチャネルに関連するデータ(例えば、パリティビットにつき1つ少ないビット)に基づくパリティデータの計算を含むことができる。
ブロックテーブル(例えば、図2のブロックテーブル236)には、第1ストライプ444−1の除去された部分(例えば、チャネル442−(N−1))が有効に除去されているという指示が提供できる。除去されたチャネル442−(N−1)なしでの第1ストライプ444−1の動作は、第1ストライプ444−1がリクレイムされた後、データおよび/またはパリティデータを除去されたチャネル442−(N−1)に書き込むことなく、いくつかのメモリ装置によって提供された記憶ボリューム440に渡る第1ストライプ444−1へのデータおよび/またはパリティデータの書き込みを含むことができる。除去された部分は、チャネルである必要はない。除去された部分は、メモリ装置、ダイ、ブロック、ページ、またはメモリシステムの何らかの他の部分にできる。
図5は、本開示の1つまたは複数の実施形態に従った、メモリ装置510の一部の概略図を示す。図5には示されていないが、当業者には、メモリ装置510は、その動作に関連する種々の周辺回路と共に半導体ダイ上に配置できることが理解されるであろう。メモリ装置510は、メモリセルの1つまたは複数のアレイを含むことができる。
図5に示すように、メモリ装置510は、メモリセルのいくつかの物理ブロック560−1(ブロック1)、560−2(ブロック2)、...、560−M(ブロックM)を含むことができる。図5に示す例では、標識「M」は、メモリ装置510がいくつかの物理ブロックを含むことができることを示すために使用される。一例として、メモリ装置510内の物理ブロック数は、128ブロック、4,096ブロック、または32,768ブロックであり得るが、実施形態は、メモリ装置内の物理ブロックを特定数または複数に限定しない。さらに、実施形態は、アレイで使用されるメモリの種類(例えば、不揮発性、揮発性、など)を限定しない。図5に示す実施形態では、メモリ装置510は、例えば、各物理ブロック560−1、560−2、...、560−M内のメモリセルが単位として一緒に消去できる(例えば、各物理ブロック内のセルが実質上、同時的に消去できる)ように、例えば、NANDフラッシュメモリ装置510にできる。例えば、各物理ブロックのセルは、単一の消去動作で一緒に消去できる。
図5にはそのようなものとして明確に指定されていないが、いくつかのブロックは、ソリッドステートメモリ装置(例えば、図1のソリッドステートメモリ装置110−1、...、110−N)内へのデータ書き込みに関連する書き込み増幅量を削減するために、予備のブロックとして指定できる。予備のブロックは、データが書き込めないブロックとして指定できるメモリアレイ内のブロックにできる。書き込み増幅は、空きスペースとして指定されている(すなわち、静的データが書き込まれない場所)メモリアレイ上の空き容量を増やすことにより削減でき、従って、再配置する必要のあるデータが少ないため、書き込む必要のあるデータ量の増幅の削減が可能になる。さらに、予備のブロックは、メモリシステムの動作中に訂正不可能なエラーまたは他のエラーを経験するブロックに対する置換ブロックとして使用できる。例えば、メモリシステムは、チャネル毎に特定数のブロックが予備として予約されるように、構成できる。ストライプの一部として動作されているチャネル内の特定ブロックが訂正不可能なエラーまたは他のエラーを経験すると、そのチャネルからの予備ブロックの1つが、ストライプが同じサイズを維持できる(例えば、同じ数のチャネルおよび/またはメモリ装置を含む)ように、特定ブロックの置換に使用できる。ストライプが同じサイズで動作を継続できるようにするために、特定ブロックに関連するアドレスが、置換ブロックのアドレスで更新されるようにブロックテーブルが更新できる。
標識「R」は、物理ブロック(例えば、560−1、560−2、...,560−M)がいくつかの行を含むことができることを示すために使用される。いくつかの実施形態では、各物理ブロック内の行数(例えば、ワード線)を32にすることができるが、実施形態は、物理ブロック毎に特定の行数570−1、570−2、...,570−Rに限定されない。当業者には分かるように、各行570−1、570−2、...,570−Rは、1つまたは複数の物理ページ(例えば、偶数ページおよび奇数ページ)を含むことができる。物理ページは、書き込みおよび/または読み取りの単位、例えば、一緒に、もしくはメモリセルの機能グループとして書き込みおよび/または読み取りが行われるセル数を参照する。従って、偶数ページおよび奇数ページは、別個の書き込みおよび/または読み取り動作で、書き込みおよび/または読み取りを行うことができる。マルチレベルセル(MLC)を含む実施形態について、物理ページは、論理的に、データの上位ページ(upper page)および下位ページ(lower page)に分けることができる。例えば、1つのメモリセルは、1つまたは複数のビットをデータの上位ページに、1つまたは複数のビットをデータの下位ページに提供することができる。従って、論理上位ページおよび論理下位ページが両方とも同じ物理ページの一部であるため、データの上位ページおよび下位ページは、1つ書き込みおよび/または読み取り動作の一部として、書き込みおよび/または読み取りを行うことができる。図を簡単にするため、図5の各行570−1、570−2、...,570−Rは、1つの物理および論理ページのみを含んでいるが、実施形態はそのように限定されない。
本開示の1つまたは複数の実施形態では、図5に示すように、1ページは、いくつかのセクター580−1、580−2、...、580−S内にデータを格納することができる。標識「S」は、1ページがいくつかのセクターを含むことができることを示すために使用される。各セクター580−1、580−2、...、580−Sは、システムおよび/またはユーザーデータを格納することができ、誤り訂正符号(ECC)情報、および論理ブロックアドレス(LBA)情報などのオーバーヘッド情報を含むことができる。当業者には分かるように、論理ブロックアドレス方式は、ホストによってセクターの情報を識別するために使用できる(例えば、各セクターが一意のLBAに対応できる)方式である。1つまたは複数の実施形態では、セクターは、記憶ボリュームの最小アドレス可能部分である。一例として、1セクターのデータは、いくつかのバイトのデータ(例えば、256バイト、512バイト、または1,024バイト)にすることができる。例えば、SSDは、1ページに4、8、または16セクターを有することができ、そこで、1セクターは512バイトにでき、そして、SDDは、物理ブロック当たり128、256、または512ページを有することができ、従って、物理ブロックサイズは131072バイト、262144バイト、および524288バイトである。実施形態は、これらの例に限定されない。
物理ブロック560−1、560−2、...、560−M、行570−1、570−2、...、570−R、セクター580−1、580−2、...、580−S、およびページに対して他の構成が可能であることに留意されたい。例えば、物理ブロック560−1、560−2、...、560−Mの行570−1、570−2、...、570−Rは各々、例えば、512バイトより多いかまたは少ないデータを含むことができる単一セクターに対応するデータを格納できる。
〔結論〕
本開示は、ストライプベースのメモリ動作のための方法および装置を含む。一方法実施形態は、複数のメモリ装置の記憶ボリュームに渡る第1ストライプへのデータ書き込みを含む。第1ストライプの一部は、複数のメモリ装置の記憶ボリュームに渡る第2ストライプの一部に更新データを書き込むことによって更新される。第1ストライプの一部は無効にされる。第1ストライプの無効な部分および第1ストライプの残りは、第1ストライプがリクレイムされるまで保持される。
ある要素が別の要素「の上にある」、「に接続されている」、または「と結合されている」として参照されている場合、それは、直接他の要素の上にある、他の要素に接続されているか、または結合されている、もしくは介在要素が存在し得ることを理解されるであろう。対照的に、ある要素が別の要素「の直接上にある」、「に直接接続されている」、または「と直接結合されている」として参照されている場合には、介在要素または層は存在しない。本明細書では、用語「および/または」は、1つまたは複数の関連する記載項目の任意および全ての組み合わせを含む。
本明細書では、用語「および/または」は、1つまたは複数の関連する記載項目の任意および全ての組み合わせを含む。本明細書では、用語「または」は、特に断りのない限り、論理的に包括的ORを意味する。すなわち、「AまたはB」は、(Aのみ)、(Bのみ)、または(AとBの両方)を含むことができる。言い換えれば、「AまたはB」は、「Aおよび/またはB」もしくは「AおよびBの1つまたは複数」を意味することができる。
第1、第2、第3などという用語は、本明細書では、様々な要素を記述するために使用され得るが、これらの要素は、これらの用語によって限定されるべきでないことが理解されるであろう。これらの用語は、1つの要素を別の要素と区別するためにのみ使用される。従って、第1要素は、本開示の教示内容から逸脱することなく、第2要素と称することができる。
本明細書では、特定の実施形態が図示および説明されているが、当業者には、同一結果を達成するために算出された配置が、例示した特定の実施形態の代わりに使用できることが分かるであろう。本開示は、本開示の1つまたは複数の実施形態の適用または変形例に及ぶよう意図されている。前述の説明は、制限的な方法ではなく、例示的な方法でなされていることを理解されたい。前述の実施形態、および本明細書では具体的に説明されていない他の実施形態の組み合わせが、当業者には、前述の説明を検討すると、明らかであろう。本開示の1つまたは複数の実施形態の範囲は、前述の構造および方法が使用される他の適用を含む。それ故、本開示の1つまたは複数の実施形態の範囲は、添付の特許請求の範囲に関連し、かかる特許請求の範囲が権利を与えられる相当物の全範囲と共に決定されるべきである。
前述の「発明を実施するための形態」では、本開示をすっきりさせる目的で、いくつかの特徴が単一の実施形態にまとめられている。開示のこの方法は、本開示の開示された実施形態は、各請求項に明示的に列挙されているよりも多くの特徴を使用する必要があるという意図の反映として解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示された実施形態の全特徴より少ない。従って、以下の特許請求の範囲は、各請求項が別個の実施形態として独立し、本明細書により、「発明を実施するための形態」に組み込まれる。

Claims (14)

  1. 複数のアドレスに関連するオリジナルデータを複数のチャネルに渡る第1ストライプに書き込み、かつ、
    前記複数のアドレスの少なくとも1つに関連する更新データを、前記第1ストライプ内のオリジナルデータの読み取りまたはコピーを行うことなく、前記複数のチャネルに渡る第2ストライプに書き込み、
    前記更新データを前記第2ストライプに書き込むと同時に、無関係データを前記第2ストライプに書き込むことを含み、前記無関係データが、前記第1ストライプの前記オリジナルデータおよび前記第2ストライプの前記更新データと無関係であり、
    前記第2のストライプの一部に関連したエラーを検出するように構成された、不揮発性メモリ制御回路と、
    前記不揮発性メモリ制御回路が前記エラーを検出したことに応答して、前記第2のストライプの前記一部を前記第2のストライプから取り除くメモリ管理回路とを備え、
    前記不揮発性メモリ制御回路は、更に、前記第2のストライプの前記取り除かれた一部なしで、前記第2のストライプを駆動する、
    ことを特徴とするメモリシステム制御回路。
  2. 前記不揮発性メモリ制御回路に結合されたスイッチと、
    前記スイッチに結合され、
    前記オリジナルデータを受信し、かつ
    前記更新データを受信するように構成された、
    ホストインタフェース回路とをさらに備える、
    請求項1に記載のメモリシステム制御回路。
  3. 前記ホストインタフェース回路がホストメモリ変換回路を越えて前記スイッチと結合され、
    前記ホストメモリ変換回路が、前記複数のアドレスをホストアドレスからメモリアドレスに変換するように構成されている、
    請求項2に記載のメモリシステム制御回路。
  4. 前記オリジナルデータに関連付けられた論理メモリアドレスが前記更新データに関連付けられた論理メモリアドレスと同一である、請求項3に記載のメモリシステム制御回路。
  5. 前記不揮発性メモリ制御回路が、前記複数のチャネルの各々に対して個別のチャネルメモリ制御回路を含み、
    前記不揮発性メモリ制御回路が、前記複数のチャネルに関連する複数の不揮発性メモリ装置を、ストライプ化されたレイド(RAID)として操作するように構成されている、請求項1〜4のいずれか1つに記載のメモリシステム制御回路。
  6. 前記ストライプに含まれるいくつかの不揮発性メモリ装置がプログラム可能になるように、前記不揮発性メモリ制御回路が、前記ストライプ化されたRAIDをプログラム可能なストライプサイズで操作するように構成されている、請求項5に記載のメモリシステム制御回路。
  7. 実施する特定のRAID記憶方式がプログラム可能になるように、前記不揮発性メモリ制御回路が、前記ストライプ化されたRAIDをプログラム可能なRAID構造で操作するように構成されている、請求項5に記載のメモリシステム制御回路。
  8. 前記不揮発性メモリ制御回路が、前記複数のチャネルの1つをパリティチャネルとして操作するように構成されている、請求項7に記載のメモリシステム制御回路。
  9. 前記オリジナルデータに基づき、パリティデータを計算するように構成されている排他的論理和(XOR)回路をさらに含む、請求項8に記載のメモリシステム制御回路。
  10. ストライプベースのメモリ操作のための方法であって、
    複数のメモリ装置の記憶ボリュームに渡る第1ストライプにオリジナルデータを書き込むことと、
    書き込まれた前記オリジナルデータの少なくとも1つの断片を更新することとを含み、
    前記更新が、前記オリジナルデータを読み取りまたはコピーすることなく、更新データを第2ストライプに書き込み、
    前記更新データを前記第2ストライプに書き込むと同時に、無関係データを前記第2ストライプに書き込むことを含み、前記無関係データが、前記第1ストライプの前記オリジナルデータおよび前記第2ストライプの前記更新データと無関係であり、
    前記第2のストライプの一部に関連したエラーを検出し、
    前記不揮発性メモリ制御回路が前記エラーを検出したことに応答して、前記第2のストライプの前記一部を前記第2のストライプから取り除き、
    前記不揮発性メモリ制御回路は、更に、前記第2のストライプの前記取り除かれた一部なしで、前記第2のストライプを駆動する、
    ことを特徴とすることを含む方法。
  11. 前記方法が、前記オリジナルデータの各断片に基づき、それぞれ第1レベルのエラー訂正データを計算することと、
    前記オリジナルデータに基づき、第2レベルのエラー訂正データを計算することとをさらに含み、
    前記オリジナルデータの書き込みが、前記オリジナルデータおよび前記第1レベルのエラー訂正データを、前記複数のメモリ装置の第1サブセットに書き込むことと、前記第2レベルのエラー訂正データを、前記複数のメモリ装置の第2サブセットに書き込むこととを含む、請求項10に記載の方法。
  12. 前記方法が、前記第1ストライプ内の前記オリジナルデータの断片内でエラーを検出することと、前記エラーを前記第1レベルのエラー訂正データで訂正することとを含む、請求項11に記載の方法。
  13. 前記方法が、
    前記第1ストライプ内のオリジナルデータの断片内で、前記第1レベルのエラー訂正データで訂正不可能なエラーを検出することと、
    前記エラーを訂正することとを含み、
    前記エラーの訂正が、
    少なくとも前記オリジナルデータの残り、および前記第1ストライプ内の前記第2レベルのエラー訂正データに基づき、オリジナルデータの前記断片に対する置換データを作成することと、
    前記オリジナルデータの前記残りを第3ストライプに書き込むことなく、置換データを前記3ストライプに書き込むこととを含む、
    請求項11に記載の方法。
  14. 前記方法が、前記置換データを前記第3ストライプに書き込むと同時に、無関係データを前記第3ストライプに書き込むことを含み、前記無関係データが、前記第1ストライプの前記オリジナルデータまたは前記第3ストライプの前記置換データと無関係である、請求項13に記載の方法。
JP2012530857A 2009-09-29 2010-09-20 ストライプベースのメモリ動作 Active JP5841056B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/569,412 2009-09-29
US12/569,412 US8266501B2 (en) 2009-09-29 2009-09-29 Stripe based memory operation
PCT/US2010/002556 WO2011043791A2 (en) 2009-09-29 2010-09-20 Stripe-based memory operation

Publications (2)

Publication Number Publication Date
JP2013506190A JP2013506190A (ja) 2013-02-21
JP5841056B2 true JP5841056B2 (ja) 2016-01-06

Family

ID=43781636

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012530857A Active JP5841056B2 (ja) 2009-09-29 2010-09-20 ストライプベースのメモリ動作

Country Status (7)

Country Link
US (3) US8266501B2 (ja)
EP (1) EP2483785B1 (ja)
JP (1) JP5841056B2 (ja)
KR (1) KR101459861B1 (ja)
CN (1) CN102549554B (ja)
TW (1) TWI489486B (ja)
WO (1) WO2011043791A2 (ja)

Families Citing this family (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8549223B1 (en) * 2009-10-29 2013-10-01 Symantec Corporation Systems and methods for reclaiming storage space on striped volumes
US8335123B2 (en) * 2009-11-20 2012-12-18 Sandisk Technologies Inc. Power management of memory systems
KR101090394B1 (ko) * 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8862817B2 (en) 2010-06-09 2014-10-14 Taejin Info Tech Co., Ltd. Switch-based hybrid storage system
US8484529B2 (en) 2010-06-24 2013-07-09 International Business Machines Corporation Error correction and detection in a redundant memory system
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8549378B2 (en) * 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
US9727414B2 (en) * 2010-12-01 2017-08-08 Seagate Technology Llc Fractional redundant array of silicon independent elements
JP2014507717A (ja) 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
US8522122B2 (en) 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US8621113B2 (en) * 2011-05-31 2013-12-31 Micron Technology, Inc. Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US9086983B2 (en) * 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
US9514838B2 (en) 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
US8762671B2 (en) * 2011-06-28 2014-06-24 Hitachi, Ltd. Storage apparatus and its control method
US8626991B1 (en) * 2011-06-30 2014-01-07 Emc Corporation Multi-LUN SSD optimization system and method
KR101335343B1 (ko) 2011-10-14 2013-12-02 성균관대학교산학협력단 메모리 관리 장치 및 방법
US9092316B2 (en) 2011-10-28 2015-07-28 International Business Machines Corporation Methods and storage devices for managing write operations
US9053809B2 (en) * 2011-11-09 2015-06-09 Apple Inc. Data protection from write failures in nonvolatile memory
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US8892828B2 (en) * 2011-11-18 2014-11-18 Micron Technology, Inc. Apparatuses and methods for storing validity masks and operating apparatuses
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US8782485B2 (en) 2012-01-19 2014-07-15 International Business Machines Corporation Hierarchical channel marking in a memory system
US8843806B2 (en) 2012-01-19 2014-09-23 International Business Machines Corporation Dynamic graduated memory device protection in redundant array of independent memory (RAIM) systems
US20130191685A1 (en) * 2012-01-19 2013-07-25 International Business Machines Corporation Per-rank channel marking in a memory system
US9652182B2 (en) 2012-01-31 2017-05-16 Pavilion Data Systems, Inc. Shareable virtual non-volatile storage device for a server
KR101826051B1 (ko) * 2012-02-27 2018-02-07 삼성전자주식회사 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
US9026887B2 (en) 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US9158675B2 (en) 2012-03-16 2015-10-13 Marvell World Trade Ltd. Architecture for storage of data on NAND flash memory
JP2013196276A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 情報処理装置、プログラムおよびデータ配置方法
US20150160999A1 (en) * 2012-07-13 2015-06-11 Samsung Electronics Co., Ltd. Solid state drive controller, solid state drive, data processing method of solid state drive, multi-channel solid state drive, raid controller and computer-readable recording medium having recorded therein computer program for providing sequence information to solid state drive
CN103577111B (zh) * 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
JP5362123B1 (ja) * 2012-09-12 2013-12-11 株式会社東芝 アレイにおける誤り訂正符号ブロック配置位置を管理するストレージ装置、ストレージコントローラ及び方法
US9106260B2 (en) * 2012-12-19 2015-08-11 Advanced Micro Devices, Inc. Parity data management for a memory architecture
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9361040B1 (en) * 2013-02-27 2016-06-07 Marvell International Ltd. Systems and methods for data storage management
US9026891B2 (en) * 2013-03-13 2015-05-05 Lsi Corporation Method for format savings in coherently written fragmented sectors
US9098445B2 (en) * 2013-03-14 2015-08-04 Apple Inc. Selection of redundant storage configuration based on available memory space
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US20140281802A1 (en) * 2013-03-15 2014-09-18 SEAKR Engineering, Inc. Multi-dimensional error detection and correction memory and computing architecture
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
CN103336727B (zh) * 2013-06-20 2016-06-22 酷丰实业(上海)有限公司 对nand闪存存储设备进行数据操作的方法
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
CN104516679B (zh) * 2013-09-30 2017-10-17 杭州宏杉科技股份有限公司 一种raid数据处理方法及装置
US9891989B2 (en) * 2013-10-11 2018-02-13 Hitachi, Ltd. Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
CN103513941B (zh) * 2013-10-18 2016-08-17 华为技术有限公司 写入数据的方法及装置
CN103631676B (zh) * 2013-11-06 2016-08-24 华为技术有限公司 一种只读快照的快照数据生成方法及装置
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9529710B1 (en) 2013-12-06 2016-12-27 Western Digital Technologies, Inc. Interleaved channels in a solid-state drive
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
CN106681934B (zh) * 2014-03-19 2020-09-11 华为技术有限公司 一种存储设备垃圾回收的方法及设备
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9652381B2 (en) * 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9846661B2 (en) 2014-07-17 2017-12-19 Empire Technology Development Llc Utilization of solid state memory devices
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
CN104156174A (zh) * 2014-07-31 2014-11-19 记忆科技(深圳)有限公司 基于条带的固态硬盘raid实现方法及装置
US20160070644A1 (en) * 2014-09-10 2016-03-10 Netapp, Inc. Offset range operation striping to improve concurrency of execution and reduce contention among resources
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US9952978B2 (en) * 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
KR102248207B1 (ko) 2014-10-30 2021-05-06 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US9565269B2 (en) 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9712619B2 (en) 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
CN104461926A (zh) * 2014-11-27 2015-03-25 记忆科技(深圳)有限公司 一种基于二维raid的固态硬盘数据保护方法
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9766837B2 (en) * 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
KR102277731B1 (ko) * 2015-07-21 2021-07-14 삼성전자주식회사 스토리지 시스템의 구동 방법 및 스토리지 컨트롤러
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10223197B2 (en) 2015-08-06 2019-03-05 Nxp B.V. Integrated circuit device and method for applying error correction to SRAM memory
US10437666B2 (en) * 2015-08-06 2019-10-08 Nxp B.V. Integrated circuit device and method for reading data from an SRAM memory
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
TWI631565B (zh) * 2015-12-09 2018-08-01 慧榮科技股份有限公司 快閃記憶體之廢料收集方法以及使用該方法的裝置
TWI602186B (zh) 2015-12-09 2017-10-11 慧榮科技股份有限公司 快閃記憶體之廢料收集方法以及使用該方法的裝置
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
KR102580123B1 (ko) 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US9996285B2 (en) * 2016-11-08 2018-06-12 SK Hynix Inc. Cyclically interleaved XOR array for error recovery
US10453547B2 (en) * 2017-06-16 2019-10-22 Seagate Technologies Llc Monitoring a memory for retirement
US10474527B1 (en) * 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
CN107357687A (zh) * 2017-07-21 2017-11-17 长沙曙通信息科技有限公司 一种容灾备份新型重复数据删除实现方法
CN109947842B (zh) * 2017-07-27 2021-06-18 杭州海康威视数字技术股份有限公司 分布式存储系统中的数据存储方法、装置及系统
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
US11221958B2 (en) * 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
TWI656442B (zh) * 2017-11-30 2019-04-11 慧榮科技股份有限公司 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器
CN108121509B (zh) * 2017-12-19 2020-10-16 深圳忆联信息系统有限公司 一种提高ssd读操作时raid效率的方法及ssd
US11392544B2 (en) * 2018-02-06 2022-07-19 Samsung Electronics Co., Ltd. System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system
WO2019178538A1 (en) 2018-03-16 2019-09-19 Micron Technology, Inc Clustered parity for nand data placement schema
EP3766070A4 (en) 2018-03-16 2021-10-27 Micron Technology, Inc. PLACEMENT SCHEME FOR NAND DATA
US10963186B2 (en) 2018-03-22 2021-03-30 Seagate Technology Llc Latent multiplicity detection
US11593262B1 (en) * 2018-04-25 2023-02-28 Seagate Technology Llc Garbage collection command scheduling
US10922014B1 (en) * 2018-06-05 2021-02-16 Seagate Technology Llc Die access order variation
TW202001565A (zh) * 2018-06-21 2020-01-01 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
US11169961B2 (en) * 2018-06-29 2021-11-09 Weka.IO Ltd. Data migration in a distributive file system
US11914860B2 (en) * 2018-08-20 2024-02-27 Macronix International Co., Ltd. Data storage for artificial intelligence-based applications
KR102627873B1 (ko) 2018-10-25 2024-01-23 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법
US10877671B2 (en) 2018-12-03 2020-12-29 Vast Data Ltd. Techniques for prolonging lifespan of storage drives
CN109814805B (zh) 2018-12-25 2020-08-25 华为技术有限公司 存储系统中分条重组的方法及分条服务器
CN111367863A (zh) * 2018-12-25 2020-07-03 深圳市茁壮网络股份有限公司 一种文件的部分修改方法及系统
CN111796774B (zh) * 2020-07-07 2024-03-08 深圳宏芯宇电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制器
US11342029B2 (en) 2020-09-28 2022-05-24 Sandisk Technologies Llc Non-volatile memory with switchable erase methods
US11960754B2 (en) 2020-12-30 2024-04-16 Micron Technology, Inc. Memory sub-system memory bank search component
US11409601B1 (en) * 2021-01-26 2022-08-09 Micron Technology, Inc. Memory device protection
US11782642B2 (en) * 2021-06-14 2023-10-10 Western Digital Technologies, Inc. Systems and methods of determining degradation in analog compute-in-memory (ACIM) modules
US20230009642A1 (en) * 2021-07-07 2023-01-12 Micron Technology, Inc. Programmable metadata
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537534A (en) * 1995-02-10 1996-07-16 Hewlett-Packard Company Disk array having redundant storage and methods for incrementally generating redundancy as data is written to the disk array
JPH1153235A (ja) * 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
JPH11194899A (ja) * 1997-12-26 1999-07-21 Toshiba Corp ディスク記憶システム及び同システムに適用するデータ更新方法
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
JP2000105675A (ja) * 1998-09-29 2000-04-11 Nec Corp ディスクアレイ装置
JP2001075741A (ja) * 1999-09-02 2001-03-23 Toshiba Corp ディスク制御システムおよびデータ保全方法
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
JP3557994B2 (ja) * 2000-04-05 2004-08-25 日本電気株式会社 ファイルデータ格納装置及び方法並びに記録媒体
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
US6754785B2 (en) * 2000-12-01 2004-06-22 Yan Chiew Chow Switched multi-channel network interfaces and real-time streaming backup
JP2002215336A (ja) * 2001-01-15 2002-08-02 Hitachi Ltd 記憶装置の制御方法および記憶サブシステム
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
JP2003036146A (ja) * 2001-07-23 2003-02-07 Hitachi Ltd ディスクアレイ制御方式
US7055058B2 (en) 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
US6904498B2 (en) * 2002-10-08 2005-06-07 Netcell Corp. Raid controller disk write mask
GB2400935B (en) 2003-04-26 2006-02-15 Ibm Configuring memory for a raid storage system
US7523257B2 (en) 2003-08-27 2009-04-21 Adaptec, Inc. Method of managing raid level bad blocks in a networked storage system
US7062615B2 (en) * 2003-08-29 2006-06-13 Emulex Design & Manufacturing Corporation Multi-channel memory access arbitration method and system
JP2005284643A (ja) * 2004-03-29 2005-10-13 Canon Inc ディスクアレイ制御装置、ディスクアレイ制御装置の制御方法、及び制御プログラム
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
WO2005124530A2 (en) 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
JP2006023941A (ja) * 2004-07-07 2006-01-26 Canon Inc ディスクアレイ装置、ディスクアレイ装置の制御方法、プログラム
JP2006134026A (ja) * 2004-11-05 2006-05-25 Matsushita Electric Ind Co Ltd ディスクアレイ装置およびraidレベル設定方法
JP4437953B2 (ja) * 2004-12-10 2010-03-24 富士通株式会社 データ書込み方法とチャネルアダプタ
US7386758B2 (en) 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US8046542B2 (en) 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
JP2011053235A (ja) 2009-08-31 2011-03-17 Hitachi Displays Ltd 液晶表示装置および配向膜印刷版
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation

Also Published As

Publication number Publication date
TWI489486B (zh) 2015-06-21
EP2483785A2 (en) 2012-08-08
TW201126540A (en) 2011-08-01
US8788876B2 (en) 2014-07-22
WO2011043791A2 (en) 2011-04-14
CN102549554B (zh) 2015-04-08
EP2483785A4 (en) 2013-08-07
CN102549554A (zh) 2012-07-04
JP2013506190A (ja) 2013-02-21
US20130254627A1 (en) 2013-09-26
EP2483785B1 (en) 2017-09-20
WO2011043791A3 (en) 2011-07-21
KR101459861B1 (ko) 2014-11-07
US8266501B2 (en) 2012-09-11
US20110078496A1 (en) 2011-03-31
US8448018B2 (en) 2013-05-21
US20120331253A1 (en) 2012-12-27
KR20120055725A (ko) 2012-05-31

Similar Documents

Publication Publication Date Title
JP5841056B2 (ja) ストライプベースのメモリ動作
US11042441B2 (en) Stripe mapping in memory
US9235503B2 (en) Stripe-based non-volatile multilevel memory operation
US9874918B2 (en) Power interrupt management
KR101491943B1 (ko) 트랜잭션 로그 복구
US20140325316A1 (en) Data protection across multiple memory blocks
JP5908106B2 (ja) 妥当性マスクを記憶する装置および方法ならびに操作装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131010

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140214

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140214

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141203

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141203

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141224

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20150123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151112

R150 Certificate of patent or registration of utility model

Ref document number: 5841056

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250