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

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

▶ インフィネオン テクノロジーズ アクチエンゲゼルシャフトの特許一覧

<>
  • 特許6602904-メモリのメモリセル内のデータの処理 図000041
  • 特許6602904-メモリのメモリセル内のデータの処理 図000042
  • 特許6602904-メモリのメモリセル内のデータの処理 図000043
  • 特許6602904-メモリのメモリセル内のデータの処理 図000044
  • 特許6602904-メモリのメモリセル内のデータの処理 図000045
  • 特許6602904-メモリのメモリセル内のデータの処理 図000046
  • 特許6602904-メモリのメモリセル内のデータの処理 図000047
  • 特許6602904-メモリのメモリセル内のデータの処理 図000048
  • 特許6602904-メモリのメモリセル内のデータの処理 図000049
  • 特許6602904-メモリのメモリセル内のデータの処理 図000050
  • 特許6602904-メモリのメモリセル内のデータの処理 図000051
  • 特許6602904-メモリのメモリセル内のデータの処理 図000052
  • 特許6602904-メモリのメモリセル内のデータの処理 図000053
  • 特許6602904-メモリのメモリセル内のデータの処理 図000054
  • 特許6602904-メモリのメモリセル内のデータの処理 図000055
  • 特許6602904-メモリのメモリセル内のデータの処理 図000056
  • 特許6602904-メモリのメモリセル内のデータの処理 図000057
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6602904
(24)【登録日】2019年10月18日
(45)【発行日】2019年11月6日
(54)【発明の名称】メモリのメモリセル内のデータの処理
(51)【国際特許分類】
   G06F 11/10 20060101AFI20191028BHJP
   G11C 11/56 20060101ALI20191028BHJP
   G11C 29/42 20060101ALI20191028BHJP
   H03M 13/03 20060101ALI20191028BHJP
【FI】
   G06F11/10 672
   G11C11/56 100
   G11C29/42
   H03M13/03
【請求項の数】21
【外国語出願】
【全頁数】53
(21)【出願番号】特願2018-24702(P2018-24702)
(22)【出願日】2018年2月15日
(65)【公開番号】特開2018-133087(P2018-133087A)
(43)【公開日】2018年8月23日
【審査請求日】2018年4月17日
(31)【優先権主張番号】10 2017 103 347.5
(32)【優先日】2017年2月17日
(33)【優先権主張国】DE
(73)【特許権者】
【識別番号】599158797
【氏名又は名称】インフィニオン テクノロジーズ アクチエンゲゼルシャフト
【氏名又は名称原語表記】Infineon Technologies AG
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100135633
【弁理士】
【氏名又は名称】二宮 浩康
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ミヒャエル ゲッセル
(72)【発明者】
【氏名】トーマス ケアン
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開2015−115087(JP,A)
【文献】 特開平06−282992(JP,A)
【文献】 特開平02−025118(JP,A)
【文献】 特開2003−256294(JP,A)
【文献】 特開平11−213692(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G11C 11/56
G11C 29/42
H03M 13/03
(57)【特許請求の範囲】
【請求項1】
メモリのメモリセルの読出し方法であって、
複数のn個のメモリセルから物理値を求め、ただし、nは少なくとも3であり、
前記物理値の全てを互いに比較し、
比較された前記物理値に基づき、前記n個のメモリセルにK個の異なるメモリセルデジタル値を対応付け、
前記対応付けにより得られたメモリセルデジタル値に、n‐・・・n‐out‐of‐n符号の符号値を対応付け
対応付けに基づいて、前記n個のメモリセルに前記K個の異なるメモリセルデジタル値を対応付ける、読出し方法。
【請求項2】
前記n個のメモリセルを読み出すことによって前記物理値を求める、
請求項1記載の読出し方法。
【請求項3】
K=2であることにより、前記n‐・・・n‐out‐of‐n符号は、n‐,n‐out‐of‐n符号であり、n個の第1のメモリセルデジタル値は、互いに同一の第1の値を有し、n個の第2のメモリセルデジタル値は、互いに同一の第2の値を有し、前記第1の値は、前記第2の値と異なる、
請求項1または2記載の読出し方法。
【請求項4】
K=3であることにより、前記n‐・・・n‐out‐of‐n符号は、n‐,n‐,n‐out‐of‐n符号であり、n個の第1のメモリセルデジタル値は、互いに同一の第1の値を有し、n個の第2のメモリセルデジタル値は、互いに同一の第2の値を有し、n個の第3のメモリセルデジタル値は、互いに同一の第3の値を有し、前記第1の値と前記第2の値と前記第3の値とは、それぞれ相異なる、
請求項1または2記載の読出し方法。
【請求項5】
K>3が成り立つ、
請求項1または2記載の読出し方法。
【請求項6】
前記メモリセルから求められるメモリセルデジタル値を、一義的に可逆の変換によって求める、
請求項1から5までのいずれか1項記載の読出し方法。
【請求項7】
前記物理値は、時点である、
請求項1から6までのいずれか1項記載の読出し方法。
【請求項8】
各時点を前記メモリセルの物理値の時間積分によって求める、
請求項7記載の読出し方法。
【請求項9】
前記物理値は、メモリセルの読出電流である、
請求項1から8までのいずれか1項記載の読出し方法。
【請求項10】
得られた前記メモリセルデジタル値がn‐・・・n‐out‐of‐n符号の符号語を表す場合、前記符号語から逆変換によって複数のm個のビットを求める、
請求項1から9までのいずれか1項記載の読出し方法。
【請求項11】
誤り符号を用いてm個のビットの誤り検出および/または誤り訂正を行う、
請求項10記載の読出し方法。
【請求項12】
前記誤り符号に応じてデータビットから求められるチェックビットに基づいて、前記誤り検出および/または前記誤り訂正を行う、
請求項11記載の読出し方法。
【請求項13】
前記誤り符号に応じて前記メモリセルデジタル値から求められるチェックビットに基づいて、前記誤り検出および/または前記誤り訂正を行う、
請求項11記載の読出し方法。
【請求項14】
前記誤り符号は、バイト誤り訂正および/またはバイト誤り検出符号である、
請求項11から13までのいずれか1項記載の読出し方法。
【請求項15】
データビットの誤り訂正が行われる場合には、1バイトは、m個のビットを含み、
メモリセルの誤り訂正が行われる場合には、1バイトは、n個のビットを含む、
請求項14記載の読出し方法。
【請求項16】
前記誤り符号はビット誤り訂正および/またはビット誤り検出符号である、
請求項11から15までのいずれか1項記載の読出し方法。
【請求項17】
前記メモリセルデジタル値を求めるために少なくとも1つの参照値を使用する、
請求項1から16までのいずれか1項記載の読出し方法。
【請求項18】
前記メモリは、
キャッシュメモリ、
レジスタ、またはレジスタアレイ、
フラッシュメモリ、
MRAM、
SRAM、
RE‐RAM、
PC‐RAM、
FE‐RAM、
CB‐RAM、
マルチビットメモリ、
マルチレベルメモリ、
のうち少なくとも1種類のメモリを含む、
請求項1から17までのいずれか1項記載の読出し方法。
【請求項19】
メモリのメモリセルを処理するための装置であって、
前記装置は、処理ユニットを備えており、
前記処理ユニットは、
複数のn個のメモリセルから物理値を求め、ただし、nは少なくとも3であり、
前記物理値の全てを互いに比較し、
比較された前記物理値に基づき、n個のメモリセルにK個の異なるメモリセルデジタル値を対応付け、
前記対応付けにより得られた前記メモリセルデジタル値に、n‐・・・n‐out‐of‐n符号の符号語を対応付ける、
ように構成されており、
前記処理ユニットはさらに
対応付けに基づき、前記n個のメモリセルに前記K個の異なるメモリセルデジタル値を対応付ける、
ように構成されている、
装置。
【請求項20】
デジタルコンピュータのメモリに直接ロード可能なコンピュータプログラムであって、
請求項1から18までのいずれか1項記載の読出し方法の各ステップを実施するために適したプログラムコード部分を備えている、
コンピュータプログラム。
【請求項21】
コンピュータにより実行可能な指令を備えたコンピュータ可読の記憶媒体であって、
前記指令は、コンピュータが請求項1から18までのいずれか1項記載の読出し方法の各ステップを実施するために適したものである、
記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
メモリのメモリセルにデータ(たとえばバイナリデータ)を記憶して、当該メモリのメモリセルから更なる処理のために読み出す、種々のアプローチが公知となっている。
【発明の概要】
【発明が解決しようとする課題】
【0002】
本発明の課題は、メモリの取扱いを改善し、特に記憶および/または読出しをより効率的にすることである。
【課題を解決するための手段】
【0003】
前記課題は、独立請求項に記載の特徴によって解決される。有利な実施形態は、とりわけ従属請求項から導き出すことができる。
【0004】
前記課題を解決するため、メモリのメモリセルの読出し方法であって、
・複数のn個のメモリセルから物理値を求め、ただし、nは少なくとも3であり、
・物理値の少なくとも一部を互いに比較し、
・比較された物理値に基づき、n個のメモリセルにK個の異なるメモリセルデジタル値を対応付け、
・対応付けにより得られたメモリセルデジタル値に、n‐・・・n‐out‐of‐n符号の符号値を対応付ける
読出し方法を開示する。
【0005】
ここではとりわけ、n≧3、n≧1〜n≧1、K≧2、かつ、m≧1が成り立つようにする。
【0006】
メモリセル値の数はnであり、ここでは、K個の異なるデジタル値しか現れない。
【0007】
さらに、n+・・・+n=nが成り立つようにする。
【0008】
物理値の比較は、アナログ値の比較を含むことができる。
【0009】
比較は、物理値自体について行うことができ、または、物理値に基づくことができる。特に、物理値から導出された値を比較することができる。したがって、ここでいう「物理値の比較」には、物理値から導出され得る値についての比較も含まれる。
【0010】
物理値に対するデジタル値の対応付けが、複数のn個のメモリセルから求められた物理値を互いに比較することに基づいていることにより、デジタル値の誤った対応付けが発生する頻度がほとんど無くなる。デジタル値のかかる誤った対応付けは、比較対象の物理値がその値の頻度分布の重なり領域内であり、かつ、比較の際にその順序を変えた場合にしか起こり得なくなる。
【0011】
一発展形態は、
・物理値の少なくとも一部の順序が特定されるように、当該物理値の少なくとも一部を互いに比較し、
・当該順序に基づいて、n個のメモリセルにK個の異なるメモリセルデジタル値を対応付ける
というものである。
【0012】
ここで、上述の順序において最初のn個のメモリセルについては、第1のメモリセルデジタル値が求められ、当該順序において最後のn個のメモリセルについては、第Kのメモリセルデジタル値が求められる。
【0013】
とりわけ、上記順序の物理値の位置に依存してメモリセルデジタル値を対応付けることができる。
【0014】
上記順序において最初のn個のメモリセルについて第1のメモリセルデジタル値が求められ、かつn≧2である場合、最初のn個のメモリセルの順序を求めることは不要となり得る。この場合には、メモリセルが最初のn個のメモリセルに属することを確認するだけで足り、最初のn個のメモリセルの順序においてどの位置にメモリセルが位置するかを特定することは不要となり得る。たとえば、最初のn個のメモリセル全てに同一のデジタル値1を対応付けることができる。
【0015】
個の第Kのメモリセルまでの他のメモリセルについても、同様のことがいえる。一部求められた順序、または、メモリセル値の部分集合に係る順序を求めるだけで十分となり得る。
【0016】
一発展形態は、n個のメモリセルを読み出すことによって物理値を求める、というものである。
【0017】
一発展形態は、全ての物理値を互いに比較する、というものである。
【0018】
一発展形態は、K=2とすることにより、n‐・・・n‐out‐of‐n符号はn‐,n‐out‐of‐n符号であり、ここで、n個の第1のメモリセル値は互いに同一の第1の値を有し、n個の第2のメモリセル値は互いに同一の第2の値を有し、かつ、第1の値は第2の値と異なる、というものである。
【0019】
‐,n‐out‐of‐n符号は、n‐out‐of‐n符号と称することもできる。ここで、n=n−nが成り立つ。
【0020】
一発展形態は、K=3とすることにより、n‐・・・n‐out‐of‐n符号はn‐,n‐,n‐out‐of‐n符号であり、ここで、n個の第1のメモリセル値は互いに同一の第1の値を有し、n個の第2のメモリセル値は互いに同一の第2の値を有し、n個の第3のメモリセル値は互いに同一の第3の値を有し、かつ、第1の値と第2の値と第3の値とはそれぞれ相異なる、というものである。
【0021】
一発展形態は、K>3が成り立つ、というものである。
【0022】
本事例では、メモリセルあたり3つより多くの値、すなわち3つより多くのメモリセルデジタル値を求めることができる。
【0023】
一発展形態は、メモリセルから求められるメモリセル値を、一義的に可逆の変換によって求める、というものである。
【0024】
ここで有利には、メモリセル値の数nは、メモリセルに記憶されたビット数の2倍より少ない。
【0025】
一発展形態は、物理値は時点である、というものである。
【0026】
一発展形態は、各時点をメモリセルの物理値の時間積分によって求める、というものである。
【0027】
一発展形態は、物理値は読出電流である、というものである。
【0028】
一発展形態は、得られたメモリセルデジタル値がn‐・・・n‐out‐of‐n符号の符号語を表す場合、当該符号語から逆変換によって複数のm個のビットを求める、というものである。
【0029】
一発展形態は、誤り符号を用いてm個のビットの誤り検出および/または誤り訂正を行う、というものである。
【0030】
一発展形態は、誤り符号に応じてデータビットから求められるチェックビットに基づいて、誤り検出および/または誤り訂正を行う、というものである。
【0031】
一発展形態は、誤り符号に応じてメモリセル値から求められるチェックビットに基づいて、誤り検出および/または誤り訂正を行う、というものである。
【0032】
一発展形態は、誤り符号はバイト誤り訂正および/またはバイト誤り検出符号である、というものである。
【0033】
一発展形態は、データビットの誤り訂正が行われる場合には、1バイトはm個のビットを含み、メモリセルの誤り訂正が行われる場合には、1バイトはn個のビットを含む、というものである。
【0034】
一発展形態は、誤り符号はビット誤り訂正および/またはビット誤り検出符号である、というものである。
【0035】
一発展形態は、メモリセルデジタル値を求めるために少なくとも1つの参照値を使用する、というものである。
【0036】
一発展形態は、メモリは以下の種類のうち少なくとも1種類のメモリを含む、というものである:
・キャッシュメモリ、
・レジスタ、またはレジスタアレイ、
・フラッシュメモリ、
・MRAM、
・SRAM、
・RE‐RAM、
・PC‐RAM、
・FE‐RAM、
・CB‐RAM、
・マルチビットメモリ、
・マルチレベルメモリ。
【0037】
さらに、メモリのメモリセルを処理するための装置であって、当該装置は処理ユニットを備えており、処理ユニットは、
・複数のn個のメモリセルから物理値を求め、ただし、nは少なくとも3であり、
・物理値の少なくとも一部を互いに比較し、
・比較された物理値に基づき、n個のメモリセルにK個の異なるメモリセルデジタル値を対応付け、
・対応付けにより得られたメモリセルデジタル値に、n‐・・・n‐out‐of‐n符号の符号語を対応付ける
ように構成された装置を開示する。
【0038】
上掲の処理ユニットは特に、プロセッサユニットとして、および/または、少なくとも一部がハードワイヤド方式もしくは論理方式の回路として構成することができ、この回路はたとえば、上述の方法を実行できるように構成されたものである。上述の処理ユニットは、適宜必要な周辺装置(メモリ、入出力インタフェース、入出力装置等)を備えた、いかなる態様のプロセッサまたは計算機またはコンピュータとすることもでき、またはこれを含むことができる。
【0039】
方法に関する上記説明は、装置にも準用できる。装置は、1つの構成要素で、または複数の構成要素に分散して構成することができる。
【0040】
上記課題は、本願にて記載された装置のうち少なくとも1つを備えたシステムを用いても、解決される。
【0041】
一発展形態は、処理ユニットがさらに、
・物理値の少なくとも一部を互いに比較することにより、物理値の順序を特定し、
・物理値の順序に基づき、n個のメモリセルにK個の異なるメモリセルデジタル値を対応付ける
ように構成されている、というものである。
【0042】
本願では、デジタルコンピュータのメモリに直接ロード可能なコンピュータプログラム製品も開示し、当該コンピュータプログラム製品は、上述の方法の各ステップを実施するために適したプログラムコード部分を備えている。
【0043】
本願では、コンピュータにより実行可能な指令を備えたコンピュータ可読の記憶媒体であって、当該指令は、コンピュータが上述の方法の各ステップを実施するために適したものである、記憶媒体を開示する。
【0044】
以下、図面を参照して詳細に説明される実施例の概略的な説明内容を参酌して、本発明の上述の特性、特徴および利点と、本発明を実現する態様とを説明する。全体を見やすくするため、同一または同機能の要素には同一の符号を付していることがある。
【図面の簡単な説明】
【0045】
図1図1aは、読み出される物理値の頻度分布を示す図であり、頻度分布間に参照値が示されている。図1bは、読み出される物理値の頻度分布を示す図であり、図1aとは対照的に頻度分布が重なり合っている。
図2図2aは、メモリセルから読み出された複数の物理値を含むチャートであり、図2bは、図2aに示された物理値のうちそれぞれ1つに相当する複数の時点を含むチャートである。
図3】1つのメモリセルの物理値Wの頻度分布を示すグラフである。
図4】メモリから読み出された値の頻度分布を示すグラフである。
図5】メモリから読み出された値0,1,2および3の4つの頻度分布を示すグラフであり、これら4つの頻度分布については3つの重なり領域が存在する。
図6】4つのメモリセルを備えたメモリを示す図であり、当該メモリセルから物理値が読み出され、複数の比較器を用いて対ごとに比較される。
図7図6の回路の比較器によって、複数の論理ゲートを用いて各メモリセルの対応する割当てを求める回路構成を示す図である。
図8】データビットを変換してメモリのメモリセルに記憶し、当該メモリセルを読み出して、逆変換を用いてデータビットに変換し戻す概略図である。
図9】データビットの複数の群を変換して記憶し、読出し後にデータビットに変換し戻す概略的なチャートである。
図10】誤り検出または誤り検出と誤り訂正とを組み合わせたものを行うことができる一例の回路構成を示す図であり、データビットは変換回路によってメモリビットに変換され、メモリビットはメモリのメモリセルに記憶される。
図11】誤り訂正または誤り検出と場合によっては誤り訂正とを行うことができる、他の代替的な回路構成を示す図である。
図12図11に示された回路構成の一変形態様の他の一例を示す図であり、当該回路は、逆変換と、場合によっては訂正されたデータビットの特定とを行う。
図13】複数のラッチに対するホールド信号を求めるための複数の論理ゲートを備えた一例の回路構成を示す図である。
図14】6つのメモリセルの読出し時に最初の3つの最速の0を求めるための一例の回路構成を示す図であり、当該回路構成では、図13の回路構成を用いて生成されたホールド信号が複数のラッチのオン制御のために使用される。
図15】データビットが変換回路を用いてどのようにして変換されてメモリセル値としてメモリのメモリセルに記憶されるかを示すための、概略的な構成を示す図である。
図16図15の構成の概略的な一変形形態を示す図であり、図16では一例として、n=k=6,K=3、かつn=n=2が成り立つようにされている。
図17】4つのデータビットx,x,x,xを4つのメモリセル値z,z,z,zに変換するための概略的な回路を示す図である。
【発明を実施するための形態】
【0046】
1つのメモリセルは、複数の異なる物理値または複数の異なる状態をとることができ、これら複数の異なる物理値または状態は、それぞれ異なるデジタル値に対応する。
【0047】
「W」は、メモリセルSの物理量Gを表し、「W」はメモリセルSのデジタル値を表す。
【0048】
デジタル値Wはバイナリ値とすることにより、2つの値のうち1つをとることができる。これら2つの値は、0および1と称することができる。デジタル値は特に、有限数の値のうち1つの値である。
【0049】
デジタル値Wが2つより多くの異なる値をとれるようにすることも可能である。たとえば、デジタル値は3つの異なる値をとることができる。かかる場合、これら異なるデジタル値は、0,1,2と称することができる。一般的に、デジタル値はK個の異なる値をとることができ、ここでK≧2である。これらK個の異なる値は、0,1,・・・K−1と称することができる。2つより多くのメモリセルデジタル値を記憶できるメモリセルを備えたメモリは、ここでは「多値メモリ」または「マルチレベルメモリ」と称する。かかるメモリのメモリセルは、「多値メモリセル」または「マルチレベルメモリセル」と称することができる。
【0050】
これに応じて、2つのデジタル値を記憶するメモリセルを備えたメモリは、「バイナリメモリ」と称することができ、そのメモリセルは「バイナリメモリセル」と称することができる。
【0051】
メモリセルSから読み出される物理値は「W」という。
【0052】
たとえば、メモリセルの物理値または状態は電気抵抗値とすることができる。よって、バイナリで2つの抵抗値を区別することができ、たとえば、大きい方の抵抗値はデジタル値0に相当し、小さい方の抵抗値はデジタル値1に相当することができる。他の一例では、大きい方の抵抗値がデジタル値1に相当し、小さい方の抵抗値がデジタル値0に相当することができる。
【0053】
2つより多くのデジタル値を1つのメモリセルに記憶する場合には、これに応じてランク付けが(抵抗値が大きくなる方向、または抵抗値が小さくなる方向に)行われ得る。たとえば、最大抵抗値をデジタル値0に対応付け、2番目に大きい抵抗値をデジタル値1に対応付け、3番目に大きい抵抗値をデジタル値2に対応付け、以下同様で、最後に最小抵抗値はデジタル値K−1に対応付けることができる(ここでも、1つのメモリセルSにK個のデジタル値を記憶することができる)。
【0054】
メモリセルSの読出し時には、デジタル値Wの書込み時ないしは記憶時に生成された物理値Wに依存するアナログの物理値Wを求める。
【0055】
誤りが無い場合には、読み出された物理値Wから、対応するデジタル値Wを求めることができる。
【0056】
たとえばMRAMの場合のように、複数の異なる電気抵抗値が、メモリセルSのそれぞれ異なる状態に相当する場合には、記憶された物理値Wは抵抗値であり、読み出される物理値Wは電流または電圧とすることができる。
【0057】
たとえば、メモリセルの読出し時に、全てまたは複数の読み出されるメモリセルに対して同一である少なくとも1つの参照値Rを使用することができる。オプションとして、(少なくとも1つの)参照値を(これも、または部分的に)外部調達することができる。メモリセルから読み出された値Wは、参照値Rと比較することができる。
【0058】
以下では、一例として特に、2つの異なるデジタル値0および1を記憶できるバイナリメモリセルに合わせて説明する。これに対応して、それぞれ2つより多くのデジタル値を記憶できるメモリセルを設けることも可能である。
【0059】
大きい方の抵抗値がバイナリ値0に相当し、かつ小さい方の抵抗値がバイナリ値1に相当する場合、小さい方の読み出される電流値Wはデジタル値0に相当し、かつ、大きい方の読み出される電流値Wはデジタル値1に相当する。
【0060】
これに応じて、メモリセルの読出し時に、読み出される値Wとして電圧を求め、この電圧のレベルは、以前にメモリセルにバイナリ値0またはバイナリ値1が書込まれたか否かに依存するオプションがある。
【0061】
読み出された値Wと1つの対応する参照値Rとの比較によってデジタル値Wが求められる場合、デジタル値Wについては、
<Rの場合、W=0、
>Rの場合、W=1
を適用することができる。
【0062】
複数のメモリセルにデジタル値0が書込まれる場合には、書込まれるメモリセルはたとえば統計的なばらつきに基づき(たとえば製造におけるプロセスばらつきに基づき)、それぞれ異なる物理値Wをとり、誤りが無い場合には、これらの物理値Wは全てデジタル値W=0に相当し、頻度分布によって表現され得る。このことに応じて、読み出される値Wも頻度分布に従ってそれぞれ異なる値をとる。
【0063】
内容的には、デジタル値1または他の値が書込まれるメモリセルについても、同じことがいえる:複数のメモリセルにデジタル値1が書込まれる場合には、書込まれるメモリセルはたとえば統計的なばらつきに基づき(たとえば製造におけるプロセスばらつきに基づき)、それぞれ異なる物理値Wをとり、誤りが無い場合には、これらの物理値Wは全てデジタル値W=1に相当し、頻度分布によって表現され得る。このことに応じて、読み出される値Wも頻度分布に従ってそれぞれ異なる値をとる。
【0064】
1つのメモリセルに1つより多くのビットを記憶できる場合、上述のことに応じて、どのメモリセルにも記憶され得る全てのデジタル値について、同じことがいえる。
【0065】
図1aは一例として、デジタル値1に相当する、読み出される値W(1)の頻度分布101と、デジタル値0に相当する、読み出される値W(0)の頻度分布102と、を示している。x軸上には複数の異なる読み出される値Wが示されており、y軸上にはこれらの読み出される値Wの頻度が示されている。さらに、頻度分布101と102との間に参照値Rも示されている。
【0066】
図1aに示された実施例では、頻度分布101と102との間に重なり部は存在しない。よって、バイナリ値0および1の対応付けに誤りは無い。換言すると、読出しエラーが生じない場合には、参照値Rを使用することにより、読み出される値Wと各バイナリ値0または1との一義的かつ誤りの無い対応付けが可能である。
【0067】
本実施例では簡素化して、放射または加熱の作用によって誤った対応付けがなされることもないと仮定する。
【0068】
図1bは一例として、デジタル値1に相当する、読み出される値W(1)の頻度分布103と、デジタル値0に相当する、読み出される値W(0)の頻度分布104と、を示している。同図でも、頻度分布103と104との間に参照値Rも示されている。
【0069】
図1aに示された頻度分布101および102とは異なり、頻度分布103と104とは重なり合っている。かかる重なり部は、たとえばMRAMメモリセルにおいて生じ得る。図1bでは重なり領域105が示されており、これは[0,1]とも称される。
【0070】
<Rが成り立つときには、読み出される値Wにバイナリ値0を対応付け、W≧Rが成り立つときには値Wにバイナリ値1を対応付ける場合において、読み出される値Wが重なり領域105内にある場合には、この対応付けに誤りがあり得る、ということになる。
【0071】
さらに、放射もしくは熱の作用またはメモリセルの永続的なエラーに基づく誤りも生じ得る。
【0072】
よって、参照値Rを使用すると重なり領域105に起因して、誤った対応付けがなされている可能性が重大になり得、バイナリ値0に相当する、読み出される値Wが重なり領域105内にある場合には、略半分において事例W>Rが成り立つことができ、これによって誤った対応付けがなされる。同様に、バイナリ値1に相当する、読み出される値Wが重なり領域105内にある場合には、略半分において事例W<Rが成り立つことができ、これによっても誤った対応付けがなされる。
【0073】
よって、読み出される値Wについては、これが重なり領域105内にある場合、対応するデジタル値の誤った対応付けがなされ得る。領域106は、読み出される値Wのうち、バイナリ値0であるにもかかわらず誤ってバイナリ値1に対応付けられる割合を示す。よって、誤ったデジタル値が対応付けられる頻度は基本的に、読み出される値Wが重なり領域105内にある頻度によって決定される。このことは特に、たとえば従来技術において生じ得るような大きな重なり領域において欠点となる。
【0074】
値0および1をとり得るデジタルバイナリ値xは、2つのメモリセルSおよびSを使用して記憶することができる。たとえば、x=0である場合には値0をメモリセルSに書込み(記憶し)、かつ値1をメモリセルSに書込むことができ、x=1である場合には値1をメモリセルSに書込み、かつ値0をメモリセルSに書込むことができる。逆に、x=0である場合には値1をメモリセルSに書込み(記憶し)、かつ値0をメモリセルSに書込むことができ、x=1である場合には値0をメモリセルSに書込み、かつ値1をメモリセルSに書込むことができる。
【0075】
両メモリセルSおよびSから読み出された(物理)値は、たとえばコンパレータを用いて互いに比較することができ、誤りが無い場合にはこの比較によって、値0が記憶されたか、または値1が記憶されたかを判断することができる。
【0076】
たとえば、メモリセルSから物理値Wが読み出され、メモリセルSから物理値Wが読み出される。
<W
が成り立つ場合、これは、両メモリセルSおよびSにバイナリ値x=0が記憶されたことを意味し得る。
>W
が成り立つ場合、これは、両メモリセルSおよびSにバイナリ値x=1が記憶されたことを意味し得る。
【0077】
本実施例では、メモリセルSおよびSに記憶されて読み出された値WおよびWを互いに比較し、参照値とは比較しない。これにより、読み出された値を相互に比較することによって、誤りが生じる確率を格段に低減することができる。
【0078】
誤りは、セルSの読み出された値WおよびセルSの読み出された値Wの双方が、分布W(0)およびW(1)の重なり領域内にある場合にのみ生じ得る。これは、両読み出された値の一方のみが重なり領域内にある場合より格段に稀なケースとなる。
【0079】
それに対して、1つのメモリセルから読み出された値を参照値と比較する場合には、この1つの読み出された値が、対応する分布の重なり領域内にあるときには既に、誤りが生じている可能性がある。
【0080】
その際の欠点は、記憶すべきビットあたり2つのメモリセルが必要となること、すなわち、n個のビットを記憶するためには2・n個のメモリセルが必要となることである。
【0081】
ここで開示している実施例の利点は、可能な限り少ないメモリセルを使用して高い信頼性でデジタル値を記憶できることである。もう1つの利点は、記憶時にはさらに誤り符号を使用できるので、読出しエラーを少なくとも部分的に検出および/または訂正できることである。
【0082】
メモリセル値へのデータビットの変換
たとえば、k個のビットの2個の可能な割当てを、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値の値(バイナリまたは多値、すなわちK≧2)をとり得るようにすることも可能である。たとえば少なくとも2つのメモリセルを設け、これらのうち1つのメモリセルはK値の値を記憶し、他のメモリセルはK値の値を記憶し、かつK≠Kとすることも可能である。
【0087】
バイナリメモリセル値
まず、メモリセル値がバイナリ値である場合を検討する。
【0088】
k個のデータビットx・・・xをn個のメモリセル値z・・・zに変換してn個のメモリセルに記憶するとする。
【0089】
k個のデータビットx・・・xの可能な2個の割当ては、たとえば組み合わせ回路(「変換回路」ともいう)によってメモリセル値に変換される。この変換回路は、k個のデータビットの2個の割当てをn個のメモリセル値にマッピングする変換を提供するものである。
【0090】
この変換は、データビットが変換されるメモリセル値がn‐out‐of‐n符号の符号語となるように実現される。n‐out‐of‐n符号の符号語は、n個の第1のバイナリ値と、n=n−n個の第2のバイナリ値と、を有する。第1のバイナリ値が値1を有し、かつ第2のバイナリ値が値0を有する場合、n‐out‐of‐n符号の符号語は複数のn個の1と、複数のn=n−n個の0と、を有する。
【0091】
これに応じて、第1のバイナリ値が値0を有し、かつ第2のバイナリ値が値1を有することが可能である。
【0092】
‐out‐of‐n符号の符号語としてデータビットを記憶することが有利である理由は、たとえばメモリセルに記憶されたn‐out‐of‐n符号の符号語を読み出す際に、符号化されずに記憶されたデータビットよりも高い信頼性を達成できるからである。
【0093】
‐out‐of‐n符号は「n‐,n‐out‐of‐n符号」と称することもでき、ここで、nは第1のバイナリ値の数を表し、nは第2の2バイナリ値の数を表す。その際には、n=n−nである。かかる呼称から、各符号語には2つの異なる値(ここではバイナリ値)0および1が存在することが明らかである。
【0094】
ここで、
<n
=n−n<n
+n=n
≧1
≧1
が成り立つようにする。
【0095】
たとえば、メモリセル値の数nを3以上とすることができる。
【0096】
メモリセル値の数が2に等しい場合(すなわちn=2である場合)、対応する1‐out‐of‐2符号の符号語は10および01となる。たとえば、バイナリ値0は10として符号化され、バイナリ値1は01として符号化され得る。ここで、1ビットの情報を記憶するためにn=2個のメモリセルを要することは、不利となる。
【0097】
上記で説明したように、k個のデータビットの異なる割当ては2個となる。さらに、n‐out‐of‐n符号の異なる符号語の数は
【数1】
となる。
【0098】
k個のデータビットの2個の割当てをn‐out‐of‐n符号の
【数2】
の符号語に変換することは、一義的に可逆に行うことができるので、データビットの割当てが符号語のうち1つに対応付けられている場合、符号語のうち1つに基づいて、データビットの対応する割当てを一義的に推定することができる。
【0099】
異なる符号語の数は少なくともデータビットの割当ての数と同数である。すなわち、以下の条件
【数3】
が満たされる場合、k個のデータビットの全ての割当てをn‐out‐of‐n符号の符号語に可逆的に一義的に変換することができる。
【0100】
適用事例如何によっては、k個のデータビットの2個の可能な割当て全てが生じないことも可能である。そうである場合において、値Anz<2が、実際に生じる割当ての数を示す場合には、これらの実際に生じる割当てに符号語を可逆的に一義的に対応付けるためには、以下の条件
【数4】
を満たせば足りる。
【0101】
これによって有利には、k個のデータビットを記憶するために使用されるメモリセルを2・k個より少なくすることができる。
【0102】
バイナリメモリセル値:実施例
たとえばデータビットがk=4個であると仮定すると、このデータビットに対して2=2=16個の異なる割当てが存在することとなる。たとえばn=6個のメモリセル(nはメモリセル値の数であり、各メモリセル値はそれぞれ1つのメモリセルに記憶されるとする)が設けられており、かつ、n=3である場合には、3‐out‐of‐6符号の異なる符号語は
【数5】
となり、各符号語はそれぞれ3つの1と3つの0とを有する。よって、4つのデータビットの異なる16個の割当てを3‐out‐of‐6符号の(全部で20個の符号語のうち)16個の選択された符号語に変換し、メモリの6個のメモリセルに記憶することが可能になる。
【0103】
メモリセル値がn=6個であり、かつn=2である場合には、2‐out‐of‐6符号の異なる符号語は
【数6】
のみとなり、各符号語はちょうど2つの1と4つの0とを有する。よって、4つのデータビットの2=16個の割当てを2‐out‐of‐6符号の符号語に可逆的に一義的に変換することはできない。
【0104】
実際に生じる割当ての値Anzがたとえば15以下である場合には、この2‐out‐of‐6符号を用いることも可能である。
【0105】
バイナリメモリセル値:データビットの群分け
以下、N個のデータビットをメモリセル値に変換することについて説明する。ここで、N=M・kが成り立つ必要があり、Mは1より大きい。よって、それぞれk個のデータビットからなるM個の群を構成することができ、k個のデータビットの各群のそれぞれ2個の割当てが、
【数7】
の2個の符号語に可逆的に一義的に変換することができる。
【0106】
それぞれk個のデータビットのM個の群の割当てを、それぞれ同一のn‐out‐of‐n符号の符号語に変換する場合には、メモリセル値はM・n個となり、これに応じて、これらのメモリセル値はM・n個のメモリセルに記憶することができる。
【0107】
ここで一例として、M個の群がそれぞれk個のデータビットを含む事例を説明する。これに代えて、第1のデータビット群はk個のデータビットを有し、第2のデータビット群はk個のデータビットを有する等、第Mの群はk個のデータビットを有するまで同様とすることが可能である。各群あたりのデータビット数k,k,・・・kは、互いに少なくとも部分的に異なることができる。よって、
N=k+k+・・・k
が成り立ち、ここで、
・第1のk個のデータビットは第1のn‐out‐of‐n符号の符号語に、
・第2のk個のデータビットは第2のn‐out‐of‐n符号の符号語に、
・・・
・第Mのk個のデータビットは第Mのn‐out‐of‐n符号の符号語に
変換することができる。ここで、各符号は少なくとも部分的に相違することができる。オプションとして、群あたりのデータビット数が同数である場合にも、複数の異なる符号を用いることが可能である。
【0108】
たとえばデータビット数がk=3である場合、これら3つのデータビットの可能な割当ては2=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=16個の可能な割当ては、たとえば、20個の異なる符号語を有する3‐out‐of‐6符号の符号語に変換することができる。3つのデータビットを有する残りの1群は、2=8個の可能な割当てを有する。これら3つのデータビットは、たとえば、10個の符号語を有する3‐out‐of‐5符号の符号語に変換することができる。これによって、必要なメモリセルは、3つのデータビットの2=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個の異なる割当てを、可逆的に一義的にn個のメモリセル値に変換することができる。これらn個のメモリセル値は、
・n個の第1の値と、
・n個の第2の値と、
・・・
・n個の第Kの値と
を有する。たとえば、
・第1の値を0と、
・第2の値を1と、
・・・
・第Kの値をK−1と
称することができる。
【0113】
n個のメモリセル値は、メモリセル値の「n組」と称することもできる。n個の第1の値、n個の第2の値・・・n個の第Kの値を有するn個の多値(ここではK値)メモリセル値のこのn組は、
‐,n‐・・・n‐out‐of‐n符号
の符号語と称することができる。
【0114】
‐,n‐・・・n‐out‐of‐n符号は、以下の数の符号語を有する:
【数8】
ここで、k個のデータビットの2個の割当てを、可逆的に一義的に、n‐,n‐・・・n‐out‐of‐n符号の上述の符号語のうち2個に変換したい。この変換は、以下の条件
【数9】
ないしは、以下の条件
【数10】
が満たされた場合において、上記にてバイナリメモリセル値について説明したのと同様に、値Anz(Anz<2)がk個のビットの実際に生じる割当ての数である場合に可能となる。
【0115】
多値メモリセル値:実施例
k=6個のデータビットを記憶するとする。このことにより、6つのデータビットの可能な割当ては2=2=64個となる。データビットは、既に述べたようにバイナリ値であり、多値メモリセルに記憶するために事前に変換が施される。
【0116】
例として、3値のメモリセル値(K=3)を検討する。このことにより、各メモリセルは3つの異なる値を記憶することができる。全部でメモリセル値はn=6個となり(よって、メモリセルは6つとなり)、n=n=n=2であると仮定する。このことにより、本実施例で一例として使用される2‐,2‐,2‐out‐of‐6符号の異なる符号語は
【数11】
となる。これら90個の符号語は、6つのデータビットの2=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=4個の異なる割当てを1‐,1‐,1‐out‐of‐3符号の符号語として3つのメモリセルに記憶することができる。
【0120】
他の一実施例において、4値のメモリセル値K=4を検討する。各メモリセルはたとえば、値0,1,2または3のうちいずれか1つの値を記憶することができる。本実施例では、メモリセルは全部でn=6個であり、n=n=2かつn=n=1であると仮定する。このことから、2‐,2‐,1‐,1‐out‐of‐6符号の異なる符号語は、
【数13】
となる。これら180個の符号語により、可能な割当てが2=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個の割当てが、n‐,n‐,・・・n‐out‐of‐n符号の2個の符号語に可逆的に一義的に変換することができる。
【0123】
それぞれk個のデータビットのM個の群の割当てを、n‐,n‐,・・・n‐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のバイナリ値と、n個の第2のバイナリ値と、を有する。第1のバイナリ値が「1」と称され、第2のバイナリ値が「0」と称される場合、k個の記憶すべきビットの列は、n‐out‐of‐n符号の符号語に変換され、n=n−nが成り立つ。
【0129】
nおよびnが与えられている場合、kは、
【数14】
が成り立つように決定される。
【0130】
メモリセルがバイナリでなく、かつ、1つのメモリセルがK値のメモリセルデジタル値を記憶するために用いられる場合、k個のビットの列はn個のK値のメモリセル値の列に変換され、n個のメモリセルに記憶される。n個のメモリセル値の列は、予め決まった第1の数nの互いに同一の第1のメモリセル値と、予め決まった第2の数nの互いに同一の第2のメモリセル値等、予め決まった第Kの数nの互いに同一の第Kのメモリセル値を有するに至るまでになるように、決定される。
【0131】
ここで、
1≦n,1≦n・・・1≦n
かつ
+n+・・・+n=n
が成り立つようにする。
さらに、kは
【数15】
が成り立つように決定される。
【0132】
予め決まった第1の数nの互いに同一の第1のメモリセル値と、予め決まった第2の数nの互いに同一の第2のメモリセル値等、予め決まった第Kの数nの互いに同一の第Kのメモリセル値を有するに至る、n個のK値のメモリセル値の列は、「(n‐,n‐・・・n‐out‐of‐n)符号の符号語」と称することができる。
【0133】
互いに同一の第Kのメモリセル値の数nは、
=n−n−n・・・−n
で求められる。
【0134】
メモリセルの読出し時には、n個のメモリセルの群のメモリセルから読み出された物理値の比較を用いて、当該群のメモリセルに記憶されたデジタルデータを求める。これに代えて、読み出された物理値の比較または導出された特性を使用する比較を用いて、n個のメモリセルの群のメモリセルに記憶されたデジタルデータを求める。
【0135】
特性としては、複数の異なるメモリセルから読み出された物理値の時間的振舞いとすることができ、比較に際して(共に)考慮することができる。
【0136】
時点τにおいて、メモリセルSから読み出された値はアナログ値W(τ)をとる。たとえば、メモリセルSに記憶される値Wは電気抵抗値であり、当該メモリセルSから時点τで得られる物理値W(τ)は読出電流(電流強度)である。
【0137】
メモリセルSの抵抗Wが他のメモリセルSの抵抗値Wより小さい場合、両メモリセルを読み出すために予め定められた(等しい)読出電圧を使用する限りにおいて、読出電流W(τ)は他のメモリセルSの読出電流W(τ)より大きくなる。
【0138】
容量Cを用いてメモリセルSの読出電流W(τ)を時間積分すると、時点tにおいて予め決まった閾値Swに達する。メモリセルSから得られる物理値は、ここでは一例として読出電流Wである。この読み出された物理値から求められる導出値は、一例として、読出電流についての時間積分が予め決まった閾値Swに達する時点tである。
【0139】
同一の容量Cを用いてメモリセルSの読出電流W(τ)を時間積分すると、時点tにおいて上記の予め決まった閾値Swに達する。
【0140】
メモリセルSおよびSの読出電流について
(τ)>W(τ)
が成り立つので、t<tも成り立ち、メモリセルSよりメモリセルSの方が閾値Swに達する時期が早くなる。
【0141】
よって、メモリセルSおよびSについて、メモリセルSの読出電流の積分の方がメモリセルSの読出電流の積分より早く閾値Swに達したか否かを比較することができる。これは、(電圧が同じである場合において)抵抗値Wが抵抗値Wより小さい場合にそうなる。
【0142】
よって、メモリセルSおよびSに記憶された物理値WおよびWまたはその状態に基づいて、当該メモリセルSおよびSの順番(または「順序」)を求めるというオプションが存在する。閾値Swに達する時点tおよびtによって、メモリセルをその抵抗WおよびWに従ってソートすることができる。すなわち、先にメモリセルSをソートしてから、その後にメモリセルSをソートすることができる(またはその逆も可能である)。
【0143】
このアプローチは、n個のメモリセルの1つの群の全てのメモリセルをソートするために使用することができる。
【0144】
たとえば、最初のn個のメモリセルにバイナリ0を書込み、かつ、第2のn個のメモリセルにバイナリ1を書込んだ場合において、エラーが無い場合には、最初のn個のメモリセルの電気抵抗は第2のn個のメモリセルの電気抵抗より小さくなるので、最初のn個のメモリセルの読出電流は第2のn個のメモリセルの読出電流より大きくなる。たとえば、n+n=nが成り立つ。
【0145】
このことに応じて、最初のn個のメモリセルについて閾値Swに達する時点t,t・・・tn1は、第2のn個のメモリセルについて閾値Swに達する時点t,t・・・tn2より前に来ることとなる。
【0146】
このようにして、閾値Swに達する時点に従ってメモリセルを整列することができる。たとえば、最も早い(最初の)時点に第1のメモリセルを対応付け、最も遅い(最後の)時点に第nのメモリセルを対応付けることができる。本実施例では、最初のn個のメモリセルが、バイナリ値0が書込まれたメモリセルであり、n個の他の残りのメモリセルは、バイナリ値1が書込まれたメモリセルとなる。
【0147】
たとえば、以下の積分
【数16】
は、時点tにおける電圧v(t)を表し、これは、n個のメモリセルS〜Sに係る、その時点の読出電流W(i=1・・・n)に依存する。
【0148】
この電圧v(t)を閾値Swと比較することができる。これにより、上述の積分が閾値Swに達した時点を求めることができる。このようにして得られた時点を互いに比較することができる。かかる比較によって、メモリセルの状態がバイナリ値0に相当するか、またはバイナリ値1に相当するかを判断することができる。
【0149】
時点tは、
t<tの場合にはv(t)<Sw
かつ
t>tの場合にはv(t)>Sw
を適用することによって特定することができる。ここではたとえば、読出電流が時間の経過において一定であると仮定する。
【0150】
読出電流を介して、ないしは読出電流の時間積分を介して、メモリセルの抵抗値または状態を互いに比較することができる。有利には、最初のn個のセルの抵抗値が第2のn個のメモリセルの抵抗値より大きくない限りにおいては、最初のn個のセルの中での抵抗値のばらつきは、当該メモリセルへのバイナリ値0の対応付けに影響を及ぼさない。このことに応じて、第2のn個のセルの抵抗値が最初のn個のメモリセルの抵抗値より小さくない限りにおいては、第2のn個のメモリセルの中での抵抗値のばらつきは、当該メモリセルへのバイナリ値1の対応付けに影響を及ぼさない。
【0151】
メモリセルの部分群
たとえば、n個のメモリセルの1つの群の同一の第1のデジタル値を有するn個のメモリセルの順序、または、同一の第2のデジタル値を有するn個のメモリセルの順序を求めることも、不要となり得る。第1のデジタル値を有するn個のメモリセルは第1の部分群を構成し、第2のデジタル値を有するn個のメモリセルは第2の部分群を構成する。各部分群はそれぞれ、n個のメモリセルの群の一部に相当する。以下、かかる部分群の一例を詳細に説明する。
【0152】
一例として、2つの部分群を検討する。ここで、各部分群のメモリセルの数nおよびnについては、
+n=n
が成り立つ。
【0153】
第1の部分群のn個のメモリセルには、それぞれ第1のデジタル値が書込まれ、第2の部分群のn個のメモリセルにはそれぞれ、第1のデジタル値とは異なる第2のデジタル値が書込まれる。
【0154】
メモリセルからの物理値の読出しの際には、第1の部分群のn個のメモリセル間で順序を特定しないことが有利となり得る。というのも、これらには同一のデジタル値が書込まれているからである。
【0155】
例として、n=6個のメモリセルS・・・Sを検討する。メモリセルS,S,Sは第1の部分群のn=3個のメモリセルであり、メモリセルS,S,Sは第2の部分群のn=3個のメモリセルである。第1の部分群のメモリセルには値0が書込まれており、第2の部分群のメモリセルには値1が書込まれている。
【0156】
図2aは、メモリセル値S〜Sから読出された複数の物理値W,W,W,W,WおよびWを含むチャートである。物理値Wは、たとえば読出電流である。
【0157】
図2bは、時点t〜tを含むチャートであり、各時点tはそれぞれ、物理値Wのうちそれぞれ1つに相当し、m=1・・・6である。
【0158】
よって、各対応する読出電流の時間積分によって、各読出電流の時間積分が予め決まった閾値に達する時点t,t,t,t,tおよびtを求めることができる。たとえば、図2bによれば
>t>t>t>t>t
が成り立つ。
【0159】
メモリセルS〜Sに記憶されたデジタル値0または1の対応付けは、i=4,5,6かつj=1,2,3である場合、
>t
が成り立つと判断されることによって行うことができる。とりわけ有利なのは、時点t,t,tと時点t,t,tとの間の差を特定する必要がないことである。
【0160】
たとえば、読出電流についての時間積分が閾値Swに達したn個の第1のメモリセルに第1のデジタル値を割当て、かつ、n個の他のメモリセルには第2のデジタル値を割当てることができる。かかる場合には、メモリセルのうち1つがn個の第1のメモリセルに含まれるか否かを特定することで足り得る。
【0161】
また、メモリセルのアナログ信号の結合を形成し、この結合に基づいて、メモリセルに第1のデジタル値を対応付けるか、または他のデジタル値を対応付けるかを判断することもできる。
【0162】
メモリセルがn個であり、かつ第1のメモリセルがn個である群の場合、n個のメモリセルにn個の0とn=n−n個の1とを書込む
【数17】
の異なる態様がある。よって、n個のメモリセルでは
【数18】
の異なる割当て(「状態」ともいう)が可能であるから、
【数19】
が成り立つ場合、k個のデータビット(「kビットバイト」ともいう)をn個のメモリセルに記憶することができる。nが偶数である場合には、n=n/2であるときに、可能な状態の数が最大となる。
【0163】
たとえば、メモリセルがn=6個であり、第1のメモリセルおよび第2のメモリセルがそれぞれn=n=3個であるとする。n=6個のメモリセルが、メモリセルS〜Sの1つの群を構成し、これらのメモリセルに、3‐out‐of‐6符号の1つの符号語を記憶することができる。
【0164】
まず、誤りが生じないケースについて説明する。メモリセルの読出し時には、読出電流W(τ)〜W(τ)についての積分値が閾値Swに達する時点t〜tを比較する。
【0165】
たとえば
<t<t<t<t<t
が成り立つ場合には、メモリセルの順序は
,S,S,S,S,S
となる。
【0166】
メモリセルS〜Sには、たとえば3‐out‐of‐6符号の符号語101100が記憶されて、これらのメモリセルから読み出される。整列されたメモリセルのうち最初の3つのメモリセルS,SおよびSについては値1が、整列されたメモリセルのうち、それに続く3つのメモリセルS,SおよびSについては値0が、読み出される値として求められる。
【0167】
それに対して、たとえば
<t<t<t<t<t
が成り立つ場合には、メモリセルの順序は
,S,S,S,S,S
となる。
【0168】
よって、メモリセルS〜Sからは3‐out‐of‐6符号の同一の符号語101100が読み出される。バイナリ値1を記憶するメモリセルS,SおよびSの中での順序の入替え、または、バイナリ値0を記憶するメモリセルS,SおよびSの中での順序の入替えは、3‐out‐of‐6符号の読み出される符号語に影響を及ぼさない。
【0169】
かかる特性が有利であるのは、同一のデジタル値に相当する、読み出される物理値の比較的小さいばらつきは、読出し時に、対応付けられるデジタル値に影響を及ぼさないからである。
【0170】
本実施例では、メモリセルS,SおよびSが値1を記憶するために設けられている。これらのメモリセルには、それぞれバイナリ値1を表す値W,W,Wが書込まれる。これらの値W,W,Wの相互間の差は僅かであるが、特に偶然の影響によって僅かに変わり得る。
【0171】
これに応じて、メモリセルS,SおよびSが値0を記憶するために設けられている。これらのメモリセルには、それぞれバイナリ値0を表す値W,W,Wが書込まれる。これらの値W,W,Wの相互間の差は僅かであるが、これらの値も偶然の影響によって僅かに変わり得る。
【0172】
たとえば、
<t<t<t<t<t
ではなく、以下の時間的順番
t’<t’<t’<t’<t’<t’
が求められた場合には、メモリセルは
,S,S,S,S,S
に整列され、メモリセルS〜Sからは3‐out‐of‐6符号の符号語111000が読み出される。これは、誤りが無いときの符号語101100とは、誤りが無い場合のメモリセルの順序では値0が対応付けられる時間的に最初のメモリセルSと、誤りが無い場合においてメモリセルの順序では値1が対応付けられる時間的に最後のメモリセルSとが、入れ替わっている点で異なっている。
【0173】
実施例:3値メモリセル
以下では一例として、1メモリセルあたり3つの異なるデジタル値0,1および2を記憶できるシナリオについて検討する。
【0174】
図3は、1つのメモリセルの物理値Wの頻度分布を示すグラフである。
【0175】
図3は、記憶された値0の頻度分布301と、記憶された値1の頻度分布302と、記憶された値2の頻度分布303と、を示している。頻度分布301はW(0)と、頻度分布302はW(1)と、頻度分布303はW(2)とも称される。
【0176】
頻度分布301と302とは重なり領域304を有し、頻度分布302と303とは重なり領域305を有する。
【0177】
一実施例では、物理値は抵抗値とすることができる。
【0178】
図4は一例として、メモリから読み出される値2の頻度分布401と、メモリから読み出される値1の頻度分布402と、メモリから読み出される値0の頻度分布403と、を示している。頻度分布401はW(2)と、頻度分布402はW(1)と、頻度分布403はW(0)とも称される。
【0179】
頻度分布401と402とは重なり領域404を有し、頻度分布402と403とは重なり領域405を有する。
【0180】
一実施例では、読み出される物理値は電流強度とすることができる。
【0181】
メモリセルSの読出電流の電流強度W(τ)を時間tにわたって積分すると、時点tにおいて、予め決まった閾値Swに達する。
【0182】
メモリセルSの読出電流の電流強度W(τ)を時間tにわたって積分すると、時点tにおいて、上述の予め決まった閾値Swに達する。
【0183】
メモリセルSにデジタル値2が書込まれる場合には、メモリセルSは比較的大きい抵抗値(W)を有し、このメモリセルSの読出し時には、読出電流Wは比較的小さくなる。よって、読出電流の時間積分が予め決まった閾値Swに達する時点tは大きくなる。
【0184】
メモリセルSにデジタル値1が書込まれる場合には、メモリセルSは、メモリセルSの抵抗値Wより小さい抵抗値Wを有する。よって、メモリセルSの読出し時の読出電流Wは、メモリセルSの読出し時の読出電流Wより大きくなる。よって、読出電流の時間積分が予め決まった閾値Swに達する時点tは、時点tより前になる。すなわち、t<tとなる。
【0185】
メモリセルSにデジタル値0が書込まれる場合には、メモリセルSは、メモリセルSの抵抗値Wより小さくかつメモリセルのSの抵抗値Wより小さい抵抗値Wを有する。よって、メモリセルSの読出電流Wは、メモリセルS,Sの読出電流Wまたは読出電流Wより大きくなる。よって、読出電流の時間積分が予め決まった閾値Swに達する時点tは、時点tおよびtより前になる。すなわち、t<t<tとなる。
【0186】
メモリセルSにメモリセルSと同一のデジタル値が書込まれている場合には、メモリセルSの抵抗値WはメモリセルSの抵抗値Wより大きくなるか、または小さくなり得る。
【0187】
また、メモリセルSの読出電流WがメモリセルSの読出電流Wより大きくなること、または小さくなることもあり得る。
【0188】
さらに、メモリセルSの読出電流についての時間積分が、予め決まった閾値Swに達する時点tは、メモリセルSの読出電流についての時間積分が予め決まった閾値Swに達する時点tより前後することもあり得る。
【0189】
かかる場合には、t<tであるかまたはt<tであるかは不明である。値「不明」は、ここでは記号“−”によっても記述される。
【0190】
実施例
一例として、n=6個のメモリセルS〜Sの群を検討する。ここで、それぞれ2つのメモリセルを有する3つの部分群が存在する。すなわち、n=n=n=2であり、
・n=2個の第1のメモリセルには、メモリセルデジタル値2が、
・n=2個の第1のメモリセルには、メモリセルデジタル値1が、
・n=2個の第1のメモリセルには、メモリセルデジタル値0が
記憶される。よって、2つの2と2つの1と2つの0とを6つの位置に配分して、3つのメモリセルデジタル値(3値)を有する6つのメモリセルに記憶する態様が
【数20】
存在することになる。
【0191】
これとは異なり、n=6かつn=n=3の場合には、3つの1と3つの0とを6つの位置に配分して、バイナリのメモリセルデジタル値を有する6つのメモリセルに記憶する態様は
【数21】
のみとなるので、バイナリのメモリセル値0および1のみを使用するよりも、3つの3値デジタル値0,1および2を使用した方が、n個のメモリセルの1つの群に記憶できる情報が著しく多くなる。
【0192】
よって、各メモリセルが値0,1または2をとることができる本実施例では、複数のk=6個のデータビット(可能な割当ては2=64個)をn=6個のメモリセルデジタル値に変換して、n=6個のメモリセルに記憶することができる。これら6個のメモリセル値はそれぞれ、
・n=2個の第1の値2と、
・n=2個の第2の値1と、
・n=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=2=64個のバイナリワードは、2‐,2‐,2‐out‐of‐n符号の符号語のうち64個に可逆的に一義的に変換することができる。
【0196】
図15は、k個のデータビットx〜xが変換回路1501を用いてどのようにして変換されてn個のメモリセル値としてメモリ1502のn個のメモリセルに記憶されるかを示すための、概略的な構成を示す図である。ここで、一例としてk≧2かつn≧3であると仮定する。変換回路1501の入力側には、k個のデータビットx〜xが入力される。
【0197】
n個のメモリセル値は変換回路1501から、メモリ1502の各メモリセルのデータ入力側に供給される。これらn個のメモリセル値は、
‐,n‐・・・n‐out‐of‐n符号
の1つの符号値を構成する。メモリセル値はたとえば、K値のデジタル値である。
【0198】
図16は、図15の構成の概略的な一変形形態を示す図であり、図16では一例として、n=k=6,K=3、かつn=n=2が成り立つようにされている。図16に示されている実施例では、6つのデータビットx〜xが変換回路1601によって6つの3値メモリセル値に変換されて、メモリ1602に記憶される。6つのメモリセル値は2つの値2と、2つの値1と、2つの値0と、を有し、(誤りが無い場合には)2‐,2‐,2‐out‐of‐6符号の1つの符号語を構成する。各メモリセルは、3値(K=3)のメモリセル値を記憶することができる。
【0199】
メモリセルS〜Sについては、読出し時においては上述のように、読出電流の時間積分が予め決まった閾値Swに達する(またはこれを上回る)時点t〜tを求める。たとえば
i1<ti2<ti3<ti4<ti5<ti6
が成り立つ場合には、メモリセルS〜のS順序は
i1,Si2,Si3,Si4,Si5,Si6
に整列される。その際には、値i・・・iの集合は値1・・・6の集合に等しい。たとえばi=5,i=4,i=2,i=1,i=6かつi=3である場合、
<t<t<t<t<t
となり、よってメモリセルの順序は
,S,S,S,S,S
となる。
【0200】
メモリセルの順序において最初の2つのメモリセルSi1およびSi2にはメモリセルデジタル値0を対応付け、当該順序において次の2つのメモリセルSi3およびSi4にはメモリセルデジタル値1が対応付けられ、当該順序において次の2つのメモリセルSi5およびSi6にはメモリセルデジタル値2が対応付けられるように規定することができる。
【0201】
また、最初の2つのメモリセルSi1およびSi2にはメモリセルデジタル値2を対応付け、次の2つのメモリセルSi3およびSi4にはメモリセルデジタル値1が対応付けられ、次の2つのメモリセルSi5およびSi6にはメモリセルデジタル値0が対応付けられるように規定することもできる。これに応じて、他の対応付け態様も可能である。
【0202】
デジタル値の誤りのある対応付けがなされるのは、
・メモリセルSi2の読出電流Wi2およびメモリセルSi3の読出電流Wi3の双方が、値0および値1双方に対応する読出電流が現れる重なり領域内にある場合、または、
・メモリセルSi4の読出電流Wi4およびメモリセルSi5の読出電流Wi5の双方が、値1に対応する読出電流および値2に対応する読出電流の双方が現れる重なり領域内にある場合
のみである。
【0203】
よって有利には、デジタル値の誤りの無い対応付けは高い確率で多値のデジタルメモリにも達成される。というのも、6つのメモリセルについてはメモリセルの僅かな一部についてしか誤りのある対応付けは起こり得ず、また、そのためには、各2つのメモリセルの読出電流が同時に重なり領域内になければならないからである。
【0204】
したがって有利には、記憶されたメモリセル値の読出し時に読出しエラーが生じる頻度はほとんど無くなる。読出し時には、異なるメモリセルの読み出された物理値または読み出された物理値から求められた値を互いに比較することができ、これは結果として、読出しエラーの効果的な低減になり得る。比較の誤った結果が生じ得るのは、比較対象の両値が同時に重なり領域内にある場合のみである。
【0205】
また、対応するn個のメモリセルに記憶された符号語が1つの(n‐,n‐・・・n‐out‐of‐n)符号を構成する場合、参照値を使用して、K値のメモリセル値としてn個のメモリセルに記憶された値を読み出すことも可能である。
【0206】
実施例:4値メモリセル
図17は、4つのデータビットx,x,x,xを4つのメモリセル値z,z,z,zに変換するための概略的な構成を示している。
【0207】
これら4つのデータビットx,x,x,xは、変換回路1701の入力側に入力される。これら4つのデータビットは変換回路1701に基づいて4つのメモリセル値z,z,z,zに変換され、メモリ1702のメモリセルS,S,S,Sに記憶される。
【0208】
メモリ1702は本実施例では、n=4個のS,S,S,Sから成る群を有し、各メモリセルにはたとえば4つの異なる値0,1,2,3および4を記憶することができる。よって、1つの部分群あたりのメモリセルは1つとなる。すなわち、n=n=n=n=1となる。
【0209】
誤りの無い場合、メモリセル値z,z,z,zは、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(3)と、頻度分布502はW(2)と、頻度分布503はW(1)と、頻度分布504はW(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の読出電流の電流強度W(τ)を時間tにわたって積分すると、特定の時点tにおいて、予め決まった閾値Swに達する。
【0215】
メモリセルSの読出電流の電流強度W(τ)を時間tにわたって積分すると、特定の時点tにおいて、上述の予め決まった閾値Swに達する。
【0216】
たとえばメモリセルSに値3が記憶されており、かつ、メモリセルSにデジタル値0,1または2のいずれか1つの値が記憶されている場合には、メモリセルSの読出電流Wの方がメモリセルSの読出電流Wより小さいので、t<tが成り立つ。
【0217】
たとえばメモリセルSに値1が記憶されており、かつ、メモリセルSにデジタル値3または2のいずれか1つの値が記憶されている場合には、メモリセルSの読出電流Wの方がメモリセルSの読出電流Wより大きいので、t>tが成り立つ。
【0218】
たとえばt<t<t<tが成り立つ場合には、メモリセルの順序はS,S,S,Sとなる。メモリセルSには値0を、メモリセルSには値1を、メモリセルSには値2を、メモリセルSには値3を対応付けることができる。
【0219】
変換回路1701の入力側には4つのデータビットx,x,x,xが入力され、変換回路1701の出力側においてメモリセル値z,z,z,zが出力される。変換回路1701において行われるこの変換は、たとえば表1に従って特定することができる。
【表1】
【0220】
4つのデータビットx,x,x,xは16個の異なるバイナリ値0000・・・・1111をとることができ、これらは全て上掲の表1に示されている。各行はそれぞれ、変換回路1701によって行われ得る、データビットxから1‐,1‐,1‐,1‐out‐of‐4符号の符号語zへの変換に相当する。
【0221】
たとえば表1の第3行は、データビット0010に符号語3120が対応付けられていることを示している。
【0222】
既に述べたように、1‐,1‐,1‐,1‐out‐of‐4符号の異なる符号語は24個存在する。これら24個の符号語には、x,x,x,xの16個の異なる値が対応する。表1では、24個の可能な符号語のうち16個のみが使用される。
【0223】
メモリセルS,S,S,Sの読出し時に4つのメモリセル値z,z,z,zが求められ、誤りが無い場合にこれらのメモリセル値z,z,z,zが1‐,1‐,1‐,1‐out‐of‐4符号の1つの符号語を構成する場合には、これらのメモリセル値は表1に従って、対応するデータビットx,x,x,xに変換される。
【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・・・x11を、メモリセル値z・・・zを有する8つのメモリセルに変換することができる。これらのメモリセル値は、2‐,2‐,2‐,2‐out‐of‐8符号の符号語である。各メモリセル値は4値(K=4)である。すなわち、1つのメモリセルあたり、4つの異なる値のうち1つを記憶することができる。
【0230】
これら11個のデータビットにより、211=2048個の異なる値を表現することができる。2‐,2‐,2‐,2‐out‐of‐8符号は、
【数23】
の符号語を有する。この2520個の符号語は、2048個のバイナリ値全てを2‐,2‐,2‐,2‐out‐of‐8符号の符号語に変換するために十分である。
【0231】
実施例:7つのメモリセル内の9個のデータビット
k=9個のデータビットx・・・xを、メモリセル値z・・・zを有するn=7個のメモリセルに変換することもできる。これらのメモリセル値は、2‐,2‐,2‐,1‐out‐of‐7符号の符号語である。各メモリセル値は、たとえば4値(K=4)である。
【0232】
これら9個のデータビットにより、2=512個の異なる値を表現することができる。2‐,2‐,2‐,1‐out‐of‐7符号は、
【数24】
の符号語を有する。この630個の符号語は、512個のバイナリ値全てを2‐,2‐,2‐,1‐out‐of‐7符号の符号語に変換するために十分である。
【0233】
有利にはたとえば、
‐・・・n‐out‐of‐n符号
の符号語を構成するメモリセルデジタル値の読出しおよび特定の際には、参照値は不要である。読み出されるメモリセルデジタル値の特定は、メモリセルから読み出された物理値の相互比較を用いて、または、読み出された物理値から導出された値の比較を用いて行うことができ、これにより、異なるメモリセル値の頻度分布が重なり領域を有する場合にも読出しエラーの確率が低くなる。
【0234】
比較器を用いたメモリの読出し
図6は、n=4個のメモリセルS,S,SおよびSを有するメモリ601を示している。これらのメモリセルの出力側において値W,W,WおよびWが読み出され、
【数25】
の比較器602〜607を使用して対ごとに比較される。比較器は、たとえばコンパレータとして構成することができる。
【0235】
比較器602は、メモリセルSの読み出された値WとメモリセルSの読み出された値Wとを比較する。比較器602は、読み出された値についてW>Wが成り立つ場合には出力側においてバイナリ値y12=1を出力し、読み出された値についてW<Wが成り立つ場合にはバイナリ値y12=0を出力するように構成されている。
【0236】
比較器603は、メモリセルSの読み出された値WとメモリセルSの読み出された値Wとを比較する。比較器603は、読み出された値についてW>Wが成り立つ場合には出力側においてバイナリ値y13=1を出力し、読み出された値についてW<Wが成り立つ場合にはバイナリ値y13=0を出力するように構成されている。
【0237】
比較器604は、メモリセルSの読み出された値WとメモリセルSの読み出された値Wとを比較する。比較器604は、読み出された値についてW>Wが成り立つ場合には出力側においてバイナリ値y14=1を出力し、読み出された値についてW<Wが成り立つ場合にはバイナリ値y14=0を出力するように構成されている。
【0238】
比較器605は、メモリセルSの読み出された値WとメモリセルSの読み出された値Wとを比較する。比較器605は、読み出された値についてW>Wが成り立つ場合には出力側においてバイナリ値y23=1を出力し、読み出された値についてW<Wが成り立つ場合にはバイナリ値y23=0を出力するように構成されている。
【0239】
比較器606は、メモリセルSの読み出された値WとメモリセルSの読み出された値Wとを比較する。比較器606は、読み出された値についてW>Wが成り立つ場合には出力側においてバイナリ値y24=1を出力し、読み出された値についてW<Wが成り立つ場合にはバイナリ値y24=0を出力するように構成されている。
【0240】
比較器607は、メモリセルSの読み出された値WとメモリセルSの読み出された値Wとを比較する。比較器607は、読み出された値についてW>Wが成り立つ場合には出力側においてバイナリ値y34=1を出力し、読み出された値についてW<Wが成り立つ場合にはバイナリ値y34=0を出力するように構成されている。
【0241】
2つの部分群の大きさがn=n=2である場合、n=4個のメモリセルS〜Sを有する群には、
【数26】
の割当てを記憶することができる。
【0242】
この6つの割当てについては、表3に6つの比較器602〜607の出力値y12,y13,y14,y23,y24,y34が示されている。
【表3】
【0243】
たとえば、表3の第1行は、メモリセルS〜Sにバイナリ値1100が割当てられていることを表している。比較器602〜607はこれに対応して、バイナリ値y13=y14=y23=y24=1を出力する。メモリセルSおよびSには双方とも、バイナリ値1が割当てられているので、比較器602によって、双方共に記憶されたバイナリ値1に対応付けられた値WとWとが互いに比較される。本実施例では、W<Wであるか、またはW>Wであるかを予測できないので、比較器602の出力値y12は不明となる。また、メモリセルSおよびSの値WおよびWは共にバイナリ値0を有するので、比較器607の出力y34も不明となる。
【0244】
よって表3では、各メモリセルの比較対象の出力値が等しい値を有する場合には、比較器の出力値は不明となる。
【0245】
列「関数」では、表3の各行に、それぞれ否定または非否定の出力値の結合としてのブール表現が対応付けられており、出力値yijが1に等しい場合には、結合において当該出力値が現れ、それに対して出力値yijが0である場合には、結合において否定の出力値¬yijが現れる。出力値が不明(“−”)である場合には、結合において当該出力値は現れない。このことによって、特に回路技術的実装に係るコストが削減される。
【0246】
2‐out‐of‐4符号のビットを有するメモリセルS〜Sの6つの各割当てについて、上述の6つの結合のちょうど1つが値1をとる。たとえば、メモリセルの割当て1001は、表3の第3行によると、以下の結合
12∧y13∧¬y24∧¬y34=1∧1∧1∧1=1
に相当する。
【0247】
比較器602,603,606および607は、値y12=1,y13=1,y24=0,およびy34=0を出力する。この場合、表3中に示された他の結合は全て、値0を有する。
【0248】
よって、結合y12∧y13∧¬y24∧¬y34が値1を有することにより、メモリセルS〜Sから割当て1001が読み出されたことが一義的に特定される。
【0249】
メモリセルの割当ての特定
図7は、比較器602〜607の値y12,y13,y14,y23,y24,y34からメモリセルS〜Sの各対応する割当てを求めるために用いられる回路構成を示す。こうするためにはたとえば、それぞれ4つの入力端を有する6つのANDゲート701〜706と、それぞれ3つの入力端を有する4つのORゲート708〜711と、が用いられる。
【0250】
値y13,y14,y23およびy24はANDゲート701の入力端へ伝送される。値y12,y14,¬y23およびy24はANDゲート702の入力端へ伝送される。値y12,y13,¬y24および¬y34はANDゲート703の入力端へ伝送される。値¬y12,¬y13,y24およびy34はANDゲート704の入力端へ伝送される。値¬y12,¬y14,y23および¬y34はANDゲート705の入力端へ伝送される。値¬y13,¬y14,¬y23および¬y24は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の割当てが出力され、ORゲート709の出力端にはメモリセルSの割当てが出力され、ORゲート710の出力端にはメモリセルSの割当てが出力され、ORゲート711の出力端にはメモリセルSの割当てが出力される。
【0253】
したがって、図7の回路構成は上掲の表3を以下のように具現化する:ANDゲート701〜706の出力端において表3の関数がマッピングされ、ANDゲート701は表3の第1行の関数に、ANDゲート706は表3の最終行の関数に相当する。図7のメモリセルSの割当ては、メモリセルSの列から以下のように得られる:表のうち当該列が値1を有する列において、当該関数についてのOR論理結合が成立する。たとえば、メモリセルSは表3の最初の3行では値1を有する。すなわち、表3の最初の3行の結合を意味する、ANDゲート701,702および703の出力端とのOR結合が存在する。このことは、他のメモリセルについても同様に当てはまる。
【0254】
実施例:3値メモリセル
以下、3値のメモリセルを使用する実施例を検討する。すなわち、各メモリセルは値0,1または2のうちいずれか1つをとることができ、たとえば2>1>0が成り立つ必要がある。
【0255】
群がn=6個のメモリセルを有し、かつ、部分群がn=n=n=2個のメモリセルを有する事例を検討する。したがって、6つのメモリセルの群あたり値2を2つ、値1を2つ、値0を2つ記憶することができる。したがって、6つのメモリセルS〜Sの群に2つの2と2つの1と2つの0とを割当てる態様は、
【数27】
存在する。
【0256】
メモリセルからデータを読み出す際に全てのメモリセルの読み出された値を対ごとに比較する場合、メモリセルS〜Sの全ての物理的出力値を比較するためには、15個の比較器VGLijが用いられる。ここでi,j=1・・・6は、メモリセルのうちそれぞれ1つを表す添え字である。したがって、比較器VGLijはメモリセルSとメモリセルSとを比較する。よって15個の比較器は、
VGL12,VGL13,VGL14,VGL15,VGL16
VGL23,VGL24,VGL25,VGL26
VGL34,VGL35,VGL36
VGL45,VGL46および
VGL56
である。
【0257】
比較器VGLijのバイナリ出力値はyijと称され、よって、以下の15個のバイナリ出力値が存在する:
12,y13,y14,y15,y16
23,y24,y25,y26
34,y35,y36
45,y46および
56
【0258】
メモリセルS〜Sの割当て221100について、表4に上述の15個の比較器の出力値を示す。
【表4】
【0259】
よって、以下の結合
13∧y14∧y15∧y16∧y23∧y24∧y25∧y26∧y35∧y36∧y45∧y46
が得られる。
【0260】
この結合は、15個の比較器の12個の値を有する。これは、不明でない値である。
【0261】
基本的には、以下のことが適用される:値1は、各比較器の非反転値または非否定の値yijを表し、値0は、各比較器の反転値または否定の値¬yijを表す。
【0262】
メモリセルS〜Sの割当て212100について、表5に上述の15個の比較器の出力値を示す。
【表5】
【0263】
よって、以下の結合
12∧y14∧y15∧y16∧¬y23∧y25∧y26∧y35∧y36∧y45∧y46
が得られる。
【0264】
この結合は、15個の比較器の12個の出力値を有する。
【0265】
メモリセルS〜Sの割当て001122について、表6に上述の15個の比較器の出力値を示す。
【表6】
【0266】
よって、以下の結合
¬y13∧¬y14∧¬y15∧¬y16∧¬y23∧¬y24∧¬y25∧¬y26∧¬y35∧¬y36∧¬y45∧¬y46
が得られる。
【0267】
この結合は、15個の比較器の12個の出力値を有する。
【0268】
各メモリセルへのそれぞれ2つの2と2つの1と2つの0との他の残りの割当てについても、同様に対応する結合が得られる。15個の出力値のうち、不明でないそれぞれ12個の出力値(反転または非反転)が、対応する結合を構成する。この結合は、メモリセルS〜Sにそれぞれ対応する割当てが記憶されており、かつ、これらのメモリセルから読み出された値W〜Wが比較器VGLijにおいて対ごとに比較される場合にまさに、値1をとる。
【0269】
実施例:変換および逆変換
図8は、m個のデータビットをメモリ803のメモリセルS〜Sに記憶する一実施例を示している。同図には、n個のメモリセルS〜Sの1つの群が示されており、
・n個のメモリセルにはn個の第1の値が、
・n個のメモリセルにはn個の第2の値が、
・n個のメモリセルにはn個の第Kの値が、
記憶される。換言すると、複数のK個の部分群が存在する。各部分群の中では、所定の数の同一の値が記憶されている。異なる部分群に記憶される値はそれぞれ異なる。
【0270】
n個のメモリセルからなる群に記憶されるm個のデータビットは、「mビットバイト」または単に「バイト」とも称され得る。データビットの数を表す変数として、文字mまたはkを使用する。
【0271】
ここで
≦N
が成り立ち、同式中、
【数28】
かつm<nである。Nは、n個の第1の値、n個の第2の値、n個の第Kの値に至るまで同様の値をn個のメモリセルの群に割当てる態様の数を表す。
【0272】
変換回路801が、ワード幅mの2個のデータビットを、N個の値z,z・・・zのうち2個の値に変換する変換T(m,n)を実行し、ここで、
・数n個の値z,z・・・zは0に等しく、
・数n個の値z,z・・・zは1に等しく、
・・・
・数n個の値z,z・・・zはK−1に等しい。
【0273】
ワード幅mの2個のデータビットを全て用いる必要がない場合には、必要なデータビットのみを変換してメモリセルに記憶することが可能である。
【0274】
変換回路801はたとえば、ワード幅mのビット値x・・・xの変換T(m,n)を、メモリセルS〜Sに記憶すべきワード幅nの値z・・・zにマッピングするように構成されており、ここで、
・値z・・・zのうちn個は値0をとり、
・値z・・・zのうちn個は値1をとり、
・・・
・値z・・・zのうちn個は値(K−1)をとる。
【0275】
m個のビットx・・・xは、たとえば「データビット」と称され得る。特に、かかるデータビットを、メモリのメモリセルに書込まれる値と区別することができる。ビットx〜xはたとえば、誤り検出または誤り訂正のための誤り符号の符号語のビットであり、このビットは、誤り符号の少なくとも1つのチェックビットも含むことができ、または、誤り符号のチェックビットのみとすることができる。
【0276】
メモリセルS〜Sは読み出され、読み出された値z〜zは、変換T−1(n,m)を提供する変換回路802を用いてデータビットx〜xに変換され、誤りが無い場合には
・・・x=x・・・x
が成り立つ。
【0277】
変換回路801および変換回路802は有利には、変換T(m,n)およびその逆変換T−1(n,m)について
−1(n,m){T(m,n)[x・・・x]}=x・・・x
が成り立つように構成されている。
【0278】
ビットx〜xを「mビットバイト」と称する場合、1つのmビットバイトは1つのワードz〜zとしてメモリのn個のメモリセルに記憶され、ここで、予め決まった数のn個の第1のメモリセルが第1の値を記憶し、予め決まった数のn個の第2のメモリセルが第2の値を記憶し、予め決まった数のn個の第Kのメモリセルが第Kの値を記憶するに至るまで同様である。
【0279】
例:K=2である場合、n個の第1のメモリセルが値0を記憶し、n個の第2のメモリセルが第2の値1を記憶する。このようにして、メモリセルS〜Sにはn‐out‐of‐n符号の符号語が記憶される。
【0280】
他の一例:各メモリセルS〜Sにそれぞれ4つの値を記憶できる場合、n個のメモリセルに第1の値を記憶し、n個のメモリセルに第2の値を記憶し、n個のメモリセルに第3の値を記憶し、n個のメモリセルに第4の値を記憶することができる。ここで、n+n+n+n=nが成り立つ。
【0281】
上述のように、複数の読み出される異なるメモリセルの物理的特性(たとえば物理値)を互いに比較することができる。かかる比較によって、誤り確率を少なくとも部分的に低減することができる。読出し時に対で比較される値の双方が同時に、物理値の頻度分布の重なり領域内にある場合にしか、誤りは生じ得ず、1つの値のみが重なり領域内にあるだけでは誤りは生じ得ない。
【0282】
実施例:図9
図9は、mビットバイトをそれぞれn個のメモリセルに記憶する一例を示しており、ここでm=4,n=6、かつn=n=3が成り立つ。n=3個のメモリセルには第1のデジタル値0が記憶され、n=3個の第2のメモリセルには第2のデジタル値1が記憶される。4ビットバイトは6つのメモリセルに、3‐out‐of‐6符号の6ビットワードとして記憶される。
【0283】
図9は、3つの4ビットバイトをメモリ901のそれぞれ6つのメモリセルに記憶する構成を示しており、これらのメモリセルはたとえば、デジタルのバイナリ値を記憶することができる。4ビットバイトx,x,x,xは変換回路902を用いてバイナリ値z〜zに変換され、これらのバイナリ値はメモリ901のメモリセルS〜Sに記憶される。さらに、4ビットバイトx,x,x,xは変換回路903を用いてバイナリ値z〜z12に変換され、これらのバイナリ値はメモリ901のメモリセルS〜S12に記憶される。また、4ビットバイトx,x10,x11,x12も変換回路904を用いてバイナリ値z13〜z18に変換され、これらのバイナリ値はメモリ901のメモリセルS13〜S18に記憶される。
【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,z,z,z,z,zが読み出されて、変換回路905によって4ビットバイトx,x,x,xに変換される。同様に、メモリビットz,z,z,z10,z11,z12が読み出されて、変換回路906によって4ビットバイトx,x,x,xに変換される。また、メモリビットz13,z14,z15,z16,z17,z18も読み出されて、変換回路907によって4ビットバイトx,x10,x11,x12に変換される。
【0291】
いずれの変換回路905,906,907も、表7に示された変換の逆変換である変換T−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−1(6,4)を実現する。
【0292】
エラーに起因して、メモリ901から読み出されるメモリビットz(i・n)は、元々記憶されていたビットz(i,n)とは異なることがある。よって、読み出されるデータビットxi・mも、書込まれたデータビットxi・mとは異なることがあり得る。
【0293】
エラーが生じていない場合、最初の4つのデータビットx〜x、最初の6つの変換されたビットz〜z、最初の6つの逆変換すべきビットz〜z、および、当該逆変換により得られる最初の4つのデータビットx〜xについては、
,z,z,z,z,z=z,z,z,z,z,z
,x,x,x=x,x,x,x
が成り立つ。
【0294】
2番目の4つのデータビットと、3番目の4つのデータビットとについても、同じことが同様に当てはまる。
【0295】
万全を期すため、変換T−1(6,4)を示す表8を提示する。これは、表7に示された対応付けの逆マッピングである。
【表8】
【0296】
表8に掲げられていない、メモリビットz〜zの値については、データビットx〜xの対応する任意の値を、逆変換回路905の合成のために設けることができる。たとえば、かかる任意の値を合成ツールによる最適化の際に不明値として規定させることが可能であり、かかる不明値は「ドントケア」値とも称される。また、これらの値を0にセットするオプションもある。
【0297】
誤り検出および/または誤り訂正
逆変換回路905によって誤ったメモリビットに誤ったデータビットが対応付けられている場合、誤りを有する4ビットバイトを誤り符号によって検出および/または訂正することができる。以下、これについて例示により説明する。
【0298】
図10は、誤り検出または誤り検出と誤り訂正とを組み合わせたものを行うことができる一例の回路構成を示す図であり、データビットは変換回路によってメモリビットに変換され、メモリビットはメモリのメモリセルに記憶される。
【0299】
データビットxは符号化器1001の入力側に入力され、符号化器1001の出力側において、誤り符号Cに応じて符号化されたビットy=Cod(x)が出力される。
【0300】
誤り符号Cはバイト誤り訂正および/または検出符号とすることができ、たとえばリード‐ソロモン符号とすることができる。また、誤り符号Cはビット誤り訂正および/または検出符号とすることができ、たとえばBCH符号、Hsiao符号、ハミング符号、低密度パリティ符号、または他の符号とすることもできる。
【0301】
符号化器1001の出力側において出力されたビット(またはバイト)y=Cod(x)は、変換回路1002を用いてデジタル値z(y)に変換され、このデジタル値z(y)はメモリ1003のメモリセルに書込まれる。変換回路1002は変換Tを提供する。
【0302】
それぞれn個のメモリセルの1つの群では、n個の第1の値はn個の第1のメモリセルに、n個の第2の値はn個の第2のメモリセルに記憶され、等、n個の第Kの値はn個の第Kのメモリセルに記憶されるに至るまで同様になされる。ここで、n+n+・・・+n=nが成り立つ。
【0303】
次のステップにおいて、値z(y)が、メモリ1003の対応するメモリセルから読み出される。この値z(y)は、少なくとも1つのエラーに基づいて、書込まれた値z(y)とは異なることがあり得る。エラーが生じていない場合には、z(y)=z’(y)が成り立つ。
【0304】
メモリ1003から読み出された値z(y)は、変換T−1を提供する逆変換回路1004によってバイナリ値yに変換される。
【0305】
エラーが生じていない場合には、
y’=y=Cod(x)
が成り立つ。
【0306】
エラーが生じている場合には、
y’≠y=Cod(x)
が成り立つ。
【0307】
訂正値形成器1005が、誤り符号Cに応じて適切なワード幅の訂正値eを形成し、訂正値eの構成要素はXOR回路1007において値yと構成要素ごとにXOR結合される。XOR回路は、入力信号の排他的論理和結合を行ってその結合の結果を出力側において出力する回路である。入力端の信号が等しい場合、XOR回路は出力側において論理値1を出力する。入力端の信号が異なる場合、XOR回路は出力側において論理値0を出力する。
【0308】
XOR回路1007の出力側には、訂正された値ycorが出力される。符号Cによって訂正値形成器1005を用いて訂正可能な誤りが生じている場合には、訂正されたビットは符号化されたビットと等しくなる。すなわち、
cor=y=Cod(x)
となる。
【0309】
さらに、誤り符号Cを用いて検出できる誤りおよび/または誤りの特定の種類が存在するか否かを特定するために使用できる誤り検出回路1006も示されている。誤り検出回路1006には値yが供給され、誤り検出回路1006は誤り情報1008を出力する。
【0310】
誤り符号がたとえば1バイト誤り訂正符号と2バイト誤り検出符号である場合には、誤りが生じていないか、または1バイト誤りが生じているか、または2バイト誤りが生じているかに応じて、誤り検出回路1006は異なる誤り情報1008を出力することができる。たとえば、誤り情報1008はビット列00,01または10として(本実施例ではすなわち2ビットを有するビット列として)符号化することができる。
【0311】
オプションとして、誤り検出回路1006と訂正値形成器1005とを共に実現し、または部分的に共に実現することができる。
【0312】
誤り符号Cが、符号化器1001による符号化の際にデータビットが変化しない分離可能な符号である場合において、誤りが生じていない場合、または、誤り符号Cによって訂正可能な誤りが生じている場合には、XOR回路1006によって出力されたビットは、符号化器1001に入力されて変換回路1002による変換後にメモリ1003に記憶された対応するデータビットと等しくなる。
【0313】
図11は、誤り訂正または誤り検出と場合によっては誤り訂正とを行うことができる、他の代替的な回路構成を示す図である。
【0314】
データビットxは変換回路1101の入力側に入力され、値z(x)に変換される。変換回路1101の値z(x)は符号化器1102の入力側に入力され、この符号化器1102は、誤り符号Cを用いて符号化されたデータCod(z(x))を出力側において出力するように構成されている。
【0315】
符号化器1102は符号化関数とチェックビット変換関数とを提供することができる。
【0316】
たとえば、符号化器1102の入力側に入力された値z(x)が変化せずに、当該符号化器によって求められた出力データCod(z(x))に含まれ、かつ、誤り符号Cに応じて値z(x)にチェックビットが追加されるように、誤り符号Cは分離可能な符号であると仮定する。
【0317】
符号化器1102は本実施例では、入力側に入力された値z(x)を変化せずに出力側において(本実施例では、入力側および出力側は双方とも、それぞれ1ビットに対応する複数の線路をそれぞれ有することができる)出力し、追加的に、誤り符号Cに応じてビットz(x)からチェックビットを形成し、メモリ1103に記憶する前にこのチェックビットをさらに変換するように構成されている。
【0318】
値z(x)はたとえば、n‐out‐of‐n符号の符号語から構成されたn個のビットの群を構成する。符号化器1102によって生成されて変換されるチェックビットも、n‐out‐of‐n符号語とすることができ、またはこれを含むことができる。
【0319】
たとえば、誤り符号Cによってビットz(x)から求められたチェックビットを符号化器1102によって、各2つのビットが互いに相補的であるビットとして出力することも可能である。各チェックビットはそれぞれ2つのビットに変換され、2つのメモリセルに記憶される。たとえば、チェックビット1をビット10に変換し、チェックビット0をビット01に変換して、それぞれ2つのメモリセルに記憶することができる。
【0320】
メモリセル値へのチェックビットの他の変換も可能である。たとえば、チェックビットを3重または2重および/または他の態様でフォールトトレラントにメモリ1103に書込むことが可能である。
【0321】
メモリ1103のそれぞれn個のメモリセルの群の中では、n個の第1の値は第1の数のn個の第1のメモリセルに、n個の第2の値は第2の数のn個の第2のメモリセルに記憶され、等、n個の第Kの値は、予め決まった第Kの数のn個の第Kのメモリセルに記憶されるに至るまで同様になされる。ここで、n+n+・・・+n=nが成り立つ。
【0322】
図10に示された回路構成では、データビットを用いて誤り処理がなされる。それに対して図11に示された回路構成では、誤り処理は、変換回路1101によってデータビットから求められたメモリセル値に基づいて行われる。メモリセル値はたとえばメモリビットである。「誤り処理」とはここでは、誤り検出および/または誤り訂正をいう。
【0323】
図12は、図11に示された回路構成の変形態様の他の一例を示している。
【0324】
データビットxは変換回路1201の入力側に入力され、符号語[3‐out‐of‐6]に変換され、その際にはその都度、データビットの4つのビットが1つの3‐out‐of‐6符号語に変換される。この3‐out‐of‐6符号語[3‐out‐of‐6]は、変換回路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]に変換して、出力側において出力する。
【0330】
チェックビット変換器1203の出力側はメモリ1204の入力側に接続されている。たとえばこうするために、メモリの複数の別個のデータ入力端を使用することができる。このようにして、チェックビット変換器1203によってチェックビットPrに基づいて生成された3‐out‐of‐6符号語[3‐out‐of‐6]を、メモリ1204に記憶することができる。
【0331】
誤りが無い場合には、メモリ1204には、3‐out‐of‐6符号語であるビットが記憶されることとなる。このビットは「メモリセル値」とも称される。
【0332】
データビットxから、変換回路1201によって3‐out‐of‐6符号の符号語[3‐out‐of‐6]が形成され、これはメモリ1204に書込まれる。この符号語[3‐out‐of‐6]は、メモリ1204のメモリセルのメモリセル値を構成する。
【0333】
符号語[3‐out‐of‐6]のビットから、チェックビット形成器1202によって、使用されている誤り符号に応じてチェックビットPrが求められて、当該チェックビット形成器1202の出力側において出力される。チェックビット変換器1203はチェックビットPrを3‐out‐of‐6符号の符号語[3‐out‐of‐6]に変換する。この符号語[3‐out‐of‐6]は、メモリ1204のメモリセルのメモリセル値を構成し、このメモリセル値はチェックビットPrから形成されたものである。
【0334】
したがって、メモリ1204には符号語[3‐out‐of‐6]および符号語[3‐out‐of‐6]が記憶される。記憶時および読出し時にはビット誤りが生じることがあり、このビット誤りに基づいて符号語[3‐out‐of‐6]、および符号語[3‐out‐of‐6]が誤ったビットに改ざんされてしまう。
【0335】
読出し時には、データビットに対応付けられたビット[3‐out‐of‐6]と、変換されたデータビットのチェックビットに対応付けられたビット[3‐out‐of‐6]とが、メモリ1204から出力される。ビット[3‐out‐of‐6]およびビット[3‐out‐of‐6]は双方とも、ビット誤りを含み得る。誤りが無い場合には、
[3‐out‐of‐6]=[3‐out‐of‐6]
[3‐out‐of‐6]=[3‐out‐of‐6]
が成り立つ。
【0336】
ビット[3‐out‐of‐6]が出力されるメモリ1204の出力側は、チェックビット逆変換器1205の入力側に接続されており、このチェックビット逆変換器1205は、ビット[3‐out‐of‐6]に基づいて、誤りがある場合があるチェックビットPr’を求めて出力側で出力する。チェックビット逆変換器1205は、チェックビット変換器1203が実行する変換の逆変換を実行するものである。
【0337】
誤りが無い場合には、チェックビット逆変換器1205は出力側において、チェックビット変換器1202によって形成されたものと同一のチェックビットPrを出力する。
【0338】
誤りがある場合があるチェックビットPr’は、データビットに相当するビット[3‐out‐of‐6]のチェックビットである。このようにして、使用されている3‐out‐of‐6符号に応じて、ビット[3‐out‐of‐6]のビット誤りが生じている場合にはその誤り訂正のために、誤りがある場合があるチェックビットPr’を使用することができる。
【0339】
メモリ1204の出力側およびチェックビット逆変換器1205の出力側はそれぞれ、訂正器1206の1つの入力端に接続されている。訂正器1206はビット[3‐out‐of‐6]を、使用されている誤り符号に応じて、訂正されたビット[3‐out‐of‐6]corに訂正する。
【0340】
誤りが生じた場合、この誤りが、使用されている誤り符号によって訂正可能であるときは、
[3‐out‐of‐6]cor=[3‐out‐of‐6]
が成り立つ。
【0341】
訂正器1206の出力側において、上述のビット[3‐out‐of‐6]corが出力される。訂正器1206の出力側はチェックビット逆変換回路1207の入力側に接続されており、これは、変換回路1201によって行われる変換を逆にした変換を行う。逆変換回路1207の出力側において、データビットxcorが出力される。これは、場合によっては訂正されたデータビットであるか、または(誤りが生じていない場合には)データビットxである。
【0342】
誤りが生じていない場合、または、生じた誤りが誤り符号Cによって訂正可能である場合には、
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=n=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=16<20であるから、6つのメモリセルには4つのデータビットを記憶することができる。
【0349】
6つのメモリセルS〜Sに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〜Sののうち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,SおよびSの3つの出力端は、NOT‐ORゲート1301の3つの入力端に接続されている。表9の第2行に従って値0を示す、メモリセルS,SおよびSの3つの出力端は、NOT‐ORゲート1302の3つの入力端に接続されている。表9の第14行に従って値0を示す、メモリセルS,SおよびSの3つの出力端は、NOT‐ORゲート1303の3つの入力端に接続されている。表9の第15行に従って値0を示す、メモリセルS,SおよびSの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〜Sに後置接続された6つのラッチの「ホールド信号(hold-Signal)」として使用することができる。これについては、図14を参照して詳細に説明する。
【0363】
図14は、6つの信号増幅器(「センス増幅器」または「センスアンプ」とも称される)1401〜1406を備えた一例の回路構成を示している。既に上記にて説明したように、メモリの(ここでは一例として6つの)メモリセルから物理値W(ここでi=1・・・6)が読み出される。読み出された各物理値Wはそれぞれ、信号増幅器1401〜1406のうち1つに供給される。物理値Wは、読出電流とすることができる。
【0364】
信号増幅器1401は、物理値Wの時間積分を求める。この時間積分が時点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の時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1402の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1402の出力端にはデジタル値0が出力される。信号増幅器1402の出力端はラッチ1408の第1の入力端に接続されており、ラッチ1408の第2の入力端にはホールド信号1413が入力される。ラッチ1408の出力端は論理回路1414の第2の入力端に接続されている。信号増幅器1403は、物理値Wの時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1403の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1403の出力端にはデジタル値0が出力される。信号増幅器1403の出力端はラッチ1409の第1の入力端に接続されており、ラッチ1409の第2の入力端にはホールド信号1413が入力される。ラッチ1409の出力端は論理回路1414の第3の入力端に接続されている。信号増幅器1404は、物理値Wの時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1404の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1404の出力端にはデジタル値0が出力される。信号増幅器1404の出力端はラッチ1410の第1の入力端に接続されており、ラッチ1410の第2の入力端にはホールド信号1413が入力される。ラッチ1410の出力端は論理回路1414の第4の入力端に接続されている。信号増幅器1405は、物理値Wの時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1405の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1405の出力端にはデジタル値0が出力される。信号増幅器1405の出力端はラッチ1411の第1の入力端に接続されており、ラッチ1411の第2の入力端にはホールド信号1413が入力される。ラッチ1411の出力端は論理回路1414の第5の入力端に接続されている。信号増幅器1406は、物理値Wの時間積分を求める。この時間積分が時点tにおいて閾値Swより小さい場合には、当該時点tにおいて信号増幅器1406の出力端にはデジタル値1が出力される。時間積分が時点tにおいて閾値Swより大きい場合には、信号増幅器1406の出力端にはデジタル値0が出力される。信号増幅器1406の出力端はラッチ1412の第1の入力端に接続されており、ラッチ1412の第2の入力端にはホールド信号1413が入力される。ラッチ1412の出力端は論理回路1414の第6の入力端に接続されている。
【0368】
一例として、グラフ1415は信号増幅器1401に係る一定の時間における読出電流を示す。当該グラフ1415によれば、信号増幅器1401における読出電流は時点tにおいて閾値Swに達する。同様に図14には、信号増幅器1402〜1406に係るグラフ1416〜1420も示されており、当該グラフ1416〜1420では時点tは、第iの信号増幅器1401〜1406が閾値Swに達する時期を示す。
【0369】
読出電流の積分が時点tまで閾値Swより小さい間は、各信号増幅器は値1を出力し、読出電流の積分が時点t以降に閾値Swより大きくなった場合には、各信号増幅器は値0を出力する。
【0370】
図14に示されている実施例では、時点tにおいて物理値W〜Wが求められる。ここでtは、t,tおよびtより大きく、かつ、tはt,tおよびtより小さい。よって、時点tにおいて信号増幅器1401,1403および1405の出力端にはそれぞれ値0が出力され、同時に、信号増幅器1402,1404および1406の出力端では未だ値1が出力されている。論理回路1414はこれら最初の3つの0を識別してホールド信号1413を0から1にセットし、これに応答してラッチ1407〜1412は「凍結」される。
【0371】
論理回路1414はたとえば、図13に示された回路構成によって実現することができる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17