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