(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0007】
図1は、メモリアレイ102(例えば、フラッシュマルチレベルセルアレイ)から読み込まれたデータ内の、ECCエンジン118の訂正容量を上回る誤りを訂正するように構成されたコントローラ104を含むシステム100の特定の例示の実施形態のブロック図である。コントローラ104は、ECCエンジン118により訂正不能なデータ内の調整するべき1つ以上のビットを判断するように構成された訂正モジュール130を含む。
【0008】
メモリアレイ102は、1つ以上のワード線(単数または複数)108を含むとよい。ワード線(単数または複数)108は、メモリアレイ102の行を表すこともでき、1つ以上のマルチレベルセル(MLC)144と、メモリアレイ102の行内のMLC144のコントロールゲートに連結されている導電線とを含む。メモリアレイ102は、読み込み動作146などを介して、通信経路156上でコントローラ104とデータの送受信を行うこともできる。
【0009】
コントローラ104は、ホストデバイスなどの外部デバイス106に応答するとよく、メモリアレイ102に対する書き込みおよび読み込みアクセスを可能にするとよい。コントローラ104は、ECCエンジン118により訂正不能なデータを調整し、調整されたデータを訂正のためにECCエンジン118に再び提供するように構成された訂正モジュール130を含む。コントローラ104はさらに、バッファ162、訂正済みバッファ124、ログファイル134および誤り確率テーブル138を含む。
【0010】
ECCエンジン118は、リードソロモン(RS)、ボーズチョドーリオッケンジェム(BCH)、低密度パリティチェック(LDPC)、その他1つ以上のECCプロセスまたはその任意の組み合わせなどの誤り訂正方式に基づき、誤りを復号化して訂正するように構成されるとよい。ECCエンジン118は、ECCエンジン118の誤り訂正容量以内のいくつかの誤りを有する受け取られたデータを復号化するように構成されるとよい。例えば、誤り訂正容量は、符号化されたデータの512バイト毎に12ビットの誤りであってもよい。ECCエンジン118は、訂正されたデータ(すなわち、誤りがなく訂正の必要がないデータまたはECCエンジン118によって訂正されたデータ)を、経路120を介して訂正済みバッファ124に伝達するように構成されるとよい。ECCエンジン118は、ECCエンジン118により訂正不能なデータを、経路116を介してバッファ162に伝達するように構成されるとよい。
【0011】
バッファ162は、ECCエンジン118により訂正不能なデータを格納するように構成されるとよく、訂正済みバッファ124は、ECCエンジン118により訂正されたデータを格納するように構成されるとよい。例えば、ワード線108が読み込まれると、ワード線108から読み込まれた第1のグループ110のビットは、ECCエンジン118により訂正不能でバッファ162にて格納されてもよく、ワード線108から読み込まれた第2のグループ126のビットは、ECCエンジン118によって訂正され、訂正済みバッファ124にて格納されてもよい。
【0012】
第1のグループ110は、訂正されていない1つ以上のページ112を含むとよく、第2のグループ126は、訂正された1つ以上のページ128を含むとよい。例示として、各MLC144は、3ビット値に対応する状態を有し、各MLC144の下位ビットが第1の論理ページに割り当てられ、中位ビットが第2の論理ページに割り当てられ、上位ビットが第3の論理ページに割り当てられてもよい。各ページは、個々に符号化され、独立してECCエンジン118にて処理されてもよい。ワード線108の1つ以上のページは、ECCエンジン118により訂正不能で、訂正されていないページ112としてバッファ162に格納されることもある一方で、ワード線108の他の1つ以上のページは、ECCエンジン118によって訂正され、訂正済みバッファ162に訂正されたページ128として格納されることもある。
【0013】
訂正モジュール130は、経路140を介して、バッファ162にある第1のグループ110のビットにアクセスするように構成され、第1のグループ110の1つ以上のビットを反転して、ビットの調整されたグループ170を生成するように構成されている。ビットの調整されたグループ170は、処理のためにECCエンジン118に提供される。ビットの調整されたグループ170がECCエンジン118によって訂正可能であれば、訂正および復号化されたデータが、ワード線108に対する読み込みアクセスの要求への応答として、外部デバイス106に提供されるとよい。ビットの調整されたグループ170がECCエンジン118によって訂正可能でなければ、第1のグループ110の他の1つ以上のビットが、反復プロセスにおいて訂正モジュール130によって反転されて、ECCエンジン118により訂正可能な第1のグループ110のデータビットが与えられるとよい。
【0014】
訂正モジュール130は、第1のグループ110のビット値のカウント114と、ログファイル134から経路158を介して取得される、格納されている先行カウント(prior count)136とを比較することによって、第1のグループ110内の、訂正するべき特定の値のビットの数148を判断するように構成されるとよい。カウント114は、訂正モジュール130によって生成されても、コントローラ104内の他のハードウェアによって生成されてもよい。格納されている先行カウント136は、先行する書き込み動作中にワード線108に書き込まれるデータから生成されても、ワード線108から前に読み込まれてECCエンジン118によって訂正されたデータから生成されてもよい。
【0015】
例えば、カウント114は、訂正されていない第1のグループ110内のいくつかの1を示してもよく、格納されている先行カウント136は、すべての誤りが訂正された後に第1のグループ110内に存在するべきいくつかの1を示してもよい。カウント114が、格納されている先行カウント136を1上回る場合、第1のグループ110内の「0」値のビットが誤って「1」値に変化し、訂正モジュール130は、「0」値に反転する第1のグループ110内の「1」値のビットを選択するとよい。格納されている先行カウント136がカウント114を上回る場合、「1」値のビットが誤って「0」値に変化し、訂正モジュール130は、「1」値に反転する第1のグループ110内の「0」値のビットを選択するとよい。訂正モジュール130は、カウント114と、格納されている先行カウント136との差に等しくなるように、反転するビットの数148を選択するように構成されるとよい。カウント114および格納されている先行カウント136は、「1」値のカウントとして記載されているが、その代わりとして、カウント114および格納されている先行カウント136は、「0」値のカウントであってもよく、訂正モジュール130が、0のカウントの比較に基づいて、反転するいくつかのビットおよびビットの値を判断するように構成されてもよい。
【0016】
訂正モジュール130は、選択されたビットが誤っている可能性に従って、反転される第1のグループ110内の特定のビットを選択するとよい。例えば、訂正モジュール130は、誤り確率テーブル138のうちの少なくとも1つにアクセスして、訂正する第1のグループ110の少なくとも1つのビットを識別するように構成されてもよい。誤り確率テーブル138は、マルチビットセルの他のビットにおける誤り152が検出および/または訂正されたかどうかに基づき、マルチビットセル(例えば、MLC)のビットが誤っている可能性が高いかどうかに対応する、誤りデータ150を含む。
【0017】
例えば、MLCは、訂正されていないページ(単数または複数)112内の第1のビットの値および訂正されたページ(単数または複数)128内の第2のビットによって表される状態(例えば、しきい電圧)を有するとよい。MLCの状態は、ハードウェア障害(壊れたワード線または他の接続など)が原因で誤って読み込まれることも、他のイベント(隣接したワード線に対する書き込み動作によって生じるプログラム妨害など)によって間違いを含むこともある。訂正されたページ(単数または複数)128内でビット誤りをもたらすイベントは、訂正されていないページ(単数または複数)112内でもビット誤りをもたらし得る。
図2〜3に示されているように、特定のビットが誤っている可能性は、MLCの他のビットにおけるいくつかの誤り152、特定のビットの値、MLCの1つ以上の状態値160、1つ以上の他の要素またはその任意の組み合わせと相関関係にあることもある。
【0018】
訂正モジュール130は、第2のグループ126のどのビットが訂正されたかを示す訂正データを、ECCエンジン118から受け取るように構成されるとよい。訂正モジュール130は、第2のグループ126の訂正されたビットと共通のMLCを共有する、第1のグループ110の各ビットを発見するように構成されるとよい。訂正モジュール130は、第1のグループ110内の発見された各ビットに関して、誤り確率テーブル138におけるルックアップ動作を開始して、ビットが誤っている可能性を示すデータを取得するとよい。
【0019】
例えば、訂正モジュール130は、経路142を介して訂正済みバッファ124にアクセスして、第1のグループ110の特定のビットとMLCを共有している第2のグループ126内の1つ以上のビットのビット値を取得するとよい。訂正モジュール130は、取得したビット値(単数または複数)を処理し、MLCのいくつかの訂正されたビット、MLCの1つ以上のビット値またはその他の情報を使用して、誤り確率テーブル138にてルックアップ動作を実行し、誤り確率テーブル138にてエントリを発見するとよい。誤り確率テーブル138にて発見されたエントリの誤り可能性値が訂正モジュール130に返されて、第1のグループ110の特定のビットに関連付けられるとよい。
【0020】
訂正モジュール130は、最も高い誤り可能性値を有すると示されたビットを選択することによって、第1のグループ110内で訂正する、判断された数148のビットを選択してもよい。例えば、訂正するビットの数148がNであると判断されると、N個の最も高い誤り可能性値に対応するNビットが選択されるとよい。訂正モジュール130は、第1のグループ110のビットを読み込み、選択されたビットを反転して、調整されたグループ170を生成し、ECCエンジン118における、調整されたグループ170の復号化を開始するとよい。
【0021】
動作中、ワード線108の読み込み動作が実行され得る。ECCエンジン118は、ワード線108の各論理ページを無事に復号化するとよく、各ページの訂正されたいくつかの誤りを示す訂正データを生成するとよい。訂正モジュール130は、訂正されたいくつかの誤りと、誤りのしきい値数とを比較して、ワード線108またはワード線108の1つ以上のページが、後の読み込み動作において、ECCエンジン118の訂正能力を上回る危険があるかどうかを判断するとよい。
【0022】
訂正されたいくつかの誤りがしきい値を満たすのに応答して、訂正モジュール130は、ワード線108またはワード線108のページを1つ以上のグループに論理的に分けて、各グループの1のカウントをログファイル134に格納するとよい。したがって、ログファイルに格納されるカウントは、訂正され誤りのないデータの表現(すなわち、ECCエンジン118による訂正の成功の後)に対応する。グループの数は、1が0に変化した誤りおよび0が1に変化した誤りの両方が同じグループで生じる可能性が低くなるように判断されるとよい。例えば、ECCエンジン118の訂正容量が、512バイトページ毎に12ビットであれば、各ページは、12以上のグループに論理的に分けられてもよい。後の読み込み動作中、ページ内の12を超える誤りにより、ページがECCエンジン118により訂正不能である場合、各グループは、統計的に、1つのみの誤りを有する可能性が高いとよい。ログファイル134は、コントローラ104内に格納されるものとして示されているが、代わりにメモリアレイ102にて格納されてもよい。
【0023】
ワード線108またはワード線108の1つ以上のページに関して、各グループ内で特定の値を有するビットの数に対応するカウントを格納した後、ワード線108におけるその後の読み込み動作が、ECCエンジン118の訂正容量よりも多い数の誤りを有するデータのページを返し得る。ECCエンジン118は、未収束誤り信号(non-convergence error signal)などの信号を生成するとよく、それに応答して、読み込まれたデータの訂正不能な1つ以上のページがバッファ162にて格納されるとよい。ワード線108の訂正されたページは、訂正済みバッファ124にて格納されるとよい。訂正されたデータに対応する誤り位置データも、ECCエンジン118によって生成されるとよく、訂正済みバッファ124にて格納されるとよい。
【0024】
訂正モジュール130は、格納されている先行カウント136など、訂正不能なページに対応するデータのグループ内にある1の、格納されているカウントを取得するとよい。訂正モジュール130は、各グループの最近のカウント(カウント114など)と、グループの格納されている先行カウントとを比較することによって、バッファ162にて格納されているデータの個々のグループに関して、反転するいくつかのビットおよびビット値を判断するとよい。訂正される1つ以上のビット誤りを有すると示される各グループに関して、誤り訂正モジュール130は、誤り確率テーブル138にアクセスして、確率ルックアップテーブル結果に基づき誤っている可能性が最も高いと示されるビットを選択することによって、反転する1つ以上のビットを選択するとよい。
【0025】
訂正モジュール130は、調整されたグループ170と、調整されたグループ170を含めた復号化動作を開始するためのECCエンジン118に対する信号とを生成するとよい。例えば、訂正モジュール130は、各グループの選択されたビットが反転されていてバッファ162内のデータに対応する、データの調整されたページを生成してもよい(すなわち、調整されたページは、1つ以上の調整されたグループをページ形式で含む)。データの調整されたページは、ECCエンジン118に送られるとよい。別の例として、訂正モジュール130は、選択されたビットをバッファ162にて反転して、復号化のためにバッファ162を読み込むようにECCエンジン118に指示してもよい(例えば、調整されたグループ170はバッファ162内に生成される)。
【0026】
十分な数の誤りビットが反転されると、調整されたデータ内の誤りの残数は、ECCエンジン118の誤り訂正容量内であるとよく、復号化が完了されるとよい。ECCエンジン118は、調整されたデータ内の、訂正された誤りの位置を示すデータを生成するとよい。訂正モジュール130は、誤り(モジュール130によって反転されたビットおよびECCエンジン118によって訂正されたビット)の総数、誤りの位置、誤り値またはその組み合わせに基づき、ページのグループへの論理分割を更新するとよい。訂正モジュール130は、新たなグループに関して1の値の新たなカウントを生成して、ワード線108の次の読み込みで使用されるように、グループ分け情報およびカウント情報をログファイル134に格納するとよい。
【0027】
結果として、ワード線108から読み込まれるデータがECCエンジン118によって訂正可能でなくなった後でも、ワード線108の使用が続けられるとよい。したがって、誤り訂正モジュール130を使用せず、ECCエンジン118の訂正容量によって限定されるシステムと比較して、メモリアレイ102が、より長い有効寿命を有するとよい。あるいは、またはさらに、コントローラ104は、性能がより低いECCエンジン118とともに訂正モジュール130を使用して、より性能の高いECCエンジンの有効誤り訂正容量を保つように設計されてもよく、より性能の高いECCエンジンと比較して削減された電力消費、デバイスサイズおよび製造費で運用することもできる。
【0028】
図2は、誤り識別および訂正のために分析されるメモリセルの複数の変形を示す。メモリセルは、
図1のメモリアレイ102のMLC144などのMLCを含むとよい。
図2は、メモリアレイから読み込まれ得る、メモリセルの種々の変形200、250、および290を示す。説明を簡単にするために、メモリセルは、最上位ビット、中位ビット、および最下位ビットを含む列形式に配列された3つのビットを含むように示されている。最上位ビットは、第1のページの一部であってもよく、中位ビットは、第2のページの一部であってもよく、最下位ビットは、第3のページの一部であってもよい。第2および第3のページは、ECCエンジンを使用して訂正されてもよく、第1のページは、ECCエンジンによって訂正不能であってもよい。
【0029】
セルの変形200は、最上位、中位および最下位ビット値の異なる組み合わせを有する、異なる状態202、204、206、208、210、212、214および216を含む。各状態202〜216は、メモリセルの異なるしきい電圧範囲に対応するとよい。メモリセルは、初めは、状態208に対応する「101」として読み込まれてもよい。状態208は、「前」値として格納されるとよい。
【0030】
メモリセルの最上位ビットを含む第1のページは、訂正不能な誤りを含むとよい。セルの変形250および290は、第2および第3のページがECCエンジンによって訂正された後に生じ得る2つのシナリオを示す。例えば、セル変形250は、状態202〜216を含む。セル変形250の訂正された状態は、「100」を含むとよく、これは状態210に対応する。したがって、第3のページの訂正の結果、第3のビットが「1」から「0」に変化し、第2のビットは変更されない。状態210は、「後」値として格納されるとよい。208から210への状態の変化は、1の状態ポジションの移動を表すことができる。矢印218は、「前」状態から「後」状態への移動を示す。移動は、1のハミング距離に対応する。
【0031】
対照的に、セル変形290の訂正された状態は、「110」を含むとよく、これは状態216に対応する。したがって、変形290では、第3のページの訂正の結果、第3のビットが「1」から「0」に変化し、第2のページの訂正の結果、第2のビットが「0」から「1」に変化する。状態216は、「後」値として格納されるとよい。208から216への状態の変化は、2の状態ポジションの移動を表すとよい。矢印220は、「前」状態から「後」状態への移動を示す。移動は、2のハミング距離に対応する。
【0032】
ハミング距離の値は、第1のビットが誤っている確率を判断するために、誤り確率テーブルをアドレス指定するための入力として使用され得る。例えば、セル変形250に対応する1のハミング距離が、
図1の誤り確率テーブル138などの誤り確率テーブル内の値をルックアップするために使用され得る。
図1のカウント114など、セルを含むグループの1のカウントも、ルックアップ要素として使用されてもよい。
図1のコントローラ104などのコントローラは、ECC計算(例えば、1のハミング距離)およびカウントの誤り確率テーブル入力を使用して、セルの訂正された状態は「000」であるべきであると判断してもよい。矢印222は、正しい状態212への、セル状態の生じ得る反転を示す。
【0033】
別の例では、セル変形290に対応する2のハミング距離が、
図1の誤り確率テーブル138などの誤り確率テーブル内の値をルックアップするために使用され得る。誤り確率テーブルは、
図1のカウント114など、セルを含むグループの1のカウントも、ルックアップ要素として使用してもよい。
図1のコントローラ104などのコントローラは、ECC計算(例えば、2のハミング距離)およびカウントを含む誤り確率テーブル入力を生成して、セルの訂正された状態が「010」であるべきであると判断してもよい。矢印224は、正しい状態214への、最上位ビットの生じ得る反転を示す。
【0034】
したがって、セル変形250および290は、ECC計算および確率ルックアップテーブルを使用して誤りビットを反転し、訂正されている状態を有する、メモリセルの例を示す。
図1の誤り確率テーブル138などの誤り確率テーブルに提供されるデータは、読み込まれた値から部分的に訂正された値へのハミング距離によってインデックス付けされてもよい。比較的小さな処理要件を備えるECC方式が使用されてもよく、誤りを迅速に識別可能である。最終的に判断された訂正された状態が、データの完全性を改善するために使用されるとよい。
【0035】
図3は、データの誤りを識別して訂正するように構成されたシステム300の別の特定の実施形態を示す。システム300は、
図1のシステム100に類似しているが、格納されているカウント310および誤り確率テーブル312がメモリアレイ302内に含まれている。
図3は、メモリアレイ302内に格納されている、第1の格納されているカウント(例えば、格納されているカウント310)を示す一方で、
図1は、コントローラ104内に格納されている、第1の格納されているカウント(例えば、格納されている先行カウント136)を示す。
図3に示されているように、メモリアレイ302は、コントローラ304に連結され、ワード線308を含む。コントローラ304は、
図1のコントローラ104に類似した機能性を含むとよい。コントローラ304は、外部デバイス306に連結されている。外部デバイス306は、
図1の外部デバイス106と同じであってもよい。
【0036】
メモリアレイ302は、誤り確率テーブル312を含む。誤り確率テーブル312は、
図1の誤り確率テーブル138と同じであってもよい。
図3に示されている誤り確率テーブルは、ルックアップテーブル350、352、354および356を含む。
コントローラ304は、訂正モジュール314、バッファ316およびECCエンジン318を含むとよい。訂正モジュール314は、
図1の訂正モジュール130と同じであってもよい。バッファ316は、
図1のバッファ162および訂正済みバッファ124に対応するとよい。ECCエンジン318は、
図1のECCエンジン118と同じであってもよい。
【0037】
ルックアップテーブル350は、MLCの、検出された他のいくつかの誤りに基づき、MLCの特定のビットが誤っている確率を判断するために使用され得る。例えば、MLCが、異なるページにそれぞれ対応する3ビット値を格納し、2つのページが訂正可能であり、第3のページは訂正可能でない場合、第3のページ内の特定のビットにおける誤りの確率は、MLCの他の2つのビットにおいて検出されたいくつかの誤りと相関関係にあるかもしれない。
【0038】
ルックアップテーブル350は、経路346によって示されているように、第1の格納されているカウント310と、第2の読み込みのカウントとの差が1と等しく、特定のビット値が1と等しい場合に使用されるとよい。ルックアップテーブル352は、346にて示されているように、第1の格納されているカウント310と、読み込みのカウントとの差が1と等しく、特定のビット値が0と等しい場合に使用されるとよい。ルックアップテーブル352は、MLC内のいくつかの訂正された誤りを示す列を含む。この列は、ビット誤りの確率を示す列と相互に関連付けられている。
【0039】
例えば、MLCにおいて0の誤りが検出された場合、特定のビットが誤っている確率は、「A」と示されている値に対応するとよい。1つの誤りがMLCにおいて検出された場合、特定のビットが誤っている確率は、「B」と示されている値に対応するとよい。もう1つの例では、2つの誤りがMLCにおいて検出された場合、特定のビットが誤っている確率は、「C」と示されている値に対応するとよい。例えば、値「A」は、値「B」よりも小さいとよく、値「B」は、値「C」よりも小さいとよい。
【0040】
ルックアップテーブル354は、348にて示されているように、第1の格納されているカウント310と、読み込みのカウントとの差が1より大きく、特定のビット値が1と等しい場合に使用されるとよい。ルックアップテーブル356は、348に示されているように、第1の格納されているカウント310と、読み込みのカウントとの差が1より大きく、特定のビット値が0と等しい場合に使用されるとよい。ルックアップテーブル356は、部分的に訂正された値を示す列を含む。この列は、ビット誤りの確率を示す列と相互に関連付けられている。
【0041】
例示として、3ビットMLCにおいて、特定のビットが誤っている確率は、他の2つのビットの訂正された値に対応し得る。例えば、3ビットMLCの第1のビットの訂正された値および第2のビットがどちらも「0」である場合、特定のビットが誤っている確率は、「D」と示されている値に対応するとよい。第1のビットの訂正された値が「0」であり、第2のビットの訂正された値が「1」である場合、特定のビットが誤っている確率は、「E」と示されている値に対応するとよい。別の例では、第1のビットの訂正された値が「1」であり、第2のビットの訂正された値が「0」である場合、特定のビットが誤っている確率は、「F」と示されている値に対応するとよい。3ビットMLCの第1のビットの訂正された値および第2のビットがどちらも「1」である場合、特定のビットが誤っている確率は、「G」と示されている値に対応するとよい。テーブル354および356は、単一のMLCの正しいビット値および読み込まれたビット値に応じてビット誤りの可能性を示すため、テーブル354および356は、MLCの状態に基づき(例えば、MLCのしきい電圧に基づき)誤りの可能性を反映するとよい。
【0042】
動作中、メモリアレイ302から読み込まれたデータビットがECCエンジン318により訂正不可能な誤りを含むという通知を、コントローラ304が受け取ることもある。コントローラ304は、誤り確率テーブル312のルックアップ値に基づき、かつ格納されているカウント310に基づき、訂正モジュール314がデータビットの値を変更できるようにするとよい。コントローラ304は、ECCエンジン318がデータビットを訂正できるまで、反復してビットを反転するとよい。
【0043】
図3は、ルックアップテーブル350および352をいくつかの誤りに基づき示し、ルックアップテーブル354および356を、部分的に訂正された値に基づき示すが、他の実施形態では、誤りの確率を判断または推定するための根拠として、他の基準が使用されてもよい。例えば、誤り確率テーブル312すべてが、部分的に訂正された値によってインデックス付けされてもよく、または誤り確率テーブル312すべてが、検出されたいくつかの誤りによってインデックス付けされてもよい。別の例として、誤り確率テーブル312は、第1の格納されているカウント310と読み込みのカウントとの差から独立していてもよい。さらに、誤り確率テーブル312は、3ビット値に対応するように示されているが(例えば、MLCの8つの状態)、別の実施形態の、メモリセルの状態によって表されるいくつかのビットは、3ビット未満でも3ビット超でもよい。
【0044】
示されている値「A」、「B」などの1つ以上は、経験的データに基づき、理論的計算に基づき、計算の単純さおよびテーブルのストレージサイズなどの他の1つ以上の要素に基づき、またはその任意の組み合わせに基づき判断されてもよい。よって、示されている値「A」、「B」などは、ビット誤りの確率に対応するように記載されているが、他の実施形態では、示されている値「A」、「B」などの1つ以上は、実際の確率には対応しなくてもよく、代わりに、誤りの相対的可能性を示しても、生じ得る誤りに関してMLCを検査する優先順位の体系を示してもよい。
【0045】
図4は、メモリセル内の誤りを分析して訂正する方法の特定の実施形態の流れ図である。方法は、概して400と示され、402にてワード線を読み込むことを含む。例えば、
図1のコントローラ104が、メモリアレイ102からワード線(単数または複数)108を読み込んでもよい。
方法400は、404にて、訂正不能な誤りを含むページを読み込むことを含むとよい。例えば、
図1のコントローラ104が、読み込み動作146中にメモリアレイ102からページ112を読み込むとよい。
406にて、読み込まれたセルの現在の状態が保存されるとよい。この現在の状態は、「前」状態とラベル付けされるとよい。例えば、
図1の第1のグループ110およびカウント114が、バッファ162内に格納されるとよい。
408にて、ワード線のコピーが作成されるとよく、訂正可能なページ上の誤りが訂正されるとよい。訂正されたデータのコピーは、「後」とラベル付けされるとよい。例えば、
図1のECCエンジン118は、ワード線(単数または複数)108の他のページ上の誤りを訂正して、訂正されたデータをページ(単数または複数)128として格納するとよい。
方法400は、410にて、訂正されて別の状態に移行されたセルを識別することを含むとよい。例えば、
図1の訂正モジュール130は、訂正されて別の状態に移行された、ページ(単数または複数)128内のMLC144を識別するとよい。訂正されたセルに関する情報は、ECCエンジン118によって訂正モジュール130に提供されるとよい。
【0046】
412にて、反転する特定のセルが分析されるとよい。例えば、
図1の訂正モジュール130は、ECCエンジン118が訂正できないビットのグループの、訂正するべきいくつかのビットを判断することによって、MLC144を分析するとよい。訂正モジュール130は、確率テーブルにおいてルックアップ動作を行って、誤っている可能性が最も高いMLCビットを判断するとよい。訂正モジュール130は、判断されたビットを反転して、データをECCエンジン118に送るとよい。ビットのグループがまだ訂正不能であれば、訂正モジュール130は、次に反転されるビットを、次のビットに関連する、判断された確率に基づき選択するとよい。
【0047】
図5は、メモリセル内の誤りを訂正する方法の実施形態の流れ図である。方法は、概して500と示され、
図1のコントローラ104など、メモリアレイに連結されたコントローラによって実行されてもよい。方法500は、502にて、メモリアレイから読み込まれた第1のグループのデータビットが、ECCエンジンにより訂正不能な誤りを含むという通知を受け取ることを含む。例えば、
図1のコントローラ104は、読み込み動作146から、第1のグループ110が、ECCエンジン118により訂正不能な誤りを含むと判断してもよい。例示として、
図1の訂正モジュール130は、ECCエンジン118が第1のグループ110の1つ以上のページ(単数または複数)112を訂正できなかったことを示す信号を、ECCエンジン118から受け取ってもよい。訂正モジュール130はさらに、ECCエンジン118によって無事に訂正された、第2のグループ126の1つ以上のページ(単数または複数)128で生じている誤りを示す信号を、ECCエンジン118から受け取ってもよい。
【0048】
504にて、特定のビット値を有する第1のグループのデータビットのカウントが、特定のビット値を有するデータビットの先行カウントと比較されるとよい。例えば、
図1の訂正モジュール130は、通信経路140を介してカウント114を受け取ってもよい。訂正モジュール130は、ログファイル134にアクセスし、第1のグループ110に対応する格納されている先行カウント136を発見し(例えば、第1のグループ110のメモリアドレスと、格納されている先行カウント136に対応するメモリアドレスとを比較することによって)、格納されている先行カウント136をログファイル134から取得することなどによって、格納されている先行カウント136を受け取ってもよい。訂正モジュール130は、減算演算、ビット単位比較演算、またはカウント114と格納されている先行カウント136との差を判断する別の演算を実行することなどによって、カウント114と、格納されている先行カウント136とを比較するとよい。特定のビット値は、「0」であってもよく、カウント114は、第1のグループ110のいくつかの「0」値に対応してもよい。あるいは、特定のビット値は、「1」であってもよく、カウント114は、第1のグループ110のいくつかの「1」値に対応してもよい。
【0049】
第1のグループにおいて反転するべきいくつかのビットが、506にて判断されるとよい。例えば、
図1の訂正モジュール130は、格納されている先行カウント136からカウント114を減算して、訂正するビットの数148として減算の結果を代入する結果として、訂正するビットの数148を判断してもよい。負値は、1つ以上のビットが、特定の値を有するように反転されるべきであることを示してもよく、正値は、特定の値を有する1つ以上のビットが反転されるべきであることを示してもよい。あるいは、他の1つ以上のプロセスが使用されて、カウント114と格納されている先行カウント136との差の指標および大きさが判断されてもよい。
【0050】
カウントが先行カウントを上回るという判断に応答して、第1のグループのデータビットのうち、特定のビット値を有し第2のグループのデータビットの訂正されたデータビットと同じメモリセルに対応するビットが、508にて識別されるとよい。例えば、
図1のコントローラ104は、カウント114が格納されている先行カウント136を上回るのに応答して、第1のグループ110の或るビットが、第2のグループ126の訂正されたビットと同じメモリセルに対応すると識別してもよい。
【0051】
例示として、ECCエンジン118は、ECCエンジン118によって訂正された第2のグループ126のビットを示すデータを生成するとよい。訂正モジュール130は、ECCエンジン118からこのデータを受け取るとよく、第2のグループ126の訂正されたビットに対応する、第1のグループ110の1つ以上のビットを発見するとよい。例えば、MLC(単数または複数)144は、別々のページ上の同じビット位置に各ビット値が関連する、3ビット値に対応する状態を有してもよい(例えば、
図2に関して記載したように)。ページ(単数または複数)128のうちの1つ以上にある訂正された誤りのビット位置が識別されて、訂正された誤りのビット位置にあるページ(単数または複数)112内のビットが、訂正された誤りと同じMLCに対応するものとして識別されてもよい。他の実施形態では、訂正モジュール130は、同じMLC144に関連する第1および第2のグループ110、126の対応するビット間の、他の1つ以上のマッピングに従って、第1のグループ110のビットを識別してもよい。
【0052】
第2のグループ126内の訂正された誤りのMLCに対応する、第1のグループ110の複数のビットが発見されるとよい。
図1の訂正モジュール130は、誤り確率テーブル138にて複数のルックアップ動作を実行するとよい。各ルックアップ動作は、第1のグループ110の対応するビットが誤っている可能性値または確率を返すとよい。訂正モジュール130は、第2のグループ126内の訂正された誤りと同じMLCに対応する第1のグループ110の発見されたビットそれぞれのルックアップ動作を実行して、ルックアップ動作によって返された最大値1つ以上を識別するとよい。返された最大値に関連する、第1のグループ110のビット(例えば、確率テーブル138によって誤っている可能性が最も高いと示されたビット)が識別されるとよい。
【0053】
例えば、訂正モジュール130は、第2のグループ126内の訂正された誤りに対応する第1のグループ110内のビット位置を含み、ビット位置のそれぞれに関してルックアップテーブルの結果を含む、エントリのテーブルまたはバッファを生成するとよい。各ルックアップテーブルは、
図3で示されたものなど、インデックス付けデータを判断することを含んでもよい。例えば、訂正モジュール130は、同じMLCに対応する、第1のグループ110内のビット位置と、第2のグループ126のビットとを比較するとよい。訂正モジュール130は、ECCエンジン118によって生成されたデータに基づき、第2のグループ126内の対応するビット(同じMLCの)のいくつが訂正されたかを判断するとよく、ルックアップ動作中に、
図3のテーブル350または352などの確率テーブルに、結果を供給するとよい。もう1つの例として、訂正モジュール130は、訂正済みバッファ124にアクセスして、第2のグループ126の対応するビット(同じMLCの)の訂正されたビット値を読み込むとよく、ルックアップ動作中に、
図3のテーブル354または356などの確率テーブルに、訂正されたビット値を提供してもよい。
【0054】
この例の続きとして、ビット位置に対応するエントリと、ルックアップテーブルの関連する結果とによりテーブルまたはバッファをポピュレートした後、最大のルックアップテーブル結果が発見されるとよい。例えば、ルックアップテーブル結果値に基づき結果がソートされてもよく、ソート後の第1のエントリが識別されてもよい。別の例として、テーブルまたはバッファがトラバースされてもよく、最大のルックアップテーブル結果値が発見されてもよい。この例では、最大のテーブル結果値に基づき単一ビットが識別されるが、他の実施形態では、複数のビット(すなわち、Nビット)が、発見されるN個の最大のルックアップテーブル結果値に基づき識別されてもよい。例えば、Nの値は、反転されるビットの数と等しくてもよい。
【0055】
510にて、第1のグループの識別されたビットの値が変更されて、データビットの調整されたグループが生成されるとよい。例えば、訂正モジュール130が、識別されたビットを変更して、調整されたグループを生成してもよい。例示として、訂正モジュール130は、バッファ162にアクセスして、第1のグループ110からビット値のコピーを生成するとよい。訂正モジュール130は、ビット値のコピー内で、第1のグループ110の識別されたビットに対応するビット位置を発見するとよい。識別されたビットが「0」値を有する場合、訂正モジュール130は、「0」値を「1」値に置き換えて、データビットの調整されたグループ170を生成するとよい。識別されたビットが「1」値を有する場合、訂正モジュール130は、「1」値を「0」値に置き換えて、データビットの調整されたグループ170を生成するとよい。複数のビットが識別された場合、訂正モジュール130は、識別された各ビットに対して置き換え動作を実行して、データビットの調整されたグループを生成するとよい。
【0056】
識別されたビットは、512にて、ルックアップテーブルに基づき選択されるとよい(例えば、ハミング距離、カウントまたは状態値の1つ以上に少なくとも部分的に基づいて)。例示として、
図3のテーブル350および352に関して記載したように、誤りの可能性を判断するためにMLC内のいくつかの誤りが使用される場合、ルックアップテーブルは、ハミング距離に少なくとも部分的に基づくとよい。別の例として、
図3の経路346および経路348に関して記載したように、ルックアップテーブルは、アクセスする確率テーブルを選択するためのパラメータとしてカウントを使用することによって、カウントに少なくとも部分的に基づいてもよい。さらに別の例として、
図3のテーブル354および356に関して記載したように、ルックアップテーブルは、特定のビット値に関連して、MLCセルの部分的に訂正されたビット値に基づくなど、状態値に少なくとも部分的に基づいてもよい。識別されたビットは、発見されたビットのうちの、最大のルックアップテーブル結果を有するものとして選択されてもよい。
【0057】
データビットの調整されたグループは、514にて、ECCエンジンに提供されるとよい。例えば、
図1の訂正モジュール130は、経路122を介して、調整されたグループ170をECCエンジン118の入力に伝達してもよい。訂正モジュール130は、データビットの調整されたグループ170を入力データとして使用する復号化動作を開始するために、1つ以上の制御信号を、生成するか、またはその他の形でECCエンジン118に提供させるとよい。ECCエンジン118は、復号化動作を開始するとよく、訂正された出力または失敗インジケータを生成するとよい。ECCエンジン118が、訂正された出力を生成すれば、ECCエンジン118の訂正能力に適合するのに十分な数の第1のグループ110の誤りが、調整されたグループ170内で訂正されたことになる。
【0058】
失敗インジケータを受け取ると、516にて、第1のグループが訂正可能であるとECCエンジンが判断するまで、第1のグループ内のビットが反復して反転されるとよい。例えば、データビットの調整されたグループに対するECC動作の結果、失敗インジケータが
図1の訂正モジュール130に提供されることもある。それに応答して、訂正モジュール130は、反転する追加または代わりのビットの1つ以上を選択して、ECCエンジン118を使用して評価される、データビットの別の調整されたグループを生成するとよい。
【0059】
例えば、訂正モジュール130が、反転する単一のビットを反復毎に識別する場合(すなわち、単一の「1」値を「0」値に置き換えるか、または単一の「0」値を「1」値に置き換える)、訂正モジュール130は、直前に反転されたビットをその元の値に戻して、第1のグループ110の、誤りビットである可能性が次に高いものを反転して、ECCエンジン118にてテストされる、データビットの次の調整されたグループを生成するとよい。誤りビットである可能性が次に高いものは、前述したものなどのルックアップテーブル結果に従って識別されるとよい。結果として生じる、データビットの次の調整されたグループが、反復プロセスの次の反復としてECCエンジン118に提供されるとよく、任意の特定の反復において、ECCエンジンがデータビットの調整されたグループを訂正できれば、反復プロセスを終了してもよい。反復プロセスの他の終了基準には、発見されたすべてのビットがテストされ、結果として生じる調整されたグループはいずれも復号化できなかった、第1のグループ110のすべてのビット(すなわち、第2のグループ126の訂正された誤りと同じセルに対応しないビットを含む)がテストされ、結果として生じる調整されたグループはいずれも復号化できなかった、所定数の反復が完了した、その他1つ以上の終了基準、またはその任意の組み合わせが含まれ得る。
【0060】
図6は、ルックアップテーブルに基づきメモリセル内の誤りを訂正する方法の実施形態の流れ図である。方法は、概して600と示され、
図1のコントローラ104など、メモリアレイに連結されたコントローラにて実行されてもよい。方法600は、602にて、ビットのグループのうち、特定のビット値を有すると識別されたビットの第1のカウントを格納することを含み、ビットのグループは、メモリアレイのワード線の少なくとも一部に対応する。例えば、
図1のカウント114は、ワード線108に対応してもよく、ワード線108のデータ読み込みがECCエンジン118により訂正不能な場合に後で取得するために、格納されている先行カウント136としてログファイル134内に格納されるとよい。特定のビット値は、「0」であってもよく、バッファ162内に格納されるカウント114は、第1のグループ110のいくつかの「0」値に対応してもよい。あるいは、特定のビット値は、「1」であってもよく、バッファ162内に格納されるカウント114は、第1のグループ110のいくつかの「1」値に対応してもよい。
図1では、バッファ162がカウント114を含むように示されているが、代わりにカウントは、訂正モジュール130または同等の論理デバイスと通信している任意の適切なメモリ内に格納されてもよい。
【0061】
ビットの第1のカウントは、コントローラにて格納されても、メモリアレイにて格納されてもよい。
図1では、格納されている先行カウント136は、ログファイル134内にあるように示されているが、他の実施形態では、格納されているカウントは、ログファイル内に格納されていなくてもよい。
図1は、コントローラ104にて格納された、格納されている先行カウント136を示すが、他の実施形態では、格納されているカウントは、コントローラにて格納されず、代わりにメモリアレイ102にて格納されてもよい。例えば、第1のカウントは、メモリアレイ内のログファイルに格納されてもよい。
【0062】
604にて、ワード線が、誤りのしきい値数を上回るいくつかの誤りを有するという通知が受け取られてもよく、通知を受け取るのに応答して、カウントが格納されてもよい。例えば、
図1のコントローラ104は、ワード線108が過剰な数の誤りを有するという通知をECCエンジン118から受け取るのに応答して、先行カウント136を格納してもよい。ECCエンジン118は、いくつかの誤りを示してもよく、訂正モジュール130は、ワード線108が、ECCエンジン118の訂正容量を近いうちに上回る可能性が高いと判断してもよい。訂正容量に近くなるとき、コントローラ104は、ワード線108内のデータビットの1つ以上のグループに関する、先行カウント136の格納を開始するとよい。メモリアレイ102またはコントローラ104内で、フラグまたは他の指示子がセットされ、ワード線108が、多数の誤りを有することまたは格納されているカウントに関連することを示してもよい。例として、
図1の訂正モジュール130は、ワード線108の、しきい値を上回るいくつかの誤りがECCエンジン118によって検出されたことを示す信号を、ECCエンジン118から受け取ってもよい。ワード線108に対応する訂正されたデータは、データビットの1つ以上のグループに論理的に分割されてもよく、各グループに対してカウントが生成される。ワード線108に関連するカウントは、後の読み込み動作中にワード線108からデータが読み込まれるときに取得されるように、ログファイル134にて格納されるとよい。
【0063】
606にて、ワード線に関連するいくつかのカウントは、ワード線内のいくつかの誤りが増加するにつれて増加させられるとよい。例えば、
図1のワード線108内の多数の誤りは、いくつかのカウント114を増加させるとよい。例示として、訂正モジュール130は、ECCエンジン118によって検出された誤りの数を受け取ってもよく、ワード線108のカウント114と格納されている先行カウント136との差に基づいて数を判断してもよい。訂正モジュール130は、誤りの数を使用して、バッファ162内に格納されるべきいくつかのカウントを判断してもよい。ワード線108内の誤りの数が増加するにつれて、いくつかのカウントは増加するとよい。いくつかのカウントを増加させることは、単一のグループ内の複数のセルの状態によって表されるビット値が誤りにより反転する確率を下げるとよい。
【0064】
608にて、1が0に変化した誤りおよび0が1に変化した誤りのうちの1つのみがビットのグループ内に含まれるように、いくつかのカウントが判断されるとよい。例えば、
図1のいくつかのカウント114は、1が0に変化した誤りおよび0が1に変化した誤りのうちの1つのみがグループ110内に含まれるように、ECCエンジン118によって検出された誤りの数に基づき判断されるとよい。例示として、ワード線108の読み込み動作146の結果、1つ以上のグループ(例えば、グループ110)が、グループの格納されているカウント(例えば、格納されているカウント136)とは2以上異なるカウントを有することもある。対応する格納されているカウントを2以上上回るカウントを有するグループの数、および格納されているカウントより2以上少ないカウントを有するグループの数が判断されて、グループの現在の数に追加され、ワード線108を論理的に分割するための多数のグループが判断されてもよい。各グループが「1」または「0」の関連するカウントを有し、実質的に等しいサイズのグループのデータビットにワード線108を分割することによって、ワード線108に対応するグループの新たなセットが判断されてもよい。別の例として、グループの格納されているカウントと2以上異なるカウントを有する各グループが、2つ以上のより小さいグループに分割されてもよく、その結果、ワード線108の不均一なグループサイズがもたらされるが、ワード線108のうち、他の部分よりも多くの誤りを有する部分において、より細かい粒度が提供される。
【0065】
610にて、ECCエンジンにより訂正不能なデータをもたらすワード線の読み込みに応答して、第1のカウントが取得されるとよい。例えば、ECCエンジン118には訂正不能な数の誤りを有するデータをもたらすワード線108の読み込み動作146に応答して、
図1の格納されている先行カウント136が取得されてもよい。例えば、1つ以上のページ(単数または複数)112をECCエンジン118が訂正できなかったことを示す信号を、
図1の訂正モジュール130が、ECCエンジン118から受け取ってもよい。それに応答して、訂正モジュール130は、格納されている先行カウント136を取得するとよい。例示として、訂正モジュール130は、ログファイル134にアクセスし、第1のグループ110に対応する格納されている先行カウント136を発見してもよい。例えば、訂正モジュール130は、第1のグループ110のメモリアドレスと、格納されている先行カウント136に対応するメモリアドレスとを比較して、格納されている先行カウント136をログファイル134から取得してもよい。612にて、第1のカウントが、特定のビット値を有するビットの第2のカウントと比較されるとよく、ビットの第2のカウントは、ワード線から読み込まれたデータに基づき判断される。例えば、
図1の格納されている先行カウント136が、カウント114と比較されてもよい。例示として、訂正モジュール130は、減算演算、ビット単位比較演算、またはカウント114と格納されている先行カウント136との差を判断する別の演算を実行することなどによって、カウント114と、格納されている先行カウント136とを比較してもよい。
【0066】
614にて、訂正するいくつかのビットが、比較から判断されるとよい。例示として、「1」値が「0」値になるように訂正されても、「0」値が「1」値に置き換えられてもよい。一例では、
図1の訂正するビットの数148は、特定の値を有する取得されたビットのカウント114と、格納されている先行カウント136とを比較することによって判断されてもよい。例示として、
図1の訂正モジュール130は、格納されている先行カウント136からカウント114を減算して、訂正するビットの数148として減算の結果を代入する結果として、訂正するビットの数148を判断してもよい。負値は、1つ以上のビットが、特定の値を有するように反転されるべきであることを示してもよく、正値は、特定の値を有する1つ以上のビットが反転されるべきであることを示してもよい。あるいは、他の1つ以上のプロセスが使用されて、カウント114と格納されている先行カウント136との差の指標および大きさが判断されてもよい。
【0067】
メモリアレイのセルの状態が、616にて訂正されるとよい。状態は、ルックアップテーブルに基づき訂正されてもよい。例えば、メモリアレイは、複数のマルチレベルセルを含んでもよく、メモリアレイ102のMLC144の状態を変更するためのルックアップテーブルを行うために、
図1の誤り確率テーブル138が使用されてもよい。例示として、訂正モジュール130は、バッファ162にアクセスし、ルックアップテーブルを使用して、訂正する第1のグループ110のビットを識別してもよい。
図3のテーブル350および352に関して記載したように、誤りの可能性を判断するためにMLC内のいくつかの誤りが使用される場合、ルックアップテーブルは、ハミング距離に少なくとも部分的に基づくとよい。別の例として、
図3の346および348に関して記載したように、ルックアップテーブルは、アクセスする確率テーブルを選択するためのパラメータとしてカウントを使用することによって、カウントに少なくとも部分的に基づいてもよい。さらに別の例として、
図3のテーブル354および356に関して記載したように、ルックアップテーブルは、特定のビット値に関連して、MLCセルの部分的に訂正されたビット値に基づくなど、状態値に少なくとも部分的に基づいてもよい。
【0068】
本願明細書に示された様々なコンポーネントは、ブロックコンポーネントとして示され、一般用語で記載されているが、そうしたコンポーネントは、1つ以上のマイクロプロセッサ、状態マシン、または
図1のコントローラ104もしくは
図3のコントローラ304がそうしたコンポーネントによる特定の機能を実行できるように構成された他の回路、またはその任意の組み合わせを含んでよい。例えば、
図1の訂正モジュール130、または
図3のECCエンジン318および訂正モジュール314、またはその任意の組み合わせは、ハードウェアコントローラ、状態マシン、論理回路、または
図1のコントローラ104もしくは
図3のコントローラ304が誤りを検出および訂正できるようにする他の構造などの物理的コンポーネントを表し得る。
【0069】
例えば、訂正モジュール130は、訂正するいくつかのビットを判断することによってMLC144を分析するようにプログラムされたマイクロプロセッサまたはマイクロコントローラを使用して実装されてもよい。例示として、コントローラ104などのマイクロプロセッサまたはマイクロコントローラが、反転する可能性が最も高いMLCビットを判断するために、ルックアップ動作を行うようにプログラムされてもよい。コントローラ104は、判断されたビットを反転して、ECC動作を試行してもよい。ビットを含むデータがまだ訂正不能な場合、コントローラ104は、反転される次のビットを、次のビットに関連する判断された確率に基づき選択するとよい。訂正モジュール130は、コントローラ104によって実行される実行可能な命令を含むとよい。訂正モジュール130に含まれるとよく、コントローラ104によって実行される実行可能な命令は、読み出し専用メモリ(ROM)(図示せず)などの個別のメモリ位置にて格納されてもよい。
【0070】
本願明細書における開示では、様々な特定の値が使用されているが、そうした値は、限定ではなく説明の目的で提供されている。例えば、3ビットを格納するMLCが記載されているが、2ビットまたは4ビット以上を格納するMLCが使用されてもよい。別の例として、ECC訂正能力は、512バイトページ毎に12ビットとして記載されているが、他のECC訂正能力が使用されてもよい。例えば、ECC訂正能力は、512バイトワード毎に12ビットより大きくても、512バイトワード毎に12ビットより少なくてもよく、512バイト以外のワードサイズに基づいてもよい(例えば、256バイト、1,024バイトまたはその他の任意のワードサイズ)。さらに、ECC訂正能力は、説明に役立つ例として、ECC方式(例えば、リードソロモン対BCH)および強度(例えば、12パリティビット/ワード対16パリティビット/ワード)によって異なってもよい。
【0071】
図3のルックアップテーブル312などを介してビット値が誤っている確率または可能性を判断するものとして、様々な実施形態について記載してきたが、他の実施形態では、ビット値が正しい可能性または確率が使用されてもよい。例えば、特定のビットが正しい値を有する可能性またはその他のインジケータを示す1つ以上の確率テーブルが使用されてもよい。訂正されていないビットのグループ内の反転するべきビットの判断は、対応するビットが正しいことの最低の信頼度を示す、ルックアップテーブルから返される最小値を発見することを含んでもよい。
【0072】
ECCエンジンにて独立して復号化が可能な複数のページを含むワード線、ビットのグループに論理的に分けられるページ、および識別されたページ内の各グループに関して格納される1(または0)のカウントに関して、様々な実施形態が記載されている。しかし、他の実施形態では、ワード線は、単一のページを含んでもよく、ECCにて独立して復号化可能なデータの最小単位であってもよい(例えば、単一のコードワード)。あるいは、またはさらに、論理グループへのワード線の分割が誤り密度に基づき、特定のページが比較的誤りがなく、結果としてページ全体が単一グループ内にある場合などは、ビットのグループ(格納されているカウントに対応する)が1つ以上のページを含んでもよい。格納されて後の読み込み動作中に使用される各グループの1(または0)のカウントを生成するように、ページまたはワード線内のビットのグループ分けについて記載されているが、一部の実施形態では、ページまたはワード線の全部ではなく一部が、論理的にグループに分けられてもよい。例えば、ワード線またはページ(またはストレージの他の単位)の中央領域または終端領域内のビットは、グループおよび格納されているカウントに割り当てられてもよく、ワード線またはページの残りの領域(単数または複数)内のビットは、グループに割り当てられなくてもよい。
【0073】
図1のメモリアレイ102に連結されているコントローラ104など、
図1および3に示されているシステムは、外部デバイス106などの1つ以上の外部デバイスに選択的に連結されるように構成された携帯デバイスとして実装されてもよい。一方、他の実施形態では、
図1のコントローラ104およびメモリアレイ102は、携帯通信デバイスの筐体内など、1つ以上のホストデバイス内に取り付けられていても、組み込まれていてもよい。例えば、
図1のコントローラ104およびメモリアレイ102は、無線電話、携帯情報端末(PDA)、ゲーム用デバイスまたはコンソール、携帯ナビゲーションデバイス、または内部不揮発性メモリを使用する他のデバイスなどのパッケージ化装置内にあってもよい。メモリアレイ102は、フラッシュメモリ(例えば、NAND、NOR、マルチレベルセル(MLC)、分割ビット線NOR(DINOR:Divided bit-line NOR)、AND、高容量結合比(HiCR:high capacitive coupling ratio)、非対称無接点トランジスタ(ACT:asymmetrical contactless transistor )、またはその他のフラッシュメモリ)、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、読み出し専用メモリ(ROM)、ワンタイムプログラマブルメモリ(OTP)、またはその他任意のタイプのメモリなどの不揮発性メモリを含むとよい。
【0074】
本願明細書に記載した実施形態の説明は、様々な実施形態の全般的な理解を提供することを目的としている。本願明細書における開示から、他の実施形態が利用され、得られることが可能であり、本願明細書における開示の範囲から逸脱することなく、構造上および論理上の置き換えおよび変更が行われ得る。本願明細書における開示は、様々な実施形態の、後のあらゆる適応および変形を対象とするものとする。
【0075】
前に開示した主題は、制限ではなく例示と見なされるものとし、添付の特許請求の範囲は、この開示の範囲内に入るそうした変更、改良および他の実施形態すべてを対象とするものとする。したがって、許可される最大の範囲まで、本発明の範囲は、添付の特許請求の範囲およびその等価物の許容される最も広い解釈によって決定され、前述した詳細な説明によって制限も限定もされないものとする。