(57)【特許請求の範囲】
【請求項１】
エラーデータを追跡する方法であって、
メモリから読み出されたデータを受信するステップと、
複数のエラーおよび複数の場所を特定するために、受信したデータにエラー検出演算を実行するステップであって、複数のエラーの各エラーが複数の場所の対応する場所に関連づけられるステップと、
複数のエラーの各々に関連づけられた複数の場所に基づいて、チェックサムを生成するステップと、
前記チェックサムを前記メモリに格納するステップと、
第１の時間に実行された第１のエラー検出演算に基づいて第１のチェックサムを格納し、第２の時間に実行された第２のエラー検出演算に基づいて第２のチェックサムを格納するステップと、
前記第１のチェックサムと前記第２のチェックサムとを比較するステップと、
前記第１のチェックサムと前記第２のチェックサムとの決定された差が第１の所定のしきい値を満たす場合、第１の動作を開始し、前記第１のチェックサムと前記第２のチェックサムとの決定された差が第２の所定のしきい値を満たす場合、第２の動作を開始するステップと、
を含む方法。
【請求項２】
エラーデータを追跡する方法であって、
メモリから読み出されたデータを受信するステップと、
複数のエラーおよび複数の場所を特定するために、受信したデータにエラー検出演算を実行するステップであって、複数のエラーの各エラーが複数の場所の対応する場所に関連づけられるステップと、
複数のエラーの各々に関連づけられた複数の場所に基づいて、チェックサムを生成するステップと、
前記チェックサムを前記メモリに格納するステップと、
第１の時間に実行された第１のエラー検出演算に基づいて第１のチェックサムを格納し、第２の時間に実行された第２のエラー検出演算に基づいて第２のチェックサムを格納するステップと、
前記第１のチェックサムと前記第２のチェックサムとを比較するステップと、
前記メモリの不良の可能性のあるワード線を特定するために、前記第１のチェックサムと前記第２のチェックサムとの決定された差が第１の所定のしきい値を満たす場合、前記第１のチェックサムおよび前記第２のチェックサムのうちの少なくとも１つによって表される場所情報を評価するステップと、
を含む方法。
【請求項３】
請求項２記載のエラーデータを追跡する方法であって、
前記メモリの不良の可能性のあるワード線が、前記不良の可能性のあるワード線ノズルの一端に、複数のエラーのすべてが生じていることを示す場所情報に基づいて特定される方法。
【請求項４】
エラーデータを追跡する方法であって、
メモリから読み出されたデータを受信するステップと、
複数のエラーおよび複数の場所を特定するために、受信したデータにエラー検出演算を実行するステップであって、複数のエラーの各エラーが複数の場所の対応する場所に関連づけられるステップと、
複数のエラーの各々に関連づけられた複数の場所に基づいて、チェックサムを生成するステップと、
前記チェックサムを前記メモリに格納するステップと、
第１の時間に実行された第１のエラー検出演算に基づいて第１のチェックサムを格納し、第２の時間に実行された第２のエラー検出演算に基づいて第２のチェックサムを格納するステップと、
前記第１のチェックサムと前記第２のチェックサムとを比較するステップと、
前記第１のチェックサムと前記第２のチェックサムとの差が第２の所定のしきい値を満たすという決定に応答して、複数のエラーのうちのあるエラーがランダムであるかを決定するステップと、
を含む方法。
【請求項５】
請求項４記載の方法において、
前記エラーがランダムであるという決定に応答して、動作を開始しないステップをさらに含む方法。
【請求項６】
エラーデータを追跡する方法であって、
メモリ領域の第１のエラー場所セットに関連づけられた第１のチェックサムをメモリから取得するステップと、
前記第１のチェックサムと、前記メモリ領域の第２のエラー場所セットに関連づけられた第２のチェックサムとを比較して、比較結果をもたらすステップと、
前記比較結果に基づいて、前記メモリ領域に対して動作を開始するステップと、
前記第１のチェックサムと前記第２のチェックサムとの決定された差が第１の所定のしきい値を満たす場合、第１の動作を開始し、前記第１のチェックサムと前記第２のチェックサムとの決定された差が第２の所定のしきい値を満たす場合、第２の動作を開始するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータメモリシステムに関し、より詳しく言えば、データストレージデバイスのエラー検出およびエラー場所追跡に関する。
【背景技術】
【０００２】
エラー検出訂正プロセスは、メモリストレージデバイスおよび通信チャネル内のデータの完全性の維持を促すプロセスである。例えば、エラー訂正コード（ＥＣＣ）は、コンピュータメモリサブシステムの欠陥検出のために一般に使用される。ＥＣＣは、メモリの格納データに対して１つ以上のエラーを特定するための冗長データを含む。例えば、「ソフト」エラーは、典型的に、送電障害によって生じるのに対して、「ハード」エラーは、メモリデバイスが原因の場合もある。
ストレージデバイスの回路の縮小化および動作電圧の低下に伴い、エラーを特定し訂正するプロセスの精度および効率を高めることが必要とされている。
【発明の概要】
【０００３】
エラーを特定し訂正するための改良されたシステムおよび方法が開示される。メモリの領域に対してエラー場所セットを各々特定する多数のエラー訂正コード演算が実行されてもよい。エラー場所セットは、先行エラー場所と比較されてもよく、適切な動作が開始されてもよい。エラー場所セットは、例えば、チェックサムを介して、エラー場所情報を保存するように符号化されてもよい。エラー場所セットに関連するチェックサムが、各エラー訂正コード演算に対して決定されてもよい。２つ以上のチェックサムが、傾向を特定するために比較されてもよい。エラーをアドレス指定するための動作が、チェックサム比較の結果に基づいて、または検出された傾向を評価することによって開始されてもよい。
【０００４】
例えば、経時的に同じチェックサムは、劣化していないビットのハード障害を示しうる。経時的に場所を移動するエラーが決定されれば、エラーは、ハードウェア欠陥ではなく、伝送障害に起因する可能性がある。このようなエラーは、ＥＣＣの総数が変わらない限り管理されてもよい。エラーがワード線の端部で特定されれば、破損したワード線などのワード線欠陥が特定されうる。
【図面の簡単な説明】
【０００５】
【図１】エラーデータを追跡するために使用されてもよいデータストレージデバイスのブロック図である。
【図２】データストレージデバイスに関連づけられたエラーデータを追跡するために使用されてもよいシステムのブロック図である。
【図３】エラー訂正コード演算の第１のセットの結果を示す。
【図４】エラー訂正コード演算の第２のセットの結果を示す。
【図５】エラー訂正コード演算の第３のセットの結果を示す。
【図６】エラーデータを追跡する方法のフローチャートを示す。
【図７】エラーデータを追跡し格納する方法のフローチャートを示す。
【図８】エラーデータを追跡し評価する方法のフローチャートを示す。
【図９】エラーデータを特定し訂正する方法のフローチャートを示す。
【図１０】複数のエラー訂正コード演算で発生したエラーによって示される傾向を特定する方法のフローチャートを示す。
【発明を実施するための形態】
【０００６】
図１を参照すると、エラーデータを追跡するために使用されてもよいデータストレージデバイスの例示的な実施形態が描かれ、概して１００で示されている。データストレージデバイス１００は、メモリアレイ１０４に連結されたコントローラ１０２を含む。コントローラ１０２は、メモリアレイ１０４から読み出されたデータに対応するエラー場所データを追跡および比較するように構成され、その比較に基づいて動作を開始してもよい。
【０００７】
メモリアレイ１０４は、フラッシュメモリなどの不揮発性メモリを含んでもよい。メモリアレイ１０４は、格納データ１１０を含む代表的なメモリ領域１０６を含む。メモリ領域１０６は、ワード線、メモリブロックまたはメモリページであってもよい。ワード線は、メモリアレイ１０４内の行方向の線を含んでもよい。メモリブロックが、消去可能メモリの最小単位を含んでもよい。メモリページが、書き込み可能なメモリの最小単位を含んでもよい。データ１１０は、格納データ１１０内のそれぞれの場所１１８に関連づけられた検出可能なエラー１１４を含む。
【０００８】
コントローラ１０２は、メモリアレイ１０４から読み出されたデータ１１２を戻す論理通信リンクを介してデータ１１０を読み出すために、メモリアレイ１０４にアクセスするように構成されてもよい。コントローラ１０２のエラー検出モジュール１０８が、多数のエラー１１４を検出し、データ１１０の読み出しに応答してエラー場所１１８を検出するように構成されてもよい。例えば、エラー検出モジュール１０８は、エラー訂正コード（ＥＣＣ）エンジンを含んでもよい。
【０００９】
コントローラ１０２は、チェックサムジェネレータ１２０をさらに含んでもよい。チェックサムジェネレータ１２０は、エラー場所データ１１８に基づいてチェックサムを生成してもよい。例えば、チェックサムジェネレータ１２０は、第１および第２のエラー訂正コード（ＥＣＣ）演算中に、エラー検出モジュール１０８によってそれぞれ生成されたエラー場所データ１１８の第１のチェックサム１２４および第２のチェックサム１２６を出力してもよい。第１のチェックサム１２４および第２のチェックサム１２６の各々は、エラー訂正コード演算のそれぞれに対する複数のエラーの各々に関連づけられた複数の場所に基づいたものであってもよい。あるいは、チェックサムジェネレータ１２０は、多入力シグネチャレジスタ（ＭＩＳＲ：Multiple Input Signature Register ）を含んでもよい。ＭＩＳＲを組み込むことで、ハードウェア要求を低下しうる。チェックサムジェネレータ１２０の別の例は、多項式ベースの回路を含んでもよい。多項式ベースの回路は、線形帰還シフトレジスタ（ＬＦＳＲ：Linear Feedback Shift Register）または組み合わせ論理を含んでもよい。チェックサムジェネレータの別の実施例は、累加算器として機能する加算器および累算器を備えた回路である。チェックサムジェネレータ１２０は、ＥＣＣエンジンの一部であってもよい。
【００１０】
第１のチェックサム１２４および第２のチェックサム１２６は、メモリアレイ１０４のログファイル１２２内に格納されてもよい。例えば、コントローラ１０２は、メモリアレイ１０４の各領域に対して経時的に生成されたチェックサムを格納してもよい。コントローラ１０２は、第１のチェックサム１２４および第２のチェックサム１２６の各々を異なるタイムスタンプに論理的に関連づけてもよい。例えば、タイムスタンプは、チェックサムの生成中のエラー訂正コード演算に対応してもよい。
【００１１】
演算中、コントローラ１０２は、メモリアレイ１０４のログファイル１２２から第１のチェックサム１２４および第２のチェックサム１２６を取得してもよい。コントローラ１０２は、第１のチェックサム１２４と第２のチェックサム１２６とをさらに比較してもよく、少なくとも部分的に、第１のチェックサム１２４と第２のチェックサム１２６との比較に基づいて、メモリ領域１０６に関連づけられた動作を開始してもよい。以下、図３〜図１０に関して説明するように、動作の例には、データの移動、読み出しスクラブの開始、データのリフレッシュ、データブロックを不良データとして指定、データのモニタリングおよび複数のエラーのエラー訂正がありうる。
【００１２】
このように、図１は、それぞれのエラー訂正コード演算に対して複数のエラーの各々に関連づけられた複数の場所に各々基づくチェックサムを生成するためのデータストレージデバイス１００を示す。第１のチェックサム１２４および第２のチェックサム１２６は、エラーデータを効率的に追跡および訂正するために比較される。エラー検出モジュール１０８およびチェックサムジェネレータ１２０が別々の要素として示されているが、エラー検出モジュール１０８およびチェックサムジェネレータ１２０は、同じ要素（例えば、ＥＣＣ）に位置してもよい。さらに、第１のチェックサム１２４および第２のチェックサム１２６が、ログファイル１２２から取得されるように示されているが、図２に関して説明するように、他の実施形態において、第１のチェックサム１２４および第２のチェックサム１２６の１つ以上が、ログファイル１２２から取得されなくてもよい。
【００１３】
図２を参照すると、ストレージデバイスに関連づけられたエラーデータを追跡するために使用されてもよいシステムの例示的な実施形態が描かれ、概して２００で示されている。システム２００は、メモリアレイ２０４に連結されたコントローラ２０２を含む。コントローラ２０２はまた、ホストコンピューティングデバイス２５０に連結される。コントローラ２０２およびメモリアレイ２０４は、取り外し可能なデータストレージデバイスのコンポーネントであってもよい。コントローラ２０２は、先行する読み出し演算から保存されたエラー場所情報と比較して、データ読み出し演算から得られたエラー場所情報を比較することによって、メモリアレイ２０４の状態を追跡するように構成される。例えば、メモリアレイ２０４のログファイル２１６が、チェックサム履歴２１８を含んでもよい。  メモリアレイ２０４は、第１のメモリ領域２０６と、第２のメモリ領域２０８とを含む。第１のメモリ領域２０６は、メモリアレイ２０４のページまたはブロックを表すものであってもよい。
【００１４】
コントローラ２０２は、エラー検出モジュール２２０を含む。エラー検出モジュール２２０は、メモリアレイ２０４から読み出されたデータ２１２に応答して、多数のエラー２１４およびエラー場所２２２を検出するように構成されてもよい。エラー検出モジュール２２０は、ＥＣＣエンジンを含んでもよい。
コントローラ２０２はまた、エラー場所２２２を受信し、チェックサム２２６を生成するように構成されたチェックサムジェネレータ２２４を含む。チェックサムジェネレータ２２４は、ＭＩＳＲまたは別の多項式ベースの回路を含んでもよい。例えば、多項式ベースの回路は、ＬＦＳＲまたは組み合わせ論理を用いて実装されてもよい。複数のエラー訂正コード演算中、チェックサムジェネレータ２２４は、メモリアレイ２０４の特定の領域に対応する複数のチェックサムを生成してもよい。チェックサム出力は、ログファイル２１６のチェックサム履歴２１８に格納され、その後、１つ以上の先行チェックサムとして取得されてもよい。各チェックサム（例えば、チェックサム２２６および先行チェックサム２３４）は、それぞれのエラー訂正コード演算に対してエラーの各々に関連づけられた複数の場所に基づいたものであってもよい。
コントローラ２０２はまた、エラー検出モジュール２２０に連結されたプロセッサ２４０を含む。プロセッサ２４０は、メモリアレイ２０４内のログファイル２１６に対してチェックサム２２６の格納を開始してもよく、メモリアレイ２０４内のログファイル２１６から先行チェックサム２３４の取得を開始してもよい。
【００１５】
プロセッサ２４０は、チェックサム２２６と先行チェックサム２３４とを比較するように構成されたチェックサム解析モジュール２２８を含む。プロセッサ２４０はまた、動作選択モジュール２３０を含む。動作選択モジュール２３０は、チェックサム２２６と先行チェックサム２３４との比較に基づいて複数の利用可能な動作２３２を自動的に開始するように構成される。動作の例には、データの移動、読み出しスクラブの開始、データのリフレッシュ、データブロックを不良データとして指定、データのモニタリングおよび１つ以上のエラーの訂正がある。一例として、チェックサム解析モジュール２２８は、チェックサム２２６および先行チェックサム２３４を取得し比較するように、プロセッサ２４０によって実行されてもよい。チェックサム解析モジュール２２８はまた、比較に基づいた結果を特定するように構成されてもよい。例えば、チェックサム解析モジュール２２８は、エラーが無相関であり、無作為であり、障害に起因することを比較から特定してもよい。別の例において、チェックサム解析モジュール２２８は、エラーが同様の場所のものであり、ハードエラーの可能性があることを特定してもよい。動作選択モジュール２３０は、チェックサム解析モジュール２２８からの結果を受信し、動作を選択的に開始するために、プロセッサ２４０によって実行されてもよい。
【００１６】
このように、図２は、ストレージデバイスに関連づけられたエラーに関する動作を追跡し、選択的に行うためのシステム２００を示す。システム２００により、効率的かつ正確なエラー追跡訂正が可能になる。
【００１７】
図３は、不良ストレージ要素を示す第１および第２のエラー訂正コード演算の結果の例を示す。エラー訂正コード演算は、ワード線または図１のデータ１１０など、メモリから読み出された別のデータに異なる時間で実行されてもよい。データ３０２は、第１のエラー訂正コード演算中に評価されてもよいエラー場所データの例である。例えば、データ３０２は、図１のエラー検出モジュール１０８によって生成されるエラー場所情報１１８であってもよく、図２のエラー検出モジュール２２０によって生成されたエラー場所情報２２２であってもよい。データ３０２は、メモリのストレージ要素に対応するメモリ要素の場所３０６、３０８、３１０、３１２、３１４、３１６、３１８、３２０および３２２を含む。一例として、エラー３５０は場所３０８に関連づけられ、エラー３５２は場所３１６に関連づけられる。
【００１８】
データ３０２は、図１のチェックサムジェネレータ１２０など、チェックサムジェネレータ３４２によって受信されてもよい。チェックサムジェネレータ３４２は、エラー３５０、３５２に関連づけられた場所３０８、３１６に基づいて、図１の第１のチェックサム１２４などのチェックサム３４４を生成してもよい。図に示したように、チェックサム３４４は、２進数「１０１１」に等しく、この値は１０進数「１１」に等しい。
データ３０４は、第２のエラー訂正コード演算中に評価されてもよい。データ３０４は、ビット場所３２４、３２６、３２８、３３０、３３２、３３４、３３６、３３８および３４０を含む。エラー３５４が場所３２６に関連づけられ、エラー３５６が場所３３４に関連づけられる。
データ３０４は、図１のチェックサムジェネレータ１２０などのチェックサムジェネレータ３４６によって受信されてもよい。チェックサムジェネレータ３４６は、エラー３５４、３５６に関連づけられた場所３２６、３３４に基づいて、図１の第１のチェックサム１２４などのチェックサム３４８を生成してもよい。図に示したように、チェックサム３４８は、２進数「１０１１」に等しく、この値は１０進数「１１」に等しい。
【００１９】
３７０において、チェックサム３４４、３４８は、データ３０２およびデータ３０４のエラーが同じ場所にあるため、不良ストレージ要素を特定するために比較されてもよい。チェックサム３４２がチェックサム３４６と等しいことによって、不良ストレージ要素が示されうる。例えば、エラー３５０、３５２、３５４、３５６は、第１および第２のエラー訂正コード演算のデータ３０２、３０４内の同じ相対場所３０８、３１６、３２６、３３４を有するエラー３５０、３５２、３５４、３５６に基づいてハードエラーであるように決定されてもよい。
【００２０】
このように、図３は、エラー３５０、３５２、３５４、３５６および関連する場所３０８、３１６、３２６、３３４を決定するために用いられる第１および第２のエラー訂正コード演算を示す。エラー場所３０８、３１６、３２６、３３４に基づいて算出されたチェックサム３４４、３４８は、エラー３０８、３１６、３２６、３３４の場所が両方のエラー訂正コード演算において同じであることを決定するために比較されてもよい。エラー３５０、３５２、３５４、３５６の同じ相対場所３０８、３１６、３２６、３３４は、ハードエラーの存在を示すものであってもよい。
【００２１】
図４は、ランダムエラーを示す第１および第２のエラー訂正コード演算の結果の例を示す。エラー訂正コード演算は、図１のデータ１１０など、データ要素に異なる時間で実行されてもよい。データ４０２は、第１のエラー訂正コード演算中に評価されてもよい。例えば、データ４０２は、図１のエラー検出モジュール１０８によって生成されたエラー場所情報１１８、または図２のエラー検出モジュール２２０によって生成されたエラー場所情報２２２であってもよい。データ４０２は、メモリのストレージ要素に対応するビット場所４０６、４０８、４１０、４１２、４１４、４１６、４１８、４２０および４２２を含む。エラー４５０が場所４０８に関連づけられ、エラー４５２が場所４１０に関連づけられ、エラー４５４が場所４１６に関連づけられる。
【００２２】
データ４０２は、図１のチェックサムジェネレータ１２０など、チェックサムジェネレータ４４２によって受信されてもよい。チェックサムジェネレータ４４２は、エラー４５０、４５２および４５４に関連づけられた場所４０８、４１０および４１６に基づいて、図１の第１のチェックサム１２４などのチェックサム４４４を生成してもよい。図に示したように、チェックサム４４４は２進値「１１００」に等しく、この値は１０進値「１２」に相当する。データ４０４は、第２のエラー訂正コード演算中に評価されてもよい。データ４０４は、ビット場所４２４、４２６、４２８、４３０、４３２、４３４、４３６、４３８および４４０を含む。エラー４５６が場所４２４に関連づけられ、エラー４５８が場所４３０に関連づけられる。
データ４０４は、図１のチェックサムジェネレータ１２０など、チェックサムジェネレータ４４６によって受信されてもよい。チェックサムジェネレータ４４６は、エラー４５６、４５８に関連づけられた場所４２４、４３０に基づいて、図１の第１のチェックサム１２４などのチェックサム４４８を生成してもよい。図に示したように、チェックサム４４８は２進値「０１００」に等しく、この値は１０進値「４」に相当する。
【００２３】
４７０において、チェックサム４４４、４４８は、エラーをランダムとして特定するために比較されてもよい。チェックサム４４４の１０進値「１２」とチェックサム４４８の１０進値「４」との間の不一致は、無相関のランダムエラーを示しうる。エラー４５０、４５２、４５４、４５６は、第１および第２のエラー訂正コード演算の両方のデータ４０２、４０４内に異なる相対場所４０８、４１６、４２６、４３４を有するエラー４５０、４５２、４５４、４５６に基づいてランダムエラーであるように決定されてもよい。また、チェックサム４４４とチェックサム４４８との差が、エラー場所が異なることを特定するために、しきい値と比較されてもよい。
【００２４】
このように、図４は、エラー４５０、４５２、４５４、４５６および関連する場所４０８、４１６、４２６、４３４を決定するために用いられる第１および第２のエラー訂正コード演算を示す。エラー場所４０８、４１６、４２６、４３４に基づいて算出されたチェックサム４４４、４４８は、エラー４０８、４１６、４２６、４３４の場所が両方のエラー訂正コード演算において異なることを決定するために比較されてもよい。
【００２５】
図５は、第１および第２のエラー訂正コード演算の結果の例を示す。第１および第２のエラー訂正演算は、データ５０２の端部分付近のエラー５５０、５５２、５５４の場所が、データ５０４の端部分付近に位置するエラー５５８、５６０、５６２に同様に分散されることを示す。エラー訂正コード演算は、ワード線または図１のデータ１１０など、メモリから読み出された他のデータに異なる時間で実行されてもよい。データ５０２は、第１のエラー訂正コード演算中に評価されてもよい。例えば、データ５０２は、図１のエラー検出モジュール１０８によって生成されるエラー場所情報１１８であってもよく、図２のエラー検出モジュール２２０によって生成されたエラー場所情報２２２であってもよい。データ５０２は、メモリのストレージ要素に対応するメモリ要素の場所５０６、５０８、５１０、５１２、５１４、５１６、５１８、５２０および５２２を含む。エラー５５０が場所５０６に関連づけられ、エラー５５２が場所５０８に関連づけられる。第３のエラー５５４は場所５１２にあり、第４のエラー５５６は場所５１６にある。
【００２６】
データ５０２は、図１のチェックサムジェネレータ１２０などのチェックサムジェネレータ５４２によって受信されてもよい。チェックサムジェネレータ５４２は、エラー５５０、５５２、５５４および５５６に関連づけられた場所５０６、５０８、５１２および５１６に基づいて、図１の第１のチェックサム１２４などのチェックサム５４４を生成してもよい。図に示したように、チェックサム５４４は２進値「１１１０」を含み、この値は１０進値「１４」に相当する。
データ５０４は、第２のエラー訂正コード演算中に評価されてもよい。データ５０４は、ビット場所５２４、５２６、５２８、５３０、５３２、５３４、５３６、５３８および５４０を含む。エラー５５８が場所５２４に関連づけられ、エラー５６０が場所５２６に関連づけられる。エラー５６２が場所５３０に関連づけられ、エラー５６４が場所５４０に関連づけられる。
データ５０４は、図１のチェックサムジェネレータ１２０など、チェックサムジェネレータ５４６によって受信されてもよい。チェックサムジェネレータ５４６は、エラー５５８、５６０、５６２および５６４に関連づけられた場所５２４、５２６、５３０および５４０に基づいて、図１の第１のチェックサム１２４などのチェックサム５４８を生成してもよい。図に示したように、チェックサム５４８は２進値「１１０１」を含み、この値は１０進値「１３」に相当する。
【００２７】
５７０において、チェックサム５４４、５４８は、不良ワード線を特定するために比較されてもよい。両方のチェックサム５４４、５４８は、比較的大きな値を含む。ほとんどのエラーは、ワード線の同じ端部に存在する。データ５０２のエラー５５０、５５２、５５４は、両方の第１および第２のエラー訂正コード演算中に評価されるとき、データ５０４の同様に位置するエラー５５８、５６０、５６２に基づいて不良ワード線に関連づけられるように決定されてもよい。
【００２８】
このように、図５は、エラー５５０、５５２、５５４、５５６、５５８、５６０、５６２および５６４および関連する場所５０６、５０８、５１２、５１６、５２４、５２６、５３０および５４０を決定するために用いられた第１および第２のエラー訂正コード演算を示す。エラー場所５０６、５０８、５１２、５１６、５２４、５２６、５３０および５４０に基づいて算出されたチェックサム５４４、５４８は、エラー５５０、５５２、５５４、５５８、５６０および５６２の場所が、両方のエラー訂正コード演算においてデータ５０２、５０４の同様の部分に集中していることを決定するために比較されてもよい。エラー５５０、５５２、５５４、５５８、５６０および５６２の同じ相対場所５０６、５０８、５１２、５２４、５２６および５３０は、不良ワード線から得られるハードエラーの存在を示すものであってもよい。
【００２９】
当業者であれば、図３〜図５が説明をしやすくするために簡略化されていることを認識するはずである。図３〜図５は、いくつかあるパラメータの中でも特に、正確な値またはデータワードサイズを必ずしも示しているわけではない。結果的に、実施形態は、これらの例示的な実施例に限定されない。
【００３０】
図６は、エラーデータを追跡する方法６００のフローチャートを示す。図６の方法６００は、図１のコントローラ１０２または図２のコントローラ２０２など、メモリにアクセスするコンピューティングシステムによって実行されてもよい。６０２において、複数のエラーの各々にそれぞれ関連づけられた複数のエラーおよび複数の場所を特定するために、エラー訂正コード演算が実行されてもよい。例えば、図１のコントローラ１０２は、メモリアレイ１０４からデータ１１０を取得してもよい。データ１１０は、エラー検出モジュール１０８に出力されてもよい。場所にそれぞれ関連づけられたエラー１１４を特定するために、第１の時間に第１のエラー検出演算をエラー検出モジュール１０８に実行させるように制御信号が生成されてもよい。
【００３１】
６０４において、複数のエラーの各々に関連づけられた複数の場所に基づいて、チェックサムが生成されてもよい。例示するために、図１のチェックサムジェネレータ１２０は、エラー場所データ１１８を受信し、検出されたエラー１１４に関連づけられた場所に基づいて第１のチェックサム１２４を生成してもよい。
６０６において、メモリアレイから第２のチェックサムが取得されてもよい。例示するために、第２のチェックサムは、図２の先行チェックサム２３４であってもよい。第２のチェックサムは、第１のチェックサムとして同じメモリ領域からの先行データ読み出し演算に相当するものであってもよい。
第１のチェックサムおよび第２のチェックサムは、６０８で比較されてもよい。例えば、図１のコントローラ１０２は、第１のチェックサム１２４と第２のチェックサム１２６とを比較してもよい。別の実施例において、図２のチェックサム解析モジュール２２８は、チェックサム２２６と先行チェックサム２３４とを比較してもよい。
【００３２】
６１０において、第１のチェックサムと第２のチェックサムとの差が小さいかに関する決定がなされてもよい。例えば、図１のコントローラ１０２は、第１のチェックサム１２４と第２のチェックサム１２６との差が小さいかを決定してもよい。
第１のチェックサムと第２のチェックサムとの決定された差が小さい場合、６１０において、場所情報が評価されてもよい。例えば、図１のコントローラ１０２は、エラーの場所に基づいて、第１のチェックサム１２４と第２のチェックサム１２６との差を決定してもよい。図３に示すように、第１のエラーコード演算におけるエラー３５０の場所３０８は、第２のエラーコード演算におけるエラー３５４の場所３２６と同じであってもよい。あるいは、図４に示すように、第１のエラーコード演算におけるエラー４５０の場所４０８は、第２のエラーコード演算のエラー４５６の場所４２４とは異なるものであってもよい。第１のチェックサムと第２のチェックサムとの差が小さいかを決定することは、差をしきい値と比較することを含んでもよい。しきい値は、特定のチェックサム生成タイプの場所符号化特性に基づいて設定されてもよい。
【００３３】
場所情報は、６１２において、不良の可能性のあるワード線を特定するために評価されてもよい。例えば、エラーが、ワード線の端部付近に一貫して集中していることが決定されてもよい。例示するために図５を用いながら、第１のエラーコード演算におけるエラー５５０、５５２、５５４の場所５０６、５０８、５１２は、第２のエラーコード演算におけるエラー５５８、５６０、５６２に関連づけられた場所５２４、５２６、５３０に類似してもよい。ワード線の一端で繰り返し起こるエラーは、不良ワード線を示しうる。
６１４において、欠陥ストレージ要素を有するものとしてメモリ領域が特定されてもよい。例えば、図１のコントローラ１０２は、格納されたデータストリング内に欠陥セルを有するものとしてメモリ領域１０６を特定してもよい。図３に示すように、特定のメモリ場所で繰り返し起こるエラーは、不良メモリセルを示しうる。
６１６において、データ内の場所はモニタリングされてもよい。例えば、図１のコントローラ１０２は、後のエラー発生に備えて検出されたエラー１１４に対応する場所をモニタリングしてもよい。
【００３４】
６１８において、第１のチェックサムと第２のチェックサムとの差が大きいかに関する決定がなされてもよい。例えば、図１のコントローラ１０２は、第１のチェックサム１２４と第２のチェックサム１２６との差が大きいかを決定してもよい。差が大きいかを決定することは、差をしきい値と比較することを含んでもよい。しきい値は、特定のチェックサム生成タイプの場所符号化特性に基づいて設定されてもよい。
【００３５】
６１８において、第１のチェックサムと第２のチェックサムとの決定された差が大きい場合、６２０において、複数のエラーのうちのあるエラーがランダムであるかを決定するために、場所情報が評価されてもよい。例えば、図１のコントローラ１０２は、検出されたエラー１１４が、第１のチェックサム１２４と第２のチェックサム１２６との差に基づいてランダムであることを決定してもよい。
６２２において、エラーがランダムであるという決定に応答して、動作が開始されなくてもよい。６２４において、第１のチェックサムは格納されてもよい。例えば、図２のコントローラ１０２は、メモリアレイ１０４のログファイル１２２内に第１のチェックサム１２４を格納してもよい。
【００３６】
このように、図６は、エラーデータを追跡するために用いられる方法６００を示す。第１のチェックサムおよび第２のチェックサムが生成され比較される。チェックサムは、ワード線または他のデータストリング内の検出されたエラーの場所に基づいて生成される。チェックサムの比較によって、チェックサム間の差が大きいかまたは小さいかを決定してもよい。小さな差は欠陥ストレージ要素を示しうるのに対して、大きな差はランダムエラーを示しうる。検出されたエラーがランダムであると決定されれば、動作を起こさないように決定がなされてもよい。
【００３７】
図７は、エラーデータを追跡し格納する方法７００のフローチャートを示す。図７の方法７００は、図１のコントローラ１０２または図２のコントローラ２０２など、メモリにアクセスするコンピューティングシステムによって実行されてもよい。７０２において、第１の複数の場所にそれぞれ関連づけられた第１の複数のエラーを特定するために、第１のエラー訂正コード演算が第１の時間で実行されてもよい。例えば、第１の複数の場所のうちのある場所が、不揮発性データストレージデバイス内のページまたはブロックのビット位置を含む。第１のエラー訂正コード演算は、不揮発性データストレージデバイス内においてコントローラで実行されてもよい。例えば、図２のコントローラ２０２は、メモリアレイ２０４からデータ２１２を取得してもよい。データ２１２は、エラー検出モジュール２２０に出力されてもよい。第１の複数の場所にそれぞれ関連づけられたエラー２１４を特定するために、第１の時間で第１のエラー検出演算をエラー検出モジュール２２０に実行させるように制御信号が生成されてもよい。
【００３８】
７０４において、第２の複数の場所にそれぞれ関連づけられた第２の複数のエラーを特定するために、第２のエラー訂正コード演算が第２の時間で実行されてもよい。例示するために、図２のコントローラ２０２は、メモリアレイ２０４からデータを再度取得してもよい。データは、エラー検出モジュール２２０に出力されてもよい。第２の複数の場所にそれぞれ関連づけられたエラーを特定するために、第２の時間で第２のエラー検出演算をエラー検出モジュール２２０に実行させるように制御信号が生成されてもよい。
【００３９】
７０６において、不揮発性データストレージデバイス内のメモリアレイのログファイル内に、第１の複数の場所に相関された第１のデータおよび第２の複数の場所に相関された第２のデータが格納されてもよい。第１のデータは、第１の複数の場所の第１のチェックサムを含んでもよく、第２のデータは、第２の複数の場所の第２のチェックサムを含んでもよい。例えば、図２のコントローラ２０２は、メモリアレイ２０４のログファイル２１６内にチェックサム履歴データ２１８を格納してもよい。
【００４０】
このように、図７は、第１のエラー訂正コード演算および第２のエラー訂正コード演算を実行する方法７００を示す。各演算は、場所に関連づけられたエラーを特定してもよい。場所に相関されたデータは、訂正するためのエラーを効率的に特定する際に使用するためにメモリ内に格納されてもよい。
【００４１】
図８は、エラーデータを追跡し評価する方法８００のフローチャートを示す。図８の方法８００は、図１のコントローラ１０２または図２のコントローラ２０２など、コンピューティングシステムによって実行されてもよい。８０２において、第１のエラー訂正コード演算の第１の複数のエラー場所に関連づけられた第１のチェックサムが受信されてもよい。第１のエラー訂正コード演算は、メモリアレイの領域内のエラーを訂正することに関連づけられてもよい。また、第２のエラー訂正コード演算の第２の複数のエラー場所に関連づけられた第２のチェックサムが受信されてもよい。例えば、図２のコントローラ２０２は、メモリアレイ２０４のログファイル２１６から第１のチェックサム２２６および先行チェックサム２３４を受信してもよい。
【００４２】
８０４において、第１のチェックサムは、第２のチェックサムに比較されてもよい。例えば、図２のチェックサム解析モジュール２２８は、チェックサム２２６と先行チェックサム２３４とを比較してもよい。
８０６において、メモリアレイの領域内のエラーがランダムであるかの決定がなされてもよい。例示するために、図２のチェックサム解析モジュール２２８は、エラーがランダムであるかを決定するためにチェックサムデータ２２６を評価してもよい。
【００４３】
８０８において、エラーがランダムであるという決定に応答して、動作が開始されなくてもよい。８１０において、メモリアレイの領域への動作が、比較の結果に基づいて開始されてもよい。第１のチェックサムと第２のチェックサムとの比較に基づいた複数の利用可能な動作の１つが実行されてもよい。例えば、図２の動作選択モジュール２３０は、データ２１２の移動、読み出しスクラブの開始、データのリフレッシュ、データ２１２のブロックを不良として指定、データ２１２のモニタリングまたはエラー２１４の訂正動作の開始を行うものであってもよい。
【００４４】
このように、図８は、第１および第２のエラー訂正コード演算のエラー場所に関連づけられたチェックサムを受信することを含む方法８００のフローチャートを示す。チェックサムは、エラーがランダムであるかを決定するために比較されてもよい。エラーがランダムでない場合、訂正動作が開始されてもよい。
【００４５】
図９は、エラーデータを追跡しアドレス指定する方法９００のフローチャートを示す。図９の方法９００は、図１のコントローラ１０２または図２のコントローラ２０２など、コンピューティングシステムによって実行されてもよい。９０２において、メモリから第１のチェックサムが取得されてもよい。第１のチェックサムは、メモリ領域の第１のエラー場所セットに関連づけられてもよい。第１のエラー場所セットのうちのあるエラー場所が、不揮発性データストレージデバイス内のページまたはブロックのビット位置を含んでもよい。例えば、図１のコントローラ１０２は、メモリアレイ１１４のログファイル１２２から第１のチェックサム１２４を取得してもよい。第１のチェックサム１２４は、メモリ領域１０６のエラー場所に関連づけられてもよい。
【００４６】
９０４において、第１のチェックサムは、メモリ領域の第２のエラー場所セットに関連づけられた第２のチェックサムに比較されてもよい。例えば、図２のチェックサム解析モジュール２２８は、チェックサム２２６と先行チェックサム２３４とを比較してもよい。
【００４７】
９０６において、比較の結果に基づいてメモリ領域に対して動作が開始されてもよい。例えば、図２の動作選択モジュール２３０は、データの結果に基づいて動作を開始してもよい。第１のチェックサムと第２のチェックサムとの決定された差が小さいとき、第１の動作が開始されてもよい。例示するために、決定された差が小さいということは、エラー場所が同様のものであることを示しうる。第１のチェックサムと第２のチェックサムとの決定された差が大きいとき、第２の動作が開始されてもよい。一例において、決定された差が大きいということは、エラー場所の差が大きいことを示しうる。
【００４８】
９０８において、複数の利用可能な動作の１つが実行されてもよい。例えば、図２の動作選択モジュール２３０は、コントローラ２０２にデータ２１２を移動させ、データ２１２のブロックを不良であると指定し、データ２１２をモニタリングし、読み出しスクラブを実行し、データをリフレッシュし、またはエラー２１４の訂正を行うためのプロセスを実行する動作を開始してもよい。
【００４９】
図９は、エラーを特定し訂正する方法９００のフローチャートを示す。エラー場所に関連づけられたチェックサムを取得し比較する。エラーを訂正するための動作が、比較の結果に基づいて開始されてもよい。
【００５０】
図１０は、エラーデータを追跡しアドレス指定する方法１０００のフローチャートを示す。図１０の方法１０００は、図１のコントローラ１０２または図２のコントローラ２０２など、コンピューティングシステムによって実行されてもよい。１００２において、第１のエラー訂正コード演算の第１の複数のエラー場所に関連づけられた第１のチェックサムが受信されてもよい。例えば、図２のチェックサム解析モジュール２２８は、チェックサムジェネレータ２２４からチェックサム２２６を受信してもよい。
【００５１】
また、１００４において、第２のエラー訂正コード演算の第２の複数のエラー場所に関連づけられた第２のチェックサムが受信されてもよい。例えば、図２のコントローラ２０２は、メモリアレイ２０４のログファイル２１６から先行チェックサム２３４を取得してもよい。
１００６において、第１のチェックサムは、第２のチェックサムに比較されてもよい。例えば、図２のチェックサム解析モジュール２２８は、チェックサム２２６と先行チェックサム２３４とを比較してもよい。
１００８において、比較の結果に基づいてメモリ領域に対して動作が開始されてもよい。例えば、図２の動作選択モジュール２３０は、データの結果に基づいて動作を開始してもよい。
【００５２】
１０１０において、第３のエラー訂正コード演算の第３の複数のエラー場所に関連づけられた第３のチェックサムが受信されてもよい。また、第４のエラー訂正コード演算の第４の複数のエラー場所に関連づけられた第４のチェックサムが受信されてもよい。例えば、図２のチェックサム解析モジュール２２８は、メモリアレイ２０４のログファイル２１６のチェックサム履歴２１８から第３および第４のチェックサムを受信してもよい。
【００５３】
１０１２において、傾向を特定するために、第１のチェックサム、第２のチェックサム、第３のチェックサムおよび第４のチェックサムが使用されてもよい。例示するために、図２のチェックサム解析モジュール２２８は、傾向を特定するためにチェックサム履歴２１８から取得されてもよい。例えば、チェックサム解析モジュール２４０は、多数のエラーが一貫して起こるか、または同じ相対場所に集中していることを決定してもよい。
１０１４において、傾向に基づいて動作が開始されてもよい。例えば、図２の動作選択モジュール２３０は、データを移動し、読み出しスクラブを開始し、データブロックを不良であると指定し、データをモニタリングし、またはエラーを訂正するための動作を開始してもよい。
【００５４】
図１０は、一連のエラー訂正コード演算で生じたエラーが示す傾向を特定する方法１０００のフローチャートを示す。特定された傾向は、適切な訂正動作を開始するために使用されてもよい。
【００５５】
開示された実施形態の態様は、エラーの総数だけではなく、エラーの場所を評価することによってエラーの特定精度を上げうる。このようにして、プロセスは、エラー総数が一定のままの場合でも、場所を移動するエラーを特定しうる。
開示された実施形態の他の態様は、各読み出し演算で起こるＥＣＣ訂正に基づいたデータを使用してエラーを追跡しうる。追跡されたエラーデータは、エラー場所および複数のエラーの両方を含みうる。追跡された複数のエラーは、消耗および欠陥をモニタリングするために使用されてもよく、エラー場所データは、障害検出に使用されてもよい。
開示された実施形態の他の態様は、１つ以上のエラー場所に基づいて、複数のチェックサムを生成してもよい。例えば、メモリの各ページに対して、４つのチェックサムが集められてもよい。チェックサムが決定され、追跡用ログファイル内に含められてもよい。
【００５６】
本願明細書に示されたさまざまなコンポーネントは、ブロックコンポーネントとして例示され、一般論として記載されているが、このようなコンポーネントは、１つ以上のマイクロプロセッサ、状態マシン、または図１のデータエラー検出モジュール１０８およびチェックサムジェネレータ１２０、および図２のエラー検出モジュール２２０、チェックサムジェネレータ２２４、チェックサム解析モジュール２２８および動作選択モジュール２３０が、このようなコンポーネントまたはそれらの任意の組み合わせによって生じる特定の機能を実行できるように構成された他の回路を含んでもよい。例えば、図１のエラー検出モジュール１０８、チェックサムジェネレータ１２０またはそれらの両方は、ハードウェアコントローラ、状態マシン、論理回路または図１のデータストレージデバイス１００にエラーデータを追跡させる他の構造などの物理コンポーネントであってもよい。
【００５７】
データストレージデバイス１００は、１つ以上の外部デバイスに選択的に連結されるように構成されたポータブルデバイスであってもよい。しかし、他の実施形態において、データストレージデバイス１００は、ポータルブル通信デバイスのハウジング内など、１つ以上のホストデバイス内に取り付けられるかまたは埋め込まれてもよい。例えば、データストレージデバイス１００は、無線電話、携帯用情報端末（ＰＤＡ）、ゲーム機またはゲームコンソール、ポータブルナビゲーションデバイスまたは内部不揮発性メモリを使用する他のデバイスなどのパッケージ装置内にあってもよい。特定の実施形態において、データストレージデバイス１００は、フラッシュメモリ（例えば、ＮＡＮＤ、ＮＯＲ、マルチレベルセル（ＭＬＣ）、分割ビット線ＮＯＲ（ＤＩＮＯＲ：Divided bit-line NOR）、ＡＮＤ、高容量結合率（ＨｉＣＲ）、非対称コンタクトレストランジスタ（ＡＣＴ：asymmetrical contactless transistor ）または他のフラッシュメモリ）、消去可能でプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、読み出し専用メモリ（ＲＯＭ）、ワンタイムプログラマブルメモリ（ＯＴＰ）または任意の他のタイプのメモリなどの不揮発性メモリを含む。
【００５８】
本願明細書に記載した実施形態の説明は、種々の実施形態を一般的に理解するために与えることを意図したものである。本開示から他の実施形態が利用され導き出されてもよく、本開示の範囲から逸脱することなく、構造的および論理的な代替および変更がなされてもよい。本開示は、種々の実施形態の任意およびすべての後続の適応または変更に及ぶように意図される。以上のことから、本開示および図面は、制限的なものではなく例示的なものとして見なされるべきものである。
【００５９】
前に開示された主題は、制限的ではなく例示的なものとして見なされるべきであり、添付の特許請求の範囲は、本開示の範囲内にあるこのようなすべての修正例、改良例および他の実施形態に及ぶように意図される。このようにして、法によって認められる最大限の範囲において、本発明の範囲は、以下の特許請求の範囲およびその均等物を最大限に幅広く解釈することによって決定されるべきであり、前述した詳細な説明によって制約または制限されるものではない。
【図１】
0005523562.tif 000002
【図２】
0005523562.tif 000003
【図３】
0005523562.tif 000004
【図４】
0005523562.tif 000005
【図５】
0005523562.tif 000006
【図６】
0005523562.tif 000007
【図７】
0005523562.tif 000008
【図８】
0005523562.tif 000009
【図９】
0005523562.tif 000010
【図１０】
0005523562.tif 000011