(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、1つのメモリでのビットの効率的な記憶に関する可能性を提供することである。
【課題を解決するための手段】
【0005】
この目的は、独立請求項の特徴に従って解決される。好ましい実施形態は、特に、従属請求項から理解することができる。
【0006】
この目的を達成するために、
−複数のメモリセルを有するメモリを含む回路であって、
−メモリが、第1の範囲と、第2の範囲とを有し、
−少なくとも1つのメモリセルが、第1の範囲の一部と、第2の範囲の一部とを含み、
−第1の範囲が、第2の範囲よりも低い信頼性を有し、
−回路が、第1のビットが第1の範囲に記憶され、第2のビットが第2の範囲に記憶されるように適合される
回路が提案される。
【0007】
回路とは、例えば、場合によっては書込みおよび/または読出しの追加の回路を有するメモリ装置でよい。
【0008】
第1のビットは、第1の情報とみなすこともでき、第2のビットは、第2の情報とみなすこともできる。第1の情報は、第2の情報とは異なることがある。例えば、第1の情報がデータを含み、第2の情報がプログラムコードを含んでいてよく、またはその逆でもよい。メモリセルは、2つの範囲(例えばLSBおよびMSB)へのその区分により、異なる情報を記憶するために使用することができる。より低い信頼性を有する第1の範囲は、例えば誤り訂正を施すことができる。第2の範囲も(場合によってはより簡単な)誤り訂正を施すことができる。
【0009】
一改良形態は、メモリセルが、そこに記憶されているデジタル値に応じた物理的値を取り、第2の範囲の異なるデジタル値に対応する物理的値の頻度分布が、第1の範囲の異なるデジタル値に対応する頻度分布よりも小さい重畳を有するものである。
【0010】
メモリセルの一範囲に記憶されている各デジタル値は、(例えば読出し時に)物理的値の頻度分布に対応する。したがって、読出し時に、記憶されているデジタル値を別のデジタル値と高い安全性で区別することができるように、2つのデジタル値に属する物理的値の頻度分布が重畳を有さない、または小さい重畳しか有さないことが好ましい。より高い信頼性を保証する範囲に関しては、その範囲に記憶されているデジタル値は、互いに十分に離れており読出し時に(より)確実な認識を実現する物理的値に変換される。
【0011】
それに対応して、より低い信頼性の第1の範囲に記憶されているデジタル値に関しては、これらのデジタル値に属する物理的値の関連の頻度分布がより大きい重畳を有し得ると言える。例えば、(より高い信頼性の第2の範囲と比較して)より低い信頼性で第1の範囲から読み出されることがあるこれらのデジタル値に関して、信頼性を高めるために誤り認識および/または誤り訂正を提供することができる。当然、第2の範囲に関して誤り認識および/または誤り訂正を提供することも可能である。
【0012】
範囲とは、例えば、メモリセルのMSBまたはLSBである。例えば、LSBが0であるデジタル値の頻度分布が、LSBが1であるデジタル値の頻度分布とは異なる限り、LSBは、MSBよりも高い信頼性を有することができる。これは、頻度分布が重畳を有さない場合である。したがって、LSBが値0を有するいくつかの頻度分布を、LSB=0である頻度分布と解釈することができる。同様のことが、LSB=1についても成り立つ。
【0013】
一改良形態は、1つのメモリセルにつき3つ以上の値を記憶可能であるものである。
【0014】
特に、1つのオプションは、1つのメモリセルにつき3つ以上のビット、特に5つ以上の値が記憶されることである。
【0015】
一改良形態は、メモリが不揮発メモリであるものである。
【0016】
一改良形態は、少なくとも1つの第1のビットに対して、メモリの同じメモリセルに記憶されている第2のビットが存在するものである。
【0017】
一改良形態は、各第1のビットに対して、メモリの同じメモリセルに記憶可能な第2のビットが存在するものである。
【0018】
一改良形態は、第1のビットと第2のビットが異なるものである。
【0019】
一改良形態は、誤りのない場合に、メモリに記憶されている第1のビットの1つ、および/またはメモリに記憶されている第2のビットの1つが、誤り符号の符号語のビットであるものである。
【0020】
誤り符号は、誤り認識および/または誤り訂正符号でよい。
【0021】
一改良形態は、誤りのない場合に、メモリに記憶されている第1のビット、アドレスビット、および/またはアドレスビットから導出されたビットに基づいて、誤り符号の符号語が決定可能であるものである。
【0022】
したがって、特に、メモリは、アドレス指定可能なメモリであり、符号語を決定するときに、アドレスのビットまたはアドレスから導出されるビットを考慮に入れることができる。したがって、誤りのない場合には、第1のビットまたは第1のビットの一部は、アドレスビットおよび/または導出されたビットと共に符号語を表す。それに対して、書込みエラーがある場合、この書込みエラーを誤り符号に基づいて認識し、場合によっては訂正することができる。
【0023】
特に、1つのオプションは、アドレスビットまたは(アドレスビットから)導出されたビットがメモリに記憶されることである。
【0024】
アドレスエラーは、例えば符号語が存在しないことによって認識することができる。
【0025】
一改良形態は、誤りのない場合に、メモリに記憶されている第1のビットの1つが、第1の誤り符号の符号語のビットであるものである。
【0026】
一改良形態は、誤りのない場合に、メモリに記憶されている第2のビットの1つが、第2の誤り符号の符号語のビットであるものである。
【0027】
一改良形態は、第1の誤り符号と第2の誤り符号とが、異なるまたは同じ誤り符号であるものである。
【0028】
一改良形態は、第1の誤り符号が、第2の誤り符号よりも高い訂正性能を有するものである。
【0029】
第1の範囲が第2の範囲よりも低い信頼性を有するので、第1の誤り符号は、それに対応する、第2の誤り符号よりも高度な誤り訂正を可能にするように構成することができる。
【0030】
一改良形態は、メモリの第1の範囲からの読出し時に、第1の誤り符号によって訂正された第1のビットが提供されるように回路が適合されるものである。
【0031】
一改良形態は、回路がさらなるメモリを含み、回路が、訂正された第1のビットがさらなるメモリに記憶されるように適合されるものである。
【0032】
一改良形態は、訂正された第1のビットが、さらなる誤り符号を使用して符号化され、さらなるメモリに記憶されるように回路が適合されるものである。
【0033】
ここで、(第1の)メモリの第1の範囲から読み出されたビットが、第1の誤り符号による訂正後に、もう一度、さらなる誤り符号で保護されて、さらなる(第2の)メモリに記憶されることが利点である。したがって、第1のメモリの第1の範囲のより低い信頼性にも関わらず、第1のビットを最終的には誤りのない状態で(場合によっては訂正して)さらに処理することができることが高い確率で保証される。
【0034】
一改良形態は、誤りのない場合に、さらなるメモリに記憶されているビット、アドレスビット、および/またはアドレスビットから導出されたビットに基づいて、さらなる誤り符号の符号語が決定可能であるものである。
【0035】
したがって、特に、メモリは、アドレス指定可能なメモリであり、符号語を決定するときに、アドレスのビットまたはアドレスから導出されるビットを考慮に入れることができる。それにより、例えば、誤りのない場合には、第1の誤り符号によって訂正された第1のビットまたはそれらの一部が、アドレスビットおよび/または導出されたビットと組み合わさって、さらなる誤り符号の符号語となる。書込みエラーがある場合、この書込みエラーは、そのようにして符号化されたデータをさらなるメモリから読み出すときに、さらなる誤り符号に基づいて認識し、場合によっては訂正することができる。
【0036】
特に、1つのオプションは、アドレスビットまたは(アドレスビットから)導出されたビットがメモリに記憶されることである。
【0037】
一改良形態は、さらなるメモリが揮発性または不揮発性メモリであるものである。
【0038】
一改良形態は、回路が、
−メモリのメモリセルが、少なくとも3つの参照値R
l、R
m、R
rを使用して書き込まれ、または読み出され、ここで、R
l<R
m<R
rであり、
−メモリセルに値zが記憶され、
−第2のビットの1つのビットの値が、値zと参照値R
mとの比較によって決定され、
−第1のビットの1つのビットの値が、値zと、参照値R
m、および参照値R
mとは異なる少なくとも1つのさらなる参照値との比較によって決定される
ように適合されるものである。
【0039】
一改良形態は、メモリセルが、値zに関して、誤りのない場合に、以下のことが成り立つように書き込まれるものである:
z<R
mに関しては、|R
l−z|<|R
m−z|、および
z>R
mに関しては、|R
r−z|<|R
m−z|
【0040】
さらに、
−複数のメモリセルを有するメモリを含む回路であって、
−メモリが、第1の範囲と、第2の範囲とを有し、
−少なくとも1つのメモリセルが、第1の範囲の一部と、第2の範囲の一部とを含み、
−回路が、第1の範囲に関する第1の処理ユニットを含み、ここで、第1の処理ユニットが、第1の範囲から第1のビットを読み出して処理し、
−回路が、第2の範囲に関する第2の処理ユニットを含み、ここで、第2の処理ユニットが、第2の範囲から第2のビットを読み出して処理する
回路が提案される。
【0041】
したがって、メモリのメモリセルからのビットの読出しを担当する2つの処理ユニットがあり、ここで、処理ユニットの各1つが、メモリセルの一部からビットを読み出して処理する。処理は、例えば誤り認識および/または誤り訂正を含むことがある。
【0042】
一改良形態は、第1の処理ユニットに基づいて誤り認識および/または誤り訂正が実施可能であるものである。
【0043】
一改良形態は、第1の処理ユニットに基づいて読み出された第1のビットが、誤りのない場合に、第1の誤り符号の符号語であるものである。
【0044】
一改良形態は、第2の処理ユニットに基づいて誤り認識および/または誤り訂正が実施可能であるものである。
【0045】
一改良形態は、第2の処理ユニットに基づいて読み出された第2のビットが、誤りのない場合に、第2の誤り符号の符号語であるものである。
【0046】
第1の誤り符号と第2の誤り符号とは、同一の誤り符号でも異なる誤り符号でもよい。
【0047】
一改良形態は、第1の範囲が第2の範囲よりも低い信頼性を有するものである。
【0048】
また、メモリにビットを記憶するための方法であって、
−メモリが、複数のメモリセルを有し、
−メモリが、第1の範囲と、第2の範囲とを有し、
−少なくとも1つのメモリセルが、第1の範囲の一部と、第2の範囲の一部とを含み、
−第1の範囲が、第2の範囲よりも低い信頼性を有し、
−方法が、第1のビットを第1の範囲に記憶し、第2のビットを第2の範囲に記憶するステップを含む
方法が提示される。
【0049】
一改良形態は、メモリセルが、そこに記憶されているデジタル値に応じた物理的値を取り、第2の範囲の異なるデジタル値に対応する物理的値の頻度分布が、第1の範囲の異なるデジタル値に対応する頻度分布よりも小さい重畳を有するものである。
【0050】
さらに、メモリからのビットを処理するための方法であって、
−メモリが、複数のメモリセルを有し、
−メモリが、第1の範囲と、第2の範囲とを有し、
−少なくとも1つのメモリセルが、第1の範囲の一部と、第2の範囲の一部とを含み、
−方法が、
−第1の処理ユニットによって、第1の範囲から第1のビットを読み出して処理するステップと、
−第2の処理ユニットによって、第2の範囲から第2のビットを読み出して処理するステップと
を含む方法が提案される。
【0051】
一改良形態は、処理が、それぞれ誤り認識および/または誤り訂正を含むものである。
【0052】
回路または本明細書で述べる処理ユニットは、例えば、プロセッサユニットおよび/または少なくとも一部が有線の回路構成もしくは論理回路構成を含むことができ、そのような回路構成は、例えば本明細書で述べるように方法を実施可能であるように適合されていることに留意されたい。
【0053】
特に、回路および/または処理ユニットに関して、各種のプロセッサまたは計算機またはコンピュータに、適宜必要な周辺機器(メモリ、入出力インターフェース、入出力デバイスなど)を提供することができる。
【0054】
方法に関する上記の説明は、それに対応して装置にも当て嵌まり、逆に、方法の特徴を装置(回路)の特徴と組み合わせることもできる。
【0055】
さらに、回路は、1つの構成要素に、または複数の構成要素に分散して実装することができる。
【0056】
また、上記の目的は、本明細書で述べる回路の少なくとも1つを含むシステムによって解決される。
【0057】
さらに、上記の目的を達成するために、デジタルコンピュータのメモリに直接ロード可能なコンピュータプログラム製品であって、本明細書で述べる方法のステップを実施するのに適したプログラムコード部分を含むコンピュータプログラム製品が提示される。
【0058】
また、上記の目的を達成するために、コンピュータによって実施可能な命令を含むコンピュータ読出し可能なメモリ媒体であって、命令が、本明細書で述べる方法のステップをコンピュータが実施するのに適している、コンピュータ読出し可能なメモリ媒体が提示される。
【0059】
以下、本発明の上述した特性、特徴、および利点、ならびにそれらが実現される様式を、例示的実施形態の概略的な記述と共に述べる。それらの例示的実施形態は、図面に関連してより詳細に説明する。ここで、分かりやすくするために、同一または同一の効果をもたらす要素には同じ参照符号を付すことができる。
【発明を実施するための形態】
【0061】
メモリセルは、異なるデジタル値に対応する異なる物理的値または状態を取ることができる。
【0062】
本明細書では以後、特に以下の略称を使用する:
G:物理的値、例えば電流、電圧、抵抗;
W
G:メモリセルの物理的値;
W
D:メモリセルに記憶されるデジタル値;
W
A:メモリセルから読み出される物理的値;
LSB:最下位ビット(least significant bit);
MSB:最上位ビット(most significant bit)
【0063】
例えば、メモリセルの物理的値は電気抵抗であり得る。その場合、より大きい抵抗がデジタル2進値0に対応し、より小さい抵抗がデジタル2進値1に対応することがある。より大きい抵抗がデジタル2進値1に対応し、より小さい抵抗がデジタル2進値0に対応してもよい。
【0064】
メモリセルへの情報の記憶または書込み時、メモリセルの物理的値または状態は、記憶されているデジタル値に対応するように決定される。
【0065】
例えば、メモリセルへの書込みの持続時間および/または書込み電流が、メモリセルの物理的値W
Gまたは状態、したがってメモリセルに記憶されるデジタル値を決定することが可能である。
【0066】
メモリセルへの情報の書込み時に決定されたメモリセルの状態W
Gに応じた物理的なアナログ値W
Aを、メモリセルからの読出し時に決定することができる。誤りのない場合には、読み出された値W
Aから、関連の記憶されている値W
Dが得られる。この値W
Dは、本明細書では、例えばデジタル値または2進値とも呼ばれる。
【0067】
例えば、異なる電気抵抗値が異なる状態に対応する場合、メモリセルに記憶されている情報の読出し時に、メモリセルの抵抗、したがって記憶されているデジタル値に応じた電流を出力することができる。例えば、W
Gは抵抗値であり、W
Aは電流の強さであり、W
Dは2進値0または1(または別のデジタル値)である。
【0068】
メモリセルからの情報の読出し時、読み出された値W
Aを参照値Rと比較することができる。
【0069】
より大きい抵抗が2進値0に対応し、より小さい抵抗が2進値1に対応する場合、読み出された電流の強さの値W
Aに関して、以下のことが得られる:より小さい電流の強さの値が2進値0に対応し、より大きい電流の強さの値が2進値1に対応する。
【0070】
それに対応して、メモリセルからの読出し時、前にメモリセルに2進値0が書き込まれたか2進値1が書き込まれたかに応じた大きさを有する電圧を決定することができる。
【0071】
代替として、読出し時、前にメモリセルに2進値0が書き込まれたか2進値1が書き込まれたかに応じた別の物理量の値が決定されてもよい。
【0072】
読み出された値W
Aと参照値Rとの比較によってデジタル値W
Dが決定される場合、デジタル値W
Dに関して、以下のことが成立し得る:
【数1】
【0073】
複数のメモリセルに2進値0が書き込まれる場合、これらのメモリセルは、例えばランダム効果により、物理的値W
Gの異なる値を取り、誤りのない場合には、これらの値は全て2進値W
D=0を割り当てられる。物理的値W
Gは、中央値または期待値E
G(0)を有する頻度分布によって表すことができる。同様に、メモリセルから読み出される値W
Aも異なる値を取り、これらの値は、期待値E
A(0)を有する頻度分布によって表すことができる。
【0074】
有意には、これは、2進値1が書き込まれるメモリセルにも当て嵌まる。複数のメモリセルに2進値1が書き込まれる場合、これらのメモリセルは、例えばランダム効果により、物理的値W
Gの異なる値を取り、誤りのない場合には、これらの値は全て2進値W
D=1に対応し、中央値または期待値E
G(1)を有する頻度分布によって表すことができる。また、メモリセルから読み出される値W
Aも異なる値を取り、これらの値は、期待値E
A(1)を有する頻度分布によって表すことができる。
【0075】
1つのメモリセルに複数ビットを記憶することが可能である場合にも、これらの実施形態が同様に成り立つ。
【0076】
図1は、2進メモリセルからの読出し時に取得することができるアナログ値W
Aの2つの頻度分布を例として示す。頻度分布W
A(0)は期待値E
A(0)を有し、頻度分布W
A(1)は期待値E
A(1)を有する。頻度分布W
A(0)はデジタル値0に対応し、頻度分布W
A(1)はデジタル値1に対応する。
【0077】
取り得る物理的値W
Aの値範囲は、参照値Rによって2つの区間に区分される。
【0078】
図1に示される例では頻度分布W
A(0)と頻度分布W
A(1)は重畳しないので、2進値0または1の誤った割当ては生じない。
【0079】
図2は、頻度分布W
A(0)および頻度分布W
A(1)を含むアナログ値W
Aの2つの頻度分布を例として示し、これらの頻度分布は、参照値Rによって2つの区間に区分される。ここでも、頻度分布W
A(0)が2進値0に対応し、頻度分布W
A(1)が2進値1に対応する。頻度分布W
A(0)とW
A(1)は、重畳範囲201(重畳範囲[0,1]とも呼ばれる)を有する。この重畳範囲201に関して、その範囲内にあるアナログ値W
Aが2進値0に割り当てられるか2進値1に割り当てられるかは、最初は一義的には決定されない。
【0080】
読み出されたアナログ値W
Aに、W
A<Rが成り立つときには2進値0が割り当てられ、W
A≧Rが成り立つときには2進値1が割り当てられる場合、アナログ値W
Aが重畳範囲201内にあると、2進値0または1として記憶されている値が誤って読み出される可能性がある。
【0081】
図3は、マルチレベルメモリセルからの読出し時に取得することができるアナログ値W
Aの頻度分布を例として示す。ここでは、4つの異なる値0、1、2、および3をメモリセルに記憶することができると仮定する。それに対応して、
図3には、これらの値に関して頻度分布W
A(0)、W
A(1)、W
A(2)、およびW
A(3)が示され、ここで、
−頻度分布W
A(0)と頻度分布W
A(1)との間で、重畳範囲301内に参照値R
−1、
−頻度分布W
A(1)と頻度分布W
A(2)との間で、重畳範囲302内に参照値R
0、
−頻度分布W
A(2)と頻度分布W
A(3)との間で、重畳範囲303内に参照値R
1
がある。したがって、アナログ値W
Aの値範囲は、3つの参照値R
0、R
1、およびR
−1に基づいて4つの区間に区分されており、ここで、R
−1<R
0<R
1が成り立っている。
【0082】
読み出されたアナログ値W
Aと参照値R
0、R
1、およびR
−1との比較によってデジタル値W
Dが決定される場合、
図3に示される例によれば、以下のことが成り立つ:
【数2】
【0083】
図3に示される例では、頻度分布は重畳する:重畳範囲301内で、値0と1に対応するアナログ値に関する頻度分布W
A(0)とW
A(1)が重畳する;この重畳範囲301は、重畳範囲[0,1]とも呼ばれる。重畳範囲302内で、値1と2に対応するアナログ値に関する頻度分布W
A(1)とW
A(2)が重畳する;この重畳範囲302は、重畳範囲[1,2]とも呼ばれる。重畳範囲303内で、値2と3に対応するアナログ値に関する頻度分布W
A(2)とW
A(3)が重畳する;この重畳範囲303は、重畳範囲[2,3]とも呼ばれる。
【0084】
重畳範囲301により、メモリセルに値0が書き込まれたにも関わらず、読み出されたアナログ値から値1が誤って決定されることがある。同様に、逆に、メモリセルに値1が書き込まれたにも関わらず、読み出されたアナログ値から値0が誤って決定されることがある。同様のことが、値[1,2]および[2,3]の各対にも当て嵌まる。
【0085】
重畳範囲301がある場合、重畳範囲301がないときよりも、値0および1が正しく記憶される信頼性が低くなる可能性がある。特に、メモリからの読出し時に誤りが生じることがある;これらの誤りは、読出しエラーとも呼ばれる。
【0086】
アナログ値W
A(0)が重畳範囲301内にある相対頻度は、値0の正しい記憶に関する信頼性に影響を及ぼす。同様に、アナログ値W
A(1)が重畳範囲301内にある相対頻度は、値1の正しい記憶に関する信頼性に影響を及ぼす。
【0087】
他に誤りが生じていない場合、アナログ値W
A(0)が重畳範囲301内にある相対頻度によって、値0の正しい記憶に関する信頼性が決定される。同様に以下のことも成り立つ:他に誤りが生じていない場合、アナログ値W
A(1)が重畳範囲301内にある相対頻度によって、値1の正しい記憶に関する信頼性が決定される。
【0088】
同様のことが、4つの値0、1、2、または3を取ることができるマルチレベルメモリセル内の4つのデジタル値全ての記憶の信頼性に関して成り立つ。信頼性は、アナログ値W
A(0)、W
A(1)、W
A(2)、およびW
A(3)が対応する重畳範囲301〜303内にある相対頻度によって影響を及ぼされる。
【0089】
この手法は、任意のマルチレベルメモリセルに拡張可能である:すなわち、8つのデジタル値0、1、2、3、4、5、6、および7を有するマルチレベルメモリセルでのデジタル値の記憶の信頼性は、値W
A(0)、W
A(1)、…、W
A(7)が対応する重畳範囲[0,1]、[1,2]、[2,3]、[3,4]、[4,5]、[5,6]、および[6,7]内にある相対頻度によって影響を及ぼされる。
【0090】
一般に、N個のデジタル値0、1、…、N−1を記憶するためのマルチレベルメモリセルでのデジタル値の記憶に関する信頼性は、アナログ値
W
A(0)、W
A(1)、…、W
A(N−1)
が、対応するN−1個の重畳範囲
[0,1]、[1,2]、…、[N−2,N−1](ここで、N=2、3、…)
に属する相対頻度に依存する。
【0091】
図4は、メモリセルに4つのデジタル値00、10、01、および11が記憶されるときに生じる複数の頻度分布W
A(00)、W
A(10)、W
A(01)、およびW
A(11)を例として示す。頻度分布W
A(00)は期待値E
A(00)を有し、頻度分布W
A(01)は期待値E
A(01)を有し、頻度分布W
A(10)は期待値E
A(10)を有し、頻度分布W
A(11)は期待値E
A(11)を有する。
【0092】
例として、
図4では、参照値R
0、R
1、およびR
−1が与えられており、ここで、
−頻度分布W
A(00)と頻度分布W
A(10)との間で、重畳範囲401(重畳範囲[00,10]とも呼ばれる)内に参照値R
−1、
−頻度分布W
A(10)と頻度分布W
A(01)との間に参照値R
0、
−頻度分布W
A(01)と頻度分布W
A(11)の間で、重畳範囲402(重畳範囲[01,11]とも呼ばれる)内に参照値R
1
があり、ここで、以下のことが成り立つ:
E
A(00)<R
−1<E
A(10)<R
0<E
A(01)<R
1<E
A(11)
【0093】
図4による例によれば、デジタル値W
Dは、読み出されるアナログ値の期待値に関して以下のことが成り立つように、アナログ値W
Gとしてメモリセルに書き込まれる:
|E
A(01)−E
A(10)|>|E
A(11)−E
A(01)|
および
|E
A(01)−E
A(10)|>|E
A(10)−E
A(00)|
【0094】
図4で、頻度分布W
A(00)とW
A(10)は重畳範囲401を有し、頻度分布W
A(01)とW
A(11)は重畳範囲402を有する。それに対し、頻度分布W
A(00)およびW
A(10)は、頻度分布W
A(01)およびW
A(11)との重畳範囲を有さない。
【0095】
ここで、説明した例では、頻度分布は、重畳範囲が生じるように、または重畳範囲が生じないように表されていることに留意されたい。特に、本明細書で示される実施形態について、「重畳範囲がない」頻度分布に関しては、「重畳範囲がある」頻度分布よりも明らかに小さくまたは弱く特徴付けられた重畳範囲が存在することを意味する。すなわち、選択された例示的実施形態に関して、「重畳範囲がない」は、重畳範囲があるときよりも明らかに高い信頼性の読出しプロセスを可能にする。
【0096】
重畳範囲401により、メモリにデジタル値00が書き込まれ、誤ってデジタル値10として読み出されることが、いくらかの確率であり得る。逆に、メモリにデジタル値10が書き込まれ、誤ってデジタル値00として読み出される可能性もある。
【0097】
重畳範囲402により、メモリにデジタル値01が書き込まれ、誤ってデジタル値11として読み出されることが、いくらかの確率であり得る。逆に、メモリにデジタル値11が書き込まれ、誤ってデジタル値01として読み出される可能性もある。
【0098】
図4に示される例では、頻度分布W
A(00)およびW
A(10)と頻度分布W
A(01)およびW
A(11)との重畳範囲がないので、メモリにデジタル値00または10が書き込まれ、誤ってデジタル値01または11が読み出されることは、さらなる誤りが生じていない限り起こり得ない。
【0099】
デジタル値00および10の最下位ビット(LSBとも呼ばれる)は、値0を有する右のビットであり、すなわち、
LSB(00)=LSB(10)=0
である。
【0100】
デジタル値01および11のLSBは、値1を有する右のビットであり、すなわち、
LSB(01)=LSB(11)=1
である。
【0101】
デジタル値00の最上位ビット(MSBとも呼ばれる)は、値0を有する左のビットであり、デジタル値10のMSBは、値1を有する左のビットであり、すなわち、
MSB(00)=0
MSB(10)=1
である。
【0102】
同様にして以下のことが成り立つ:
MSB(01)=0
MSB(11)=1
【0103】
図4に示される例では、デジタル値は、異なる信頼性でメモリセルに記憶されるようにメモリセルに書き込まれている。同じLSB、すなわち、
LSB(01)=LSB(11)=1
を有するデジタル値01と11に対応するアナログ値W
A(01)とW
A(11)の分布は、重畳範囲402を有する。したがって、メモリに書き込まれているデジタル値01が、誤って値11として読み出されることがあり、またはメモリに書き込まれているデジタル値11が、誤って値01として読み出されることがある。ここで、MSBは変化し、LSB=1は変化しない。したがって、誤りはMSBのみに作用する。
【0104】
デジタル値00と10は、同じLSB、すなわち、
LSB(00)=LSB(10)=0
を有するデジタル値00と10に対応するアナログ値W
A(00)とW
A(10)の分布が重畳範囲401を有するようにメモリセルに書き込まれて記憶されている。したがって、メモリに書き込まれているデジタル値10が、誤って値00として読み出されることがあり、またはメモリに書き込まれているデジタル値00が、誤って値10として読み出されることがある。ここで、LSB=0は変化せず、したがって、誤りはMSBのみに作用する。
【0105】
この例では、LSB=0を有するデジタル値00および10の頻度分布W
A(00)およびW
A(10)は、LSB=1を有するデジタル値01および11の分布W
A(01)およびW
A(11)との重畳範囲を有さないので、メモリに書き込まれているLSB=0を有するデジタル値は、頻度分布の重畳により誤ってLSB=1を有するデジタル値として読み出されることはない。同様に、メモリに書き込まれているLSB=1を有するデジタル値は、頻度分布の重畳により誤ってLSB=0を有するデジタル値として読み出されることはなく、したがって、LSBは、それに対応して高い信頼性で記憶されている。
【0106】
それに対し、MSBは、より低い信頼性で記憶される。なぜなら、異なるMSBを有する頻度分布W
A(01)とW
A(11)が重畳範囲402を有し、異なるMSBを有する頻度分布W
A(00)とW
A(10)が重畳範囲401を有するからである。
【0107】
LSBとMSBは、連続するステップでメモリに書き込むことができる。したがって、例えば、LSBとして、特に高い信頼性を必要とするビットをメモリセルに書き込むことが可能である。例えば、LSBによってプログラムコードを表すことができる。
【0108】
MSBとして、例えば、プログラムコードと比較して低い信頼性を許容する画像データを記憶することができる。画像データの数個のビットが誤っている場合でも、依然として良好に画像を表現することができ、または数個のビットエラーは画像表現において認識され得ない。それに対し、プログラムコードでの単一の誤りビットにより、プログラム全体が機能しなくなるおそれがある。同様に、誤り耐性がより高いまたは低いデータに関して別の例も知られており、本明細書で述べた手法と組み合わせることができる。
【0109】
また、1つのオプションは、例えばMSBおよび/またはLSBの信頼性を誤り符号によって高めることができることである。誤り符号の訂正機能および/または認識性能が十分に高い場合、例えば、そのような誤り訂正を使用して、MSBおよび/またはLSBの記憶を所定の(高い)信頼性で行うことができる。LSBおよび/またはMSBに関する誤り訂正および/または誤り認識のための誤り符号は、同じでも異なっていてもよい。
【0110】
以下では、例として、メモリセルへのデジタル値の書込み時、対応するアナログ値W
Aを大きくすることができると仮定する。また、例として、メモリセルの値の削除をブロック毎に行うことができると仮定することができ、ここで、削除時、値を削除されたメモリセルでの対応するアナログ値は、小さい値、例えば最小値を取る。削除プロセスで値を削除することができるブロックは、複数のビットを含む。また、メモリセルが、個々にまたはまとめて(例えばワード毎に)値を削除される、および/または上書きされることも可能である。
【0111】
例えば、
図4に示される表現に対応して4つのデジタル値00、10、01、および11を記憶することができるメモリセルを考察する。ブロックの値の削除後、このブロックの全てのセルが、頻度分布W
A(00)に対応するアナログ値を有する。これは、誤りが生じていない限り、デジタル値00に対応する。
【0112】
値00から始めて、値00、10、01、または11の1つをメモリセルに記憶することが可能である。値00の書込み時には、状態の変化は生じない。値10、01、または11の書込み時には、メモリセルのアナログ値が増加される。これは、デジタル値00が最小のアナログ値に対応し、デジタル値00から、(誤りのない場合には)値10、01、または11の1つをメモリセルが表すようにアナログ値W
Aを増加させることができるので可能である。
【0113】
上記の例では、例としてメモリセルによって4つの値(00、10、01、11)が表されるものとして説明した。これら4つの値は、4つの値それぞれに関して、物理的に記憶されている値の頻度分布が得られるようにメモリセルに書き込まれる;頻度分布は、部分的に重畳を有する。したがって、複数の頻度分布に基づいてメモリセルの値範囲を使用し、それにより、メモリセルに複数の値が記憶されることを可能にすることができる。頻度分布はそれぞれ、デジタル値(00、10、01、11)の1つに割り当てることができる物理的値を表す。
【0114】
したがって、頻度分布W
A(10)は、デジタル値10に割り当てられた読み出される物理的値に対応する。このデジタル値10は、2ビット、すなわち値1を有するMSBと、値0を有するLSBとからなる。
【0115】
メモリセルへの書込み時、書き込むべきデジタル値10に関して、期待値E
A(10)で頻度分布W
A(10)が生じるように書込み電圧を調整することができる。
【0116】
同様のことが、別のデジタル値00、01、および11にも当て嵌まる。それにより、書込み時、デジタル値00と10の間に重畳範囲401が生じ、デジタル値01と11の間に重畳範囲402が生じることが決定される。一方、デジタル値00および10とデジタル値01および11との間には重畳範囲がない。これは、デジタル値のMSBがより高い確率で誤っており、一方、LSBは(より)高い信頼性で読み出すことができることを意味する。
【0117】
したがって、書込みプロセスによって、ある範囲(ここではメモリセルのLSB)に関して、別の範囲(ここではMSB)よりも高い信頼性を提供することが定められている。ここで例として述べる範囲(LSB、MSB)の代わりに、メモリセルに別の区分を提供することもできる。特に、5つ以上の値を記憶することが可能である。例えば、2
3=8の値を、デジタル値000、001、010、011、100、101、110、111として記憶することができ、ここで、これらのデジタル値は、物理的値のそれぞれの頻度分布が3つのビットの少なくとも1つに関して重畳を有さないように物理的値の値範囲に対応付けることができる。
【0118】
フラッシュメモリの従来のメモリセルでは、様々なセル状態がカットオフ電圧V
thによって調整される。目標カットオフ電圧V
thに合わせてセルをプログラミングするために、対応する電圧V
CGが、メモリセルの制御ゲート(CG)に印加される。次いで、カットオフ電圧V
thは、この電圧V
CGに例えば直接従い、すなわち、
ΔV
th=ΔV
CG
である。
【0119】
LSBとMSBに関して異なる信頼性を達成するために、例えば、カットオフ電圧ΔV
th2は、カットオフ電圧ΔV
th1およびΔV
th3よりも明らかに大きく選択することができる。したがって、MSB(またはLSB)に関するカットオフ電圧の変位に対する大きい信号対雑音比およびより高い信頼性、したがってLSB(またはMSB)に関するより低い信頼性が実現される。
【0120】
図11は、メモリセルの制御ゲートでの電圧V
GSに関してカットオフ電圧V
thを表すためのグラフを例として示す。x軸にプログラム時間、y軸にカットオフ電圧V
thがプロットされている。10μsのプログラム時間において、制御ゲート電圧V
CG=10V、11V、12V、13Vに関して異なるカットオフ電圧ΔV
th1、ΔV
th2、およびΔV
th3が示されている。
【0121】
すなわち、書込み時、デジタルで表される値の少なくとも一部(ここでは1ビット)に関して、関連の物理的値の頻度分布が(本質的に)重畳を有さないことが保証される。そのような重畳は、曖昧さをもたらすことになる。
【0122】
したがって、2つの値を有することができるそのような高信頼性のビットに関して、以下のことが成り立つ:高い信頼性のビットが第1の値を有する頻度分布は、高信頼性のビットが第2の値を有する頻度分布と重なり合わない。少なくとも1つのさらなる(場合によってはより低い信頼性の)ビットがここでどのような値を有するかは重要でない。したがって、高い信頼性のビットの第1の値は、その第2の値と高い安全性で区別可能である。したがって、この高い信頼性のビットをメモリセルで使用し、そこで、メモリのメモリセルの高い信頼性のビットのみに情報を記憶することができる。
【0123】
それに対応して、メモリセルの低い信頼性のビット(この例ではMSB)に関しては、より低い信頼性を甘受することができる;誤り訂正によって、信頼性を改良することができる。特に、誤り訂正値を、通常の動作で使用される高速メモリに書き込むことができる。
【0124】
書込みシーケンス:LSB、次いでMSB
1つのオプションは、第1の書込みプロセスで、LSBの値をメモリセルに書き込み、その後、第2の書込みプロセスで、前に第1の書込みプロセスで既にLSBを書き込まれたメモリセルに任意のMSBを書き込むことである。
【0125】
例えば、値を削除されたメモリセルにLSBの値0が記憶される場合、このメモリセルには値00が書き込まれる。この場合、メモリセルのアナログ値W
A(00)は変更されない。
【0126】
値を削除されたメモリセルにLSBの値1が記憶される場合、このメモリセルには値01が書き込まれ、その結果、メモリセルはアナログ値W
A(01)を取る。
【0127】
次に、状況に応じて、以下のようにMSBを記憶することができる:
1.第1のステップで、値0を有するLSBが書き込まれ、したがって、メモリセルにはデジタル値00が記憶されている。
1.1.MSBが値0を有する。この場合、メモリセルへの書込みは行われず、記憶されているデジタル値は、引き続き00である。
1.2.MSBが値1を有する。この場合、メモリセルに値10が書き込まれる。
2.第1のステップで、値1を有するLSBが書き込まれ、それにより、メモリセルにはデジタル値01が記憶されている。
2.1.MSBが値0を有する。この場合、メモリセルへの書込みは行われず、記憶されているデジタル値は、引き続き01である。
2.2.MSBが値1を有する。この場合、メモリセルに値11が書き込まれる。
【0128】
値1を有するMSBの書込み時、LSBの書込み後のメモリセルの状態が、メモリセルにデジタル値10が書き込まれることになるかデジタル値11が書き込まれることになるかを決定する。したがって、値1を有するMSBのこの書込みプロセスは、前に書き込まれたメモリセルのLSBの読出しに依存する。値0を有するMSBの書込み時、LSBとして前にどの値が記憶されたかは重要でない。したがって、ここで、メモリセルに記憶されている(LSBの)値の読出しを省略することができる。
【0129】
書込みシーケンス:MSB、次いでLSB
まず第1の書込みプロセスで、MSBの値をメモリセルに書き込み、その後、第2の書込みプロセスで、第1の書込みプロセスで既にMSBを書き込まれたメモリセルの1つに任意のLSBを書き込むことも可能である。
【0130】
例えば、MSBの値が0である場合、このメモリセルに値00が書き込まれる。MSBの値が1である場合、対応するメモリセルに値10が書き込まれる。
【0131】
次に、状況に応じて、以下のようにLSBを記憶することができる:
1.第1のステップで、値0を有するMSBが書き込まれ、したがって、メモリセルにはデジタル値00が記憶されている。
1.1.LSBが値0を有する。この場合、メモリセルへの書込みは行われず、記憶されているデジタル値は、引き続き00である。
1.2.LSBが値1を有する。この場合、メモリセルに値01が書き込まれる。
2.第1のステップで、値1を有するMSBが書き込まれ、したがって、メモリセルにはデジタル値10が記憶されている。
2.1.LSBが値0を有する。この場合、メモリセルへの書込みは行われず、記憶されているデジタル値は、引き続き10である。
2.2.LSBが値1を有する。この場合、メモリセルに値11が書き込まれる。
【0132】
値1を有するLSBの書込み時、MSBの書込み後のメモリセルの状態が、セルにデジタル値01が書き込まれることになるかデジタル値11が書き込まれることになるかを決定する。したがって、値1を有するLSBのこの書込みプロセスは、前に書き込まれたメモリセルのMSBの読出しに依存する。値0を有するLSBの書込み時、メモリセルのMSBとして前にどの値が記憶されたかは重要でない。この場合、前に記憶されているMSBの値を読み出す必要はない。
【0133】
ここで、値を削除されたメモリセルにデジタル値00、10、01、または11がそれぞれ直接書き込まれることも可能であることに留意されたい。特に、1つのオプションは、メモリセルが前にも値00を有しているときでさえ、メモリセルにデジタル値00を書き込むことである。その点で、前述した例の番号1.1.および2.1.の代替形態は、メモリセルの前の状態から変わらないときでさえ、値00が書き込まれるものである。
【0134】
さらなる例示的な頻度分布
図5は、3つのデジタル値0、1、および2がメモリセルに記憶されるときに生じ得るアナログ値の例示的な頻度分布W
A(0)、W
A(1)、およびW
A(2)を示す。頻度分布W
A(0)は期待値E
A(0)を有し、頻度分布W
A(1)は期待値E
A(1)を有し、頻度分布W
A(2)は期待値E
A(2)を有する。
【0135】
例として、
図5には参照値R
0およびR
1が提示されており、ここで、
−頻度分布W
A(0)と頻度分布W
A(1)との間に参照値R
0、
−頻度分布W
A(1)と頻度分布W
A(2)の間で、重畳範囲502(重畳範囲[1,2]とも呼ばれる)内に参照値R
1
があり、ここで、以下のことが成り立つ:
E
A(0)<R
0<E
A(1)<R
1<E
A(2)
【0136】
図5で選択された例によれば、頻度分布W
A(0)とW
A(1)は重畳範囲を有さず、頻度分布W
A(1)とW
A(2)は重畳範囲501を有する。
【0137】
重畳範囲501では、デジタル値1がメモリに書き込まれ、誤ってデジタル値2として読み出されることが、いくらかの確率であり得る。
【0138】
頻度分布W
A(0)と頻度分布W
A(1)およびW
A(2)との間には重畳範囲がないので、デジタル値0がメモリセルに書き込まれて、この値0とは異なるデジタル値1または2が読み出されることは、低い確率でしか起こり得ない。
【0139】
メモリ内のデータのアドレス指定
図6は、アドレス601およびデータ602を有するメモリの例示的な図を示す。1つのアドレス601につき64個のメモリセルにデータ602を記憶することができ、ここで、各メモリセルが4つの異なるデジタル値を記憶することができる。
図6に、例として、9つのアドレスa
1、a
2、…、a
9に関するメモリの配列が示されている。
【0140】
アドレスa
i(i=1、2、…、9)はそれぞれ64個のメモリセルをアドレス指定し、ここで、異なる形で2進符号化された4つの値を1つのメモリセルに記憶することができる。これら4つの異なる値は、2つの2進値xおよびyからのタプルxyとして表される。ビットxは、タプルxyのMSBであり、ビットyは、タプルxyのLSBである。したがって、メモリセルに記憶されている値は、MSBおよびLSBを有する。
【0141】
例として、LSBがMSBよりも高い信頼性で記憶されていると仮定する。
【0142】
この例では、アドレスa
1〜a
4は、以下のように値を設定される:
【数3】
【0143】
これは、ビットuおよびvを有するxyタプルであり、vビットの値がMSBとして記憶され、uビットの値がLSBとして記憶されている。
【0144】
アドレスa
1の下でLSBとして高い信頼性で記憶されているビットu
1は、64ビットのワード幅を有するデータ語を形成する。これは、同様に、
【数4】
に従って、アドレスa
2、a
3、およびa
4の下で記憶されているLSB u
2、u
3、およびu
4に関しても当て嵌まる。
【0145】
アドレスa
1、a
2、a
3、およびa
4の下でMSBとしてより低い信頼性で記憶されているビット
【数5】
は、256ビットのワード幅の第1のデータ語を形成する。
【0146】
例として、ビットv
1は、28個のチェックビット
【数6】
を有する誤り符号のチェックビットによって保護される。この例では、ビットu
1、u
2、u
3、およびu
4は、追加のチェックビットによって保護されない。
【0147】
28個のチェックビット
【数7】
は、アドレスa
5の下で、MSBとしての36個のデータビット
【数8】
およびLSBとしての64個のデータビット
【数9】
と共に記憶される。
【0148】
誤りのない場合、ビット
【数10】
が、第1の誤り符号Cod
1の符号語を形成する。
【0149】
一般に、誤り符号は、誤り認識および/または誤り訂正符号でよい。
【0150】
例えば、誤り符号Cod
1は、256個のデータビットのための合計28個のチェックビットを有する追加の全パリティを有するガロア体GF(2
9)による既知の3ビットエラー訂正BCH符号でよく、この3ビットエラー訂正BCH符号も各4ビットエラーを認識する。
【0151】
同様に、アドレスa
5〜a
9は、以下のように値を設定されている:
【数11】
【0152】
アドレスa
5、a
6、a
7、a
8、およびa
9の下でMSBとしてより低い信頼性で記憶されるビット
【数12】
は、ワード幅256の第2のデータ語を形成する。これらの256個のビットv
2は、28個のチェックビット
【数13】
によって保護される。
【0153】
誤りのない場合、ビット
【数14】
が、第1の誤り符号Cod
1の符号語を形成する。
【0154】
アドレスa
5の下でLSBとして高い信頼性で記憶されているビットu
5は、64ビットのワード幅を有するデータ語を形成する。これは、同様に、
【数15】
によって、アドレスa
6、a
7、a
8、およびa
9の下で記憶されているLSB u
6、u
7、u
8、およびu
9に関しても当て嵌まる。
【0155】
この例では、ビットu
5、u
6、u
7、u
8、およびu
9は、誤り符号の追加のチェックビットによって保護されない。
【0156】
図7は、アドレス701およびデータ702を有するメモリの例示的な図を示す。1つのアドレス701につき72個のメモリセルにデータ702を記憶することができ、ここで、各メモリセルが、4つの異なるデジタル値を記憶することができる。メモリセル当たりに記憶されるデジタル値はそれぞれ、2つの2進値xとyのタプルxyとして与えることができる。
【0157】
ビットxは、タプルxyのMSBであり、ビットyは、タプルxyのLSBである。したがって、メモリセルに記憶されている値は、MSBおよびLSBを有する。
【0158】
例として、MSBがLSBよりも高い信頼性で記憶されていると仮定する。
【0159】
アドレスa
1〜a
8の下で、それぞれ72個のメモリセルが使用可能である。ここで、アドレスa
1〜a
3は、以下のように値を設定されている:
【数16】
【0160】
256個のデータビット
【数17】
、および28個のチェックビット
【数18】
は、誤りのない場合には、第1の誤り符号Cod
1の符号語
【数19】
を形成する。これらのビットは、LSBとして、より低い信頼性で記憶される。上の例では、ビットは、「−」で特徴付けられ、その値設定は重要でない。したがって、アドレスa
4の下で、LSBの最後の4つの値は不特定である。これら最後の4つの値は、例えば、0または別の2進値に設定することができる。
【0161】
ビット
【数20】
は、誤りのない場合には、それぞれ第2の誤り符号Cod
2の符号語を形成する。ここで、i=1、…、4に関して、ビット
【数21】
はデータビットであり、ビット
【数22】
はチェックビットである。
【0162】
同様に、アドレスa
5〜a
8は、以下のように値を設定されている:
【数23】
【0163】
256個のデータビット
【数24】
、および28個のチェックビット
【数25】
は、誤りのない場合には、第1の誤り符号Cod
1の符号
【数26】
を形成する。これらのビットは、LSBとして、より低い信頼性で記憶される。
【0164】
ビット
【数27】
は、誤りのない場合には、それぞれ、第2の誤り符号Cod
2の符号語を形成する。ここで、i=5、…、8に関して、ビット
【数28】
はデータビットであり、ビット
【数29】
はチェックビットである。
【0165】
ここで挙げた例では、アドレスa
8の下で、LSBの最後の4つの値は不特定のままである;これらのビットは、シンボル「−」で表されている。
【0166】
追加のメモリ
図8は、アドレス801およびデータ802を有するメモリの例示的な図を示す。
図8に示されるメモリは、(追加の)第2のメモリとして提供することができる。この第2のメモリは、例えば、第1のメモリから読み出されたLSBを記憶する働きをすることができる。例えば、LSBは、MSBよりも低い信頼性で記憶されることがある。
【0167】
例えば、場合によっては誤って読み出されたLSBを、第1の誤り符号Cod
1を使用して訂正することができ、その結果、訂正されたビットを第2のメモリに記憶することができる。
【0168】
任意選択で、LSBのデータビットを、誤り符号Cod
1を使用して訂正することができ、これらの訂正されたデータビットを使用して、第3の誤り符号Cod
3のチェックビットを形成することができる。符号Cod
1を使用して訂正されたデータビット、およびそこから第3の誤り符号Cod
3を使用して形成されたチェックビットは、第2の2進メモリに記憶することができる。
【0169】
例えば、
図7が、対応する第1のメモリを示し、
図8が、第2のメモリを示すと仮定する。第1のメモリに記憶されているデータが、ワード幅256の場合によっては誤っているLSB
【数30】
を形成し、256ビット幅のデータv
i’のそれぞれに関して、第1の誤り符号Cod
1の28個のチェックビット
【数31】
があり、それにより、誤っているデータビットは、第1のメモリからの読出し時に、訂正ユニットによって、第1の誤り符号Cod
1を使用して訂正されて、訂正されたデータビット
【数32】
になる。
【0170】
図8に、第1の誤り符号を使用して訂正されたデータビットv
icorが、以下のアドレスA
1〜A
32の下で、第3の誤り符号Cod
3の対応するチェックビットC
iと共に記憶されることが示されている:
【数33】
【0171】
チェックビット
【数34】
は、第3の誤り符号Cod
3に関して、エンコーダによって、誤りのない場合には以下のビット組合せがそれぞれ第3の誤り符号Cod
3の符号語を形成するように決定される:
【数35】
【0172】
第2のメモリは、揮発性メモリ、例えばSRAMやMRAMなど、および/または不揮発性メモリを含むことができる。第1のメモリは、不揮発性メモリ、例えばフラッシュメモリなどを含むことができる。特に、1つのオプションは、第1のメモリと第2のメモリが同じまたは異なるタイプの任意のメモリであることである。
【0173】
1つのオプションは、より低い信頼性を有する第1のメモリに記憶されているビットが、第1のメモリから大きなワード幅で読み出され、第1の誤り符号Cod
1を使用して訂正されることである。ここで、第1の誤り符号Cod
1は、多数の誤りを訂正するために比較的大きい符号距離を有することができる。誤りの訂正は、例えばBCH符号に関して(非特許文献1)に記載されているように順次に行うことができる。
【0174】
ここで、利点は、データビットの大きなワード幅に関して、チェックビットの数を比較的小さくすることができることである。したがって、例えば、1024個のデータビットを有する3ビットエラー訂正BCH符号に関して、33個のチェックビットが必要とされることがあり、それに対し、256個のデータビットに関して、既に27個のチェックビットが必要である。したがって、データビットの数を768個増やすときに、チェックビットの数を6だけ増加させればよい。例えば、2
n個のデータビットを有する符号に関して、1ビットエラーを訂正することができるようにするために、n+1個のチェックビットが必要である。したがって、1024個のデータビットに関して、n=10であり、11個のチェックビットとなる。tビットエラーが訂正される場合、tビットエラー訂正BCH符号を使用することができる。例えば、t×(n+1)個のチェックビットが得られる。3ビットエラー(t=3)に関して、前述した1024個のデータビットに関しては、33個のチェックビットが必要とされ、256個のデータビットに関しては、3×(8+1)=27個のチェックビットが必要とされる。
【0175】
また、(非特許文献1)によれば、誤り符号として(例えば、第1の誤り符号Cod
1に関して)、いわゆる低密度パリティ符号を使用することも可能である。
【0176】
第1の誤り符号Cod
1を使用して訂正されたビットを、第3の誤り符号Cod
3を使用して第3の誤り符号の符号語として符号化し、それらの符号語を第2のメモリに記憶することが可能である。第2のメモリに記憶されているビットには、例えば動作実行中に高速かつ高信頼性でアクセスすることができ、ここで、第2のメモリでの記憶中に生じた誤りを、第3の誤り符号を使用して訂正することができる。同様に、メモリに記憶されているビットを様々な様式で更新および/または復元することもできる。
【0177】
図9は、アドレス901およびデータ902を有するメモリの例示的な図を示す。
図8に示されるメモリを、前の実施形態に対応して第1のメモリとして使用することができる。
【0178】
1つのアドレス901につき8個のメモリセルにデータ902を記憶することができ、ここで、各メモリセルが4つの異なるデジタル値を記憶することができる。メモリセル当たりに記憶されるデジタル値はそれぞれ、2つの2進値xとyのタプルxyとして与えることができる。
【0179】
ビットxは、タプルxyのMSBであり、ビットyは、タプルxyのLSBである。したがって、メモリセルに記憶される値は、MSB(ビットx)およびLSB(ビットy)を有する。
【0180】
例として、LSBがMSBよりも高い信頼性で記憶されていると仮定する。
【0181】
アドレスa
1〜a
6の下で、それぞれ8個のメモリセルが使用可能である。ここで、アドレスa
1〜a
6は、以下のように値を設定される:
【数36】
【0182】
データビット
【数37】
およびチェックビット
【数38】
は、誤りのない場合、LSBの起こり得る誤りを訂正するための誤り符号Cod
2の符号語
【数39】
を形成する。誤り符号Cod
2は、例えば、1ビットエラーを訂正するためのハミング符号でよい。
【0183】
データビット
【数40】
およびチェックビット
【数41】
は、誤りのない場合、LSBの起こり得る誤りを訂正するための誤り符号Cod
2の符号語
【数42】
を形成する。
【0184】
データビット
【数43】
およびチェックビット
【数44】
は、誤りのない場合、LSBの起こり得る誤りを訂正するための誤り符号Cod
2の符号語
【数45】
を形成する。
【0185】
ビットv
1、…、v
8は、それぞれMSBとして、アドレスa
1、a
2、およびa
3の下に、したがって3重に(冗長で)記憶されている。ここでは、MSBを訂正するための誤り符号Cod
1として2重の反復符号を使用することができ、それにより、場合によっては誤っている値を例えば多数決によって訂正することができる。
【0186】
データビット
【数46】
およびチェックビット
【数47】
は、誤りのない場合、生じていることがあり得るLSBの誤りを訂正するための誤り符号Cod
2の符号語
【数48】
を形成する。
【0187】
データビット
【数49】
およびチェックビット
【数50】
は、誤りのない場合、生じていることがあり得るLSBの誤りを訂正するための誤り符号Cod
2の符号語
【数51】
を形成する。
【0188】
データビット
【数52】
およびチェックビット
【数53】
は、誤りのない場合、生じていることがあり得るLSBの誤りを訂正するための誤り符号Cod
2の符号語
【数54】
を形成する。
【0189】
ビットv
9、…、v
16はそれぞれ、MSBとして、アドレスa
4、a
5、およびa
6の下に、したがって3重に(冗長で)記憶されている。ここでは、MSBを訂正するための誤り符号Cod
1として2重の反復符号を使用することができる。
【0190】
例示的な回路構成
図10aは、例示的な回路構成を示し、ここで、LSBは、メモリ103(前の実施形態による第1のメモリ)のメモリセルに、MSBよりも高い信頼性で記憶されている。
【0191】
エンコーダ101の入力にデータビットvが入り、エンコーダ101の出力には、データビットvを有する誤り符号Cod
1の符号語が提供される。したがって、エンコーダ101は、誤りのない場合にビット組合せv,cが誤り符号Cod
1の符号語になるように、データビットvに基づいてチェックビットcを決定する。
【0192】
ここで、エンコーダ101が、データビットvを、並列または順次に、誤り符号Cod
1の符号語に符号化することも可能である。これらの符号語は、MSBとしてメモリ103に記憶される。
【0193】
エンコーダ101の出力は、マルチプレクサ102の0入力と接続されており、マルチプレクサ102の出力は、メモリ103のデータ入力と接続されている。マルチプレクサ102の1入力にはデータビットuが入り、これは、LSBとしてメモリ103に記憶される。
【0194】
マルチプレクサ102は、2進制御信号st1によって制御される;制御信号st1の値に応じて、マルチプレクサ102は、その0入力または1入力をその出力と接続する。
【0195】
例えば、MSBは、LSBよりも低い信頼性でメモリ103のメモリセルに記憶される。
【0196】
データビットvは、誤り符号Cod
1の符号語のビットである。それらは、MSBとしてメモリ103に記憶される。誤り符号Cod
1による符号化によって、追加のチェックビットが生成され、メモリ103のMSBのより低い信頼性が少なくとも一部補償される。したがって、MSBの記憶中に生じた誤りは、メモリ103からのMSBの読出し時に訂正ユニット105によって訂正することができる。それに従って、そのようにして訂正されたデータビットがメモリ106(前の実施形態による第2のメモリ)に記憶される。
【0197】
メモリ103は、例えば1つのメモリセルにつき4つのデジタル値を記憶するマルチレベルメモリとして構成することができる。
【0198】
LSBの読出しは、例えば、ただ1つの参照値との比較によって高速で行うことができ、したがって、LSBは、高信頼性かつ高速でメモリ103から読み出すことができる。
【0199】
MSBの読出しは、2つの参照値との比較を必要とし、これは、LSBに比べて時間がかかる。さらに、MSBの記憶はLSBの記憶よりも信頼性が低く、これは、場合によっては、マルチビットエラーに関する誤り訂正を必要とする。例えば、マルチビットエラーに関する誤り訂正は順次に行うことができる。
【0200】
したがって、メモリ103に記憶されていたMSBは、その誤り訂正の後にメモリ106に記憶することができる。例えば、メモリ106は、高速の読出しアクセスを可能にするように構成されている。メモリ106は、揮発性メモリ、例えばSRAMでよい。メモリ103は、不揮発性メモリとして構成することができる。
【0201】
メモリ103の出力は、デマルチプレクサ104と接続されている。メモリ103からLSBが読み出される場合、デマルチプレクサ104は、その入力をその1出力と接続し、それによりLSB uを出力することができる。メモリ103のMSBが読み出される場合、デマルチプレクサ104は、その入力をその0出力と接続し、それにより、メモリ103から読み出された、場合によっては誤っているMSB v’が、訂正ユニット105の入力に送られる。訂正ユニット105は、場合によっては誤っているビットv’を、誤り符号Cod
1を使用して訂正し、訂正されたデータビットv
corにして、メモリ106に記憶することができる。
【0202】
デマルチプレクサ104は、2進制御信号st2によって制御される;制御信号st2の値に応じて、デマルチプレクサ104は、その入力を0出力または1出力と接続する。
【0203】
その結果、訂正されたデータビットをメモリ106から読み出すことができる。
【0204】
さらに、
図10aで、メモリ103はアドレスaによってアドレス指定可能であり、メモリ106はアドレスAによってアドレス指定可能であることが示唆されている。
【0205】
図10bは、概して
図10aに基づく例示的な回路構成を示す。その点で、同じ参照符号を使用する。
図10aに関する説明を参照されたい。
【0206】
図10aとは異なり、LSBとしてメモリ103のメモリセルに記憶されるデータビットuは、その記憶の前に、エンコーダ107によって、誤り符号Cod
2を使用してビットシーケンスu
cod2に符号化される。ビットシーケンスu
cod2は、誤りのない場合には、誤り符号Cod
2の符号語に対応する。したがって、メモリから読み出された、場合によっては誤っているビットu’
cod2が符号Cod
2の符号語を表すかどうかを訂正ユニット108が判定することによって、メモリ103からの読出し時の読出しエラー、メモリ103への書込み時の書込みエラー、または別の書込みエラーを認識し、場合によっては訂正することができる。符号語がない場合、LSBとしてメモリ103に記憶されていた誤っているビットu’
cod2を、訂正ユニット108を使用して訂正することができる。このために、デマルチプレクサ104の1出力が、訂正ユニット108の入力と接続されている。訂正ユニット108の出力に、場合によっては訂正されたデータu
cor2が提供される。
【0207】
図10cは、
図10aまたは
図10bに基づく例示的な回路構成を示し、ここでは、訂正ユニット105とメモリ106との間にさらなるエンコーダ109が提供され、このエンコーダ109は、訂正ユニット105から出力された訂正されたビットv
cor1を、誤り符号Cod
3を使用して符号語
【数55】
に符号化し、したがって、誤り符号Cod
1を使用して訂正され、誤り符号Cod
3を使用して符号化されたビットが2進メモリ106に記憶される。
【0208】
ここで、場合によっては誤っているビット
【数56】
をメモリ106から読み出し(誤りは、例えば記憶時、読出し時、または例えば光線もしくは加熱による記憶中に生じることがある)、メモリ106の下流に接続された訂正ユニット110に基づいて、誤り符号Cod
3を使用して、訂正されたビットv
cor3に訂正することができる。
【0209】
誤り符号Cod
3は、例えば、ハミング符号、Hsiao符号、または別の符号でよく、これは、特に、メモリ106に記憶されているビットの高速の訂正を可能にする。
【0210】
図10dは、
図10aに示される回路構成に概して基づく例示的な回路構成を示す。
図10aに示した回路構成とは異なり、エンコーダ101の代わりにエンコーダ111が提供され、訂正ユニット105の代わりに訂正ユニット112が提供される。
【0211】
エンコーダ111は、追加の入力を有し、その入力に、メモリ103のアドレスaが送られる。エンコーダ111は、その出力でチェックビットを提供し、これらのチェックビットは、エンコーダ111に入るデータビットvと、アドレスaのアドレスビットとに基づく。ここで、チェックビットは、データビット、アドレスビット、およびチェックビットが誤り符号Cod
1の符号語を形成するように決定することができる。任意選択で、アドレスビット、またはアドレスビットから導出されたビットは、メモリ103に記憶されなくてもよい;アドレスビット、またはアドレスビットから導出されたビットをメモリ103に記憶することもできる。例えば、アドレスビットのパリティをメモリ103に記憶することができる。
【0212】
同様に、訂正ユニット112も(訂正ユニット105と比較して)追加の入力を有し、その入力に、メモリ103のアドレスaが送られる。それにより、エンコーダ111と訂正ユニット105それぞれに同じアドレスビットが利用可能であり、それに対応して訂正時に考慮に入れることができる。
【0213】
図10eは、さらなる例示的な回路構成を示し、この回路構成は、概して
図10bに示した回路構成に基づいている。
図10bに示した回路構成とは異なり、エンコーダ107の代わりにエンコーダ113が提供され、訂正ユニット108の代わりに訂正ユニット114が提供されている。
【0214】
エンコーダ113および訂正ユニット114は、それぞれ追加の入力を有し、それらの入力に、メモリ103のアドレスaに基づいて特定されたビットが入る。これに関連してブロック115が提供され、ブロック115は、アドレスaのアドレスビットから導出されるビットf(a)を決定し、次いで、このビットf(a)がエンコーダ113または訂正ユニット114に入力される。
【0215】
エンコーダ113は、その出力でチェックビットを提供し、これらのチェックビットは、エンコーダ113に入力されたデータビットuおよび導出されたビットf(a)に基づく。ここで、データビット、アドレスビットから形成されたビット、およびチェックビットが誤り符号Cod
2の符号語を形成するようにチェックビットを決定することができる。任意選択で、アドレスビット、またはアドレスビットから導出されたビットは、メモリ103に記憶されなくてもよい。
【0216】
訂正ユニット114は、導出されたビットf(a)に応じて訂正されたデータビットを形成する。
【0217】
例えば、ブロック115は、アドレスaのアドレスビットをそこから導出されたビットに対応付ける一意に特定される関数を提供する。例えば、関数f(a)は、アドレスaのアドレスビットのパリティを決定することができる。
【0218】
図10fは、
図10cの回路構成の変形形態を示す。
図10cに示した回路構成とは異なり、
図10fでは、エンコーダ109の代わりにエンコーダ116が提供され、訂正ユニット110の代わりに訂正ユニット117が提供されている。
【0219】
エンコーダ116および訂正ユニット117は、それぞれ追加の入力を有し、それらの入力に、メモリ106のアドレスAのアドレスビットが入る。エンコーダ116は、その出力でチェックビットを提供し、これらのチェックビットは、エンコーダ116に入るデータビットおよびアドレスビットに基づいて決定することができる。訂正ユニット117は、提供されたアドレスビットに従って訂正されたデータビットを形成する。
【0220】
さらなる利点、用途、および例
本明細書で述べた手法は、様々な用途を可能にする。例えば、フラッシュメモリアレイに、多数のメモリセルを設けることが可能であり、これらのメモリセルは、読出し増幅器(センス増幅器)によって読み出される。メモリセルは、それぞれ第1の範囲および第2の範囲を含み、ここで、第2の範囲は、第1の範囲よりも高い信頼性を有する。ここで、読出し増幅器を様々なモードで作動させることができる。
【0221】
例として、読出し増幅器は、例えば、読み出される物理的値を記憶されているデジタル値に正確に割り当てることを高い信頼性で可能にする参照値との閾値比較を行うことによって、第1のモードで第2の範囲からの読出しのために動作させることができる。これは、メモリセルの第2の範囲に記憶されているデジタル値に関する物理的値の頻度分布が重畳を有さない、または小さな重畳しか有さないためである。
【0222】
読出し増幅器の第2のモードでは、両方の範囲(または第1の範囲のみ)を読み出すことができる。ここで、物理的値の頻度分布に対応して第1の範囲に記憶されたデジタルデータを区別するための追加の参照値を使用することができ、後続の誤り認識および/または誤り訂正が、これらの頻度分布の比較的大きいことがある重畳を少なくとも一部(あるいはまた完全に)補償することができる。
【0223】
したがって、ここで述べた例は、異なる読出し窓を有するメモリの使用を可能にして、メモリセルの別の範囲よりも高い信頼性を有するメモリセルの一範囲への迅速なアクセスを可能にする。より低い信頼性を有するメモリセルの範囲は、例えばさらなるメモリでの一時記憶によって、誤り訂正と組み合わせて読み出すことができ、したがって、生じ得る読出しエラーを少なくとも一部訂正することができる。
【0224】
さらなる実施形態は、奇数個のビットがメモリセルに割り振られ、ここで、これらのビットの一部が残りのビットよりも高い信頼性で記憶されるものである。例えば、3つのビットを、以下のようにメモリセルに記憶することができる:2つのビットが第1の範囲に記憶され、1つのビットが第2の範囲に記憶される(またはその逆)。補足として、(特許文献1)および(特許文献2)を参照されたい。それらの文献には、個々のメモリセルが少なくとも3つの異なる状態をどのように取ることができるかが説明されている。