図面 (/)

技術 冗長アレイによる不揮発性メモリのプログラム障害回復

出願人 シーゲイトテクノロジーエルエルシー
発明者 ワーナー、ジェレミー、アイザックナサニエルコーエン、アール、ティー.
出願日 2013年12月24日 (6年11ヶ月経過) 出願番号 2013-264768
公開日 2014年7月10日 (6年4ヶ月経過) 公開番号 2014-130587
状態 特許登録済
技術分野 メモリシステム エラーの検出訂正 記憶装置の信頼性向上技術
主要キーワード 二重平面 インターフェースチャネル トグルモード 互換インターフェース CFインターフェース 電子読み出し 標準動作モード 独立要素
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2014年7月10日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

ソリッドステートディスクなど、いくつかの記憶サブシステムにおいて、高プログラミング帯域幅および/または待ち時間の低減を可能にする。

解決手段

複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータが不揮発性メモリコントローラにおいて受け取られる。特定のデータは、不揮発性メモリコントローラと関連付けられた割り当てられたバッファに記憶される。不揮発性メモリのうちの特定の1つへの特定のデータのプログラミングが開始される。N個の部分のうちのM個の障害から回復するのに十分な冗長情報更新される。割り当てられたバッファが解放される。記憶する工程、プログラミングを開始する工程、更新する工程、および解放する工程のうちの少なくとも1つは、特定のデータを受け取る工程に応答したものである。解放する工程は、特定の不揮発性メモリがプログラミングを完了する前に行われる。

概要

背景

分野:不揮発性記憶の技術および製造における前進が、使用のコスト、収益性、性能、効率、および有用性の改善を提供するために必要とされている。

関連技術:公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は(それがある場合には)、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。

概要

ソリッドステートディスクなど、いくつかの記憶サブシステムにおいて、高プログラミング帯域幅および/または待ち時間の低減を可能にする。複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータが不揮発性メモリコントローラにおいて受け取られる。特定のデータは、不揮発性メモリコントローラと関連付けられた割り当てられたバッファに記憶される。不揮発性メモリのうちの特定の1つへの特定のデータのプログラミングが開始される。N個の部分のうちのM個の障害から回復するのに十分な冗長情報更新される。割り当てられたバッファが解放される。記憶する工程、プログラミングを開始する工程、更新する工程、および解放する工程のうちの少なくとも1つは、特定のデータを受け取る工程に応答したものである。解放する工程は、特定の不揮発性メモリがプログラミングを完了する前に行われる。

目的

分野:不揮発性記憶の技術および製造における前進が、使用のコスト、収益性、性能、効率、および有用性の改善を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

方法であって、不揮発性メモリコントローラにおいて、複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る工程であって、当該データは当該N個の部分のうちの特定の1つをプログラムするための特定のデータを有するものである、前記受け取る工程と、前記特定のデータを割り当てられたバッファに記憶する工程であって、当該バッファは前記不揮発性メモリコントローラと関連付けられているものである、前記記憶する工程と、前記不揮発性メモリのうちの特定の1つに対して前記特定のデータのプログラミングを開始する工程と、前記N個の部分のうちM個の障害から回復するのに十分な冗長情報更新する工程と、前記割り当てられたバッファを解放する工程とを有し、前記記憶する工程、前記特定のデータのプログラミングを開始する工程、前記冗長情報を更新する工程、および前記解放する工程のうちの少なくとも1つは、前記受け取る工程に応答するものであり、前記解放する工程は、前記特定の不揮発性メモリが前記プログラミングを完了する前に行われるものである、方法。

請求項2

請求項1記載の方法において、前記冗長情報は第1の冗長情報であり、データは前記N個の部分のサブセットのために受け取られるものであり、プログラミングは前記N個の部分の前記サブセットについてはまだ開始されていないものであり、この方法は、さらに、前記N個の部分の前記サブセットのうちの少なくとも一部のプログラミングを遅延させる工程と、前記不揮発性メモリのうちの複数のメモリに対して前記第1の冗長情報のプログラミングを開始する工程と、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する工程と、前記第1の冗長情報とは異なる、前記N個の部分の前記サブセットのうちM個の障害から回復するのに十分な第2の冗長情報を更新する工程とを有するものであり、前記プログラミングを遅延させる工程、前記第1の冗長情報のプログラミングを開始する工程、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する前記工程、および前記第2の冗長情報を更新する工程のうちの少なくとも1つは、前記特定のデータの前記プログラミングの障害を検出したことに応答するものである方法。

請求項3

請求項2記載の方法において、前記特定のデータは、前記障害が検出された場合、もっぱら前記第1の冗長情報で符号化されているとおりに記憶されるものである方法。

請求項4

請求項1記載の方法において、前記データは、前記N個の部分のうちの第1の部分をプログラムするための初期データをさらに有するものであり、さらに、少なくとも部分的に前記初期データに基づいて前記冗長情報を初期設定する工程を有するものである方法。

請求項5

請求項1記載の方法において、前記不揮発性メモリコントローラは前記割り当てられたバッファを有するものである方法。

請求項6

請求項1記載の方法において、前記割り当てられたバッファは、前記不揮発性メモリコントローラを有する第2のチップとは独立した第1のチップに具備される方法。

請求項7

請求項1記載の方法において、前記不揮発性メモリコントローラは、ストレージインターフェース規格適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステートディスクコントローラとして動作するものである方法。

請求項8

処理要素によって実行されると、当該処理要素に動作を実行させ、かつ/または制御させる命令のセットが記憶されている有形コンピュータ可読媒体であって、前記動作は、不揮発性メモリコントローラにおいて、複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る動作であって、当該データは当該N個の部分のうちの特定の1つをプログラムするための特定のデータを有するものである、前記受け取る動作と、前記特定のデータを割り当てられたバッファに記憶する動作であって、当該バッファは前記不揮発性メモリコントローラと関連付けられているものである、前記記憶する動作と、前記不揮発性メモリのうちの特定の1つに対して前記特定のデータのプログラミングを開始する動作と、前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する動作と、前記割り当てられたバッファを解放する動作とを有し、前記記憶する動作、前記特定のデータのプログラミングを開始する動作、前記冗長情報を更新する動作、および前記解放する動作のうちの少なくとも1つは、前記特定のデータを受け取る動作に応答するものであり、前記解放する動作は、前記特定の不揮発性メモリが前記プログラミングを完了する前に行われるものである、有形のコンピュータ可読媒体。

請求項9

請求項8記載の有形のコンピュータ可読媒体において、前記冗長情報は第1の冗長情報であり、データは前記N個の部分のサブセットのために受け取られるものであり、プログラミングは前記N個の部分の前記サブセットについてまだ開始されていないものであり、前記動作は、さらに、前記N個の部分の前記サブセットのうちの少なくとも一部のプログラミングを遅延させる動作と、前記不揮発性メモリのうちの複数のメモリに対して前記第1の冗長情報のプログラミングを開始する動作と、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する動作と、前記第1の冗長情報とは異なる、前記N個の部分の前記サブセットのうちM個の障害から回復するのに十分な第2の冗長情報を更新する動作とを有するものであり、前記プログラミングを遅延させる動作、前記第1の冗長情報のプログラミングを開始する動作、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する動作、および前記第2の冗長情報を更新する動作のうちの少なくとも1つは、前記特定のデータの前記プログラミングの障害を検出したことに応答するものである有形のコンピュータ可読媒体。

請求項10

請求項9記載の有形のコンピュータ可読媒体において、前記特定のデータは、前記障害が検出された場合、もっぱら前記第1の冗長情報で符号化されているとおりに記憶されるものである有形のコンピュータ可読媒体。

請求項11

請求項8記載の有形のコンピュータ可読媒体において、前記データは、前記N個の部分のうちの第1の部分をプログラムするための初期データをさらに有するものであり、さらに、少なくとも部分的に前記初期データに基づいて前記冗長情報を初期設定する動作を有するものである有形のコンピュータ可読媒体。

請求項12

請求項8記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは前記割り当てられたバッファを有する有形のコンピュータ可読媒体。

請求項13

請求項8記載の有形のコンピュータ可読媒体において、前記割り当てられたバッファは、前記不揮発性メモリコントローラを有する第2のチップとは独立した第1のチップに具備される有形のコンピュータ可読媒体。

請求項14

請求項8記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作するものである有形のコンピュータ可読媒体。

請求項15

請求項8記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは前記処理要素を有するものである有形のコンピュータ可読媒体。

請求項16

ステムであって、割り当てられたバッファと、不揮発性メモリコントローラにおいて、複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る手段であって、当該データは当該N個の部分のうちの特定の1つをプログラムするための特定のデータを有するものである、前記受け取る手段と、前記特定のデータを前記割り当てられたバッファに記憶する手段であって、当該バッファは前記不揮発性メモリコントローラと関連付けられているものである、前記記憶する工程と、前記不揮発性メモリのうちの特定の1つに対して前記特定のデータのプログラミングを開始する手段と、前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する手段と、前記割り当てられたバッファを解放する手段とを有し、前記記憶する手段、前記特定のデータのプログラミングを開始する手段、前記冗長情報を更新する手段、および前記解放する手段のうちの少なくとも1つは、前記受け取る手段に応答するものであり、前記解放する手段は、前記特定の不揮発性メモリが前記プログラミングを完了する前に前記割り当てられたバッファを解放するように動作するものである、システム。

請求項17

請求項16記載のシステムにおいて、前記冗長情報は第1の冗長情報であり、データは前記N個の部分のサブセットのために受け取られるものであり、プログラミングは前記N個の部分の前記サブセットについてまだ開始されていないものであり、このシステムは、さらに、前記N個の部分の前記サブセットのうちの少なくとも一部のプログラミングを遅延させる手段と、前記不揮発性メモリのうちの複数のメモリに対して前記第1の冗長情報のプログラミングを開始する手段と、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する手段と、前記第1の冗長情報とは異なる、前記N個の部分の前記サブセットのうちM個の障害から回復するのに十分な第2の冗長情報を更新する手段とを有するものであり、前記プログラミングを遅延させる手段、前記第1の冗長情報のプログラミングを開始する前記手段、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する前記手段、および前記第2の冗長情報を更新する手段のうちの少なくとも1つは、前記特定のデータの前記プログラミングの障害を検出する手段に応答するものであるシステム。

請求項18

請求項17記載のシステムにおいて、前記特定のデータは、前記障害が検出された場合、もっぱら前記第1の冗長情報で符号化されているとおりに記憶されるものであるシステム。

請求項19

請求項16記載のシステムにおいて、前記データは、前記N個の部分のうちの第1の部分をプログラムするための初期データをさらに有するものであり、さらに、少なくとも部分的に前記初期データに基づいて前記冗長情報を初期設定する手段を有するものであるシステム。

請求項20

請求項16記載のシステムにおいて、前記不揮発性メモリコントローラは前記割り当てられたバッファを有するものであるシステム。

技術分野

0001

関連出願の相互参照
本出願の優先権利益の主張を、(それがある場合には、適宜)添付の出願データシート、請求、または送達状において行う。本出願の種類によって許容される範囲内で、本出願はこの参照によりあらゆる目的で以下の出願を組み込むものであり、以下の出願はすべて、発明がなされた時点において本出願と所有者を同じくするものである。

0002

2010年12月1日付で出願された、Jeremy Isaac Nathaniel WERNERを頭発明者とする、「DYNAMICHIGHER−LEVEL REDUNDANCY MODMANAGEMNTWITH INDEPENDENT SILICON ELEMENTS」という名称の、米国仮出願(整理番号第SF−10−10号および出願番号第61/418846号);
Higher−Level Redundancy Information Computationと題された、発明代表者名Jeremy Isaac Nathaniel Wernerの、2011年1月18日に出願された米国仮特許出願(事件整理番号第SF−10−14号及び米国仮特許出願第61/433,918号)、
2011年11月30日付で出願された、Jeremy Isaac Nathaniel WERNERを筆頭発明者とする、「DYNAMIC HIGHER−LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS」という名称の、国際出願(整理番号第SF−10−10PCT号および出願番号第PCT/US11/062726号);ならびに
2012年1月18日付で出願された、Jeremy Isaac Nathaniel WERNERを筆頭発明者とする、「HIGHER−LEVEL REDUNDANCYINFORMATION COMPUTATION」という名称の、国際出願(整理番号第SF−10−14PCT号および出願番号第PCT/US12/21682号)。

背景技術

0003

分野:不揮発性記憶の技術および製造における前進が、使用のコスト、収益性、性能、効率、および有用性の改善を提供するために必要とされている。

0004

関連技術:公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は(それがある場合には)、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。

課題を解決するための手段

0005

本発明は多くの方法で実施されてよく、例えば、プロセス、製造品、装置、システム組成物、ならびに、コンピュータ可読記憶媒体ディスクといった光学大容量記憶装置および/または磁気的大容量記憶装置、フラッシュストレージといった不揮発性記憶を有する集積回路など)や、プログラム命令光通信リンクまたは電子通信リンク上で送られるコンピュータネットワークといったコンピュータ可読媒体として実施されてよい。詳細な説明では、上記の分野における使用のコスト、収益性、性能、効率、および有用性の改善を可能にする本発明の1つ若しくはそれ以上の実施形態の説明を行う。詳細な説明は、詳細な説明の残りの部分の理解を容易にするための概説を含む。概説は、本明細書で説明する概念に従うシステム、方法、製造品、およびコンピュータ可読媒体の1つ若しくはそれ以上の例示的実施形態を含む。結論の項でより詳細に論じるように、本発明は、発行される特許請求の範囲内のあらゆる可能な改変形態および変形形態包含するものである。

図面の簡単な説明

0006

図1Aは、1若しくはそれ以上の(任意選択で内部の)冗長アレイによる不揮発性メモリ(Non−Volatile Memories:NVMs)のプログラム障害回復を提供するSSDコントローラを含むソリッドステートディスク(Solid−State Disk:SSD)の実施形態の選択された詳細を示す図である。
図1Bは、図1AのSSDの1つ若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す図である。
図2は、論理ブロックアドレス(Logical Block Address:LBA)の論理ページ番号(Logical Page Number:LPN)部分のマッピングの実施形態の選択された詳細を示す図である。
図3は、読み出し単位の量として測った長さを総体として有する、様々な読み出し単位数として編成された読み出しデータを生成するための読み出し単位アドレスのところの不揮発性メモリ(Non−Volatile Memory:NVM)へのアクセスの実施形態の選択された詳細を示す図である。
図4Aは、読み出し単位の実施形態の選択された詳細を示す図である。
図4Bは、読み出し単位の別の実施形態の選択された詳細を示す図である。
図5は、いくつかのフィールドを有するヘッダの実施形態の選択された詳細を示す図である。
図6は、論理スライスおよび/またはセクションとして管理される複数のNVMデバイス(1若しくはそれ以上のフラッシュダイおよび/またはフラッシュチップなど)のブロック、ページ、および読み出し単位の実施形態の選択された詳細を示す図である。
図7は、より高いレベル冗長技術の様々な実施形態の選択された詳細を図示する。
図8は、シリコン独立要素の冗長アレイ(RASIE)を用いた動的なより高いレベルの冗長モードの管理の実施形態の選択された詳細を図示する。
図9は、読み出し単位のうちの1若しくはそれ以上に格納されたより高いレベルの冗長情報によって保護された適応性符号率のより低いレベルの冗長情報を有する読み出し単位の実施形態を図示する。
図10は、より高いレベルの冗長情報の結果とデータ供給源との対応の実施形態の選択された詳細を図示する。
図11は、より高いレベルの冗長情報の計算の実施形態の選択された詳細を図示する。
図12は、(単一の動作の間の)1つの(より低いレベルの)故障からの回復の実施形態の選択された詳細を図示する。
図13Aは、(単一の動作の間の)2つの(より低いレベルの)故障からの回復の実施形態の選択された詳細を図示する。
図13Bは、(単一の動作の間の)2つの(より低いレベルの)故障からの回復の実施形態の選択された詳細を図示する。
図13Cは、(単一の動作の間の)2つの(より低いレベルの)故障からの回復の実施形態の選択された詳細を図示する。
図13Dは、(単一の動作の間の)2つの(より低いレベルの)故障からの回復の実施形態の選択された詳細を図示する。
図14Aは、NVMから受信されたページに関するより高いレベルの冗長情報を計算する実施形態の選択された詳細を図示する。
図14Bは、NVMから受信されたページに関するより高いレベルの冗長情報を計算する実施形態の選択された詳細を図示する。
図15Aは、NVMに提供された書き込みに関するより高いレベルの冗長情報の計算の取り消しの実施形態の選択された詳細を図示する。
図15Bは、NVMに提供された書き込みに関するより高いレベルの冗長情報の計算の取り消しの実施形態の選択された詳細を図示する。
図15Cは、NVMに提供された書き込みに関するより高いレベルの冗長情報の計算の取り消しの実施形態の選択された詳細を図示する。
図16は、冗長アレイによるNVM障害回復の実施形態の選択された詳細を示す図である。

0007

実施例

0008

本発明の1若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含するものである。説明が単調にならないように、様々な言葉によるラベル(最初の、最後の、ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど)が実施形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのようなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝えるためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施形態がプロセス、システム、および/またはプログラム命令の各特徴の差異を説明するのに使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な実施形態にそれぞれ対応する複数の動作モードの1つの静的選択および/または動的選択を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供するために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わかりやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に曖昧になることのないように詳細に説明していない。

0009

概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は、(それがある場合には、明示的な例を含む)この概説で提示される概念だけに限定されるものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するものである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他の実施形態があり、それらを本明細書の残りの部分にわたって論じる。

0010

頭字語
以下で定義する様々な省略形(頭字語など)の少なくともいくつかは、本明細書で使用するある一定の要素を指す。

0011

0012

NANDフラッシュメモリは情報を格納するために浮遊ゲートトランジスタアレイを使用する。SLC技術において、各ビットセル(例えば、浮遊ゲートトランジスタ)は1ビットの情報を格納することを可能にされる。MLC技術において、各ビットセルは複数ビットの情報を格納することを可能にされる。製造技術(例えば、CMOS技術)が縮小すると、各浮遊ゲートが格納する電子はより少なくなる。さらに、格納容量及び格納密度が増加すると、各ビットセルが格納するビットはより多くなる。従って、ビットセルに格納される値は、より小さい電圧範囲によって表される。格納された電子の量を時の経過に伴って検知することの不確実性および/または電子の量の変化が、データが不正確に格納される可能性又はデータが不正確に読み出される可能性を増大させる。1若しくはそれ以上の(例えば、より低いレベルにおける)冗長および/またはECCの技術の使用は、NANDフラッシュメモリからの、別の方法では破損されるデータの正しい検索を可能にし、一部の使用シナリオにおいて上記の問題点の一部を克服する。

0013

一部の種類のSSDは非揮発性ストレージを提供するためにフラッシュメモリを使用する(例えば、フラッシュメモリは電力を加えることなく情報を保持する)。1若しくはそれ以上の(例えば、より高いレベルにおける)ECCおよび/または冗長の技術の使用は、フラッシュメモリからの、別の方法では破損されるデータの正しい検索を可能にし、および/または1若しくはそれ以上のフラッシュメモリ要素が断続的又は永続的に故障した時であってもSSDの適切なシステムレベルの動作を可能にする。

0014

例えば、1若しくはそれ以上のNVM(例えば、フラッシュ)要素が部分的にコントローラによって実装されたSSDの動作の間に故障すると、SSDコントローラはグレイスフデグラデーションを提供するように独立したシリコン要素を用いた動的なより高いレベルの冗長モードの管理を可能にする。NVMの一部分が読み出される。(例えば、1若しくはそれ以上のECC技術に従った)より低いレベルの冗長性および/または誤り訂正を使用して訂正可能ではない誤りが生じた場合には、(例えば、1若しくはそれ以上のRASIE技術および/または動的なより高いレベルの冗長モード管理技術に従った)より高いレベルの冗長性および/または誤り訂正が誤りを訂正しようとするために使用される。NVM要素のうちの1つの故障が、より低いレベル及び/若しくはより高いレベルの冗長性および/または誤り訂正によって、並びに/又は他の技術(例えば、NVM要素のうちの1若しくはそれ以上によって報告された故障状態)によって検知された場合に、より高いレベルの冗長性および/または誤り訂正が現在のモードにおける動作から新しいモードにおける動作に動的に遷移させられる。遷移は、SSD上で利用可能な自由空間を減少させることと、SSDのデータストレージ再構成することと、故障したユーザデータを(可能である場合には)回復/格納することと、修正されたより高いレベルの誤り訂正情報を決定/格納することとのうちの1若しくはそれ以上を含む。それから動作は新しいモードで継続する。NVM要素のうちの別のものの別の故障が現在新しいモードにおいて動作しているより高いレベルの冗長性および/または誤り訂正で検知された場合には、別の遷移が別のより高いレベルの冗長性および/または誤り訂正モードに対して行われる。より高いレベルの冗長性および/または誤り訂正動作モードと書き込みデータとに従ってより高いレベルの冗長性および/または誤り訂正情報を決定及び/格納することを含む、NMVを書き込むことはより高いレベルの冗長性および/または誤り訂正動作モードに従うものである。

0015

閾値より大きい数および/若しくはより低レベル誤り訂正率ならびに/または1若しくはそれ以上の障害があるメモリ領域について発生した場合には、任意選択で、そのメモリ領域は、現在のより高いレベルの冗長モードおよび/または誤り訂正動作モードよりも多くの誤りから回復することができるようにした新しいより高いレベルの冗長モードおよび/または誤り訂正動作モードでの動作に動的に遷移される。例えば、現在のより高いレベルの冗長モードおよび/または誤り訂正動作モードがない(より低いレベルの冗長性の障害から回復して誤りを訂正するためにより高いレベルの冗長情報が、計算されず、かつ/または使用されないなどの)場合には、新しいより高いレベルの冗長モードおよび/または誤り訂正動作モードは、より低いレベルの冗長性によって訂正不能な単一の障害からの回復を可能にするモードである。別の例として、現在のより高いレベルの冗長モードおよび/または誤り訂正動作モードが、より低いレベルの冗長性によって訂正不能な単一の障害からの回復を可能にするモードである場合には、新しいより高いレベルの冗長モードおよび/または誤り訂正動作モードは、より低いレベルの冗長性によって訂正不能な2つの障害からの回復を可能にするモードである。

0016

より高いレベルの冗長性および/または誤り訂正情報を決定/格納することは、一部の実施形態および/または使用シナリオにおいて、より高いレベルの冗長情報の計算に従うものである。より高いレベルの冗長情報の計算は、コントローラによって部分的に実装されたSSDの動作の間、不揮発性(例えば、フラッシュ)メモリ要素の故障という状況で信頼可能な動作を維持するために、SSDコントローラがより高いレベルの冗長能力を提供することを可能にする。より高いレベルの冗長情報の第1の部分がより高いレベルの冗長情報によって保護されるデータの一部分(例えば、ストライプ)における全てのページのXORを介したパリティ符号化を使用して計算される。より高いレベルの冗長情報の第2の部分が加重和技術を使用して計算され、第2の部分における各ページは、加重和を計算する時の重みとして、ゼロではない固有の「指数」を割り当てられる。有限体(例えば、ガロア体、又は例えば、pが素数である整数モジュロp)に対して計算が行われる。

0017

より高いレベルの冗長情報のそれらの部分は、例えば、NVM要素上で行われる1若しくはそれ以上の読み出し動作の計算の順序によって決定された順序又は例えば、NVM要素から戻される及び/若しくはNVM要素から利用可能なデータの順序に基づいた順序などの任意の順序で計算可能であり、様々な実施形態において、バッファリングを減少又は排除することを可能にする。任意の順序の計算の可能性が、様々な実施形態において、比較的に小さい一時的なおよび/または中間のバッファリングおよび/または状態を使用して、回復データ値を計算すること、および/または書き込みを取り消すことを可能にする。より高いレベルの冗長情報のそれらの部分は、例えば、利用可能な専用のハードウェア要素によって決定された任意の程度の並列処理を用いて計算可能であり、様々な実施形態において、減少した待ち時間処理および/または減少したメモリ(例えば、NVM)帯域幅の使用を可能にする。

0018

より高いレベルの冗長情報は、様々な実施形態および/または使用シナリオにおいて、いくつかの他の技術と比べて高いプログラミング帯域幅および/または低い待ち時間を提供しつつ、NVM素子への書き込み/プログラムの障害からの回復を可能にする。NVM素子に書き込んでいる間に、(例えば、1若しくはそれ以上のRASIE技術による)より高いレベルの冗長情報が、例えば、計算してからオンチップメモリに記憶することによって維持される。この維持は、NVM素子を対象とする進行中の書き込み/プログラム動作と関連付けられるすべてのデータをカバーするのに十分なものである。例えばデータは、データが書き込み/プログラミングのためにNVM素子に送られたときから、NVM素子がデータの正常な書き込み/プログラミングを表示するまで進行中である。データが書き込み/プログラミングのためにNVM素子に送られ、書き込み/プログラム障害からの回復のために維持されているより高いレベルの冗長情報に蓄積され次第、データと関連付けられたバッファリングが解放される。より高いレベルの冗長情報と関連付けられたバッファリングは、書き込み/プログラミングの完了(または障害)まで保持される。

0019

NVM素子のうちの1つの書き込み/プログラム障害が生じた場合には、それに応答して、より高いレベルの冗長情報が障害からの回復に使用される。障害が原因で失われたそれ以外のデータは、より高いレベルの冗長情報および以前に(正常に)書き込まれ/プログラムされたデータの全部または任意の部分に基づいて突き止められる。任意選択で、NVM素子の書き込み/プログラム障害からの回復のために維持されるより高いレベルの冗長情報の全部または任意の部分が、(例えば、NVM素子の後続読み出しの間のより低いレベルの障害からの回復を可能とするために)NVM素子に書き込まれ/プログラムされる。

0020

例示的実施形態
詳細な説明の概説を終えるにあたり、以下に、例示的実施形態をまとめて示す。これらの例示的実施形態は、少なくとも部分的に「EC」(Example Combinations:ECs)として明示的に列挙されたものを有し、本明細書で説明する概念に従った様々な種類の実施形態の詳細な説明を提供するものである。これらの例は、相互排他的であることも、網羅的であることも、限定的であることも意図されておらず、本発明は、これらの例示的実施形態だけに限定されるものではなく、発行される特許請求の範囲およびその均等物の範囲内のすべての可能な改変形態および変形形態を包含するものである。

0021

EC1)方法であって、
不揮発性メモリコントローラにおいて、複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る工程であって、当該データは当該N個の部分のうちの特定の1つをプログラムするための特定のデータを有するものである、前記受け取る工程と、
前記特定のデータを割り当てられたバッファに記憶する工程であって、当該バッファは前記不揮発性メモリコントローラと関連付けられているものである、前記記憶する工程と、
前記不揮発性メモリのうちの特定の1つに対して前記特定のデータのプログラミングを開始する工程と、
前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する工程と、
前記割り当てられたバッファを解放する工程と
を有し、
前記記憶する工程、前記特定のデータのプログラミングを開始する工程、前記冗長情報を更新する工程、および前記解放する工程のうちの少なくとも1つは、前記受け取る工程に応答するものであり、
前記解放する工程は、前記特定の不揮発性メモリが前記プログラミングを完了する前に行われるものである、
方法。

0022

EC2)EC1記載の方法において、前記冗長情報は第1の冗長情報であり、データは前記N個の部分のサブセットのために受け取られるものであり、プログラミングは前記N個の部分の前記サブセットについてはまだ開始されていないものであり、この方法は、さらに、
前記N個の部分の前記サブセットのうちの少なくとも一部のプログラミングを遅延させる工程と、
前記不揮発性メモリのうちの複数のメモリに対して前記第1の冗長情報のプログラミングを開始する工程と、
前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する工程と、
前記第1の冗長情報とは異なる、前記N個の部分の前記サブセットのうちM個の障害から回復するのに十分な第2の冗長情報を更新する工程と
を有するものであり、
前記プログラミングを遅延させる工程、前記第1の冗長情報のプログラミングを開始する工程、前記N個の部分のサブセットのうちの前記少なくとも一部のプログラミングを開始する工程、および前記第2の冗長情報を更新する工程のうちの少なくとも1つは、前記特定のデータの前記プログラミングの障害を検出したことに応答するものである方法。

0023

EC3)EC2記載の方法において、前記特定のデータは、前記障害が検出された場合、もっぱら前記第1の冗長情報で符号化されているとおりに記憶されるものである方法。

0024

EC4)EC1記載の方法において、前記データは、前記N個の部分のうちの第1の部分をプログラムするための初期データをさらに有するものであり、さらに、
少なくとも部分的に前記初期データに基づいて前記冗長情報を初期設定する工程を有するものである方法。

0025

EC5)EC1記載の方法において、前記不揮発性メモリコントローラは前記割り当てられたバッファを有する方法。

0026

EC6)EC1記載の方法において、前記割り当てられたバッファは、前記不揮発性メモリコントローラを有する第2のチップとは独立した第1のチップに具備される方法。

0027

EC7)EC1記載の方法において、前記不揮発性メモリコントローラは、ストレージインターフェース規格適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作するものである方法。

0028

EC8)EC1記載の方法において、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有するものである方法。

0029

EC9)方法であって、
複数の不揮発性メモリのうちN個の部分をプログラムするためのデータを受け取る工程と、
前記受け取ったデータに従って前記N個の部分の初期プログラミングを要求する工程であって、当該初期プログラミングは、N個の部分の第2の部分で当該初期プログラミングが開始される前に、前記N個の部分の第1の部分で完了するものである、前記要求する工程と、
前記初期プログラミングを要求する工程に応答して、前記初期プログラミングが要求されたN個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する工程と、
前記初期プログラミングに失敗したN個の部分の第1の部分のうち1からM個までを特定する工程に応答して、少なくとも部分的に前記冗長情報に基づいて計算されたデータに応じた前記不揮発性メモリのうちの最大M個までの代替部分の代替プログラミングを要求する工程と
を有する方法。

0030

EC10)EC9記載の方法において、前記冗長情報は第1の冗長情報であり、さらに、
前記特定する工程、および前記N個の部分の前記第2の部分の各々の初期プログラミングを要求する工程に応答して、前記第1の冗長情報とは異なる第2の冗長情報を更新する工程を有するものである方法。

0031

EC11)EC9記載の方法において、当該方法の各工程は、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作する不揮発性メモリコントローラによって少なくとも部分的に実行されるものである方法。

0032

EC12)EC11記載の方法において、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有するものである方法。

0033

EC13)方法であって、
複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る工程と、
少なくとも部分的に前記受け取ったデータに基づき、前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を計算する工程と、
前記受け取ったデータに従って前記N個の部分の初期プログラミングを要求する工程と、
前記初期プログラミングに失敗したN個の部分のうちの1からM個までを特定する工程に応答して、少なくとも部分的に前記冗長情報に基づいて計算されたデータに応じた前記不揮発性メモリのうちの最大M個までの代替部分の代替プログラミングを要求する工程と
を有する方法。

0034

EC14)EC13記載の方法において、前記計算されるデータは、さらに、前記初期プログラミングが完了した前記N個の部分のうちの複数の部分から読み出されるデータに少なくとも部分的に基づくものであり、当該読み出されるデータは、前記受け取られたデータの部分に対応するものである方法。

0035

EC15)EC13記載の方法において、さらに、
前記冗長情報の全部または任意の部分に応じた前記不揮発性メモリのM−P個の部分の追加プログラミングを要求する工程を有するものである方法。

0036

EC16)EC15記載の方法において、Pは0である方法。

0037

EC17)EC15記載の方法において、Pは1である方法。

0038

EC18)EC13記載の方法において、Mは2であり、さらに、
前記N個の部分のうちの1つの障害から回復するのに十分な冗長情報のサブセットを用いて前記不揮発性メモリの追加部分の追加プログラミングを要求する工程を有するものである方法。

0039

EC19)EC13記載の方法において、前記初期プログラミングは、少なくとも部分的に第1のインターフェースを介して行われるものであり、さらに、
前記第1のインターフェースとは独立した第2のインターフェースを少なくとも部分的に介して冗長情報を記憶する工程を有するものである方法。

0040

EC20)EC19記載の方法において、前記第1のインターフェースはチップ間インターフェースであり、前記第2のインターフェースはチップ内インターフェースである方法。

0041

EC21)EC20記載の方法において、前記チップ間インターフェースは、コントローラチップと不揮発性メモリを有する1若しくはそれ以上のチップとの間で動作するものである方法。

0042

EC22)EC21記載の方法において、前記チップ内インターフェースは、前記コントローラチップの制御ハードウェアと前記コントローラチップのメモリとの間で動作するものである方法。

0043

EC23)EC13記載の方法において、さらに、
少なくとも前記特定する工程が完了するまで冗長情報を記憶する工程を有するものである方法。

0044

EC24)EC23記載の方法において、さらに、
前記計算データを計算した後で、前記記憶する工程によって使用された記憶領域を解放する工程を有するものである方法。

0045

EC25)EC13記載の方法において、当該方法の各工程は、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作する不揮発性メモリコントローラによって少なくとも部分的に実行されるものである方法。

0046

EC26)EC25記載の方法において、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有するものである方法。

0047

EC27)EC1、EC9、またはEC13記載の方法において、前記N個の部分の各々は、前記不揮発性メモリのそれぞれの1若しくはそれ以上のページを有するものである方法。

0048

EC28)EC1、EC9、またはEC13記載の方法において、前記N個の部分の各々は、前記不揮発性メモリのそれぞれの1若しくはそれ以上のブロックを有するものである方法。

0049

EC29)EC1、EC9、またはEC13記載の方法において、前記不揮発性メモリは1若しくはそれ以上のフラッシュメモリを有するものである方法。

0050

EC30)システムであって、
割り当てられたバッファと、
不揮発性メモリコントローラにおいて、複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る手段であって、当該データは当該N個の部分のうちの特定の1つをプログラムするための特定のデータを有するものである、前記受け取る手段と、
前記特定のデータを前記割り当てられたバッファに記憶する手段であって、当該バッファは前記不揮発性メモリコントローラと関連付けられているものである、前記記憶する手段と、
前記不揮発性メモリのうちの特定の1つに対して前記特定のデータのプログラミングを開始する手段と、
前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する手段と、
前記割り当てられたバッファを解放する手段と
を有し、
前記記憶する手段、前記特定のデータのプログラミングを開始する手段、前記冗長情報を更新する手段、および前記解放する手段のうちの少なくとも1つは、前記受け取る手段に応答するものであり、
前記解放する手段は、前記特定の不揮発性メモリが前記プログラミングを完了する前に前記割り当てられたバッファを解放するように動作するものである、
システム。

0051

EC31)EC30記載のシステムにおいて、前記冗長情報は第1の冗長情報であり、データはN個の部分のサブセットのために受け取られるものであり、プログラミングは前記N個の部分の該サブセットについてまだ開始されていないものであり、このシステムは、さらに、
前記N個の部分の前記サブセットのうちの少なくとも一部のプログラミングを遅延させる手段と、
前記不揮発性メモリのうちの複数のメモリに対して前記第1の冗長情報のプログラミングを開始する手段と、
前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する手段と、
前記第1の冗長情報とは異なる、前記N個の部分のサブセットのうちのM個の障害から回復するのに十分な第2の冗長情報を更新する手段と
を有するものであり、
前記プログラミングを遅延させる手段、前記第1の冗長情報のプログラミングを開始する手段、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する手段、および前記第2の冗長情報を更新する手段のうちの少なくとも1つは、前記特定のデータの前記プログラミングの障害を検出する手段に応答するものであるシステム。

0052

EC32)EC31記載のシステムにおいて、前記特定のデータは、前記障害が検出された場合、もっぱら第1の冗長情報で符号化されているとおりに記憶されるシステム。

0053

EC33)EC30記載のシステムにおいて、前記データは、前記N個の部分のうちの第1の部分をプログラムするための初期データをさらに有するものであり、さらに、
少なくとも部分的に前記初期データに基づいて前記冗長情報を初期設定する手段を有するものであるシステム。

0054

EC34)EC30記載のシステムにおいて、前記不揮発性メモリコントローラは割り当てられたバッファを有するシステム。

0055

EC35)EC30記載のシステムにおいて、前記割り当てられたバッファは、前記不揮発性メモリコントローラを有する第2のチップとは独立した第1のチップに具備されるシステム。

0056

EC36)EC30記載のシステムにおいて、前記不揮発性メモリコントローラは、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作するものであるシステム。

0057

EC37)EC30記載のシステムにおいて、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有するシステム。

0058

EC38)システムであって、
複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る手段と、
前記受け取ったデータに従って前記N個の部分の初期プログラミングを要求する手段であって、当該初期プログラミングは、N個の部分の第2の部分で当該初期プログラミングが開始される前に、前記N個の部分の第1の部分で完了するものである、前記要求する手段と、
前記初期プログラミングを要求する工程に応答して、前記初期プログラミングが要求されたN個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する手段と、
前記初期プログラミングに失敗したN個の部分の第1の部分のうちの1からM個までを特定する工程に応答して、少なくとも部分的に冗長情報に基づいて計算されたデータに応じた不揮発性メモリのうちの最大M個までの代替部分の代替プログラミングを要求する手段と
を有するシステム。

0059

EC39)EC38記載のシステムにおいて、前記冗長情報は第1の冗長情報であり、さらに、
前記特定する工程、および前記N個の部分の前記第2の部分の各々の初期プログラミングを要求する手段に応答して、前記第1の冗長情報とは異なる第2の冗長情報を更新する手段を有するものであるシステム。

0060

EC40)EC38記載のシステムにおいて、当該システムの各手段は、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作する不揮発性メモリコントローラによって少なくとも部分的に具備されるシステム。

0061

EC41)EC40記載のシステムにおいて、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有するシステム。

0062

EC42)システムであって、
複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る手段と、
少なくとも部分的に受け取ったデータに基づき、前記N個の部分のうちのM個の障害から回復するのに十分な冗長情報を計算する手段と、
前記受け取ったデータに応じたN個の部分の初期プログラミングを要求する手段と、
初期プログラミングに失敗したN個の部分のうちの1からM個までを特定したことに応答して、少なくとも部分的に冗長情報に基づいて計算されたデータに応じた不揮発性メモリのうちの最大M個までの代替部分の代替プログラミングを要求する手段と
を有するシステム。

0063

EC43)EC42記載のシステムにおいて、前記計算されるデータは、さらに、前記初期プログラミングを完了した前記N個の部分のうちの複数の部分から読み出されるデータに少なくとも部分的に基づくものであり、当該読み出されるデータは、前記受け取られたデータの部分に対応するものであるシステム。

0064

EC44)EC42記載のシステムにおいて、さらに、
前記冗長情報の全部または任意の部分に応じた不揮発性メモリのM−P個の部分の追加プログラミングを要求する手段を有するものであるシステム。

0065

EC45)EC44記載のシステムにおいて、Pは0であるシステム。

0066

EC46)EC44記載のシステムにおいて、Pは1であるシステム。

0067

EC47)EC42記載のシステムにおいて、Mは2であり、さらに、
前記N個の部分のうちの1つの障害から回復するのに十分な冗長情報のサブセットを用いた前記不揮発性メモリの追加部分の追加プログラミングを要求する手段を有するものであるシステム。

0068

EC48)EC42記載のシステムにおいて、前記初期プログラミングの手段は、少なくとも部分的に第1のインターフェースを介して動作し、さらに、
前記第1のインターフェースとは独立した第2のインターフェースを少なくとも部分的に介して実行される冗長情報を記憶する手段を有するものであるシステム。

0069

EC49)EC48記載のシステムにおいて、前記第1のインターフェースはチップ間インターフェースであり、前記第2のインターフェースはチップ内インターフェースであるシステム。

0070

EC50)EC49記載のシステムにおいて、前記チップ間インターフェースは、コントローラチップと不揮発性メモリとを有する1若しくはそれ以上のチップとの間で動作することができるようにしたシステム。

0071

EC51)EC50記載のシステムにおいて、前記チップ内インターフェースは前記、コントローラチップの制御ハードウェアとコントローラチップのメモリとの間で動作することができるようにしたシステム。

0072

EC52)EC42記載のシステムにおいて、さらに、
前記少なくとも特定する工程が完了するまで冗長情報を記憶する手段を有するものであるシステム。

0073

EC53)EC52記載のシステムにおいて、さらに、
前記計算データを計算した後で、前記記憶する手段によって使用された記憶領域を解放する手段を有するものであるシステム。

0074

EC54)EC42記載のシステムにおいて、当該システムの各手段は、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作する不揮発性メモリコントローラに少なくとも部分的に具備されるシステム。

0075

EC55)EC54記載のシステムにおいて、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有するものであるシステム。

0076

EC56)EC30、EC38、またはEC42記載のシステムにおいて、前記N個の部分の各々は、前記不揮発性メモリのそれぞれの1若しくはそれ以上のページを有するものであるシステム。

0077

EC57)EC30、EC38、またはEC42記載のシステムにおいて、前記N個の部分の各々は、前記不揮発性メモリのそれぞれの1若しくはそれ以上のブロックを有するものであるシステム。

0078

EC58)EC30、EC38、またはEC42記載のシステムにおいて、前記不揮発性メモリは1若しくはそれ以上のフラッシュメモリを有するものであるシステム。

0079

EC59)処理要素によって実行されると、当該処理要素に動作を実行させ、かつ/または制御させる命令のセットが記憶されている有形のコンピュータ可読媒体であって、前記動作は、
不揮発性メモリコントローラにおいて、複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る動作であって、当該データは当該N個の部分のうちの特定の1つをプログラムするための特定のデータを有するものである、前記受け取る動作と、
前記特定のデータを割り当てられたバッファに記憶する動作であって、当該バッファは前記不揮発性メモリコントローラと関連付けられているものである前記記憶する動作と、
前記不揮発性メモリのうちの特定の1つに対して前記特定のデータのプログラミングを開始する動作と、
前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を更新する動作と、
前記割り当てられたバッファを解放する動作と
を有し、
前記記憶する動作、前記特定のデータのプログラミングを開始する動作、前記冗長情報を更新する動作、および前記解放する動作のうちの少なくとも1つは、前記特定のデータの受け取る動作に応答するものであり、
前記解放する動作は、前記特定の不揮発性メモリが前記プログラミングを完了する前に行われるものである、
有形のコンピュータ可読媒体。

0080

EC60)EC59記載の有形のコンピュータ可読媒体において、前記冗長情報は第1の冗長情報であり、データはN個の部分のサブセットのために受け取られるものであり、プログラミングは前記N個の部分の前記サブセットについてまだ開始されていないものであり、前記動作は、さらに、
前記N個の部分の前記サブセットのうちの少なくとも一部のプログラミングを遅延させる動作と、
前記不揮発性メモリのうちの複数のメモリに対して前記第1の冗長情報のプログラミングを開始する動作と、
前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する動作と、
前記第1の冗長情報とは異なる、前記N個の部分の前記サブセットのうちのM個の障害から回復するのに十分な第2の冗長情報を更新する動作と
を有するものであり、
前記プログラミングを遅延させる動作、前記第1の冗長情報のプログラミングを開始する動作、前記N個の部分の前記サブセットのうちの前記少なくとも一部のプログラミングを開始する動作、および前記第2の冗長情報を更新する動作のうちの少なくとも1つは、前記特定のデータの前記プログラミングの障害を検出したことに応答したものである有形のコンピュータ可読媒体。

0081

EC61)EC60記載の有形のコンピュータ可読媒体において、前記特定のデータは、障害が検出された場合、もっぱら前記第1の冗長情報で符号化されているとおりに記憶される有形のコンピュータ可読媒体。

0082

EC62)EC59記載の有形のコンピュータ可読媒体において、前記データは、前記N個の部分のうちの第1の部分をプログラムするための初期データをさらに有するものであり、前記動作は、さらに、
少なくとも部分的に前記初期データに基づいて前記冗長情報を初期設定する動作を有するものである有形のコンピュータ可読媒体。

0083

EC63)EC59記載の有形のコンピュータ可読媒体において、不揮発性メモリコントローラは割り当てられたバッファを有する有形のコンピュータ可読媒体。

0084

EC64)EC59記載の有形のコンピュータ可読媒体において、前記割り当てられたバッファは、前記不揮発性メモリコントローラを有する第2のチップとは独立した第1のチップに具備される有形のコンピュータ可読媒体。

0085

EC65)EC59記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作するものである有形のコンピュータ可読媒体。

0086

EC66)EC59記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有する有形のコンピュータ可読媒体。

0087

EC67)EC59記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは処理要素を有するものである有形のコンピュータ可読媒体。

0088

EC68)処理要素によって実行されると、処理要素に動作を実行させ、かつ/または制御させる命令のセットが記憶されている有形のコンピュータ可読媒体であって、前記動作は、
複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る動作と、
前記受け取ったデータに従って前記N個の部分の初期プログラミングを要求する動作であって、当該初期プログラミングは、N個の部分の第2の部分で当該初期プログラミングが開始される前に、前記N個の部分の第1の部分で完了するものである、前記要求する動作と、
前記初期プログラミングを要求する動作に応答して、前記初期プログラミングが要求されたN個の部分のうちのM個の障害から回復するのに十分な冗長情報を更新する動作と、
前記初期プログラミングに失敗したN個の部分の第1の部分のうち1からM個までを特定する工程に応答して、少なくとも部分的に前記冗長情報に基づいて計算されたデータに応じた前記不揮発性メモリのうちの最大M個までの代替部分の代替プログラミングを要求する動作と
を有する有形のコンピュータ可読媒体。

0089

EC69)EC68記載の有形のコンピュータ可読媒体において、前記冗長情報は第1の冗長情報であり、前記動作は、さらに、
前記特定する工程、および前記N個の部分の第2の部分の各々の初期プログラミングを要求する工程に応答して、前記第1の冗長情報とは異なる第2の冗長情報を更新する動作を有するものである有形のコンピュータ可読媒体。

0090

EC70)EC68記載の有形のコンピュータ可読媒体において、前記処理要素は、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作する不揮発性メモリコントローラに具備されるものである有形のコンピュータ可読媒体。

0091

EC71)EC70記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有する有形のコンピュータ可読媒体。

0092

EC72)処理要素によって実行されると、処理要素に動作を実行させ、かつ/または制御させる命令のセットが記憶されている有形のコンピュータ可読媒体であって、前記動作は、
複数の不揮発性メモリのうちのN個の部分をプログラムするためのデータを受け取る動作と、
少なくとも部分的に受け取ったデータに基づき、前記N個の部分のうちM個の障害から回復するのに十分な冗長情報を計算する動作と、
前記受け取ったデータに従って前記N個の部分の初期プログラミングを要求する動作と、
前記初期プログラミングに失敗したN個の部分のうちの1からM個までを特定する工程に応答して、少なくとも部分的に前記冗長情報に基づいて計算されたデータに応じた前記不揮発性メモリのうちの最大M個までの代替部分の代替プログラミングを要求する動作と
を有する有形のコンピュータ可読媒体。

0093

EC73)EC72記載の有形のコンピュータ可読媒体において、前記計算されるデータは、さらに、前記初期プログラミングを完了した前記N個の部分のうちの複数の部分から読み出されるデータに少なくとも部分的に基づくものであり、当該読み出されるデータは、前記受け取られたデータの部分に対応するものである有形のコンピュータ可読媒体。

0094

EC74)EC72記載の有形のコンピュータ可読媒体において、前記動作は、読み出された冗長情報の全部または任意の部分に応じた読み出された不揮発性メモリのM−P個の部分の追加プログラミングを要求する動作をさらに有するものである有形のコンピュータ可読媒体。

0095

EC75)EC74記載の有形のコンピュータ可読媒体において、Pは0である有形のコンピュータ可読媒体。

0096

EC76)EC74記載の有形のコンピュータ可読媒体において、Pは1である有形のコンピュータ可読媒体。

0097

EC77)EC72記載の有形のコンピュータ可読媒体において、Mは2であり、前記動作は、さらに、
前記N個の部分のうちの1つの障害から回復するのに十分な冗長情報のサブセットを用いて前記不揮発性メモリの追加部分の追加プログラミングを要求する動作を有するものである有形のコンピュータ可読媒体。

0098

EC78)EC72記載の有形のコンピュータ可読媒体において、前記初期プログラミングは、少なくとも部分的に第1のインターフェースを介して行われるものであり、前記動作は、さらに、
前記第1のインターフェースとは独立した第2のインターフェースを少なくとも部分的に介して冗長情報を記憶する動作を有するものである有形のコンピュータ可読媒体。

0099

EC79)EC78記載の有形のコンピュータ可読媒体において、前記第1のインターフェースはチップ間インターフェースであり、前記第2のインターフェースはチップ内インターフェースである有形のコンピュータ可読媒体。

0100

EC80)EC79記載の有形のコンピュータ可読媒体において、前記チップ間インターフェースは、コントローラチップと不揮発性メモリとを有する1若しくはそれ以上のチップとの間で動作するものである有形のコンピュータ可読媒体。

0101

EC81)EC80記載の有形のコンピュータ可読媒体において、前記チップ内インターフェースは、前記コントローラチップの制御ハードウェアとコントローラチップのメモリとの間で動作するものである有形のコンピュータ可読媒体。

0102

EC82)EC72記載の有形のコンピュータ可読媒体において、前記動作は、少なくとも特定する動作が完了するまで冗長情報を記憶する動作を有するものである有形のコンピュータ可読媒体。

0103

EC83)EC82記載の有形のコンピュータ可読媒体において、前記動作は、前記計算データを計算した後で、記憶する動作によって使用された記憶領域を解放する動作を有するものである有形のコンピュータ可読媒体。

0104

EC84)EC72記載の有形のコンピュータ可読媒体において、前記処理要素は、ストレージインターフェース規格と適合するコンピューティング・ホスト・インターフェースを少なくとも部分的に介してコンピューティングホストと通信可能なソリッドステート・ディスク・コントローラとして動作する不揮発性メモリコントローラに含まれる有形のコンピュータ可読媒体。

0105

EC85)EC84記載の有形のコンピュータ可読媒体において、前記不揮発性メモリコントローラは、前記不揮発性メモリと通信可能なフラッシュ・メモリ・インターフェースを有する有形のコンピュータ可読媒体。

0106

EC86)EC59、EC68、またはEC72記載の有形のコンピュータ可読媒体において、前記N個の部分の各々は、前記不揮発性メモリのそれぞれの1若しくはそれ以上のページを有するものである有形のコンピュータ可読媒体。

0107

EC87)EC59、EC68、またはEC72記載の有形のコンピュータ可読媒体において、前記N個の部分の各々は、前記不揮発性メモリのそれぞれの1若しくはそれ以上のブロックを有するものである有形のコンピュータ可読媒体。

0108

EC88)EC59、EC68、またはEC72記載の有形のコンピュータ可読媒体において、前記不揮発性メモリは1若しくはそれ以上のフラッシュメモリを有するものである有形のコンピュータ可読媒体。

0109

EC89)記憶インターフェース規格を有し、または参照する前述のECのうちいずれかであって、記憶インターフェース規格は、
ユニバーサルシリアルバス(USB)インターフェース規格
コンパクトフラッシュ登録商標)(CF)インターフェース規格、
マルチメディアカードMMC)インターフェース規格、
組み込みMMC(eMMC)インターフェース規格、
サンダーボルト(Thunderbolt)インターフェース規格、
FSインターフェース規格、
セキュアディジタル(SD)インターフェース規格、
メモリ・スティック・インターフェース規格、
xDピクチャカード・インターフェース規格、
統合ドライブエレクトロニクス(IDE)インターフェース規格、
シリアル・アドバンスドテクノロジアタッチメント(SATA)インターフェース規格、
外部SATA(eSATA)インターフェース規格、
小型コンピュータ・システム・インターフェース(SCSI)インターフェース規格、
シリアル小型コンピュータ・システム・インターフェース(SAS)インターフェース規格、
ファイバチャネル・インターフェース規格、
イーサネット(登録商標)(Ethernet(登録商標))インターフェース規格、および
周辺装置相互接続エクスプレスPCIe)インターフェース規格
のうち1若しくはそれ以上を有するEC。

0110

EC90)フラッシュ・メモリ・インターフェースを有し、または参照する前述のECのうちいずれかであって、フラッシュ・メモリ・インターフェースは、
オープンNANDフラッシュインターフェース(ONFI)、
トグルモードインターフェース、
ダブルデータレートDDR)同期インターフェース
DDR2同期インターフェース、
同期インターフェース、および
非同期インターフェース
のうち1若しくはそれ以上と適合するEC。

0111

EC91)コンピューティングホストを有し、または参照する前述のECのうちいずれかであって、コンピューティングホストは、
コンピュータ、
ワークステーションコンピュータ
サーバコンピュータ
ストレージサーバ
ストレージ・アタッチト・ネットワーク(SAN)、
ネットワーク・アタッチト・ストレージ(NAS)デバイス
ダイレクト・アタッチト・ストレージ(DAS)デバイス、
ストレージアプライアンス
パーソナルコンピュータ(PC)、
ラップトップコンピュータ
ノートブックコンピュータ
ネットブックコンピュータ、
タブレット機器またはタブレットコンピュータ
ウルトラブックコンピュータ、
電子読み出し装置(e−reader)、
携帯情報端末(PDA)
ナビゲーションンシステム
ハンドヘルド型全地球測位システム(GPS)機器
自動通信路制御システム、
自動車媒体制御システムまたは自動車媒体制御コンピュータ、
プリンタコピー機またはファックス機またはオールインワン機器、
販売時点POS)機器、
金銭登録機
メディアプレーヤ
テレビ
メディアレコーダ
ディジタル・ビデオレコーダ(DVR)、
ディジタルカメラ
セルラハンドセット
コードレス電話機ハンドセット、および
電子ゲーム
のうち1若しくはそれ以上を有するEC。

0112

EC92)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
NANDフラッシュ技術記憶セル、および
NORフラッシュ技術記憶セル
のうち1若しくはそれ以上を有するEC。

0113

EC93)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
シングルレベルセル(SLC)フラッシュ技術記憶セル、および
マルチレベルセル(MLC)フラッシュ技術記憶セル
のうち1若しくはそれ以上を有するEC。

0114

EC94)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
多結晶シリコン技術ベース電荷蓄積セル、および
シリコン窒化膜技術ベースの電荷蓄積セル
のうち1若しくはそれ以上を有するEC。

0115

EC95)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
次元技術ベースのフラッシュメモリ技術、および
3次元技術ベースのフラッシュメモリ技術
のうち1若しくはそれ以上を有するEC。

0116

システム
ある実施形態では、SSDといった入出力装置がSSDコントローラを有する。SSDコントローラはホストインターフェースとSSDのNVMとの間のブリッジとして働き、SSDのホストインターフェースを介してコンピューティングホストから送られるホストプロトコルコマンドを実行する。コマンドの少なくとも一部は、SSDに、コンピューティングホストから送られたデータおよびコンピューティングホストに送られるデータについて、それぞれ、NVMの書き込みおよび読み出しを行うよう指図する。別の実施形態では、SSDコントローラは、マップを使用してホストプロトコルのLBAとNVM内の物理記憶アドレスとを変換することができるようになっている。別の実施形態では、マップの少なくとも一部分が、入出力装置の専用記憶(コンピューティングホストからは見えない)に使用される。例えば、コンピューティングホストからアクセスできないLBAの部分が、入出力装置によって、ログ、統計、または他の専用データへのアクセスを管理するのに使用される。

0117

ある実施形態では、NVM内の様々なサイズの量の圧縮データにアクセスすることにより、ある使用シナリオでは記憶効率が改善される。例えば、SSDコントローラは、コンピューティングホストから(例えばディスク書き込みコマンドに関連した)(圧縮されていない)データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コンピューティングホストからの(例えばディスク読み出しコマンドに関連した)後続の要求に応答して、SSDコントローラはフラッシュメモリから圧縮データを読み出し、圧縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮データは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。SSDコントローラは、一部は、含まれるマップ表を調べて(1つまたは複数の)ヘッダがフラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。SSDコントローラは、適切な(圧縮)データがフラッシュメモリのどこに記憶されているか確認するためにフラッシュメモリから得た(1つまたは複数の)ヘッダをパースする。SSDコントローラは、コンピューティングホストに提供すべき解凍データを生成するために、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する(uncompress)」(およびその変形)は、「伸張する(decompress)」(およびその変形)と同義である。

0118

様々な実施形態では、SSDコントローラは、コンピューティングホストとインターフェースするためのホストインターフェースと、フラッシュメモリといったNVMとインターフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解凍と共に、より低いレベルの冗長性および/または誤り訂正、より高いレベルの冗長性および/または誤り訂正、ならびに独立シリコン素子を用いた動的より高いレベルの冗長性モード管理を行う(かつ/または行うことの様々な態様を制御する)ための回路とを有する。

0119

様々な実施形態によれば、あるホストインターフェースは、USBインターフェース規格CFインターフェース規格、MMCインターフェース規格、eMMCインターフェース規格、サンダーボルトインターフェース規格、UFSインターフェース規格、SDインターフェース規格、メモリ・スティック・インターフェース規格、xDピクチャ・カード・インターフェース規格、IDEインターフェース規格、SATAインターフェース規格、SCSIインターフェース規格、SASインターフェース規格、およびPCIeインターフェース規格のうち1若しくはそれ以上と適合する。様々な実施形態によれば、コンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置(e−readerなど)、PDA、ナビゲーションンシステム、(ハンドヘルド型)GPS機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、POS機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、DVR、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうち全部または任意の部分である。ある実施形態では、インターフェースホスト(SAS/SATAブリッジなど)は、コンピューティングホストおよび/またはコンピューティングホストへのブリッジとして動作する。

0120

様々な実施形態では、SSDコントローラは、1若しくはそれ以上のプロセッサを有する。プロセッサは、SSDコントローラの動作を制御し、かつ/または行うためにファームウェアを実行する。SSDコントローラは、コマンドおよび/または状況ならびにデータを送り、受け取るためにコンピューティングホストと通信する。コンピューティングホストは、オペレーティングシステムドライバ、およびアプリケーションのうち1若しくはそれ以上を実行する。コンピューティングホストによるSSDコントローラとの通信は、任意選択で、かつ/または選択的に、ドライバおよび/またはアプリケーションによるものである。第1の例では、SSDコントローラへのすべての通信がドライバによるものであり、アプリケーションは、ドライバにより高いレベルのコマンドを提供し、ドライバがそれをSSDコントローラのための特定のコマンドに変換する。第2の例では、ドライバはバイパスモードを実施し、アプリケーションは、ドライバを介してSSDコントローラに特定のコマンドを送ることができるようになっている。第3の例では、PCIe SSDコントローラが1若しくはそれ以上の仮想機能(Virtual Functions:VFs)をサポートし、アプリケーションが、一度構成されると、ドライバをバイパスしてSSDコントローラを直接通信することを可能にする。

0121

様々な実施形態によれば、あるSSDは、HDD、CDドライブDVDドライブといった磁気的不揮発性記憶および/または光学的不揮発性記憶によって使用されるフォームファクタ電気的インターフェース、および/またはプロトコルと適合する。様々な実施形態では、SSDは、0以上のパリティ符号、0以上のRS符号、0以上のBCH符号、0以上のビタビ符号または他のトレリス符号、および0以上のLDPC符号の様々な組み合わせを使用する。

0122

図1Aに、1若しくはそれ以上の(任意選択で内部の)冗長アレイによる不揮発性メモリ(NVMs)のプログラム障害回復を提供するSSDコントローラを含むソリッドステートディスク(SSD)の実施形態の選択された詳細を示す。SSDコントローラは、例えばNVM素子(フラッシュメモリなど)によって実装される不揮発性記憶を管理するためのものである。SSDコントローラ100は、1若しくはそれ以上の外部インターフェース110を介してホスト(図示せず)に通信可能に結合されている。様々な実施形態によれば、外部インターフェース110は、SATAインターフェース、SASインターフェース、PCIeインターフェース、ファイバ・チャネル・インターフェース、イーサネット(登録商標)インターフェース(10ギガビットイーサネット(登録商標)など)、前述のインターフェースのいずれかの非標準バージョンカスタムインターフェース、または記憶装置および/若しくは通信装置および/若しくはコンピューティング機器相互接続するのに使用される任意の他の種類のインターフェースのうちの1若しくはそれ以上である。例えば、ある実施形態では、SSDコントローラ100は、SATAインターフェースおよびPCIeインターフェースを含む。

0123

SSDコントローラ100は、さらに、1若しくはそれ以上のデバイスインターフェース190を介して、フラッシュデバイス192の1若しくはそれ以上のインスタンスといった、1若しくはそれ以上の記憶デバイスを有するNVM199に通信可能に結合されている。様々な実施形態によれば、デバイスインターフェース190は、非同期インターフェース、同期インターフェース、シングルデータレート(SDR)インターフェース、ダブルデータレート(DDR)インターフェース、DRAM互換DDR若しくはDDR2同期インターフェース、ONFI2.2やONFI3.0互換インターフェースといったONFI互換インターフェース、トグルモード互換フラッシュインターフェース、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デバイスに接続するのに使用される任意の他の種類のインターフェースのうち1若しくはそれ以上である。

0124

フラッシュデバイス192の各々は、ある実施形態では、1若しくはそれ以上の個々のフラッシュダイ194を有する。フラッシュデバイス192のうち特定のフラッシュデバイスの種類に従って、特定のフラッシュデバイス192内の複数のフラッシュダイ194に、並列に、任意選択で、かつ/または選択的にアクセスすることができる。フラッシュデバイス192は、単に、SSDコントローラ100に通信可能に結合することが可能な記憶デバイスの一種を表しているにすぎない。様々な実施形態では、SLCNANDフラッシュメモリ、MLCNANDフラッシュメモリ、NORフラッシュメモリ、多結晶シリコン若しくはシリコン窒化膜技術ベースの電荷蓄積セルを使用したフラッシュメモリ、2次元若しくは3次元技術ベースのフラッシュメモリ、読み出し専用メモリスタティックランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強磁性メモリ、相変化メモリレーストラックメモリ、ReRAM、または任意の他の種類のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用することができる。

0125

様々な実施形態によれば、デバイスインターフェース190は、1つのバスにつきフラッシュデバイス192の1若しくはそれ以上のインスタンスを有する1若しくはそれ以上のバス;グループ内のバスにおおむね並列にアクセスさせる、1つのバスにつきフラッシュデバイス192の1若しくはそれ以上のインスタンスを有する1若しくはそれ以上のバスグループ;またはデバイスインターフェース190上へのフラッシュデバイス192の1若しくはそれ以上のインスタンスの任意の他の編成として編成される。

0126

引き続き図1Aにおいて、SSDコントローラ100は、ホストインターフェース111、データ処理121、バッファ131、マップ141、リサイクラ151、ECC161、デバイスインターフェース論理191、CPU171といった1若しくはそれ以上のモジュールを有する。図1Aに図示する具体的なモジュールおよび相互接続は、単に、一実施形態を表すにすぎず、これらのモジュールの一部または全部、および図示されていないさらに別のモジュールの多くの配置および相互接続が考えられる。第1の例として、ある実施形態では、デュアルポーティングを提供するための2つ以上のホストインターフェース111がある。第2の例として、ある実施形態では、データ処理121および/またはECC161がバッファ131と組み合わされている。第3の例として、ある実施形態では、ホストインターフェース111がバッファ131に直接結合されており、データ処理121が、バッファ131に記憶されたデータに任意選択で、かつ/または選択的に作用する。第4の例として、ある実施形態では、デバイスインターフェース論理191がバッファ131に直接結合されており、ECC161が、バッファ131に記憶されたデータに任意選択で、かつ/または選択的に作用する。

0127

ホストインターフェース111は、外部インターフェース110を介してコマンドおよび/またはデータを送受信し、ある実施形態では、タグ追跡113によって個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すべきアドレス(LBAなど)およびデータの量(LBA量、例えばセクタの数など)を指定する読み出しコマンドを有し、これに応答してSSDは、読み出し状況および/または読み出しデータを提供する。別の例として、コマンドは、書き込むべきアドレス(LBAなど)およびデータの量(LBA量、例えばセクタの数など)を指定する書き込みコマンドを有し、これに応答してSSDは、書き込み状況を提供し、かつ/または書き込みデータを要求し、任意選択でその後に書き込み状況を提供する。さらに別の例として、コマンドは、もはや割り振られる必要のなくなった1若しくはそれ以上のアドレス(1若しくはそれ以上のLBAなど)を指定する割り振り解除コマンド(trimコマンドなど)を有し、これに応答してSSDは、マップをしかるべく変更し、任意選択で割り振り解除状況を提供する。あるコンテキストでは、ATA互換TRIMコマンドが割り振り解除コマンドの例である。さらに別の例として、コマンドは、超コンデンサテスト・コマンドまたはデータハーデニング成功問い合わせを有し、これに応答してSSDは、適切な状況を提供する。ある実施形態では、ホストインターフェース111は、SATAプロトコルと適合し、NCQコマンドを使用して、最高32までの未処理のコマンドを有することができるようになっており、各コマンドは0から31までの数として表された一意のタグを有する。ある実施形態では、タグ追跡113は、外部インターフェース110を介して受け取ったコマンドのための外部タグを、SSDコントローラ100による処理の間にコマンドを追跡するのに使用される内部タグと関連付けることができるようになっている。

0128

様々な実施形態によれば、データ処理121は、任意選択で、かつ/または選択的に、バッファ131と外部インターフェース110との間で送られる一部または全部のデータを処理する、およびデータ処理121は、任意選択で、かつ/または選択的に、バッファ131に記憶されたデータを処理する、以下のうち1若しくはそれ以上が行われる。ある実施形態では、データ処理121は、1若しくはそれ以上のエンジン123を使用して、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および/または操作タスクのうち1若しくはそれ以上を行う。

0129

バッファ131は外部インターフェース110に/からデバイスインターフェース190から/に送られるデータを記憶する。ある実施形態では、バッファ131は加えて、SSDコントローラ100によってフラッシュデバイス192の1若しくはそれ以上のインスタンスを管理するのに使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施形態において、バッファ131は、データの一時記憶に使用されるメモリ137、(本明細書で別に記載する)NVM書き込み/プログラミングに関連した記憶に使用される割り当てられたバッファ138、バッファ131との間のデータの移動を制御するのに使用されるDMA133、より高いレベルの誤り訂正機能および/または冗長機能を提供するのに使用されるECC−X135、ならびに他のデータ移動機能および/または操作機能のうちの1若しくはそれ以上を有する。より高いレベルの冗長機能の一例はRAID様の機能(例えば、本明細書で別に記載するようなRASIE)であり、ディスクレベルではなく、フラッシュ・デバイス・レベル(フラッシュデバイス192のうちの複数のものなど)および/またはフラッシュ・ダイ・レベル(フラッシュダイ194など)の冗長性を有する。

0130

様々な実施形態によれば、以下のうち1若しくはそれ以上である。ECC161は、任意選択で、かつ/または選択的に、バッファ131とデバイスインターフェース190との間で送られる一部または全部のデータを処理する;およびECC161は、任意選択で、かつ/または選択的に、バッファ131に記憶されたデータを処理する。ある実施形態では、ECC161は、例えば1若しくはそれ以上のECC技法に従ったより低いレベルの誤り訂正および/または冗長性機能を提供するのに使用される。ある実施形態では、ECC161は、CRC符号ハミング符号、RS符号、BCH符号、LDPC符号、ビタビ符号、トレリス符号、硬判定符号軟判定符号、消去ベースの符号、任意の誤り検出および/または訂正符号、ならびに上記の任意の組み合わせのうち1若しくはそれ以上を実施する。ある実施形態では、ECC161は、1若しくはそれ以上の復号器LDPC復号器など)を有する。

0131

デバイスインターフェース論理191は、デバイスインターフェース190を介してフラッシュデバイス192のインスタンスを制御する。デバイスインターフェース論理191は、フラッシュデバイス192のプロトコルに従ってフラッシュデバイス192のインスタンスへ/からデータを送ることができるようになっている。デバイスインターフェース論理191は、デバイスインターフェース190を介したフラッシュデバイス192のインスタンスの制御を選択的に配列するスケジューリング193を有する。例えば、ある実施形態では、スケジューリング193は、フラッシュデバイス192のインスタンスへの操作を待ち行列に入れ、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスへの操作を、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスが利用可能になるに従って選択的に送ることができるようになっている。

0132

マップ141は、外部インターフェース110上で使用されるデータアドレス指定と、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、表143を使用して外部データアドレスからNVM199内の位置へマップする。例えば、ある実施形態では、マップ141は、外部インターフェース110上で使用されるLBAを、表143によって提供されるマッピングにより、1若しくはそれ以上のフラッシュダイ194を対象とするブロックおよび/またはページアドレスに変換する。ドライブ製造または割り振り解除以来一度も書き込まれていないLBAでは、マップは、LBAが読み出された場合に返すべきデフォルト値指し示す。例えば、割り振り解除コマンドを処理するときに、マップは、割り振り解除されたLBAに対応するエントリがデフォルト値のうち1つを指し示すように変更される。様々な実施形態では、様々なデフォルト値があり、各々が対応するポインタを有する。複数のデフォルト値は、ある(例えば第1の範囲内の)割り振り解除されたLBAを1つのデフォルト値として読み出し、ある(例えば第2の範囲内の)割り振り解除されたLBAを別のデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび/若しくはプリミティブ引数および/若しくはパラメータプログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。

0133

ある実施形態では、マップ141は、表143を使用して、外部インターフェース110上で使用されるアドレスと、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、かつ/またはルックアップする。様々な実施形態によれば、表143は、1レベルマップ、2レベルマップ、マルチレベルマップ、マップキャッシュ圧縮マップ、あるアドレス空間から別のアドレス空間への任意の種類のマッピング、および上記の任意の組み合わせのうち1若しくはそれ以上である。様々な実施形態によれば、表143は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、NVM(フラッシュメモリなど)、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および上記の任意の組み合わせのうち1若しくはそれ以上を有する。

0134

ある実施形態では、リサイクラ151は、不要部分の整理を行う。例えば、ある実施形態では、フラッシュデバイス192のインスタンスは、ブロックが書き換え可能になる前に消去されなければならないブロックを有する。リサイクラ151は、例えば、マップ141によって維持されるマップをスキャンすることによって、フラッシュデバイス192のインスタンスのどの部分が実際に使用されているか(例えば、割り振り解除されているのではなく割り振られていること)を決定し、フラッシュデバイス192のインスタンスの未使用の(例えば割り振り解除された)部分を、未使用の部分を消去することによって書き込みに利用できるようにすることができるようになっている。別の実施形態では、リサイクラ151は、フラッシュデバイス192のインスタンスのより大きい連続した部分を書き込みに利用できるようにするために、フラッシュデバイス192のインスタンス内に記憶されたデータを移動することができるようになっている。

0135

ある実施形態では、フラッシュデバイス192のインスタンスは、異なる種類および/または属性のデータを記憶するための1若しくはそれ以上のバンドを保持するように、選択的に、かつ/または動的に構成され、管理され、かつ/または使用される。バンドの数、配置、サイズ、および種類は、動的に変更可能である。例えば、コンピューティングホストからのデータはホットアクティブな)バンドに書き込まれ、リサイクラ151からのデータはコールド(あまりアクティブではない)バンドに書き込まれる。ある使用シナリオでは、コンピューティングホストが長い順次のストリームを書き込む場合には、ホットバンドのサイズが増大し、コンピューティングホストがランダムな書き込みを行い、またはわずかな書き込みしか行わない場合には、コールドバンドのサイズが増大する。

0136

CPU171は、SSDコントローラ100の様々な部分を制御する。CPU171は、CPUコア172を有する。CPUコア172は、様々な実施形態によれば、1若しくはそれ以上のシングルコアプロセッサまたはマルチコアプロセッサである。CPUコア172内の個々のプロセッサコアは、ある実施形態では、マルチスレッド化されている。CPUコア172は、命令および/またはデータのキャッシュおよび/またはメモリを有する。例えば、命令メモリは、CPUコア172が、SSDコントローラ100を制御するためのプログラム(ファームウェアとも呼ばれるソフトウェアなど)を実行することを可能にする命令を有する。ある実施形態では、CPUコア172によって実行されるファームウェアの一部または全部が、(例えば、図1BのNVM199のファームウェア106として図示されている)フラッシュデバイス192のインスタンス上に記憶される。

0137

様々な実施形態では、CPU171は、外部インターフェース110を介して受け取られるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理173、バッファ131の割り振りおよび使用を制御するバッファ管理175、マップ141を制御する変換管理177、データアドレス指定の整合性を制御し、例えば、外部データアクセス再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理179、デバイスインターフェース論理191を制御するデバイス管理181、識別情報の変更および通信を制御する識別情報管理182、ならびに、任意選択で、他の管理部をさらに有する。CPU171によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、ソフトウェア(CPUコア172上や、外部インターフェース110を介して接続されたホスト上で実行されるファームウェアなど)、またはそれらの任意の実施形態によって制御され、かつ/または管理され、あるいは、そのどれも、制御も管理もされないものである。

0138

ある実施形態では、CPU171は、性能統計の収集および/または報告、SMARTの実施、電源逐次開閉機構の制御、電力消費の制御および/または調整、電源障害への応答、クロック速度の制御および/またはモニタリングおよび/または調整、ならびに他の管理タスクのうち1若しくはそれ以上といった、他の管理タスクを行うことができるようになっている。

0139

様々な実施形態は、SSDコントローラ100と同様の、例えば、ホストインターフェース111および/または外部インターフェース110の適応による、様々なコンピューティングホストを用いた動作と適合するコンピューティングホスト・フラッシュ・メモリ・コントローラを有する。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置(e−readerなど)、PDA、ナビゲーションンシステム、(ハンドヘルド型)GPS機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、POS機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、DVR、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうち1つまたはそれらの任意の組み合わせを有する。

0140

様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部または任意の部分が、単一のIC、マルチダイICの単一のダイ、マルチダイICの複数のダイ、または複数のIC上で実施される。例えば、バッファ131は、SSDコントローラ100の他の要素と同じダイ上に実施される。別の例では、バッファ131は、SSDコントローラ100の他の要素と異なるダイ上に実施される。

0141

図1Bに、図1AのSSDの1若しくはそれ以上のインスタンスを有するシステムの様々な実施形態の選択された詳細を図示する。SSD101は、デバイスインターフェース190を介してNVM199に結合されたSSDコントローラ100を有する。図には、様々な種別の実施形態、すなわち、ホストに直接結合された単一のSSD、各々がそれぞれの外部インターフェースを介してホストに直接それぞれ結合されている複数のSSD、および様々な相互接続要素を介してホストに間接的に結合された1若しくはそれ以上のSSDが示されている。

0142

ホストに直接結合された単一のSSDの例示的実施形態としては、SSD101の1つのインスタンスが、外部インターフェース110を介してホスト102に直接結合される(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、またはパススルーされる)。各々がそれぞれの外部インターフェースを介してホストに直接結合されている複数のSSDの例示的実施形態としては、SSD101の複数のインスタンスの各々が、外部インターフェース110のそれぞれのインスタンスを介してホスト102に直接それぞれ結合される(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、またはパススルーされる)。様々な相互接続要素を介してホストに間接的に結合された1若しくはそれ以上のSSDの例示的実施形態としては、SSD101の1若しくはそれ以上のインスタンスの各々が、ホスト102に間接的にそれぞれ結合される。各間接結合は、スイッチ/ファブリック/中間コントローラ103に結合された外部インターフェース110のそれぞれのインスタンス、およびホスト102に結合する中間インターフェース104を介したものである。

0143

スイッチ/ファブリック/中間コントローラ103を有する実施形態の一部は、メモリインターフェース180を介して結合された、SSDによってアクセス可能カードメモリ112Cも有する。様々な実施形態では、SSD、スイッチ/ファブリック/中間コントローラ、および/またはカードメモリのうち1若しくはそれ以上が、物理的に識別可能なモジュール、カード、または差し込み可能な要素(入出力カード116など)上に含まれる。ある実施形態では、SSD101(またはその変形)は、ホスト102として動作するイニシエータ開始プログラム)に結合されたSASドライブまたはSATAドライブに対応する。

0144

ホスト102は、OS105、ドライバ107、アプリケーション109、マルチデバイス管理ソフトウェア114の様々な組み合わせといった、ホストソフトウェア115の様々な要素を実行することができるようになっている。点線矢印107Dは、ホストソフトウェア←→入出力装置通信、例えば、SSD101のインスタンスのうち1若しくはそれ以上から/へ、ドライバ107を介したOS105、ドライバ107、および、ドライバ107を介して、またはVFとして直接アプリケーション109のうち任意の1若しくはそれ以上へ/から送られ/受け取られるデータを表す。

0145

OS105は、SSDとインターフェースするための(概念的にはドライバ107によって図示されている)ドライバを有し、かつ/またはそのようなドライバを用いて動作することができるようになっている。Windows(登録商標)の様々なバージョン(95、98、ME、NT、XP、2000、サーバ、Vista、および7など)、Linux(登録商標)の様々なバージョン(Red Hat、Debian、およびUbuntuなど)、ならびにMacOSの様々なバージョン(8、9およびXなど)がOS105の例である。様々な実施形態では、ドライバは、SATA、AHCI、NVM Expressといった標準のインターフェースおよび/またはプロトコルを用いて動作する標準のドライバおよび/または汎用のドライバ(「シュリンクラップされた(市販の)」または「プリインストールされた」ともいう)であり、あるいは、任意選択で、SSD101に特有のコマンドの使用を可能にするようにカスタマイズされており、かつ/またはベンダ特有のものである。あるドライブおよび/またはドライバは、アプリケーションレベルのプログラム、例えば最適化NANDアクセス(Optimized NAND Access)(ONAともいう)または直接NANDアクセス(Direct NAND Access)(DNAともいう)の各技法によるアプリケーション109などが、コマンドをSSD101に直接伝えることを可能にするパススルーモードを有し、カスタマイズされたアプリケーションが、汎用ドライバとでさえもSSD101に特有のコマンドを使用することを可能にする。ONAの技法は、非標準変更子(hints)の使用、ベンダ特有のコマンドの使用、非標準の統計の通信、例えば圧縮可能性に従った実際のNVMの使用、および他の技法のうち1若しくはそれ以上を有する。DNAの技法は、NVMへのマップされていない読み出し、書き込み、および/または消去アクセスを提供する非標準のコマンドまたはベンダ特有の(コマンド)の使用、例えば、入出力装置が通常は行うはずのデータの書式設定をバイパスすることによる、NVMへのより直接的なアクセスを提供する非標準の、またはベンダ特有のコマンドの使用、および他の技法のうち1若しくはそれ以上を有する。ドライバの例は、ONAまたはDNAサポートなしのドライバ、ONA使用可能ドライバ、DNA使用可能ドライバ、ONA/DNA使用可能ドライバである。ドライバの別の例は、ベンダ提供ドライバ、ベンダ開発ドライバ、および/またはベンダ拡張ドライバ、ならびにクライアント提供ドライバ、クライアント開発ドライバ、および/またはクライアント拡張ドライバである。

0146

アプリケーションレベルのプログラムの例は、ONAまたはDNAサポートなしのアプリケーション、ONA使用可能アプリケーション、DNA使用可能アプリケーション、およびONA/DNA使用可能アプリケーションである。点線矢印109Dは、アプリケーション←→入出力装置通信(ドライバによるバイパスや、アプリケーションのためのVFによるバイパスなど)、例えば、OSを仲介として使用するアプリケーションなしでSSDと通信するONA使用可能アプリケーションおよびONA使用可能ドライバなどを表す。点線矢印109Vは、アプリケーション←→入出力装置通信(アプリケーションのためのVFによるバイパスなど)、例えば、OSまたはドライバを仲介として使用するアプリケーションなしでSSDと通信するDNA使用可能アプリケーションおよびDNA使用可能ドライバなどを表す。

0147

NVM199の1若しくはそれ以上の部分が、ある実施形態では、ファームウェア記憶、例えばファームウェア106に使用される。ファームウェア記憶は、1若しくはそれ以上のファームウェアイメージ(またはその部分)を有する。ファームウェアイメージは、例えばSSDコントローラ100のCPUコア172によって実行される、例えばファームウェアの1若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例では、例えばファームウェア実行時にCPUコアによって参照される、定数パラメータ値、NVMデバイス情報の1若しくはそれ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージおよび0以上の(ファームウェア更新に対して)前のファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、汎用動作モード、標準動作モード、ONA動作モード、および/またはDNA動作モードを提供する。ある実施形態では、ファームウェア動作モードのうち1若しくはそれ以上が、ドライバによって任意選択で伝えられ、かつ/または提供される、鍵または様々なソフトウェア技法によって使用可能とされる(例えば、1若しくはそれ以上のAPIが「ロック解除」される)。

0148

スイッチ/ファブリック/中間コントローラを欠くある実施形態では、SSDは、外部インターフェース110を介して直接ホストに結合される。様々な実施形態では、SSDコントローラ100は、RAIDコントローラといった他のコントローラの1若しくはそれ以上の中間レベルを介してホストに結合される。ある実施形態では、SSD101(またはその変形)は、SASドライブまたはSATAドライブに対応し、スイッチ/ファブリック/中間コントローラ103は、イニシエータにさらに結合されたエキスパンダに対応し、あるいは、スイッチ/ファブリック/中間コントローラ103は、エキスパンダを介してイニシエータに間接的に結合されたブリッジに対応する。ある実施形態では、スイッチ/ファブリック/中間コントローラ103は、1若しくはそれ以上のPCIeスイッチおよび/またはファブリックを有する。

0149

様々な実施形態、例えば、コンピューティングホストとしてのホスト102(コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、および/またはネットブックコンピュータなど)を有する実施形態のあるものでは、コンピューティングホストは、任意選択で、1若しくはそれ以上のローカルサーバおよび/またはリモートサーバ(例えば、任意選択のサーバ118)と(例えば、任意選択の入出力装置/リソースおよび記憶装置/リソース117および任意選択のLAN/WAN119を介して)通信することができるようになっている。通信は、例えば、SSD101要素のうち任意の1若しくはそれ以上のローカルおよび/またはリモートのアクセス、管理、および/または使用を可能にする。ある実施形態では、通信は、全部または一部がイーサネット(登録商標)(Ethernet(登録商標))によるものである。ある実施形態では、通信は、全部または一部がファイバチャネルによるものである。LAN/WAN119は、様々な実施形態では、1若しくはそれ以上のローカル・エリア・ネットワークおよび/または広域ネットワーク、例えば、サーバファーム内のネットワーク、サーバファームを結合するネットワーク、メトロエリアネットワーク、およびインターネットのうち任意の1若しくはそれ以上を表す。

0150

様々な実施形態では、1若しくはそれ以上のNVMと組み合わされたSSDコントローラおよび/またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、USB記憶コンポーネント、CF記憶コンポーネント、MMC記憶コンポーネント、eMMC記憶コンポーネント、サンダーボルト記憶コンポーネント、UFS記憶コンポーネント、SD記憶コンポーネント、メモリスティック記憶コンポーネント、xDピクチャカード記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。

0151

様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、コントローラが結合されるべきホスト(図1Bのホスト102など)において実施される。様々な実施形態では、SSDコントローラ(若しくはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、ハードウェア(論理回路など)、ソフトウェアおよび/若しくはファームウェア(ドライバソフトウェアおよび/若しくはSSD制御ファームウェアなど)、またはそれらの任意の組み合わせによって実施される。例えば、(例えば図1AのECC161および/またはECC−X135と同様の)ECC部の、またはECC部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はSSDコントローラ内のファームウェアとハードウェアとの組み合わせによって実施される。別の例として、(例えば図1Aのリサイクラ151と同様の)リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアによって実施される。

0152

マッピング操作
図2に、LBAのLPN部分のマッピングの実施形態の選択された詳細を図示する。ある実施形態では、読み出し単位は、NVMのページの部分といった、独立に読み出すことのできるNVMの最も細かい粒度である。別の実施形態では、読み出し単位は、検査ビットによって保護されるすべてのデータに(低レベル)誤り訂正符号の検査ビット(冗長性ともいう)を加えたものに対応する。例えば、図1AのECC161は、検査ビットによる、例えばLDPC符号による誤り訂正を実施し、読み出し単位は、LDPC符号化ビットによって保護されるデータビットにLDPC符号を加えたものを実施する符号化ビットに対応する。

0153

ある実施形態では、マップ141は、LBA211のLPN213部分を、例えば(図1Aに図示される)表143によって、LPNのためのマップ情報221にマップする。LPNのためのマップ情報(例えばLPNのためのマップ情報221)をマップエントリともいう。マップ141は、LPNを対応するマップエントリと関連付けるといわれる。様々な実施形態では、マッピングは、1若しくはそれ以上の連想ルックアップ、1若しくはそれ以上の非連想ルックアップ、および/または1若しくはそれ以上の他の技法によるものである。

0154

ある実施形態では、SSDコントローラ100は、潜在的に、かつ/またはアクティブに使用されているLPNごとに1つのマップエントリを維持する。

0155

ある実施形態では、LPNのためのマップ情報221は、それぞれの読み出し単位アドレス223および読み出し単位での長さ225を有する。ある実施形態では、長さおよび/または範囲は、例えば、読み出し単位での長さ225の全部またはいずれかの部分において、例えば、長さを範囲からのオフセットとして記憶することによって、符号化して記憶される。別の実施形態では、第1のLPNは第1のマップエントリと関連付けられており、(第1のLPNと異なるが、第1のLPNによって参照される論理ページと同サイズの論理ページを参照する)第2のLPNは第2のマップエントリと関連付けられており、第1のマップエントリのそれぞれの読み出し単位での長さは、第2のマップエントリのそれぞれの読み出し単位での長さと異なる。

0156

様々な実施形態では、同じ時点において、第1のLPNは第1のマップエントリと関連付けられており、(第1のLPNと異なる)第2のLPNは第2のマップエントリと関連付けられており、第1のマップエントリのそれぞれの読み出し単位アドレスは、第2のマップエントリのそれぞれの読み出し単位アドレスと同じである。別の実施形態では、第1のLPNと関連付けられたデータおよび第2のLPNと関連付けられたデータは、どちらも、NVM199内の同じデバイスの同じ物理ページに記憶されている。

0157

様々な実施形態によれば、読み出し単位アドレス223は、NVM内の開始アドレス、NVM内の終了アドレス、上記のいずれかのオフセット、およびLPN213と関連付けられたNVMの部分を特定するための任意の他の技法のうち1若しくはそれ以上と関連付けられている。

0158

図3に、読み出し単位の量で測った長さを総体として有する、様々な読み出し単位として編成された読み出しデータを生成するための、読み出し単位アドレスのところのNVMへのアクセスの実施形態の選択された詳細を図示する。様々な実施形態によれば、最初の読み出し単位313は、NVMのアドレス空間における最低のアドレスを有する読み出しデータ311内の読み出し単位のうち1つ、読み出し単位のうち固定された1つ、読み出し単位のうち任意の1つ、読み出し単位のうち可変の1つ、および任意の他の技法によって選択される読み出し単位のうち1つのうち1若しくはそれ以上である。様々な実施形態では、SSDコントローラ100は、NVM199にアクセスし、読み出し単位での長さ225によって指定される数以下の数の読み出し単位を読み出すことによって読み出しデータ311を生成することができるようになっている。

0159

図4Aに、(図3の読み出し単位313や読み出し単位315といった)読み出し単位の実施形態の選択された詳細を読み出し単位401Aとして図示する。様々な実施形態および/または使用シナリオにおいて、ヘッダ1 411AからヘッダN 419Aは連続しており、ヘッダの各々によって(例えばそれぞれのオフセットにより)特定されるそれぞれのデータ領域は、ヘッダの最後のものに後に続いて連続している。各データ領域は総体としてデータバイト421Aを形成している。各データ領域は、各ヘッダが記憶される位置順と一致した位置順で記憶される。例えば、読み出し単位の先頭のところの第1のヘッダを考えると、第2のヘッダおよび第3のヘッダは、第1のヘッダのすぐ後に続く。(第1のヘッダ内の第1のオフセットによって特定される)第1のデータ領域は第3のヘッダのすぐ後に続く。(第2のヘッダ内の第2のオフセットによって特定される)第2のデータ領域は第1のデータ領域のすぐ後に続く。同様に、(第3のヘッダ内によって特定される)第3データ領域も第2のデータ領域のすぐ後に続く。

0160

図4Bに、(図3の読み出し単位313や読み出し単位315といった)読み出し単位の別の実施形態の選択された詳細を読み出し単位401Bとして図示する。様々な実施形態および/または使用シナリオにおいて、ヘッダマーカ(HM)410Bは、後に続く連続したヘッダ(ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)の数を指示する任意選択の最初のフィールド(例えば1バイトのフィールド)である。データ領域(データバイト421B、データバイト422B...データバイト429B)は、それぞれ、ヘッダ(ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)によって特定され、ヘッダが記憶される位置順とは逆の位置順で記憶される。ヘッダは読み出し単位の先頭から開始し、対応するデータ領域は読み出し単位の末尾から開始する。ある実施形態では、データ領域内のデータバイト(例えば、データバイト421B、データバイト422B...データバイト429B)は、前方順(位置順と一致するバイト順)に配置され、別の実施形態では、データバイトは、逆順(位置順に対して反転されたバイト順)に配置される。ある実施形態では、ヘッダマーカが、(例えば図4Aに示すように)ヘッダおよびデータバイトが同じ位置順で記憶されている読み出し単位で使用される。

0161

ある実施形態では、任意選択のパディングバイト431A(または431B)は、特定のLPNと関連付けられたデータの粒度に従ったものである。例えば、ある実施形態では、データバイト421A(またはデータバイト421B、データバイト422B...データバイト429Bの総体)が、ヘッダ1 411AからヘッダN 419Aまで(またはヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)の最後のヘッダを除くすべてのヘッダと関連付けられたデータを記憶した後で、決まった量、例えば8バイトより少ない残りのスペースを有する場合には、最後のヘッダと関連付けられたLPNのデータは後続の読み出し単位において開始する。別の実施形態では、最後のヘッダ内の特定のオフセット値(例えばすべて1)が、最後のヘッダと関連付けられたLPNのデータが後続の読み出し単位において開始することを指示する。

0162

図5に、いくつかのフィールドを有するヘッダ(例えば、図4Aのヘッダ1 411AからヘッダN 419Aまでや、図4Bのヘッダ1 411Bからヘッダ 419Bまでのいずれか)の実施形態の選択された詳細を図示する。ある実施形態では、ヘッダは固定長である(例えば、各ヘッダは同じバイト数の長さである)。ヘッダ501は、種類511、最終標識513、フラグ515、LPN517、長さ519、およびオフセット521の各フィールドを有する。種類フィールドは、データバイトのカテゴリを特定する。例えば、種類フィールドは、データバイトのカテゴリが、ホストデータ論理ページデータなど)またはシステムデータ(マップ情報やチェックポイント情報など)の1つであることを指示する。最終フィールドは、ヘッダがデータバイトの前の最終ヘッダであることを指示する。ヘッダマーカを用いるある実施形態では、最終フィールドは任意選択で割愛される。LPNフィールドは、ヘッダが関連付けられているLPNである。LPNフィールドは、特定のLPNと関連付けられたヘッダのうち特定のヘッダを、例えば、特定のLPNと一致するLPNフィールドを有するヘッダを求めてヘッダをサーチすることによって決定するためのヘッダのパーシングを可能にする。長さフィールドは、データバイトのバイト単位の長さ(例えば、ヘッダ501と関連付けられたデータバイト421Aに何バイトのデータがあるか)である。ある実施形態では、オフセットフィールド内のオフセットは、特定の粒度(8バイトの粒度など)に従って丸められる。

0163

様々な実施形態では、特定のLPNと関連付けられた一部または全部の情報が、特定のLPNと関連付けられたマップエントリ、特定のLPNと関連付けられたヘッダ、またはその両方に記憶される。例えば、ある実施形態では、長さ519の一部または全部が、ヘッダではなくマップエントリに記憶される。

0164

図6に、論理スライスおよび/またはセクションとして管理される複数のNVMデバイス(1若しくはそれ以上のフラッシュダイおよび/またはフラッシュチップなど)のブロック、ページ、および読み出し単位の実施形態の選択された詳細を示す。管理機能は、読み出し機能、再利用機能消去機能、プログラミング/書き込み機能、および他の管理機能のうちの任意の1若しくはそれ以上を含む。論理スライスおよび/またはセクションはR−ブロックと呼ばれることもある。図には、66個のフラッシュダイを有する実施形態が示されている。フラッシュダイのうちの3つは明示的に図示されており(フラッシュダイ610.65、610.1、および610.0)、フラッシュダイのうちの63個は暗黙的に図示されている(610.64...610.2)。

0165

フラッシュダイの各々(フラッシュダイ610.65...610.1、および610.0のうちの任意の1つなど)は、ブロック(フラッシュダイ610.65のブロック610.65BB...610.65B1、および610.65B0;フラッシュダイ610.0のブロック610.0BB...610.0B1、および610.0B0;以下同様など)として編成された記憶を提供する。各ブロックはさらに、ページ(ブロック610.65B0のページ610.65PP...610.65P1、および610.65P0;ブロック610.0B0のページ610.0PP...610.0P1、および610.0P0;以下同様など)を含む。各ページはさらに、読み出し単位(ページ610.65P0の読み出し単位610.65RR...610.65R1、610.65R0;ページ610.0P0読み出し単位610.0RR...610.0R1、610.0R0;以下同様など)を含む。

0166

ある実施形態では、各フラッシュダイは整数個のブロック(N個のブロックなど)を含み、1ブロックは消去の最小量である。ある実施形態では、各ブロックは整数個のページを含み、1ページは書き込みの最小量である。様々な実施形態によれば、以下のうちの1若しくはそれ以上が該当する:読み出し単位は読み出しおよび誤り訂正の最小量である;各ページは整数個の読み出し単位を含む;関連付けられた2若しくはそれ以上のページのグループは整数個の読み出し単位を含む;ならびに読み出し単位は、任意選択で、かつ/または選択的にページ境界にまたがる。

0167

様々な実施形態において、様々なNVM管理機能(読み出し、再利用、消去、および/またはプログラミング/書き込みなど)はR−ブロック単位で行われる。R−ブロックは、フラッシュメモリなどの様々なダイ(例えば、すべてのダイ、全部若しくは一部に障害のあるダイを除くすべてのダイ、および/またはダイのうちの1若しくはそれ以上の選択サブセットなど)にまたがる論理スライスまたはセクションとして例示される。例えば、R個のフラッシュダイを有し、各フラッシュダイがN個のブロックを有するフラッシュメモリにおいて、各R−ブロックは、合計でN個のR−ブロックについて、フラッシュダイの各々からの第iのブロックを合わせたものである。引き続きこの例で、R個のフラッシュダイのうちの1つに障害が発生した場合には、各R−ブロックは、合計でN個のR−ブロックについて、障害のあるフラッシュダイを除いたフラッシュダイの各々からの第iのブロックであり、各R−ブロックは障害前より1つ少ないブロックを有する。別の例では、R個のフラッシュダイを有し、各フラッシュダイがN個のブロックを有するフラッシュメモリにおいて、各R−ブロックは、合計でN/2個のR−ブロックについて、フラッシュダイの各々からの第iおよび第(i+1)のブロックである。さらに別の例では、複数のデュアルプレーンデバイスを有するフラッシュメモリにおいて、各R−ブロックは、デュアルプレーンデバイスの各々からの第iの偶数ブロックおよび第iの奇数ブロックである。さらに別の例では、複数のマルチプレーンデバイスを有するフラッシュメモリにおいて、各R−ブロックは、マルチプレーンデバイスによって提供される(例えばプログラミング時の)並列性最大化するように選択されたブロックを含む。前述のデュアルプレーンデバイスにおけるR−ブロックの例では、デュアルプレーンデバイスはマルチプレーンデバイスの例であり、デュアルプレーンデバイスの各々からの第iの偶数ブロックおよび第iの奇数ブロックであるR−ブロックは、並列性を最大化するように選択されたブロックを含むR−ブロックの例であることに留意されたい。最後の例としては、R個のフラッシュダイを有するフラッシュメモリにおいて、R−ブロックは、R個のフラッシュダイの各々からのブロックi1、ブロックi2、...、ブロックikといった、k個の非隣接ブロックである。

0168

R−ブロック形成の一部としてブロックが対または他の関連付けられたグループとして処理される様々な実施形態において、ブロックの関連付けられたグループの各ブロックからのそれぞれのページは、より大きいマルチブロックページを形成する、少なくとも書き込みのための単位としても扱われる。例えば、前述のデュアルプレーンの例を続けると、偶数ブロックのうちの特定の1つの第1ページおよび奇数ブロックの関連付けられた1つの第1ページは、書き込みの単位として扱われ、任意選択で、かつ/または選択的に、読み出しの単位としても扱われる。同様に、特定の偶数ブロックの第2ページおよび関連付けられた奇数ブロックの第2ページも単位として扱われる。様々な実施形態によれば、本明細書で使用するNVMのページは、NVMの単一のページ、NVMのマルチブロックページ、任意選択で、かつ/または選択的に読み出しのための1若しくはそれ以上の個別ページとして扱われる書き込みのためのNVMのマルチブロックページ、およびNVMのページの任意の他のグループ化または関連付けのうちの1若しくはそれ以上を指す。

0169

図には、複数の例示的R−ブロックが示されており、そのうちの3つ(660.0、660.1、および660.R)が明示されている。各例示的R−ブロックは、フラッシュダイの各々からの第iのブロックを合わせたものである。例えば、R−ブロック660.0は、フラッシュダイ610.65からのブロック610.65B0、フラッシュダイ610.64からのブロック0(明示的に図示されていない)、以下同様にフラッシュダイ610.1のブロック610.1B0、およびラッシュダイ610.0のブロック610.0B0までである。1フラッシュダイ当たりN個のブロックがあるため、合計でN個のR−ブロック(R−ブロック660.R...R−ブロック660.1、およびR−ブロック660.0)がある。

0170

R−ブロックの別の例が、フラッシュダイの各々からの第iのブロックおよび第(i+1)のブロックを合わせたものである(例えば、フラッシュダイ610.65からのブロック610.65B0および610.65B1、フラッシュダイ610.64からのブロック0および1(明示的に図示されていない)、以下同様にフラッシュダイ610.1からのブロック610.1B0および610.1B1、ならびにフラッシュダイ610.0からのブロック610.0B0および610.0B1まで)。よって、各フラッシュダイにN個のブロックがある場合には、N/2個のR−ブロックがある。R−ブロックのさらに別の例は、複数のデュアルプレーンデバイスの各々からの第iの偶数ブロックおよび第iの奇数ブロックである。R−ブロックとしての管理のためのフラッシュ・ダイ・ブロックの他の構成も企図されており、これは、たとえいくつかのブロックが動作不能であってもR−ブロックが各ダイからの1ブロックを有するようにするための仮想ブロックアドレス物理ブロックアドレスとの間のマッピングを含む。様々な実施形態において、各フラッシュダイ内のN個のブロックのうちのあるものは、仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングが、R−ブロック内のブロックのうちの欠陥のあるブロックを置き換えるための予備の(通常は使用されない)ブロックを有するように予備として使用される。

0171

様々な実施形態において、フラッシュダイ内の情報の読み出しおよび/または書き込みは、「読み出し単位優先」順や「ページ優先」順といった順序に従って行われる。図に示す読み出し単位についての読み出し単位優先順の一例は、読み出し単位610.0R0から開始し、その後に、610.1R0...610.65R0、610.0R1、610.1R1...610.65R1が続き、以下同様に続いて610.65RRで終了する。図に示す読み出し単位についてのページ優先順の一例は、読み出し単位610.0R0から開始し、その後に、610.0R1...610.0RR、610.1R0、610.1R1...610.1RR...610.65R0、610.65R1が続き、以下同様に続いて610.65RRで終了する。

0172

様々な実施形態において、R−ブロック内のデータの書き込みおよび/またはストライピングの順序は(例えば最低から最高への)ページ優先で、すべてのデバイスに及び(例えば、ストライピング方向600で概念的に示唆するように、最低番号のデバイスから最高番号のデバイスへ)、次いで、次に高いページへ進み(すべてのデバイスに及び)、以下同様に、R−ブロックの最後のページまで続く。具体的には、R−ブロック660.0に関して、順序の一例は、ページ610.0P0(フラッシュダイ610.0の第1ブロック内の第1ページ)から開始し、その後に、ページ610.1P0(フラッシュダイ610.1の第1ブロック内の第1ページ)が続き、以下同様に、ページ610.65P0(フラッシュダイ610.65の第1ブロック、およびR−ブロック660.0の最後のブロック内の第1ページ)まで続く。この順序の例は続いてページ610.0P1(フラッシュダイ610.0の第1ブロック内の第2ページ)に進み、その後に、ページ610.1P1(フラッシュダイ610.1の第1ブロック内の第2ページ)が続き、以下同様に、ページ610.65P1(フラッシュダイ610.65の第1ブロック内の第2ページ)まで続く。例は同一の順で続く。この順序の例は、ページ610.0PP(フラッシュダイ610.0の第1ブロック内の最後のページ)に進み、その後に、ページ610.1PP(フラッシュダイ610.1の第1ブロック内の最後のページ)が続き、以下同様に、ページ610.65PP(フラッシュダイ610.65の第1ブロック内の最後のページ、およびR−ブロック660.0の最後のブロック内の最後のページ)で終了して完了する。

0173

様々な実施形態において、フラッシュダイ610.65...610.1、および610.0は、図1Aの1若しくはそれ以上の個別フラッシュダイ194のそれぞれのものに対応する。ある実施形態では、フラッシュダイ610.65...610.1、および610.0は、NVM199の全部ではない部分である。例えば、様々な実施形態において、データはフラッシュダイの複数のグループにまたがって独立にストライピングされ、フラッシュダイのグループの各々は独立にアクセスされうる。

0174

より高いレベルの冗長技術
図7に、より高いレベルの冗長技術の様々な実施形態の選択された詳細を示す。(1若しくはそれ以上の)フラッシュデバイス720は、64個のフラッシュダイ(図6に明示的、暗黙的に示すフラッシュダイ610.63、610.62、610.61...610.0)を含み、(1若しくはそれ以上の)インターフェースチャネル730を介して通信する。(1若しくはそれ以上の)余分のフラッシュダイ740は、最大2個までのフラッシュダイ(図6に明示的、暗黙的に示すフラッシュダイ610.65および610.64)を含み、(1若しくはそれ以上の)余分のインターフェースチャネル750を介して通信する。フラッシュダイは、SSD内のNVMといった記憶サブシステムにおいて、より高いレベルの冗長情報およびデータ記憶(例えばユーザデータおよび/またはユーザ空き領域)のための記憶を提供する。(冗長情報およびデータ記憶のコンテキストにおける「ユーザデータ」の例には、オペレーティング・システム・データ、アプリケーションデータ、SSD管理データなどといった、後で取り出すためにフラッシュメモリ上に記憶された冗長情報以外のすべてのデータが含まれる。)より高いレベルの冗長性は、例えば、読み出し動作のための(例えばより低いレベルのECC機能による)誤り訂正データを提供することができない障害や、書き込み動作を適正に完了することができない障害といった、1若しくはそれ以上のフラッシュダイの1若しくはそれ以上の部分の間欠的な、または永続的な障害からの回復を可能にする。

0175

例えば、各フラッシュダイ(あるいは、各ブロックまたは各ブロック内の各ページ)は、シリコン独立素子の冗長アレイ(Redundant Array of Silicon Independent Elements:RASIE)のコンテキストで操作される。(例えば、特定のダイのブロックの一部分のECC訂正不能読み出し誤りなどが原因で)特定のフラッシュダイにおいて障害が検出される場合には、これに応答して、そのフラッシュダイの他の部分に記憶された冗長情報を使用して、その特定のダイによって提供されるはずであった情報が突き止められる。ある実施形態および/または使用シナリオでは、(単一動作の間の)1つのフラッシュダイ内の1つの障害からの回復を可能にするのに十分な冗長情報が記憶される。単一の障害からの回復を可能にするモードでの動作は、ある実施形態では、より高いレベルの冗長情報のために1つのフラッシュダイと等価の領域を割り振り、管理することを含み、これを「RASIE−1」と呼ぶ。2つの障害からの回復を可能にするモードでの動作は、ある実施形態では、より高いレベルの冗長情報のために2つのフラッシュダイと等価の領域を割り振り、管理することを含み、これを「RASIE−2」と呼ぶ。3つの障害からの回復を可能にするモードでの動作は、ある実施形態では、より高いレベルの冗長情報のために3つのフラッシュダイと等価の領域を割り振り、管理することを含み、これを「RASIE−3」と呼ぶ。RASIE−1、RASIE−2、RASIE−3といったRASIEモードはRASIEモードのそれぞれの例であり、1若しくはそれ以上のフラッシュダイの整数倍(例えば、それぞれ、1個、2個、および3個の完全なフラッシュダイ)と等しい記憶容量がより高いレベルの冗長情報専用に使用される。

0176

ある実施形態および/または使用シナリオでは、ダイレベルの障害の管理が目的であり、ダイ間での情報の拡散が行われる。例えば、より高いレベルの冗長情報は、もっぱらより高いレベルの冗長情報に明確に割り振られた1若しくはそれ以上のダイに記憶される。ある実施形態および/または使用シナリオでは、ブロックレベルの障害の管理が目的であり、ダイ内のブロック間での情報の拡散が行われる。例えば、より高いレベルの冗長情報は、より高いレベルの冗長情報に割り振られた1若しくはそれ以上のブロックに記憶され、割り振りは、各ブロックがどの特定のダイの一部であったかを問わずに行われる。ある実施形態および/または使用シナリオでは、特定のエンティティレベルの障害の管理は、N個以下の要素(例えば、RASIE−1では1個、RASIE−2では2個など)が特定のエンティティのうちの任意の1つに含まれるように情報を拡散することを含む。エンティティの例には、(パッケージ化)デバイス、ダイ、R−ブロック、ブロック、(本明細書で別に記載する)R−ページ、ページ、ワードラインと関連付けられたセル、およびこれらの1若しくはそれ以上の複数が含まれる。

0177

より高いレベルの冗長情報が計算され、フラッシュダイに書き込まれた(ユーザ)データに従って書き込まれることにより、故障が検知された時に情報を提供するために利用可能となる。様々な実施形態において、より高いレベルの冗長情報は、より高いレベルの冗長情報が関連付けられる(ユーザ)データを書き込む前、書き込んだ後、又は書き込むことに関して特定の時間順序なく、フラッシュダイに書き込まれる。

0178

図は以下の表に要約されるようなRAISE動作モードの様々な実施形態を図示する。

0179

0180

さらに詳細には、RASIE−1モードにおいて、1つのダイに等しい空間は、より高いレベルの冗長情報に割り当てられる。RASIE−1モード1−0において、より高いレベルの冗長情報がフラッシュデバイス720の1つのダイ(例えば、フラッシュダイ610.63)に格納されるので、追加のフラッシュデバイス740は使用されず、データストレージ(例えば、ユーザデータおよび/またはユーザの自由空間)のために利用可能な63個のダイ(フラッシュダイ610.62・・・610.0)を残す。RASIE−1モード1−1において、追加のフラッシュデバイス740の1つのダイ(例えば、フラッシュダイ610.64)が使用され、データストレージのために利用可能なフラッシュデバイス720(64個のダイ)の全てを残す。

0181

RASIE−2モードにおいて、2つのダイと等しい空間がより高いレベルの冗長情報に割り当てられる。RASIE−2モード2−0において、より高いレベルの冗長情報はフラッシュデバイス720の2つのダイ(例えば、フラッシュダイ610.63及びフラッシュダイ610.62)に格納されるので、追加のフラッシュデバイス740は使用されず、データストレージのために利用可能な62個のダイ(フラッシュダイ610.61・・・610.0)を残す。RASIE−2モード2−1において、より高いレベルの冗長情報がフラッシュデバイス720の1つのダイ(例えば、フラッシュダイ610.63)に部分的に格納されるので、追加のフラッシュデバイス740の1つのダイ(例えば、フラッシュダイ610.64)が使用され、データストレージのために利用可能な63個のダイ(フラッシュダイ610.62・・・610.0)を残す。RASIE−2モード2−2において、追加のフラッシュデバイス740の2つのダイ(例えば、フラッシュダイ610.65及び610.64)が使用され、データストレージとして利用可能なフラッシュデバイス720の全て(64個のダイ)を残す。

0182

一部の実施形態において、全ての使用シナリオにおいて使用されなかったダイは未実装である。例えば、RASIE2−0モードとRASIE1−0モード(他のRASIEモードではなく)だけにおいて動作可能なシステムにおいて、追加のフラッシュデバイス740は未実装である。

0183

一部の実施形態において、より高いレベルの冗長情報は「専用の」ダイ(例えば、RASIE−1モード1−0におけるフラッシュダイ610.63又はRASIE−2モード2−2におけるフラッシュダイ610.65及びフラッシュダイ610.64)に完全に格納される。他の実施形態において、より高いレベルの冗長情報はダイのうちの任意のものに格納され、従って、例えば、RASIE−1モード1−0において、フラッシュダイ610.62はより高いレベルの冗長情報に対して使用されるが、フラッシュダイ610.63とフラッシュダイ610.61・・・610.0がデータストレージのために使用される。一部の実施形態および/または一部の使用シナリオにおいて、より高いレベルの冗長情報が時の経過に伴って異なるダイ(および/または異なるダイの一部分)に格納され、従って、例えば、第1の期間において、第1のフラッシュダイはより高いレベルの冗長情報を保持するが、第2の期間において、第2のフラッシュダイがより高いレベルの冗長情報を保持する。

0184

様々な実施形態において、どのくらいの数のフラッシュダイが使用可能であるかに依存して、複数のRASIE1−0モード(及び複数のRASIE2−0モード)が存在する。例えば、(上の表に図示されるような)第1のRASIE1−0モードにおいて、フラッシュダイ610.63はより高いレベルの冗長情報を格納し、フラッシュダイ610.62・・・610.0はデータストレージのために利用可能である。第2のRAISIE1−0モードにおいて、フラッシュダイ610.63は最早使用可能ではなく、フラッシュダイ610.62はより高いレベルの冗長情報を格納し、フラッシュダイ610.61・・・610.0はデータストレージのために利用可能であり、1つのダイによって利用可能なデータストレージの量を減少させる。データストレージのために以前利用可能であったダイ(又はダイの任意の部分)がより高いレベルの冗長情報のためのダイ(又はダイの一部分)の使用により最早データストレージのために利用可能ではないRASIEモードは容量が減少させられたRASIEモードと呼ばれる時もある。

0185

一部の実施形態において、より高いレベルの冗長情報が、より高いレベルの冗長情報によって保護されたユーザデータと同じおよび/または同様なより低いレベルの冗長性および/または誤り訂正符号化スキームを使用して格納される。より高いレベルの冗長情報を保護するためにより低いレベルの冗長性および/または誤り訂正スキームを使用することは、ユーザデータにおける訂正不可能なより低いレベルの誤りが決定される同じおよび/または同様な方法で、より高いレベルの冗長情報に訂正不可能な誤りが存在するかを決定することを可能にする。

0186

一部の実施形態において、より高いレベルの冗長情報がデータの異なる部分に対する異なるダイに格納される。例えば、フラッシュダイがRブロックにおいて管理される一部の実施形態において、より高いレベルの冗長情報は異なるRブロックに対する異なるフラッシュダイに格納される。例えば、フラッシュダイ610.0のブロック0を含むRブロックに対するより高いレベルの冗長情報はフラッシュダイ610.0に格納されるが、フラッシュダイ610.0のブロック1を含むRブロックに対するより高いレベルの冗長情報はフラッシュダイ610.1に格納されるなどである。フラッシュダイがRブロックにおいて管理される一部の実施形態などの一部の実施形態において、より高いレベルの冗長情報が依存するデータが分かった後および/または書き込まれた後に、より高いレベルの冗長情報は書き込まれる。

0187

一部の使用シナリオにおいて、NVM要素のうちの1若しくはそれ以上の部分(例えば、図6のフラッシュダイ610.0のブロック610.0BBなどの、デバイスのブロック)は、動作中には、動作不可能であるか、又は動作不可能になる。一部の実施形態において、動作不可能な部分は仮想ブロックアドレスと物理ブロックアドレスとを介して(例えば、図1Aのマップ141および/または表143を介して行われた処理を介して)描かれる。或いは、動作不可能な部分は(明示的に示されるのではなく)省かれる。Rブロックに基づいた一部の実施形態において、省くことにより、Rブロックのうちの一部が異なる数のブロックを有することとなる。例えば、ブロック610.0B0に不具合があり、使用不可能である場合には、Rブロック760.0はRブロック760.1よりも数が1つ少ないブロックを有する。より高いレベルの冗長情報は、例えば、各Rブロックの最後のブロックである不定の場所に(Rブロック毎に)書き込まれる。

0188

様々な実施形態において、図7の1若しくはそれ以上の要素が図1Aの1若しくはそれ以上の要素に対応する。例えば、フラッシュデバイス720と追加のフラッシュデバイス740とは集合的にNVM199に対応し、インターフェースチャンネル730と追加のインターフェースチャンネル750とは集合的にデバイスインターフェース190に対応する。別の例として、フラッシュダイ610.65・・・610.0は集合的にフラッシュダイ194の例に対応する。さらに別の例として、フラッシュデバイス720および/または追加のフラッシュデバイス740のフラッシュデバイスのうちの1若しくはそれ以上は、フラッシュデバイス192の例のうちの1若しくはそれ以上に対応する。様々な実施形態において、図1Aの1若しくはそれ以上の要素がより高いレベルの冗長情報を管理し、および/または本明細書において記載されたRASIE動作モードに従ってより高いレベルの冗長情報に少なくとも部分的に基づいてユーザデータを回復させる。例えば、CPU171のソフトウェア実行能力の一部分が様々なRASIE動作モードに従ってより高いレベルの冗長情報の計算を管理するために使用される。別の例として、データ処理121および/またはECC−X135は、より高いレベルの冗長情報の計算および/または様々なRASIE動作モードに従ったユーザデータの回復のために専用の、および/または特化したハードウェア要素を含む。また別の例として、ECC161はフラッシュダイの一部分のECC訂正不可能な(より低いレベルの)読み出しの誤りを検知し、ECC−X135はRASIE(より高いレベルの)読み出しの誤りを検知し、および/またはその誤りの訂正を可能にする。

0189

様々な実施形態において、インターフェースチャンネル730は1個、4個、8個、又は16個のチャンネルを様々に有し、追加のインターフェースチャンネル750は1個又は2個のチャンネルを様々に有する。様々な実施形態において、フラッシュデバイス720は、1個、2個、4個、8個、又は16個のデバイスとして実装され、それぞれが、64個、32個、16個、8個、及び4個のフラッシュダイをそれぞれ有する。様々な実施形態において、追加のフラッシュデバイス740は、1個又は2個のダイを有する1個のデバイス又はそれぞれが1個のダイを有する2個のデバイスとして実装される。一部の実施形態において、追加のフラッシュデバイス740のフラッシュダイは、フラッシュデバイス720のフラッシュダイも実装するデバイスに実装される。例えば、1個のフラッシュデバイスは66個のフラッシュダイ(フラッシュダイ610.65・・・610.0)を実装する。別の例として、2個のフラッシュデバイスはそれぞれ、例えば、第1のフラッシュデバイス(フラッシュダイ610.65・・・610.33)と第2のフラッシュデバイス(フラッシュダイ610.32・・・610.0)とにおいて、33個のフラッシュダイを実装する。他の構成のフラッシュダイとフラッシュデバイスとが企図される。フラッシュデバイス720のフラッシュダイも実装するデバイスに実装された追加のフラッシュデバイス740を有する一部の実施形態において、フラッシュダイは、共有されたインターフェースチャンネルを介して、或いはフラッシュダイの特定のダイ(又は組)に専用のインターフェースチャンネルを介して通信する。フラッシュデバイス720と追加のフラッシュデバイス740とは特定の数のフラッシュダイ(それぞれ2個及び64個)を伴って図示されるが、2個、4個、8個、16個、32個、又は128個のフラッシュダイを有するフラッシュデバイス720および/または0個、1個、又は4個のフラッシュダイを有する追加のフラッシュデバイス740などの他の実施形態が企図される。

0190

図8は、図6および/または図7によって図示された様々な実施形態によって可能にされたRASIEモード間の動的な切り替えなどの、RASIEを用いた動的なより高いレベルの冗長モードの管理の実施形態の選択された詳細を図示する。一部の実施形態および/または一部の使用シナリオにおいて、ある形態のグレイスフルデグラデーションが提供され、この場合、ストレージサブシステム(例えば、SSD)が第1のより高いレベルの冗長モードにおける動作から第2のより高いレベルの冗長モードにおける動作に動的に遷移させられる。遷移は、フラッシュダイ全体若しくはフラッシュダイの1若しくはそれ以上の部分の永続的若しくは断続的な機能不全などの故障の検知又はフラッシュダイ全体若しくはフラッシュダイの1若しくはそれ以上の部分に対する動作(例えば、読み出し動作又は書き込み動作)に応答するものである。様々な実施形態に従って、遷移は、SSDに対して包括的なもの、SSDの1若しくはそれ以上のサブセット上で行われるもの、及びSSDの1若しくはそれ以上のRブロック、ブロック、および/またはページ上で行われるもののうちの1若しくはそれ以上である。例えば、RASIE−2情報を格納する、NVMデバイスのうちの1つの特定のブロックがプログラミングの間に故障した場合には、特定の(故障した)ブロックを含むRブロックの次の動作が、異なるより高いレベルの冗長モード(例えば、RASIE−1)に遷移させる一方で、SSDにおける他のRブロックは影響を受けず、RASIE−2モードで動作し続ける。

0191

図8に関して、処理は第1のより高いレベルの冗長モードに従ってフラッシュダイに配置されたより高いレベルの冗長情報とデータストレージ(ユーザデータおよび/またはユーザの自由空間)とを用いて開始する(第1のより高いレベルの冗長モードにおいて動作する802)。次に流れは、より低いレベルの訂正不可能な読み出しの誤り又は書き込みの失敗/プログラムの不具合などの故障が検知されたかを決定すること(故障?803)に進む。故障が検知されなかった場合には、流れは第1のより高いレベルの冗長モードにおける動作を続けるために戻る。故障が検知された場合には、流れは第1のより高いレベルの冗長モードにおける動作から第2のより高いレベルの冗長モードにおける動作に切り替えることに進む(動作モードを動的に遷移させる809)。

0192

切り替えは故障の原因を説明するためにデータストレージのために利用可能な空間を(任意選択的に)削減する(自由空間を減少させる804)ことによって始まる。第2のより高いレベルの冗長モードが第1のより高いレベルの冗長モードよりもかなり少ないより高いレベルの冗長情報を使用する場合には、利用可能な空間の削減は省かれる。切り替えは第2のより高いレベルの冗長モードに従ってデータストレージを再組織する(データストレージを再構成する805)ことによって継続する。再組織することは、故障が生じたフラッシュダイからフラッシュダイのうちの別のフラッシュダイに全てのユーザデータおよび/またはユーザの自由空間を任意選択的に動かすことを含む(ユーザの自由空間の動きは、一部の実施形態において、ポインタの操作および/または他のデータ構造要素によって達成される)。切り替えは、第1のより高いレベルの冗長モードのより高いレベルの冗長情報を介して、故障が生じたフラッシュダイに格納された任意のユーザデータを(可能である場合には)選択的に復元し、第2のより高いレベルの冗長モードに従ってフラッシュダイの別のフラッシュダイに復元されたユーザデータを書き込むことによってさらに継続する(故障したユーザデータを復元/格納する806)。故障が書き込みの失敗/プログラムの不具合である場合には、復元は省かれる。切り替えは、第2のより高いレベルの冗長モードに従ってより高いレベルの冗長情報を任意選択的に計算してフラッシュダイに書き込むことによってさらに継続する(修正されたより高いレベルの冗長情報を決定/格納する807)。第2のより高いレベルの冗長モードが、第1のより高いレベルの冗長モードにおける動作により、以前に適切な場所にあったより高いレベルの冗長情報で動作可能である場合には、計算と書き込みとは省かれる。次に、動作は第2のより高いレベルの冗長モードで開始する(第2のより高いレベルの冗長モードにおいて動作する808)。

0193

故障検知(故障?803)は、(例えば、1若しくはそれ以上のECC技術に従った)より低いレベルの冗長性および/または誤り訂正と、(例えば、1若しくはそれ以上のRASIE技術に従った)より高いレベルの冗長性および/または誤り訂正と、ダイのうちの1若しくはそれ以上又はその一部分によって報告された故障状態とのうちの1若しくはそれ以上を介するものである。例えば、特定のフラッシュダイの特定の部分(例えば、R−ブロック、ブロック、R−ページ、ページ、読み出し単位、又はワードラインと関連付けられたセル)の範囲内の読み出しに関するしきい値数よりも多いより低いレベルの誤り訂正は、特定のフラッシュダイ(又は特定の部分)が故障したとして取り扱われることを任意選択的および/または条件付きでもたらし、より高いレベルの冗長モードの切り替えは、故障したフラッシュダイ(又はその一部分)が最早使用されないように行われる。別の例として、より高いレベルの誤り訂正が失敗した場合には、フラッシュダイ(又はその一部分)のうちの適切なものが故障したとして取り扱われ、より高いレベルの冗長モードの切り替えは、故障したフラッシュダイ(又はその一部分)が最早使用されないように行われる。さらに別の例として、フラッシュダイが(書き込み動作が成功しなかったことを示す)プログラムの不具合状態に戻った場合には、フラッシュダイのうちの適切なフラッシュダイの適切なブロックが故障したとして取り扱われ、より高いレベルの冗長モードの切り替えは、任意選択的および/または条件付きで、故障したフラッシュダイが最早使用されないように行われる。

0194

一部の実施形態において、故障したブロックは(例えば、図1Aのマップ141および/または表143を介して行われる処理を介して)仮想ブロックアドレスと物理ブロックアドレスとを介して再構成することによって交換される。スペアブロックプールからのスペアブロックが故障したブロックの代わりに配置される。故障したブロックに書き込まれたあらゆるコンテンツが代わりのブロックに複写され、書き込みは、故障したブロックにおいて故障が生じた場所からスペアブロックにおいて進む。

0195

一部の実施形態において、故障したブロックは(明示的に再配置されるのではなく)抜かされ、「穴」をもたらし、その穴は、穴があるRブロックが次に(再書き込みのための準備の際に)消去された時に任意選択的および/または条件付きでより高いレベルの冗長モードの切り替えをもたらす。穴がデータストレージのための場所にある場合には、切り替えは行われず、穴は残る。穴がより高いレベルの冗長情報のための場所にある場合には、より高いレベルの冗長情報は別の場所に格納され、任意選択的に、より高いレベルの冗長モードは切り替えられる。

0196

一部の実施形態および/または一部の使用シナリオにおいて、故障が生じたフラッシュダイに格納されたユーザデータの復元は可能ではない。例えば、故障が、より高いレベルの冗長性および/または誤り訂正を介して検知された一部の種類の故障、および/またはフラッシュダイのうちの1若しくはそれ以上又はその一部分によって報告された一部の種類の故障状態によるものである場合には、一部のユーザデータが失われる可能性がある。

0197

一部の実施形態において、図8の処理は複数の故障に応答してより高いレベルの冗長モード間で動的に遷移すること(例えば、SSDコントローラ)に関連して行われる。具体的には、SSDコントローラは、第1のより高いレベルの冗長モードで動作を開始し、第1の故障に応答して、第2のより高いレベルの冗長モードに動的に遷移し、次に、第2の故障に応答して、第2のより高いレベルの冗長モードから第3のより高いレベルの冗長モードに動的に遷移するなどである。例えば、SSDコントローラはRASIE−2モード2−2に従って様々なフラッシュダイを動作させ、第1の故障に応答してRASIE2モード2−1に従うように動作を動的に遷移させる。次に、SSDコントローラは第2の故障に応答してRASIE−2モード2−0に従うように動作を動的に遷移させる。さらに続けて、SSDコントローラは第3の故障に応答してRASIE−1能力低減モード1−0に従うように動作を動的に遷移させる(能力低減モード1−0はRASIE−1モード1−0と同様であるが、1個のフラッシュダイがより高いレベルの冗長情報に対して使用され、62個のフラッシュダイがデータストレージのために使用される点で異なる)。

0198

具体的な例として、図7の要素に結合されたSSDコントローラ(例えば、図1AのSSDコントローラ100)を考慮すると、第1のより高いレベルの冗長モードにおける動作に対応するRASIE−2モード2−2(例えば、フラッシュダイ610.65及びフラッシュダイ610.64におけるより高いレベルの冗長情報及びフラッシュダイ610.63・・・610.0におけるデータストレージ)における動作を最初に行う。次に、フラッシュダイのうちの1若しくはそれ以上の読み出し或いは書き込みが行われる。読み出しは訂正不可能な(より低いレベルの)ECC故障をもたらし、或いは書き込みはフラッシュダイの特定のものの一部分(例えば、ユーザデータおよび/またはユーザの自由空間のために使用されるフラッシュダイ610.62のページ)において不成功である。応答して、SSDコントローラはRASIE−2モード2−2における動作からRASIE−2モード2−1における動作に動的に切り替え、フラッシュダイ610.62のうちのいずれも最早使用しない。RASIE−2モード2−1における動作は、(RASIE−2モード2−2における64個のダイに対して)データストレージのために63個のダイを提供するので、データストレージのために利用可能な空間は64個のダイから63個のダイに減少させられ、ユーザデータおよび/またはユーザの自由空間がそれに応じて動かされる。例えば、フラッシュダイ610.62からの全てのユーザデータが、ユーザの自由空間に従ってフラッシュダイ610.63及びフラッシュダイ610.61・・・610.0の一部分に動かされる。訂正不可能なECC故障を有するページにおけるあらゆるユーザデータがフラッシュダイ610.65および/またはフラッシュダイ610.64におけるより高いレベルの冗長情報に基づいて回復される。フラッシュダイ610.63及びフラッシュダイ610.61・・・610.0におけるデータストレージに基づくと共にRASIE−2モード2−1に従ったより高いレベルの冗長情報が計算され、フラッシュダイ610.65および/またはフラッシュダイ610.64に格納される。SSDコントローラは次に、RASIE−2モード2−1(フラッシュダイ610.65及びフラッシュダイ610.64におけるより高いレベルの冗長情報及びフラッシュダイ610.63及びフラッシュダイ610.61・・・610.0におけるデータストレージ)において動作する。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 日立オートモティブシステムズ株式会社の「 電子制御装置及び制御データの設定方法」が 公開されました。( 2020/09/24)

    【課題】電子制御装置のバリエーションを管理する労力を軽減する。【解決手段】電子制御装置では、電子的にデータを書き換え可能なコードフラッシュメモリ120に、アクティブ状態とインアクティブ状態とに排他的に... 詳細

  • 東芝メモリ株式会社の「 メモリシステム及び不揮発性メモリ」が 公開されました。( 2020/09/24)

    【課題】リード動作の信頼性を向上できるメモリシステムを提供する。【解決手段】複数のメモリセルは、複数のワードラインとメモリーピラーとが交差する位置に形成される。複数のワードラインは、積層されている。メ... 詳細

  • 東芝メモリ株式会社の「 メモリシステム」が 公開されました。( 2020/09/24)

    【課題】メモリチップに品質の差がある場合においても、性能を低減することなく不揮発化処理を実行する。【解決手段】メモリシステム100は、不揮発性の複数のメモリチップ208と各メモリチップの動作を制御する... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ