本発明の以下の例示的実施形態を図面に基づいて詳細により詳しく説明する前に、様々な図面中の同一の、同一機能の、または同一作用の要素、物体、および/または構造には同じ参照番号が付されており、したがって、様々な例示的実施形態で表されるこれらの要素の説明は互いに交換可能である、または互いに転用することができることに留意されたい。
以下の例示的実施形態は、メモリからの1つまたは複数のビットシーケンスの読出しおよび/またはメモリへのビットまたはビットシーケンスの書込みに関する。概念「書込み」が使用されるが、書込みは、不揮発性メモリにおいて一般的なメモリの削除および/またはプログラミングのプロセスを示すこともできる。なぜなら、削除プロセスとそれに続くプログラミングも、メモリの1つまたは複数のビットの書込みプロセスとみなすことができるからである。
本発明者らは、誤りのあるビットシーケンスの出現に関する算出確率に基づいて、誤りの存在についてビットシーケンスが検査されるときに、メモリデバイスの時間、計算量、および/またはエネルギー消費が小さくなることを見出した。確率が低い場合には、低い頻度、すなわち2回の検査間の大きい時間間隔を選択することができ、確率が高い場合には、高い頻度、すなわち小さい時間間隔を選択することができる。低い確率を有するビットシーケンスの検査は、時間、計算量、および/または電気エネルギーの節約を可能にし、したがって、記憶されている情報の信頼性をあまりまたは全く損なうことなく、メモリデバイスを高い効率で動作させることができる。
以下の例示的実施形態は、アドレス指定可能であり得るメモリを備えるメモリデバイスに関する。アドレス指定可能なメモリは、情報を揮発性または不揮発性で記憶するように構成することができる。このために、メモリの1つのアドレスを使用して、1つまたは複数のメモリセルをアドレス指定することができる。メモリセルには情報を記憶することができ、および/または読み出すことができる。揮発性メモリは、例えばキャッシュメモリまたはRAMメモリとして使用可能であり得る。不揮発性メモリは、例えば、フラッシュメモリ、ハードディスク、ディスケット、CD(コンパクトディスク)、DVD(デジタルビデオ/バーサタイルディスク)、データテープなどでよい。特に、不揮発性メモリは、ダイレクトアクセス機能を有する磁気抵抗メモリ(MRAM)でよい。
以下に説明する例示的実施形態のいくつかは、ビット誤りの存在についてビットシーケンスが検査される頻度を決定または確定するために信頼性情報を使用することに関する。それぞれの信頼性情報は、それぞれのメモリセルに割り当てることができ、例えば、物理的パラメータに基づいて決定可能でよく、または物理的パラメータでよい。物理的パラメータは、例えば、メモリセルの読出し電流、メモリセルの書込み電流、メモリセルの熱的安定性、および/または熱的安定性と関連付けられているさらなる/別のパラメータを含むことができる。物理的パラメータは、時間間隔内にメモリセルでビットのビット誤り/反転が出現する確率に影響を及ぼし得る。したがって、物理的パラメータから、それぞれのメモリセルに情報をどれほど高い信頼性で(どれほど長く)記憶することができるかについての言明を導出可能であり得る。簡略に述べると、この言明は、「良好」なメモリセル、すなわち信頼できるメモリセルと「不良」なメモリセル、すなわちそれほど信頼できないメモリセルとの区別が可能であることとして理解することができる。ここで、別のさらなる区別または細分化も可能である。メモリの製造後のある時点で、メモリの各メモリセルに関する物理的パラメータを捕捉することができる。物理的パラメータから直接的に、または間接的に、例えば算術演算または閾値比較に基づいて、信頼性情報を得る、または導出することができる。これは、メモリセルに関する物理的パラメータの捕捉により、メモリセルに関する信頼性情報も得られることを意味する。
信頼性情報は、物理的パラメータに基づき、メモリセルでのビット誤りの出現の可能性に関する情報を示唆することができる。MRAMメモリなどのアドレス指定可能なメモリでは、複数のメモリセルが共通のメモリアドレスによってアドレス指定可能であり得る。個々のメモリセルの信頼性情報は、1つのアドレスの複数のメモリセルの信頼性情報に集約または要約することができる。共通のメモリアドレスによってアドレス指定可能な複数のメモリセルに関する信頼性情報は、複数のメモリセルのうちの最良または最悪のメモリセルの信頼性に基づくことがある。
分かりやすくするために、以下に説明する例示的実施形態のいくつかは、1つのメモリセルまたは1グループのメモリセルに関する信頼性情報が、メモリセルに割り当てることができる記憶された情報として存在するものとして述べられている。これらの例示的実施形態は、より良く理解できるようにするためのものであるが、これらの例示的実施形態は、記憶または保存されている情報が信頼性情報であることに限定されないものとする。信頼性情報は、物理的パラメータの捕捉に基づくメモリセルまたはメモリセルグループの信頼性に関する決定とみなすことができる。決定の結果は、対応する情報の保存の有無として表すことができる。したがって、複数のグループ(例えば良好/不良)へのメモリセルのグループ分けの際、少なくとも1つのグループは、このグループに関して信頼性情報が提示または決定されたにも関らず、対応する情報がないことによって識別することができる。
以下で説明する例示的実施形態のいくつかは、MRAMメモリを有するアドレス指定可能なメモリに関する。MRAMメモリは、複数または多数のメモリセルを有することができる。1つまたは複数のメモリセルは、それぞれ、その(それらの)メモリセルを宛先とするアドレスによってアドレス指定することができる。アドレスを使用した少なくとも1つのメモリセルへの読出しアクセスに基づいて、少なくとも1つのメモリセルに記憶されている情報を読み出すことができる。書込みアクセスに基づいて、例えば論理「0」の状態から論理「1」の状態への、またはその逆への少なくとも1つのメモリセルの書込みまたは書換えによって、少なくとも1つのメモリセルに情報を記憶することができる。
誤りのあるビットシーケンスへの訂正されたビットシーケンスの上書きは、同じアドレスの下で読み出されたメモリセルへの上書きまたは新規書込みに関することがある。メモリへの書戻しまたは書換えは、訂正されたビットシーケンスをそのアドレスとは異なるアドレスの下で記憶することに関することがある。代替として、両方の概念を互いに交換可能に使用することができる。書戻しも上書きも、少なくともメモリのビットの削除および/またはプログラミングと理解することができる。
以下に述べる例示的実施形態のいくつかは、誤り検出および/または誤り訂正符号ならびにその使用に関する。符号は、複数または多数の符号語を有することができ、符号語は、符号内の有効なビット組合せと理解することができる。符号は、符号距離(最小距離)、例えばΔ距離またはハミング距離を有することがある。符号距離は、符号語内に出現し得る誤りまたはビット誤りの数に関する尺度と理解することができ、誤りのある符号語は、別の符号語を表さない。符号距離に基づいて、符号を使用して、ビットシーケンス中の誤りの存在および場合によっては誤りの数を検出することができる。さらに、最小距離に基づいて、誤りのあるビットシーケンス中の少なくとも1つの誤りが訂正可能であり得る。これはまた、(d−1)個の誤りを検出するため、および/またはk個(ここでk<d/2が成り立つ)の誤りを訂正するために、符号距離dを有する符号が使用可能であると理解することもできる。例えば、符号距離d=3を有する符号によって、2個の(ビット)誤りが検出可能であり得る。代替または追加として、符号は、k=1個の誤りを訂正するために使用可能であり得る。
メモリに記憶されている情報は、書込みアクセスの誤り、メモリに作用する影響、および/またはメモリの特性によって、誤りを有することがある。電子的なメモリ素子では、メモリセルでのデジタル値を、例えば電荷または抵抗などのアナログ値として記憶することができる。アナログ値は、メモリ素子の読出し時にデジタル値に変換することができる。これは、例えばフラッシュメモリまたはDRAM(ダイナミックRAM)において可能であるのと同様である。時間の経過と共に、アナログのメモリ状態が変化することがある。例えば、状態が電荷として記憶される場合、電荷は、漏れ電流および/または拡散によって減少することがある。電荷が特定の閾値未満に減少し、それにより、メモリセルに記憶されている情報が誤って解釈されるのを避けるために、フラッシュメモリまたはDRAM内のデータは、例えば定期的に同じメモリセルに書き戻すことができる。新規の書込み後、アナログ状態値を再び閾値から十分に離すことができる。
それとは対照的に、磁気抵抗メモリ素子(MRAM)では、例えば2つの互いに異なる状態、例えば磁気的な異方性に起因する2つの状態によって、デジタル情報をメモリセルにデジタルで記憶することができる。これらの状態の安定性は、状態間のエネルギー障壁ΔEに依存することがあり、このエネルギー障壁は、熱的安定性と呼ぶことができる。
いくつかの例示的実施形態によれば、メモリセルのデジタル状態は、(例えば量子効果によって)乱されて、同様にデジタルの別の状態になる、すなわち誤りが存在することがあり得る。セルのデジタル状態が時点tで正しかったときに時点t+Δtでも正しい確率p
stableは、以下の関係によって表すことができる。
ここで、k
Bはボルツマン定数であり、T
absは絶対温度であり、ΔEは熱的安定性であり、τ
0は時定数であり、τ
0≒1nsである。メモリセルが時点tで正しかったときに時点t+Δtで誤りのある確率p
errorは、
p
error=1−p
stable
によって決定することができる。パラメータτは、例えば熱的安定性ΔEに指数関数的に依存する。さらに、確率p
stableは、例えばτに指数関数的に依存し、したがって、熱的安定性ΔEは、2つの指数関数によってメモリセルの安定性を決定することができる。それにより、メモリセルの熱的安定性の小さな変動は、MRAMメモリのメモリセルの安定性に対して場合によっては強く作用する。
MRAMメモリのメモリセルに記憶されているデータの正確さの改良は、MRAM内での誤りの蓄積を妨げるためにメモリセルの内容を例えば定期的に読み出し、変更せずに書き戻すことによっては難しい、または可能でない。
例示的実施形態によれば、メモリ内容は、誤り訂正符号を使用して訂正することができる。MRAMのアドレスの下で、ビットシーケンスまたはバイナリシーケンスは、誤り訂正符号の符号語として記憶して、定期的に読み出すことができる。誤りのある符号語は、定期的な読出し時に訂正して、MRAMの対応するセルに、訂正された形で書き戻すことができる。それにより、誤りの蓄積が多くなりすぎる前に、メモリセル内のデジタル誤りを訂正することができる。
メモリセルの熱的安定性の変動により、メモリセルの安定性は、2つの指数関数を介した熱的安定性ΔEへの依存に基づいて大きく変化することがある。
以下に述べる例示的実施形態のいくつかは、動作中のデバイスまたはメモリを表す。それぞれのデバイスまたはメモリのブロックまたは構成要素は、本明細書で述べる機能を提供するように構成される。
図1は、メモリデバイス10の概略ブロック図を示す。メモリデバイス10は、メモリ12を含む。メモリ12は、第1のメモリセル14−1〜14−3(または14)と、第2のメモリセル16−1〜16−3(または16)とを有することができる。第1のメモリセル14と第2のメモリセル16は、互いに異なっていてよく、したがって、第1のメモリセル14および第2のメモリセル16に、互いに異なるビットシーケンス17aおよび17bが記憶されている。例えば、第1のメモリセル14にはビットシーケンス17aを記憶し、第2のメモリセルにはビットシーケンス17bを記憶することができる。
メモリデバイス10は、メモリ制御装置18を含む。メモリ制御装置18は、ビットシーケンス17aを頻度x1/Tで検査するように構成され、ここで、x1は、読出しプロセスまたは検査プロセスの数を表すことができ、Tは、任意の時間間隔を表すことができる。頻度x1/Tは、第1のメモリセルに割り当てることができる。第1のメモリセル14に割り当てられた頻度x1/Tは、第1のメモリセル14に関する信頼性情報22に依存することがある。
信頼性情報22は、第1のメモリセル14の信頼性の通知を提供することができる。例えば、メモリ12は、アドレス指定可能なメモリでよく、信頼性情報22は、第1のメモリセル14のアドレスを通知する、またはそのアドレスを含むことができる。
メモリ制御装置18は、誤り状態で、第1のビットシーケンスの誤りのあるビット、例えばメモリセル14−3に記憶されているビット15を訂正するように構成することができる。訂正は、少なくとも1ビットの訂正を含むことができる。ビットシーケンス17aの訂正に基づいて、訂正されたビットシーケンス17’aを得ることができ、このビットシーケンス17’aは、より少数のビット誤りを有する、またはビット誤りを有さないことがある。メモリ制御装置18は、少なくとも訂正されたビットをメモリ12に書き戻すように構成することができる。例えば、メモリ制御装置18は、訂正されたビットシーケンス17’aをメモリ12に書き戻すように構成することができる。さらなる例示的実施形態によれば、メモリ制御装置18は、少なくとも1つの訂正されたビットをメモリ12に書き戻すように構成することができる。これは、誤りのあるビット、例えば情報「1」を有するメモリセル14−3に記憶されているビット15が、訂正されたビット「0」としてメモリ12に書き戻されること、および誤りのないビットはメモリに書き戻されないことと理解することができる。
第2のビットシーケンス17bは、第2のメモリセル14に関する信頼性情報に基づいて、第1のビットシーケンス17aほど頻繁には検査されないことがある。例えば、信頼性の決定に基づいて、すなわち第2のメモリセルに関する信頼性情報に基づいて、情報は保存されることも保存されないこともある。1つの例示的実施形態によれば、第1のメモリセル14に関する信頼性情報は、第1のメモリセル14が信頼できないものと格付けされるように決定され、第2のメモリセル16に関する信頼性情報は、第2のメモリセル16が信頼できるものと格付けされるように決定される。したがって、第1または第2のメモリセルの識別またはアドレス指定を可能にする情報(信頼性情報22)の保存が、別のメモリセルの識別またはアドレス指定も可能にすることができる。
例示的実施形態によれば、例えば信頼性情報の算出によって、メモリセル14−1〜14−3の少なくとも1つは、誤りを生じやすいものとして認識するまたは知ることができる。例えば、メモリセル14−3は、誤りを生じやすいものとして知られており、すなわち、別のメモリセル(参照セル)と比較して、メモリセル14−3は、時間間隔t+Δt内にビット誤りを有する、すなわち記憶されている情報を変更している確率がより高い。信頼性情報22は、メモリセル14−3に記憶されているビットを含むビットシーケンス17aが、時間間隔t+Δt内に誤りを有する、またはその時間間隔の最後に(高い確率で)誤りを有するという通知を提供することができる。これは、信頼性情報22が、第1のメモリセル14および/または第2のメモリセル16でのビット誤りの出現に関する確率に基づくことができることを意味する。例えば、信頼性情報は、第1のメモリセル14または第2のメモリセル16に関する、そのメモリセルが時間間隔内に少なくとも1つのビット誤りを有する絶対確率に基づく、または依存することがある。代替または追加として、信頼性情報は、相対確率(すなわちビット誤りの出現可能性が1つのビットシーケンスにおいて別のビットシーケンスよりも高い)に基づくまたは依存することがある。
例えば、メモリセル14−1〜14−3を、例えば共通のメモリアドレスに基づいてまとめて使用することができ、それにより、メモリセル14−3における誤りの生じやすさをメモリセル14に転用可能である。簡略に表現すると、メモリセル14−3、したがって第1のメモリセル14は、誤りを生じやすい、または「不良」とみなすことができ、別のメモリセル14−1、14−2、および/または16は、「正常」または「良好」とみなすことができる。信頼性情報は、良好または不良のメモリセルの通知を提供することができ、したがってそれぞれ別のカテゴリーを導出可能である。さらなる例示的実施形態によれば、各カテゴリーに関して部分信頼性情報が存在してよく、それにより、信頼性情報22は、部分信頼性情報の全情報とみなすことができる。
メモリ制御装置は、第1のビットシーケンスに関して誤り状態が存在するかどうか判断するように構成することができる。誤り状態は、ビットシーケンス17a内の少なくとも1つのビット誤りの存在に関するものでよい。いくつかの例示的実施形態によれば、ビットシーケンス17aは、誤り訂正符号の符号語の少なくとも一部でよく、すなわち、符号語のビットを含んでいてよく、または符号語でよい。誤り訂正符号は、符号語内のt個のビット誤りを訂正するために使用可能であり得る。例えば、tは、t≧1、またはt≧2、またはそれよりも大きい。例えば、t≧2の場合、メモリ制御装置は、少なくとも2つのビット誤りが存在するときに誤り状態が存在すると判断し、存在する誤りの数が0または1であるときには誤り状態が存在しないと判断するように構成される。これは、符号リザーブ(Code−Reserve)の使用または利用とみなすこともできる。これは、例示的実施形態によれば、特定数の誤りが存在するときに誤りを訂正することができることを意味する。より少数しか存在しない場合、メモリ制御装置18は、さらなる数の誤り(例えば少なくとも0または少なくとも1つの誤り)を訂正可能であるので、訂正を行わないように構成される。これは、出現時に個々のビット誤りそれぞれを訂正するのに比べて、書込みプロセス、したがって時間および/またはエネルギーの節約を可能にする。
図2は、メモリデバイス10による機能を有することができ、メモリデバイス10から修正されたメモリデバイス20の概略ブロック図を示す。例えば、メモリ制御装置18は、信頼性情報22に基づいて、第2のビットシーケンス17bを、第2のメモリセル16に割り当てられた頻度x2/Tで検査するように構成することができる。値x1は、時間間隔T内に行われる第2のメモリセルに関する読出しプロセスまたはビットシーケンス17bの検査プロセスの回数とみなすことができる。数x2は、数x1よりも小さい値を有していてよい。例えば、数x2は値0を有していてよく、これは、信頼性情報22に基づいて第2のビットシーケンス17bを検査から除外するようにメモリ制御装置18を構成することができることを意味する。
第2のビットシーケンス17bの読出しプロセスまたは検査プロセスが行われる場合、メモリ制御装置18は、誤り状態または第2のビットシーケンス17bが存在するかどうかを検査するように構成することができる。第2のビットシーケンス17bの誤り状態の存在に関する基準と、第1のビットシーケンス17aの誤り状態の存在に関する基準とは、同一または同様でよい。第2のビットシーケンス17bの誤り状態が存在する場合、メモリ制御装置18は、第2のビットシーケンスの少なくとも1つの誤りのあるビット、例えばメモリセル16−1に記憶されている15’を訂正して、訂正されたビットシーケンス17b’または少なくとも1つの訂正されたビットをメモリに書き戻すように構成することができる。第1のビットシーケンス17aと第2のビットシーケンス17bに関するビットシーケンス17a’、17b’全体またはその一部(ビット)のみの書戻しは、同一または同様でよい。
第1のビットシーケンス17aまたは第2のビットシーケンス17bが、誤りがない場合にt≧2でのtビット誤り訂正符号の符号語または符号語の一部であって、かつ符号リザーブが使用される場合、第1または第2のビットシーケンスの誤り状態は、第1または第2のビットシーケンスに少なくともσ個のビット誤りが存在するときに誤り状態が存在するものとして表現することもできる。ここで、σ>τが成り立っていてよい。τは、τ≧1の値を有する誤り閾値でよい。誤り状態が存在しない場合、メモリ制御装置は、訂正されたビットシーケンスを書き戻さないように構成することができる。
図3は、メモリデバイス10を修正した、例示的実施形態によるメモリデバイス30の概略ブロック図を示す。メモリデバイス30はメモリ12を含み、メモリ12は、アドレス指定可能なメモリとして構成される。アドレス指定可能なメモリ12は、第1のメモリセル14−1〜14−5(または14)を有し、これらのメモリセルは、第1のアドレスa1,1によってアドレス指定される。アドレス指定可能なメモリは、第2のメモリセル16−1〜16−5(または16)を有し、これらのメモリセルは、第2のアドレスa2,1によってアドレス指定される。第2のアドレスa2,1は、第1のアドレスa1,1とは異なっていてよい。第1のアドレスa1,1および第2のアドレスa2,1の下で記憶されているビットシーケンスは、誤りがない場合には、それぞれ誤り訂正符号Ccorの符号語のビットでよい。誤りのあるビットシーケンス17は、少なくとも1つのビット誤りを有することがある。訂正されたビットシーケンス17’は、ビットシーケンス17に比べて減少された誤り数を有することがあり、場合によっては誤りを有さないことがある。
例示的実施形態によれば、ビットシーケンスは、符号語のセグメントである。さらなる例示的実施形態によれば、ビットシーケンスは、符号語である。
メモリデバイス30はメモリ制御装置18を含み、メモリ制御装置18は、記憶されているビットシーケンス中の誤りのある内容を訂正するために、第1のメモリセル14および/または第2のメモリセル16を読み出して、読出しプロセスを行うように構成される。第1のメモリセル14および/または第2のメモリセル16に関して信頼性情報22が存在する場合、第1のメモリセル14と第2のメモリセル16との連続する読出しプロセスの頻度は異なっていてよい。信頼性情報は、第1のメモリセル14および/または第2のメモリセル16内での誤りのあるビットシーケンスの出現に関する算出確率に基づくことがある。
信頼性情報22は、メモリセル自体またはそのアドレスに関して信頼性情報が存在するメモリセルが、(同様または同一のメモリに配置された)別のメモリセルと比較して高いまたは低い信頼性(すなわち低い誤り確率)を有するものと解釈することができる。
例えば、メモリ制御装置18は、データライン24によってアドレス指定可能なメモリ12に接続されている。データライン24は、例えば、双方向データ接続でよい。代替として、データライン24は、少なくとも2つの一方向接続、例えば、メモリ制御装置18からアドレス指定可能なメモリ12への第1の接続と、アドレス指定可能なメモリ12からメモリ制御装置18への第2の接続とを含むこともできる。データライン24は、有線接続されても、無線で構成されてもよい。
アドレス指定可能なメモリは、アドレスを使用して読出しアクセスおよび/または書込みアクセスによって少なくとも1つのメモリセルにアクセスすることができる各メモリでよい。例えば、ここでは、前述した揮発性または不揮発性メモリでよい。特に、メモリ12は、MRAMメモリでよい。
第1のメモリセル14および/または第2のメモリセル16の、記憶されているビットシーケンス中の誤りのある内容を訂正するために、メモリ制御装置18は、それぞれのアドレスa1,1および/またはa2,1を使用して、メモリセル14または16に記憶されているビットシーケンスをデータライン24を介して読み出し、符号Ccorを使用して誤りの存在を検査または判断するように構成することができる。
メモリ制御装置は、誤り確率がより高いものと考えられることを信頼性情報が示すメモリセル14および/または16を、より頻繁に読み出すように構成することもできる。代替として、メモリ制御装置は、誤り確率がより低いものと考えられるメモリセル14および/または16を、より低い頻度で読み出すように構成することもできる。より高い誤り確率を有するメモリセルの割合は、より低い誤り確率を有するメモリセルの割合よりも小さいことがあり、したがって、より高い誤り確率を有するメモリセルへの信頼性情報の割当ては、より少ないコストおよびより高い効率で行うことができる。したがって、信頼性情報22は、誤り確率情報と呼ぶこともできる。
メモリ制御装置18は、第1のメモリセル14を、そこに記憶されているビットシーケンス中のビット誤りの存在についてより頻繁に検査するように構成することができる。これに関し、メモリ制御装置18は、例えば、アドレスa1,1に関して信頼性情報を有することがある。信頼性情報は、例えば、アドレスa1,1またはそこから導出される情報(ビットシーケンス)でよい。信頼性情報22は、別のメモリセル16、14とは異なる信頼性を有するメモリセル14、16を宛先とするアドレスa1,1および/またはa2,1に関する情報を含むことができる。簡略に表現すると、信頼性情報22は、メモリセル14または16が別のメモリセルよりも頻繁に、または別のメモリセルよりも少ない頻度で誤りの存在について検査される、または検査されるべきであるかどうかに関する情報を提供することができる。
信頼性情報は、メモリ26に記憶することができる。メモリ26は、データライン28によってメモリ制御装置18と接続されている揮発性または不揮発性メモリでよい。代替または追加として、メモリ26は、メモリ制御装置18の一部でよい。代替または追加として、信頼性情報22は、アドレス指定可能なメモリ12に記憶することができる。
信頼性情報は、少なくとも、メモリセルが正常とみなされることを示す第1の値と、メモリセルが正常でないとみなされることを示す第2の値とを有することができる。さらなる信頼性情報は、例えば、グループ「正常」または「正常でない」内の第1または第2の値のアドレスの下位グループが、より高いまたはより低い時間間隔で検査されることを示すことができる。
以下の実施形態は、信頼性情報が、ビット誤りを有するより高い確率をメモリセルが有するという情報を提供することに関し、メモリ制御装置18は、これらのメモリセル14を別のメモリセル16よりも頻繁に誤りの存在について検査するように構成されるが、これは逆にすることもできる。したがって、信頼性情報22は、例えば、ビット誤りの存在に関してより低い確率をメモリセル16が有するという情報を提供することができ、したがって、メモリセル16は、第1のメモリセル14がビット誤りの存在を検査される頻度よりも低い頻度でビット誤りの存在について検査される。
連続する読出しプロセスの頻度は、連続する時点での読出しプロセスと理解することもできる。
信頼性情報22は、例えば、誤りのあるビットシーケンス17の出現に関する算出(推定)された確率に基づく。例えば、第1のメモリセル14の少なくとも1つのメモリセル14−1〜14−5が、時間間隔t+Δt内にビット誤りを有する確率がより高い場合、これを、第1のメモリセル14に関して一般化または集約し、アドレスa1,1またはそこから導出される情報に要約することができる。以下に詳述するように、ビット誤りの出現に関する算出(推定)確率は、メモリセル14の物理的パラメータに基づいて算出、すなわち決定または推定することができる。例えば、算出確率を推定または決定するために、メモリセルの読出しのための読出し電流および/またはメモリセルの書込みのための書込み電流を使用することができる。代替または追加として、物理的パラメータは、熱的安定性と関連付けられ、および/またはメモリセルの熱的安定性によって影響を及ぼされるさらなるパラメータでよい。
メモリ制御装置は、第1のアドレスa1,1および/または第2のアドレスa2,1の下で記憶されており読み出される誤りのあるビットシーケンス17を、誤り訂正符号を使用して訂正するように構成することができる。例えば、メモリ制御装置18は、誤りのあるビットシーケンス17を訂正し、訂正されたビットシーケンス17’を得て、メモリセル14−1〜14−5または16−1〜16−5を、訂正されたビットシーケンス17’で上書きし、それにより、訂正されたビットシーケンス17’がアドレス指定可能なメモリ12に存在するように構成することができる。
本明細書で述べる例示的実施形態のいくつかは、より低いまたはより高い誤り確率が決定または推定されるメモリセルに関して信頼性情報22が存在するものとして述べられているが、アドレス指定可能なメモリのアドレスの第1の部分集合に関してはこれらが第1の誤り確率を有することが示され、アドレスの第2の部分集合に関してはこれらが第1の部分集合とは異なる第2の誤り確率を有することが示されるように信頼性情報が存在してもよい。代替または追加として、少なくとも1つのさらなる信頼性情報は、アドレスのさらなる部分集合が、第3の誤り確率が仮定されるメモリ状態をアドレス指定することを示すことができる。さらなる信頼性情報の使用は、様々な時間間隔でのメモリセルの読出し/検査を可能にする。
第1のメモリセルに関して信頼性情報(誤り確率情報)が存在する場合、第1のメモリセルの読出しプロセスの頻度は、第2のメモリセルの読出しプロセスの頻度よりも高いことがある。信頼性情報は、第1のメモリセル14内での誤りのあるビットシーケンス17の出現に関する確率が参照状態に比べて高いことに基づく。
簡略に表現すると、メモリデバイス18は、誤りのあるビットシーケンス17の出現に関するより高い確率を有する第1のメモリセルを、別のメモリセル16よりも頻繁に、すなわちより小さい時間間隔で検査するように構成することができる。これは、より低い頻度の検査で十分であるメモリセル16についてはより低い頻度で検査が行われるものと理解することもできる。これは、メモリセルの数回の検査が省かれることによって、算術演算、したがって時間および電気エネルギーの節約を可能にする。
既知の概念では、最も低い熱的安定性または信頼性を有するメモリセルが十分に頻繁に訂正されるような頻度または短い周期で、セルの定期的な上書きが行われる。これにより、さらに、高い熱的安定性を有するメモリセルも、誤りを有する頻度がはるかに低いにも関わらず、より低い熱的安定性を有するメモリセル(誤りを有する頻度がはるかに高い)と同じ頻度で読み出されることになり得て、これは、大きな時間的コストおよび電力コストをもたらす。いくつかの例示的実施形態によれば、例えば、高い熱的安定性を有するメモリセルが、低い熱的安定性を有するメモリセルよりも少ない頻度で読み出されることによって、このコストが減少される。
より良く理解できるように、以下の実施形態は、1個、2個、3個、または4個以上の誤りを検出または訂正するために使用可能である誤り訂正および/または誤り検出符号に関する。しかし、本明細書で述べる例示的実施形態は、誤りを検出するまたは誤りを訂正する符号の機能に限定されない。例えば、誤り訂正符号は、少なくとも1個、最大で100個の誤りを訂正する、少なくとも2個、最大で90個の誤りを訂正する、および/または少なくとも3個、最大で80個の誤りを訂正するように構成することができる。
図4aおよび図4bは、信頼性情報22に基づくメモリセルの読出しおよび/または上書きに関する概略時間推移を示す。例えば、アドレスa1,1によってアドレス指定されるメモリセルに関して、信頼性情報が存在する。アドレスa2,1の下でビットシーケンスが読み出される時間間隔Δt2は、アドレスa1,1の下でビットシーケンスが読み出される時間間隔Δt1よりも大きくてよい。アドレスa2,1の下でビットシーケンスが読み出される頻度は、アドレスa1,1の下でビットシーケンスが読み出される頻度よりも小さいことがある。頻度は、例えば、時間間隔T内の読出しプロセスの数とみなすことができる。
図4bに概略的に示されるように、時間間隔Δt2は、時間間隔Δt1の数倍、場合によっては整数倍でよい。例えば、メモリ制御装置は、時間間隔Δt1で読出し手順を開始し、1つまたは複数のアドレスに関して信頼性情報が存在するかどうか検査するように構成することができる。
メモリ制御装置18は、信頼性情報が存在するアドレスを時間間隔Δt1で読み出し、信頼性情報が存在しないアドレスを読み出さないように構成することができる。時間間隔Δt2で、メモリデバイス18は、信頼性情報が存在するかどうかに関係なく、全てのアドレスa1,1およびa2,1を読み出すように構成することができる。これはまた、例えば誤りの出現に関してアドレス(アドレスa2,1)がより低い確率を有することを信頼性情報が示すときに、補完的に実施可能であり得る。例えば、メモリデバイスは、信頼性情報が存在しない全てのアドレスを時間間隔Δt1で読み出すように構成することができる。
図5は、例えばメモリ制御装置18によって実施可能である方法500の概略流れ図を示す。ステップ510で、アドレス指定可能なメモリからビットシーケンスを読み出すことができる。ビットシーケンスは、例えば、第1のアドレスa1,1および/または第2のアドレスa2,1の下で記憶することができ、すなわちこれらのアドレスによってアドレス指定可能であり得る。
ステップ520で、指定のビットシーケンスを復号することができる。これに関して、メモリ制御装置によって、誤り訂正符号Ccorを使用することができる。誤り訂正符号Ccorは、例えばtビット訂正符号でよい。例えば、t≧1が成り立っていてよい。さらなる例示的実施形態によれば、t≧2が成り立ち、これは、読み出されたビットシーケンス中の少なくとも2つのビット誤りが訂正可能であることを意味する。いくつかの例示的実施形態によれば、t≧3、t≧4、またはt≧5以上が成り立っていてよい。
ステップ530で、例えば数σが1よりも小さい(誤りがない)とき、またはtよりも大きいとき、存在するビット誤りの数σに基づいて誤り訂正を終了することができる(ステップ540)。
ステップ530の条件が満たされている場合、メモリ制御装置は、ステップ550で、数σが閾値τ以下であるかどうか判断するように構成することができる。閾値τに関して、例えばτ≧1およびτ≦tが成り立っていてよい。条件σ≦τが満たされている場合、すなわち、誤りの数σが閾値τ以下である場合、ステップ540に移ることができる。これはまた、存在する誤りの数σが、誤り訂正符号Ccorによって訂正可能である誤りの数に完全に、またはある程度(閾値)まで達しているかどうか、および/または符号リザーブが存在するかどうかに関する言明を条件550が提供するものと理解することができる。訂正可能な誤りの数に十分には達していない場合、書戻しを省くことができる。
例えばステップ550の条件が満たされている場合、すなわち誤りの数σが閾値τを超えた場合、メモリ制御装置は、ステップ560で、ビット誤りを訂正して、訂正されたビットシーケンス、例えば訂正されたビットシーケンス17’を得るように構成することができる。
メモリ制御装置は、ステップ570で、訂正されたビットシーケンスをアドレス指定可能なメモリに書き戻すように構成することができる。これは、誤りのあるビットシーケンス中で、誤りのあるビットを訂正されたビットで上書きし、誤りのないビットは上書きしないようにメモリ制御装置を構成することができることを意味する。有利には、出現するさらなる誤りをも訂正符号が訂正することができるほど、存在する誤りの数が小さいとき、誤りの訂正を省略することができる。例えば、さらなる誤りの出現の可能性が低く、出現する誤りが常に個々に訂正されることがあり、少なくとも1つのさらなる誤りを符号によって訂正可能である。このとき、メモリへの訂正および/または書戻しを省くことができ、これは、メモリデバイスをその効率の面でさらに改良する。
以下に述べるように、ステップ570で、書戻しは、アドレス指定されたメモリセルに全ビットシーケンスが書き戻されるように行うことができる。代替として、ビット誤りを有するビット(メモリセル)のみを新規書込みすることもできる。これは、書き込まれるメモリセルの数を小さくすることができる、または減少させることができることを意味し、それにより、さらに効率が向上される。
上述したステップは、記載した順序で実施可能であり得る。代替として、順序が異なっていてもよく、および/またはいくつかのステップは行われても行われなくてもよい。例えば、ステップ560をステップ530の前に行うことができる。代替または追加として、ステップ560をステップ550の前に行うこともできる。代替または追加として、例えば、誤りが存在するかどうかの判断の際にステップ550の条件が検査され、ステップ530の明示的な実施が省かれることによって、例えばステップ530を暗黙的に行うことができる。
簡略に表現すると、メモリデバイスは、第1のアドレスa1,1の下で記憶されており読み出された、σ個の誤りを有する誤りのあるビットシーケンスを、誤り訂正符号を使用して訂正し、誤りのあるビットシーケンスを訂正されたビットシーケンスで上書きする、および/または訂正されたビットシーケンスを書き戻すように構成することができる。誤り訂正符号は、t≧2でのtビット訂正符号でよい。1<σ≦tが成り立っていてよい。代替として、メモリ制御装置は、少なくとも1つの誤りが検出されたときに、読み出されたビットシーケンスを訂正する、および/または誤りのあるビットシーケンスを訂正されたビットシーケンスで上書きする、および/または訂正されたビットシーケンスを書き戻すように構成することができる。
メモリ制御装置は、誤りの数σが閾値τ以下であるときには、誤りのあるビットシーケンスを訂正されたビットシーケンスで上書きせず、訂正されたビットシーケンスを書き戻さないように構成することができる。ここで、書戻しが行われないときには、1≦τ≦tおよびσ≦τが成り立っていてよい。訂正されたビットが書き戻される場合、1≦τ<σ≦tが成り立っていてよい。
メモリ制御装置は、連続する読出しプロセス(アドレスa1,1の下で第1のメモリセルが読み出され、読み出されたビットシーケンス中の誤りが符号Ccorによって訂正される)において、第1のメモリセルに訂正されたビットシーケンスを上書きするように構成することができる。メモリ制御装置は、読出しプロセス(アドレスa1,1の下で第1のメモリセルが読み出され、読み出されたビットシーケンス中の誤りが符号によって訂正されない)において、第1のメモリセルにビットシーケンスを上書きしないように構成することができる。例えば、これは、ステップ530の条件が満たされていないことにより、および/またはステップ550の条件が満たされていることにより行われることがある。
任意選択のライン522によって示唆されるように、メモリ制御装置またはメモリデバイスは、連続する読出しプロセス(アドレスa1,1の下で第1のメモリセルが読み出され、読み出されたビットシーケンス中の誤りが符号によって訂正または検出されない)において、第1のメモリセルに読み出されたビットシーケンスを上書きするように構成することができる。これは、誤りがない場合、または訂正が実施されなかった(すなわち、誤りが検出されたが訂正されなかった)場合にも、読み出されたメモリセルに誤りのないビットシーケンスが上書きされることがあることを意味する。
第1のメモリセルおよび/または第2のメモリセル内での誤りのあるビットシーケンスの出現に関する算出確率(信頼性情報がそれに基づく)は、時点tで第1のアドレスa1,1の下で第1のメモリセルに記憶されていた誤りのないビットシーケンスが時点t+Δtでは誤りを有することに関することがある。誤りのあるビットシーケンスの出現に関する算出確率は、少なくとも1つの物理的パラメータの値を使用して算出することができる。
物理的パラメータは、例えば、第1または第2のメモリセルの読出しのための読出し電流、第1または第2のメモリセルの書込みのための書込み電流、および/または一般に、メモリセルの熱的安定性と関連付けられる物理的パラメータである。
図6は、アドレス指定可能なメモリのメモリセルの書込み電流を横座標に表し、横座標にプロットされた書込み電流を有するそれぞれのメモリセルの割合を縦座標に表す概略グラフを示す。メモリセルの全体集合32は、例として、図示される分布を有する。メモリセルの全体集合32のうちの第1の部分(部分集合)34は、第1の閾値i1よりも小さい書込み電流iを有する。全体集合32のうちの第2の部分(部分集合)36は、第2の閾値i2よりも大きい書込み電流iを有し、ここで、第2の閾値は、第1の閾値よりも大きい。全体集合32のうちの第3の部分(部分集合)38は、第1の閾値i1以上であって第2の閾値i2以下である書込み電流を有する。閾値i1とi2の間の範囲は、参照状態とみなすことができる。代替として、閾値i1とi2の平均値および/または許容範囲を考慮した平均値を参照値とみなすこともできる。許容範囲は、例えば、平均値を中心として±50%、±40%、または±30%の範囲内に設定することができる。
第1のメモリセルに関して信頼性情報が存在する場合、第1のメモリセルの読出しプロセスの頻度は、第2のメモリセルの読出しプロセスの頻度よりも高いことがある。代替として、第2のメモリセルに関して、信頼性情報が存在してよい。信頼性情報は、第1のメモリセル内での誤りのあるビットシーケンスの出現に関する確率Pが参照状態に比べて高いことに基づく。
全体集合32が、例えばMRAMメモリのメモリセルに関するものである場合、部分集合34のメモリセルは、時間間隔t+Δt内に誤りを有する確率が部分集合38のメモリセルよりも高いことがある。部分集合36のメモリセルは、例えば、永久的に誤りのあるものとして分類することができる。閾値i1は、例えば、少なくとも10μA〜最大40μAの範囲内、少なくとも15μA〜最大30μAの範囲内、または約20μAの値を有していてよい。閾値i2は、例えば、少なくとも100μA〜最大300μAの範囲内、少なくとも150μA〜最大300μAの範囲内、または約200μAの値を有していてよい。同様に、メモリセルが時間間隔内に誤りを有する確率と共に、別の物理的パラメータも使用可能であり得る。別のタイプのメモリまたは別のタイプの物理的パラメータに関しては、別の値が使用可能であり得る。
メモリデバイスまたはメモリ制御装置は、物理的パラメータを決定するように構成することができる。代替または追加として、メモリ制御装置は、場合によっては外部から、物理的パラメータまたはそこから導出される情報を得るように構成することができる。例えば、メモリ制御装置は、メモリセルの読出しのための電流および/またはメモリセルの書込みのための電流を決定、すなわち測定するように構成することができる。これは、メモリデバイスが、メモリデバイスの動作中に1つまたは複数の第1のアドレスを決定することを可能にする。代替として、例えば信頼性情報がアドレス指定可能なメモリまたはさらなるメモリに保存されていることによって、図3に関連して説明したように、メモリ制御装置に信頼性情報を提供することもできる。
メモリ制御装置は、物理的パラメータをさらなる閾値、例えば閾値i3と比較するように構成することができ、閾値i3は、閾値i1よりも大きく、閾値i2よりも小さい。これは、アドレス指定可能なメモリが、第3のアドレスa3,1によってアドレス指定可能であり得る第3のメモリセル38’を有することを意味する。アドレスa3,1の下で記憶されているビットシーケンスは、誤りがない場合には、誤り訂正符号の符号語のビットを含むことができる。メモリ制御装置は、記憶されているビットシーケンス中の誤りのある内容を訂正するために、第1、第2、および/または第3のメモリセルを読み出して、読出しプロセスを行うように構成することができる。第1のメモリセルに関して第1の信頼性情報が存在し、第3のメモリセルに関して第3の信頼性情報が存在する場合、第1のメモリセル、第2のメモリセル、および第3のメモリセルの連続する読出しプロセスの頻度は異なっていてよい。第1の信頼性情報および第2の信頼性情報は、第1、第2、および/または第3のメモリセル内での誤りのあるビットシーケンスの出現に関する算出確率に基づくことがある。これは、アドレスのさらなる部分集合を記憶もしくは算出することができること、またはアドレス指定可能なメモリのアドレスが3つ以上の互いに異なる頻度で読み出されることを意味する。これはまた、第2のメモリセルに記憶されている第2のビットシーケンスを、第2のメモリセルに割り当てられた頻度で検査し、第3のメモリセル38’に記憶されているビットシーケンスを、第3のメモリセルに割り当てられた頻度で検査するようにメモリ制御装置を構成することができるものと理解することもできる。第1のメモリセルに割り当てられた頻度と、第2のメモリセルに割り当てられた頻度と、第3のメモリセルに割り当てられた頻度とは、第1のメモリセルに関する信頼性情報および/または物理的パラメータに基づいて、第2のメモリセルに関する信頼性情報および/または物理的パラメータに基づいて、ならびに第3のメモリセルに関する信頼性情報および/または物理的パラメータに基づいて異なっていてよい。
代替または追加として、さらなる例示的実施形態によれば、メモリ制御装置は、閾値i4に基づいて部分集合34を区分するように構成することができる。これは、誤りを生じやすいものとして格付けされた様々なメモリセルに、例えば互いに異なる部分信頼性情報に基づいて互いに異なる頻度を割り当てることができることを意味する。メモリ制御装置は、部分信頼性情報を含む信頼性情報に基づいて、これらのメモリセルを互いに異なる頻度で検査するように構成することができる。例えば、部分信頼性情報は、アドレスまたはそこから導出される情報として、異なる頻度で照会される互いに異なるメモリまたはメモリ領域に記憶することができる。
すなわち、図6は、書込み電流の値iに応じた例えばMRAMのメモリセルの割合に関する一例、または異なる書込み電流を有するメモリセルの百分率の図を示す。i<i1での書込み電流iを要求するメモリセルの割合は、番号1を付された面によって表される。ここで、i1は、例えば約20マイクロアンペアの値でよく、i2は、200マイクロアンペアの値でよい。i1<i≦i2での書込み電流iを有するメモリセルの割合は、番号2を付された面によって表される。i>i2での書込み電流iを有するメモリセルの割合は、番号3を付された面によって表される。
例えば、i1よりも小さい書込み電流を有するメモリセルは、時点tで正しい状態であったときに時点t+Δtで誤りを有する状態になる確率が、i1<i≦i2での書込み電流iを有するメモリセルよりも高いものと考えることができる。i>i2での書込み電流iを有するメモリセルは、比較的高い確率で、永久的に誤りのあるものと考えることができる。
i>i2での書込み電流iを有する少なくとも1つのメモリセルをアドレス指定するアドレスは、誤りが存在する場合、修復法で修復されるアドレスとして選択することができる。
アドレスαによってメモリセルがアドレス指定され、これらのメモリセルの少なくとも1つが永久的な誤りを有する場合、そのようなセルに記憶されるべき実際の値が永久的な値とは異なるとき、反転されたビットシーケンスを記憶し、またはビットのグループ内に反転されたビットシーケンスを記憶し、少なくとも1つの反転ビットによって、記憶されているビットシーケンスまたはビットのグループが反転されて記憶されているか、それとも反転されずに記憶されているかをマークすることができる。
誤り訂正符号Ccorとして、例えばt=2でのtビット誤り訂正符号が使用される場合、アドレスの集合α1は、i1以下の書込み電流を有する2つのメモリセルを含むメモリセルをアドレス指定するアドレスとして決定することができる。i1以下の書込み電流を有する2つのメモリセルを有するアドレスの集合は、i1以下の書込み電流を有する1つのメモリセルを有するアドレスの集合よりも小さい。
t≧3でのtビット誤り訂正符号が使用される場合、アドレスの集合α1は、i1以下の書込み電流を有するτ個のメモリセルを含むメモリセルをアドレス指定するアドレスとして決定することができ、ここで、τ≦3が成り立つ。
i1以下の書込み電流を有するτ個よりも多いメモリセルをアドレス指定するアドレスを、修復されるアドレスとして選択することもできる。いくつかの例示的実施形態は、動作進行中にアドレスの様々な集合を修正することを企図する。
別の例示的実施形態は、スタートアップ時にアドレスの様々な集合を決定し、次いで動作進行中にそれらを修正することを企図する。
したがって、例えば、tビット誤り訂正符号が誤り訂正のために使用され、1≦τ≦t(t≧1)が成り立つとき、最初は集合α1に属していないアドレスaを、このアドレスの下でτビット誤りが出現したときに集合α1に割り当てることが可能である。
別の例示的実施形態は、このアドレスへのS回のアクセス(Sは所定のアクセス回数)で誤りが出現しないとき、集合α1のアドレスa1,jをこの集合から除外することを企図する。
別の例示的実施形態は、動作進行中またはスタートアップモードにおいて、メモリアクセス時にどれだけの頻度でメモリセルが誤りを有していたかに関するテーブルを使用し、テーブルに記憶されているデータに基づいて集合α1またはα2を修正することを企図する。
また、書込み電流に関して3つ以上の閾値を考察し、アドレスの3つ以上の部分集合を形成することも可能である。
別の例示的実施形態は、読出し電流iを有するメモリセルの割合を決定し、メモリセルに関する読出し電流の数に応じて、時点tにメモリセルに記憶されている誤りのない値が時点t+Δtで誤りを有する確率を予測または推定し、必要な読出し電流に応じてアドレスの集合α1を決定することを企図する。
別の例示的実施形態は、メモリセルに関する測定された書込み電流と読出し電流とに応じて、時点tでメモリセルに記憶されている誤りのない値が時点t+Δtで誤りを有する確率を予測または推定し、書込み電流と読出し電流とに応じて、より頻繁に読み出されるアドレスの集合α1を決定することを企図し、ここで、読み出されたデータは、誤りが訂正可能である場合には、訂正されて書き戻される。
以下、アドレス指定可能なメモリ内で1つのアドレスによってアドレス指定可能なメモリセルを参照する。
図7は、メモリ12のアドレスへのメモリセルの割当てに関する概略図である。アドレス指定可能なメモリのアドレスは、例えばl個のビットに関して解決可能であり得、したがって、l個のビットに基づいて、0〜2l−1の範囲内で2l個のアドレスが解決可能であり、すなわちアドレス指定可能である。複数の、多数の、または場合によっては全てのアドレスaの下で、c個のチェックビットおよびu個のデータビットが記憶可能であり得る。訂正すべき符号Ccorの符号語42は、チェックビットcおよびデータビットuを含むことができる。代替または追加として、符号語42’は、チェックビットc、データビットu、およびアドレスビットa、またはそこから導出されるビットシーケンスを含むことができる。アドレスビットa、チェックビットc、およびデータビットuの上付きの添字0〜2l−1は、それぞれのビットがどのアドレス0〜2l−1の下で記憶可能であるかを示すためのものであり得る。
符号語42’の利点は、記憶されている第1のアドレスa1,1および/または第2のアドレスa1,2のアドレス情報も符号化可能であり、したがって訂正可能であることである。これは、記憶されているアドレス情報におけるビット誤りが検出可能および/または訂正可能であることを意味する。
代替として、符号語42’は、アドレスビットaから導出された別の情報も含むことができ、例えばアドレスビットに関する冗長情報を含む。
以下に述べる例示的実施形態は、アドレス指定可能なメモリに関し、ここで、例えば、第1のアドレスa1,1および第2のアドレスa2,1をより詳細に考察する。いくつかの例示的実施形態によれば、アドレス指定可能なメモリは多数のアドレスを有し、これらのアドレスは、メモリセルをアドレス指定するようにそれぞれ構成され、ここで、それぞれのメモリセルに情報を記憶可能であり、これらの情報は、誤り訂正符号の符号語の一部である、または符号語である。
第1および第2のアドレスに関する上記の説明は、いくつかの例示的実施形態によれば、アドレス指定可能なメモリが、多数のさらなる第1のアドレスa1,2、…、a1,m(m>1)を有することができるものと理解することができる。さらに、アドレス指定可能なメモリは、さらなる第2のメモリセルを有することができ、それらのメモリセルは、さらなる第2のアドレスa2,2、…、a2,M(M>1)によってアドレス指定可能である。第1のメモリセルおよびさらなる第1のメモリセルは、第1のメモリセルの全体集合、例えば部分集合34を構成することができる。
第1のメモリセルに関する上記の実施形態は、さらなる第1のメモリセルに容易に転用可能である。第1のメモリセルの全体集合は、アドレスの第1の部分集合α1によってアドレス指定可能であり得て、ここで、部分集合α1は、アドレスa1,1、…、a1,m(m≧1)を含むことができる。第2のメモリセルおよびさらなるメモリセル(例えば、アドレスa2,2、…、a2,Mによってアドレス指定可能なメモリセル)は、例えば第2のメモリセルの全体集合、例えば部分集合38または全体集合32を構成する。第2のメモリセルに関する上記の実施形態は、さらなる第2のメモリセルに容易に転用可能である。第2のメモリセルの全体集合は、アドレスの第2の部分集合α2によってアドレス指定可能であり得て、ここで、部分集合α2は、アドレスa2,1、…、a2,M(M≧1)を含むことができる。アドレスα2は、メモリの使用される全てのアドレスでもよく、および/またはアドレスα1を含んでいてもよい。
第1および第2のアドレス、またはアドレスの第1の部分集合α1および第2の部分集合α2は、それぞれメモリに保存することができる。代替として、例えば、アドレスの第1の部分集合α1またはアドレスの第2の部分集合α2は、アドレスメモリに保存することができ、別の部分集合は、例えば、全てのアドレス指定可能なまたは使用されるアドレスに関係していてよく、暗黙的に知られていることがある。これらの部分集合は、例えばメモリに保存しなくても、例えばアドレスカウンタによってアドレス指定可能であり得て、アドレスカウンタは、アドレス情報を増分または減分するように構成され、それにより全てのアドレスを循環的に巡る。メモリ制御装置は、アドレスカウンタのそれぞれの値をメモリ26の内容と比較するように構成することができる。簡略に表現すると、アドレスの部分集合または全体集合は、アドレスの別の部分集合を含むことができる。
メモリ制御装置は、記憶されているビットシーケンス44aおよび/または44b中の誤りのある内容を訂正するために、第1のメモリセル14a〜bおよび/または第2のメモリセル16a〜bの全体集合を読み出して、読出しプロセスを行うように構成することができる。第1のメモリセル14a〜bの全体集合に関しておよび/または第2のメモリセル16a〜bの全体集合に関して信頼性情報が存在する場合、第1のメモリセル14a〜bの全体集合と第2のメモリセル16a〜bの全体集合の連続する読出しプロセスの頻度は異なっていることがある。図3を参照すると、信頼性情報22は、例えばアドレスa1,1およびアドレスa1,2を含む、またはそれを通知することができる。
第1のメモリセル14a〜bの全体集合に関して信頼性情報が存在する場合、第1のメモリセル14a〜bの全体集合の読出しプロセスの頻度は、第2のメモリセル16a〜bの全体集合の読出しプロセスの頻度よりも高いことがある。
図3を参照すると、メモリデバイス10は、メモリデバイス10のスタートアップ中に部分集合α1を決定するように構成することができる。スタートアップは、例えば、デバイスの作動、ブートプロセス、および/または循環的な検査プロセスに関するものでよい。例えば、メモリ制御装置18は、それぞれのメモリセルおよび/またはメモリセルのグループの物理的パラメータを捕捉し、捕捉された物理的パラメータに基づいて第1の部分集合α1および/または第2の部分集合α2を決定するように構成することができる。代替として、例えば製造プロセス中に、別のデバイスの第1または第2の部分集合を決定して保存することができる。
メモリ制御装置18は、決定された第1の部分集合α1および/または第2の部分集合α2を揮発性メモリに記憶するように構成することができる。代替または追加として、メモリ制御装置は、第1の部分集合α1および/または第2の部分集合α2を不揮発性メモリおよび/またはアドレス指定可能なメモリ12に記憶するように構成することができる。アドレス指定可能なメモリ12への第1または第2の部分集合の保存は、どのメモリセルがより高いまたはより低い頻度で検査を必要とするかについての情報がアドレス指定可能なメモリ12に既に含まれている状態を実現することができる。不揮発性メモリ、例えばメモリ26またはメモリデバイス18のローカルメモリへの第1の部分集合α1および/または第2の部分集合α2の保存は、信頼性情報および/またはアドレス情報への迅速なアクセスを可能にすることができる。さらに、アドレス指定可能なメモリ12とは異なるメモリへの第1の部分集合α1および/または第2の部分集合α2の保存は、部分集合に関して保存される情報が、アドレス指定可能なメモリ12の誤り確率に依存しないことを可能にすることができる。
すなわち、図7は、各アドレスの下でnビットを記憶することができるl次元のアドレスを有するアドレス指定可能なメモリを示す。アドレス指定可能なメモリには、誤り訂正符号のチェックビットおよびデータビットを記憶することができる。例えば、2
l個のアドレスがあり、これらのアドレスは、バイナリ表現で、
と表すことができる。
アドレスa
iの下で記憶されているビットは、
として表される。
ビットx
iは、本例示的実施形態では、m個のチェックビット
と、k個のペイロードビット
またはデータビット
とからなり、ここで、n=m+kであり、
が成り立つ。
以下でより詳細に述べるように、i=0、…、2l−1に関して、チェックビットciおよびペイロードビットuiは、誤りがない場合には、誤り検出/誤り訂正符号Ccorの符号語のビットである。ペイロードビットは、単にデータビットと呼ぶこともある。
図8は、アドレスの下で記憶されているビットシーケンスの概略図である。すなわち、図8は、例えば誤り訂正符号の符号語が記憶されているアドレス指定可能なメモリの例示的実施形態を示す。例えば、l=3、m=5、およびk=7が選択されている。
8個のアドレスa0=[0,0,0]、a1=[0,0,1]、…、a7=[1,1,1]の下で、それぞれ5個のチェックビットc0、c1、c2、c3、c4および7個のデータビットu0、…、u7が記憶される。チェックビットc0、c1、c2、c3、c4およびデータビットu0、…、u7は、誤りがない場合には、例えばH行列H1によって与えられる誤り検出/誤り訂正符号C1の符号語のビットである。
本例示的実施形態では、アドレスa
0、…、a
7の下でメモリに記憶されているビットc
0、…、c
4、u
0、…、u
7は、それぞれH行列H
1によって決定される符号C
1の符号語であり、したがって、例えば、
が成り立つ。
体系化した形態でのH行列H
1は、
であり、そこから、等式(1)からの展開によって、チェックビットc
0、…、c
4に関して、等式
c
0=u
0+u
1+u
2+u
3+u
4+u
5
c
1=u
0+u
1+u
2+u
6
c
2=u
0+u
3+u
4+u
6
c
3=u
1+u
3+u
5+u
6
c
4=u
2+u
4+u
5
が与えられる。演算子「+」は、ここでは、および以下では、バイナリ値の演算において加算剰余2を意味し、これは、XORゲートによって論理XOR演算として実現することができる。
符号C1は、例えば、1ビット誤りを訂正し、2ビット誤りを検出することを可能にするHsiao符号である。例えば、H行列H1の全ての列が奇数個の「1」を有し、その数は1対において異なる。
誤りによって乱された符号語は、
によって表される。誤りのない符号語c
i、u
iと、この符号語から生じる、誤りによって乱された符号語[c
i,u
i]’との成分毎のXOR和は、例えば誤りベクトルe
iとして表され、それにより、この例示的実施形態では、
が成り立つことがある。
誤りベクトルの成分が1である場合、この成分に誤りが存在する。
ベクトル[ci,ui]’の誤りシンドロームsは、
sT=H1・([ci,ui]’)T=H1・(ei)T (3)
に決定されている。列ベクトルがsTとして表され、これは、成分s0、s1、…を有し、ここで、sは、対応する行ベクトルである。[ci,ui]のただ1つの成分が誤りである場合、誤りベクトルeiは、正確に1つの「1」を有する。これは、1ビット誤りと呼ぶことができる。[ci,ui]のq(q≧1)個の成分が誤りである場合、誤りベクトルeiは、正確にq(q≧1)個の「1」を有する。これは、qビット誤りと呼ぶことができる。本例示的実施形態では、誤りシンドロームs=s0、…、s4は、以下のようである。
s0=c0‘+u0‘+u1‘+u2‘+u3‘+u4‘
s1=c1‘+u0‘+u1‘+u2‘+u6‘
s2=c2‘+u0‘+u3‘+u4‘+u6‘
s3=c3‘+u1‘+u3‘+u5‘+u6‘
s4=c4‘+u2‘+u4‘+u5‘ (4)
実際には、誤りシンドロームsは、シンドローム発生器によって決定することができ、シンドローム発生器は、等式(4)を実装し、例えばXORゲートを使用して容易に実装することができる。例えば、利用可能な合成ツールを使用することができる。
1ビット誤りの場合、H行列の列に等しい誤りシンドロームが生じ得る。
例えば、
でのc,uの第12の成分u
6が乱される場合、誤りシンドローム
s
T=H
1・(0,…,0,1)
T=(0,1,1,1,0)
T
が生じることがあり、これは、H行列H
1の第12の列に等しい。2ビット誤りの場合、H行列の2つの対応する列の成分毎のXOR和に等しい誤りシンドロームが生じる。
例えば、
でのc,uの第12の成分u
6および第11の成分が妨害される場合、誤りシンドローム
s
T=H
1(0,..,0,1,1)
T=(1,1,1,0,1)
T
が生じ、これは、H行列H
1の第12の列と第6の列との成分毎のXOR演算に等しい。各2ビット誤りは、この例示的実施形態では、偶数個の「1」を有する0でない誤りシンドロームをもたらすことがある。12個の生じ得る1ビット誤りはそれぞれ、H行列H
1の1対の異なる列の一方に等しい異なる誤りシンドロームをもたらし、それにより、各1ビット誤りに、可逆に一意に誤りシンドロームが割り当てられ、したがって、その誤りシンドロームに基づいて1ビット誤りを一意に復号することができる。
例えば、ペイロードビットu0、…、u6=1010010から、チェックビットが、等式(4)に対応してc0、c1、c2、c3、c4=10110に決定されており、図8では、アドレスa1,1=010の下で符号語101101010010が記憶されている。ペイロードビットu0、…、u6=1101100から、チェックビットが、等式(4)に対応してc0、c1、c2、c3、c4=00101に決定されており、図8では、アドレスa2,1=101の下で符号語001011101100が記憶されている。
本例示的実施形態では、アドレスa1,1=010が第1のアドレスであり、アドレスa2,1=101が、それとは異なる第2のアドレスである。
時点tで、第1のアドレスa1,1=010の下で、誤りのないビットシーケンス、ここではビットシーケンス101101010010が記憶されており、第2のアドレスa2,1=101の下で、誤りのないビットシーケンス101101010010が記憶されている。
時点tでアドレスa1,1の下で誤りのないビットシーケンスが記憶されていたときに、時点t+Δt(Δt>0)でアドレスa1,1の下で誤りのあるビットシーケンスが記憶されている推定確率は、時点tでアドレスa2,1の下で誤りのないビットシーケンスが記憶されていたときに、時点t+Δtでアドレスa2,1の下で誤りのあるビットシーケンスが記憶されている推定確率よりも大きい。
いくつかの例示的実施形態は、アドレスa2,1によってアドレス指定されるメモリセルが、アドレスa1,1によってアドレス指定されるメモリセルよりも誤りを生じにくいものであることを企図する。
別の例示的実施形態は、アドレスa1,1によってアドレス指定されるメモリセルが、アドレスa2,1によってアドレス指定されるメモリセルよりも誤りを生じやすい1つまたは複数のメモリセルを含むことを企図する。
1つまたは複数の物理的パラメータの測定によって、あるビットシーケンスにおいて、アドレスa1,1の下で記憶されているビットシーケンスでの誤りの確率が、アドレスa2,1の下で記憶されているビットシーケンスでの誤りの確率よりも高いかどうかを予測または推定することが可能であり得る。例えば、パラメータは、書込み電流の値もしくは高さ、または対応するアドレスの下で値を書き込むために必要な時間でよい。
いくつかの例示的実施形態では、アドレス指定可能なメモリは、いわゆるエマージングメモリ(emerging memory)を含み、これは、MRAM、RRAM(抵抗性RAM)、またはPC−RAM(相変化メモリ:phase−change memory)など新規のメモリを表す。アドレス指定可能なメモリは、そのようなメモリとして形成することもできる。例えばMRAMなどいくつかのメモリでは、物理的パラメータ(例えば書込み電流の高さまたは書込み電流の値)によって、メモリセルのデータ保持を、出荷時に既に決定することができる。その後、この状態は本質的に変化しない。したがって、信頼性情報は、元のまたは製造時のメモリセルの特性に関することがあり、この特性は、メモリの老化効果の影響をあまりまたは全く受けず、すなわち老化に依存せず、メモリのメモリセル全体のうちのかなり少ない部分を成すより頻繁に検査されるメモリセルに伴う。
1つまたは複数の誤りのあるビットの上書きによるビットシーケンスの訂正(ここで、書込みプロセスにおいて、これらのビットシーケンス中の1つ、複数、または全ての誤りのないビットは除外される)は、アドレス指定可能なメモリが、ビット毎に変更可能なメモリであると理解することもできる。これは、ビットを個々にアドレス指定し、個々に読み出すもしくは書き込む、または削除およびプログラミングすることができることを意味する。別のメモリ、例えばフラッシュメモリは、プログラミング前に削除すべきビットへのブロック毎の削除アクセスのみを可能にする。
個々のビットの訂正またはリセット(削除およびプログラミング)によって、訂正されたビットシーケンスが同じまたは別の不揮発性メモリに一時記憶される必要をなくすことが可能になる。すなわち、読出しユニット、例えばマイクロプロセッサ、CPU、または別のデバイスが、ビットシーケンスを、さらなる使用または処理のために揮発性メモリに一時記憶することが想定可能である。これに関して、例えば、レジスタメモリまたは(S)RAMメモリが考えられる。これは、例えばさらなる処理のためにデータを読み出すまたは収集するために可能であり、ここで、そのためにワード自体の特性は変更されない。すなわち、これは、例えば、フラッシュメモリ(訂正されたワードが新たなメモリアドレスに書き込まれ、したがって訂正された形態と訂正されていない形態とでメモリ内に存在する)で行われるような、同じメモリまたは新たなメモリ内への訂正されたビットシーケンスの追加または冗長の記憶と同一視することはできない。簡略に述べると、これは、メモリ内の誤りのあるビットシーケンスを、冗長なしでまたは非冗長でメモリ内で訂正するようにメモリ制御装置を構成することができることを意味する。別のメモリ、例えばフラッシュメモリは、ビットへのブロック毎の削除アクセスのみを可能にし、ビットは、プログラミング前にブロック毎に削除される。
したがって、個々のビットの訂正によって、「日付」、すなわち元の日付または作成日などのビットシーケンスの特性は、メモリ内で変えないでおくことができる。代替または追加として、ビットシーケンスのアドレスもメモリ内で変えないでおくことができる。簡略に述べると、これは、不揮発性メモリ内でまたは不揮発性メモリからビットシーケンスの位置を変えずに、すなわち位置変更なしで同じアドレスの訂正が行われることを意味する。
したがって、いくつかの例示的実施形態は、訂正されたビットシーケンスが上書きされ、すなわち元のアドレスに書き込まれることを企図する。これは、1つ、複数、または全ての誤りのないビットが書き込まれないことを含むことができる。これは、代替または追加として、不揮発性メモリ内での一時記憶なしで訂正が行われることを含むことができる。
時間の経過と共に、メモリセルに記憶されている値は、変化して誤りを有することがある。例えば、フラッシュメモリでは、状態を電荷として記憶することができ、電荷は、時間の経過と共に減少することがある。電荷が所定の閾値よりも小さくなると、電荷損失が誤りとして作用することがある。メモリセルの状態は、ここでは連続的な値である。上記の電荷損失に対処するために、アナログ状態値が閾値よりも低くなる前に、記憶されている値を読み出し、読み出されたデジタルに変換された値を改めて同じメモリセルまたは別のメモリセルにアナログ状態として書き込むことができる。これは、アナログ状態値を有するメモリセルに関して、リフレッシュと呼ばれることがある。リフレッシュにより、閾値に近くなっているメモリセルのアナログ状態を変えて、対応する閾値から再びさらに離すことができる。
対照的に、M−RAMでは、記憶されている状態は、デジタル量である。MRAMでは、例えば量子効果により、メモリセルのデジタル状態が、誤りのあるデジタル状態に変わることがあり得る。また、時間の経過と共に、1つのアドレスでアドレス指定されるいくつかのメモリセルにおいて、誤りのあるデジタル状態が生じることもあり得て、これはマルチビット誤りとして作用する。いくつかの例示的実施形態は、使用される誤り訂正符号を用いてそのようなマルチビット誤りを訂正することができず、これは欠点である。
使用される誤り訂正符号によって場合によっては訂正することができないことがある誤りの蓄積を回避するために、ここでは、複数の誤りが生じる前に、アドレスの下で記憶されている場合によっては誤りのあるビットシーケンスを読み出し、誤り訂正符号を使用してそれらを訂正し、訂正されたビットシーケンスを同じアドレスの下で同じメモリセルに書き戻すことが好適であり得る。
読み出されたビットシーケンスに誤りがない場合、このビットシーケンスを書き戻す必要はないとみなすことができる。なぜなら、既にメモリセルに記憶されているのと同じデジタル値の書戻しは、対応するメモリセルのデジタル状態を変えないからである。有利には、ここで、誤りのあるビットシーケンスが記憶されたメモリセルの内容のみがアドレスの下で書き戻されるとき、正しい値の書戻しの不要な時間的コストおよび不要な電力消費を節約することができる。
言葉を換えてもう一度述べると、以下のようである:生じる誤りが多くなりすぎる前に、メモリセルに記憶されているビットシーケンスが例えば定期的にまたは特定の時点に読み出され、誤りが存在する場合にのみ、その誤りが対象の符号によって訂正可能であるときには、誤り訂正符号によってビットシーケンスが訂正され、訂正されたビットシーケンスを書き戻すことによって、ビットがデジタルでメモリセルに記憶されているメモリ内での誤りの蓄積を減少させることができる。そのために、1つのアドレスの下で記憶されているビットシーケンスが、誤り訂正符号Ccorのビットである必要がある。
ここで、概念「書戻し」または概念「上書き」が使用されるとき、以下の状況を表すことができる。
アドレスaによってアドレス指定されるメモリセルから、アドレスaの下で1つのバイナリシーケンスが読み出される。読み出されたバイナリシーケンスが誤りを有し、使用される誤り訂正符号によってその誤りを訂正することができる場合、読み出されたバイナリシーケンスが訂正され、訂正されたバイナリシーケンスが、アドレスa*の下でメモリに記憶される。その際、a*=aであってもよく、読み出された誤りのあるバイナリシーケンスが記憶されていたのと同じアドレスの下で、訂正されたバイナリシーケンスが記憶(上書き)されることが可能である。
a≠a*の場合、訂正されたバイナリシーケンスは、別のアドレスの下で、例えば別のメモリブロックまたは別のメモリに記憶(書戻し)される。書戻しまたは上書きは、様々な様式で実現することができる。これは、第1および/または第2のアドレスを修復プロセスによって別のアドレスに置き換えるようにメモリ制御装置を構成することができることを意味する。
a=a*の場合、例えば、訂正されたバイナリシーケンスがアドレスaの下でメモリセルに書き込まれる前に、誤りのあるバイナリシーケンスが記憶されていたメモリセルがまず削除されることが可能である。
別の例示的実施形態は、誤りのあるバイナリシーケンスの誤りビットが記憶されているメモリセルのみが、訂正されたビットがこれらのメモリセルに書き込まれる前に削除され、残りのメモリセルは変更されないことも企図する。
別の例示的実施形態は、誤りのあるバイナリシーケンスの誤りビットを含むビットグループのビットが削除され、その後、訂正されたバイナリシーケンスの対応するビットが、削除されたメモリセルに書き込まれることを企図する。上記の可能性は、排他的または限定的なものではなく、より良く理解できるようにするためのものにすぎない。
いくつかの例示的実施形態は、メモリの異なるアドレスに関して、時点tでこのアドレスの下で記憶されている誤りのないビットシーケンスが時点t+Δtで誤りを有する確率または推定確率が異なることを企図する。例えば、メモリセルへのデータの書込み時またはメモリセルからのデータの読出し時に、物理的パラメータの値に基づいて、これらの確率を予測または推定することができることが可能であり得る。
ここで、この確率の比較的粗い評価を決定すれば十分であり得る。また、どのアドレスの下で、時点tで誤りのないビットシーケンスが時点t+Δtで誤りを有する確率が、別のアドレスの下で記憶されているビットシーケンスよりも高いかを評価すれば十分であり得、この確率の正しい値を決定する必要はない。
ここでは説明を容易にするために、アドレスa1,1の下で時点tに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率が、アドレスa2,1の下で記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率よりも大きいと述べるとき、それによって例えば以下の状況を表すことができる。
1.確率は、例えば物理的パラメータの観察または測定に基づいて、数値として予測可能である、または予測される。
2.例えば物理的パラメータの観察または測定に基づき、アドレスa1,1の下で時点tに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率が、アドレスa2,1の下で記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率よりも大きいことを、根拠付けて予測することができる。これらの確率に関する正しい値を決定する必要はない。
いくつかの例示的実施形態は、所定の時点に、または所定の時間間隔で、例えばMRAMの全てのアドレスに関して、これらのアドレスの下で記憶されているビットシーケンスを読み出すことを企図し、ここで、ビットシーケンスは、誤りがない場合には、誤り訂正符号Ccorのビットシーケンスである。
符号Ccorによって訂正することができる誤りが検出された場合、ビットシーケンスを訂正し、訂正されたビットシーケンスを対応するアドレスの下で書き戻すことができる。
例えば、そのような処置では、MRAMの全てのアドレスをアドレス指定して読み出し、誤りを検査することができる。これは、例えば、ビットシーケンスの比較的小さい部分のみ、すなわち誤りがあり訂正されたビットシーケンスのみが書き戻されるにも関わらず、大きな時間的コストを要することがある。また、大きな電力コストも必要である。大きな時間的コストおよび電力コストは欠点である。
上記の処置では、メモリセルの読出しに関する時間的距離または頻度が、時点tで記憶されている正しい値が時点t+Δtで誤りを有する確率が最も高いメモリセルに適合されることが特に欠点である。
いくつかの例示的実施形態によれば、ビットシーケンスは、誤りのあるビットシーケンスをより高い推定確率でもたらすアドレスの下で、誤りのあるビットシーケンスをより低い推定確率でもたらすアドレスよりも頻繁に読み出され、ここで、記憶されているビットシーケンスは、誤りがない場合には、誤り訂正符号の符号語のビットである。
読み出されたビットシーケンス中の検出された誤りが、使用される誤り訂正符号によって訂正可能である場合、誤りを訂正することができ、訂正されたビットシーケンスを書き戻すことができ、ここで、訂正されたビットシーケンスの書戻しは、誤りのあるビットシーケンスが読み出されたのと同じアドレスの下で、あるいはまた別のアドレスの下で行うことができる。例えば、誤りのあるビットシーケンスをより高い確率で記憶しているアドレスは、誤りのあるビットシーケンスをより低い確率で記憶しているアドレスよりも頻繁に読み出される。誤りのあるビットシーケンスをより低い確率で記憶しているアドレスは、それほど頻繁には読み出されない。追加として、同時に、例えばMRAMに関して、誤りのあるビットシーケンスとして読み出されて訂正されたビットシーケンスのみを書き戻すことができる。それにより、時間的コストならびに電力コスト、例えば書込み電流および読出し電流が小さくなり、これは有利である。
誤りのあるビットシーケンスをより高い確率で記憶しているアドレスの相対数も、読み出されたビットシーケンスが誤りを有する確率も、小さくすることができる。ここで、上記のように、1つのアドレスの下で記憶されるビットシーケンスは、誤りがない場合には、例えば誤り訂正符号のビットである。
ここで、対象のメモリのアドレスは、アドレスの第1のグループα1と、アドレスの第2のグループα2とに分けることができ、それにより、アドレスa1,i∈α1の下で時点tに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率は、アドレスa2,j∈α2の下で時点tに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率よりも高い。また、メモリのアドレスは、Q(Q>2)個のグループα1、…、αQに分けることもでき、それにより、アドレスak,j∈αkの下で時点tに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率は、アドレスar,j∈αr(r>kかつ1≦k<r≦Q)の下で時点tに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率よりも高い。このとき、いくつかの例示的実施形態によれば、グループαkのアドレスの下で、グループαrのアドレスの下よりも頻繁にビットシーケンスを読み出して、誤りが訂正可能である場合には書き戻すことができる。
誤り訂正符号Ccorとして、tビット誤り訂正符号を使用することができ、ここで、t≧1である。いくつかの例示的実施形態は、符号が、(t+1)ビット誤り検出符号でもあることを企図する。
t≧2の場合、2ビット誤りが存在するときには、アドレスの下で読み出されたビットシーケンスを訂正し、訂正された状態で書き戻し、1ビット誤りが存在するとき、または誤りがないときには書き戻さないことも可能である。
t>2の場合、少なくとも1つのτビット誤り(すなわち、σ(σ>τ)個の誤り)が存在するときには、アドレスの下で読み出されたビットシーケンスを訂正し、訂正された状態で書き戻し、せいぜい1つのτ−1ビット誤りしか存在しないときには書き戻さないことも可能であり、ここで、例えば、τ<tが成り立つ。
符号Ccorが、例えば2ビット誤り訂正および3ビット誤り検出BCH符号である場合、1ビット誤りの際には、アドレスaの下で読み出された誤りのあるビットシーケンスを、訂正されたビットシーケンスとして書き戻さないことも可能であり、それにより、1ビット誤りを有する誤りのあるビットシーケンスがアドレスaの下で引き続き記憶される。いくつかの例示的実施形態は、2ビット誤りの場合、アドレスaの下で読み出された誤りのあるビットシーケンスを、訂正されたビットシーケンスとして書き戻すことを企図し、それにより、読出しおよび書戻し後、訂正されたビットシーケンスがアドレスaの下で記憶される。
ここで、記憶されているビットシーケンスが1ビット誤りを有することがあり得るが、これらの1ビット誤りは、読み出したデータを使用する目的での読出し時に、2ビット誤り訂正符号Ccorを用いて確実に訂正される。ビットシーケンス中にさらなる誤りが生じているときでさえ、2ビット誤り訂正符号が依然として正しく訂正する。
例えば、2ビット誤りは、記憶されているビットシーケンスで比較的低い頻度で(1ビット誤りよりも低い確率で)しか出現しない。読み出され、誤り訂正符号Ccorを使用して訂正されたビットシーケンスの正確さを本質的に低下させることなく、訂正されたビットシーケンスの書戻しの範囲を小さくすることができる。例えば、非常に珍しい3ビット誤りでさえ、訂正可能でない誤りとなお認識される。
t≧2でのtビット誤り訂正符号が使用される場合、記憶されているデータを訂正する目的でより頻繁に読み出されるアドレスの集合α1を、t個よりも少ない誤りしか訂正することができない符号が使用されるときよりも小さく選択することが可能であり、これは利点となり得る。
例えば、t=2の場合、既に述べたように、2ビット誤りが出現したときにビットシーケンスを訂正して書き戻し、1ビット誤りが出現したときには書き戻さないことが可能である。メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも2つのメモリセルが、アドレスaによってアドレス指定されるメモリセルに属するとき、アドレスaを集合α1に割り当てることができる。そのような確率は、例えば、必要な書込み電流または必要な読出し電流に基づいて推定することができる。より頻繁に読み出されるべきアドレスの集合α1は比較的小さくすることができる。なぜなら、例えば、より高い確率で誤りを有し、かつ同じアドレスによってアドレス指定される2つのメモリセルが出現するのは比較的珍しいからである。
また、代替として、メモリ構成が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高いメモリセルが、アドレスaによってアドレス指定されるメモリセル1に属するとき、アドレスaを集合α1に割り当てることもできる。ここで、より頻繁に読み出されるアドレスの集合α1は大きくすることができる。しかし、メモリセル内に誤りが蓄積する確率は、それに対応してより低くすることができる。
使用される符号がtビット誤り訂正符号である場合、集合α1は、以下のように決定することができる。
1.例えばt=1の場合、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも1つのメモリセルがアドレスaによってアドレス指定されるとき、アドレスaを集合α1に割り当てることができる。
2.例えばt=2の場合、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも2つのメモリセルがアドレスaによってアドレス指定されるとき、アドレスaを集合α1に割り当てることができる。
例えばt=2の場合、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも1つのメモリセルがアドレスaによってアドレス指定されるとき、アドレスaを集合α1に割り当てることができる。
例えばt=3の場合、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも3つのメモリセルがアドレスaによってアドレス指定されるとき、アドレスaを集合α1に割り当てることができる。
例えばt=3の場合、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも2つのメモリセルがアドレスaによってアドレス指定されるとき、アドレスaを集合α1に割り当てることができる。
例えばt=3の場合、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも1つのメモリセルがアドレスaによってアドレス指定されるとき、アドレスaを集合α1に割り当てることができる。
符号は、tに関してより大きな値を有することができる。例えば、メモリセル値が時点tで正しかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくともτ個のメモリセルがアドレスaによってアドレス指定されるとき、アドレスを集合α1に属させる、または集合α1に割り当てることができ、ここで、τ≦tが成り立つ。τに依存して、様々な変形形態が生じる。
メモリ内に集合αperが存在することもあり得て、ここで、これらのアドレスの下でアドレス指定されるメモリセルは、永久的な誤りを有する。
いくつかの例示的実施形態によれば、これらのアドレスに関して修復メカニズムが提供される。いくつかの例示的実施形態は、永久的な誤りを有するσ個よりも多いメモリセルがアドレスによってアドレス指定されるときに、修復メカニズムを提供することが企図される。ここで、σ≦tが成り立つ。
しかし、いくつかの例示的実施形態によれば、そのようなアドレスの下で記憶すべきビットシーケンスに関して反転されたビットシーケンス、または所定のビットグループにおいて反転されたビットシーケンスを記憶することも可能である。したがって、例えば、メモリセルに永久的な誤り(0縮退;stuck−at−0)が存在し、対応する位置に記憶すべきビットシーケンス中に値1が存在するときに、ビットシーケンスを反転させることが可能である。記憶すべきビットシーケンスが反転される場合、対応する位置に1つの「0」があり、これは、0縮退を有するメモリセルに、誤りなしで記憶することができる。
アドレス指定可能なメモリは、アドレスの第3の部分集合αperによってアドレス指定可能なメモリセルを有することができ、ここで、メモリ制御装置は、記憶すべきビットシーケンスを、ビット毎に反転して、アドレスの第3の部分集合、例えば部分集合36によってアドレス指定されるメモリセルに記憶するように構成される。アドレスの第3の部分集合の1つのアドレスによって、算出確率pperで、永久的な誤りを有する少なくとも1つのメモリセルをアドレス指定可能である。ここで、pper≧SWperが成り立っていてよく、SWperは、0<SWper≦1での閾値である。
いくつかの例示的実施形態によれば、修復メカニズムは、記憶すべきビットシーケンスの反転と組み合わせることができる。例えば、永久的な誤りを有する複数のメモリセルがアドレス指定されるときに修復を提供することができ、誤りが残っている場合、記憶すべきビットシーケンスを反転することができる。ビットシーケンスの反転は、例えば誤りのあるメモリセルに関して一部行うことができる。代替として、ビットシーケンス全体に関して反転を実施することができる。
いくつかの例示的実施形態によれば、訂正可能でない誤りがアドレスの下で検出されたときに修復メカニズムが提供される。
図9は、符号語44’aまたは44’b、アドレスビットa0〜a2、チェックビットc0〜c4、およびデータビットu0〜u6を含んでいる、または記憶しているアドレス指定可能なメモリ12の概略図を示す。図8に示されるチェックビットまたはデータビットと比較して、例えば、第1のアドレスa1,1によってアドレス指定されるメモリセル14−2は、別の値(ビット誤り)を有する。
すなわち、図9は、誤り訂正符号の符号語の形成の際にアドレスが考慮に入れられるアドレス指定可能なメモリ、すなわち、符号語を形成するためにアドレスビットが使用されたアドレス指定可能なメモリの例示的実施形態を示す。
図9に示される例示的実施形態では、l=3、m=5、およびk=7が選択される。8個のアドレス
、5個のチェックビット
、および7個のデータビット
が存在する。例えば、i=0、…、6に関して、ビット
は、誤りがない場合には、H行列H
2によって記述することができる誤り訂正/誤り検出符号C
2の符号語を形成し、したがって、i=0、…、8に関して、
が成り立つ。
H行列H2の第1〜第15の列は、例えば、ビットc0、…、c4、u0、…、u6、a0、a1、a2に対応し、したがって、チェックビットc0、…、c4は、
c0=u0+u1+u2+u3+u4+u5
c1=u0+u1+u2+u6+a0+a1
c2=u0+u3+u4+u6+a0+a2
c3=u1+u3+u5+u6+a1+a2
c4=u2+u4+u5+a0+a1+a2
によって決定される。例えば、H行列H2の全ての列が、奇数個の「1」を有し、1対において異なる。ビットc0、…、c4、u0、…、u6での全ての12個の異なる1ビット誤りが、12個の異なる誤りシンドロームを生じ、これらは、H行列H2の最初の12列に対応する。H行列のこれらの列の1つに等しい誤りシンドロームが出現するとき、この列に対応する誤りが訂正される。また、アドレスビットa0、a1、a2での全ての1ビット誤りが、異なる誤りシンドロームをもたらし、これは、H行列H2の最後の3列に等しい。H行列の最後の3列の1つに等しい誤りシンドロームが出現する場合、誤りは訂正されず、アドレス誤りが示される。なぜなら、アドレスビットでの誤りは好適に訂正することができないからである。誤りのあるアドレスは、誤りのあるメモリアクセスを引き起こし、これは、正しいメモリアクセスによって置き換えられるときにしか訂正することができない。
a0’=a0+1でのアドレスビットa内の1ビット誤りに、誤りシンドローム(01101)Tが対応し、これは、行列H2の第13の列に等しい。
a1’=a1+1でのアドレスビットa1内の1ビット誤りに、誤りシンドローム(01011)Tが対応し、これは、行列H2の第14の列に等しい。a2’=a2+1でのアドレスビットa2内の1ビット誤りに、誤りシンドローム(00111)Tが対応し、これは、行列H2の第15の列に等しい。これらの誤りシンドロームは、チェックビットまたはデータビットでの1ビット誤りの全ての誤りシンドロームと異なり、したがって、アドレスビットでの1ビット誤りは、そのシンドロームに基づいて、チェックビットまたはデータビットでの全ての1ビット誤りと異なり、アドレス誤りとして認識することができる。
アドレスビット内の2ビット誤りは、偶数個の「1」を有する0でない誤りシンドロームをもたらすことがある。そのような誤りは、訂正可能でない誤りと認識することができる。アドレスa1,1=010の下で、例えばビットシーケンス111011010010が記憶されており、これ自体は、符号C2の符号語でないが、アドレスビット010によって補完されて、符号C2の符号語111011010010010を形成する。アドレスa2,1=101の下で、ビットシーケンス011111101100が記憶されており、これ自体は、符号C2の符号語でないが、アドレスビット101によって補完されて、符号C2の符号語011111101100101を形成する。ここで、有利には、誤り検出においてアドレスが考慮に入れられ、アドレス誤りを検出することができるにも関わらず、メモリを拡大する必要がない。別の例示的実施形態は、符号語の形成において、アドレスビットではなく、アドレスビットから導出されるビットを使用することを企図する。
したがって、例示的実施形態は、アドレスビットP(a)のパリティを形成し、誤り訂正符号のチェックビットを形成するためにアドレスのパリティを使用することを企図する。
同様に、例示的実施形態によれば、アドレスビットの別の線形関数または非線形関数f(a)を使用することが可能であり、読出し時の読出しアドレスおよび書込み時の書込みアドレスのアドレスビットa=a1、…、a1から導出されるビットまたは修正されたアドレスビットを形成し、これらの導出または修正されたアドレスビットを、誤り検出/誤り訂正符号のチェックビットを決定するために使用することが可能である。
図10は、誤り検出/誤り訂正符号の符号語を形成するためにアドレスビットのパリティが使用されるアドレス指定可能なメモリ12の例示的実施形態を概略的に示す。
図8および図9と同様に、例えば、l=3、m=5、およびk=7が選択されている。別の例示的実施形態によれば、値は、様々でよく、訂正可能な誤りの数に関係していてよい。
8個のアドレスa
0=[0,0,0]、…、a
7=[1,1,1]、5個のチェックビット
、および7個のデータビット
が存在し、これらは、それぞれ、アドレスa
i(i=0,…,7)の下で記憶されている。書込みまたは読出しアドレスaのアドレスビットのパリティP(a)は、P(a)=a
0+a
1+a
2によって決定される。
誤りがない場合には、誤り検出/誤り訂正符号C
3の符号語は、そのH行列H
3によって与えられる。H行列H
3は、この例示的実施形態では、
である。
H行列H3の第1〜第13の列は、ビットc0、…、c4、u0、…、u6、P(a)に対応し、したがって、チェックビットc0、…、c4は、
c0=u0+u1+u2+u3+u4+u5
c1=u0+u1+u2+u6+P(a)
c2=u0+u3+u4+u6+P(a)
c3=u1+u3+u5+u6
c4=u2+u4+u5+P(a)
によって決定される。アドレスa1,1=010の下で、例えばビットシーケンス110111010010が記憶されており、これは、P(010)=0+1+0=1を補完されて、符号C3の符号語1101110100101を形成する。アドレスa2,1=101の下で、ビットシーケンス001011101100が記憶されており、これは、P(101)=1+0+1=0を補完されて、符号C3の符号語0010111011000を形成することができる。
図11は、例示的実施形態による32個のアドレスa0、a1、…、a31を有するアドレス指定可能なメモリを示し、それらのアドレスの下で、誤りがない場合には、誤り訂正符号C4の符号語w0、w1、…、w31がメモリセルに記憶されている。
例えば、アドレスa1、a11、a13、a20、a30が、集合α1={a1,a11,a13,a20,a30}を形成する。アドレスの集合α2は、例えば、α2={a0,a2,a3,a4,a5,a6,a7,a8,a9,a10,a12,a14,a15,a16,a17,a18,a19,a21,a22,a23,a24,a25,a26,a27,a28,a29,a31}である。さらなる例示的実施形態によれば、集合α2={a0,…,a31}でよい。
集合α1のアドレスは、このアドレスの下で記憶されているビットシーケンスが時点tで誤りがなかったときに時点t+Δtで誤りを有する推定確率が、集合α2のアドレスの下で記憶されているビットシーケンスが時点tで誤りがなかったときに時点t+Δtで誤りを有する推定確率よりも高いアドレスである。
図12は、3ビットアドレスb0、b1、b2の下で集合α1のアドレスが記憶されているメモリの構成を示す。アドレス0=[0,0,0]、1=[0,0,1]、2=[0,1,0]、3=[0,1,1]、4=[1,0,1]の下で、集合α2のアドレスa1=00001、a11=01011、a13=01101、a20=10100、およびa30=11110と、妥当性ビットg=1とが記憶されている。アドレス5、6、7、…の下で、任意の値および妥当性ビットg=0が記憶されている。ここで、メモリは、揮発性メモリ、例えばS−RAMでよく、上記の情報は、例えばスタートアップ時に、測定された必要な書込み電流または書込み期間に基づいて図11のMRAMのメモリセルに書き込まれる。
しかし、集合α1のアドレスは、不揮発性メモリに記憶することもできる。例えば、アドレスは、MRAMのメモリ領域、例えばペイロードが記憶されているのと同じMRAMのメモリ領域、あるいはまた別のMRAMに記憶することもできる。ビットb1、b2、b3は、例えばパリティ情報に基づいて、アドレスビットから導出された情報を含むことができる。
いくつかの例示的実施形態によれば、アドレスが三重または五重に重複して置かれ、ボータ(決定器)によって読み出されることにより、集合α1のアドレスが冗長に記憶されていることも可能である。それにより、記憶されている集合α1のアドレスの1つでの1ビットまたは2ビット誤りは許容され、影響を及ぼすことはない。
別の例示的実施形態は、例えば記憶されている集合α1のアドレスを、誤り訂正符号、例えばHsiao符号またはBCH符号(Bose−Chaudhuri−Hocquenghem)によって保護することを企図する。また、この符号は、ペイロードビットの符号化、またはアドレスビットもしくはアドレスビットから導出されるビットを考慮に入れたペイロードビットの符号化のために使用されるのと同じ符号でよい。
例えば図11に関連して述べるように、メモリに記憶されているデータの信頼性を高めるために、いくつかの例示的実施形態によれば、以下のことを行うことができる。
時点T1で、アドレス0、…、4がメモリに入力され、メモリに記憶されている集合α1のアドレスa1、a11、a13、a20、a30が、このメモリから読み出されて、アドレスとして図11のメモリに入力され、それにより、図11のメモリから、場合によっては誤りのあるビットシーケンスw1、w11、w13、w20、w30が読み出される。これらのビットシーケンスw1、w11、w13、w20、w30の1つが、符号C4によって検出および訂正することができる少なくとも1つのτビット誤り(すなわち、σ(σ>τ)個の誤り)を有するとき、対応する訂正されたビットシーケンスが、同じアドレスの下で図11のメモリに書き戻される。
例えば、アドレスa13の下で読み出されるビットシーケンスw20が誤りを有さない、またはせいぜい1つのτ−1ビット誤りしか有さない場合、ビットシーケンスw20は、図11のメモリに書き戻されない。例えば、アドレスa13の下で読み出されるビットシーケンスw13が誤りを有しており、少なくとも1つのτビット誤りを有し、また、ビットシーケンスw13が、符号C4を使用して誤りを有するものと認識されて、wcorに訂正される場合、訂正されたビットシーケンスwcorは、アドレスa13の下で図11のメモリに書き戻される。
ここで、C4がt≧1でのtビット誤り訂正符号であるとき、値(閾値)τは、値1、2、…、tの1つとして選択することができる。この処置を、時点T1+δ1、T1+2・δ1、T1+3・δ1、…で繰り返すことができる。
例えば、例示的実施形態において符号C4が2ビット誤り訂正符号である場合、τ=1または2が成り立つことがある。例えば、アドレスa11の下で1ビット誤りが存在する場合、このアドレスの下で読み出される誤りのあるバイナリシーケンスw11は、訂正して書き戻されないことが可能であり得る。例えば、アドレスa20の下で2ビット誤りが存在する場合、このアドレスの下で読み出される誤りのあるバイナリシーケンスw20をwcorに訂正して書き戻すことができる。
時点T2+δ2、T2+2・δ2、T2+3・δ2、…で、集合α2のアドレスの下で記憶されているビットシーケンスを読み出し、場合によっては、読み出されたビットシーケンスの1つに検出可能および訂正可能なτビット誤りが存在するときには訂正することができる。ここで、例えば、δ2>δ1である。
当然、時点T2+δ2、T2+2・δ2、T2+3・δ2、…で、図11のメモリ内の全てのビットシーケンスが読み出されて、誤りがある場合には書き戻されることも可能である。
いくつかの例示的実施形態によれば、以下のことも可能である:アドレスを3つ以上の部分集合α1、α2、α3、…に分割し、部分集合α1のアドレスの下で読み出されたビットシーケンスを時点T1+δ1、T1+2・δ1、T1+3・δ1、…で読み出し、誤りがある場合には書き戻し、部分集合α2のアドレスの下で読み出されたビットシーケンスを時点T2+δ2、T2+2・δ2、T2+3・δ2、…で読み出し、誤りがある場合には書き戻し、部分集合α3のアドレスの下で読み出されたビットシーケンスを時点T3+δ3、T3+2・δ3、T3+3・δ3、…で読み出し、誤りがある場合には訂正し、以下同様である。ここで、δ1>δ2>δ3が成り立つ。ここでも、読出しおよび場合により行われる書戻しは、それぞれ、同じ時間的距離で行われる必要はない。より良く理解できるように、ここでは、同じ距離δ1を使用する。
t≧2でのtビット誤り訂正符号の使用は、意外にも、頻繁に読み出され、誤りがある場合には訂正されて書き戻されるべきアドレスの集合α1を、1ビット誤り訂正符号が使用されるときよりもかなり小さく選択することを可能にする。1つのメモリセルが時点tで誤りがなかったときに時点t+Δtで誤りを有する確率がpである場合、N個のメモリセルのうちの2つのメモリセルが同時に、時点tで誤りがなかったときに時点t+Δtで誤りを有する確率は、二項分布に従って、
であり、ここで、メモリセルが、互いに独立して誤りを有すると仮定することができる。ここで、N=k+mであり、ここで、kは、ペイロードビットの数であり、mは、対象の符号のチェックビットの数である。
2ビット誤り訂正符号Ccorの場合、例えば、時点tで誤りがなかったときに時点t+Δtで誤りを有する推定確率が比較的高い2つのメモリセルをアドレス指定するアドレスのみを集合α1に割り当てることができる。これは、例えば図6に関連して述べたような、特定の閾値を超える書込み電流を有するメモリセルでよい。
より頻繁に読み出され、誤りがある場合には訂正されて書き戻されるアドレスの集合α1は、時点tで誤りがなかったときに時点t+Δtで誤りを有する推定確率が比較的高い少なくとも1つのメモリセルをアドレス指定するアドレスの集合が選択される場合における、より頻繁に読み出され、誤りがある場合には訂正されて書き戻されるアドレスの集合α1よりも小さくすることができる。これは、必要な時間的コストおよび電力コストを減少させることができるので有利であり得る。
アドレス000、001、010、011、および100に関して、第1の部分信頼性情報22’が存在することがある。アドレス101に関して、例えば、第2の信頼性情報または部分信頼性情報22’’が存在することがある。信頼性情報22は、部分信頼性情報22’および22’’を含むことができる。例えば、アドレスの第3の部分集合α3に割り当てることができるアドレスa3,1(101)は、アドレス0〜4と同様により低い頻度で、かつアドレス6または7よりも高い確率で読み出すことができる。
代替または追加として、アドレスはまた、アドレスのどの部分集合にも割り当てなくてもよく、または3つ以上の部分集合に割り当ててもよい。
すなわち、図12は、別のアドレスよりも高い確率で誤りを有するメモリセルをアドレス指定するアドレスを記憶するためのメモリを示す。
図13は、アドレス指定可能なメモリ12に符号化されたデータを記憶するための回路構成の概略ブロック図、またはメモリデバイス130のブロック図を示す。符号化すべきペイロード52(符号uによって表される)は、符号器(メモリ制御装置)56の入力部54に入ることができる。アドレス指定可能なメモリのデータ入力部62と接続されている符号器56のデータ出力部58で、符号化されたデータw=c,u(すなわち、ビットシーケンスwはビットcとビットuを含む)を出力し、アドレス指定可能なメモリ12のアドレス入力部64に入るアドレスaの下で記憶することができる。例えば、符号化されたデータw=c,uは、誤り訂正符号Ccorの符号語42でよい。代替として、符号語42’、44または42’でよい。
すなわち、図13は、前置符号器を有するメモリを示す。
図14は、符号化されたデータをアドレス指定可能なメモリ12に記憶するための回路構成(メモリデバイス)140の概略ブロック図を示す。符号器(メモリ制御装置)56’は、符号化すべきデータ52を入力部54で受け取るように構成することができる。符号器は、さらなる入力部66で、書込みアドレスaのアドレスビットを受け取るように構成される。アドレス指定可能なメモリ12のデータ入力部62と結合されている符号器56’のデータ出力部58で、チェックビットcおよびペイロードビットuを出力し、アドレス入力部66に入るアドレスaの下でアドレス指定可能なメモリ12に記憶することができる。ビットc、u、aは、誤り訂正符号Ccorの符号語wを形成することができる。図13と比較して、例えば、アドレス指定可能なメモリ12に、誤り検出/誤り訂正符号の符号語は記憶されない。アドレスaの下で記憶されているビットは、誤りがない場合には、アドレス指定可能なメモリ12のアドレス入力部64に入るアドレスaと共に、符号Ccorの符号語を形成する。
これは、メモリデバイス140が、ビットシーケンスをアドレス指定可能なメモリ12に記憶するように構成されることを意味し、ここで、ビットシーケンスは、誤り訂正符号の符号語の一部である。対照的に、メモリデバイス140のメモリ制御装置56は、誤り訂正符号の符号語を形成するビットシーケンスを記憶するように構成することができる。
すなわち、図14は、前置符号器を備えるメモリを示し、ここでは、符号語を形成するためにアドレスビットが使用される。
図15は、符号化されたペイロードをアドレス指定可能なメモリ12に記憶するためのメモリデバイス150の概略ブロック図を示す。符号化すべきペイロードuまたは52は、符号器56’の第1の入力部54に入ることができ、第2の入力部66には、書込みアドレスaの修正されたアドレスビットA(A=f(a))が入る。fは、例えば、アドレスビットaの一意の関数でよい。
例えば、A=f(a)=f(a0,…,al−1)=a0+a1+…+al−1が成り立ってよく、それにより、この場合、修正されたアドレスビット、すなわちアドレスビットから導出されるビットは、アドレスビットのパリティである1つのビットからなる。代替として、一意の関数は、別の一意の関数でもよく、例えばアドレスの「0」の数のバイナリ値である。アドレス指定可能なメモリ12のデータ入力部62と接続されている符号器56’のデータ出力部58で、チェックビットcおよびペイロードビットuを出力して、アドレス入力部に入るアドレスaの下でアドレス指定可能なメモリ12に記憶することができる。ビットc、u、およびAは、誤り訂正符号Ccorの符号語を形成することができる。ビットcおよびuは、誤り訂正符号Ccorのビットc、u、Aを含む符号語のビットでよい。符号器56および/または56’は、例えば、メモリ制御装置18でよい。
すなわち、図15は、前置符号器を備えるメモリを示し、ここでは、例えば、符号語を形成するためにアドレスビットからのパリティビットを使用することができる。
図16は、アドレス指定可能なメモリ12と、メモリ制御装置18とを含むメモリデバイス160の概略ブロック図を示す。メモリ制御装置18は、例えば、以下のものを含むことができる。シンドローム発生器84、誤り検出器86、誤り訂正器88、XOR回路92、ANDゲート94、ANDゲート96、第1のアドレス発生器Ad1 98、アドレスメモリ102、第2のアドレス発生器Ad2 104、およびマルチプレクサ106。別のメモリデバイスは、別の構成要素を有することができる。これは、メモリデバイスが、第1のアドレスa1,1のビットを含むアドレスビットシーケンスを記憶するためのアドレス値メモリ102を有することができることを意味する。第1のアドレスのビットは、アドレス値メモリに冗長に記憶することができ、それにより、アドレスa1,1の冗長に記憶されたアドレスビットにおいて少なくとも1つの誤りが検出可能および/または訂正可能である。
すなわち、アドレス指定可能なメモリ12に、アドレスa0、a1…、amaxの下で、ビットシーケンスc0、u0;c1、u1;…;cmax,umaxが記憶可能であり得て、それにより、c0、u0、a0;c1、u1、a1;…;cmax、umax、amaxは、誤りがない場合には、誤り訂正符号Ccorの符号語である。図示される回路構成は、メモリセルの誤りを訂正するために使用可能であり得る。
例示的実施形態によれば、デバイスの例示的な機能は、以下のように述べることができる。第1の時点tで、例えば、ビットシーケンスは、集合α1からのアドレスの下で記憶されているビットシーケンスがメモリ12から読み出され、訂正可能な誤りが出現したときには書き戻される。時点tと同様に、例えば、時点t+δ1、t+2・δ1、t+3・δ1、…で、集合α1からのアドレスの下で記憶されているビットシーケンスがメモリ12から読み出される。訂正可能な誤りが出現したとき、訂正されたビットシーケンスが書き戻される。集合α1からのアドレスの下で記憶されているビットシーケンスの誤り訂正のための読出しは、時間的距離δ1で行われる。読み出されたビットシーケンスは、訂正可能な誤りが出現したときに訂正され、例えばそれらが読み出されたアドレスの下に書き戻される。
例えば、第1のアドレス指定可能なメモリまたはアドレスメモリ102に、集合α1からのアドレスが連続的に記憶されている。第1のアドレス発生器Ad1 98は、ここでは、カウンタとして構成される。その出力部は、アドレスメモリ102のアドレス入力部と接続されている。カウンタとして構成されたアドレス発生器によって、アドレスメモリ用のアドレスとして値0、1、2が出力される場合、アドレスメモリ102から、アドレスa1,1、a1,2、a1,3、…が出力される。マルチプレクサ106の制御信号stの値が0である場合、マルチプレクサ106は、その「0」入力部をその出力部と接続する。メモリ12のアドレス入力部には、アドレスa’としてアドレスa1,1、a1,2、a1,3、…が入る。メモリ12は、そのデータ出力部で、アドレスa’の下で記憶されている、場合によっては誤りのあるビットシーケンスc’,u’を出力する。ビットシーケンスc’,u’は、正しいビットシーケンスc,uから、場合により存在する誤りによって生じたものである。
場合によっては誤りのあるビットシーケンスc’,u’は、シンドローム発生器84の第1の入力部に入り、一方、場合によっては誤りのあるアドレスa’は、シンドローム発生器84の第2の入力部に入り、シンドローム発生器84は、その出力部で誤りシンドロームsを出力する。同時に、場合によっては誤りのあるビットシーケンスc’,u’は、成分毎のXOR演算のためのXOR回路92の第1の入力部に入る。誤りシンドロームsを送出するシンドローム発生器84の出力部は、誤り検出器または誤り検出器86の入力部と接続されており、同時に、誤り訂正器88の入力部と接続されており、誤り訂正器88は、その出力部で、場合によっては誤りのあるバイナリシーケンスc’,u’のビットをビット毎に訂正するために訂正ベクトルeを出力する。誤り訂正器88の出力部は、XOR回路92の第2の入力部に通じており、XOR回路92は、c’,u’とeの対応するビットのビット毎のXOR演算を実現し、その出力部で、訂正された値(c,u)corを出力する。
XOR回路92の出力部は、メモリ12のデータ入力部に通じている。誤り検出器86が、1ビット幅の誤り信号Eを生成し、誤り信号Eは、1≦τ≦tでの少なくとも1つのτビット誤りが存在するときには1であり、ここで、誤りのあるバイナリシーケンスc’,u’が訂正および書き戻され、Ccorはtビット訂正符号である。
誤り信号Eを送出する誤り検出器86の出力部は、ANDゲート96の第1の入力部と接続されており、また否定演算素子を介してANDゲート94と接続されており、それらのそれぞれの第1の入力部に、バイナリ読出し/書込み信号r/wが入る。誤り検出器86の出力部は、同時に、アドレス発生器Ad1 98およびアドレス発生器Ad2 104の1ビット幅の入力部と接続されている。
信号r/w=1である場合、E=0のときはread=1であり、E=1のときはread=0である。アドレス発生器Ad1 98は、アドレスメモリ102をアドレス指定し、アドレスメモリ102は、アドレス発生器Ad1 98によって発生されたアドレスのそれぞれの入力時に集合α1からのアドレスaを出力し、そのアドレスが、マルチプレクサ106を介してメモリ12のアドレス入力部に入る。読出し信号read=1の場合、メモリ12は、アドレスaの下で記憶されているビットシーケンスc,uを出力する。シンドローム発生器84は、場合によっては誤りのあるアドレスビットaと場合によっては誤りのあるビットシーケンスc,uとから誤りシンドロームsを形成し、そこから、誤り検出器86は誤り信号Eを決定し、誤り訂正器88は訂正ベクトルeを決定する。アドレス発生器Ad1 88は、E=0であるときに次のアドレスを出力するように構成される。E=0の場合、書込み信号write=0であり、読出し信号read=1である。マルチプレクサの制御信号stは、引き続きst=0であり、したがって、ここで、アドレスメモリ102によって出力される集合α1からのさらなるアドレスが、メモリ12のアドレス入力部に入る。
誤り信号E=1の場合、書込み信号write=1である。アドレス発生器Ad1 98は、E=1である限り新たなアドレスを出力しないように構成され、したがって、それまでのアドレスaが引き続きメモリ12のアドレス入力部に入り、訂正されたビットシーケンスcucorがアドレスaの下でメモリ12に書き込まれ、それにより、符号Ccorによって誤りを訂正することができ、かつアドレスが誤りを有さないときには、そのアドレスの下で記憶されている誤りのあるビットシーケンスが訂正されて書き戻される。
ここで、書戻しは、集合α1からのアドレスの下で記憶されているビットシーケンスが誤りを有し、符号Ccorによって訂正することができるときに行われる。アドレス誤りは、訂正可能でない誤りとして認識される。
マルチプレクサ106の制御信号stが、st=1の場合、マルチプレクサ106は、その「1」入力部をその出力部と接続し、アドレス発生器Ad2 104から発生されたアドレスが、メモリ12のアドレス入力部に入る。制御信号stは、時点T、T+δ2、T+2δ2、T+3δ2、…でst=1に選択される。より大きい時間的距離で読み出され、誤りがある場合には訂正されて書き戻される全てのアドレスをアドレス発生器Ad2 104が発生するまで、制御信号stは各場合にこの値に保たれる。いくつかの例示的実施形態は、アドレス発生器Ad2によってメモリ内の誤りのある値を訂正する目的で、メモリ12の全てのアドレスが時点T、T+δ2、T+2δ2、T+3δ2、…で読み出され、誤りがある場合には訂正されて書き戻されることを企図する。訂正すべき誤りが検出される場合、E=1および読取り信号readが、ANDゲート94の出力として値0を取り、書込み信号writeは、ANDゲート94の出力として値1を取り、それにより、訂正されたビットシーケンスc,ucorが、アドレスaの下でメモリ12に書き込まれる。また、誤り信号Eは、アドレス発生器Ad2の入力部にも送られており、ここで、アドレス発生器Ad2は、誤り信号E=1の入力時にはそれまでのアドレスを維持するように構成される。
アドレス発生器Ad1 98は、アドレスメモリ102をアドレス指定し、アドレスメモリ102は、アドレス発生器Ad1 98によって発生されたアドレスのそれぞれの入力時に、集合α1からのアドレスaを出力し、このアドレスaが、マルチプレクサ106を介してメモリ12のアドレス入力部に入る。読出し信号read=1の場合、メモリ12は、アドレスaのもとで記憶されているビットシーケンスc,uを出力する。シンドローム発生器84は、場合によっては誤りのあるアドレスビットaと場合によっては誤りのあるビットシーケンスc,uとから誤りシンドロームsを形成し、そこから、誤り検出器86は誤り信号Eを決定し、誤り訂正器88は訂正ベクトルeを決定する。アドレス発生器Ad1 98は、E=0であるときに次のアドレスを出力するように構成される。E=0の場合、書込み信号write=0であり、読出し信号read=1である。マルチプレクサの制御信号stは、引き続きst=0であり、したがって、ここで、アドレスメモリ102によって出力される集合α1からのさらなるアドレスが、メモリ12のアドレス入力部に入る。
誤り信号E=1の場合、書込み信号write=1である。アドレス発生器Ad1 98は、E=1である限り新たなアドレスを出力しないように構成され、したがって、それまでのアドレスaが引き続きメモリ12のアドレス入力部に入り、訂正されたビットシーケンスcucorがアドレスaの下でメモリ12に書き込まれ、それにより、符号Ccorによって誤りを訂正することができ、かつアドレスが誤りを有さないときには、そのアドレスの下で記憶されていた誤りのあるビットシーケンスが訂正されて書き戻される。
ここで、書戻しは、集合α1からのアドレスの下で記憶されているビットシーケンスが誤りを有し、符号Ccorによって訂正することができるときに行われる。アドレス誤りは、訂正可能でない誤りとして認識される。
時点T、T+δ2、T+2δ2、…で、制御信号stは、アドレス発生器Ad2によって発生されるアドレスがメモリ12から読み出されるまで、値st=1を取る。ここで、アドレス発生器Ad2 104は、メモリ12の全てのアドレスを順次に発生する、またはアドレス領域内のアドレスを出力することが可能である。
アドレス発生器104に関する次のアドレスの発生が誤り信号Eによって決定されるのと同様に、アドレス発生器810に関する次のアドレスの発生も誤り信号Eによって決定される。アドレス発生器Ad2 104によって発生されるアドレスの下で記憶されているデータの読出しおよび訂正は、アドレス発生器102によって出力されるアドレスの下で記憶されているデータの読出しおよび訂正と同様に行われる。
また、さらなる例示的実施形態によれば、別のアドレスよりも頻繁に読みだされ、誤りの場合には訂正されて書き戻されるアドレスの集合α1を動的に変更することも可能である。したがって、例えば、メモリセルの物理的パラメータの測定に基づいて、例えばメモリ制御装置が物理的パラメータを決定することによって、スタートアップ時に集合α1を決定することが可能である。ここで、集合α1のアドレスが、それぞれ、時点T1+δ1、T1+2・δ1、T1+3・δ1、…、T1+R・δ1から始めて読み出される場合、メモリ制御装置は、アドレスa1,i∈α1の下で記憶されているビットシーケンスがS回目の読出し時に誤りを有し、使用される誤り検出符号を使用して訂正することができる頻度を決定または推定することができる(方法1550参照)。S回目の読出しは、絶対数、ある期間内の数、または全体の読出しプロセスと比較した誤りのある読出しプロセスの(相対)数に関するものでよい。
また、例えば、メモリ制御装置によって、アドレスa1,i∈α1の下で記憶されているバイナリシーケンスがR回目の読出し時に誤りを有していたかどうかを判断することもできる。アドレスa1,iの下で異なるR個の時点に読み出されるバイナリシーケンスが常に誤りを有さない場合、集合α1からのアドレスa1,iを抹消して、集合α2に追加することができる。
例えば、アドレスメモリ102に記憶されている集合α1のアドレスにさらなるビットbwを追加することが可能であり、このビットbwは、初めは値0に設定されている。集合α1からのアドレスa1,kがアドレスメモリ102から読み出され、データメモリ12に入力される場合、データメモリ12は、アドレスa1,iの下で記憶されている場合によっては誤りのあるビットシーケンスc’,u’を出力する。出力されたビットシーケンスc’,u’が誤りを有し、誤り訂正符号を使用して訂正されて書き戻された場合、さらなるビットbwの値は、値0を有していたか1を有していたかに関係なく、値bw=1に設定される。出力されたビットシーケンスc’,u’が誤りを有さない場合、さらなるビットbwの値は維持される。アドレスa1,i∈α1の下でデータメモリ12に記憶されているビットシーケンスのR(R>0)回目の読出しを行い、場合によっては誤りのある読み出されたビットシーケンスを訂正してさらなるビット値bw=0を書き戻す場合、アドレスa1,iの下で記憶されているビットシーケンスは、R回の読出し時に常に誤りを有していなかった。ここで、このアドレスを集合α1から除外し、アドレスの別の集合、例えば集合α2に割り当てることが可能である。
メモリ制御装置は、t≧2でのtビット誤り訂正符号Ccorを使用するように構成することができる。これは、アドレスa2,jの下でのデータメモリ12へのメモリアクセス時にτビット誤りを有するビットシーケンスc’,u’が出力されるときに、アドレスa2,j∈α2を集合α1に割り当てることを可能にし、ここで、1≦τ≦tを選択することができる。例えば、t=2の場合、1ビット誤りの検出後にアドレスa2,jが集合α1に割り当てられることなく、1ビット誤りを訂正することができる。2ビット誤りが出現する場合、アドレスa2,jは、集合α2から除外し、集合α1に割り当てることができる。
頻繁に読み出されるべきアドレスの集合α1のみをアドレスメモリ102に記憶し、それほど頻繁に読み出す必要がないアドレスの集合α2をアドレスメモリに置かず、集合αからのアドレスが、記憶されている値の誤り訂正の目的で読み出されて誤り時に訂正されるときに、同時にまた集合α1からのアドレスを読み出して場合によっては訂正すれば十分であり得る。
部分集合α1とα2は、互いに素でも、互いに素でなくてもよい。アドレスaが集合α1にもα2にも属する場合、そのアドレスaは、集合α1からのアドレスが読み出される場合にも、集合α2からのアドレスが読み出される場合にも読み出される。しかし、頻繁に読み出されるべきアドレスが集合α1に属することが重要となり得る。
アドレスの集合の動的変化の上記の例は、生じ得るアドレスの集合の動的変化のいくつかの例である。
図17は、部分集合へのアドレスの割当てに影響を及ぼすためまたは割当てを変えるために例えばメモリ制御装置によって実施可能である方法1700および方法1750の概略流れ図を示す。ステップ1710で、メモリ制御装置は、第2の部分集合の1つのアドレスを読み出し、記憶されているビットシーケンスの読出し時に、所定のσ(1≦σ≦t)に関して、読み出されたビットシーケンスでのσ個の誤りをメモリ制御装置が検出したときに、そのアドレスを第1の部分集合のアドレスに割り当てるように構成することができる。符号は、t≧1でのtビット誤り検出および/または誤り訂正符号でよい。
ステップ1720で、メモリ制御装置は、読み出されたビットシーケンス中で誤りが検出されるときに、読み出されたアドレスをアドレスの第1の部分集合α1に割り当てることができる。例えば、メモリ制御装置は、読み出されたビットシーケンス中の第1の誤りを訂正するように構成することができる。メモリ制御装置は、あるアドレスの下で読み出されるビットシーケンスが部分集合α1に割り当てられておらず、このアドレスの下で記憶されているビットシーケンスのS’(1<S’)回目の読出し時に誤りが生じたとき、そのアドレスをアドレスの第1の部分集合α1に追加するように構成することができる。これは、繰り返し誤りを有するビットシーケンスを、メモリ制御装置によって、アドレスの第1の部分集合に追加することができることを意味する。
方法1750によって、メモリ制御装置は、例えば、ステップ1760でこのアドレスの下で記憶されているビットシーケンスのS(1<S)回目の読出し時に誤りが出現しなかったとき、第1の部分集合α1のアドレスa1,jを部分集合α1から除外するように構成することができる。S回にわたり誤りが生じない場合、メモリ制御装置は、ステップ1770で、アドレスを第1の部分集合α1から除外する、および/または第2の部分集合α2に割り当てるように構成することができる。これは、例えば、アドレスの下で記憶されているビットシーケンスのS(1<S)回目の読出し時に誤りが出現しなかったときに、第1の部分集合α1のアドレスを部分集合α1から除外するようにメモリ制御装置18を構成することができることを意味する。
いくつかの例示的実施形態によるメモリ制御装置は、アドレス指定可能なメモリに記憶されているビットシーケンスの読出し時に出現する誤りに依存して、および/または、アドレス指定可能なメモリへの書込み時および/またはアドレス指定可能なメモリからの読出し時に決定される物理的パラメータの値に依存して、第1の部分集合α1を変えるように構成することができる。例えば、物理的パラメータは、アドレス指定可能なメモリの動作中または動作期間にわたって変わることがある。制御装置は、その変化を決定する、すなわち捕捉するように、およびアドレスの第1または第2の部分集合への割当てを適合させるように構成することができる。
図18は、メモリデバイス180の概略ブロック図を示し、メモリデバイス180は、ビットシーケンスを記憶するためのアドレス指定可能なメモリ12と、メモリ制御装置18’とを含む。記憶されているビットシーケンスは、誤りがない場合には、誤り訂正符号の符号語のビット、すなわち符号語の少なくとも一部である。メモリ制御装置18’は、誤りのある内容を訂正するために、記憶されているビットシーケンスをアドレス指定可能なメモリ12から読み出して、読出しプロセスを行うように構成される。誤り訂正符号は、t≧2でのtビット訂正符号でよい。
メモリデバイス18’は、記憶されており読み出される、σ(1<σ≦t)個のビット誤りを有する誤りのあるビットシーケンスを、誤り訂正符号を使用して訂正し、誤りのあるビットシーケンスを訂正されたビットシーケンスで上書きする、および/または訂正されたビットシーケンスを書き戻すように構成することができる。メモリ制御装置は、読み出されたビットシーケンスがσ個の誤りを有するときには、誤りのあるビットシーケンスを訂正されたビットシーケンスで上書きせず、訂正されたビットシーケンスを書き戻さないように構成することができる。ここで、σ≦τが成り立ち、τは閾値であり、1≦τ≦tが成り立つ。誤りのあるビットシーケンスが書き戻されるか否かの区別に関して、メモリデバイス180は、例えば図5に関連して述べたような機能と同等の機能を有することができる。
図3に関連して述べたように、アドレス指定可能なメモリは、第1のアドレスa1,1によってアドレス指定される第1のメモリセルを有することがある。アドレス指定可能なメモリは、第1のアドレスとは異なる第2のアドレスa2,1によってアドレス指定される第2のメモリセルを有することがある。第1のアドレスa1,1および第2のアドレスa2,1の下で記憶されているビットシーケンスは、誤りがない場合には、それぞれ誤り訂正符号Ccorの符号語のビットでよい。メモリ制御装置は、記憶されているビットシーケンス中の誤りのある内容を訂正するために、第1および/または第2のメモリセルを読み出すことができる。第1のアドレスa1,1および第2のアドレスa2,1の下で記憶されているビットシーケンスは、誤りがない場合には、それぞれ誤り訂正符号Ccorの符号語のビットでよい。メモリ制御装置は、記憶されているビットシーケンス中の誤りのある内容を訂正するために、第1および/または第2のメモリセルを読み出して、読出しプロセスを行うように構成することができる。第1のメモリセルおよび/または第2のメモリセルに関して信頼性情報が存在する場合、第1のメモリセルと第2のメモリセルとの連続する読出しプロセスの頻度は異なっていてよい。信頼性情報は、第1のメモリセルおよび/または第2のメモリセル内での誤りのあるビットシーケンスの出現に関する算出確率に基づくことがある。
さらなる例示的実施形態は、本明細書で述べる別の例示的実施形態に関連して説明するように、様々な頻度でのメモリセルの評価および/または訂正のためにメモリデバイス180を改良したメモリデバイスを提供する。これは、上で説明した例示的実施形態の上記の特徴が、メモリデバイス180に容易に転用可能であることを意味する。
図19は、様々な熱的安定性ΔE[kBT]にわたるビット(メモリセル)の分布の概略図を示す。熱的安定性は、物理的パラメータとして使用可能であり得る。例えば、σよりも大きい、2σよりも大きい、または3σよりも大きい平均値からの偏差を有するメモリセルをアドレス指定するアドレスを、第1のアドレスとして記憶することができ、ここで、σは、分布の分散を表す。
図19は、MRAMメモリにおいて熱的安定性ΔEの大きな変動が生じ得ることを示す。
図20は、ある時間間隔内で、または書込みプロセス後にビットがビット誤りを有するる確率分布Pの概略図を示す。様々な期間(1秒、10000秒、108秒(例えば3.1年に相当する))にわたって、ビット誤りが存在する確率は、使用される時間スパン、使用される誤り訂正符号のタイプ(例えば1ビット誤り訂正符号(ECC)もしくは3ビット誤り訂正符号)、および/または熱的安定性ΔEに基づくことがある。これらの関係は、第1のアドレスと第2のアドレスを区別する際に推定確率として考慮に入れることができる。
簡略に表現すると、図20は、物理的パラメータ、すなわち熱的安定性と、ビット誤りの出現に関する確率との関係を示す。
図21は、ステップ2110を含む方法2100の概略流れ図を示す。方法2100は、メモリデバイス10によって実施可能であり得る。ステップ2110で、メモリの第1のメモリセルに記憶されている第1のビットシーケンスの検査が行われ、ここで、メモリは、第2のメモリセルを有し、第2のメモリセルは、第1のメモリセルとは異なり、第2のビットシーケンスが記憶されている。第1のビットシーケンスは、第1のメモリセルに割り当てられた頻度で検査され、この頻度は、第1のメモリセルに関する信頼性情報に依存する。誤り状態では、第1のビットシーケンスの誤りのあるビットが訂正され、少なくとも訂正されたビットがメモリに書き戻される。第2のビットシーケンスは、第2のメモリセルに関する信頼性情報に基づいて、第1のビットシーケンスよりも低い頻度で検査される。
図22は、例えば本明細書で述べるメモリデバイスによって実施可能である方法2200の概略流れ図を示す。方法2200は、例えばメモリデバイス30によって実施されるときに、低い効率でメモリ内のビット誤りの数を低く保つために使用することができる。
ステップ2210で、第1のアドレスa1,1によってアドレス指定される第1のメモリセルと、第1のアドレスとは異なる第2のアドレスa2,1によってアドレス指定される第2のメモリセルとを有するアドレス指定可能なメモリにビットシーケンスが記憶され、ここで、第1のアドレスa1,1および第2のアドレスa2,1の下で記憶されているビットシーケンスは、誤りがない場合には、それぞれ誤り訂正符号の符号語のビットである。
ステップ2220で、記憶されているビットシーケンス中の誤りのある内容を訂正するために、第1および/または第2のメモリセルが読み出されて、読出しプロセスを行い、ここで、第1のメモリセルおよび/または第2のメモリセルに関して信頼性情報が存在する場合、第1のメモリセルと第2のメモリセルの連続する読出しプロセスの頻度は異なり、ここで、信頼性情報は、第1のメモリセルおよび/または第2のメモリセル内での誤りのあるビットシーケンスの出現に関する算出確率に基づく。
図23は、例えば、メモリデバイス180によって、および/または追加として本明細書で述べる別のメモリデバイスによって実施可能である方法の概略流れ図を示す。この方法は、小さいコストでビット誤りを訂正するために使用することができる。
ステップ2310で、ビットシーケンスがアドレス指定可能なメモリに記憶され、それにより、記憶されているビットシーケンスは、誤りがない場合には、それぞれtビット誤り訂正符号の符号語のビットであり、t≧2が成り立つ。
ステップ2320で、誤りのある内容を訂正するために、記憶されているビットシーケンスが読み出されて、読出しプロセスを行う。
ステップ2330で、記憶されており読み出された誤りのあるビットシーケンスが訂正され、ここで、ビットシーケンスは、σ個の誤りを有する。訂正は、誤り訂正符号を使用して行われる。ステップ2340で、誤りのあるビットシーケンスが、訂正されたビットシーケンスで上書きされ、および/または訂正されたビットシーケンスが書き戻され、ここで、1<σ≦tが成り立つ。読み出されたビットシーケンスがσ個の誤りを有し、σ≦τが成り立つとき、誤りのあるビットシーケンスは訂正されたビットシーケンスで上書きされず、訂正されたビットシーケンスは書き戻されない。ここで、τは閾値であり、1≦τ≦tが成り立つ。
図24は、記憶すべきビットシーケンス112の概略図を示す。このビットシーケンス112は、例えば、そのビットシーケンスを記憶するアドレスがメモリデバイスによってアドレスaper,1として識別されるときに、ビット毎に反転されたビットシーケンス112’としてアドレス指定可能なメモリに記憶可能である。このビットシーケンスは、例えば「0縮退」、すなわち値0から動かない永久的な欠陥があるメモリセル114を有する。ビットシーケンス11001は、アドレスaper,1の下でメモリセルに誤りなしでは記憶することができず、一方、反転されたビットシーケンス00110は、アドレスaper,1の下で誤りなく記憶することができる。いくつかの例示的実施形態によれば、ビットシーケンス全体を反転させることができる。さらなる例示的実施形態によれば、ビットシーケンスは、一部を反転させることができ、ここで、この部分は、少なくとも、誤りのあるビットシーケンスが記憶されているビットを含む。メモリセル114またはアドレスaper,1は、例えば、アドレスの部分集合αperに記憶することができる。
図25は、永久的な誤りを有するものとしてのメモリセル114の分類の概略図を示す。閾値よりも大きいまたは小さい物理的パラメータに基づいて、メモリセル114が永久的な誤りを有する可能性を示す確率pperが算出可能であり得る。この確率が閾値SWperよりも高い場合、アドレスaper,1を、例えばメモリ制御装置によって部分集合αperに割り当てることができる。閾値は、0よりも大きくかつ1以下でよく、0.1以上かつ0.99以下でよく、または0.2以上かつ0.95以下でよい。
上述した例示的実施形態は、アドレス指定可能なメモリ、特にMRAMメモリにおける効率的な誤り訂正を可能にする。これらのメモリは、例えば、頻繁に誤りを有する小さな割合のセルを有する。別のセルは、それほど頻繁には誤りを有さない。アドレスは、頻繁な誤りの確率を有する少なくとも1つのメモリセルをアドレス指定するとき、第1のアドレスとみなす、または格付けすることができる。
簡略に表現すると、(例えば、スタートアップ中に、場合によっては書込み電流または読出し電流を評価して)信頼性のない(信頼できない)メモリセルを予測することができる。信頼できないアドレスを特定して、様々なタイプのメモリに記憶することができる。
信頼できないアドレスに記憶されているビットシーケンス(ワード)は、より頻繁に読み出され、例えば、訂正可能な誤りが確定されて訂正されたときにのみ訂正される。信頼できるアドレスでのビットシーケンスは、より低い頻度で読み出され、訂正可能な誤りが訂正された場合にのみ書き戻される、すなわち再生される。これは、特にMRAMメモリにおける時間的コストおよびエネルギー消費の減少を可能にする。信頼できないアドレスは、揮発性メモリまたは不揮発性メモリに記憶することができる。代替または追加として、それらは、同じメモリ内の特別なメモリ領域に記憶することができ、そこでデータがアドレス指定可能なメモリに記憶される。これは、信頼できないアドレスの値も誤り訂正符号によって訂正されることを可能にする。信頼できないアドレスは、三重に重複して記憶することができる。
信頼できないアドレスの編成は、メモリデバイスの動作中に動的に変えることができる。例えば、マルチビット誤りを有するアドレスを、信頼できないアドレスの編成に受け入れることができる。信頼できないアドレスのアドレスは、場合によっては長い特定の時間にわたって誤りを有さないとき、編成から除外することができる。
t≧2でのtビット誤り訂正符号が使用される場合、信頼できるアドレスまたは信頼できないアドレスの下で記憶されるデータを、例えば、少なくとも1つの2ビット誤りが存在するときに訂正して再生することができる。例えば、1ビット誤りの場合、誤りを訂正することができ、または訂正せず再生しないこともできる。それにより、再生のためのコスト(オーバーヘッド)を本質的に減少させることができる。なぜなら、再生が行われる2ビット誤りに関する確率は、1ビット誤りに関する確率よりも本質的に低いからである。3つ以上の異なるタイプのアドレスを実装することもできる。
また、いくつかの例示的実施形態は、以下のように構成することもできる:アドレス指定可能なメモリに記憶されているビットシーケンスの誤りの数を減少させるための方法に関して、アドレス指定可能なメモリが、第1のアドレスa1,1によってアドレス指定される第1のメモリセルと、第1のアドレスとは異なる第2のアドレスa2,1によってアドレス指定される第2のメモリセルとを有し、ここで、第1のアドレスa1,1の下で時点tで第1のメモリセルに記憶されている誤りのないビットシーケンスが時点t+Δtで誤りを有する推定確率が、第2のアドレスa2,1の下で時点tで第2のメモリセルに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率よりも高く、ここで、Δt>0であり、アドレスa1,1およびアドレスa2,1の下で記憶されているビットシーケンスは、誤りがない場合には、それぞれ符号距離d≧3を有する誤り訂正符号Ccorの符号語のビットであり、ここで、メモリセルの誤りのある内容を訂正するために、アドレスa1,1の下での第1のメモリセルが、連続する時点で、アドレスa2,1の下での第2のメモリセルよりも頻繁に読み出され、アドレスa1,1の下で記憶されており読み出された誤りのあるビットシーケンスが、符号Ccorを使用して訂正されたビットシーケンスで上書きされる。
さらなる例示的実施形態は、以下のことを定義する:符号Ccorがtビット訂正符号であり、t≧2が成り立ち、ここで、アドレスa1,1の下で記憶されており読み出されたビットシーケンスが、1つのtビット、(t−1)ビット、…、またはτビット誤りを有するとき、誤りのあるビットシーケンスが、符号Ccorを使用して訂正されたビットシーケンスで上書きまたは書き戻され、ここで、τ≧1が成り立つ。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1の下で記憶されており読み出されたビットシーケンスが、1つのσビット誤りを有し、σ≦τが成り立つとき、σビット誤りを有する誤りのあるビットシーケンスが、訂正されたビットシーケンスで上書きまたは書き戻されない。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1の下で第1のメモリセルが読み出され、読み出されたビットシーケンス中の誤りが符号Ccorによって訂正される連続する時点では、第1のメモリセルが、訂正されたビットシーケンスで上書きされ、アドレスa1,1の下で第1のメモリセルが読み出され、読み出されたビットシーケンス中の誤りが符号Ccorによって訂正されない時点では、第1のメモリセルがビットシーケンスで上書きされない。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1の下で第1のメモリセルが読み出され、読み出されたビットシーケンス中の誤りが符号Ccorによって訂正または検出されない連続する時点で、第1のメモリセルが、読み出されたビットシーケンスで上書きされる。
さらなる例示的実施形態は、以下のことを定義する:第1のアドレスa1,1の下で時点tで第1のメモリセルに記憶されている誤りのないビットシーケンスが時点t+Δtで誤りを有する推定確率が、少なくとも1つの物理的パラメータの値を使用して決定される。
さらなる例示的実施形態は、以下のことを定義する:少なくとも1つの物理的パラメータの値が、メモリセルの書込み電流の値または読出し電流の値である。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1の下で、データビットおよびチェックビットからなるビットシーケンスが記憶され、データビットおよびチェックビットは、誤りがない場合、誤り訂正符号Ccorの符号語を形成する。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1の下で、データビットおよびチェックビットからなるビットシーケンスが記憶され、データビットおよびチェックビット、ならびにアドレスa1,1のアドレスビットまたはアドレスa1,1のアドレスビットから導出されるビットは、誤りがない場合、誤り訂正符号Ccorの符号語を形成する。
さらなる例示的実施形態は、以下のことを定義する:メモリが、アドレスa1,1に加えて、第1の部分集合α1={a1,2,…,a1,m}を形成するさらなるアドレスa1,2、…、a1,m(m>1)を有し、アドレスa2,1に加えて、第2の部分集合α2={a2,2,…,a2,m}を形成するさらなるアドレスa2,2、…、a2,m(m>1)を有し、ここで、i∈{1,…,m}での第1のアドレスa1,iの下で時点tで第1のメモリセルに記憶されている誤りのないビットシーケンスが時点t+Δtで誤りを有する推定確率が、j∈{1,…,M}でのアドレスa2,jの下で時点tで第2のメモリセルに記憶されている正しいビットシーケンスが時点t+Δtで誤りを有する推定確率よりも高く、ここで、Δt>0であり、アドレスa1,iおよびアドレスa2,jの下で記憶されているビットシーケンスは、誤りがない場合には、それぞれ誤り訂正符号Ccorの符号語のビットであり、ここで、アドレスa1,iの下での第1のメモリセルが、連続する時点でアドレスa2,1の下でのメモリセルよりも頻繁に読み出され、読み出されたビットシーケンスが誤りを有しており、誤りのあるビットシーケンスを符号Ccorを使用して訂正することができるときには、読み出されたビットシーケンスから決定される、符号Ccorを使用して訂正されたビットシーケンスで上書きされる。
さらなる例示的実施形態は、以下のことを定義する:部分集合α1がスタートアップ時に決定される。
さらなる例示的実施形態は、以下のことを定義する:第1の部分集合α1または第2の部分集合α2が揮発性メモリに記憶される。
さらなる例示的実施形態は、以下のことを定義する:第1の部分集合α1または第2の部分集合α2が不揮発性メモリに記憶される。
さらなる例示的実施形態は、以下のことを定義する:部分集合α1が、アドレスa1,1の下で記憶されているバイナリシーケンスが記憶されるのと同じメモリに記憶される。
さらなる例示的実施形態は、以下のことを定義する:部分集合α1が、アドレスa1,1の下で記憶されているバイナリシーケンスが記憶されていないメモリに記憶される。
さらなる例示的実施形態は、以下のことを定義する:集合α1が、メモリに記憶されているバイナリシーケンスの読出し時に出現する誤り、またはメモリへの書込み時もしくはメモリからの読出し時に決定される物理的パラメータの値に依存して変えられる。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1、…、a1,mの下で記憶されているバイナリシーケンスが、t≧1でのtビット誤り検出/訂正符号のビットであり、ここで、アドレスa(ここでアドレスaは集合α1の要素でない)の下で記憶されているバイナリシーケンスの読出し時に所定のτ(1≦τ≦t)に関してτビット誤りが検出されるとき、集合α1にアドレスaが追加される。
さらなる例示的実施形態は、以下のことを定義する:修復法で別のアドレスによって置き換えられるアドレスaが存在する。
さらなる例示的実施形態は、以下のことを定義する:アドレスの集合αperが存在し、それにより、集合αperからのアドレスの下で記憶されているメモリセルが、永久的な誤りを有するメモリセルを推定確率pperで有し、pper≧SWperであり、ここで、SWperは、0<SWper≦1での閾値であり、アドレスa∈αperによってアドレス指定されるメモリセルであって、それに関して誤りが検出されるメモリセルが、ビット毎に反転されたバイナリシーケンスを書き込まれる。
さらなる例示的実施形態は、以下のことを定義する:アドレスのS回目の読出し時に誤りが出現せず、1<Sであるときに、集合α1のアドレスa1,jが集合α1から除外される。
さらなる例示的実施形態は、以下のことを定義する:アドレスa1,1のビットがメモリセルに冗長に記憶され、それにより、少なくとも1ビット誤りを、アドレスa1,1のアドレスビットにおいて検出および/または訂正することができる。
上述した例示的実施形態は、より高い誤り確率を有する信頼できないメモリセルをより頻繁に読み出すことを可能にする。同時に、いくつかの例示的実施形態は、より高い誤り確率を有さないメモリセルはより頻繁には読み出されないので、訂正メカニズムの効率を高く保ち続けることを可能にする。第1のメモリセル内の誤りのあるビットシーケンスの存在に関する確率が、第2のメモリセル内の誤りのあるビットシーケンスの存在に関する確率よりも高いとき、第1のメモリセルの連続する時点での読出しの頻度は、第2のメモリセルの連続する時点での読出しの頻度よりも高いことがある。
上述の例示的実施形態は、比較的高い確率で誤りを有し、かつ例えば低い熱的安定性を有するメモリセルをアドレス指定するMRAMのアドレスの部分集合が決定されることを可能にし、ここで、このアドレスの下で記憶されている誤りのないビットシーケンスは、誤り訂正符号Ccorの符号語のビットである。読み出されたビットにおいて、符号Ccorによって訂正可能な誤りが出現しているときにのみ誤りが訂正され、訂正されたビットは、例えば、ビットが読み出されたのと同じアドレスの下でMRAMに記憶される。
ここで、比較的高い確率で誤りを有するメモリセルが、比較的高い確率で誤りを有さない別のメモリセルよりも頻繁に、誤り訂正の目的でアドレス指定されることが可能である。
誤りに関する比較的高い確率を有するメモリセルの数が比較的小さく、また、アドレス指定されたメモリセルで実際に誤りが出現したときにのみ、訂正されたデータの書戻しが行われることによって、訂正に関するコストが減少される。
ここで、メモリセルで誤りが出現する確率が、書込みまたは読出しの際の物理的パラメータの測定に基づいて推定または予測されることが可能である。そのようなパラメータは、例えば、書込み電流、書込み時間、または読出し電流でよい。ここで、この確率に関する具体的な数値を予測する必要はない。大抵は、対象のメモリセルが低い確率で誤りを有するか、それとも高い確率で誤りを有するかを予測すれば十分である。
しかしまた、出現する誤りの統計的な観察に基づいて確率を推定することも可能であり、または物理的パラメータの測定に基づいて推定された確率を、誤りの観察に基づいて修正することも可能である。以下、推定または予測される確率について述べる。ここでは、この確率に関する推定される数値、または確率が比較的小さい値もしくは比較的大きい値を取るという言明でもよい。
例えば、アドレスの選択は、例えばメモリ制御装置によって、誤りを有する確率が高い少なくとも1つのメモリセルがアドレスの下でアドレス指定されることが確かめられることによって行うことができる。しかしまた、アドレスの選択は、誤りを有する確率が高い少なくとも2つ、または少なくとも3つ、または一般に複数のメモリセルがアドレスによってアドレス指定されているかどうかを確かめることによって行うこともできる。
いくつかの態様をデバイスに関連して述べてきたが、これらの態様は、対応する方法の説明でもあり、したがって、デバイスのブロックまたは構成要素を、対応する方法ステップまたは方法ステップの特徴とみなすこともできることを理解されたい。それと同様に、方法ステップに関連して、または方法ステップとして述べた態様は、対応するデバイスの対応するブロックまたは詳細もしくは特徴の説明でもある。
所定の実施要件に応じて、本発明の例示的実施形態は、完全にまたは一部、ハードウェアまたはソフトウェアとして実装することができる。この実装は、デジタル記憶媒体、例えばフロッピーディスク、DVD、ブルーレイディスク、CD、ROM、PROM、EPROM、EEPROM、もしくはFLASHメモリ、ハードディスク、または他の磁気もしくは光メモリを使用して行うことができ、そのデジタル記憶媒体に、電子的に可読の制御信号が記憶されており、これらの制御信号は、それぞれの方法が実施されるようにプログラム可能なコンピュータシステムと協働することができる、または協働する。したがって、デジタルメモリ媒体は、コンピュータ可読でよい。したがって、本発明によるいくつかの例示的実施形態は、本明細書で述べた方法の1つが実施されるようにプログラム可能なコンピュータシステムと相互作用することができる電子的に可読の制御信号を有するデータキャリアを含む。
一般に、本発明の例示的実施形態は、コンピュータ上でコンピュータプログラム製品が実行されるときに方法の1つを実施するのに有効なプログラムコードを有するコンピュータプログラム製品として実装することができる。プログラムコードは、例えば、機械可読キャリアに記憶することもできる。
別の例示的実施形態は、本明細書で述べた方法の1つを実施するためのコンピュータプログラムを含み、ここで、コンピュータプログラムは、機械可読キャリアに記憶されている。
すなわち、本発明による方法の例示的実施形態は、したがって、コンピュータプログラムがコンピュータ上で実行されるときに、本明細書で述べた方法の1つを実施するためのプログラムコードを有するコンピュータプログラムである。したがって、本発明による方法のさらなる例示的実施形態は、本明細書で述べた方法の1つを実施するためのコンピュータプログラムが記録されているデータキャリア(またはデジタル記憶媒体もしくはコンピュータ可読媒体)である。
したがって、本発明による方法のさらなる例示的実施形態は、本明細書で述べた方法の1つを実施するためのコンピュータプログラムを表現するデータストリームまたは信号のシーケンスである。データストリームまたは信号のシーケンスは、例えば、データ通信接続、例えばインターネットを介して転送されるように構成することができる。
さらなる例示的実施形態は、本明細書で述べた方法の1つを実施するように構成または適合されている処理装置、例えばコンピュータまたはプログラム可能な論理構成要素を含む。
さらなる例示的実施形態は、本明細書で述べる方法の1つを実施するためのコンピュータプログラムがインストールされているコンピュータを含む。
いくつかの例示的実施形態では、プログラム可能な論理構成要素(例えばフィールドプログラマブルゲートアレイ(FPGA))を、本明細書で述べる方法のいくつかまたは全ての機能を実施するために使用することができる。いくつかの例示的実施形態では、フィールドプログラマブルゲートアレイは、本明細書で述べた方法の1つを実施するためにマイクロプロセッサと協働することができる。一般に、いくつかの例示的実施形態における方法は、任意のハードウェアデバイスで実施される。これは、汎用性のあるハードウェア、例えば中央処理装置(CPU)でよく、または方法に専用のハードウェア、例えばASICでもよい。
上記の例示的実施形態は、本発明の原理の例示にすぎない。本明細書で述べた構成および詳細の修正および変形が当業者には明らかであることを理解されたい。したがって、本発明は、添付の特許請求の範囲の保護範囲によってのみ限定され、例示的実施形態の記述および説明に基づいて本明細書で提示した特定の詳細によっては限定されないことが意図されている。