(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0046】
1つのメモリセルは、複数の異なる物理値または複数の異なる状態をとることができ、これら複数の異なる物理値または状態は、それぞれ異なるデジタル値に対応する。
【0047】
「W
G」は、メモリセルSの物理量Gを表し、「W
D」はメモリセルSのデジタル値を表す。
【0048】
デジタル値W
Dはバイナリ値とすることにより、2つの値のうち1つをとることができる。これら2つの値は、0および1と称することができる。デジタル値は特に、有限数の値のうち1つの値である。
【0049】
デジタル値W
Dが2つより多くの異なる値をとれるようにすることも可能である。たとえば、デジタル値は3つの異なる値をとることができる。かかる場合、これら異なるデジタル値は、0,1,2と称することができる。一般的に、デジタル値はK個の異なる値をとることができ、ここでK≧2である。これらK個の異なる値は、0,1,・・・K−1と称することができる。2つより多くのメモリセルデジタル値を記憶できるメモリセルを備えたメモリは、ここでは「多値メモリ」または「マルチレベルメモリ」と称する。かかるメモリのメモリセルは、「多値メモリセル」または「マルチレベルメモリセル」と称することができる。
【0050】
これに応じて、2つのデジタル値を記憶するメモリセルを備えたメモリは、「バイナリメモリ」と称することができ、そのメモリセルは「バイナリメモリセル」と称することができる。
【0051】
メモリセルSから読み出される物理値は「W
A」という。
【0052】
たとえば、メモリセルの物理値または状態は電気抵抗値とすることができる。よって、バイナリで2つの抵抗値を区別することができ、たとえば、大きい方の抵抗値はデジタル値0に相当し、小さい方の抵抗値はデジタル値1に相当することができる。他の一例では、大きい方の抵抗値がデジタル値1に相当し、小さい方の抵抗値がデジタル値0に相当することができる。
【0053】
2つより多くのデジタル値を1つのメモリセルに記憶する場合には、これに応じてランク付けが(抵抗値が大きくなる方向、または抵抗値が小さくなる方向に)行われ得る。たとえば、最大抵抗値をデジタル値0に対応付け、2番目に大きい抵抗値をデジタル値1に対応付け、3番目に大きい抵抗値をデジタル値2に対応付け、以下同様で、最後に最小抵抗値はデジタル値K−1に対応付けることができる(ここでも、1つのメモリセルSにK個のデジタル値を記憶することができる)。
【0054】
メモリセルSの読出し時には、デジタル値W
Dの書込み時ないしは記憶時に生成された物理値W
Gに依存するアナログの物理値W
Aを求める。
【0055】
誤りが無い場合には、読み出された物理値W
Aから、対応するデジタル値W
Dを求めることができる。
【0056】
たとえばMRAMの場合のように、複数の異なる電気抵抗値が、メモリセルSのそれぞれ異なる状態に相当する場合には、記憶された物理値W
Gは抵抗値であり、読み出される物理値W
Aは電流または電圧とすることができる。
【0057】
たとえば、メモリセルの読出し時に、全てまたは複数の読み出されるメモリセルに対して同一である少なくとも1つの参照値Rを使用することができる。オプションとして、(少なくとも1つの)参照値を(これも、または部分的に)外部調達することができる。メモリセルから読み出された値W
Aは、参照値Rと比較することができる。
【0058】
以下では、一例として特に、2つの異なるデジタル値0および1を記憶できるバイナリメモリセルに合わせて説明する。これに対応して、それぞれ2つより多くのデジタル値を記憶できるメモリセルを設けることも可能である。
【0059】
大きい方の抵抗値がバイナリ値0に相当し、かつ小さい方の抵抗値がバイナリ値1に相当する場合、小さい方の読み出される電流値W
Aはデジタル値0に相当し、かつ、大きい方の読み出される電流値W
Aはデジタル値1に相当する。
【0060】
これに応じて、メモリセルの読出し時に、読み出される値W
Aとして電圧を求め、この電圧のレベルは、以前にメモリセルにバイナリ値0またはバイナリ値1が書込まれたか否かに依存するオプションがある。
【0061】
読み出された値W
Aと1つの対応する参照値Rとの比較によってデジタル値W
Dが求められる場合、デジタル値W
Dについては、
W
A<Rの場合、W
D=0、
W
A>Rの場合、W
D=1
を適用することができる。
【0062】
複数のメモリセルにデジタル値0が書込まれる場合には、書込まれるメモリセルはたとえば統計的なばらつきに基づき(たとえば製造におけるプロセスばらつきに基づき)、それぞれ異なる物理値W
Gをとり、誤りが無い場合には、これらの物理値W
Gは全てデジタル値W
D=0に相当し、頻度分布によって表現され得る。このことに応じて、読み出される値W
Aも頻度分布に従ってそれぞれ異なる値をとる。
【0063】
内容的には、デジタル値1または他の値が書込まれるメモリセルについても、同じことがいえる:複数のメモリセルにデジタル値1が書込まれる場合には、書込まれるメモリセルはたとえば統計的なばらつきに基づき(たとえば製造におけるプロセスばらつきに基づき)、それぞれ異なる物理値W
Gをとり、誤りが無い場合には、これらの物理値W
Gは全てデジタル値W
D=1に相当し、頻度分布によって表現され得る。このことに応じて、読み出される値W
Aも頻度分布に従ってそれぞれ異なる値をとる。
【0064】
1つのメモリセルに1つより多くのビットを記憶できる場合、上述のことに応じて、どのメモリセルにも記憶され得る全てのデジタル値について、同じことがいえる。
【0065】
図1aは一例として、デジタル値1に相当する、読み出される値W
A(1)の頻度分布101と、デジタル値0に相当する、読み出される値W
A(0)の頻度分布102と、を示している。x軸上には複数の異なる読み出される値W
Aが示されており、y軸上にはこれらの読み出される値W
Aの頻度が示されている。さらに、頻度分布101と102との間に参照値Rも示されている。
【0066】
図1aに示された実施例では、頻度分布101と102との間に重なり部は存在しない。よって、バイナリ値0および1の対応付けに誤りは無い。換言すると、読出しエラーが生じない場合には、参照値Rを使用することにより、読み出される値W
Aと各バイナリ値0または1との一義的かつ誤りの無い対応付けが可能である。
【0067】
本実施例では簡素化して、放射または加熱の作用によって誤った対応付けがなされることもないと仮定する。
【0068】
図1bは一例として、デジタル値1に相当する、読み出される値W
A(1)の頻度分布103と、デジタル値0に相当する、読み出される値W
A(0)の頻度分布104と、を示している。同図でも、頻度分布103と104との間に参照値Rも示されている。
【0069】
図1aに示された頻度分布101および102とは異なり、頻度分布103と104とは重なり合っている。かかる重なり部は、たとえばMRAMメモリセルにおいて生じ得る。
図1bでは重なり領域105が示されており、これは[0,1]
Aとも称される。
【0070】
W
A<Rが成り立つときには、読み出される値W
Aにバイナリ値0を対応付け、W
A≧Rが成り立つときには値W
Aにバイナリ値1を対応付ける場合において、読み出される値W
Aが重なり領域105内にある場合には、この対応付けに誤りがあり得る、ということになる。
【0071】
さらに、放射もしくは熱の作用またはメモリセルの永続的なエラーに基づく誤りも生じ得る。
【0072】
よって、参照値Rを使用すると重なり領域105に起因して、誤った対応付けがなされている可能性が重大になり得、バイナリ値0に相当する、読み出される値W
Aが重なり領域105内にある場合には、略半分において事例W
A>Rが成り立つことができ、これによって誤った対応付けがなされる。同様に、バイナリ値1に相当する、読み出される値W
Aが重なり領域105内にある場合には、略半分において事例W
A<Rが成り立つことができ、これによっても誤った対応付けがなされる。
【0073】
よって、読み出される値W
Aについては、これが重なり領域105内にある場合、対応するデジタル値の誤った対応付けがなされ得る。領域106は、読み出される値W
Aのうち、バイナリ値0であるにもかかわらず誤ってバイナリ値1に対応付けられる割合を示す。よって、誤ったデジタル値が対応付けられる頻度は基本的に、読み出される値W
Aが重なり領域105内にある頻度によって決定される。このことは特に、たとえば従来技術において生じ得るような大きな重なり領域において欠点となる。
【0074】
値0および1をとり得るデジタルバイナリ値xは、2つのメモリセルS
1およびS
2を使用して記憶することができる。たとえば、x=0である場合には値0をメモリセルS
1に書込み(記憶し)、かつ値1をメモリセルS
2に書込むことができ、x=1である場合には値1をメモリセルS
1に書込み、かつ値0をメモリセルS
2に書込むことができる。逆に、x=0である場合には値1をメモリセルS
1に書込み(記憶し)、かつ値0をメモリセルS
2に書込むことができ、x=1である場合には値0をメモリセルS
1に書込み、かつ値1をメモリセルS
2に書込むことができる。
【0075】
両メモリセルS
1およびS
2から読み出された(物理)値は、たとえばコンパレータを用いて互いに比較することができ、誤りが無い場合にはこの比較によって、値0が記憶されたか、または値1が記憶されたかを判断することができる。
【0076】
たとえば、メモリセルS
1から物理値W
A1が読み出され、メモリセルS
2から物理値W
A2が読み出される。
W
A1<W
A2
が成り立つ場合、これは、両メモリセルS
1およびS
2にバイナリ値x=0が記憶されたことを意味し得る。
W
A1>W
A2
が成り立つ場合、これは、両メモリセルS
1およびS
2にバイナリ値x=1が記憶されたことを意味し得る。
【0077】
本実施例では、メモリセルS
1およびS
2に記憶されて読み出された値W
A1およびW
A2を互いに比較し、参照値とは比較しない。これにより、読み出された値を相互に比較することによって、誤りが生じる確率を格段に低減することができる。
【0078】
誤りは、セルS
1の読み出された値W
A1およびセルS
2の読み出された値W
A2の双方が、分布W
A(0)およびW
A(1)の重なり領域内にある場合にのみ生じ得る。これは、両読み出された値の一方のみが重なり領域内にある場合より格段に稀なケースとなる。
【0079】
それに対して、1つのメモリセルから読み出された値を参照値と比較する場合には、この1つの読み出された値が、対応する分布の重なり領域内にあるときには既に、誤りが生じている可能性がある。
【0080】
その際の欠点は、記憶すべきビットあたり2つのメモリセルが必要となること、すなわち、n個のビットを記憶するためには2・n個のメモリセルが必要となることである。
【0081】
ここで開示している実施例の利点は、可能な限り少ないメモリセルを使用して高い信頼性でデジタル値を記憶できることである。もう1つの利点は、記憶時にはさらに誤り符号を使用できるので、読出しエラーを少なくとも部分的に検出および/または訂正できることである。
【0082】
メモリセル値へのデータビットの変換
たとえば、k個のビットの2
k個の可能な割当てを、n個のメモリセル値に変換する。メモリセル値はn個のメモリセルに、たとえばアドレス指定可能なメモリのメモリセルに記憶される。
【0083】
n個のメモリセルに記憶されたn個のメモリセル値は、これらn個のメモリセルから読み出すことができ、エラーが無い場合には、読み出されたn個のメモリセル値はk個のデータビットに変換し戻すことができる。
【0084】
メモリセル値はバイナリ値(たとえば値0および1)とすることができる。この場合には、メモリのメモリセルにバイナリ値が記憶される。かかるメモリセルは「バイナリメモリセル」と称することができる。
【0085】
また、各メモリセル値がK個の異なる値をとり得るようにすることも可能である。その際には、バイナリメモリセル値とは異なり、各メモリセル値は2つより多くの値をとることができる。よってK>2が成り立ち、ここでK個のメモリセル値は0,1・・・K−1である。たとえば、3値のメモリセル値を記憶できる3値メモリセルが設けられている場合、各メモリセル値に値0,1または2のいずれか1つの値を対応付けることができる。
【0086】
また、i個のメモリセルがそれぞれ異なるK
i値の値(バイナリまたは多値、すなわちK
i≧2)をとり得るようにすることも可能である。たとえば少なくとも2つのメモリセルを設け、これらのうち1つのメモリセルはK
1値の値を記憶し、他のメモリセルはK
2値の値を記憶し、かつK
1≠K
2とすることも可能である。
【0087】
バイナリメモリセル値
まず、メモリセル値がバイナリ値である場合を検討する。
【0088】
k個のデータビットx
1・・・x
kをn個のメモリセル値z
1・・・z
nに変換してn個のメモリセルに記憶するとする。
【0089】
k個のデータビットx
1・・・x
kの可能な2
k個の割当ては、たとえば組み合わせ回路(「変換回路」ともいう)によってメモリセル値に変換される。この変換回路は、k個のデータビットの2
k個の割当てをn個のメモリセル値にマッピングする変換を提供するものである。
【0090】
この変換は、データビットが変換されるメモリセル値がn
1‐out‐of‐n符号の符号語となるように実現される。n
1‐out‐of‐n符号の符号語は、n
1個の第1のバイナリ値と、n
2=n−n
1個の第2のバイナリ値と、を有する。第1のバイナリ値が値1を有し、かつ第2のバイナリ値が値0を有する場合、n
1‐out‐of‐n符号の符号語は複数のn
1個の1と、複数のn
2=n−n
1個の0と、を有する。
【0091】
これに応じて、第1のバイナリ値が値0を有し、かつ第2のバイナリ値が値1を有することが可能である。
【0092】
n
1‐out‐of‐n符号の符号語としてデータビットを記憶することが有利である理由は、たとえばメモリセルに記憶されたn
1‐out‐of‐n符号の符号語を読み出す際に、符号化されずに記憶されたデータビットよりも高い信頼性を達成できるからである。
【0093】
n
1‐out‐of‐n符号は「n
1‐,n
2‐out‐of‐n符号」と称することもでき、ここで、n
1は第1のバイナリ値の数を表し、n
2は第2の2バイナリ値の数を表す。その際には、n
2=n−n
1である。かかる呼称から、各符号語には2つの異なる値(ここではバイナリ値)0および1が存在することが明らかである。
【0094】
ここで、
n
1<n
n
2=n−n
1<n
n
1+n
2=n
n
1≧1
n
2≧1
が成り立つようにする。
【0095】
たとえば、メモリセル値の数nを3以上とすることができる。
【0096】
メモリセル値の数が2に等しい場合(すなわちn=2である場合)、対応する1‐out‐of‐2符号の符号語は10および01となる。たとえば、バイナリ値0は10として符号化され、バイナリ値1は01として符号化され得る。ここで、1ビットの情報を記憶するためにn=2個のメモリセルを要することは、不利となる。
【0097】
上記で説明したように、k個のデータビットの異なる割当ては2
k個となる。さらに、n
1‐out‐of‐n符号の異なる符号語の数は
【数1】
となる。
【0098】
k個のデータビットの2
k個の割当てをn
1‐out‐of‐n符号の
【数2】
の符号語に変換することは、一義的に可逆に行うことができるので、データビットの割当てが符号語のうち1つに対応付けられている場合、符号語のうち1つに基づいて、データビットの対応する割当てを一義的に推定することができる。
【0099】
異なる符号語の数は少なくともデータビットの割当ての数と同数である。すなわち、以下の条件
【数3】
が満たされる場合、k個のデータビットの全ての割当てをn
1‐out‐of‐n符号の符号語に可逆的に一義的に変換することができる。
【0100】
適用事例如何によっては、k個のデータビットの2
k個の可能な割当て全てが生じないことも可能である。そうである場合において、値Anz<2
kが、実際に生じる割当ての数を示す場合には、これらの実際に生じる割当てに符号語を可逆的に一義的に対応付けるためには、以下の条件
【数4】
を満たせば足りる。
【0101】
これによって有利には、k個のデータビットを記憶するために使用されるメモリセルを2・k個より少なくすることができる。
【0102】
バイナリメモリセル値:実施例
たとえばデータビットがk=4個であると仮定すると、このデータビットに対して2
k=2
4=16個の異なる割当てが存在することとなる。たとえばn=6個のメモリセル(nはメモリセル値の数であり、各メモリセル値はそれぞれ1つのメモリセルに記憶されるとする)が設けられており、かつ、n
1=3である場合には、3‐out‐of‐6符号の異なる符号語は
【数5】
となり、各符号語はそれぞれ3つの1と3つの0とを有する。よって、4つのデータビットの異なる16個の割当てを3‐out‐of‐6符号の(全部で20個の符号語のうち)16個の選択された符号語に変換し、メモリの6個のメモリセルに記憶することが可能になる。
【0103】
メモリセル値がn=6個であり、かつn
1=2である場合には、2‐out‐of‐6符号の異なる符号語は
【数6】
のみとなり、各符号語はちょうど2つの1と4つの0とを有する。よって、4つのデータビットの2
4=16個の割当てを2‐out‐of‐6符号の符号語に可逆的に一義的に変換することはできない。
【0104】
実際に生じる割当ての値Anzがたとえば15以下である場合には、この2‐out‐of‐6符号を用いることも可能である。
【0105】
バイナリメモリセル値:データビットの群分け
以下、N個のデータビットをメモリセル値に変換することについて説明する。ここで、N=M・kが成り立つ必要があり、Mは1より大きい。よって、それぞれk個のデータビットからなるM個の群を構成することができ、k個のデータビットの各群のそれぞれ2
k個の割当てが、
【数7】
の2
k個の符号語に可逆的に一義的に変換することができる。
【0106】
それぞれk個のデータビットのM個の群の割当てを、それぞれ同一のn
1‐out‐of‐n符号の符号語に変換する場合には、メモリセル値はM・n個となり、これに応じて、これらのメモリセル値はM・n個のメモリセルに記憶することができる。
【0107】
ここで一例として、M個の群がそれぞれk個のデータビットを含む事例を説明する。これに代えて、第1のデータビット群はk
1個のデータビットを有し、第2のデータビット群はk
2個のデータビットを有する等、第Mの群はk
m個のデータビットを有するまで同様とすることが可能である。各群あたりのデータビット数k
1,k
2,・・・k
mは、互いに少なくとも部分的に異なることができる。よって、
N=k
1+k
2+・・・k
M
が成り立ち、ここで、
・第1のk
1個のデータビットは第1のn
11‐out‐of‐n
1符号の符号語に、
・第2のk
2個のデータビットは第2のn
12‐out‐of‐n
2符号の符号語に、
・・・
・第Mのk
M個のデータビットは第Mのn
1M‐out‐of‐n
M符号の符号語に
変換することができる。ここで、各符号は少なくとも部分的に相違することができる。オプションとして、群あたりのデータビット数が同数である場合にも、複数の異なる符号を用いることが可能である。
【0108】
たとえばデータビット数がk=3である場合、これら3つのデータビットの可能な割当ては2
k=8個となる。メモリセル値がn=5個である場合には、2‐out‐of‐5符号および3‐out‐of‐5符号の双方を使用することができる。というのも、これら両符号はそれぞれ10個の符号語を提供するので、可能な割当て数より多くの符号語を提供するからである。よって、たとえば3データビットの第1の群には2‐out‐of‐5符号を使用し、3データビットの第2の群には3‐out‐of‐5符号を使用することができる。
【0109】
既に述べたように、複数のデータビット群全てが同数のk個のデータビットを有しないオプションがある。たとえば、23個のデータビットをメモリセル値に変換するとする:これら23個のメモリセルから、それぞれ4つのデータビットを有する5つの群と、3つのデータビットを有する1つの群とを構成することができる。4つのデータビットを有する各群の2
4=16個の可能な割当ては、たとえば、20個の異なる符号語を有する3‐out‐of‐6符号の符号語に変換することができる。3つのデータビットを有する残りの1群は、2
3=8個の可能な割当てを有する。これら3つのデータビットは、たとえば、10個の符号語を有する3‐out‐of‐5符号の符号語に変換することができる。これによって、必要なメモリセルは、3つのデータビットの2
3=8個の可能な割当てを3‐out‐of‐6符号の符号語に変換する場合より少なくなる。たとえば、3データビットの群に不変ビットを、たとえば値0のビットを追加することによってデータビットを4つとし、全ての群が同数のデータビットを有し、同一の変換を使用できるようにすることも可能である。このことによって、回路設計に係るコストを削減することができる。
【0110】
多値メモリセル値
以下、メモリセル値が2つより多くの異なる値をとることができ、よってメモリセルが多値メモリセル値を記憶できる事例を検討する。
【0111】
メモリセルはK個の異なるメモリセル値を記憶することができ、ここでK>2である(K=2は、バイナリメモリセル値の特殊な事例となる)。1つのメモリセルあたりのこれら異なるメモリセル値は、0,1,・・・K−1と称することができる。
【0112】
ここでも、k個のデータビットを記憶できるとする。k個のデータビットの2
k個の異なる割当てを、可逆的に一義的にn個のメモリセル値に変換することができる。これらn個のメモリセル値は、
・n
1個の第1の値と、
・n
2個の第2の値と、
・・・
・n
K個の第Kの値と
を有する。たとえば、
・第1の値を0と、
・第2の値を1と、
・・・
・第Kの値をK−1と
称することができる。
【0113】
n個のメモリセル値は、メモリセル値の「n組」と称することもできる。n
1個の第1の値、n
2個の第2の値・・・n
K個の第Kの値を有するn個の多値(ここではK値)メモリセル値のこのn組は、
n
1‐,n
2‐・・・n
K‐out‐of‐n符号
の符号語と称することができる。
【0114】
n
1‐,n
2‐・・・n
K‐out‐of‐n符号は、以下の数の符号語を有する:
【数8】
ここで、k個のデータビットの2
k個の割当てを、可逆的に一義的に、n
1‐,n
2‐・・・n
K‐out‐of‐n符号の上述の符号語のうち2
k個に変換したい。この変換は、以下の条件
【数9】
ないしは、以下の条件
【数10】
が満たされた場合において、上記にてバイナリメモリセル値について説明したのと同様に、値Anz(Anz<2
k)がk個のビットの実際に生じる割当ての数である場合に可能となる。
【0115】
多値メモリセル値:実施例
k=6個のデータビットを記憶するとする。このことにより、6つのデータビットの可能な割当ては2
k=2
6=64個となる。データビットは、既に述べたようにバイナリ値であり、多値メモリセルに記憶するために事前に変換が施される。
【0116】
例として、3値のメモリセル値(K=3)を検討する。このことにより、各メモリセルは3つの異なる値を記憶することができる。全部でメモリセル値はn=6個となり(よって、メモリセルは6つとなり)、n
1=n
2=n
3=2であると仮定する。このことにより、本実施例で一例として使用される2‐,2‐,2‐out‐of‐6符号の異なる符号語は
【数11】
となる。これら90個の符号語は、6つのデータビットの2
6=64個の可能な割当てをマッピングするために十分となる。
【0117】
かかる多値メモリセルによって、バイナリメモリセルより効率的な活用が可能となる。というのも、1メモリセルあたり記憶できる値は2つより多いからである。よって、少数の物理的なメモリセルで足り、本実施例では、6つの3値メモリセルだけで2‐,2‐,2‐out‐of‐6符号の90個の符号語を形成することができ、それに対して、6つのバイナリメモリセルを用いて形成できる、3‐out‐of‐6符号の符号語は、20個のみとなる。
【0118】
ここで一例として仮定されている2‐,2‐,2‐out‐of‐6符号のどの符号語においても、値0,1および2の各値は2回ずつ現れる。符号語の例は、001122,101220,021210である。
【0119】
他の一実施例では、3値のメモリセル値(K=3)の場合において、1‐,1‐,1‐out‐of‐3符号を使用する。この符号は、n=3個のメモリセルの場合、
【数12】
の符号語012,021,102,120,201および210を有する。k=2個のデータビットを記憶したい場合には、2
2=4個の異なる割当てを1‐,1‐,1‐out‐of‐3符号の符号語として3つのメモリセルに記憶することができる。
【0120】
他の一実施例において、4値のメモリセル値K=4を検討する。各メモリセルはたとえば、値0,1,2または3のうちいずれか1つの値を記憶することができる。本実施例では、メモリセルは全部でn=6個であり、n
1=n
2=2かつn
3=n
4=1であると仮定する。このことから、2‐,2‐,1‐,1‐out‐of‐6符号の異なる符号語は、
【数13】
となる。これら180個の符号語により、可能な割当てが2
7=128個である7つのデータビットを、6つの4値メモリセルに記憶することができる。
【0121】
ここで使用されている2‐,2‐,1‐,1‐out‐of‐6符号の符号語の例は、001123,101320,031210である。いずれの符号語も、それぞれ2つの0と、2つの1と、1つの2と、1つの3と、を有する。
【0122】
多値メモリセル値:データビットの群分け
ここでも、N個のデータビットをメモリセル値に変換する事例を検討する。ここで、N=M・kが成り立つ必要があり、Mは1より大きい。よって、それぞれk個のデータビットからなるM個の群を構成することができ、k個のデータビットの各群のそれぞれ2
k個の割当てが、n
1‐,n
2‐,・・・n
K‐out‐of‐n符号の2
k個の符号語に可逆的に一義的に変換することができる。
【0123】
それぞれk個のデータビットのM個の群の割当てを、n
1‐,n
2‐,・・・n
K‐out‐of‐n符号の符号語に変換する場合には、M・n個のK値のメモリセル値となり、これに応じて、これらのメモリセル値はM・n個のK値のメモリセルに記憶することができる。
【0124】
k個のデータビットの全ての群の割当てを同一の変換によってメモリセル値に変換することが有利となり得る。その際には、たとえば1つの変換回路を複数回使用することができる。また、複数の異なる群のk個のデータビットを、それぞれ異なる変換を用いてメモリセル値に変換することも可能である。
【0125】
データビットの書込みおよび読出し
記憶すべきk個のビットは、「データビット」とも称される。このデータビットはたとえば、分離可能な誤り検出および/または誤り訂正符号の情報ビットおよびチェックビットを有することができる。その際には、分離可能な符号において情報ビットにチェックビットを追加することができる。また、データビットが、符号語のビットが情報ビットとチェックビットとに分かれていない分離不可の符号のビットであることも、可能である。さらに、データビットが情報ビットとアドレスビットおよび/またはアドレスビットから導出されたビットおよび/またはパスワードのビットを含むオプションもある。
【0126】
「データビット」との用語はたとえば、メモリに記憶すべきビットを指すために使用される。これは、プログラムコード、画像データ、測定データ、または、メモリセル値に変換されてメモリセルに記憶される他のペイロードデータ(Payload)とすることができる。メモリセル値は、多値またはバイナリ値とすることができる。
【0127】
メモリセルの読出し時には、n個のメモリセルから出力された物理値の比較を用いて、メモリセルに記憶されたメモリセルデジタル値を求める。これに代えて、出力された物理値から導出される値とすることもできる。
【0128】
n個のメモリセルがバイナリである場合、k個の記憶すべきビットの列がn個のメモリセルバイナリ値の列に変換される。これらのメモリセルバイナリ値は、n
1個の第1のバイナリ値と、n
2個の第2のバイナリ値と、を有する。第1のバイナリ値が「1」と称され、第2のバイナリ値が「0」と称される場合、k個の記憶すべきビットの列は、n
1‐out‐of‐n符号の符号語に変換され、n
2=n−n
1が成り立つ。
【0129】
nおよびn
1が与えられている場合、kは、
【数14】
が成り立つように決定される。
【0130】
メモリセルがバイナリでなく、かつ、1つのメモリセルがK値のメモリセルデジタル値を記憶するために用いられる場合、k個のビットの列はn個のK値のメモリセル値の列に変換され、n個のメモリセルに記憶される。n個のメモリセル値の列は、予め決まった第1の数n
1の互いに同一の第1のメモリセル値と、予め決まった第2の数n
2の互いに同一の第2のメモリセル値等、予め決まった第Kの数n
Kの互いに同一の第Kのメモリセル値を有するに至るまでになるように、決定される。
【0131】
ここで、
1≦n
1,1≦n
2・・・1≦n
K
かつ
n
1+n
2+・・・+n
K=n
が成り立つようにする。
さらに、kは
【数15】
が成り立つように決定される。
【0132】
予め決まった第1の数n
1の互いに同一の第1のメモリセル値と、予め決まった第2の数n
2の互いに同一の第2のメモリセル値等、予め決まった第Kの数n
Kの互いに同一の第Kのメモリセル値を有するに至る、n個のK値のメモリセル値の列は、「(n
1‐,n
2‐・・・n
K‐out‐of‐n)符号の符号語」と称することができる。
【0133】
互いに同一の第Kのメモリセル値の数n
Kは、
n
K=n−n
1−n
2・・・−n
K
で求められる。
【0134】
メモリセルの読出し時には、n個のメモリセルの群のメモリセルから読み出された物理値の比較を用いて、当該群のメモリセルに記憶されたデジタルデータを求める。これに代えて、読み出された物理値の比較または導出された特性を使用する比較を用いて、n個のメモリセルの群のメモリセルに記憶されたデジタルデータを求める。
【0135】
特性としては、複数の異なるメモリセルから読み出された物理値の時間的振舞いとすることができ、比較に際して(共に)考慮することができる。
【0136】
時点τにおいて、メモリセルS
iから読み出された値はアナログ値W
Ai(τ)をとる。たとえば、メモリセルS
iに記憶される値W
Giは電気抵抗値であり、当該メモリセルS
iから時点τで得られる物理値W
Ai(τ)は読出電流(電流強度)である。
【0137】
メモリセルS
iの抵抗W
Giが他のメモリセルS
jの抵抗値W
Gjより小さい場合、両メモリセルを読み出すために予め定められた(等しい)読出電圧を使用する限りにおいて、読出電流W
Ai(τ)は他のメモリセルS
jの読出電流W
Aj(τ)より大きくなる。
【0138】
容量Cを用いてメモリセルS
iの読出電流W
Ai(τ)を時間積分すると、時点t
iにおいて予め決まった閾値Swに達する。メモリセルS
iから得られる物理値は、ここでは一例として読出電流W
Aiである。この読み出された物理値から求められる導出値は、一例として、読出電流についての時間積分が予め決まった閾値Swに達する時点t
iである。
【0139】
同一の容量Cを用いてメモリセルS
jの読出電流W
Aj(τ)を時間積分すると、時点t
jにおいて上記の予め決まった閾値Swに達する。
【0140】
メモリセルS
iおよびS
jの読出電流について
W
Ai(τ)>W
Aj(τ)
が成り立つので、t
i<t
jも成り立ち、メモリセルS
jよりメモリセルS
iの方が閾値Swに達する時期が早くなる。
【0141】
よって、メモリセルS
iおよびS
jについて、メモリセルS
iの読出電流の積分の方がメモリセルS
jの読出電流の積分より早く閾値Swに達したか否かを比較することができる。これは、(電圧が同じである場合において)抵抗値W
Giが抵抗値W
Gjより小さい場合にそうなる。
【0142】
よって、メモリセルS
iおよびS
jに記憶された物理値W
GiおよびW
Gjまたはその状態に基づいて、当該メモリセルS
iおよびS
jの順番(または「順序」)を求めるというオプションが存在する。閾値Swに達する時点t
iおよびt
jによって、メモリセルをその抵抗W
GiおよびW
Gjに従ってソートすることができる。すなわち、先にメモリセルS
iをソートしてから、その後にメモリセルS
jをソートすることができる(またはその逆も可能である)。
【0143】
このアプローチは、n個のメモリセルの1つの群の全てのメモリセルをソートするために使用することができる。
【0144】
たとえば、最初のn
1個のメモリセルにバイナリ0を書込み、かつ、第2のn
2個のメモリセルにバイナリ1を書込んだ場合において、エラーが無い場合には、最初のn
1個のメモリセルの電気抵抗は第2のn
2個のメモリセルの電気抵抗より小さくなるので、最初のn
1個のメモリセルの読出電流は第2のn
2個のメモリセルの読出電流より大きくなる。たとえば、n
1+n
2=nが成り立つ。
【0145】
このことに応じて、最初のn
1個のメモリセルについて閾値Swに達する時点t
11,t
21・・・t
n11は、第2のn
2個のメモリセルについて閾値Swに達する時点t
12,t
22・・・t
n22より前に来ることとなる。
【0146】
このようにして、閾値Swに達する時点に従ってメモリセルを整列することができる。たとえば、最も早い(最初の)時点に第1のメモリセルを対応付け、最も遅い(最後の)時点に第nのメモリセルを対応付けることができる。本実施例では、最初のn
1個のメモリセルが、バイナリ値0が書込まれたメモリセルであり、n
2個の他の残りのメモリセルは、バイナリ値1が書込まれたメモリセルとなる。
【0147】
たとえば、以下の積分
【数16】
は、時点tにおける電圧v
i(t)を表し、これは、n個のメモリセルS
i〜S
nに係る、その時点の読出電流W
Ai(i=1・・・n)に依存する。
【0148】
この電圧v
i(t)を閾値Swと比較することができる。これにより、上述の積分が閾値Swに達した時点を求めることができる。このようにして得られた時点を互いに比較することができる。かかる比較によって、メモリセルの状態がバイナリ値0に相当するか、またはバイナリ値1に相当するかを判断することができる。
【0149】
時点t
iは、
t<t
iの場合にはv
i(t)<Sw
かつ
t>t
iの場合にはv
i(t)>Sw
を適用することによって特定することができる。ここではたとえば、読出電流が時間の経過において一定であると仮定する。
【0150】
読出電流を介して、ないしは読出電流の時間積分を介して、メモリセルの抵抗値または状態を互いに比較することができる。有利には、最初のn
1個のセルの抵抗値が第2のn
2個のメモリセルの抵抗値より大きくない限りにおいては、最初のn
1個のセルの中での抵抗値のばらつきは、当該メモリセルへのバイナリ値0の対応付けに影響を及ぼさない。このことに応じて、第2のn
2個のセルの抵抗値が最初のn
1個のメモリセルの抵抗値より小さくない限りにおいては、第2のn
2個のメモリセルの中での抵抗値のばらつきは、当該メモリセルへのバイナリ値1の対応付けに影響を及ぼさない。
【0151】
メモリセルの部分群
たとえば、n個のメモリセルの1つの群の同一の第1のデジタル値を有するn
1個のメモリセルの順序、または、同一の第2のデジタル値を有するn
2個のメモリセルの順序を求めることも、不要となり得る。第1のデジタル値を有するn
1個のメモリセルは第1の部分群を構成し、第2のデジタル値を有するn
2個のメモリセルは第2の部分群を構成する。各部分群はそれぞれ、n個のメモリセルの群の一部に相当する。以下、かかる部分群の一例を詳細に説明する。
【0152】
一例として、2つの部分群を検討する。ここで、各部分群のメモリセルの数n
1およびn
2については、
n
1+n
2=n
が成り立つ。
【0153】
第1の部分群のn
1個のメモリセルには、それぞれ第1のデジタル値が書込まれ、第2の部分群のn
2個のメモリセルにはそれぞれ、第1のデジタル値とは異なる第2のデジタル値が書込まれる。
【0154】
メモリセルからの物理値の読出しの際には、第1の部分群のn
1個のメモリセル間で順序を特定しないことが有利となり得る。というのも、これらには同一のデジタル値が書込まれているからである。
【0155】
例として、n=6個のメモリセルS
1・・・S
6を検討する。メモリセルS
1,S
2,S
3は第1の部分群のn
1=3個のメモリセルであり、メモリセルS
4,S
5,S
6は第2の部分群のn
2=3個のメモリセルである。第1の部分群のメモリセルには値0が書込まれており、第2の部分群のメモリセルには値1が書込まれている。
【0156】
図2aは、メモリセル値S
1〜S
6から読出された複数の物理値W
A1,W
A2,W
A3,W
A4,W
A5およびW
A6を含むチャートである。物理値W
Aは、たとえば読出電流である。
【0157】
図2bは、時点t
1〜t
6を含むチャートであり、各時点t
mはそれぞれ、物理値W
Amのうちそれぞれ1つに相当し、m=1・・・6である。
【0158】
よって、各対応する読出電流の時間積分によって、各読出電流の時間積分が予め決まった閾値に達する時点t
1,t
2,t
3,t
4,t
5およびt
6を求めることができる。たとえば、
図2bによれば
t
5>t
4>t
6>t
2>t
3>t
1
が成り立つ。
【0159】
メモリセルS
1〜S
6に記憶されたデジタル値0または1の対応付けは、i=4,5,6かつj=1,2,3である場合、
t
i>t
j
が成り立つと判断されることによって行うことができる。とりわけ有利なのは、時点t
4,t
5,t
6と時点t
1,t
2,t
3との間の差を特定する必要がないことである。
【0160】
たとえば、読出電流についての時間積分が閾値Swに達したn
1個の第1のメモリセルに第1のデジタル値を割当て、かつ、n
2個の他のメモリセルには第2のデジタル値を割当てることができる。かかる場合には、メモリセルのうち1つがn
1個の第1のメモリセルに含まれるか否かを特定することで足り得る。
【0161】
また、メモリセルのアナログ信号の結合を形成し、この結合に基づいて、メモリセルに第1のデジタル値を対応付けるか、または他のデジタル値を対応付けるかを判断することもできる。
【0162】
メモリセルがn個であり、かつ第1のメモリセルがn
1個である群の場合、n個のメモリセルにn
1個の0とn
2=n−n
1個の1とを書込む
【数17】
の異なる態様がある。よって、n個のメモリセルでは
【数18】
の異なる割当て(「状態」ともいう)が可能であるから、
【数19】
が成り立つ場合、k個のデータビット(「kビットバイト」ともいう)をn個のメモリセルに記憶することができる。nが偶数である場合には、n
1=n/2であるときに、可能な状態の数が最大となる。
【0163】
たとえば、メモリセルがn=6個であり、第1のメモリセルおよび第2のメモリセルがそれぞれn
1=n
2=3個であるとする。n=6個のメモリセルが、メモリセルS
1〜S
6の1つの群を構成し、これらのメモリセルに、3‐out‐of‐6符号の1つの符号語を記憶することができる。
【0164】
まず、誤りが生じないケースについて説明する。メモリセルの読出し時には、読出電流W
A1(τ)〜W
A6(τ)についての積分値が閾値Swに達する時点t
1〜t
6を比較する。
【0165】
たとえば
t
1<t
3<t
4<t
2<t
5<t
6
が成り立つ場合には、メモリセルの順序は
S
1,S
3,S
4,S
2,S
5,S
6
となる。
【0166】
メモリセルS
1〜S
6には、たとえば3‐out‐of‐6符号の符号語101100が記憶されて、これらのメモリセルから読み出される。整列されたメモリセルのうち最初の3つのメモリセルS
1,S
3およびS
4については値1が、整列されたメモリセルのうち、それに続く3つのメモリセルS
2,S
5およびS
6については値0が、読み出される値として求められる。
【0167】
それに対して、たとえば
t
’3<t
’4<t
’1<t
’2<t
’6<t
’5
が成り立つ場合には、メモリセルの順序は
S
3,S
4,S
1,S
2,S
6,S
5
となる。
【0168】
よって、メモリセルS
1〜S
6からは3‐out‐of‐6符号の同一の符号語101100が読み出される。バイナリ値1を記憶するメモリセルS
1,S
3およびS
4の中での順序の入替え、または、バイナリ値0を記憶するメモリセルS
2,S
5およびS
6の中での順序の入替えは、3‐out‐of‐6符号の読み出される符号語に影響を及ぼさない。
【0169】
かかる特性が有利であるのは、同一のデジタル値に相当する、読み出される物理値の比較的小さいばらつきは、読出し時に、対応付けられるデジタル値に影響を及ぼさないからである。
【0170】
本実施例では、メモリセルS
1,S
3およびS
4が値1を記憶するために設けられている。これらのメモリセルには、それぞれバイナリ値1を表す値W
G1,W
G3,W
G4が書込まれる。これらの値W
G1,W
G3,W
G4の相互間の差は僅かであるが、特に偶然の影響によって僅かに変わり得る。
【0171】
これに応じて、メモリセルS
2,S
5およびS
6が値0を記憶するために設けられている。これらのメモリセルには、それぞれバイナリ値0を表す値W
G2,W
G5,W
G6が書込まれる。これらの値W
G2,W
G5,W
G6の相互間の差は僅かであるが、これらの値も偶然の影響によって僅かに変わり得る。
【0172】
たとえば、
t
1<t
3<t
4<t
2<t
5<t
6
ではなく、以下の時間的順番
t’
1<t’
3<t’
2<t’
4<t’
5<t’
6
が求められた場合には、メモリセルは
S
1,S
3,S
2,S
4,S
5,S
6
に整列され、メモリセルS
1〜S
6からは3‐out‐of‐6符号の符号語111000が読み出される。これは、誤りが無いときの符号語101100とは、誤りが無い場合のメモリセルの順序では値0が対応付けられる時間的に最初のメモリセルS
2と、誤りが無い場合においてメモリセルの順序では値1が対応付けられる時間的に最後のメモリセルS
4とが、入れ替わっている点で異なっている。
【0173】
実施例:3値メモリセル
以下では一例として、1メモリセルあたり3つの異なるデジタル値0,1および2を記憶できるシナリオについて検討する。
【0174】
図3は、1つのメモリセルの物理値W
Gの頻度分布を示すグラフである。
【0175】
図3は、記憶された値0の頻度分布301と、記憶された値1の頻度分布302と、記憶された値2の頻度分布303と、を示している。頻度分布301はW
G(0)と、頻度分布302はW
G(1)と、頻度分布303はW
G(2)とも称される。
【0176】
頻度分布301と302とは重なり領域304を有し、頻度分布302と303とは重なり領域305を有する。
【0177】
一実施例では、物理値は抵抗値とすることができる。
【0178】
図4は一例として、メモリから読み出される値2の頻度分布401と、メモリから読み出される値1の頻度分布402と、メモリから読み出される値0の頻度分布403と、を示している。頻度分布401はW
A(2)と、頻度分布402はW
A(1)と、頻度分布403はW
A(0)とも称される。
【0179】
頻度分布401と402とは重なり領域404を有し、頻度分布402と403とは重なり領域405を有する。
【0180】
一実施例では、読み出される物理値は電流強度とすることができる。
【0181】
メモリセルS
iの読出電流の電流強度W
Ai(τ)を時間tにわたって積分すると、時点t
iにおいて、予め決まった閾値Swに達する。
【0182】
メモリセルS
jの読出電流の電流強度W
Aj(τ)を時間tにわたって積分すると、時点t
jにおいて、上述の予め決まった閾値Swに達する。
【0183】
メモリセルS
iにデジタル値2が書込まれる場合には、メモリセルS
iは比較的大きい抵抗値(W
Gi)を有し、このメモリセルS
iの読出し時には、読出電流W
Aiは比較的小さくなる。よって、読出電流の時間積分が予め決まった閾値Swに達する時点t
iは大きくなる。
【0184】
メモリセルS
jにデジタル値1が書込まれる場合には、メモリセルS
jは、メモリセルS
iの抵抗値W
Giより小さい抵抗値W
Gjを有する。よって、メモリセルS
jの読出し時の読出電流W
Ajは、メモリセルS
iの読出し時の読出電流W
Aiより大きくなる。よって、読出電流の時間積分が予め決まった閾値Swに達する時点t
jは、時点t
iより前になる。すなわち、t
j<t
iとなる。
【0185】
メモリセルS
kにデジタル値0が書込まれる場合には、メモリセルS
kは、メモリセルS
iの抵抗値W
Giより小さくかつメモリセルのS
jの抵抗値W
Gjより小さい抵抗値W
Gkを有する。よって、メモリセルS
kの読出電流W
Akは、メモリセルS
j,S
iの読出電流W
Ajまたは読出電流W
Aiより大きくなる。よって、読出電流の時間積分が予め決まった閾値Swに達する時点t
kは、時点t
iおよびt
jより前になる。すなわち、t
k<t
j<t
iとなる。
【0186】
メモリセルS
iにメモリセルS
jと同一のデジタル値が書込まれている場合には、メモリセルS
iの抵抗値W
GiはメモリセルS
jの抵抗値W
Gjより大きくなるか、または小さくなり得る。
【0187】
また、メモリセルS
iの読出電流W
AiがメモリセルS
jの読出電流W
Ajより大きくなること、または小さくなることもあり得る。
【0188】
さらに、メモリセルS
iの読出電流についての時間積分が、予め決まった閾値Swに達する時点t
iは、メモリセルS
jの読出電流についての時間積分が予め決まった閾値Swに達する時点t
jより前後することもあり得る。
【0189】
かかる場合には、t
i<t
jであるかまたはt
i<t
jであるかは不明である。値「不明」は、ここでは記号“−”によっても記述される。
【0190】
実施例
一例として、n=6個のメモリセルS
1〜S
6の群を検討する。ここで、それぞれ2つのメモリセルを有する3つの部分群が存在する。すなわち、n
1=n
2=n
3=2であり、
・n
1=2個の第1のメモリセルには、メモリセルデジタル値2が、
・n
2=2個の第1のメモリセルには、メモリセルデジタル値1が、
・n
3=2個の第1のメモリセルには、メモリセルデジタル値0が
記憶される。よって、2つの2と2つの1と2つの0とを6つの位置に配分して、3つのメモリセルデジタル値(3値)を有する6つのメモリセルに記憶する態様が
【数20】
存在することになる。
【0191】
これとは異なり、n=6かつn
1=n
2=3の場合には、3つの1と3つの0とを6つの位置に配分して、バイナリのメモリセルデジタル値を有する6つのメモリセルに記憶する態様は
【数21】
のみとなるので、バイナリのメモリセル値0および1のみを使用するよりも、3つの3値デジタル値0,1および2を使用した方が、n個のメモリセルの1つの群に記憶できる情報が著しく多くなる。
【0192】
よって、各メモリセルが値0,1または2をとることができる本実施例では、複数のk=6個のデータビット(可能な割当ては2
6=64個)をn=6個のメモリセルデジタル値に変換して、n=6個のメモリセルに記憶することができる。これら6個のメモリセル値はそれぞれ、
・n
1=2個の第1の値2と、
・n
2=2個の第2の値1と、
・n
3=2個の第3の値0と、
を有する。
【0193】
6つのメモリセル値は、
2‐,2‐,2‐out‐of‐6符号
の1つの符号語を構成し、各符号語は、2つの第1のデジタル値と、2つの第2のデジタル値と、2つの第3のデジタル値と、を有する。
【0194】
この符号は、
【数22】
の符号語を有する。
【0195】
ビット数がk=6である場合、長さ6の2
k=2
6=64個のバイナリワードは、2‐,2‐,2‐out‐of‐n符号の符号語のうち64個に可逆的に一義的に変換することができる。
【0196】
図15は、k個のデータビットx
1〜x
kが変換回路1501を用いてどのようにして変換されてn個のメモリセル値としてメモリ1502のn個のメモリセルに記憶されるかを示すための、概略的な構成を示す図である。ここで、一例としてk≧2かつn≧3であると仮定する。変換回路1501の入力側には、k個のデータビットx
1〜x
kが入力される。
【0197】
n個のメモリセル値は変換回路1501から、メモリ1502の各メモリセルのデータ入力側に供給される。これらn個のメモリセル値は、
n
1‐,n
2‐・・・n
K‐out‐of‐n符号
の1つの符号値を構成する。メモリセル値はたとえば、K値のデジタル値である。
【0198】
図16は、
図15の構成の概略的な一変形形態を示す図であり、
図16では一例として、n=k=6,K=3、かつn
1=n
2=2が成り立つようにされている。
図16に示されている実施例では、6つのデータビットx
1〜x
6が変換回路1601によって6つの3値メモリセル値に変換されて、メモリ1602に記憶される。6つのメモリセル値は2つの値2と、2つの値1と、2つの値0と、を有し、(誤りが無い場合には)2‐,2‐,2‐out‐of‐6符号の1つの符号語を構成する。各メモリセルは、3値(K=3)のメモリセル値を記憶することができる。
【0199】
メモリセルS
1〜S
6については、読出し時においては上述のように、読出電流の時間積分が予め決まった閾値Swに達する(またはこれを上回る)時点t
1〜t
6を求める。たとえば
t
i1<t
i2<t
i3<t
i4<t
i5<t
i6
が成り立つ場合には、メモリセルS
1〜のS
6順序は
S
i1,S
i2,S
i3,S
i4,S
i5,S
i6
に整列される。その際には、値i
1・・・i
6の集合は値1・・・6の集合に等しい。たとえばi
1=5,i
2=4,i
3=2,i
4=1,i
5=6かつi
6=3である場合、
t
5<t
4<t
2<t
1<t
6<t
3
となり、よってメモリセルの順序は
S
5,S
4,S
2,S
1,S
6,S
3
となる。
【0200】
メモリセルの順序において最初の2つのメモリセルS
i1およびS
i2にはメモリセルデジタル値0を対応付け、当該順序において次の2つのメモリセルS
i3およびS
i4にはメモリセルデジタル値1が対応付けられ、当該順序において次の2つのメモリセルS
i5およびS
i6にはメモリセルデジタル値2が対応付けられるように規定することができる。
【0201】
また、最初の2つのメモリセルS
i1およびS
i2にはメモリセルデジタル値2を対応付け、次の2つのメモリセルS
i3およびS
i4にはメモリセルデジタル値1が対応付けられ、次の2つのメモリセルS
i5およびS
i6にはメモリセルデジタル値0が対応付けられるように規定することもできる。これに応じて、他の対応付け態様も可能である。
【0202】
デジタル値の誤りのある対応付けがなされるのは、
・メモリセルS
i2の読出電流W
Ai2およびメモリセルS
i3の読出電流W
Ai3の双方が、値0および値1双方に対応する読出電流が現れる重なり領域内にある場合、または、
・メモリセルS
i4の読出電流W
Ai4およびメモリセルS
i5の読出電流W
Ai5の双方が、値1に対応する読出電流および値2に対応する読出電流の双方が現れる重なり領域内にある場合
のみである。
【0203】
よって有利には、デジタル値の誤りの無い対応付けは高い確率で多値のデジタルメモリにも達成される。というのも、6つのメモリセルについてはメモリセルの僅かな一部についてしか誤りのある対応付けは起こり得ず、また、そのためには、各2つのメモリセルの読出電流が同時に重なり領域内になければならないからである。
【0204】
したがって有利には、記憶されたメモリセル値の読出し時に読出しエラーが生じる頻度はほとんど無くなる。読出し時には、異なるメモリセルの読み出された物理値または読み出された物理値から求められた値を互いに比較することができ、これは結果として、読出しエラーの効果的な低減になり得る。比較の誤った結果が生じ得るのは、比較対象の両値が同時に重なり領域内にある場合のみである。
【0205】
また、対応するn個のメモリセルに記憶された符号語が1つの(n
1‐,n
2‐・・・n
K‐out‐of‐n)符号を構成する場合、参照値を使用して、K値のメモリセル値としてn個のメモリセルに記憶された値を読み出すことも可能である。
【0206】
実施例:4値メモリセル
図17は、4つのデータビットx
1,x
2,x
3,x
4を4つのメモリセル値z
1,z
2,z
3,z
4に変換するための概略的な構成を示している。
【0207】
これら4つのデータビットx
1,x
2,x
3,x
4は、変換回路1701の入力側に入力される。これら4つのデータビットは変換回路1701に基づいて4つのメモリセル値z
1,z
2,z
3,z
4に変換され、メモリ1702のメモリセルS
1,S
2,S
3,S
4に記憶される。
【0208】
メモリ1702は本実施例では、n=4個のS
1,S
2,S
3,S
4から成る群を有し、各メモリセルにはたとえば4つの異なる値0,1,2,3および4を記憶することができる。よって、1つの部分群あたりのメモリセルは1つとなる。すなわち、n
1=n
2=n
3=n
4=1となる。
【0209】
誤りの無い場合、メモリセル値z
1,z
2,z
3,z
4は、4・3・2・1=24個の可能な符号語を有する1‐,1‐,1‐,1‐out‐of‐4符号の1つの符号語を構成する。よってn=4個のメモリセルを有する群では、24個の異なるデジタル値を記憶することができる。
【0210】
図5は一例として、メモリ1702から読み出される値3の頻度分布501と、メモリ1702から読み出される値2の頻度分布502と、メモリ1702から読み出される値1の頻度分布503と、メモリ1702から読み出される値0の頻度分布504と、を示している。頻度分布501はW
A(3)と、頻度分布502はW
A(2)と、頻度分布503はW
A(1)と、頻度分布504はW
A(0)とも称される。
【0211】
値0,1,2,3,4の各値は、メモリ1702の複数の4値のメモリセルのうち1つに記憶することができる。
【0212】
たとえば、メモリ1702から読み出される値は電流強度(読出電流)とすることができ、この電流強度のレベルに依存して値0,1,2,3,4のうち1つが得られる。
【0213】
頻度分布501と502とは重なり領域505を有し、頻度分布502と503とは重なり領域506を有し、頻度分布503と504とは重なり領域507を有する。
【0214】
メモリセルS
iの読出電流の電流強度W
A(τ)
iを時間tにわたって積分すると、特定の時点t
iにおいて、予め決まった閾値Swに達する。
【0215】
メモリセルS
jの読出電流の電流強度W
A(τ)
jを時間tにわたって積分すると、特定の時点t
jにおいて、上述の予め決まった閾値Swに達する。
【0216】
たとえばメモリセルS
iに値3が記憶されており、かつ、メモリセルS
jにデジタル値0,1または2のいずれか1つの値が記憶されている場合には、メモリセルS
iの読出電流W
Aiの方がメモリセルS
jの読出電流W
Ajより小さいので、t
j<t
iが成り立つ。
【0217】
たとえばメモリセルS
iに値1が記憶されており、かつ、メモリセルS
jにデジタル値3または2のいずれか1つの値が記憶されている場合には、メモリセルS
iの読出電流W
Aiの方がメモリセルS
jの読出電流W
Ajより大きいので、t
j>t
iが成り立つ。
【0218】
たとえばt
1<t
3<t
2<t
4が成り立つ場合には、メモリセルの順序はS
1,S
3,S
2,S
4となる。メモリセルS
1には値0を、メモリセルS
3には値1を、メモリセルS
2には値2を、メモリセルS
4には値3を対応付けることができる。
【0219】
変換回路1701の入力側には4つのデータビットx
1,x
2,x
3,x
4が入力され、変換回路1701の出力側においてメモリセル値z
1,z
2,z
3,z
4が出力される。変換回路1701において行われるこの変換は、たとえば表1に従って特定することができる。
【表1】
【0220】
4つのデータビットx
1,x
2,x
3,x
4は16個の異なるバイナリ値0000・・・・1111をとることができ、これらは全て上掲の表1に示されている。各行はそれぞれ、変換回路1701によって行われ得る、データビットx
iから1‐,1‐,1‐,1‐out‐of‐4符号の符号語z
iへの変換に相当する。
【0221】
たとえば表1の第3行は、データビット0010に符号語3120が対応付けられていることを示している。
【0222】
既に述べたように、1‐,1‐,1‐,1‐out‐of‐4符号の異なる符号語は24個存在する。これら24個の符号語には、x
1,x
2,x
3,x
4の16個の異なる値が対応する。表1では、24個の可能な符号語のうち16個のみが使用される。
【0223】
メモリセルS
1,S
2,S
3,S
4の読出し時に4つのメモリセル値z
1,z
2,z
3,z
4が求められ、誤りが無い場合にこれらのメモリセル値z
1,z
2,z
3,z
4が1‐,1‐,1‐,1‐out‐of‐4符号の1つの符号語を構成する場合には、これらのメモリセル値は表1に従って、対応するデータビットx
1,x
2,x
3,x
4に変換される。
【0224】
1つの可能な逆変換を、表2に示す。
【表2】
【0225】
表2では、24個の符号語にデータビットの16個の可能な割当てが対応付けられており、これらの符号語の一部(表2中の第17〜24行)についてはデータビットが存在せず、ないしは、これらの符号語に対応するデータビットは不明である。よって、表2は表1の逆変換を示している。
【0226】
たとえば、表1の第5行は、データビット0100に符号語3012が対応付けられていることを示しており、これに対応して、表2の第5行は、符号語3012にデータビット0100が対応付けられていることを示している。
【0227】
表2の第17〜24行については、データビットは不明である。逆変換回路の合成の場合、不明のデータビットをいわゆる「ドントケア」値として回路最適化のために使用することができる。
【0228】
この不明のデータビットを任意の値に、たとえば0にセットすることも可能である。
【0229】
実施例:8つのメモリセル内の11個のデータビット
たとえば、k=11個のデータビットx
1・・・x
11を、メモリセル値z
1・・・z
8を有する8つのメモリセルに変換することができる。これらのメモリセル値は、2‐,2‐,2‐,2‐out‐of‐8符号の符号語である。各メモリセル値は4値(K=4)である。すなわち、1つのメモリセルあたり、4つの異なる値のうち1つを記憶することができる。
【0230】
これら11個のデータビットにより、2
11=2048個の異なる値を表現することができる。2‐,2‐,2‐,2‐out‐of‐8符号は、
【数23】
の符号語を有する。この2520個の符号語は、2048個のバイナリ値全てを2‐,2‐,2‐,2‐out‐of‐8符号の符号語に変換するために十分である。
【0231】
実施例:7つのメモリセル内の9個のデータビット
k=9個のデータビットx
1・・・x
9を、メモリセル値z
1・・・z
7を有するn=7個のメモリセルに変換することもできる。これらのメモリセル値は、2‐,2‐,2‐,1‐out‐of‐7符号の符号語である。各メモリセル値は、たとえば4値(K=4)である。
【0232】
これら9個のデータビットにより、2
9=512個の異なる値を表現することができる。2‐,2‐,2‐,1‐out‐of‐7符号は、
【数24】
の符号語を有する。この630個の符号語は、512個のバイナリ値全てを2‐,2‐,2‐,1‐out‐of‐7符号の符号語に変換するために十分である。
【0233】
有利にはたとえば、
n
1‐・・・n
K‐out‐of‐n符号
の符号語を構成するメモリセルデジタル値の読出しおよび特定の際には、参照値は不要である。読み出されるメモリセルデジタル値の特定は、メモリセルから読み出された物理値の相互比較を用いて、または、読み出された物理値から導出された値の比較を用いて行うことができ、これにより、異なるメモリセル値の頻度分布が重なり領域を有する場合にも読出しエラーの確率が低くなる。
【0234】
比較器を用いたメモリの読出し
図6は、n=4個のメモリセルS
1,S
2,S
3およびS
4を有するメモリ601を示している。これらのメモリセルの出力側において値W
A1,W
A2,W
A3およびW
A4が読み出され、
【数25】
の比較器602〜607を使用して対ごとに比較される。比較器は、たとえばコンパレータとして構成することができる。
【0235】
比較器602は、メモリセルS
1の読み出された値W
A1とメモリセルS
2の読み出された値W
A2とを比較する。比較器602は、読み出された値についてW
A1>W
A2が成り立つ場合には出力側においてバイナリ値y
12=1を出力し、読み出された値についてW
A1<W
A2が成り立つ場合にはバイナリ値y
12=0を出力するように構成されている。
【0236】
比較器603は、メモリセルS
1の読み出された値W
A1とメモリセルS
3の読み出された値W
A3とを比較する。比較器603は、読み出された値についてW
A1>W
A3が成り立つ場合には出力側においてバイナリ値y
13=1を出力し、読み出された値についてW
A1<W
A3が成り立つ場合にはバイナリ値y
13=0を出力するように構成されている。
【0237】
比較器604は、メモリセルS
1の読み出された値W
A1とメモリセルS
4の読み出された値W
A4とを比較する。比較器604は、読み出された値についてW
A1>W
A4が成り立つ場合には出力側においてバイナリ値y
14=1を出力し、読み出された値についてW
A1<W
A4が成り立つ場合にはバイナリ値y
14=0を出力するように構成されている。
【0238】
比較器605は、メモリセルS
2の読み出された値W
A2とメモリセルS
3の読み出された値W
A3とを比較する。比較器605は、読み出された値についてW
A2>W
A3が成り立つ場合には出力側においてバイナリ値y
23=1を出力し、読み出された値についてW
A2<W
A3が成り立つ場合にはバイナリ値y
23=0を出力するように構成されている。
【0239】
比較器606は、メモリセルS
2の読み出された値W
A2とメモリセルS
4の読み出された値W
A4とを比較する。比較器606は、読み出された値についてW
A2>W
A4が成り立つ場合には出力側においてバイナリ値y
24=1を出力し、読み出された値についてW
A2<W
A4が成り立つ場合にはバイナリ値y
24=0を出力するように構成されている。
【0240】
比較器607は、メモリセルS
3の読み出された値W
A3とメモリセルS
4の読み出された値W
A4とを比較する。比較器607は、読み出された値についてW
A3>W
A4が成り立つ場合には出力側においてバイナリ値y
34=1を出力し、読み出された値についてW
A3<W
A4が成り立つ場合にはバイナリ値y
34=0を出力するように構成されている。
【0241】
2つの部分群の大きさがn
1=n
2=2である場合、n=4個のメモリセルS
1〜S
4を有する群には、
【数26】
の割当てを記憶することができる。
【0242】
この6つの割当てについては、表3に6つの比較器602〜607の出力値y
12,y
13,y
14,y
23,y
24,y
34が示されている。
【表3】
【0243】
たとえば、表3の第1行は、メモリセルS
1〜S
4にバイナリ値1100が割当てられていることを表している。比較器602〜607はこれに対応して、バイナリ値y
13=y
14=y
23=y
24=1を出力する。メモリセルS
1およびS
2には双方とも、バイナリ値1が割当てられているので、比較器602によって、双方共に記憶されたバイナリ値1に対応付けられた値W
A1とW
A2とが互いに比較される。本実施例では、W
A1<W
A2であるか、またはW
A1>W
A2であるかを予測できないので、比較器602の出力値y
12は不明となる。また、メモリセルS
3およびS
4の値W
A3およびW
A4は共にバイナリ値0を有するので、比較器607の出力y
34も不明となる。
【0244】
よって表3では、各メモリセルの比較対象の出力値が等しい値を有する場合には、比較器の出力値は不明となる。
【0245】
列「関数」では、表3の各行に、それぞれ否定または非否定の出力値の結合としてのブール表現が対応付けられており、出力値y
ijが1に等しい場合には、結合において当該出力値が現れ、それに対して出力値y
ijが0である場合には、結合において否定の出力値¬y
ijが現れる。出力値が不明(“−”)である場合には、結合において当該出力値は現れない。このことによって、特に回路技術的実装に係るコストが削減される。
【0246】
2‐out‐of‐4符号のビットを有するメモリセルS
1〜S
4の6つの各割当てについて、上述の6つの結合のちょうど1つが値1をとる。たとえば、メモリセルの割当て1001は、表3の第3行によると、以下の結合
y
12∧y
13∧¬y
24∧¬y
34=1∧1∧1∧1=1
に相当する。
【0247】
比較器602,603,606および607は、値y
12=1,y
13=1,y
24=0,およびy
34=0を出力する。この場合、表3中に示された他の結合は全て、値0を有する。
【0248】
よって、結合y
12∧y
13∧¬y
24∧¬y
34が値1を有することにより、メモリセルS
1〜S
4から割当て1001が読み出されたことが一義的に特定される。
【0249】
メモリセルの割当ての特定
図7は、比較器602〜607の値y
12,y
13,y
14,y
23,y
24,y
34からメモリセルS
1〜S
4の各対応する割当てを求めるために用いられる回路構成を示す。こうするためにはたとえば、それぞれ4つの入力端を有する6つのANDゲート701〜706と、それぞれ3つの入力端を有する4つのORゲート708〜711と、が用いられる。
【0250】
値y
13,y
14,y
23およびy
24はANDゲート701の入力端へ伝送される。値y
12,y
14,¬y
23およびy
24はANDゲート702の入力端へ伝送される。値y
12,y
13,¬y
24および¬y
34はANDゲート703の入力端へ伝送される。値¬y
12,¬y
13,y
24およびy
34はANDゲート704の入力端へ伝送される。値¬y
12,¬y
14,y
23および¬y
34はANDゲート705の入力端へ伝送される。値¬y
13,¬y
14,¬y
23および¬y
24はANDゲート706の入力端へ伝送される。
【0251】
さらに、ANDゲート701〜706の出力端は、ORゲート708〜711の入力端と以下のように接続されている:ANDゲート701の出力端はORゲート708および709の各1つの入力端に接続される。ANDゲート702の出力端はORゲート708および710の各1つの入力端に接続される。ANDゲート703の出力端はORゲート708および711の各1つの入力端に接続される。ANDゲート704の出力端はORゲート709および710の各1つの入力端に接続される。ANDゲート705の出力端はORゲート709および711の各1つの入力端に接続される。ANDゲート706の出力端はORゲート710および711の各1つの入力端に接続される。
【0252】
ORゲート708の出力端にはメモリセルS
1の割当てが出力され、ORゲート709の出力端にはメモリセルS
2の割当てが出力され、ORゲート710の出力端にはメモリセルS
3の割当てが出力され、ORゲート711の出力端にはメモリセルS
4の割当てが出力される。
【0253】
したがって、
図7の回路構成は上掲の表3を以下のように具現化する:ANDゲート701〜706の出力端において表3の関数がマッピングされ、ANDゲート701は表3の第1行の関数に、ANDゲート706は表3の最終行の関数に相当する。
図7のメモリセルS
iの割当ては、メモリセルS
iの列から以下のように得られる:表のうち当該列が値1を有する列において、当該関数についてのOR論理結合が成立する。たとえば、メモリセルS
1は表3の最初の3行では値1を有する。すなわち、表3の最初の3行の結合を意味する、ANDゲート701,702および703の出力端とのOR結合が存在する。このことは、他のメモリセルについても同様に当てはまる。
【0254】
実施例:3値メモリセル
以下、3値のメモリセルを使用する実施例を検討する。すなわち、各メモリセルは値0,1または2のうちいずれか1つをとることができ、たとえば2>1>0が成り立つ必要がある。
【0255】
群がn=6個のメモリセルを有し、かつ、部分群がn
1=n
2=n
3=2個のメモリセルを有する事例を検討する。したがって、6つのメモリセルの群あたり値2を2つ、値1を2つ、値0を2つ記憶することができる。したがって、6つのメモリセルS
1〜S
6の群に2つの2と2つの1と2つの0とを割当てる態様は、
【数27】
存在する。
【0256】
メモリセルからデータを読み出す際に全てのメモリセルの読み出された値を対ごとに比較する場合、メモリセルS
1〜S
6の全ての物理的出力値を比較するためには、15個の比較器VGL
ijが用いられる。ここでi,j=1・・・6は、メモリセルのうちそれぞれ1つを表す添え字である。したがって、比較器VGL
ijはメモリセルS
iとメモリセルS
jとを比較する。よって15個の比較器は、
VGL
12,VGL
13,VGL
14,VGL
15,VGL
16,
VGL
23,VGL
24,VGL
25,VGL
26,
VGL
34,VGL
35,VGL
36,
VGL
45,VGL
46および
VGL
56
である。
【0257】
比較器VGL
ijのバイナリ出力値はy
ijと称され、よって、以下の15個のバイナリ出力値が存在する:
y
12,y
13,y
14,y
15,y
16,
y
23,y
24,y
25,y
26,
y
34,y
35,y
36,
y
45,y
46および
y
56。
【0258】
メモリセルS
1〜S
6の割当て221100について、表4に上述の15個の比較器の出力値を示す。
【表4】
【0259】
よって、以下の結合
y
13∧y
14∧y
15∧y
16∧y
23∧y
24∧y
25∧y
26∧y
35∧y
36∧y
45∧y
46
が得られる。
【0260】
この結合は、15個の比較器の12個の値を有する。これは、不明でない値である。
【0261】
基本的には、以下のことが適用される:値1は、各比較器の非反転値または非否定の値y
ijを表し、値0は、各比較器の反転値または否定の値¬y
ijを表す。
【0262】
メモリセルS
1〜S
6の割当て212100について、表5に上述の15個の比較器の出力値を示す。
【表5】
【0263】
よって、以下の結合
y
12∧y
14∧y
15∧y
16∧¬y
23∧y
25∧y
26∧y
35∧y
36∧y
45∧y
46
が得られる。
【0264】
この結合は、15個の比較器の12個の出力値を有する。
【0265】
メモリセルS
1〜S
6の割当て001122について、表6に上述の15個の比較器の出力値を示す。
【表6】
【0266】
よって、以下の結合
¬y
13∧¬y
14∧¬y
15∧¬y
16∧¬y
23∧¬y
24∧¬y
25∧¬y
26∧¬y
35∧¬y
36∧¬y
45∧¬y
46
が得られる。
【0267】
この結合は、15個の比較器の12個の出力値を有する。
【0268】
各メモリセルへのそれぞれ2つの2と2つの1と2つの0との他の残りの割当てについても、同様に対応する結合が得られる。15個の出力値のうち、不明でないそれぞれ12個の出力値(反転または非反転)が、対応する結合を構成する。この結合は、メモリセルS
1〜S
6にそれぞれ対応する割当てが記憶されており、かつ、これらのメモリセルから読み出された値W
A1〜W
A6が比較器VGL
ijにおいて対ごとに比較される場合にまさに、値1をとる。
【0269】
実施例:変換および逆変換
図8は、m個のデータビットをメモリ803のメモリセルS
1〜S
nに記憶する一実施例を示している。同図には、n個のメモリセルS
1〜S
nの1つの群が示されており、
・n
1個のメモリセルにはn
1個の第1の値が、
・n
2個のメモリセルにはn
2個の第2の値が、
・n
K個のメモリセルにはn
K個の第Kの値が、
記憶される。換言すると、複数のK個の部分群が存在する。各部分群の中では、所定の数の同一の値が記憶されている。異なる部分群に記憶される値はそれぞれ異なる。
【0270】
n個のメモリセルからなる群に記憶されるm個のデータビットは、「mビットバイト」または単に「バイト」とも称され得る。データビットの数を表す変数として、文字mまたはkを使用する。
【0271】
ここで
2
m≦N
が成り立ち、同式中、
【数28】
かつm<nである。Nは、n
1個の第1の値、n
2個の第2の値、n
K個の第Kの値に至るまで同様の値をn個のメモリセルの群に割当てる態様の数を表す。
【0272】
変換回路801が、ワード幅mの2
m個のデータビットを、N個の値z
1,z
2・・・z
nのうち2
m個の値に変換する変換T
S(m,n)を実行し、ここで、
・数n
1個の値z
1,z
2・・・z
nは0に等しく、
・数n
2個の値z
1,z
2・・・z
nは1に等しく、
・・・
・数n
K個の値z
1,z
2・・・z
nはK−1に等しい。
【0273】
ワード幅mの2
m個のデータビットを全て用いる必要がない場合には、必要なデータビットのみを変換してメモリセルに記憶することが可能である。
【0274】
変換回路801はたとえば、ワード幅mのビット値x
1・・・x
mの変換T(m,n)を、メモリセルS
1〜S
nに記憶すべきワード幅nの値z
1・・・z
nにマッピングするように構成されており、ここで、
・値z
1・・・z
nのうちn
1個は値0をとり、
・値z
1・・・z
nのうちn
2個は値1をとり、
・・・
・値z
1・・・z
nのうちn
K個は値(K−1)をとる。
【0275】
m個のビットx
1・・・x
mは、たとえば「データビット」と称され得る。特に、かかるデータビットを、メモリのメモリセルに書込まれる値と区別することができる。ビットx
1〜x
mはたとえば、誤り検出または誤り訂正のための誤り符号の符号語のビットであり、このビットは、誤り符号の少なくとも1つのチェックビットも含むことができ、または、誤り符号のチェックビットのみとすることができる。
【0276】
メモリセルS
1〜S
nは読み出され、読み出された値z
’1〜z
’nは、変換T
S−1(n,m)を提供する変換回路802を用いてデータビットx
’1〜x
’mに変換され、誤りが無い場合には
x
’1・・・x
’m=x
1・・・x
m
が成り立つ。
【0277】
変換回路801および変換回路802は有利には、変換T(m,n)およびその逆変換T
−1(n,m)について
T
−1(n,m){T(m,n)[x
1・・・x
m]}=x
1・・・x
m
が成り立つように構成されている。
【0278】
ビットx
1〜x
mを「mビットバイト」と称する場合、1つのmビットバイトは1つのワードz
1〜z
nとしてメモリのn個のメモリセルに記憶され、ここで、予め決まった数のn
1個の第1のメモリセルが第1の値を記憶し、予め決まった数のn
2個の第2のメモリセルが第2の値を記憶し、予め決まった数のn
K個の第Kのメモリセルが第Kの値を記憶するに至るまで同様である。
【0279】
例:K=2である場合、n
1個の第1のメモリセルが値0を記憶し、n
2個の第2のメモリセルが第2の値1を記憶する。このようにして、メモリセルS
1〜S
nにはn
2‐out‐of‐n符号の符号語が記憶される。
【0280】
他の一例:各メモリセルS
1〜S
nにそれぞれ4つの値を記憶できる場合、n
1個のメモリセルに第1の値を記憶し、n
2個のメモリセルに第2の値を記憶し、n
3個のメモリセルに第3の値を記憶し、n
4個のメモリセルに第4の値を記憶することができる。ここで、n
1+n
2+n
3+n
4=nが成り立つ。
【0281】
上述のように、複数の読み出される異なるメモリセルの物理的特性(たとえば物理値)を互いに比較することができる。かかる比較によって、誤り確率を少なくとも部分的に低減することができる。読出し時に対で比較される値の双方が同時に、物理値の頻度分布の重なり領域内にある場合にしか、誤りは生じ得ず、1つの値のみが重なり領域内にあるだけでは誤りは生じ得ない。
【0282】
実施例:
図9
図9は、mビットバイトをそれぞれn個のメモリセルに記憶する一例を示しており、ここでm=4,n=6、かつn
1=n
2=3が成り立つ。n
1=3個のメモリセルには第1のデジタル値0が記憶され、n
2=3個の第2のメモリセルには第2のデジタル値1が記憶される。4ビットバイトは6つのメモリセルに、3‐out‐of‐6符号の6ビットワードとして記憶される。
【0283】
図9は、3つの4ビットバイトをメモリ901のそれぞれ6つのメモリセルに記憶する構成を示しており、これらのメモリセルはたとえば、デジタルのバイナリ値を記憶することができる。4ビットバイトx
1,x
2,x
3,x
4は変換回路902を用いてバイナリ値z
1〜z
6に変換され、これらのバイナリ値はメモリ901のメモリセルS
1〜S
6に記憶される。さらに、4ビットバイトx
5,x
6,x
7,x
8は変換回路903を用いてバイナリ値z
7〜z
12に変換され、これらのバイナリ値はメモリ901のメモリセルS
7〜S
12に記憶される。また、4ビットバイトx
9,x
10,x
11,x
12も変換回路904を用いてバイナリ値z
13〜z
18に変換され、これらのバイナリ値はメモリ901のメモリセルS
13〜S
18に記憶される。
【0284】
どの変換回路902〜904も変換T(4,6)を実行する。この変換T(4,6)は、16個の可能な各4ビット値に3‐out‐of‐6符号のそれぞれ異なる符号語を対応付ける表形式で記述され得る。一例を表7に示す。
【表7】
【0285】
かかる表はたとえば、組み合わせ(論理)回路の形態または読出し専用メモリの形態で実現することができる。
【0286】
メモリセルに記憶される値またはメモリセル値がバイナリ値である場合、これらの値は「メモリビット」とも称され得る。
【0287】
上記の実施例では、データビットを反転するとメモリビットの反転になる。
【0288】
オプションとして、同一機能の変換、ないしは同一作用の変換回路を用いて、複数の異なる4ビットバイトをメモリ値に、特にメモリビットに変換することができる。また、異なる機能の変換ないしは変換回路を用いて、複数の異なる4ビットバイトをメモリビットに、または一般的にメモリ値に変換することもできる。たとえば、変換回路902〜904のうち少なくとも2つが異なる変換を実行することが可能である。その際にはこれに応じて、変換回路905〜907は適切な逆変換を提供する。
【0289】
たとえば、4ビットバイトxの反転によってデジタル値zの反転になる変換を設けることができる。
【0290】
メモリ901からの読出し時には、メモリビットz
’1,z
’2,z
’3,z
’4,z
’5,z
’6が読み出されて、変換回路905によって4ビットバイトx
’1,x
’2,x
’3,x
’4に変換される。同様に、メモリビットz
’7,z
’8,z
’9,z
’10,z
’11,z
’12が読み出されて、変換回路906によって4ビットバイトx
’5,x
’6,x
’7,x
’8に変換される。また、メモリビットz
’13,z
’14,z
’15,z
’16,z
’17,z
’18も読み出されて、変換回路907によって4ビットバイトx
’9,x
’10,x
’11,x
’12に変換される。
【0291】
いずれの変換回路905,906,907も、表7に示された変換の逆変換である変換T
S−1(6,4)であって、それぞれn=6個の状態ビットz
’(i・n)(i=1・・・3かつn=1・・・6)が、それぞれm=4個のデータビットx
’(i・m)(i=1・・・3かつm=1・・・4)に変換される変換T
S−1(6,4)を実現する。
【0292】
エラーに起因して、メモリ901から読み出されるメモリビットz
’(i・n)は、元々記憶されていたビットz
(i,n)とは異なることがある。よって、読み出されるデータビットx
’i・mも、書込まれたデータビットx
i・mとは異なることがあり得る。
【0293】
エラーが生じていない場合、最初の4つのデータビットx
1〜x
4、最初の6つの変換されたビットz
1〜z
6、最初の6つの逆変換すべきビットz
’1〜z
’6、および、当該逆変換により得られる最初の4つのデータビットx
’1〜x
’4については、
z
1,z
2,z
3,z
4,z
5,z
6=z
’1,z
’2,z
’3,z
’4,z
’5,z
’6
x
1,x
2,x
3,x
4=x
’1,x
’2,x
’3,x
’4
が成り立つ。
【0294】
2番目の4つのデータビットと、3番目の4つのデータビットとについても、同じことが同様に当てはまる。
【0295】
万全を期すため、変換T
S−1(6,4)を示す表8を提示する。これは、表7に示された対応付けの逆マッピングである。
【表8】
【0296】
表8に掲げられていない、メモリビットz
’1〜z
’6の値については、データビットx
’1〜x
’4の対応する任意の値を、逆変換回路905の合成のために設けることができる。たとえば、かかる任意の値を合成ツールによる最適化の際に不明値として規定させることが可能であり、かかる不明値は「ドントケア」値とも称される。また、これらの値を0にセットするオプションもある。
【0297】
誤り検出および/または誤り訂正
逆変換回路905によって誤ったメモリビットに誤ったデータビットが対応付けられている場合、誤りを有する4ビットバイトを誤り符号によって検出および/または訂正することができる。以下、これについて例示により説明する。
【0298】
図10は、誤り検出または誤り検出と誤り訂正とを組み合わせたものを行うことができる一例の回路構成を示す図であり、データビットは変換回路によってメモリビットに変換され、メモリビットはメモリのメモリセルに記憶される。
【0299】
データビットxは符号化器1001の入力側に入力され、符号化器1001の出力側において、誤り符号C
1に応じて符号化されたビットy=Cod(x)が出力される。
【0300】
誤り符号C
1はバイト誤り訂正および/または検出符号とすることができ、たとえばリード‐ソロモン符号とすることができる。また、誤り符号C
1はビット誤り訂正および/または検出符号とすることができ、たとえばBCH符号、Hsiao符号、ハミング符号、低密度パリティ符号、または他の符号とすることもできる。
【0301】
符号化器1001の出力側において出力されたビット(またはバイト)y=Cod(x)は、変換回路1002を用いてデジタル値z(y)に変換され、このデジタル値z(y)はメモリ1003のメモリセルに書込まれる。変換回路1002は変換T
Sを提供する。
【0302】
それぞれn個のメモリセルの1つの群では、n
1個の第1の値はn
1個の第1のメモリセルに、n
2個の第2の値はn
2個の第2のメモリセルに記憶され、等、n
K個の第Kの値はn
K個の第Kのメモリセルに記憶されるに至るまで同様になされる。ここで、n
1+n
2+・・・+n
K=nが成り立つ。
【0303】
次のステップにおいて、値z
’(y)が、メモリ1003の対応するメモリセルから読み出される。この値z
’(y)は、少なくとも1つのエラーに基づいて、書込まれた値z(y)とは異なることがあり得る。エラーが生じていない場合には、z(y)=z’(y)が成り立つ。
【0304】
メモリ1003から読み出された値z
’(y)は、変換T
S−1を提供する逆変換回路1004によってバイナリ値y
’に変換される。
【0305】
エラーが生じていない場合には、
y’=y=Cod(x)
が成り立つ。
【0306】
エラーが生じている場合には、
y’≠y=Cod(x)
が成り立つ。
【0307】
訂正値形成器1005が、誤り符号C
1に応じて適切なワード幅の訂正値eを形成し、訂正値eの構成要素はXOR回路1007において値y
’と構成要素ごとにXOR結合される。XOR回路は、入力信号の排他的論理和結合を行ってその結合の結果を出力側において出力する回路である。入力端の信号が等しい場合、XOR回路は出力側において論理値1を出力する。入力端の信号が異なる場合、XOR回路は出力側において論理値0を出力する。
【0308】
XOR回路1007の出力側には、訂正された値y
corが出力される。符号C
1によって訂正値形成器1005を用いて訂正可能な誤りが生じている場合には、訂正されたビットは符号化されたビットと等しくなる。すなわち、
y
cor=y=Cod(x)
となる。
【0309】
さらに、誤り符号C
1を用いて検出できる誤りおよび/または誤りの特定の種類が存在するか否かを特定するために使用できる誤り検出回路1006も示されている。誤り検出回路1006には値y
’が供給され、誤り検出回路1006は誤り情報1008を出力する。
【0310】
誤り符号がたとえば1バイト誤り訂正符号と2バイト誤り検出符号である場合には、誤りが生じていないか、または1バイト誤りが生じているか、または2バイト誤りが生じているかに応じて、誤り検出回路1006は異なる誤り情報1008を出力することができる。たとえば、誤り情報1008はビット列00,01または10として(本実施例ではすなわち2ビットを有するビット列として)符号化することができる。
【0311】
オプションとして、誤り検出回路1006と訂正値形成器1005とを共に実現し、または部分的に共に実現することができる。
【0312】
誤り符号C
1が、符号化器1001による符号化の際にデータビットが変化しない分離可能な符号である場合において、誤りが生じていない場合、または、誤り符号C
1によって訂正可能な誤りが生じている場合には、XOR回路1006によって出力されたビットは、符号化器1001に入力されて変換回路1002による変換後にメモリ1003に記憶された対応するデータビットと等しくなる。
【0313】
図11は、誤り訂正または誤り検出と場合によっては誤り訂正とを行うことができる、他の代替的な回路構成を示す図である。
【0314】
データビットxは変換回路1101の入力側に入力され、値z(x)に変換される。変換回路1101の値z(x)は符号化器1102の入力側に入力され、この符号化器1102は、誤り符号C
2を用いて符号化されたデータCod(z(x))を出力側において出力するように構成されている。
【0315】
符号化器1102は符号化関数とチェックビット変換関数とを提供することができる。
【0316】
たとえば、符号化器1102の入力側に入力された値z(x)が変化せずに、当該符号化器によって求められた出力データCod(z(x))に含まれ、かつ、誤り符号C
2に応じて値z(x)にチェックビットが追加されるように、誤り符号C
2は分離可能な符号であると仮定する。
【0317】
符号化器1102は本実施例では、入力側に入力された値z(x)を変化せずに出力側において(本実施例では、入力側および出力側は双方とも、それぞれ1ビットに対応する複数の線路をそれぞれ有することができる)出力し、追加的に、誤り符号C
2に応じてビットz(x)からチェックビットを形成し、メモリ1103に記憶する前にこのチェックビットをさらに変換するように構成されている。
【0318】
値z(x)はたとえば、n
1‐out‐of‐n符号の符号語から構成されたn個のビットの群を構成する。符号化器1102によって生成されて変換されるチェックビットも、n
1‐out‐of‐n符号語とすることができ、またはこれを含むことができる。
【0319】
たとえば、誤り符号C
2によってビットz(x)から求められたチェックビットを符号化器1102によって、各2つのビットが互いに相補的であるビットとして出力することも可能である。各チェックビットはそれぞれ2つのビットに変換され、2つのメモリセルに記憶される。たとえば、チェックビット1をビット10に変換し、チェックビット0をビット01に変換して、それぞれ2つのメモリセルに記憶することができる。
【0320】
メモリセル値へのチェックビットの他の変換も可能である。たとえば、チェックビットを3重または2重および/または他の態様でフォールトトレラントにメモリ1103に書込むことが可能である。
【0321】
メモリ1103のそれぞれn個のメモリセルの群の中では、n
1個の第1の値は第1の数のn
1個の第1のメモリセルに、n
2個の第2の値は第2の数のn
2個の第2のメモリセルに記憶され、等、n
K個の第Kの値は、予め決まった第Kの数のn
K個の第Kのメモリセルに記憶されるに至るまで同様になされる。ここで、n
1+n
2+・・・+n
K=nが成り立つ。
【0322】
図10に示された回路構成では、データビットを用いて誤り処理がなされる。それに対して
図11に示された回路構成では、誤り処理は、変換回路1101によってデータビットから求められたメモリセル値に基づいて行われる。メモリセル値はたとえばメモリビットである。「誤り処理」とはここでは、誤り検出および/または誤り訂正をいう。
【0323】
図12は、
図11に示された回路構成の変形態様の他の一例を示している。
【0324】
データビットxは変換回路1201の入力側に入力され、符号語[3‐out‐of‐6]
1に変換され、その際にはその都度、データビットの4つのビットが1つの3‐out‐of‐6符号語に変換される。この3‐out‐of‐6符号語[3‐out‐of‐6]
1は、変換回路1201の出力側において出力される。これら16個の各4ビット値には、変換回路1201によって可逆的に一義的に、3‐out‐of‐6符号の1つの符号語が対応付けられる。
【0325】
変換回路1201の出力側はチェックビット形成器1202の入力側に接続されており、このチェックビット形成器1202は、誤り符号に応じて3‐out‐of‐6符号語のビットに係るチェックビットPrを求め、出力側において出力する。
【0326】
たとえば、チェックビット形成器1202はBCH符号のチェックビットを生成する。誤りが無い場合、変換回路1201によって出力されるビットと、チェックビット形成器1202によって出力されるチェックビットとは、BCH符号の1つの符号語を構成する。
【0327】
このことに対応して、BCH符号に代えて他の誤り符号を使用することもできる。また、複数の誤り符号を互いに組み合わせて使用することもできる。
【0328】
変換回路1201を用いてデータビットから得られた3‐out‐of‐6符号語を(チェックビットを有しない3‐out‐of‐6符号語も)メモリ1204に記憶できるように、変換回路1201の出力側はメモリ1204の入力側にも接続されている。
【0329】
チェックビット形成器1202の出力側はチェックビット変換器1203の入力側に接続されており、このチェックビット変換器1203は、供給されたチェックビットを3‐out‐of‐6符号語[3‐out‐of‐6]
2に変換して、出力側において出力する。
【0330】
チェックビット変換器1203の出力側はメモリ1204の入力側に接続されている。たとえばこうするために、メモリの複数の別個のデータ入力端を使用することができる。このようにして、チェックビット変換器1203によってチェックビットPrに基づいて生成された3‐out‐of‐6符号語[3‐out‐of‐6]
2を、メモリ1204に記憶することができる。
【0331】
誤りが無い場合には、メモリ1204には、3‐out‐of‐6符号語であるビットが記憶されることとなる。このビットは「メモリセル値」とも称される。
【0332】
データビットxから、変換回路1201によって3‐out‐of‐6符号の符号語[3‐out‐of‐6]
1が形成され、これはメモリ1204に書込まれる。この符号語[3‐out‐of‐6]
1は、メモリ1204のメモリセルのメモリセル値を構成する。
【0333】
符号語[3‐out‐of‐6]
1のビットから、チェックビット形成器1202によって、使用されている誤り符号に応じてチェックビットPrが求められて、当該チェックビット形成器1202の出力側において出力される。チェックビット変換器1203はチェックビットPrを3‐out‐of‐6符号の符号語[3‐out‐of‐6]
2に変換する。この符号語[3‐out‐of‐6]
2は、メモリ1204のメモリセルのメモリセル値を構成し、このメモリセル値はチェックビットPrから形成されたものである。
【0334】
したがって、メモリ1204には符号語[3‐out‐of‐6]
1および符号語[3‐out‐of‐6]
2が記憶される。記憶時および読出し時にはビット誤りが生じることがあり、このビット誤りに基づいて符号語[3‐out‐of‐6]
1、および符号語[3‐out‐of‐6]
2が誤ったビットに改ざんされてしまう。
【0335】
読出し時には、データビットに対応付けられたビット[3‐out‐of‐6]
’1と、変換されたデータビットのチェックビットに対応付けられたビット[3‐out‐of‐6]
’2とが、メモリ1204から出力される。ビット[3‐out‐of‐6]
’1およびビット[3‐out‐of‐6]
’2は双方とも、ビット誤りを含み得る。誤りが無い場合には、
[3‐out‐of‐6]
’1=[3‐out‐of‐6]
1
[3‐out‐of‐6]
’2=[3‐out‐of‐6]
2
が成り立つ。
【0336】
ビット[3‐out‐of‐6]
’2が出力されるメモリ1204の出力側は、チェックビット逆変換器1205の入力側に接続されており、このチェックビット逆変換器1205は、ビット[3‐out‐of‐6]
’2に基づいて、誤りがある場合があるチェックビットPr’を求めて出力側で出力する。チェックビット逆変換器1205は、チェックビット変換器1203が実行する変換の逆変換を実行するものである。
【0337】
誤りが無い場合には、チェックビット逆変換器1205は出力側において、チェックビット変換器1202によって形成されたものと同一のチェックビットPrを出力する。
【0338】
誤りがある場合があるチェックビットPr’は、データビットに相当するビット[3‐out‐of‐6]
’1のチェックビットである。このようにして、使用されている3‐out‐of‐6符号に応じて、ビット[3‐out‐of‐6]
’1のビット誤りが生じている場合にはその誤り訂正のために、誤りがある場合があるチェックビットPr’を使用することができる。
【0339】
メモリ1204の出力側およびチェックビット逆変換器1205の出力側はそれぞれ、訂正器1206の1つの入力端に接続されている。訂正器1206はビット[3‐out‐of‐6]
’1を、使用されている誤り符号に応じて、訂正されたビット[3‐out‐of‐6]
1corに訂正する。
【0340】
誤りが生じた場合、この誤りが、使用されている誤り符号によって訂正可能であるときは、
[3‐out‐of‐6]
1cor=[3‐out‐of‐6]
1
が成り立つ。
【0341】
訂正器1206の出力側において、上述のビット[3‐out‐of‐6]
1corが出力される。訂正器1206の出力側はチェックビット逆変換回路1207の入力側に接続されており、これは、変換回路1201によって行われる変換を逆にした変換を行う。逆変換回路1207の出力側において、データビットx
corが出力される。これは、場合によっては訂正されたデータビットであるか、または(誤りが生じていない場合には)データビットxである。
【0342】
誤りが生じていない場合、または、生じた誤りが誤り符号Cによって訂正可能である場合には、
x
cor=x
が成り立つ。
【0343】
上述の回路構成は、メモリセル値の誤り訂正を誤り符号によって行う実施例である。メモリセルバイナリ値は、本実施例では3‐out‐of‐6符号の符号語である。3‐out‐of‐6符号は、メモリセル値を形成するために使用される。メモリセル値の誤り訂正は誤り符号を用いて、たとえばハミング符号、Hsiao符号、BCH符号、または他の符号を用いて行われ得る。
【0344】
このようにして、データビットはメモリセル値に変換され、メモリセル値のビットについて誤り符号のチェックビットが求められる。これらのチェックビットも同様に、メモリセル値に変換される。変換されたビットのメモリセル値および変換されたチェックビットのメモリセル値は、メモリに記憶される。その後、メモリからの読出し時にはまず、チェックビットに相当するメモリセル値がチェックビットに変換し戻される。データビットに相当するメモリセル値は、変換し戻されたチェックビットを使用し、かつ誤り符号を使用して、通常の訂正器において訂正されたメモリセル値に訂正される。その後、データビットに相当する訂正されたメモリセル値は逆変換によって、訂正されたデータビットに変換し戻すことができる。
【0345】
上述のメモリセル値および上述の3‐out‐of‐6符号の他に、他のメモリセル値、たとえば4‐out‐of‐8符号の符号語を、同様に用いることが可能である。
【0346】
図12で説明した実施例とは異なり、
図10で説明した実施例では、データビットの誤り訂正を行う。データビットから、誤り符号のチェックビットが求められる。データビットと、上述のようにして求められたチェックビットとは、共にメモリセル値に変換されて、メモリに記憶される。メモリからの読出し時には、誤りがある場合のあるメモリセル値を、まず、誤りのある場合があるデータビットと誤りのある場合があるチェックビットとに変換し戻して、データビットに誤りがある場合には、使用されている誤り符号を用いてデータビットを訂正する。
【0347】
実施例:3‐out‐of‐6符号
以下一例として、n=6個のメモリセルの1つの群が、それぞれn
1=n
2=3個のメモリセルの2つの部分群を有すると仮定する。よってn=6個のメモリセルには、バイナリ値0を3つとバイナリ値1を3つとをそれぞれ有する3‐out‐of‐6符号語を記憶することができる。
【0348】
3つの0と3つの1とを有する異なる符号語は
【数29】
となるので、3‐out‐of‐6符号語として6つのメモリセルに記憶できる異なる値は20個となる。2
4=16<20であるから、6つのメモリセルには4つのデータビットを記憶することができる。
【0349】
6つのメモリセルS
1〜S
6に3‐out‐of‐6符号語として記憶されたバイナリの4ビット値の可能な対応付けを、表9に示す。表9の最後の列の上部には「4ビット」と記載されており、同列では4ビット値がビットごとに0から16まで昇順になっている(2番目に最後の列を参照のこと)。4ビット値ごとに、ここで一例として使用されている3‐out‐of‐6符号のちょうど1つの符号語がある。3‐out‐of‐6符号は、各符号語に値1(または値0)がちょうど3回現れることを特徴とする。n=6個のメモリセルについては、「余分」な20−16=4個の符号語、すなわち、対応付けられた4ビット値を有しない4個の符号語が存在する。表9の実施例では、これは同表の最後の4行であり、これら4行では、列「4ビット」において記号「−」が4回現れている。
【0350】
最高速の読出しストリームの検出
図13は、それぞれ3つの入力端を備えた4つのNOT‐ORゲート1301〜1304と、それぞれ2つの入力端を備えた2つのNOT‐ORゲート1305,1306と、多数の入力端を備えた1つのNOT‐ANDゲート1307と、を備えた一例の回路構成を示している。
【0351】
本回路構成により、読出しストリームについての時間積分が予め決まった閾値Swに達するのが最も速い3つのメモリセルを特定することができる。
【0352】
メモリセルS
1〜S
6ののうち3つに3つの0と3つの1とを割当てる態様は、
【数30】
存在する。
【0353】
メモリセルの、表9の最初の16行において0が割当てられた3つの出力端はそれぞれ、NOT‐ORゲートの入力端に接続されている。
【表9】
NOT‐ORゲートの出力端は、当該NOT‐ORゲートの全ての入力端が0である場合にのみ、1となる。
【0354】
表9の第1行に従って値0を示す、メモリセルS
4,S
5およびS
6の3つの出力端は、NOT‐ORゲート1301の3つの入力端に接続されている。表9の第2行に従って値0を示す、メモリセルS
3,S
5およびS
6の3つの出力端は、NOT‐ORゲート1302の3つの入力端に接続されている。表9の第14行に従って値0を示す、メモリセルS
1,S
3およびS
5の3つの出力端は、NOT‐ORゲート1303の3つの入力端に接続されている。表9の第15行に従って値0を示す、メモリセルS
1,S
2およびS
5の3つの出力端は、NOT‐ORゲート1304の3つの入力端に接続されている。
【0355】
本アプローチは第3〜13行にも同様に適用され、よって、行ごとに専用のNOT‐ORゲートが設けられ、各NOT‐ORゲートの3つの入力端は、当該行の、値0を示すメモリセルに接続されることとなる。
【0356】
入力端が全て値0を示すNOT‐ORゲート1301〜1304の出力端にのみ、値1が現れる。換言すると、表9の対応する符号語に結合されたNOT‐ORゲート1301〜1304のみが、出力端において値1を出力する。メモリセルとの入力端の接続の組み合わせは全てのNOT‐ORゲート1301〜1304において異なるので(各符号語はそれぞれ、3つの0の異なる配置を有する)、NOT‐ORゲート1301〜1304の出力端には一度に1回だけ値1が現れる。
【0357】
NOT‐ORゲート1305および1306はたとえば、
図13の論理信号の結合の第2レベルを実現しており、NOT‐ORゲート1301の出力端およびNOT‐ORゲート1302の出力端はNOT‐ORゲート1305の入力端に接続されている。NOT‐ORゲート1303の出力端およびNOT‐ORゲート1304の出力端はNOT‐ORゲート1306の入力端に接続されている。よって、NOT‐ORゲート1301〜1304の各2つの出力端は、この第2レベルのNOT‐ORゲートの入力端に接続されている。
【0358】
第2レベルのNOT‐ORゲート1305〜1306の出力端はそれぞれ、NOT‐ANDゲート1307の1つの入力端に接続されている。NOT‐ANDゲート1307の出力端において、信号1308が出力される。
【0359】
NOT‐ANDゲートが出力端において値0を出力するのは、当該NOT‐ANDゲートの全ての入力端が値1を示す場合のみである。入力端のうちいずれか1つが値0を示す場合には直ちに、信号1308は値1をとる。上記にて説明したように、メモリセルに3つの0が現れた場合には、NOT‐ORゲート1301〜1304のうち1つのNOT‐ORゲートのみの出力端が値0から値1に切り替わることができる。これに応じて、該当するNOT‐ORゲート1301〜1304の出力端に接続されたNOT‐ORゲート1305〜1306は値1から値0に切り替わる。この値0によって、信号1308は値1に切り替わる。
【0360】
図13に示された実施例では、3つの0を6つのメモリセルに配分する異なる態様は16個存在する(表9参照)。これに応じて、NOT‐ORゲート1301〜1304は16個存在する。これらのNOT‐ORゲートのうち各2つのNOT‐ORゲートの出力端は、第2レベルのNOT‐ORゲート1305〜1306のうちいずれか1つのNOT‐ORゲートの入力端に接続されている。よって、第2レベルのNOT‐ORゲート1305〜1306は8個となり、NOT‐ANDゲート1307はこれに応じて8個の入力端を有する。
【0361】
NOT‐ANDゲート1307の出力端の信号1308は、時間的に標本化(サンプリング)することができる。
【0362】
この標本化の際に初めて信号1308の値1が検出された場合には、信号1308を、各メモリ素子S
1〜S
6に後置接続された6つのラッチの「ホールド信号(hold-Signal)」として使用することができる。これについては、
図14を参照して詳細に説明する。
【0363】
図14は、6つの信号増幅器(「センス増幅器」または「センスアンプ」とも称される)1401〜1406を備えた一例の回路構成を示している。既に上記にて説明したように、メモリの(ここでは一例として6つの)メモリセルから物理値W
Ai(ここでi=1・・・6)が読み出される。読み出された各物理値W
Aiはそれぞれ、信号増幅器1401〜1406のうち1つに供給される。物理値W
Aiは、読出電流とすることができる。
【0364】
信号増幅器1401は、物理値W
Aiの時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1401の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1401の出力端にはデジタル値0が出力される。信号増幅器1401の出力端はラッチ1407の第1の入力端に接続されており、ラッチ1407の第2の入力端にはホールド信号1413が入力される。ホールド信号の値が0に等しい場合には、ラッチ1407はトランスペアレントに切り替えられる。すなわち、信号増幅器1401の出力端において出力されるバイナリ値が論理回路1414の第1の入力端に現れる。ホールド信号の値が1に等しい場合には、ラッチ1407は凍結される。すなわち、ホールド信号が1に等しい間は、この時点においてラッチ1407の第1の入力端に入力された値がラッチ1407の出力端にも存在し続ける。
【0365】
「捕捉レジスタ」または「状態制御されるフリップフロップ」とも称されるラッチの機能については、たとえば“de.wikipedia.org/wiki/Latch”を参照されたい。
【0366】
論理回路1414は、ラッチ1407〜1412の出力端に最初に現れた3つの0、すなわち最速で現れた3つの0を検出して、ホールド信号1413を値1にセットする。
【0367】
同様に、信号増幅器1402は、物理値W
A2の時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1402の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1402の出力端にはデジタル値0が出力される。信号増幅器1402の出力端はラッチ1408の第1の入力端に接続されており、ラッチ1408の第2の入力端にはホールド信号1413が入力される。ラッチ1408の出力端は論理回路1414の第2の入力端に接続されている。信号増幅器1403は、物理値W
A3の時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1403の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1403の出力端にはデジタル値0が出力される。信号増幅器1403の出力端はラッチ1409の第1の入力端に接続されており、ラッチ1409の第2の入力端にはホールド信号1413が入力される。ラッチ1409の出力端は論理回路1414の第3の入力端に接続されている。信号増幅器1404は、物理値W
A4の時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1404の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1404の出力端にはデジタル値0が出力される。信号増幅器1404の出力端はラッチ1410の第1の入力端に接続されており、ラッチ1410の第2の入力端にはホールド信号1413が入力される。ラッチ1410の出力端は論理回路1414の第4の入力端に接続されている。信号増幅器1405は、物理値W
A5の時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1405の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1405の出力端にはデジタル値0が出力される。信号増幅器1405の出力端はラッチ1411の第1の入力端に接続されており、ラッチ1411の第2の入力端にはホールド信号1413が入力される。ラッチ1411の出力端は論理回路1414の第5の入力端に接続されている。信号増幅器1406は、物理値W
A6の時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1406の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1406の出力端にはデジタル値0が出力される。信号増幅器1406の出力端はラッチ1412の第1の入力端に接続されており、ラッチ1412の第2の入力端にはホールド信号1413が入力される。ラッチ1412の出力端は論理回路1414の第6の入力端に接続されている。
【0368】
一例として、グラフ1415は信号増幅器1401に係る一定の時間における読出電流を示す。当該グラフ1415によれば、信号増幅器1401における読出電流は時点t
1において閾値Swに達する。同様に
図14には、信号増幅器1402〜1406に係るグラフ1416〜1420も示されており、当該グラフ1416〜1420では時点t
iは、第iの信号増幅器1401〜1406が閾値Swに達する時期を示す。
【0369】
読出電流の積分が時点t
iまで閾値Swより小さい間は、各信号増幅器は値1を出力し、読出電流の積分が時点t
i以降に閾値Swより大きくなった場合には、各信号増幅器は値0を出力する。
【0370】
図14に示されている実施例では、時点tにおいて物理値W
A1〜W
A6が求められる。ここでtは、t
1,t
3およびt
5より大きく、かつ、tはt
2,t
4およびt
6より小さい。よって、時点tにおいて信号増幅器1401,1403および1405の出力端にはそれぞれ値0が出力され、同時に、信号増幅器1402,1404および1406の出力端では未だ値1が出力されている。論理回路1414はこれら最初の3つの0を識別してホールド信号1413を0から1にセットし、これに応答してラッチ1407〜1412は「凍結」される。
【0371】
論理回路1414はたとえば、
図13に示された回路構成によって実現することができる。