特許第6336767号(P6336767)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シーゲイト テクノロジー エルエルシーの特許一覧

特許6336767リテンションドリフト履歴ベースの不揮発性メモリ読出し閾値最適化
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6336767
(24)【登録日】2018年5月11日
(45)【発行日】2018年6月6日
(54)【発明の名称】リテンションドリフト履歴ベースの不揮発性メモリ読出し閾値最適化
(51)【国際特許分類】
   G11C 16/34 20060101AFI20180528BHJP
   G11C 16/26 20060101ALI20180528BHJP
【FI】
   G11C16/34 163
   G11C16/26
【請求項の数】10
【外国語出願】
【全頁数】52
(21)【出願番号】特願2014-22904(P2014-22904)
(22)【出願日】2014年2月8日
(65)【公開番号】特開2014-154169(P2014-154169A)
(43)【公開日】2014年8月25日
【審査請求日】2017年1月31日
(31)【優先権主張番号】61/762,955
(32)【優先日】2013年2月10日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500373758
【氏名又は名称】シーゲイト テクノロジー エルエルシー
【氏名又は名称原語表記】Seagate Technology LLC
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】コーエン、アール、ティー.
(72)【発明者】
【氏名】ゾング、ハオ
【審査官】 後藤 彰
(56)【参考文献】
【文献】 米国特許出願公開第2012/0008401(US,A1)
【文献】 特表2010−505215(JP,A)
【文献】 特開2009−009688(JP,A)
【文献】 米国特許出願公開第2010/0309726(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 16/34
G11C 16/26
(57)【特許請求の範囲】
【請求項1】
方法であって、
不揮発性メモリにおける複数のページからなる複数のグループのうちの特定の1つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプの第1のサンプリング値を記録する工程と、
プログラミングされた前記複数のページからなる特定のグループの少なくとも一部の読出しに関連付けられた電圧ドリフト基準タイムスタンプの第2のサンプリング値を記録する工程と、
前記プログラミングされた前記複数のページからなる特定のグループのうちの少なくとも一部の前記読出しの電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記第1のサンプリング値および前記読出しに関連付けられた前記電圧ドリフト基準タイムスタンプの前記第2のサンプリング値に少なくとも部分的に基づいているものである、前記電圧閾値を決定する工程と
を有する方法。
【請求項2】
請求項1記載の方法において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録された前記第1のサンプリング値が、出し時点における前記電圧ドリフト基準タイムスタンプの前記第2のサンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものである方法。
【請求項3】
請求項1記載の方法において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである方法。
【請求項4】
請求項3記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも1つはそれぞれ、各生成番号(generation number)と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである方法。
【請求項5】
請求項4記載の方法において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものである方法。
【請求項6】
記憶システムであって、
メモリと、
プロセッサとを備え、前記プロセッサは、
不揮発性メモリにおける複数のページの複数のグループのうちの特定の1つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプの第1のサンプリング値を記録する工程
プログラミングされた前記複数のページからなる特定のグループの少なくとも一部の読出しに関連付けられた電圧ドリフト基準タイムスタンプの第2のサンプリング値を記録する工程、および、
プログラミングされた前記複数のページの特定のグループのうちの少なくとも一部の読出の電圧閾値を決定する工程を実行するように構成され、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記第1のサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプの前記第2のサンプリング値に少なくとも部分的に基づいているものである、記憶システム
【請求項7】
請求項6記載の記憶システムにおいて、さらに、前記プロセッサは、
前記電圧ドリフト基準タイムスタンプの前記記録された前記第1のサンプリング値が、出し時点における前記電圧ドリフト基準タイムスタンプの前記第2のサンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を実行するように構成される記憶システム
【請求項8】
請求項6記載の記憶システムにおいて、
さらに、前記プロセッサは、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を実行するように構成され、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである記憶システム
【請求項9】
請求項8記載の記憶システムにおいて、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも1つはそれぞれ、各生成番号と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである記憶システム
【請求項10】
請求項9記載の記憶システムにおいて、さらに、前記プロセッサは、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を実行するように構成される記憶システム
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願の権利益の主張を、(それがある場合には、適宜)添付の出願データシート、請求、または送達状において行う。本出願の種類によって許容される範囲内で、本出願はこの参照によりあらゆる目的で以下の出願を組み込むものであり、以下の出願はすべて、発明がなされた時点において本出願と所有者を同じくするものである。
【0002】
2012年5月4日付で出願された、Earl T Cohenを筆頭発明者とし、Zero−One Balance Management in a Solid−State Disk Controllerと題する米国非仮特許出願(整理番号SF−11−02および通し番号13/464,433)、および、2013年2月10日付で出願された、Earl T Cohenを筆頭発明者とし、Retention−Drift−History−Based Non−Volatile Memory Read Threshold Optimizationと題する米国仮特許出願(整理番号SF−11−19および通し番号61/762,955)。
【背景技術】
【0003】
分野:不揮発性記憶装置の技術の進歩が、使用の性能、効率、及び有用性の改善を提供するために必要とされる。
【0004】
関連技術:公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認と解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は(それがある場合には)、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。
【0005】
ソリッド・ステート・ディスク(Solid State Disk:SSD)コントローラとして使用されるフラッシュメモリの様々な態様をこれより説明して、一部には技術的背景を確立し、一部には本明細書の兼ね合いで使用される用語体系の前例を確立する。SSDコントローラによって不揮発性メモリ(Non−Volatile Memory:NVM)から読出し可能なデータの最小サイズは、低密度パリティ検査(Low−Density Parity−Check:LDPC)符号のような、含まれているエラー訂正によって保護される「読出し単位」である。文脈によっては、読出し単位は「符号語」と称される。いくつかの実施形態において、各読出し単位は約4K〜約32Kビットのユーザデータ、またそれに加えてエラー訂正オーバヘッドを含む。SSDコントローラの命令を受けて、それらのビットはNVMメモリセルから(たとえば、NVMメモリセルの1若しくはそれ以上の部分の配列アクセスを介して)読み出され、これは後述するような技術に応じて、セルあたり1若しくはそれ以上のビットを保持し得る。いくつかの実施形態において、安全上の理由から、SSDコントローラはデータを暗号化してから、そのデータをNVMに書き込む。いくつかの実施形態において、同一にプログラムされたセルが長く連なることに関して回路設計が制限されていることに鑑みて、SSDコントローラは、データをスクランブルしてから、そのデータをNVMに書き込む。
【0006】
個々に考えると、各セルは、そのセルに対するデバイス閾値電圧に対応し、セル内に記憶されている論理ビット値にさらに対応する特定の電荷を蓄積(プログラム)されている。NVM内のすべてのセルが記憶されている論理ビット値に対して同一のデバイス閾値電圧を有することが理想的であるが、実際には様々な理由から、デバイス閾値電圧はセルにわたって、形状がガウス同様の、デバイス閾値電圧軸に沿った確率分布(たとえば、「デバイス閾値電圧分布」)において異なる。
【0007】
したがって、読出し単位のもののような、多数のセルにわたる集合において考えると、セルあたりの状態(セルあたりの記憶ビットあたり2つの状態)と同じほど多くのデバイス閾値電圧分布(たとえば、ガウス確率曲線)がある。すなわち、記憶セルあたりNビットの場合、2**N個の状態および同じ数のデバイス閾値電圧分布がある。一般的に、NVMにおいて、(2**N)−1個の異なる読出し電圧(読出し電圧基準VREAD1〜VREAD(N−1))が、読出し回路が2**N個の状態間の区別を行うために必要とされる。
【0008】
上記から続けると、シングル・レベル・セル(Single−Level Cell:SLC)フラッシュメモリの場合は、N=1である。したがって、SLCメモリは記憶セルあたり1ビットを記憶し、2つのデバイス閾値電圧分布(1つは0のための、もう1つは1のためのもの)を有し、単一の読出し閾値、読出し電圧基準VREAD1を必要とする。より低いデバイス閾値電圧からより高いデバイス閾値電圧までの、2つのデバイス閾値電圧分布は、E(消去)状態およびD1(第1のデータ)状態として知られている。任意選択であるが、一般的なマッピング(符号化)は、論理1をE状態に割り当て、論理0をD1状態に割り当てることである。したがって、0および1への参照は、D1状態およびE状態のそれぞれの復号に対するプロキシ参照である。
【0009】
上記からさらに続けると、マルチ・レベル・セル(Multi−Level Cell:MLC)フラッシュメモリについて、N>1である。したがって、MLCメモリはセルあたり2よりも多いビットを記憶し、2つよりも多いデバイス閾値電圧分布を有し、分布を区別するために複数の異なる読出し閾値を必要とする。たとえば、4LCメモリ(たとえば、フラッシュメモリ)は、セルあたり2ビットを記憶し、4つのデバイス閾値電圧分布を有し、一般的に3つの読出し閾値(読出し電圧基準VREAD1、VREAD2、およびVREAD3)を必要とする。より低いデバイス閾値電圧からより高いデバイス閾値電圧までの、4つのデバイス閾値電圧分布は、E(消去)、D1(データ1)、D2(データ2)、およびD3(データ3)状態として知られている。任意選択であるが、4つのデバイス閾値電圧分布の各々はまた、グレーコード数列のような、特定の2進数列に従ってマッピング(アドレス指定)される。したがって、11、10、00、および01状態のうちの1若しくはそれ以上に対する参照は、E、D1、D2、およびD3状態のそれぞれの復号に対するプロキシ参照である。
【0010】
MLCの状態に使用されるアドレスマッピングに関連して、各々は、最上位ビット(Most Significant Bit:MSB)および最下位ビット(LSB)(ならびに、セルあたり2つよりも多いビットについては、それらの間の位のビット)を有するといえる。MLC NVMsがそれらのセルをプログラムする様々な方法があるが、以下の手法が一般的である。最初のプログラミング期間(電荷分布の動作)が、LSBを確立する、たとえば、「下位ページ」に書き込む。これは、SLCの書き込み、たとえば、E状態デバイス閾値電圧分布および第2の状態デバイス閾値電圧分布を確立する電荷動作と同じように大まかに行われる。使用される2進数列に応じて、第2の状態デバイス閾値電圧分布はD1状態デバイス閾値電圧分布と同様、D2状態デバイス閾値電圧分布と同様、または、D1状態デバイス閾値電圧分布とD2状態デバイス閾値電圧分布との間である。MLCについて、MLCのレベル数ごとの必要に応じて、1若しくはそれ以上のさらなるプログラミング期間が、デバイス閾値電圧分布を(数、デバイス閾値電圧軸に沿ったロケーションにおいて、および形状において)さらに操作する。より具体的には、1若しくはそれ以上の後続のプログラミング操作が、「中位ページ」(もしあれば、セルあたり2つよりも多いビットについて)に書き込み、最後のプログラミング操作がMSBを確立する、たとえば、「上位ページ」に書き込む。たとえば、4LC(セルあたり2ビットのMLC)において、E分布および第1のプログラム期間の第2の分布はそれぞれ、第2のプログラム期間によってE分布およびD1分布、ならびにD2分布およびD3分布に分岐する。
【0011】
デバイス閾値電圧分布は、読出しディスターブ、書込みディスターブ、および保持損失のような1若しくはそれ以上の要因によってそれらの初期/公称分布から変化する。より詳細には、時間、温度および使用に関係する他の要因にわたって、デバイス閾値電圧分布の各々のロケーションが、デバイス閾値電圧軸に対して変動する可能性がある。そのような変化は、公称デバイス閾値電圧分布に基づいて以前に確立された読出し閾値に対する読出し基準電圧値を使用して実行される読出しのエラーの可能性を増大させる。いくつかのSLC実施形態において、NVMからの読出し単位において、ハード判定訂正不可能エラーに直面したとき、読出し単位を回復するために一連の再試行動作が実行される。再試行動作は、SSDコントローラからI/Oコマンドを介して書き込まれるレジスタ設定によって決定されるように、コントローラが読出し閾値VREAD1の異なる電圧値において読出し単位を再読出しすることを含む。異なる設定の読出し閾値VREAD1において読み出すことによって、読出し単位は、(ハード判定)訂正可能である読出し単位のサンプルを位置特定する試行においてデバイス閾値電圧軸上の種々の点においてサンプリングされる。
【0012】
NVM供給元によって示唆されている1つのアルゴリズムは、訂正可能である読出し単位のサンプルを発見する試行においてゆっくりと上向きに(読出し基準電圧VREAD1をその公称値から増大させて)SLC読出し閾値を掃引することである。この手順に失敗した場合、読出し閾値は、別の方向に(読出し基準電圧VREAD1をその公称値から低減させて)掃引される。両方の掃引に失敗した場合、読出し単位は(ハード判定復号によって)訂正不可能である。異なるそれぞれの読出し基準電圧設定における16〜64の段階を有し得る読出し閾値の直線掃引は、読出し単位の多くの時間のかかるサンプル(各々が付随する回復待ち時間を有する)を必要とする。たとえそのような検索が頻繁には必要とされず、したがって平均待ち時間に大きな影響を及ぼさない場合であっても、いくつかのデータベース用途を含む、最大待ち時間要件が厳密な用途について、そのような時間のかかる検索は受け入れられない。
【発明の概要】
【課題を解決するための手段】
【0013】
本発明は、プロセス、製造品、装置、システム、組成物、ならびに、コンピュータ可読記憶媒体(ディスクといった光学的大容量記憶装置および/または磁気的大容量記憶装置、フラッシュストレージといった不揮発性記憶を有する集積回路など)、または、プログラム命令が光通信リンク若しくは電子通信リンク上で送られるコンピュータネットワークといったコンピュータ可読媒体を含む多くの方法で実施されてもよい。本明細書において、これらの実施態様、または本発明がとってもよい任意の他の形態を、技法と称する場合がある。詳細な説明では、上記の分野における使用の性能、効率、および有用性の改善を可能にする本発明の1若しくはそれ以上の実施形態の説明を行う。詳細な説明は、詳細な説明の残りの部分の迅速な理解を容易にするための概説を含む。概説は、本明細書で説明する概念に従うシステム、方法、製造品、およびコンピュータ可読媒体の1若しくはそれ以上の例示的実施形態を含む。結論の項でより詳細に論じるように、本発明は、発行される特許請求の範囲内のあらゆる可能な改変形態および変形形態を包含するものである。
【0014】
いくつかの実施形態および/または使用シナリオにおいて、読出し閾値は、保持ドリフトクロックとも称される保持ドリフトトラッキング、後述するような読出し閾値を先を見越して管理する技法などを介して、訂正不可能(たとえば、ハード判定復号)エラーの検出から独立して調整される。読出し閾値を独立して調整することによって、いくつかのコンテキストにおいて、独立して調整しなければ発生することになる訂正不可能エラーを回避することが可能になる。様々な実施形態において、NVMの読出し閾値調整は、NVMの製造時に、NVMを最初に使用するとき(たとえば、最初のSSDブート)に、1回または複数回(たとえば、定期的に、不規則に、またはランダムに)、閾値を上回るビット・エラー・レートに応答して、および、一定の条件を満たす(たとえば、ターゲットBERを超える、または0/1バランスにおけるターゲット不均衡を超える)のに応答して、のうちのいずれか1若しくはそれ以上で決定される。
【0015】
様々な実施形態において、NVMのブロックはグループにおいて管理され、管理されているグループのうちの特定の1つのブロックのサンプリングの各々が少なくとも部分的に読み出される。部分的に読み出されたサンプルブロックの少なくともいくつかが条件を満たす場合、特定の管理されているグループのすべてのブロックについて読出し閾値が調整される。様々な実施形態において、調整は、リテンションドリフトクロック(retention drift clock)(リテンションドリフトトラッキング(retention drift tracking))技法による。
【0016】
リテンションドリフトクロックは、1若しくはそれ以上のNVMダイ上の1若しくはそれ以上の基準ページ(またはECC単位若しくはブロック)を時間/温度基準にわたる読出し閾値として使用し、それらの値の関数を(時間/温度にわたる)ドリフトの測度として使用する。何らかの最初の回において、1若しくはそれ以上の基準ページが(これらのページが他のページのように振る舞うように同じブロック内の他のページとともに)プログラムされ、1若しくはそれ以上の基準ページの各々について初期読出し閾値が測定される。いくつかの実施形態において、読出し閾値が、同じダイ上のすべての基準ページ、および、I/Oデバイス内の同じ1若しくはそれ以上のダイ内のすべての基準ページのうちの1若しくはそれ以上の間で平均される。
【図面の簡単な説明】
【0017】
図1A図1Aは、不揮発性メモリ(NVM)要素(たとえば、フラッシュメモリ)を管理するために読出し閾値の最適化を実行するSSDコントローラを含むソリッド・ステート・ディスク(SSD)の一実施形態の選択された詳細を図示する図である。
図1B図1Bは、図1AのSSDの1つ若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す図である。
図2A図2Aは、1回目のデバイス閾値電圧分布を示すSLC固有の、0/1バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
図2B図2Bは、後の2回目のデバイス閾値電圧分布を示すSLC固有の、0/1バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
図2C図2Cは、1回目のデバイス閾値電圧分布を示すMLC固有の、0/1バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
図2D図2Dは、後の2回目のデバイス閾値電圧分布を示すMLC固有の、0/1バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
図3図3は、0/1バランス管理およびリテンションドリフトトラッキングに関する特定の詳細を提供する、図1AのSSDの一事例のシステム実施形態の選択された詳細を図示する図である。
図4図4は、書込み関連の動作(動作410〜430)および読出し関連の動作(動作440〜480)に関する特定の詳細を提供する、図1A図1B、および図3のSSD一実施形態の選択された制御フロー詳細を図示する図である。
図5A図5Aは、リテンションドリフトトラッキングを介して(たとえば、SSDの)NVMに対する最適化された読出し閾値を決定する実施形態の選択された詳細の流れ図である。
図5B図5Bは、NVMのブロックの管理されているグループ内のデバイス閾値電圧の小規模リテンションドリフト更新540の実施形態の選択された詳細の流れ図である。
図5C図5Cは、NVMのブロックの管理されているグループ内のデバイス閾値電圧の大規模リテンションドリフト更新560の実施形態の選択された詳細の流れ図である。
図6A図6Aは、4LCメモリにおけるデバイス閾値電圧分布を概念的に図示する図である。
図6B図6Bは、4LCメモリにおけるデバイス閾値電圧分布を概念的に図示する図である。
図6C図6Cは、4LCメモリにおけるデバイス閾値電圧分布を概念的に図示する図である。図面内の参照符号のリスト
【0018】
【表1】
【発明を実施するための形態】
【0019】
本発明の1つ若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含するものである。説明が単調にならないように、様々な言葉によるラベル(これに限定されるものではないが、最初の、最後の、ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど)が実施形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのようなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝えるためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施形態がプロセス、方法、および/またはプログラム命令の各特徴の差異を説明するのに使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な実施形態にそれぞれ対応する複数の動作モードの1つの静的選択および/または動的選択を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供するために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わかりやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に曖昧になることのないように詳細に説明していない。
【0020】
概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は、(それがある場合には、明示的な例を含む)この概説で提示される概念だけに限定されるものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するものである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他の実施形態があり、それらを本明細書の残りの部分にわたって論じる。
【0021】
頭字語
ここで定義される様々な縮めた表現の略語(例えば、頭字語)の少なくとも一部が本明細書において使用される特定の要素を指す。
【表2】
0/1バランスのトラッキングおよび復元
0および1のカウントのトラッキングおよび管理ならびに0状態および1状態を区別するために使用される読出し閾値のシフトの以下の最初の説明は、SLCメモリおよび(言及するように、若干の変更を加えて)MLCメモリの下位ページに直接適用可能である。より一般的にMLCメモリに関して、上位ページのカウントのトラッキングおよび管理ならびに複数の読出し閾値(たとえば、読出し電圧基準VREAD1、VREAD2およびVREAD3)のシフトは下記の別個の段落において詳述する。
【0022】
いくつかの実施形態において、0カウントおよび1カウントが、SLC NVMから読み出される各読出し単位(または1つのNVMダイから一度に転送される読出し単位の各グループ)について得られる。デバイス閾値電圧分布がそれらの(初期)公称分布からシフトしていることに部分的に起因して読出し単位が(たとえば、ハード判定復号のコンテキストにおいて)訂正不可能である場合、0カウントおよび/または1カウントによって、読出し閾値を移動(設定)する方向および/または程度を決定して、デバイス閾値電圧分布のシフトをトラッキングして0/1バランスを復元することが可能である。調整されている読出し閾値は、SLCメモリについては読出し電圧基準VREAD1であり、MLCメモリの下位ページについては読出し電圧基準VREAD2である。たとえば、論理1が消去状態に割り当てられており、既知の統計的に等しい(50−50パーセント、50/50パーセント、または単純に50/50とも称される)分布の0および1を書き込まれているSLCにおいて、現在の0/1カウントが1が優位であることを示す場合、VREAD1が下位にシフトされ、現在の0/1カウントが0が優位であることを示す場合、VREAD1が上位にシフトされる。(上記例において、MLCメモリの下位ページについてはVREAD1をVREAD2に置き換える。)読出し閾値をどの程度変更(シフト)するかは、任意選択的に、0(または1)の数の割合によって決定される。この程度は、1若しくはそれ以上のサンプル内で観測される0および/または1の数、1若しくはそれ以上のサンプルの読出し閾値増分、2つの分布のピーク間の中間点に対応する予測デバイス閾値電圧分布の知識、プログラム/消去カウント(摩耗)、読出しディスターブカウント、保持時間、ならびに他の類似の要因のうちの1若しくはそれ以上に基づく。
【0023】
読出し均衡点の発見
さらなる実施形態において、二分探索のような動作(適切な読出し電圧基準のそれぞれの値において同じ読出し単位を反復してサンプリングすること)が使用されて、読出し閾値「読出し均衡点」が発見される。これは、結果として、読み出されると統計的な許容誤差内で、書き込まれている統計状態分布、またはその理想化モデルに一致する生データ(エラー訂正前)統計状態分布をもたらすデバイス閾値電圧軸上の、隣接するデバイス閾値電圧分布間の点である。
【0024】
暗号化からもたらされるもののようなSLCメモリおよびランダムスクランブルについて、読出し均衡点は、(NVMから読み出される生データが)0/1バランスが最も均等(理想に近い)読出し閾値(読出し電圧基準VREAD1)である。そのような条件下では、2つの状態分布は50−50のバランスを有する。すなわち、読み出される状態の50%が0であり、読み出される状態の50%が1である。(上記において、MLCメモリの下位ページについてはVREAD1をVREAD2に置き換える。)
いくつかの実施形態において、読出し均衡点は、2つの電圧分布間の中央点、2つの電圧分布間の最小値、読み出されるデータの0/1バランスが50−50に最も近い点、および、2つの他の点において発見される0/1バランスの補間に従って求められる点のうちの1若しくはそれ以上に対応する。対称な隣接デバイス閾値電圧分布を有する実施形態では、読出し均衡点は、隣接するデバイス閾値電圧間の中央点に対応する。
【0025】
読出し閾値を発見して所望される読出し均衡点に設定することによって、ハード判定復号を試行する最適な点を発見するのに必要とされる読出しの回数が低減する。またさらなる実施形態において、読出し閾値読出し均衡点が発見される前に「十分に良好な」読出し閾値が発見される場合には、二分探索にける各読出し閾値サンプリング点(SLCメモリについてはVREAD1の各値、またはMLCメモリの下位ページについてはVREAD2の各値)においてハード判定復号が試行される。この探索は一般的に、下記に説明するように、可能性としてソフト判定復号のために求められる読出し均衡点の周囲でさらなるサンプリングを行うことを考慮することを除いて、十分に良好な読出し閾値が発見されると打ち切られる。様々な実施形態において、「十分に良好な」読出し閾値は、結果として生の読出しデータのハード判定復号の成功をもたらす。一部の実施形態において、二分探索における探索ステップの大きさ(読出し閾値増分)は、少なくとも部分的に、読出し閾値変更の程度に関する上記で詳述したような様々な要因に対して決定される(基づく)。
【0026】
MLC検討
MLCメモリにおいて、複数の読出し閾値が管理される。一部の実施形態において、これは、複数のデバイス閾値電圧分布が均一にずれていると仮定し、下位ページの読出しデータ0/1バランスに基づいて第1の読出し閾値(VREAD1)について行われた決定に基づいてすべての他の読出し閾値を変更することによって実行される。
【0027】
4LC NVMについて、理論的には、(50−50の0/1バランスとは対照的に)25−25−25−25の11/10/00/01バランスがある。しかしながら、4LCsが一般的に、下位ページのVREAD2、ならびに上位ページのVREAD1およびVREAD3の3つの読出し電圧基準を使用して別個のアレイアクセスを介して読み出されることを所与とすると、このバランスを直接もたらす単一の動作は存在しない。したがって、下位ページのD1状態とD2状態との間、ならびに、上位ページのD2状態とD3状態のとの間と組み合わせたE状態とD1状態との間の2つのそれぞれの0/1バランスが評価され得る。代替的に、単一の下位ページ読出し閾値をVREAD1、VREAD2、およびVREAD3の各々に近い値に設定する3つの別個の下位ページのようなアレイアクセスが実行され得る。
【0028】
例として、一部の4LC NVM実施形態において、読出し電圧基準VREAD1、VREAD2、およびVREAD3は、少なくともセル内に記憶されている2ビットのうちの1ビットについてシフトする必要があり得る。SLCの事例と同様に動作して、セル内に記憶されている2ビットのうちの1ビットは、第1の読出し閾値(このMLC事例におけるVREAD2)における単一アレイアクセスを必要とする。他方のビットを確定するには、2つのさらなる読出し閾値が必要である(VREAD1およびVREAD3、ならびに、実効的に、NVMによって内部で実行される2つの関連するそれぞれのさらなるアレイアクセス)。
【0029】
様々な実施形態によれば、他方のビットの2つの読出し閾値(VREAD1およびVREAD3)が、(ドリフトが両方の状態について同様であると仮定して)同じおよび/または異なる量だけ一緒に移動されるか、または、他方のビットの2つの読出し閾値が独立して(読出し動作が追加されることと引き換えに)移動されるかのいずれかである。SLCのようなビットの状態が、2つの読出し閾値(VREAD1およびVREAD3)のうちのいずれが対応する他方のビット(MSB)を確定するのに使用されるかを決定するため、後者の選択肢は、セル内のSLCのようなビット(LSB)の状態が分かっている必要がある。
【0030】
一部の4LC実施形態において、組合せ「上位ページ」読出しデータ0/1バランスが、同時に混合したEおよびD1分布ならびにD2およびD3分布について評価される。組合せ読出し0/1バランスと書き込まれているものとの不均衡に基づいて、またビットの意味が反転すること(EからD1への移動について1から0、D2からD3への移動について0から1)を考慮して、対応する2つの読出し閾値(VREAD1およびVREAD3)は一緒に反対方向に移動される。これは、混合物の各構成要素の0/1バランスが「同じ方向に」移動する(たとえば、移動が衝突しない)ように行われる。
【0031】
一部の4LC実施形態において、2つの上位ページ読出し閾値(VREAD1およびVREAD3)の移動は、読出し単位の各ビットのそれぞれのLSBを使用しながら、上位ページの0/1バランスをそれぞれ評価することによって別個に決定される。LSB=1のとき、移動の方向はLSB=0の事例の方向と反対である。たとえば、上位ページ読出しデータ内の0カウントと1カウントとの間の不均衡を計算する代わりに、下位ページ読出しデータの対応するビットに基づいて上位ページ読出しデータの各ビットを選択的に変更し、上位ページ読出しデータのビットの意味を数値から、たとえば、0がより高いデバイス閾値電圧を表し、1がより低いデバイス閾値電圧を表す方向値に変換することによって、上位ページ不均衡が計算される。一部の実施形態において、上位ページ読出しデータのビットおよび下位ページ読出しデータの対応するビットのXNORが変換を実行する。
【0032】
ソフト判定サンプルからのバイアスの除去
一部の実施形態において、ソフト判定情報がNVMから得られて、復号に基づいてソフト判定が実行される。ソフト判定情報は、公称(未調整)読出し閾値の周りの様々な読出し閾値サンプリングポイント(SLCについては、VREAD1の値)において読出し単位(または1つのNVMダイから一度に転送される読出し単位の各グループ)を読み出して読出し単位のデータの複数のサンプルを得、したがって読出し単位の各ビットの値のソフト判定尤度を構築することによって得られる。サンプルの間隔は、少なくとも部分的に、電荷状態の公称分離のような、使用されるNVMの特定の特性に応じて決まる。
【0033】
しかしながら、その周りでサンプルがとられる公称読出し閾値が(上述のような)読出し閾値均衡点でない限り、ソフト判定情報はバイアスされている。現在の読出し閾値が読出し閾値均衡点でない場合、すべてのソフト判定情報は一方向または他方向にバイアスされている。以下は、これを調整してバイアスされていない(または少なくともバイアスの少ない)ソフト判定情報を得るための2つの例示的な技法である。
【0034】
1.読出し閾値サンプリングポイントの各々においてサンプリングされる読出し単位の0/1バランスは容易に識別されるため、読出し閾値均衡点は(実施形態によれば、線形補間を使用することなどによって)容易に求められる。求められた読出し閾値均衡点と(旧来の未調整の)公称読出し閾値との間の差に対応するオフセットが計算される。ソフト判定情報が以前にサンプリングされた電圧に対してオフセットを適用する(1.0よりも大きいまたは0.0よりも小さい値は切り捨てられる)ことによって、以前に求められたソフト判定情報に適切に「中心をとり直し」、依然として使用することが可能になる。この手法はさらに読み出すことを必要としないが、データのいくらかについて異なる程度の精度/正確度をもたらす。
【0035】
2.読出し閾値サンプリングポイントの各々においてサンプリングされる読出し単位の0/1バランスは容易に識別されるため、すべての必要とされるサンプルが収集された後、読出し閾値均衡点に最も近い読出し閾値サンプリングポイントは、容易に求められる。この最も近いものは、0/1バランスが書き込まれている0/1バランスに最も近接している読出し閾値サンプリングポイントである。SLC暗号化(またはスクランブル)の事例について、これが50−50のバランスを有することに最も近い読出し閾値サンプリングポイントである。すべてのサンプルが公称的には互いから均等な間隔を有するため、最も近いサンプルが新規の公称読出し閾値として選択され、(新規の公称読出し閾値が旧来のものと異なると仮定して)さらなるソフト判定情報サンプルが任意選択的に収集される。代替的に、閾値読出し均衡点を発見するための二分探索が最初に行われ、ここで、二分探索の精度は、ソフト判定情報の所望される精度に必要とされるサンプリングの最も細かい粒度に制限される。ソフト判定情報の所望される精度は、新規の公称読出し閾値の周りの関連するサンプル窓を有する。旧来の公称読出し閾値が所望される精度のサンプル窓の外にならない限り、複数の読出しの一部として二分探索を行ってソフト判定情報を得ることはさらなる読出しを必要としない。
【0036】
これまで説明したSLC暗号化実施形態において、上記の技法は、50−50に最も近い読出しデータ0/1バランスをもたらす好適な読出し閾値を発見することに焦点を当ててきた。デバイス閾値電圧分布が一般的に同じ対称な形のものであり、実質的に重なり合わない事例については、この好適な読出し閾値は、組合せデバイス閾値電圧分布の最小値にも対応することになる。
【0037】
デバイス閾値電圧分布上の既知の点から補間される読出し閾値
一部の実施形態において、好適な読出し閾値を発見するための別の手法は、代わりに、各隣接デバイス閾値電圧分布に1つの2つの点を発見し、補間によってそれらの2つの点の間の中間点を求めることである。たとえば、各デバイス閾値電圧分布のピークにおいてサンプリングすることによって、75/25のバランスの読出しデータ0/1(または1/0、いずれのピークかによる)がもたらされるはずである。2つのピークが識別されると、デバイス閾値電圧軸上の2つの間の計算された中間点が使用されて、新規の読出し閾値が設定される。
【0038】
デバイス閾値電圧分布が均一でない(たとえば、長く尾を引いているなどで一方の側または他方に非対称にバイアスされている)ことが事前に分かっている場合、一部の実施形態において、その情報が使用されて、ピークの位置が解釈されて、わずかにより複雑な補間によって中心(たとえば、中間点だけでなく)が位置特定される。保持時間および/または摩耗のような要因が、デバイス閾値電圧分布の対称性に影響を及ぼす場合があり、一部の実施形態において計上される。一部の実施形態において複数のサンプリングポイントがまた使用されて、デバイス閾値電圧分布の形状を明らかにする。
【0039】
デバイス閾値電圧調整の範囲が制限されている一部の実施形態において、真のピークを発見することが可能でない場合がある。特に、たとえE状態の電圧分布が負デバイス閾値電圧まで拡大している場合であっても、デバイス閾値電圧は、何らかのフラッシュデバイスによって0V未満に移動されることはできない。デバイス閾値電圧分布が分かっていることで、依然として、補間を介して中間点を求めることが可能である。たとえば、0Vにおいて読出しデータ0/1バランスが60/40である場合、約10%余分な0が観測されており、0Vの右のE分布の面積は約10%である。一部の実施形態の第1の手法において、D1分布のピークが発見され、E分布のおおよその形状の知識に基づいて中間点が補間される。一部の実施形態の第2の手法において、D1分布の、読出しデータ0/1バランスが40/60である点(0V測定値から反対の点)を発見する。その後、60/40観測値と40/60観測値との間の計算された中間点が使用されて、新規の好適な読出し閾値が設定される。計算される中間点は、2つのデバイス閾値電圧分布のさらなる知識および/または測定値を用いてより高い精度で求められ得る。
【0040】
一部の実施形態において、補間されている点は両方とも、読出し均衡点と同じ側にある。たとえば、第1の読出し閾値サンプリングポイントXが分かると75/25読出しデータ0/1バランスがもたらされ、第2の読出し閾値サンプリングポイントYが分かると62.5/37.5がもたらされ、読出し均衡点はY+/−(X−Y)に近くなり、ここで、「+」であるか「−」であるかはYがXよりも小さいか否かに応じて決まる。読出し均衡点の方向は、読出しデータ0/1バランスを50/50に近い方に移動させるのに対応する方向である。与えられている例において、それは、XからYに向かう方向にある。デバイス閾値電圧分布が分かると、示されている単純な線形補間よりもより正確な補間が可能になる。
【0041】
リテンションドリフトトラッキング
様々な実施形態および/または使用シナリオにおいて、NVM内のデバイス閾値電圧分布は経時的にシフトし、(たとえば、ハード判定復号のときに)読出しエラーを引き起こす。デバイス閾値電圧分布がシフトすると、以前に一定の読出し閾値を下回っていた(または上回っていた)値がその一定の読出し閾値の上(または下)になり、ビットエラーを引き起こす。たとえば、D1分布として以前記憶された(そして、その分布内にあるとみなされている)値がD2分布内にあると決定され、したがってビットエラーがもたらされる。少数のビットエラーは訂正可能であるが、十分な数のビットエラーは訂正不可能(たとえば、ハード判定復号)エラーを引き起こす。一部の実施形態および/または使用シナリオにおいて、そうでなければ発生することになる訂正不可能(たとえば、ハード判定復号)エラーが、訂正不可能エラー検出から独立して読出し閾値を調整するリテンションドリフトトラッキングのような、読出し閾値の先を見越した調整によって回避可能である。
【0042】
例示的な実施形態
詳細な記載に対する導入を締めくくる際に続くものは、「ECs」(例示的な組合せ)として明示的に列挙される少なくとも一部の例示的な実施形態を含む例示的な実施形態を集めたものであり、本明細書において記載される概念に従った様々な実施形態の種類の追加的な記載を提供する。これらの例は、互いに排他的、網羅的、または制限的であることを意味せず、本発明はこれらの例示的な実施形態には限定されず、刊行された特許請求の範囲およびその均等物の範囲内のすべての可能な改変および変化形を含む。
【0043】
EC1)方法であって、
不揮発性メモリにおける複数のページからなる複数のグループのうちの特定のグループをプログラミングする工程とともに、当該プログラミングの時点の電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
前記複数のページからなる特定のグループの一部またはすべてをプログラミングする工程の後読出しする工程とともに、当該読出しの電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出し時点の電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである。前記決定する工程と
を有する方法。
【0044】
EC2)EC1記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの基準位置の電圧閾値に基づくものである方法。
【0045】
EC3)EC1記載の方法において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値と前記読出し時点の前記電圧ドリフト基準タイムスタンプの前記サンプリング値との差分が特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものである方法。
【0046】
EC4)EC1記載の方法において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである方法。
【0047】
EC5)EC4記載の方法において、前記基準位置は前記不揮発性メモリの所定のページである方法。
【0048】
EC6)EC4記載の方法において、前記基準位置は前記複数のページからなる特定のグループのうちのページの1つである方法。
【0049】
EC7)EC4記載の方法において、前記基準位置は、前記複数ページからなる特定のグループのうちのページの少なくとも1つと、前記不揮発性メモリの同じブロック内にあるものである方法。
【0050】
EC8)EC4記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の各々は、各生成番号(generation number)と各閾値部分を有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである方法。
【0051】
EC9)EC7記載の方法において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超える場合、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものである方法。
【0052】
EC10)方法であって、
通常の(非システム基準)ブロック書込みの一部として通常のデータページおよび1若しくはそれ以上のシステム基準ページをブロックに書き込む工程と、
バックグラウンド・システム・タスクとして、かつ前記ブロックからの通常ページ読出しを予期して、前記1若しくはそれ以上のシステム基準ページのシステム読出しに少なくとも基づいて、前記ブロックの所定の最適な読出し閾値電圧を定期的に決定する工程と、
前記ブロックの前記所定の最適な読出し閾値電圧を使用して、前記予期される通常ページ読出しの中から、通常ページ読出しを実行する工程と
を有する方法。
【0053】
EC11)方法であって、
少なくとも複数のページからなる複数のグループに編成されている不揮発性メモリの複数のページを書き込む工程であって、前記書き込まれる複数のページは、少なくとも部分的に読出し閾値電圧シフトをトラッキングするのに使用される、通常(非システム基準)ページと1若しくはそれ以上のシステム基準ページとを有するものである、前記書き込む工程と、
第1のタイミングおよび第1の最適化基準に従って、前記システム基準ページの各々について、最適な基準ページ読出し閾値電圧を繰り返し決定する工程と、
第2のタイミングおよび第2の最適化基準に従って、各グループについて、少なくとも最も最近に決定された基準ページ読出し閾値電圧の関数として最適な基準グループ読出し閾値電圧を繰り返し決定する工程と、

もっとも最近に決定された最適な基準グループ読出し閾値電圧から動的に選択される、要求に応じた読出し閾値電圧を使用して、複数の通常ページのうち要求に応じて読み出される少なくとも1つの通常ページを読み出す工程であって、前記要求に応じた読出し閾値電圧は、前記読み出される少なくとも1つのページが対応するグループに少なくとも部分的に基づいて動的に選択されるものである、前記読み出す工程と
を有する方法。
【0054】
EC12)EC11記載の方法において、さらに、
前記最適な基準ページ読出し閾値電圧のうちの1つが許容範囲外にあることを検出する工程と、
前記システム基準ページを前記検出された許容範囲外の最適な基準ページ読出し閾値電圧に対応するように再プログラミングする工程とを有するものである方法。
【0055】
EC13)EC11記載の方法において、さらに、
第3のタイミングに従って、各システム基準ページについて、前記決定された最適な基準ページ読出し閾値電圧が過剰に(プログラム可能/設定可能な値よりも大きく)シフトしたか否かを繰り返し評価し、前記評価に基づいて、前記システム基準ページを再プログラミングしてそれぞれの基準ページ生成カウントを増分する工程と、
第1のフィールドとして符号化された、前記決定された読出し閾値電圧の少なくとも一部をストレージ表現(storage representation)内に記憶する工程であって、当該ストレージ表現は、前記第1のフィールドに関連付けられた前記基準ページ生成カウントを符号化する第2のフィールドを有するものである、前記記憶する工程と
を有するものである方法。
【0056】
EC14)EC11記載の方法において、前記要求に応じた読出し閾値電圧は、前記読み出されるページが最後に書き込まれたときに使用された閾値電圧に対してシフトしているものである方法。
【0057】
EC15)EC11記載の方法において、前記決定された読出し閾値電圧の少なくとも一部は、符号化された複数のビットとして記憶されるものである方法。
【0058】
EC16)EC11記載の方法において、前記決定された読出し閾値電圧の少なくとも一部は、マッピングを使用して、符号化された複数のビットとして記憶されるものであり、これにより、値の急速なシフトに関連付けられた読出し閾値電圧の動作の少なくとも一部の領域においてより分解能の高い表現を提供するものである方法。
【0059】
EC17)EC11記載の方法において、前記決定された読出し閾値電圧の少なくとも一部は、第1のフィールドとして符号化されてストレージ表現内に記憶され、当該ストレージ表現は、さらに、前記第1のフィールドに関連付けられた基準ページ生成を特定する第2のフィールドを有するものである方法。
【0060】
EC18)EC17記載の方法において、前記基準ページ生成フィールドは、一連の異なる基準ページの中で区別されるものである方法。
【0061】
EC19)EC17記載の方法において、前記基準ページ生成フィールドは、同一の基準ページの一連の再プログラミングの中で区別されるものである方法。
【0062】
EC20)EC17記載の方法において、前記第1のフィールドおよび前記第2のフィールドはそれぞれ、前記ストレージ表現の最下位ビットおよび最上位ビットを有するものである方法。
【0063】
EC21)EC11記載の方法において、前記システム基準ページはECC単位およびECCブロックのうちの少なくとも1つを有するものである方法。
【0064】
EC22)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングは同一である方法。
【0065】
EC23)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングは異なるものである方法。
【0066】
EC24)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングの少なくとも1つは、前記読出し閾値電圧シフトがより非線形の動作領域に入っているという決定に基づいて変更されるものである方法。
【0067】
EC25)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングの少なくとも1つは、前記読出し閾値電圧の1つの変化の割合に比例してサンプリングする試行における適応的タイミングを有するものである方法。
【0068】
EC26)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングの少なくとも1つは、1日に1回、1週間に1回、または1ヶ月に1回の選択される公称間隔に少なくとも部分的に基づくタイミングを有するものである方法。
【0069】
EC27)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングの少なくとも1つは、不揮発性メモリのタイプ、前記読出し閾値電圧の1つの変化の割合の履歴、温度、および経過時間のうちの1若しくはそれ以上に少なくとも部分的に基づくタイミングを有するものである方法。
【0070】
EC28)EC11記載の方法において、前記第1のタイミングおよび前記第2のタイミングの少なくとも1つは、電源投入事象、リセット事象、およびウェークアップ事象のうちの1若しくはそれ以上に少なくとも部分的に基づくタイミングを有するものである方法。
【0071】
EC29)EC11記載の方法において、前記読出しは、以前の決定に関連する待ち時間を受けることなく、前記最適な基準グループ読出し閾値電圧の以前の決定から利益を受けるものである方法。
【0072】
EC30)EC11記載の方法において、前記必要に応じて読み出されるページは、a)前記システム基準ページ以外のシステムページ、b)非システムページ、およびc)ユーザページのうちから選択されるものである方法。
【0073】
EC31)EC11記載の方法において、前記システム基準ページは前記不揮発性メモリの1若しくはそれ以上のダイに常駐するものである方法。
【0074】
EC32)EC11記載の方法において、前記要求に応じた読出し閾値電圧は、前記不揮発性メモリの同じダイ上のすべての基準ページの平均である方法。
【0075】
EC33)EC11記載の方法において、前記要求に応じた読出し閾値電圧は、前記不揮発性メモリの1若しくはそれ以上のダイ上のすべての基準ページの平均である方法。
【0076】
EC34)EC11記載の方法において、前記不揮発性メモリはI/Oデバイスの1若しくはそれ以上のダイ上に具備されるものである方法。
【0077】
EC35)EC34記載の方法において、前記I/Oデバイスは記憶デバイスである方法。
【0078】
EC36)EC34記載の方法において、I/Oデバイスはソリッド・ステート・ドライブ(SSD)である方法。
【0079】
EC37)EC34に記載の方法において、前記要求に応じた読出し閾値電圧はダイ平均値である方法。
【0080】
EC38)EC34に記載の方法において、前記要求に応じた読出し閾値電圧はI/Oデバイス平均値である方法。
【0081】
EC39)EC11記載の方法において、前記決定された最適な基準ページ読出し閾値電圧は読出しエラーを最小限に抑える読出し閾値電圧である方法。
【0082】
EC40)EC11記載の方法において、前記決定された最適な基準ページ読出し閾値電圧は、プログラミングに使用される分布を最良に生成する(分布の所定の/プログラム可能な/構成可能なエラー限界内に整合する結果を可能にする)読出し閾値電圧である方法。
【0083】
EC41)EC11記載の方法において、プログラミングは暗号化を使用し、前記決定された最適な基準ページ読出し閾値電圧は、0および1の50−50のバランスがとれた分布を生成する読出し閾値電圧である方法。
【0084】
EC42)EC11記載の方法において、前記グループはRブロックである方法。
【0085】
EC43)EC11記載の方法において、前記読出しは、保持時間および保持温度のうちの1若しくはそれ以上の関数である読出し閾値電圧シフトを補償されるものである方法。
【0086】
EC44)方法であって、
不揮発性メモリの複数のページの複数のグループのうちの特定の1つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
プログラミングされた前記複数のページの特定のグループのうちの少なくとも一部の読出の電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである、前記電圧閾値を決定する工程と
を有する方法。
【0087】
EC45)EC44記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの1若しくはそれ以上の基準位置の電圧閾値にものである方法。
【0088】
EC46)EC44記載の方法において、さらに、
前記記録された電圧ドリフト基準タイムスタンプのサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分より小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものである方法。
【0089】
EC47)EC44記載の方法において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである方法。
【0090】
EC48)EC47記載の方法において、前記基準位置は前記不揮発性メモリのページである方法。
【0091】
EC49)EC47記載の方法において、前記基準位置は前記複数ページからなる特定のグループのうちのページの1つである方法。
【0092】
EC50)EC47記載の方法において、前記基準位置は前記複数のページからなる特定のグループのうちのページの少なくとも1つと、前記不揮発性メモリの同じブロック内にあるものである方法。
【0093】
EC51)EC47記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくともいくつかはそれぞれ、各生成番号とおよび各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである方法。
【0094】
EC52)EC51記載の方法において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものである方法。
【0095】
EC53)EC44記載の方法において、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値は前記プログラミング時点のものであり、前記読出しに関連付けられた前記電圧ドリフト基準タイムスタンプの前記サンプリング値は前記読出し時点のものである方法。
【0096】
EC54)EC45記載の方法において、前記電圧ドリフト基準タイムスタンプの少なくともいくつかはそれぞれ、前記基準位置を有する電圧ドリフト基準の1若しくはそれ以上の最適な読出し閾値電圧の決定されたセットを有するものである方法。
【0097】
EC55)EC54記載の方法において、前記不揮発性メモリはSLCメモリを有し、前記決定されたセットは、前記1若しくはそれ以上の最適な読出し閾値電圧のうちの単一の最適な読出し閾値電圧を有する方法。
【0098】
EC56)EC54記載の方法において、前記不揮発性メモリはMLCメモリを有し、前記決定されたセットは、前記1若しくはそれ以上の最適な読出し閾値電圧のうちの複数の最適な読出し閾値電圧を有する方法。
【0099】
EC57)EC54記載の方法において、さらに、前記電圧ドリフト基準タイムスタンプの少なくともいくつかをそれぞれの時間表現と関連付ける工程を有する方法。
【0100】
EC58)EC57記載の方法において、前記それぞれの時間表現はシステム事象に対するオフセットカウンタに従うものである方法。
【0101】
EC59)EC57記載の方法において、前記それぞれの時間表現は実際のタイムクロックから導出される値に従うものである方法。
【0102】
EC60)装置であって、
不揮発性メモリにおける複数のページからなる複数のグループのうちの特定の1つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する手段と、
プログラミングされた前記複数のページの特定のグループのうちの少なくとも一部の読出の電圧閾値を決定する手段であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた前記電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである、前記決定する手段と
を有する装置。
【0103】
EC61)EC60記載の装置において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの基準位置の電圧閾値に基づくものである装置。
【0104】
EC62)EC60記載の装置において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する手段を有するものである装置。
【0105】
EC63)EC60記載の装置において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する手段を有し、
前記定期的なサンプリングにより、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである装置。
【0106】
EC64)EC63記載の装置において、前記基準位置は前記不揮発性メモリのページである装置。
【0107】
EC65)EC63記載の装置において、前記基準位置は前記複数ページからなる特定のグループのうちのページの1つである装置。
【0108】
EC66)EC63記載の装置において、前記基準位置は、前記複数のページからなる特定のグループのうちのページの少なくとも1つと、前記不揮発性メモリの同じブロック内にあるものである装置。
【0109】
EC67)EC63記載の装置において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも一部はそれぞれ、各生成番号と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである装置。
【0110】
EC68)EC67記載の装置において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する手段を有するものである装置。
【0111】
EC69)命令セットが記憶された持続性有形コンピュータ可読媒体であって、当該命令セットは、処理要素によって実行されると、当該処理要素に、
不揮発性メモリの複数のページからなる複数のグループのうちの特定の1つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
プログラムされた前記複数のページからなる特定のグループの少なくとも一部の読出しの電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである、前記決定する工程と
を有する動作を実行させるものである、
持続性有形コンピュータ可読媒体。
【0112】
EC70)EC69記載のコンピュータ可読媒体において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの基準位置の電圧閾値に基づくものであるコンピュータ可読媒体。
【0113】
EC71)EC69記載のコンピュータ可読媒体において、前記動作は、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものであるコンピュータ可読媒体。
【0114】
EC72)EC69記載のコンピュータ可読媒体において、前記動作は、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、前記基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的なサンプリングにより、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものであるコンピュータ可読媒体。
【0115】
EC73)EC72記載のコンピュータ可読媒体において、前記基準位置は不前記揮発性メモリのページであるコンピュータ可読媒体。
【0116】
EC74)EC72記載のコンピュータ可読媒体において、前記基準位置は前記複数のページからなる特定のグループのうちのページの1つであるコンピュータ可読媒体。
【0117】
EC75)EC72記載のコンピュータ可読媒体において、前記基準位置は、前記複数のページからなる特定のグループのうちのページの少なくとも1つと、前記不揮発性メモリの同じブロック内にあるものであるコンピュータ可読媒体。
【0118】
EC76)EC72記載のコンピュータ可読媒体において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも一部はそれぞれ、各生成番号と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものであるコンピュータ可読媒体。
【0119】
EC77)EC76記載のコンピュータ可読媒体において、前記動作は、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものであるコンピュータ可読媒体。
【0120】
システム
一部の実施形態では、SSDといった入出力装置がSSDコントローラを含む。SSDコントローラはホストインターフェースとSSDのNVMとの間のブリッジとして働き、SSDのホストインターフェースを介してコンピューティングホストから送られるホストプロトコルのコマンドを実行する。コマンドの少なくとも一部は、SSDに、コンピューティングホストから送られたデータおよびコンピューティングホストに送られるデータについて、それぞれ、NVMの書き込みおよび読み出しを行うよう指図する。別の実施形態では、SSDコントローラは、マップを使用してホストプロトコルのLBAとNVM内の物理的記憶アドレスとを変換することができるようになっている。別の実施形態では、マップの少なくとも一部分が、入出力装置の専用記憶(コンピューティングホストからは見えない)に使用される。例えば、コンピューティングホストからアクセスできないLBAの部分が、入出力装置によって、ログ、統計、または他の専用データへのアクセスを管理するのに使用される。
【0121】
一部の実施形態では、NVM内の様々なサイズの量の圧縮データにアクセスすることにより、ある使用シナリオでは記憶効率が改善される。例えば、SSDコントローラは、コンピューティングホストから(例えばディスク書き込みコマンドに関連した)(圧縮されていない)データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コンピューティングホストからの(例えばディスク読み出しコマンドに関連した)その後の要求に応答して、SSDコントローラはフラッシュメモリから圧縮データを読み出し、圧縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮データは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。SSDコントローラは、一部は、含まれるマップ表を調べて(1つまたは複数の)ヘッダがフラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。SSDコントローラは、適切な(圧縮)データがフラッシュメモリのどこに記憶されているか確認するためにフラッシュメモリから得た(1つまたは複数の)ヘッダをパースする。SSDコントローラは、コンピューティングホストに提供すべき解凍データを生成するために、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する(uncompress)」(およびその変形)は、「伸張する(decompress)」(およびその変形)と同義である。
【0122】
様々な実施形態では、SSDコントローラは、コンピューティングホストとインターフェースするためのホストインターフェースと、フラッシュメモリといったNVMとインターフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解凍と共に、低レベル誤り訂正、高レベル誤り訂正、ならびに独立シリコン素子を用いた動的高レベル冗長性モード管理を行う(かつ/または行うことの様々な態様を制御する)ための回路とを含む。
【0123】
様々な実施形態によれば、あるホストインターフェースは、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ブリッジなど)は、コンピューティングホストおよび/またはコンピューティングホストへのブリッジとして動作する。
【0124】
様々な実施形態では、SSDコントローラは、1つ若しくはそれ以上のプロセッサを含む。プロセッサは、SSDコントローラの動作を制御し、かつ/または行うためにファームウェアを実行する。SSDコントローラは、コマンドおよび/または状況ならびにデータを送り、受け取るためにコンピューティングホストと通信する。コンピューティングホストは、オペレーティングシステム、ドライバ、およびアプリケーションのうちの1つ若しくはそれ以上を実行する。コンピューティングホストによるSSDコントローラとの通信は、任意選択で、かつ/または選択的に、ドライバおよび/またはアプリケーションによるものである。第1の例では、SSDコントローラへのすべての通信がドライバによるものであり、アプリケーションは、ドライバに高レベルコマンドを提供し、ドライバがそれをSSDコントローラのための特定のコマンドに変換する。第2の例では、ドライバはバイパスモードを実施し、アプリケーションは、ドライバを介してSSDコントローラに特定のコマンドを送ることができるようになっている。第3の例では、PCIe SSDコントローラが1つ若しくはそれ以上の仮想機能(Virtual Functions:VFs)をサポートし、アプリケーションが、一度構成されると、ドライバをバイパスしてSSDコントローラを直接通信することを可能にする。
【0125】
様々な実施形態によれば、あるSSDは、HDD、CDドライブ、DVDドライブといった磁気的不揮発性記憶および/または光学的不揮発性記憶によって使用されるフォームファクタ、電気的インターフェース、および/またはプロトコルと適合する。様々な実施形態では、SSDは、0以上のパリティ符号、0以上のRS符号、0以上のBCH符号、0以上のビタビ符号または他のトレリス符号、および0以上のLDPC符号の様々な組み合わせを使用する。
【0126】
図1Aは、不揮発性メモリ(NVM)要素(たとえば、フラッシュメモリ)を管理するために読出し閾値の最適化を(たとえば、0/1バランス管理および/またはリテンションドリフトトラッキング技法を介して)実施するSSDコントローラ100を含むSSD101の選択された詳細を図示する。SSDコントローラ100は1若しくはそれ以上の外部インターフェース110を介してホスト(図1Bのホスト102など)に通信するように接続される。様々な実施形態に従って、外部インターフェース110は、SATAインターフェース、SASインターフェース、PICeインターフェース、ファイバー・チャンネル・インターフェース、イーサネット(登録商標)インターフェース(たとえば、10ギガビットのイーサネット(登録商標))、上記のインターフェースのうちのいずれかの規格外版、若しくは特注のインターフェース、またはストレージおよび/または通信機器および/または計算デバイスを相互接続するために使用されるその他任意の種類のインターフェースのうちの1若しくはそれ以上である。たとえば、一部の実施形態において、SSDコントローラ100はSATAインターフェースとPCIeインターフェースとを含む。
【0127】
SSDコントローラ100は、さらに、1つ若しくはそれ以上のデバイスインターフェース190を介して、1つ若しくはそれ以上のフラッシュデバイス192といった、1つ若しくはそれ以上の記憶デバイスを含むNVM199に通信可能に結合されている。様々な実施形態によれば、デバイスインターフェース190は、非同期インターフェース、同期インターフェース、シングルデータレート(SDR)インターフェース、ダブルデータレート(DDR)インターフェース、DRAM互換DDR若しくはDDR2同期インターフェース、ONFI2.2やONFI3.0互換インターフェースといったONFI互換インターフェース、トグルモード互換フラッシュインターフェース、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デバイスに接続するのに使用される任意の他の種類のインターフェースのうちの1つ若しくはそれ以上である。
【0128】
各フラッシュデバイス192は、一部の実施形態では、1つ若しくはそれ以上の個々のフラッシュダイ194を有する。フラッシュデバイス192のうちの特定のフラッシュデバイスの種類に従って、特定のフラッシュデバイス192内の複数のフラッシュダイ194に、並列に、任意選択で、かつ/または選択的にアクセスすることができる。フラッシュデバイス192は、単に、SSDコントローラ100に通信可能に結合することができるようにした記憶デバイスの一種を表しているにすぎない。様々な実施形態では、SLC NANDフラッシュメモリ、MLC NANDフラッシュメモリ、NORフラッシュメモリ、多結晶シリコン若しくはシリコン窒化膜技術ベースの電荷蓄積セルを使用したフラッシュメモリ、2次元若しくは3次元技術ベースのフラッシュメモリ、読み出し専用メモリ、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ReRAM、または任意の他の種類のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用することができる。
【0129】
様々な実施形態によれば、デバイスインターフェース190は、1つのバスにつき1つ若しくはそれ以上のフラッシュデバイス192を有する1つ若しくはそれ以上のバス;グループ内のバスにおおむね並列にアクセスさせる、1つのバスにつき1つ若しくはそれ以上のフラッシュデバイス192を有する1つ若しくはそれ以上のバスグループ;またはデバイスインターフェース190上へのフラッシュデバイス192の1つ若しくはそれ以上のインスタンスの任意の他の編成として編成される。
【0130】
引き続き図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に記憶されたデータに任意選択で、かつ/または選択的に作用する。
【0131】
ホストインターフェース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による処理の間にコマンドを追跡するのに使用される内部タグと関連付けることができるようになっている。
【0132】
様々な実施形態によれば、データ処理121は、任意選択で、かつ/または選択的に、バッファ131と外部インターフェース110との間で送られる一部または全部のデータを処理する、およびデータ処理121は、任意選択で、かつ/または選択的に、バッファ131に記憶されたデータを処理する、以下のうちの1つ若しくはそれ以上が行われる。一部の実施形態では、データ処理121は、1つ若しくはそれ以上のエンジン123を使用して、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および/または動作タスクのうちの1つ若しくはそれ以上を行う。
【0133】
バッファ131は、外部インターフェース110からデバイスインターフェース190へ/デバイスインターフェース190から外部インターフェース110へ送られたデータを記憶する。一部の実施形態では、バッファ131は、さらに、SSDコントローラ100によって1つ若しくはそれ以上のフラッシュデバイス192を管理するのに使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施形態では、バッファ131は、データの一時記憶に使用されるメモリ137、バッファ131への、かつ/またはバッファ131からのデータの移動を制御するのに使用されるDMA133、ならびに高レベル誤り訂正および/または冗長性機能と、他のデータ移動および/または動作機能とを提供するのに使用されるECC−X135のうちの1つ若しくはそれ以上を有する。高レベル冗長性機能の一例がRAID様の能力であり、ディスクレベルではなく、フラッシュ・デバイス(フラッシュデバイス192のうちの複数のものなど)レベルおよび/またはフラッシュダイ(フラッシュダイ194など)レベルの冗長性を備える。
【0134】
様々な実施形態によれば、以下のうちの1つ若しくはそれ以上である。ECC161は、任意選択で、かつ/または選択的に、バッファ131とデバイスインターフェース190との間で送られる一部または全部のデータを処理する;およびECC161は、任意選択で、かつ/または選択的に、バッファ131に記憶されたデータを処理する。一部の実施形態では、ECC161は、例えば1つ若しくはそれ以上のECC技法に従った低レベル誤り訂正および/または冗長性機能を提供するのに使用される。一部の実施形態では、ECC161は、CRC符号、ハミング符号、RS符号、BCH符号、LDPC符号、ビタビ符号、トレリス符号、硬判定符号、軟判定符号、消去ベースの符号、任意の誤り検出および/または訂正符号、ならびに上記の任意の組み合わせのうちの1つ若しくはそれ以上を実施する。一部の実施形態では、ECC161は、1つ若しくはそれ以上の復号器(LDPC復号器など)を含む。
【0135】
デバイスインターフェース論理191は、デバイスインターフェース190を介してフラッシュデバイス192のインスタンスを制御する。デバイスインターフェース論理191は、フラッシュデバイス192のプロトコルに従ってフラッシュデバイス192のインスタンスへ/からデータを送ることができるようになっている。デバイスインターフェース論理191は、デバイスインターフェース190を介したフラッシュデバイス192のインスタンスの制御を選択的に配列するスケジューリング193を含む。例えば、一部の実施形態では、スケジューリング193は、フラッシュデバイス192のインスタンスへの動作を待ち行列に入れ、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスへの動作を、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスが利用可能になるに従って選択的に送ることができるようになっている。
【0136】
マップ141は、外部インターフェース110上で使用されるデータアドレス指定と、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、表143を使用して外部データアドレスからNVM199内の位置へマップする。例えば、一部の実施形態では、マップ141は、外部インターフェース110上で使用されるLBAを、表143によって提供されるマッピングにより、1つ若しくはそれ以上のフラッシュダイ194を対象とするブロックおよび/またはページアドレスに変換する。ドライブ製造または割り振り解除以来一度も書き込まれていないLBAでは、マップは、LBAが読み取出された場合に返すべきデフォルト値を指し示す。例えば、割り振り解除コマンドを処理するときに、マップは、割り振り解除されたLBAに対応するエントリがデフォルト値のうちの1つを指し示すように変更される。様々な実施形態では、様々なデフォルト値があり、各々が対応するポインタを有する。複数のデフォルト値は、ある(例えば第1の範囲内の)割り振り解除されたLBAを1つのデフォルト値として読み出し、ある(例えば第2の範囲内の)割り振り解除されたLBAを別のデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび/若しくはプリミティブ引数および/若しくはパラメータ、プログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。
【0137】
一部の実施形態では、マップ141は、表143を使用して、外部インターフェース110上で使用されるアドレスと、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、かつ/またはルックアップする。様々な実施形態によれば、表143は、1レベルマップ、2レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意の種類のマッピング、および上記の任意の組み合わせのうちの1つ若しくはそれ以上である。様々な実施形態によれば、表143は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、NVM(フラッシュメモリなど)、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および上記の任意の組み合わせのうちの1つ若しくはそれ以上を含む。
【0138】
一部の実施形態では、リサイクラ151は、不要部分の整理を行う。例えば、一部の実施形態では、フラッシュデバイス192のインスタンスは、ブロックが書き換え可能になる前に消去されなければならないブロックを含む。リサイクラ151は、例えば、マップ141によって維持されるマップをスキャンすることによって、フラッシュデバイス192のインスタンスのどの部分が実際に使用されているか(例えば、割り振り解除されているのではなく割り振られていること)を決定し、フラッシュデバイス192のインスタンスの未使用の(例えば割り振り解除された)部分を消去することによって書き込みに利用できるようにすることができるようになっている。別の実施形態では、リサイクラ151は、フラッシュデバイス192のインスタンスのより大きい連続した部分を書き込みに利用できるようにするために、フラッシュデバイス192のインスタンス内に記憶されたデータを移動することができるようになっている。
【0139】
一部の実施形態では、フラッシュデバイス192のインスタンスは、異なる種類および/または属性のデータを記憶するための1つ若しくはそれ以上のバンドをリテンションするように、選択的に、かつ/または動的に構成され、管理され、かつ/または使用される。バンドの数、配置、サイズ、および種類は、動的に変更可能である。例えば、コンピューティングホストからのデータはホット(アクティブな)バンドに書き込まれ、リサイクラ151からのデータはコールド(あまりアクティブではない)バンドに書き込まれる。ある使用シナリオでは、コンピューティングホストが長い順次のストリームを書き込む場合には、ホットバンドのサイズが増大し、コンピューティングホストがランダムな書き込みを行い、またはわずかな書き込みしか行わない場合には、コールドバンドのサイズが増大する。
【0140】
CPU171は、SSDコントローラ100の様々な部分を制御する。CPU171は、CPUコア172を含む。CPUコア172は、様々な実施形態によれば、1つ若しくはそれ以上のシングルコアプロセッサまたはマルチコアプロセッサである。CPUコア172内の個々のプロセッサコアは、一部の実施形態では、マルチスレッド化されている。CPUコア172は、命令および/またはデータのキャッシュおよび/またはメモリを含む。例えば、命令メモリは、CPUコア172が、SSDコントローラ100を制御するためのプログラム(ファームウェアとも呼ばれるソフトウェアなど)を実行することを可能にする命令を含む。一部の実施形態では、CPUコア172によって実行されるファームウェアの一部または全部が、(例えば、図1BのNVM199のファームウェア106として図示されている)フラッシュデバイス192のインスタンス上に記憶される。
【0141】
様々な実施形態では、CPU171は、外部インターフェース110を介して受け取られるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理173、バッファ131の割り振りおよび使用を制御するバッファ管理175、マップ141を制御する変換管理177、データアドレス指定の整合性を制御し、例えば、外部データアクセスと再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理179、デバイスインターフェース論理191を制御するデバイス管理181、識別情報の変更および通信を制御する識別情報管理182、ならびに、任意選択で、他の管理部をさらに含む。CPU171によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、ソフトウェア(CPUコア172上や、外部インターフェース110を介して接続されたホスト上で実行されるファームウェアなど)、またはそれらの任意の実施形態によって制御され、かつ/または管理され、あるいは、そのどれも、制御も管理もされないものである。
【0142】
一部の実施形態では、CPU171は、性能統計の収集および/または報告、SMARTの実施、電源逐次開閉機構の制御、電力消費の制御および/または調整、電源障害への応答、クロック速度の制御および/またはモニタリングおよび/または調整、ならびに他の管理タスクのうちの1つ若しくはそれ以上といった、他の管理タスクを行うことができるようになっている。
【0143】
様々な実施形態は、SSDコントローラ100と同様の、例えば、ホストインターフェース111および/または外部インターフェース110の適応による、様々なコンピューティングホストを用いた動作と適合するコンピューティングホスト・フラッシュ・メモリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置(e−readerなど)、PDA、ナビゲーションンシステム、(ハンドヘルド型)GPS機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、POS機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、DVR、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうちの1つまたはそれらの任意の組み合わせを含む。
【0144】
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部または任意の部分が、単一のIC、マルチダイICの単一のダイ、マルチダイICの複数のダイ、または複数のIC上で実施される。例えば、バッファ131は、SSDコントローラ100の他の要素と同じダイ上に実施される。別の例では、バッファ131は、SSDコントローラ100の他の要素と異なるダイ上に実施される。
【0145】
図1Bに、図1AのSSDの1つ若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を図示する。SSD101は、デバイスインターフェース190を介してNVM199に結合されたSSDコントローラ100を含む。図には、様々な種別の実施形態、すなわち、ホストに直接結合された単一のSSD、各々がそれぞれの外部インターフェースを介してホストに直接それぞれ結合されている複数のSSD、および様々な相互接続要素を介してホストに間接的に結合された1つ若しくはそれ以上のSSDが示されている。
【0146】
ホストに直接結合された単一のSSDの例示的実施形態としては、SSD101の1つのインスタンスが、外部インターフェース110を介してホスト102に直接結合される(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、またはパススルーされる)。各々がそれぞれの外部インターフェースを介してホストに直接結合されている複数のSSDの例示的実施形態としては、SSD101の複数のインスタンスの各々が、外部インターフェース110のそれぞれのインスタンスを介してホスト102に直接それぞれ結合される(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、またはパススルーされる)。様々な相互接続要素を介してホストに間接的に結合された1つ若しくはそれ以上のSSDの例示的実施形態としては、SSD101の1つ若しくはそれ以上のインスタンスの各々が、ホスト102に間接的にそれぞれ結合される。各間接結合は、スイッチ/ファブリック/中間コントローラ103に結合された外部インターフェース110のそれぞれのインスタンス、およびホスト102に結合する中間インターフェース104を介したものである。
【0147】
スイッチ/ファブリック/中間コントローラ103を含む実施形態の一部は、メモリインターフェース180を介して結合された、SSDによってアクセス可能なカードメモリ112Cも含む。様々な実施形態では、SSD、スイッチ/ファブリック/中間コントローラ、および/またはカードメモリのうちの1つ若しくはそれ以上が、物理的に識別可能なモジュール、カード、または差し込み可能な要素(入出力カード116など)上に含まれる。一部の実施形態では、SSD101(またはその変形)は、ホスト102として動作するイニシエータ(開始プログラム)に結合されたSASドライブまたはSATAドライブに対応する。
【0148】
ホスト102は、OS105、ドライバ107、アプリケーション109、マルチデバイス管理ソフトウェア114の様々な組み合わせといった、ホストソフトウェア115の様々な要素を実行することができるようになっている。点線矢印107Dは、ホストソフトウェア←→入出力装置通信、例えば、SSD101のインスタンスのうちの1つ若しくはそれ以上から/へ、ドライバ107を介したOS105、ドライバ107、および、ドライバ107を介して、またはVFとして直接アプリケーション109のうちの任意の1つ若しくはそれ以上へ/から送られ/受け取られるデータを表す。
【0149】
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使用可能ドライバである。ドライバの別の例は、ベンダ提供ドライバ、ベンダ開発ドライバ、および/またはベンダ拡張ドライバ、ならびにクライアント提供ドライバ、クライアント開発ドライバ、および/またはクライアント拡張ドライバである。
【0150】
アプリケーションレベルのプログラムの例は、ONAまたはDNAサポートなしのアプリケーション、ONA使用可能アプリケーション、DNA使用可能アプリケーション、およびONA/DNA使用可能アプリケーションである。点線矢印109Dは、アプリケーション←→入出力装置通信(ドライバによるバイパスや、アプリケーションのためのVFによるバイパスなど)、例えば、OSを仲介として使用するアプリケーションなしでSSDと通信するONA使用可能アプリケーションおよびONA使用可能ドライバなどを表す。点線矢印109Vは、アプリケーション←→入出力装置通信(アプリケーションのためのVFによるバイパスなど)、例えば、OSまたはドライバを仲介として使用するアプリケーションなしでSSDと通信するDNA使用可能アプリケーションおよびDNA使用可能ドライバなどを表す。
【0151】
NVM199の1つ若しくはそれ以上の部分が、一部の実施形態では、ファームウェア記憶、例えばファームウェア106に使用される。ファームウェア記憶は、1つ若しくはそれ以上のファームウェアイメージ(またはその部分)を含む。ファームウェアイメージは、例えばSSDコントローラ100のCPUコア172によって実行される、例えばファームウェアの1つ若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例では、例えばファームウェア実行時にCPUコアによって参照される、定数、パラメータ値、NVMデバイス情報の1つ若しくはそれ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージおよび0以上の(ファームウェア更新に対して)前のファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、汎用動作モード、標準動作モード、ONA動作モード、および/またはDNA動作モードを提供する。一部の実施形態では、ファームウェア動作モードのうちの1つ若しくはそれ以上が、ドライバによって任意選択で伝えられ、かつ/または提供される、鍵または様々なソフトウェア技法によって使用可能とされる(例えば、1つ若しくはそれ以上のAPIが「ロック解除」される)。
【0152】
スイッチ/ファブリック/中間コントローラを欠く一部の実施形態では、SSDは、外部インターフェース110を介して直接ホストに結合される。様々な実施形態では、SSDコントローラ100は、RAIDコントローラといった他のコントローラの1つ若しくはそれ以上の中間レベルを介してホストに結合される。一部の実施形態では、SSD101(またはその変形)は、SASドライブまたはSATAドライブに対応し、スイッチ/ファブリック/中間コントローラ103は、イニシエータにさらに結合されたエキスパンダに対応し、あるいは、スイッチ/ファブリック/中間コントローラ103は、エキスパンダを介してイニシエータに間接的に結合されたブリッジに対応する。一部の実施形態では、スイッチ/ファブリック/中間コントローラ103は、1つ若しくはそれ以上のPCIeスイッチおよび/またはファブリックを含む。
【0153】
様々な実施形態、例えば、コンピューティングホストとしてのホスト102(コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、および/またはネットブックコンピュータなど)を有する実施形態のあるものでは、コンピューティングホストは、任意選択で、1つ若しくはそれ以上のローカルサーバおよび/またはリモートサーバ(例えば、任意選択のサーバ118)と(例えば、任意選択の入出力装置/リソースおよび記憶装置/リソース117および任意選択のLAN/WAN119を介して)通信することができるようになっている。通信は、例えば、SSD101要素のうちの任意の1つ若しくはそれ以上のローカルおよび/またはリモートのアクセス、管理、および/または使用を可能にする。一部の実施形態では、通信は、全部または一部がイーサネット(登録商標)(Ethernet(登録商標))によるものである。一部の実施形態では、通信は、全部または一部がファイバチャネルによるものである。LAN/WAN119は、様々な実施形態では、1つ若しくはそれ以上のローカル・エリア・ネットワークおよび/または広域ネットワーク、例えば、サーバファーム内のネットワーク、サーバファームを結合するネットワーク、メトロエリアネットワーク、およびインターネットのうちの任意の1つ若しくはそれ以上を表す。
【0154】
様々な実施形態では、1つ若しくはそれ以上のNVMと組み合わされたSSDコントローラおよび/またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、USB記憶コンポーネント、CF記憶コンポーネント、MMC記憶コンポーネント、eMMC記憶コンポーネント、サンダーボルト記憶コンポーネント、UFS記憶コンポーネント、SD記憶コンポーネント、メモリスティック記憶コンポーネント、xDピクチャカード記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。
【0155】
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、コントローラが結合されるべきホスト(図1Bのホスト102など)において実施される。様々な実施形態では、SSDコントローラ(若しくはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、ハードウェア(論理回路など)、ソフトウェアおよび/若しくはファームウェア(ドライバソフトウェア若しくはSSD制御ファームウェアなど)、またはそれらの任意の組み合わせによって実施される。例えば、(例えば図1AのECC161および/またはECC−X135と同様の)ECC部の、またはECC部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はSSDコントローラ内のファームウェアとハードウェアとの組み合わせによって実施される。別の例として、(例えば図1Aのリサイクラ151と同様の)リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアによって実施される。
【0156】
様々な実施形態および/または使用シナリオにおいて、1若しくはそれ以上の管理機能が、NVMデバイス(たとえば、1若しくはそれ以上のフラッシュダイおよび/またはフラッシュチップ)に対して論理スライスおよび/または区画に従って実行される。管理機能は、読出し、リサイクル、消去、プログラミング/書込み、および他の管理機能のうちのいずれか1若しくはそれ以上を含む。論理スライスおよび/または区画はRブロックと称されることがある。
【0157】
Rブロックは、たとえば、フラッシュメモリの様々なダイにわたる論理スライスまたは区画(たとえば、すべてのダイ、全体若しくは部分的に故障したものを除くすべてのダイ、および/またはダイの1若しくはそれ以上の選択されるサブセット)として例示される。たとえば、各フラッシュダイがN個のブロックを有する、Rフラッシュダイを有するフラッシュメモリにおいて、各Rブロックは、合計でN個のRブロックについて、ともにとられるフラッシュダイの各々からi番目のブロックである。この例について続けると、Rフラッシュダイのうちの1つが故障する場合、各Rブロックは、合計でN−1個のRブロックについて、故障したフラッシュダイを除くフラッシュダイの各々からi番目のブロックである。別の例について、各々がN個のブロックを有する、Rフラッシュダイを有するフラッシュメモリにおいて、各Rブロックは、合計でN/2個のRブロックについて、フラッシュダイの各々からi番目および(i+1)番目のブロックである。さらに別の例について、複数のデュアル・プレーン・デバイスを有するフラッシュメモリにおいて、各Rブロックはデュアル・プレーン・デバイスの各々からi番目の偶数ブロックおよびi番目の奇数ブロックである。別の例について、各々がN個のブロックを有する、Rフラッシュダイを有するフラッシュメモリにおいて、各Rブロックは、合計でN/k個のRブロックについて、フラッシュダイの各々からi番目〜(i+k−1)番目のブロックである。
【0158】
ブロックが、Rブロックを形成する一部として、対で、又は他の関連付けられる群において取り扱われる様々な実施形態において、ブロックの関連付けられる群の各ブロックからの各ページもまた、少なくとも書き込むための単位として取り扱わされ、より大きな複数ブロックのページを形成する。例えば、上記の二重平面の例を続けると、偶数ブロックの特定のページの最初のページと、奇数ブロックの関連付けられるページの最初のページとが書き込むための単位として取り扱われ、読み出すための単位として任意選択的及び/又は選択的に取り扱われる。同様に、特定の偶数ブロックの第2のページと、関連付けられる奇数ブロックの第2のページとが単位として取り扱われる。様々な実施形態に従って、本明細書において使用されるようなNVMのページは、NVMの単一のページと、NVMの複数ブロックのページと、読み出すための1若しくはそれ以上の個々のページとして任意選択的及び/又は選択的に取り扱われる、書き込みのためのNVMの複数ブロックのページと、NVMのページに関するその他任意の分類又は関連性とのうちの1若しくはそれ以上を参照する。
【0159】
たとえいくつかのブロックが動作不能であったとしても、Rブロックが各ダイからの1つのブロックを有することを保証する仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングを含む、Rブロックとしての管理のためのフラッシュ・ダイ・ブロックの他の構成が企図される。様々な実施形態において、各フラッシュダイ内のN個のブロックのいくつかは予備として使用され、それによって、仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングは、Rブロック内のブロックの欠陥品と交換するための予備(そうでなければ使用されない)ブロックを有する。
【0160】
0/1バランス復元
図2A図2Dは、「0/1」バランス復元に関連するデバイス閾値電圧分布を図示する。この説明の目的で、各丘状突起は、NVMの読出し単位サイズの部分のそれぞれの状態のデバイス閾値電圧確率分布を表す独立したガウス様曲線の抽象化である。デバイス閾値電圧軸が、正電圧が右に向かって増大するように図示されている。絶対尺度は意図的に設けられておらず、基準点は示されておらず、それによって、このグラフはより一般的に、より大きい集団のNVMsに適用される。図2Aおよび2BはSLC固有であり、一方で図2Cおよび図2DはMLC固有である。
【0161】
最初の回(たとえば、対応するデータが書き込まれるとき)を表す図2Aにおいて、一番左の分布220は論理1を表し、一番右の分布230は論理0を表す。技術に応じて、一番左の分布は(少なくとも大部分が)負電圧にあり得る。読出し閾値210は理想的には、2つの分布の間におかれる。
【0162】
これらのデバイス閾値電圧分布から独立して、本明細書における実施形態によって連結されるものを除いて、一部の実施形態において、NVMは、記憶されている0および1の統計分布の特定の知識を書き込まれる。より詳細には、一部の実施形態において、様々な暗号化および/またはスクランブル技法が、0および1の統計分布が50−50パーセント(50パーセントの0および50パーセントの1)であるように使用される。理想的には図2Aの事例の状態である、公称読出し閾値を使用してSLCが読み出されるとき、0および1の観測される読出しデータ統計分布は同様に50−50パーセントである。統計分布が50−50パーセントであることは、いずれか1つのデータサンプルが、正確に均等なバランスの0ビットおよび1ビットを有することを意味するものではなく、むしろ、多くのサンプルにわたる平均が、サンプル数が増大するにつれて確率的限界が密になっていく、50−50パーセントに収束する0ビットと1ビットとの比を生成する。これは、nをコインを投げた回数とするとき、n/4によって近似される分散を有するガウス分布を生成する、コインを多くの回数投げたときの表および裏の分布に例えられる。たとえば、0ビットおよび1ビットの50−50パーセントの統計分布で読出し単位内に18,432ビットがある場合、0ビット(または1ビット)の数における分散は約4,608であり、標準偏差は約68である。68の標準偏差では、読出し単位における百万個のサンプル中1個未満が9,216の平均から外れた340(5標準偏差)を超える数の0ビットを有すると予測されることになる。
【0163】
後の回を表す図2Bにおいて、公称読出し閾値210は図2Aにあるものであり、2つのデバイス閾値電圧分布225および235は、図2Aにおけるそれらの先行するそれぞれの分布220および230に対してシフトされている。例示を目的として、2つの分布は両方とも均一に左に(より負の電圧に向かって)シフトされているものとして図示されている。より一般的に、2つの分布は、互いから独立して正または負の方向のいずれに移動することも可能にされることは理解されるべきである。
【0164】
図2Bを考慮して、SLCが再び公称読出し閾値210を使用して読み出されるとき、NVMから直接読み出される(たとえば、任意のエラー訂正前の)0および1の観測される統計分布は50−50パーセントにはならないと予測可能である。より詳細には、与えられている概念的例について、読出し閾値が、いくつかの0が誤って1と読み出されることになるようなものであるため、1が誤って過剰になると予測されることになる。
【0165】
実際には推定の方向は逆になる。すなわち、実際には、一般的にデバイス閾値電圧分布のそのようなシフトは分からず、または直接には知り得ない。一部の実施形態において、代わりに、NVMから読み出される0および1の(既知の記憶されている0および1の分布に対する)不均衡の観測が使用されて、デバイス閾値電圧分布のシフトの存在が推測される。さらに、これらの実施形態において、読出し閾値は、0/1バランスが復元されるまで必要に応じて、読出し閾値215に対して観測される不均衡(本明細書の他の箇所で詳述する)に少なくとも部分的に基づいて調整される。
【0166】
同様に、図2Cは初期デバイス閾値電圧分布による最初の回(対応するデータが書き込まれるときなど)を表し、一方で図2Dは、対応する後のデバイス閾値電圧分布による後の回を表す。より具体的には、それぞれ11、10、00、および10状態を表す選択されたグレー・コード・マッピングについて、デバイス閾値電圧分布251、261、271、および281(図2D)は、それらの先行するそれぞれのデバイス閾値電圧分布250、260、270、および280(図2C)に対してシフトされている。3つの公称(初期)読出し閾値、VREAD1240、VREAD2242、およびVREAD3244も図示されている。再び例示を目的として、図2Dにおいて4つの分布はすべて均一に左に(より負の電圧に向かって)シフトされているものとして図示されている。より一般的に、4つの分布は、互いから独立して正または負の方向のいずれに移動することも可能にされることは理解されるべきである。
【0167】
一部の実施形態において、様々なスクランブル技法が、4つの状態の統計分布が25−25−25−25パーセント(各状態において25パーセント)であるように使用される。図2Cの事例について理想的におかれている公称読出し閾値を使用してMLCが読み出されるとき、一部の実施形態において、4つの状態の統計分布は同様に25−25−25−25パーセントであるように構成可能である。(他の箇所で説明するように、0および1はコントローラによって直接観測可能であるが、4つすべての状態が必要に応じて推測可能である。)一部の実施形態において、NVMから読み出される(既知の記憶されている状態の分布に対する)不均衡(予測される25−25−25−25パーセントからの偏差)の観測が使用されて、デバイス閾値電圧分布のシフトの存在が推測される。その後、読出し閾値が(本明細書の他の箇所で詳述するように)図2Dに示すように調整されて、VREAD1265、VREAD2275、およびVREAD3285になる。一部の実施形態において、読出し閾値調整は、下位ページ読出し(VREAD2275の調整)および上位ページ読出し(VREAD1265および/またはVREAD3285)に対して別個に実行される。
【0168】
0/1バランス復元のための機能
図3は、選択された論理ブロック境界を描き直して特定の機能を強調している、図1Aおよび図1BのSSD101、SSDコントローラ100、およびNVM199の代替の図を提供する。最高レベルにあるSSD101は、外部インターフェース110、SSDコントローラ100、NVM199、およびデバイスインターフェース190を特徴とする。
【0169】
外部インターフェース110は、図1Bのホスト102のようなホストに結合されており、ホストをソースとする記憶関連のコマンドならびにデータ書込みおよびコントローラをソースとするデータ読出しを含み、図1Aの上記の説明において詳述したような、SATAのような高レベル記憶プロトコルをサポートする。デバイスインターフェース190は、図1Aの説明において詳述したような低レベルNVM I/Oトランザクションをサポートする。NVM199は、NVMアレイ332、プログラム可能読出し電圧回路334、制御/ステータスレジスタ336、およびI/O338を特徴とする。SSDコントローラ100は、ホストインターフェース111、スクランブラ310、ECC符号化器320、デバイス・インターフェース・ロジック191、不平衡検出器340、バッファ131、ECC復号器360、デスクランブラ370、およびバランス復元ロジック380を特徴とする。ホストインターフェース111は、前述のように外部インターフェース110を介してホストと結合し、書込みデータ306をスクランブラ310に提供し、バッファ131から読出しデータ351を受信する。
【0170】
書込み経路および機能は以下の通りである。スクランブラ310は書込みデータ306に対して、ECC符号化器320に対するスクランブル書込みデータ311を生成するように動作する。スクランブラ310は、書込みデータ306を可逆的に、スクランブル書込みデータ311が記憶されている状態の既知の統計分布を有するようにスクランブルする。スクランブルデータを含むブロックの一例は、スクランブル書込みデータ311を含むブロックである。たとえば、スクランブルデータを含むSLCブロックは、等しい数の「0」および「1」の値を含み、スクランブルデータを含む4LCブロックは、等しい数の「00」、「01」、「10」、および「11」状態を含む。一部の実施形態において、スクランブラ310は、暗号化の副産物としてデータをランダム化するAES符号化器などを介して暗号化を実行する。一部の実施形態において、スクランブラ310は、線形フィードバック・シフト・レジスタ(LFSR)を使用して、データをランダム化する(が、データセキュリティの意図は一切ない)。ECC符号化器320はスクランブル書込みデータ311を処理してさらなるECCビットを追加し、結果として、デバイスインターフェース190を介してNVM199に記憶するためにデバイスインターフェース191に提供されるECC符号化書込みデータ321をもたらす。
【0171】
基本読出し経路および機能は以下の通りである。未訂正およびスクランブル(生)読出しデータ359を含むNVMページがNVM199からデバイスインターフェース190を介して受信される。図3に関連して続けると、各読出し単位は公称的に、スクランブラ301によってスクランブルされたデータ、および、ECC符号化器320によって生成されたさらなるECCビットを含むが、これらは一般的に、NVM記憶および取り出し動作の結果として意図せず改変されている。読出し単位はバッファ131を介してECC復号器360に提供される。ECC復号器360は、含まれているさらなるECCビットを利用して読出し単位を処理して、任意の時点において、およびデータが最初にECC符号化されてからの時点において発生している場合がある任意のエラーを全般的に訂正し、結果として、デスクランブラ370に提供される訂正読出しデータ361がもたらされる。デスクランブラ370は訂正読出しデータ361に対して動作し、スクランブラ310によって実行されたスクランブルの逆を行って、読出しデータ351としてバッファ131を介してホストインターフェース111に提供される未スクランブル読出しデータ371をもたらす。
【0172】
読出し経路および機能は、さらに、不平衡検出器340およびバランス復元ロジック360を含む。不平衡検出器340は、NVMから受信される生読出しデータ359を監視し、状態の統計分布に関するデータを少なくとも一時的に維持する。バランス復元ロジック380は、デバイス・インターフェース・ロジック191およびNVM I/O338を介してNVM制御/ステータスレジスタ336と対話して、NVMプログラム可能読出し電圧回路334を介してNVM読出し閾値(NVMアレイ332を読み出すのに使用される)を選択的に調整する。NVM読出し閾値の一例は、図5Aおよび図5Bにおいて参照される現在の読出し閾値である。一部の実施形態において、NVM読出し閾値は制御/ステータスレジスタ336に書き込まれ、プログラム可能読出し電圧回路334を構成する。読出し閾値は、a)ECC復号器360によって検出される訂正不可能読出し362、およびb)不平衡検出器340によって検出される(状態の統計における)不平衡341に基づいて調整される。読出し単位はSLCおよびMLCの両方の実施形態において、バイナリデータである。0および1の不均衡はSLC事例においては(またはMLCがSLCであると考えられるように動作するときには)直接測定可能である。一部の実施形態において、MLCの2つを超える状態の不均衡が、データがどのようにNVM内に記憶されたかの知識に基づいて推測される。
【0173】
図3は、ホストが、NVM199に書き込まれ、NVM199から読み出されるデータのソースおよびシンクとして動作するコンテキストにおける0/1バランス復元のための機能を図示する。様々な実施形態(図1Aおよび図1Bによって図示するような)において、1若しくはそれ以上の他のエージェントがNVM199に書き込まれ、NVM199から読み出されるデータのソースおよびシンクとして動作する。他のエージェントの一例は、本明細書の他の箇所において説明するような、データをNVM199内のあるロケーションから別のロケーションへ移動する、図1Aのリサイクラ151である。
【0174】
様々な実施形態において、スクランブラ310、ECC符号化器320、ECC復号器360、およびデスクランブラ370のうちのいずれか1若しくはそれ以上と関連付けられた機能のいずれまたはすべての部分は、少なくとも部分的に、データ処理121およびECC161(両方とも図1A)の1若しくはそれ以上を使用して実装される。
【0175】
0/1バランス復元のための制御フロー
図4は、書込み関連の動作および読出し関連の動作に関する特定の詳細を提供する、図1A図1B、および図3のSSD一実施形態の選択された制御フロー詳細を図示する。書込み動作は動作410によって開始し、430を通じて継続する。戻り経路は明示的に描かれていないが、後続の書込み動作が動作410によって再び開始する。同様に、読出し動作が動作440によって開始して460を通じて継続し、条件付きで480を通じて継続する。戻り経路は明示的に描かれていないが、後続の読出し動作が動作440によって再び開始する。少なくとも最初の書込みが、同じロケーションに対する読出しに先行すると仮定される。それ以外で、検査におけるような意図されている事例を除いて、読出し動作および書込み動作は一般的に、同じまたは概して異なるロケーションについて、アプリケーションが命令を必要とするときに、独立して呼び出される。それにもかかわらず、ヒューリスティックな例において、最初の読出し動作440は概念的に、同じロケーションに対する最後の書込み動作430の直後に継続する。
【0176】
書込み関連動作をより詳細に考えると、NVMに書き込まれるべき元のデータは、暗号化またはLFSRの使用を介してなどで概して最初に動作410においてスクランブルされる。より具体的強調される場合を除いて、「スクランブル」という用語は、本明細書において使用される場合、結果として、NVM内に記憶されている様々な状態の中の既知の統計分布をもたらす任意の動作または選択を介した書き込まれるべき元のデータの動作を指す。スクランブル方法は暗号化およびLFSR技法を含む。(図3のスクランブラ310も参照されたい。)一部の暗号化実施形態において、スクランブルは、AES暗号化仕様の少なくとも1つのバージョンに従う。一部のLFSR実施形態において、スクランブルは、LFSRの少なくとも1つの選択に従う。一部の実施形態において、スクランブルは、(必ずしも暗号化またはLFSR処理を使用することなく)NVMに書き込まれるときに状態の選択された統計分布を提供する、1若しくはそれ以上のテストパターンの選択を介してより直接的に決定される。
【0177】
LFSRは、シフトレジスタの選択されたタップの線形関数から入力ビットを生成する組合せ論理フィードバックネットワークを有するハードウェア・シフト・レジスタまたはそのソフトウェアモデルである。LFSRは、決定論的疑似ランダムシーケンスを生成する。少なくとも概念的に、LFSR生成疑似ランダムシーケンスは、スクランブルデータを提供するために元のデータにモジュロ2加算される。
【0178】
その後、スクランブルデータは、動作420に図示するように、次に任意選択的にECC符号化される。(図3のECC符号化器320も参照されたい。)ECC符号化は、NVMを使用するときに様々な理由で発生するエラーに直面したときにデータ回復を(エラー訂正を介して)可能にする重複情報を提供する。そのようなエラーはより広く起こりやすく、したがって、MLCメモリのより小さい形状寸法、より多い使用、より長い年数、より大きい温度逸脱、および使用のうちの1若しくはそれ以上で、ECC符号化がより望ましい。
【0179】
スクランブルされ任意選択的にECC符号化されたデータはその後、書込み関連動作の最後である動作430に示すようにNVMに書き込まれる。書き込まれている状態の分布がスクランブルの結果として分かっている。SLCメモリおよびAES暗号化を使用する事例において、0−1分布は50−50(すなわち50パーセントの0および50パーセントの1)であることが分かっている。4LC(4レベルMLC)メモリおよびAES暗号化を使用する事例において、下位ページおよび上位ページの両方の書込み後の分布は25−25−25−25(すなわち、4つの状態の各々において25パーセント)であることが分かっている。
【0180】
一部の実施形態において、少なくとも1つの基準領域が上述のような1若しくはそれ以上のテストパターンの使用専用にされる。一部の実施形態において、基準領域のロケーションは、様々なNVM書込み/読出しアーティファクトのテストパターンに対する影響を最小限に抑える(または逆に、最大限にする)ように選択される。一部の実施形態において、基準領域は基準ページであり、そのロケーションは、書き込まれているデータに対する書込みディスターブの影響を最小限に抑えるように、ブロック内に書き込みされる最後のページになるように選択される。電圧分布に影響を与える現象の一部としては時間および/または温度の変動があり、基準領域は0/1不均衡に対するこれらの影響の既知の測度としての役割を果たす。
【0181】
動作440において開始する読出し動作をより詳細に考えると、1若しくはそれ以上の読出し単位がNVMから読み出され、状態の分布がキャプチャされる。一部の実施形態において、0カウントおよび1カウントの各々が直接求められる。次に、動作450において、元のデータを回復する試行が行われる。これは、書込みの前に実行されたデータ動作が何であろうと、その逆を実行する。ECC符号化が書込みの前に任意選択的に追加されており、したがって、読出し単位は次に任意選択的にECC復号を受ける。(図3のECC復号器360も参照されたい。)読出し単位ごとに、ECC復号が成功した場合、次に必要に応じてデスクランブルが実行される。たとえば、AES暗号化が書込みの前に使用された場合、AES解読が実行される。または、LFSR生成疑似ランダムシーケンスが使用された場合、同じシーケンスが読出し単位からのECC復号データにモジュロ2加算される。
【0182】
読出し関連動作は、エラーがないかまたはECC復号を介して訂正可能であるエラーについて、元のデータが回復可能であるときは早期に終了する。決定460からの「いいえ」経路を参照されたい。しかしながら、読出し単位のいずれかに訂正不可能エラーがあると、動作470および動作480も実行される。決定460からの「はい」経路を参照されたい。動作470において、状態の分布の不均衡が評価される。(図3の不平衡検出器340も参照されたい。)一部の実施形態において、求められる不均衡は、0カウントと1カウントとの間の求められる差である。様々な実施形態において、求められる不均衡は、たとえ訂正不可能(たとえば、ハード判定復号)エラーを有する読出し単位がすべてに満たなくても、すべての読出し単位にわたって計算される。
【0183】
次に、動作480において、少なくとも1つの読出し閾値の調整された値(閾値シフトとも称される)が、求められた不均衡の大きさに少なくとも部分的に基づいて決定される。一部の実施形態において、求められた不均衡の大きさが所定の許容誤差を下回る場合、読出し閾値は調製されない。一部の実施形態において、多因子「訂正アルゴリズム」が調整読出し閾値を決定するために採用され、求められた不均衡の大きさもその1つの因子に過ぎない。
【0184】
一部の実施形態において、訂正アルゴリズムは、読出し閾値の置換値を選択するのに使用されるルックアップテーブルの形態をとる。求められた不均衡の大きさは、ルックアップテーブル内のインデックスの少なくとも一部のための基礎である。一部の実施形態において、ルックアップテーブルは、使用されているNVMの特定の供給元に基づいて予め特性化(重み付け)されている。いくつかの実施形態において、インデックスは、プログラム/消去サイクル、年数、保持時間(最後の書込みからの時間)、温度、および、NVMのデバイス閾値電圧分布のドリフトまたはそれに対する擾乱に関連し得る任意の他の因子のうちの1若しくはそれ以上を含む、追加の構成要素を有する。(図3のバランス復元ロジック380も参照されたい。)
ここで、および詳細な説明全体を通じて、一般的に使用されているフラッシュメモリのマイクロアーキテクチャにおいて、動作の粒度は異なり、たとえば、読出し単位は読出しの最小サイズであり、ページは書込み(たとえば、プログラミング)の最小サイズであり、ブロックは消去の最小サイズであることを想起されたい。各ブロックは、対応する複数のページを含み、各ページは対応する複数の読出し単位を含む。様々な実施形態において、SSDコントローラは、1若しくはそれ以上の読出し単位、1若しくはそれ以上のページ、および1若しくはそれ以上のブロックのうちのいずれか1若しくはそれ以上に対応する量において1若しくはそれ以上のフラッシュメモリから読出し、および/またはフラッシュメモリに対して書き込む。
【0185】
一部の実施形態において、不均衡はページ全体をベースに評価される。一部の実施形態において、不均衡は読出し単位をベースに評価される。読出しにおける訂正不可能(たとえば、ハード判定復号)エラーに関連して実行される不均衡評価は、その同じロケーションを含んでいた最近の書込みにおいて書き込まれたものと同じ(ページ、または読出し単位)ロケーションに対して実行される。
【0186】
リテンションドリフト履歴の監視を介した最適な読出し閾値の予測
図4によって表される実施形態は、訂正不可能(たとえば、ハード判定復号)エラーに応答して少なくとも1つの読出し閾値を調整する。図5A図5B図5C、および図6によって表される実施形態は、製造特性、初期仕様、タイマ(たとえば、定期的、不規則、またはランダム)、閾値を上回るビット・エラー・レート、および訂正不可能(たとえば、ハード判定復号)エラーのうちのいずれか1若しくはそれ以上に応答して少なくとも1つの読出し閾値を調整する。図5A図5B図5C、および図6によって表される様々な実施形態は、NVMのブロックがグループで管理され、特定のグループのブロックのすべての少なくとも1つの読出し閾値の調整が特定のグループのブロックのサンプリングの部分的な読出しに基づくコンテキストにおいて操作される。たとえば、部分的な読出しの少なくともいくつかが条件を満たす場合、特定の管理されているグループのすべてのブロックについて読出し閾値が調整される。様々な実施形態において、調整は、リテンションドリフトクロック(リテンションドリフトトラッキング)技法による。一部の実施形態において、図4によって表される技法は、図5A図5B図5C、および図6によって表される技法とともに使用される。
【0187】
図5Aは、(たとえば、SSDの)NVMに対する読出し閾値を最適化する実施形態の選択された詳細の流れ図を図示する。様々な実施形態において、NVMには、NVMの製造者によって指定され、製造者によって正確に機能することを保証されたデフォルトの動作読出し閾値が設けられる。NVMの読出し単位の読出しは、現在の読出し閾値に従って実行される。最初に、動作510において、現在の読出し閾値がデフォルトの動作読出し閾値に設定される。一部の実施形態において、デフォルトの動作読出し閾値は制御/ステータスレジスタ336に書き込まれ、図3のプログラム可能読出し電圧回路334を構成する。
【0188】
動作520において、NVMの読出しが現在の読出し閾値に従って実行される。概念的に動作520の読出しと並行して、コントローラは、リテンションドリフトトラッキング590に関連する様々な活動をも実行し、これらはともに、ハード読出しエラーが相対的に起こりにくくなるように、最適な読出し閾値電圧を予測する目標を有する。一部の実施形態および/または使用シナリオにおいて、リテンションドリフトトラッキングは、ハード(ECC訂正不可能)読出しエラーの低減または回避を可能にする。基準セル書込み501、実際の新規の最適な読出し閾値の決定502、およびリテンションドリフト履歴の初期化503を介してリテンションドリフトトラッキングが初期化される。その後、リテンションドリフトトラッキングが動作530において新規の動作読出し閾値で現在の読出し閾値を更新することが可能になり、これは、性能、電力消費、および信頼性のうちの1若しくはそれ以上を改善するように最適化される。一部の実施形態において動作520は、動作503においてリテンションドリフト履歴が初期化される前にデータ読出しを実施するが、一部の実施形態において、動作530は動作520においてデータが最初に読み出される前に行われることを可能にされることが留意されるべきである。
【0189】
リテンションドリフトトラッキング590の機能全体は、クロック発生器がタイミング信号を導出するための基準または標準を提供するのとおおよそ同様に、時間および温度にわたる読出し閾値電圧(Vth)の標準または基準(および時間および温度にわたるリテンションドリフトの測度)として機能する「リテンションドリフトクロック」とも称される。この例えを延長して、電圧ドリフト基準の1つ(SLCメモリ)若しくはそれ以上(MLCメモリ)の最適な読出し閾値電圧の各決定されたセットは、本明細書において、各々リテンションドリフト履歴内のエントリに対応する「タイムスタンプ」と称される。一部の実施形態において、リテンションドリフト履歴内のタイムスタンプエントリは、時間の表現(システム事象に対するオフセットカウンタ、または実際のタイムクロックから導出される値)をも含むことになるが、より一般的には、一部の実施形態において、リテンションドリフト履歴内のタイムスタンプエントリは、時間の表現を含まない。
【0190】
動作530において、後述するように、リテンションドリフト履歴によって決定されるリテンションドリフトの量に少なくとも部分的に従って、現在の読出し閾値が更新される。一部の実施形態において、現在の読出し閾値の更新は、1時間に1回など、時間的に定期的に実行される。一部の実施形態において、たとえば、現在の読出し閾値の更新は、下記により詳細に説明するように、タイマT1 550およびT2 551のうちの1若しくはそれ以上に従って、小規模リテンションドリフト更新540を介して実行される。一部の実施形態において、現在の読出し閾値の更新は、100Kの読出しごとに1回など、読出し回数において定期的に実行される。この更新は、リテンションドリフト履歴を考慮した領域(Rブロックなど)の新規の基準タイムスタンプ(たとえば、動作566において決定される、下記により詳細に説明する)の評価(たとえば、下記により詳細に説明する動作555において、一部の実施形態において単純に比較することによる)を有する(たとえば、動作566の後の、下記により詳細に説明する、動作567によって更新される基準タイムスタンプの編集/記録)。一部の実施形態において、対応する領域がプログラムされているか否かにかかわらず、新規の領域固有の基準タイムスタンプが記録される。一部の実施形態において、領域の現在の読出し閾値が、(何らかの理由で)領域の新規の基準タイムスタンプが記録されているか否かにかかわらず、(たとえば、動作530において、動作555に従って)調製される。
【0191】
動作501において書き込まれた基準セル(電圧ドリフト基準とも称される)は、所定の基準に従って選択されたセルの集合であり、実施形態に従って、図1Aのフラッシュダイ194の1若しくはそれ以上の上の、1若しくはそれ以上のページ、1若しくはそれ以上のブロック、または1若しくはそれ以上の他のダイ部分を含む。一部の実施形態において、セル間干渉(inter−cell interference:ICI)に対処するように少なくとも2つのページが基準セルに使用される。一部の実施形態において、基準ページは、通常使用(非基準セル)データの整合を可能にされた統計分布を有するパターンでプログラムされる。一部の実施形態において、統計分布はランダムである。一部の実施形態において、SLC(または下位ページ)データとMLC(または上位ページ)データとに別個の基準ページが維持されて、下位ページおよび上位ページから予測される異なるドリフトが対処される。いくつかの実施形態において、ダイ内のブロック間の変動、および/またはダイ間の変動に対処するために、異なるロケーションおよび/または異なるダイにある複数のブロックが基準セルに使用され(基準セルは意図的にそのように分散されている)、平均化が採用されて変動が緩和される。実施形態によれば、基準セルのP/Eサイクルまたは摩耗を、全体としてのドライブの平均P/Eサイクルまたは摩耗の相対的に近くにリテンションするために、基準セルは、一定期間、たとえば、3ヶ月後、および/または一定数のグローバルP/Eサイクル、たとえば、200サイクルのような、所定の基準に従って、通常使用(非基準)セルの少なくとも1つの他の対応する集合において「回転」(集合によって変更)される。
【0192】
動作502における(動作566においても実行される)実際の新規の最適な読出し閾値の決定(電圧ドリフト基準タイムスタンプのサンプリングとも称される)は、本明細書の他の箇所で説明されるような、0−1バランス/不均衡の経験的評価のような、所定の方法に従って実行される。決定された実際の最適な読出し閾値(サンプリングタイムスタンプとも称される)は、初期プログラミング中のセル間干渉、デバイスのP/Eサイクル、読出しディスターブ、ならびに、経過時間および温度逸脱に起因するリテンションドリフトを含む様々な理由で、意図された/公称的にプログラムされた読出し閾値と異なる場合がある。実際の新規の最適な読出し閾値が決定されると、それらはリテンションドリフト履歴内の第1のエントリとしてログ記録される。(言い換えると、電圧ドリフト基準のサンプリングタイムスタンプがリテンションドリフト履歴内に記録される。)エントリごとに記憶される読出し閾値の数は、不揮発性メモリのレベル数の関数である。実施形態によれば、たとえば、SLCメモリについては1つの読出し閾値のみが記憶され、一方で4LCメモリについては3つの読出し閾値が記憶される。リテンションドリフト履歴は、(リテンションドリフト履歴)ログ、ストア、バッファ、またはキャッシュと様々に称される(その中に記憶される)。実施形態によれば、図1Aのバッファ131の一部分および/または図1Aのフラッシュダイ194のうちの1若しくはそれ以上の一部分が、リテンションドリフト履歴の記憶および/または更新に使用される。分かるように、リテンションドリフト履歴を使用することによって、読出し閾値が、電源オフの時間、ストレージの温度などの要因を含め、時間および温度について自動的に補償されることが可能になる。
【0193】
一部の実施形態において、新規の動作読出し閾値は制御/ステータスレジスタ336に書き込まれ、図3のプログラム可能読出し電圧回路334を構成する。様々な実施形態において、読出しの後、新規の動作読出し閾値に更新された現在の読出し閾値に従って、動作530によるリテンションドリフトトラッキングの更新が実行される。リテンションドリフトトラッキングは概念的に、少なくとも一部の実施形態において、動作520におけるNVMの読出しが、動作590におけるNVMの読出しまたは書込みが動作520におけるNVMの読出しと同時に実行されることが阻害されるように実行されるという点において、読出しと並行して動作するものとして説明される。たとえば、動作520におけるNVMの読出しは、動作590におけるNVMの読出しまたは書込みよりも高い優先度で実行される。別の例について、動作590におけるNVMの読出しは、NVMが他の様態でアイドルであるときのように、バックグラウンドで実行される。
【0194】
様々な実施形態において、SSDは現在の読出し閾値を定期的に再評価する。第1のタイマ(T1)および第2のタイマ(T2)は、それぞれ決定550および決定551において、最後に小規模および大規模リテンションドリフト更新が実行されてから経過した時間をトラッキングする。T1タイマが満了する(が、T2は満了しない)とき、小規模リテンションドリフト更新が実行される。T2タイマが満了するとき、大規模リテンションドリフト更新560が実行され、その後、小規模リテンションドリフト更新540が実行される。様々な実施形態において、タイマは、ソフトウェア、ファームウェア、およびハードウェアのいずれか1若しくはそれ以上を通じて構成可能である。一部の実施形態において、第1のタイマ(T1)は6〜24時間に構成され、一方で第2のタイマ(T2)は1週間または2週間以上に構成可能である。
【0195】
一部の実施形態において、小規模および大規模リテンションドリフト更新は組み合わされ、第1のタイマ(T1)のみが使用される。より詳細には、そのような第1のタイマのみの実施形態において、決定550によって「はい」の結果であると、制御は直接動作560に流れる。第1のタイマ(T1)は、たとえば、1日に1回、1週間に1回、または1ヶ月に1回切れるように構成される。より一般的に、実施形態によれば、実際の新規の最適な読出し閾値が決定される頻度は、NVMのタイプおよびその特性、読出し閾値の変化の割合の履歴、温度センサなどからの温度、デバイスが動作している実行サイクルなどからの経過時間、電源投入するごとに1度、リセットするごとに1度、スリープからウェークアップするごとに1度、および他の要因のうちの1若しくはそれ以上に従って選択される。一部の実施形態において、ブロックが書き込まれた所定の間隔内にブロックが読み出されなかったと決定されると、ブロックが読み出される前に小規模および/または大規模リテンションドリフト更新が強制的に実行される。
【0196】
図5Bおよび図5Cはそれぞれ、リテンションドリフトトラッキング500の構成要素である、小規模リテンションドリフト更新540および大規模リテンションドリフト更新560の実施形態の選択された詳細の流れ図を図示する。図5Bにおいて、小規模リテンションドリフト更新540は、任意選択の選択リテンションドリフトプレディクタ/方式553、リテンションドリフト履歴の読出し554、およびリテンションドリフト履歴に基づく新規の最適な読出し閾値の予測555を含む。そのような小規模リテンションドリフト更新において、新規の最適な読出し閾値電圧に関して予測される値は、実施形態に従って1若しくはそれ以上のプレディクタ(方式、またはアルゴリズム)を使用して既存のリテンションドリフト履歴データに対する操作に基づいて決定され、大規模リテンションドリフト更新に関連付けられる、より時間のかかる経験的評価(1若しくはそれ以上のテスト読出し閾値電圧の変更およびその電圧におけるテストを含む)は避ける。
【0197】
実施形態によれば、リテンションドリフトプレディクタ/方式は、固定であるか、複数の中から特定のプレディクタ/方式にプログラム可能であるか、または、所定の基準に従って動的に選択され得る。第1のプレディクタ方式は、1対1関数を含み、通常使用(非基準)セルが基準セルに対して理想的に振る舞うものと予測される。第2のプレディクタ方式は、時間ベースの関数を含み、基準セルから得られる読出し閾値が、基準セルが最後に書き込まれてからのリテンションドリフト履歴および経過時間を考慮して改変される。第3のプレディクタ方式は、補償関数を含み、基準セルから得られる読出し閾値が、時間および/または摩耗依存である差を含む、通常使用セルと基準セルとの間の差を計上する特性化データを考慮して改変される。特定の例として、補償プレディクタは、通常使用セルが基準セルと比較して異なるリテンションドリフトを呈するという決定に基づいて補償することを可能にされる。一部の実施形態において、基準セルと通常使用セルとの間の変動は時間および/若しくは摩耗とともにより明白になり、かつ/またはドリフトはより線形的な領域およびあまり線形的でない領域を有し、補償プレディクタはそれに応じてすべてのこれらのシナリオを補償する。プレディクタ方式は一般的に組合せ可能でもある。すなわち、単一のプレディクタモジュールが1若しくはそれ以上のプレディクタ方式を実行することを可能にされる。実施形態によれば、プレディクタによって適用される補償は、時間変数を有する線形関数、時間変数を有しない線形関数、単位元関数、時間変数を有する非線形関数、および時間変数を有しない非線形関数を含む。分散基準セルを有する一部の実施形態において、プレディクタ(複数の場合もあり)は付加的に、分散基準セルブロックの間の平均化を実行する。
【0198】
図5Cにおいて、大規模リテンションドリフト更新560は、任意選択のエポックの実施570、実際の新規の最適な読出し閾値の決定566、およびリテンションドリフト履歴の更新567を含む。動作566の実際の新規の最適な読出し閾値の決定は、一般的に、前述のような動作502において使用される方法と同じ方法を使用して、所定の方法に従って実行される。実際の新規の最適な読出し閾値が決定されると、それらは動作567においてリテンションドリフト履歴内に追加される。
【0199】
一部の実施形態において、十分な時間の後、および/または十分な熱露出と組み合わせて、基準セル内の読出し閾値が(実施形態によって変化する基準に基づいて)所望されるよりもドリフトしており、リセット(再初期化、すなわち、再書込み)すべきか否かについて決定が行われる。たとえば、いくつかのNVMタイプにおいて、読出し閾値ドリフトは、基準読出し閾値レベルを測定するのに使用されるページが、いくらかの時間経過および/または温度逸脱の後に(すべての電荷がドリフト拡散してしまうことなどによって)使用不可能になり得るようなものである。一部の実施形態において、基準セルは、一般的に電圧ドリフトの(時間および/または温度に関して)相対的に線形の領域において基準セルをサンプリングし続けるように、および、ドリフトの(時間および/または温度に関して)相対的により非線形的な領域における基準セルのサンプリングを回避するように、中程度のみの、たとえば、0.3Vのドリフトの後に再初期化される。
【0200】
そのような基準セルリセット事象は、新規の生成またはエポックを定義するとみなされる。任意選択のエポックの実施570は、リテンションドリフト履歴の精査562、その後の、制御フローを分岐する「エポックを終了すべきか?」の決定563を含む。「いいえ(現在のエポックを継続する)」と決定されると、制御フローは動作566(前述)に直接進む。そうではなく、「はい(新規のエポックを開始する)」と決定されると、基準セル書込み動作564およびリテンションドリフト履歴の新規エポックの書留め動作565が、動作566に進む前に実施される。新規エポックを(リテンションドリフト履歴のエポック・カウント・フィールドを増分することなどによって)書き留めることによって、エポックが変化する前のリテンションドリフト履歴が引き続き有用なデータ点に寄与し(および、より完全な履歴観を提供し)、少なくともたとえば、プレディクタが、リテンションドリフトの現在の変化の割合の評価におけるより正確な「曲線適合」を行うことを可能にする。
【0201】
一部の実施形態において、エポックの実施は、エポック(生成)番号(最上位ビット内)および現在の基準読出し閾値レベル(最下位ビット内)の連結によるものである。さらなる実施形態において、基準読出し閾値レベルがマッピングテーブルなどによってマッピングされて、リテンションドリフトが(時間/温度にわたるドリフトの性質/レートの特性化された知識に基づいて)直線化される。エポック番号が、一連の基準ページが使用されることを可能にし、および/または、同じ基準ページ(複数の場合もあり)が再プログラミングされることを可能に(して、それらをVth0とも称される初期読出し閾値に近い値に戻すことを可能に)する。これによって、基準ドリフトクロックが任意の範囲を有し、最適におよび/または選択的に単独で読出し閾値ドリフトのより線形的な領域を使用することが可能になる。
【0202】
各新規ブロックがプログラムされると(または一部の実施形態においては各新規Rブロック)、新規ブロックが基準ドリフトトラッキングによって予測される現在の読出し閾値(複数の場合もあり)を割り当てられる。(書込みデータがRブロックにわたってストライプされている様々な実施形態において、Rブロック内のすべてのブロックは一般的に、基準ドリフトクロックに対して同時に書き込まれ、Rブロックごとに基準ドリフトトラッキングを実行することは、ブロックごとに基準ドリフトトラッキングを実行するよりも消費するスペースがかなり少ない。)
別のプレディクタ例として、一部の実施形態において、ブロック内の(またはRブロック内の)ページが後に読み出されるとき、その読出しの更新された公称/現在の読出し閾値は、少なくとも部分的に、(ブロックが最後に書き込まれた時点における)ブロックのタイムスタンプおよび基準ドリフトクロックの現在の(最新にサンプリングされた)タイムスタンプの関数(たとえば、それらの間の差、および/または他のファクタ)として決定される。(一部の実施形態において、経過した「時間」が短いと決定されると、公称読出し閾値が読出しに使用され、読出し閾値は調整されない。)このように、基準ドリフトトラッキング(基準ドリフトクロック)を使用することによって、公称読出し閾値は適切に時間/温度ドリフトを補償される。
【0203】
リテンションドリフトトラッキングは、デバイス閾値電圧分布が(たとえば、経年劣化および/または熱露出に起因して)シフトするときに現在の読出し閾値を調整することによって、ブロックの管理されたグループ内の読出しエラーの数を低減する。エラーの数を低減することによって、性能が改善し、電力消費が低減し、および/またはNVMの寿命が改善する。一部の実施形態において、リテンションドリフトトラッキングは、全体的に、および/または、SSD、SSD内で使用されるNVMの任意の部分、若しくは任意のコンテキストにおいて使用されるNVMの任意の部分がアイドルであるときに増分的に実行されて、リテンションドリフトトラッキング以外の動作(たとえば、ホストからのアクセス、リサイクル、および/またはマップ管理)に対する影響を低減する。
【0204】
新規の動作読出し閾値が計算されると、動作530において、代表的なブロックにおいて現在の読出し閾値が読出し単位の新規の動作読出し閾値に更新される。一部の実施形態において、ブロックの管理されたグループ内の他の(たとえば、代表的なブロック以外の)ブロックの現在の読出し閾値も、計算された新規の動作読出し閾値に更新される。様々な実施形態において、リテンションドリフトトラッキングによる処理のために複数の代表的なブロックがセットとして選択され、新規の動作読出し閾値がそのセットについて平均化されて、ブロックの管理されたグループ内のブロック間の変動が低減される。
【0205】
様々な実施形態において、図5A図5B、および図5Cに図示する1若しくはそれ以上の動作(またはその一部)は、SSDコントローラ(図1AのSSDコントローラ100など)またはその要素によって実行および/または管理される。たとえば、一部の実施形態において、図5A図5B、および図5Cに図示する1若しくはそれ以上の動作は、図1AのCPUコア172によって実行されるファームウェアによって実施および/または管理される。様々な実施形態において、図5A図5B、および図5Cに図示する1若しくはそれ以上の動作(またはその一部)は、図3に図示するいずれか1若しくはそれ以上の要素によって実行および/または管理される。たとえば、一部の実施形態において、実際の新規の最適読出し閾値の決定(たとえば、動作566の一部の実施形態によって実行される)は、少なくとも部分的に、図3のバランス復元ロジック380によって実行される。
【0206】
図6A図6Cは、4LCメモリにおけるデバイス閾値電圧分布を概念的に図示する。この説明の目的で、図2A図2Dにおけるように、各丘状突起は、NVMの読出し単位サイズの部分のそれぞれの状態のデバイス閾値電圧確率分布を表す独立したガウス様曲線の抽象化である。デバイス閾値電圧軸が、正電圧が右に向かって増大するように図示されている。絶対尺度は意図的に設けられておらず、基準点は示されておらず、それによって、このグラフはより一般的に、より大きい集団のNVMsに適用される。図6Aは、セルあたり2ビットを記憶する4LCメモリを概念的に図示する。4つのデバイス閾値電圧分布(E 600、D1 601、D2 602、およびD3 603)があり、デバイス閾値電圧分布を表す3つの電流読出し閾値(VOLD1610、VOLD2611、およびVOLD3612) が種々の状態に対応している。
【0207】
図6Bは、デバイス閾値電圧分布がシフトした4LCを概念的に図示する。4つの新規のデバイス閾値電圧分布(E'620、D1'621、D2'622、およびD3'623)がある。3つの現在の読出し閾値はもはや新規のデバイス閾値電圧分布を明確に分離していないことに留意されたい。たとえば、D2'622のいくらかの部分はVOLD3612の右にあり、正確に識別されないことになる。
【0208】
図6Cは、デバイス閾値電圧分布がシフトした4LC内の新規の動作読出し閾値を概念的に図示する。新規の動作読出し閾値VNEW1650、VNEW2651、およびVNEW3652は、リテンションドリフトトラッキングによって計算される。現在の読出し閾値(VOLD1、VOLD2、およびVOLD3)とは対照的に、新規の動作読出し閾値(VNEW1、VNEW2、およびVNEW3) は、新規のデバイス閾値電圧分布を明確に分離し、したがって、ビットエラーおよび/または訂正不可能(たとえば、ハード判定復号)エラーの可能性を低減することに留意されたい。様々な実施形態において、図6Cは、現在の読出し閾値の更新530からの新規の動作読出し閾値を概念的に図示する。
【0209】
実施技法の例
一部の実施形態では、例えば、フラッシュメモリを備え、最適化された読出し閾値を利用するSSD、コンピューティングホスト・フラッシュ・メモリ・コントローラ、および/またはSSDコントローラ(例えば図1AのSSDコントローラ100)、ならびにプロセッサ、マイクロプロセッサ、システム・オン・チップ、特定用途向け集積回路、ハードウェアアクセラレータ、または前述の動作の全部または部分を提供する他の回路をを実装するシステムによって行われる動作の全部またはいずれかの部分の様々な組み合わせが、コンピュータシステムによる処理と適合する仕様によって指定される。仕様は、様々な記述、例えば、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述に従ったものである。記述の例には、Verilog、VHDL、SPICE、SPICEの変形、例えば、PSpice、IBIS、LEF、DEF、GDS−II、OASIS、または他の記述が含まれる。様々な実施形態では、処理は、1つ若しくはそれ以上の集積回路上に含めるのに適する論理および/または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技法に従って設計することができ、かつ/または製造することができる。技法には、プログラマブルな技法(例えば、フィールド若しくはマスク・プログラマブル・ゲート・アレイ集積回路)、セミカスタムの技法(例えば、全部若しくは一部がセルベースの集積回路)、およびフルカスタムの技法(例えば、実質的に専門化された集積回路)、それらの任意の組み合わせ、または集積回路の設計および/若しくは製造と適合する任意の他の技法が含まれる。
【0210】
一部の実施形態では、命令のセットを記憶しているコンピュータ可読媒体によって記述される動作の全部または部分の様々な組み合わせが、1つ若しくはそれ以上のプログラム命令の実行および/若しくは解釈によって、1つ若しくはそれ以上のソースおよび/若しくはスクリプト言語命令文の解釈および/若しくはコンパイルによって、または、プログラミングおよび/若しくはスクリプティング言語命令文で表現された情報をコンパイルし、変換し、かつ/または解釈することによって生成されるバイナリ命令の実行によって実行される。命令文は任意の標準のプログラミングまたはスクリプティング言語(例えば、C、C++、Fortran、Pascal、Ada、Java(登録商標)、VBscript、Shell)と適合する。プログラム命令、言語命令文、またはバイナリ命令のうちの1つ若しくはそれ以上が、任意選択で、1つ若しくはそれ以上のコンピュータ可読記憶媒体要素上に記憶される。様々な実施形態では、プログラム命令の一部、全部、または様々な部分が、1つ若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
【0211】
結論
ある特定の選択が、説明において、テキストおよび図面を作成するに際の単なる便宜のためになされており、別の指示がない限り、それらの選択は、それ自体で、前述の実施形態の構造または動作に関する追加情報を伝えるものと解釈すべきではない。選択の例には、図の符番に使用される呼称の特定の編成または割り当て、および実施形態の特徴および要素を識別し、参照するのに使用される要素識別子(コールアウトや数値識別子など)の特定の編成または割り当てが含まれる。
【0212】
「comprises」、「comprising」、「includes」または「including」という用語は、開放型(非制限的な)範囲の論理集合を記載する抽象概念として解釈されるべきことが明確に意図されており、さらに、後に「within」という用語が明示されない限り物理的制約を意味するものではない。
【0213】
前述の実施形態は、説明および理解の明確さのためにある程度詳細に説明されているが、本発明は提示した詳細だけに限定されるものではない。本発明の多くの実施形態がある。開示の実施形態は例示であり、限定ではない。
【0214】
説明と整合性を有する、構成、配置、および使用における多くの変形が可能であり、それらの変形は、発行される特許の特許請求の範囲内にあることが理解されるであろう。例えば、相互接続および機能ユニットのビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に従って変わりうる。相互接続および論理に与えられた名称は、単なる例であり、説明した概念を限定するものと解釈すべきではない。フローチャートおよび流れ図のプロセス、動作、および機能要素の順序および配置は、様々な実施形態に従って変わりうる。また、特に別に指定しない限り、指定される値範囲、使用される最大値および最小値、または他の特定の仕様(例えば、フラッシュメモリ技術の種類、レジスタおよびバッファ内のエントリまたは段の数)は、単に前述の実施形態のものにすぎず、実施技術の改善および変更を追跡することが見込まれるものであり、限定として解釈すべきではない。
【0215】
当分野で公知の機能的に等価の技法を、様々なコンポーネント、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実施するのに、前述の技法の代わりに用いることができる。また、実施形態の多くの機能的態様を、より高速な処理(以前にハードウェアにあった機能のソフトウェアへの移行を円滑化する)およびより高い集積密度(以前にソフトウェアにあった機能のハードウェアへの移行を円滑化する)の実施形態に依存する設計制約条件および技術傾向に応じて、選択的に、ハードウェア(例えば、専用の回路など)で、またはソフトウェアで(例えば、プログラムされたコントローラ若しくはプロセッサのある方式によって)実現できることも理解される。様々な実施形態の具体的な変形は、これに限定されるものではないが、分割の違い、フォームファクタおよび構成の違い、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、本明細書で説明した概念を、特定の用途の固有の技術的業務的制約条件に従って実施するときに予期されるべき他の変形を含む。
【0216】
各実施形態は、前述の各実施形態の多くの態様の最小限の実施に必要とされるものを大きく超えた詳細および環境的コンテキストと共に説明されている。一部の実施形態は、残りの要素間での基本的協働を変更せずに開示の構成要素または機能を割愛することを当業者は理解するであろう。よって、開示の詳細の多くが前述の実施形態の様々な態様を実施するのに必要ではないことが理解される。残りの要素が先行技術と区別できる範囲内で、割愛される構成要素および特徴は本明細書で説明した概念を限定するものではない。
【0217】
設計におけるすべてのそのような変形は、前述の実施形態によって伝えられる教示に対する実質的な変更ではない。また、本明細書で説明した実施形態は、他のコンピューティング用途およびネットワーキング用途に幅広い適用性を有し、前述の実施形態の特定の用途または産業だけに限定されるものではないことも理解される。よって本発明は、発行される特許の特許請求の範囲内に包含されるあらゆる可能な改変形態および変形形態を含むものと解釈すべきである。
図1A
図1B
図2A
図2B
図2C
図2D
図3
図4
図5A
図5B
図5C
図6A
図6B
図6C