JP2014518423A - 限られた耐久性のメモリにおける適応マルチビット・エラー訂正 - Google Patents
限られた耐久性のメモリにおける適応マルチビット・エラー訂正 Download PDFInfo
- Publication number
- JP2014518423A JP2014518423A JP2014518554A JP2014518554A JP2014518423A JP 2014518423 A JP2014518423 A JP 2014518423A JP 2014518554 A JP2014518554 A JP 2014518554A JP 2014518554 A JP2014518554 A JP 2014518554A JP 2014518423 A JP2014518423 A JP 2014518423A
- Authority
- JP
- Japan
- Prior art keywords
- ecl
- entry
- entries
- block
- subset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】マルチビット縮退故障エラーの修復ができ、メモリ・デバイスの寿命に影響を与えることなくエラー訂正ハードウェアのオーバーヘッドが低減される適応マルチビット・エラー訂正法を提供する。
【解決手段】エラー訂正ロジック・ハードウェアはメモリ・ブロックから切り離される。異なるメモリ・ブロック中で異なった数のエラーが発生する確率に基づいて、エラー訂正ロジック・エントリが異なった数のエラー訂正の能力をサポートするように、エラー訂正ロジック・ブロックがパーティションされる。欠陥メモリ・ブロックは、適切なエラー訂正ロジック・エントリにマップされる。マッピングは、実施形態に応じて、一対一または多体一とすることができる。エラー訂正ロジック・エントリの適応パーティショニングは、ロジック・ブロック中のエラーの予測された統計的分布に整合するように設定することが可能で、全体的なエラー訂正ロジック・オーバーヘッドを削減し、十分なエラー訂正を提供し、もしくはメモリ・デバイスの寿命を延長し、またはこれらの組み合わせを達成することができる。
【選択図】図1
【解決手段】エラー訂正ロジック・ハードウェアはメモリ・ブロックから切り離される。異なるメモリ・ブロック中で異なった数のエラーが発生する確率に基づいて、エラー訂正ロジック・エントリが異なった数のエラー訂正の能力をサポートするように、エラー訂正ロジック・ブロックがパーティションされる。欠陥メモリ・ブロックは、適切なエラー訂正ロジック・エントリにマップされる。マッピングは、実施形態に応じて、一対一または多体一とすることができる。エラー訂正ロジック・エントリの適応パーティショニングは、ロジック・ブロック中のエラーの予測された統計的分布に整合するように設定することが可能で、全体的なエラー訂正ロジック・オーバーヘッドを削減し、十分なエラー訂正を提供し、もしくはメモリ・デバイスの寿命を延長し、またはこれらの組み合わせを達成することができる。
【選択図】図1
Description
本開示は、一般にメモリ中のエラー訂正に関し、具体的には、適応マルチビット・エラー訂正の能力を有するメモリ・デバイスおよび同メモリ・デバイスの作動の方法に関する。
従来のダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)デバイスのスケーリング限界を克服するために、新しい種類の先端メモリ・デバイスが研究されてきた。これらのメモリ・デバイスは、可変抵抗素子の抵抗レベルによって状態が定まる抵抗メモリ・デバイスである。かかる抵抗メモリ・デバイスの例には、相変化メモリ(PCM:phase change memory)、メモリスタ・デバイス、磁気ランダム・アクセス・メモリ(MRAM:magnetic random access memory)デバイス、およびスピン・トルク・トランスファ・ランダム・アクセス・メモリ(STT−RAM:spin torque transfer random access memory)デバイスが含まれる。抵抗メモリ・デバイスは、従来のDRAMデバイスよりも増大した拡張性および高い密度を提供することができる。
しかしながら、ほとんどの抵抗メモリ・デバイスは、書き込み耐久性が限られる傾向がある。耐久性(エンデュランス)とは、メモリ・セルが故障なく耐えられる、書き込みの最大回数である。例えば、PCMデバイスは、通常、約108回までの書き込みオペレーションしか提供しない。典型的なPCMデバイスのオペレーションの過程において、書き込みは、セルの状態の変化によるカルコゲニド合金の膨張と収縮との繰り返しをもたらし、材料が加熱素子から物理的に分離される確率が高くなり、セルが恒久的にある値に停留することになる。このため、抵抗メモリ・デバイスにおいては、セルで遂行される一切の書き込みオペレーションと関係なくメモリ・セルの状態が単一の状態に停留されてしまうハード・エラーである、縮退故障(stuck−at fault)エラーが、一般に過渡故障よりも高頻度である。
抵抗メモリ・デバイスにおける耐久性の差異は、隣接するセルの間で空間的な相関関係がない傾向がある。耐久性の差異は、技術上のスケーリングとともに、すなわち、メモリ・デバイスの寸法の低減とともに増大する。エラー訂正のメカニズムが無ければ、最も劣弱なセルがメモリ・デバイスの寿命を決定づける。最初のセル故障を超えてメモリ・デバイスの寿命を延長するためには、エラー訂正のメカニズムが必要である。摩耗に関連する故障は、時間とともに次第に増加するので、使われている単一ビットのエラー修復スキームでは不十分である。したがって、メモリ・デバイスの寿命をさらに延ばすには、マルチビットのエラー修復が必要となる。
ハミング符号化は、当該技術分野で知られるマルチビット・エラー訂正方法の一つである。元来の(72,64)ハミング符号化は、過渡故障を修復するために考案された。単一誤り訂正・二重誤り検出(SECDED:Single Error Correction Double Error Detection)に対し、ハミング符号化は、一つだけのエラーを訂正可能にするために、エラー訂正コード(ECC:error correction code)ビットのためのオーバーヘッドとして、各メモリ・ブロックのサイズの12.5%を必要とする。
非特許文献1によって、エラー訂正ポインタ(ECP:Error−Correcting Pointer)が発表された。このECP法は、各データ・ブロックに対し複数の故障ポインタを用いる。各故障ポインタは所与のデータ・ブロック中の破損ビットのアドレス、および正しい値を格納する追加のビットを有する。61ビットのオーバーヘッド(11.9%)を使って6つの故障を修復するECPスキームが、当該技術分野で知られている。
非特許文献2によって、縮退故障エラー修復(SAFER:Stuck−At Fault Error Recovery)が発表された。SAFERは、縮退故障の可読性および永続性を用いて、動的パーティションおよびデータ反転により増大する縮退故障に対処する。SAFERは、512ビットのメモリ・ブロックに対し、メモリ・ブロックのサイズの10.7%にあたる55ビットのオーバーヘッドを使って、最少6つの故障から最多32の故障までの修復を提供できる。
Schechterら著、「Use ECP, not ECC, for hard failures in resistive memories」、Proceedings of the 37th annual international symposium on Computer architecture,2010。
Nak Hee Seongら著、「SAFER: Stuck−At−Fault Error Recovery for Memories」、Proceedings of the International Symposium on Microarchitecture,2010。
抵抗メモリ・デバイスにおける耐久性の差異は、隣接するセルの間で空間的な相関関係がない傾向がある。耐久性の差異は、技術上のスケーリングとともに、すなわち、メモリ・デバイスの寸法の低減とともに増大する。エラー訂正のメカニズムが無ければ、最も劣弱なセルがメモリ・デバイスの寿命を決定づける。最初のセル故障を超えてメモリ・デバイスの寿命を延長するためには、エラー訂正のメカニズムが必要である。摩耗に関連する故障は、時間とともに次第に増加するので、使われている単一ビットのエラー修復スキームでは不十分である。したがって、メモリ・デバイスの寿命をさらに延ばすには、マルチビットのエラー修復が必要となる。
適応マルチビット・エラー訂正法によってマルチビット縮退故障エラー修復を可能にでき、メモリ・デバイスの寿命に影響を与えずにエラー訂正ハードウェアのオーバーヘッドが低減される。エラー訂正ロジック・ハードウェアは、メモリ・ブロックから切り離される。異なるメモリ・ブロック中で異なった数のエラーが発生する確率に基づいて、エラー訂正ロジック・エントリが異なった数のエラー訂正の能力をサポートするように、エラー訂正ロジック・ブロックがパーティションされる。各エラー訂正ロジック・エントリは、メモリ・ブロック中のエラーを訂正するように設定される。エラー・カウントを有する、メモリ・ブロックを修復する能力のあるエラー訂正ロジック・エントリの数は、メモリ・ブロック群中のエラー分布の統計的予測によって決められる。これによって、少数のエラーを有するメモリ・ブロック群の訂正にはより多数のエラー訂正ロジック・エントリが割り当てられ、多数のエラーを有するメモリ・ブロック群の訂正にはより少数のエラー訂正ロジック・エントリが割り当てられる。欠陥メモリ・ブロックは、適切なエラー訂正ロジック・エントリにマップされる。このマッピングは、実施形態に応じて、一対一または多体一とすることができる。エラー訂正ロジック・エントリの適応パーティショニングは、ロジック・ブロック中のエラーの予測された統計的分布に整合するように設定することが可能で、全体的なエラー訂正ロジック・オーバーヘッドを低減し、十分なエラー訂正を提供し、もしくはメモリ・デバイスの寿命を延長し、またはこれらの組み合わせを達成することができる。
本開示のある態様によれば、メモリ・デバイス中のエラーを訂正する方法は、複数のメモリ・ブロックおよびエラー訂正ロジック(ECL)エントリのセットを包含するエラー訂正ロジック(ECL:error correction logic)エントリ・ブロックを少なくとも含む、メモリ・デバイスを提供するステップであって、ECLエントリのセットはECLエントリの複数のサブセットを含み、ECLエントリの各サブセットは、複数のメモリ・ブロックの一つ以上において、メモリ・ブロック当たり異なる数のビットに対しエラー訂正を提供するように設定され、複数のメモリ・ブロックの各々が、データを格納するための第一ビット群およびECLブロック内のECLエントリへのポインタを格納するための第二ビット群を含む、該提供するステップと、複数のメモリ・ブロックの中のエラー含有メモリ・ブロック中の書き込みエラーを検出するステップと、前記ECLエントリ・ブロック中の利用可能なECLエントリを特定するステップと、利用可能なECLエントリのアドレスをメモリ・ブロックのポインタに格納し、エラー含有メモリ・ブロック中の全ての書き込みエラーを訂正するための情報を、利用可能なECLエントリ中に格納するステップと、を含む。
本開示の別の態様によれば、メモリ・デバイスは、複数のメモリ・ブロックであって、これら複数のメモリ・ブロックの各々は、データを格納するための第一ビット群およびECLブロック内のECLエントリへのポインタを格納するための第二ビット群を含む、該複数のメモリと、エラー訂正ロジック(ECL)エントリのセットを含む、エラー訂正ロジック(ECL)エントリ・ブロックであって、ECLエントリのセットはECLエントリの複数のサブセットを含み、ECLエントリの各サブセットは、複数のメモリ・ブロックの一つ以上において、メモリ当たり異なる数のビットに対しエラー訂正を提供するように設定される、エラー訂正ロジック(ECL)エントリ・ブロックと、を含む。
前述のように、本開示は、適応マルチビット・エラー訂正の能力を有するメモリ・デバイスおよび同メモリ・デバイスの作動の方法に関し、添付の図面を用いて以下に詳細に説明する。本明細書に記述され図面に示される、同様なおよび対応するエレメントは同じ参照番号によって参照される。これらの図面は必ずしも一定の縮尺では描かれていない。
前述のように、上記で述べた既存のマルチビット・エラー修復スキームは、マルチビット・エラーを訂正するためにかなりのオーバーヘッドを要する。本開示につながる研究の過程で、複数のメモリ・ブロックを含むメモリ・デバイス中のブロックの中のエラー・ビット・カウントの分布をシミュレートするためにモンテカルロ・シミュレーションが実施された。このシミュレーションのため、108書き込みサイクルの平均値、107書き込みサイクルの標準偏差を有するセル寿命の正規分布が想定された。256ビットのメモリを有する各メモリ・ブロックの寿命の測定を可能にするために、シミュレーションの過程では完全な摩耗レベリングが仮定された。結果は、50,000回の反復にわたる平均により得られた。ほとんど全てのブロックが、その寿命の終了点で、エラーがないかあるいは一つだけのエラーであった。17エラーを超えるブロックは取るに足らない数であった。本シミュレーションの結果は、6つ以上のエラー訂正のために専用の5%のエントリを有するエラー訂正ロジックであれば、同じ寿命を維持するのに十分であろうことを示唆した。
本開示のある実施形態は、複数のメモリ・ブロックを含むメモリ・デバイスにおいて、エラー訂正ロジック(ECL)ブロックを個別のメモリ・ブロックから切り離すこと、および書き込みエラーを包含する各メモリ・ブロックと、スタンドアロンのエラー訂正ロジック(ECL)エントリ・ブロック中の個別のエラー訂正ロジック(ECL)エントリとの間での動的マッピングを可能にすることによって、さまざまなメモリ・ブロックにわたる書き込みエラー発生の不均一な頻度を利用し、より優れたエラー訂正もしくはエラー訂正のためのより少ないオーバーヘッドまたはその両方を提供する。本明細書および本出願のその他部分で述べる書き込みエラーとは、恒久的縮退故障エラーと同意である。書き込みオペレーションがメモリ位置に所望の値を書き込み損なったときだけ、かかる縮退故障エラーと判定される。
図1を参照すると、本開示のある実施形態による例示的なメモリ・デバイス100は、複数のメモリ・ブロック110と、エラー訂正ロジック(ECL)エントリ・ブロック120と、エラー訂正ロジック(ECL)マッパ130と、エラー訂正ロジック(ECL)コントローラ140(ECLコントローラは、従来のメモリ・コントローラの一部または拡張部である)とを含む。複数のメモリ・ブロック110には、各々が一定の数のデータ・ビットを有する、複数のディスクリート・メモリ・ブロックを含めることができる。例えば、各ディスクリート・メモリ・ブロックには、2p個数のデータ・ビットを含めることが可能で、このpは正の整数である。pは、典型的には6〜20の間の整数であり、さらに典型的には8〜14の間の整数であるが、これより小さいまたは大きい数を用いることも可能である。複数のメモリ・ブロック110は、中央処理装置(CPU:central processing unit、図示せず)、または、複数のメモリ・ブロック110中に格納されたデータを処理、送信、または別途に使用するように設定された任意の他のデバイス・コンポーネントが用いることのできるデータを格納する。
ECLエントリ・ブロック120は、複数のメモリ・ブロック110から分離された領域に設けられた別個のハードウェアである。ECLエントリ・ブロック120は、複数のメモリ・ブロック110のサブコンポーネントではなく、複数のメモリ・ブロック110から独立して設けられたエラー修復ハードウェアである。ECLエントリ・ブロック120は、エラー修復ハードウェアとして、エラー訂正ロジック(ECL)エントリのセットを含む。このECLエントリのセットは、ECLエントリの複数のサブセットを含む。ECLエントリの複数のサブセットはそれぞれ、メモリ・ブロック当たりで異なった数の書き込みエラーを有するメモリ・ブロック群に対してエラー訂正を提供するように設定される。
ECLエントリ・ブロック120は、しかして、ECLエントリのサブセットに各々が対応する、複数のサブブロックにパーティションされる。一つのECLエントリによって提供可能なエラー訂正の合計数はサブセットごとに異なる。しかして、各サブセットは、その中のECLエントリによって訂正が可能な、メモリ・ブロック当たりのエラーの固有の合計数を有する。ECLエントリ・ブロック120のパーティショニングは、いろいろな数のメモリ・ブロック当たりマルチビット・エラーが発生する確率に基づいている。
ECLマッパ130は、ECLエントリ・ブロック120のパーティショニングに関する情報を格納する。具体的には、ECLマッパ130は、新規のECLエントリをコード化する必要があるときはいつでもECLエントリ・ブロックの効率的探索が可能なように、ECLエントリ・ブロック120中のECLエントリの各サブセットのアドレス範囲に関する情報を格納する。
ECLコントローラ140は、ECLエントリ・ブロック120中に格納された情報および複数のメモリ・ブロック110中に存在するポインタ・ビットのコード化を制御する。複数のメモリ・ブロック110中のポインタ・ビットは、データ・ビット以外の追加のビットであり、ECLエントリ・ブロック120内のどのECLエントリが、複数のメモリ・ブロック110内の対応する個別メモリ・ブロックに対するエラー訂正のために必要な情報を含むかについての情報を提供する。
図2を参照すると、本開示の第一実施形態による、複数のメモリ・ブロック110およびECLエントリ・ブロック120のコンポーネントが示されている。複数のメモリ・ブロック110は、複数の個別メモリ・ブロックを含む。各個別メモリ・ブロックは、データを格納するように設定された第一ビット群を含むデータ・ビット・ブロック112と、ECLブロック120内のECLエントリへのポインタを格納するように設定された第二ビット群を含むポインタ・ビット・ブロック114とを含む。各個別のメモリ・ブロックは、データ・ビット・ブロック112を表す矩形およびポインタ・ビット・ブロック114を表す、横方向に隣接する矩形によって概略的に表されている。
各ポインタ・ビット・ブロック114中の第二ビットの合計数は、ECLエントリ・ブロック120中の全てのアドレスのアドレッシングを可能にし、2つの追加状態を示すように選択することができる。第一の追加状態は、エラーなし状態、すなわち、対応するデータ・ビット・ブロック112がいかなるエラーも含まない状態である。第二の追加状態は、1エラー状態、すなわち、対応するデータ・ビット・ブロック112が単一のエラーを含む状態である。かかる単一のエラーは、対応するデータ・ビット・ブロック112の中で一つのビットが、0または1に停留したままになる縮退故障エラーに起因し得る。この場合、対応するデータ・ビット・ブロック112中に格納されるよう当初に意図されていたデータの補数が計算されて、その対応するデータ・ビット・ブロック112に格納され、ポインタ・ビット・ブロック114には、第二の追加状態を示す値がセットされる。
例えば、ECLエントリ・ブロック120中のECLエントリの合計数がEである場合、このとき、log2(E+2)を計算し、次の最も近い整数に切り上げることができる。Eへの2の加算は、前述の2つの追加状態を網羅するために必要である。例えば、Eが13の場合、log2(E+2)の繰り上げ整数は4である。しかして、各ポインタ・ビット・ブロック114には4ビットを含めることができる。複数のメモリ・ブロック110中で一切のエラーが検出される前に、あらゆるポインタ・ビット・ブロック114中の第二ビット群は、エラーなし、すなわち、第一の追加状態を表す値にセットされる。この値は、Eが13の上記例では、例えば0000とすることができる。いずれかの個別メモリ・ブロックのデータ・ビット・ブロック112中に、最初のエラーが検出された場合、対応するポインタ・ビット・ブロック114中の第二ビット群は、単一のエラー、すなわち第二の追加状態を表す値にセットされる。この値は、Eが13の上記例では、例えば0001となり得よう。
例えば、エラー含有のデータ・ビット・ブロック112に格納するよう当初意図されたデータが001000111100であり、その第三ビットが、第三ビット中の縮退故障エラーに起因して正しく書き込みできなかった(故障により第三ビットは0に留まったまま)場合、すなわち、エラー含有データ・ビット・ブロック112中に格納されたデータが、データの書き込みを少なくとも一回試みた後で000000111100である場合、このデータの補数が計算され、この場合は110111000011となる。データの補数はエラーなしで書き込むことができる。というのは、第三ビット中の縮退故障エラーは、このエラー含有データ・ビット・ブロック112中に、110111000011を書き込むことを妨げないからである。ここで、用語「エラー含有」は正確なデータを格納しない一切の形態をいう。対応するポインタ・ビット・ブロック114の第二状態は、その後、エラー含有データ・ビット・ブロック112中のデータとともに読み出され、すなわち、0001が000000111100とともに読み出され、エラー含有データ・ビット・ブロック112中の生データを読み出した後、正しいデータを回復するための補数オペレーションが遂行される。
しかして、任意の個別データ・ビット・ブロック112の合計書き込みエラー・カウントが0または1のいずれかの場合、ECLエントリ・ブロック120を用いることなく、正しいデータを回復することが可能である。図2に示された例において、複数のメモリ・ブロック110内の最上部から、第1行、第2行、第3行、第5行、第6行、第7行、第8行、第10行、第11行、第12行、第13行、第14行、および第16行に対応する個別メモリ・ブロックのデータ・ビット・ブロック112からは正しいデータを読み出すことができる。
前述のように、ECLエントリ・ブロック120は、エラー訂正ロジック(ECL)エントリのセット122を含む。ECLエントリのセット122は、ECLエントリの複数のサブセットを含む。ECLエントリの複数のサブセットは、ECLエントリの第一サブセット122_2および少なくとも一つのECLエントリを含む最後のサブセット122_Nを含む。第一サブセット122_2中の各ECLエントリは、メモリ・ブロック中の2つのビットに対しエラー訂正を提供するように設定され、最後のサブセット122_N中の各ECLエントリは、メモリ・ブロック中のN個のビットに対しエラー訂正を提供するように設定されており、Nは2より大きい整数である。Nは、任意のデータ・ビット・ブロック112において、エラー訂正可能なビットの最大数である。
一つの実施形態において、Nは3より大きい整数とすることができ、ECLエントリの複数のサブセットは、第一サブセット122_2と、最後のサブセット122_Nと、1より大きいが(N−1)より小さい少なくとも一つの数iのセットに対する、ECLエントリの少なくとも一つの第iサブセット122_iとを含む。この場合、ECLエントリのサブセットの合計数は、2とNとの間の任意の数、すなわち最小3〜最大N−1の任意の数とすることができる。第iサブセット中の各ECLエントリは、2より大きくNより小さい合計数のビットに対しエラー訂正を提供するように設定される。
例えば、図2に示されるように、ECLエントリの複数のサブセットには、ECLエントリの第一サブセット122_2と、数iが2〜N−2の間の一個以上の数を表す、ECLエントリの少なくとも一つの第iサブセット122_iと、iがN−1となるECLエントリの第iサブセットの特別な場合である、ECLエントリの最後から2番目のサブセット122_N−1と、少なくとも一つのECLエントリを含む最後のサブセット122_Nとを含めることができる。ECLエントリの各サブセット(122_2、122_i、122_N−1、122_N)は一つ以上のエラー訂正ロジック(ECL)エントリを含む。各エラー訂正エントリは、ECLエントリのサブセット(122_2、122_i、122_N−1、122_N)の一つの中の矩形によって表される。しかして、ECLエントリの各サブセット(122_2、122_i、122_N−1、122_N)は、複数のメモリ・ブロック110中の1以上の個々のメモリ・ブロック(群)において、メモリ・ブロック当たり異なる数のビットに対してエラー訂正を提供するように設定される。
ほとんどのエラー訂正スキームにおいて、格納されたデータ中のエラーを訂正するために必要なビットの合計数は、エラー・ビットの合計数とともに増加し、ECLエントリの合計ビット・サイズは、ECLエントリのセット122内のECLエントリの各サブセット(122_2、122_i、122_N−1、122_N)に対して異ならせることができる。具体的には、より大きな合計エラー・ビット数を有するデータ・ビット・ブロック112に格納されたデータを訂正するように設定されたECLエントリの合計ビット・サイズは、より小さな合計エラー・ビット数を有する別のデータ・ビット・ブロック112に格納されたデータを訂正するように設定された別のECLエントリの合計ビット・サイズより大きい。一つの実施形態において、ECLエントリ中の合計ビット・サイズは、ECLエントリが訂正するように設定されたビットの合計数の狭義単調増加関数であり得る。例えば、合計3ビットを訂正するように設定されたECLエントリ中の合計ビット・サイズは、合計2ビットを訂正するように設定されたECLエントリ中の合計ビット・サイズよりも大きく、2より大きく(N−1)までの任意の整数iに対し、合計i+1ビットのエラーを訂正するように設定されたECLエントリ中の合計ビット・サイズは、合計iビットを訂正するように設定されたECLエントリ中の合計ビット・サイズよりも大きく、上記のNは、ECLエントリのセット122中の任意のECLエントリが訂正可能なビットの合計数の最大数である。
ECLエントリの各サブセット(122_2、122_i、122_N−1、122_N)中のECLエントリの合計数は、各サブセット中のECLエントリが訂正するように設定されたビットの合計数の単調減少関数であり得る。例えば、図2において、ECLエントリの第一サブセット122_2中の各ECLエントリが合計2ビットを訂正するように設定され、ECLエントリの少なくとも一つの第iサブセット122_i中の各ECLエントリが合計iビットを訂正するように設定され、ECLエントリの最後から2番目のサブセット122_N−1中の各ECLエントリが合計N−1ビットを訂正するように設定され、少なくとも一つのECLエントリを含む最後のサブセット122_N中の各ECLエントリが合計Nビットを訂正するように設定される。ECLエントリの少なくとも一つの第iサブセット122_iの中のどのサブセット中のECLエントリの合計数も、ECLエントリの第一サブセット122_2中のECLエントリの合計数を超えない。同様に、Nより小さい各整数iに対し、ECLエントリの第(i+1)サブセット122_(i+1)中のECLエントリの合計数は、ECLエントリの第iサブセット122_i中のECLエントリの合計数を超えない。
ECLエントリの各第iサブセット122_iに対しECLエントリの合計数Miを割り当てることができる。ECLエントリのサブセットの合計数を、本明細書では整数Lで表す。しかして、ECLエントリの各第iサブセット122_iは、Lを超えない各正の整数iに対し、Mi個のECLエントリ数を有する。全てのMiの和は、ECLエントリ・ブロック120中のECLエントリの合計数に等しい。すなわち、
さらに、Lより小さい正の整数iそれぞれに対し、Mi+1≦Miである。
メモリ・デバイス100の設計の過程で、ECLエントリ・ブロック120は、ECLエントリのサブセット(122_2、122_i、122_N−1、122_N)の一つを各々が含む、複数のサブブロックにパーティションすることができる。ECLエントリ中の合計ビット数は、各サブブロック内で同じにすることができ、どの異なるサブブロック内のECLエントリ中の合計ビット数とも違わせることが可能である。ビットの合計数には、ECLエントリの第iサブセット122_iに属する各ECLエントリに対し数Biを割り当てることができる。ECLエントリの各サブセット(122_2、122_i、122_N−1、122_N)中のECLエントリのビットの数Biは、各サブセット中のECLエントリが訂正するように設定されたビットの合計数の狭義単調増加関数であり得る。例えば、図2において、ECLエントリの第一サブセット122_2中の各ECLエントリには、2B0個のビットを含めることができ、ECLエントリの少なくとも一つの第iサブセット122_i中の各ECLエントリには、iB0個のビットを含めることができ、ECLエントリの最後から2番目のサブセット122_N−1中の各ECLエントリには、(N−1)B0個のビットを含めることができ、少なくとも一つのECLエントリを含む最後のサブセット122_N中の各ECLエントリには、NB0個のビットを含めることができ、B0は、データ・ビット・ブロック112中の単一の書き込みエラーを訂正するためにデータをコード化するのに必要なビットの数とすることができる。また、ECLエントリ中のビットの合計数が、データ・ビット・ブロック112中の書き込みエラー・ビットの合計数に線形に比例しない実施形態を用いることも可能である。
ECLエントリ・ブロック120には、複数の、少なくとも一つの占有ビット124をさらに含めることができる。複数の、少なくとも一つの占有ビット124の各々は、対応するECLエントリが、対応するメモリ・ブロック中の第一ビット群中の情報を訂正するためのデータを現在格納しているかどうかを示す単一のビットとすることが可能である。各占有ビット124は、しかして0または1の値を有し得る。例えば、各占有ビット124は、対応するECLエントリの利用が可能なことを示す0の値を有することができ、または対応するECLエントリの利用ができないこと、すなわち、データ・ビット・ブロック112に対するエラー訂正情報が既に対応するECLエントリに格納済みであることを示す1の値を有することができる。このエラー訂正情報は、対応するメモリ・ブロック中の第一ビット群中の、すなわち、対応するメモリ・ブロックのデータ・ビット・ブロック112中のエラーをどのように訂正するかを示す。
複数のメモリ・ブロック110およびECLエントリ・ブロック120を作動して以下のオペレーションを遂行することができる。最初に、複数のメモリ・ブロック110の中のエラー含有メモリ・ブロック中の書き込みエラーが検出される。書き込みエラーの検出は、例えば、ターゲット・データを個別のメモリ・ブロックに書き込み、その新しく書き込まれたデータを読み出し、そのターゲット・データを個別のメモリ・ブロックから読み出されたデータと比較することによって達成することが可能である。
ある場合には、対応するポインタ・ビット・ブロック114の何らかの値によって示されて、個別のメモリ・ブロックが前から存在する書き込みエラー(群)を有することが判明し、そして、対応するECLエントリ中の提示から、2より多い書き込みエラーが存在するかどうかが分かっていることがある。この場合、ターゲット・データは、適切に変更された形でその個別メモリ・ブロックに書き込まれ、書き込みエラーの合計数が変わっていないとの前提の下で、完全なエラー訂正を可能にするために、対応するECLエントリ中のビットが変更される。その個別メモリ・ブロックからのデータの読み出しの後、対応するECLエントリにより提供される何らかの適切なエラー訂正が行われる。
当該個別メモリ・ブロック中に何らかの書き込みエラーが存在するかどうかの如何によって、前もって知られた書き込みエラーがない場合にあってはエラー訂正なしで、もしくは、前もって知られた書き込みエラーだけが存在するとの前提でエラー訂正を行って、個別メモリ・ブロックから読み出したデータとターゲット・データとが一致すれば、新しい書き込みエラーはない。この場合、対応するポインタ・ビット・ブロック114中の値または対応する占有ビット124の内容を変える必要はない。
当該個別メモリ・ブロック中に何らかの書き込みエラーが存在するかどうかの如何によって、前もって知られた書き込みエラーがない場合にあってはエラー訂正なしで、もしくは、前もって知られた書き込みエラーだけが存在するとの前提でエラー訂正を行って、個別メモリ・ブロックから読み出したデータとターゲット・データとが一致しなければ、新しい書き込みエラーが少なくとも一つある。その個別メモリ・ブロックが前には書き込みエラーがなかったか、または単一の書き込みエラーを有していたが現在は2つ以上の書き込みエラーを包含する場合、対応するポインタ・ブロック114の内容は、ECLエントリのアドレスを示す値に変更することができる。このECLエントリは、前もって利用可能であった、すなわち0の対応する占有ビット124を有していたものである。新しいECLエントリは、新しく発見された書き込みエラーを包含する個別メモリ・ブロックのデータ・ビット・ブロック112に格納されたデータをエラー訂正するための情報をコード化するので、対応する占有ビット124は1にセットされる。データ・ビット・ブロック112中の書き込みエラーを訂正するための情報はこのECLエントリに格納される。
エラー訂正情報が格納されるECLエントリの選択は、そのECLエントリが十分な強度のデータ訂正能力を有すること、すなわち、そのECLエントリがエラー訂正情報を適切にコード化するために十分なビットを有することを確実にするため、系統的な仕方で行われる。しかして、利用可能なECLエントリは、エラー含有メモリ・ブロック中の書き込みエラーの合計数と同じ数のビットまたはそれより大きな数のビットに対しエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセットの中で特定される。
例えば、エラー含有メモリ・ブロック中の書き込みエラーの合計数が2の場合、利用可能なECLエントリは、2ビット以上のエラー訂正を提供するように設定された、ECLエントリのサブセット(122_2、122_i、122_N−1、122_N)の中で特定される。好ましくは、利用可能なECLエントリは、ECLエントリの少なくとも一つのサブセット(122_2、122_i、122_N−1、122_N)の中で最少ビットのエラー訂正を提供するように設定された、ECLエントリのサブセット内から選択され、そのサブセットは、データ・ビット・ブロック112当たり2ビットに対してエラー訂正能力を有するECLエントリの第一サブセット122_2である。ECLエントリの第一サブセット122_2中に利用可能なECLエントリがない場合、利用可能なECLエントリは、例えば、3など次に少ない数のエラー訂正ビット有する、ECLエントリの第二サブセットにおいて探索される。一般に、エラー含有メモリ・ブロック中の書き込みエラーの合計数がkの場合、利用可能なECLエントリは、kビット以上に対するエラー訂正を提供するように設定された、ECLエントリのサブセットの中で特定される。好ましくは、利用可能なECLエントリは、kビット以上に対するエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセットの中で、最少ビットのエラー訂正を提供するように設定された、ECLエントリのサブセット内から選択される。
一つの実施形態において、利用可能なECLエントリの識別、およびその後の、対応するポインタ・ビット・ブロック114と対応する占有ビット124との内容の変更は、ECLコントローラ140(図1参照)を使って達成することができる。しかして、ECLコントローラ140は、複数のメモリ・ブロック110の中のエラー含有メモリ・ブロック中の書き込みエラーを検出し、利用可能なECLエントリを、エラー含有メモリ・ブロック中の書き込みエラーの合計数と同じ数のビット、またはそれより大きな数のビットに対しエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセット(122_2、122_i、122_N−1、122_N)の中で特定することができる。この場合、ECLコントローラ140は、エラー含有メモリ・ブロックの、対応するポインタ・ビット・ブロック114の内容であるポインタ中に利用可能なECLエントリのアドレスを格納し、エラー含有メモリ・ブロック中の全ての書き込みエラーを訂正するための情報を、利用可能なECLエントリ中に格納するように設定することが可能である。
別の実施形態において、ECLコントローラ140は、メモリ・デバイス100内に設けずに、デュアル・インライン・メモリ・モジュール(DIMM:Dual In−line Memory Module)の一体部分として設けることも、または中央処理装置(CPU)の一体部分として設けることさえも可能である。さらに別の実施形態において、ECLコントローラの機能を、ハード・ディスクまたはキャッシュ・メモリなど、別のメモリ・デバイスに存在するプログラムによって達成することができ、このプログラムは、プログラムの実行の経過中に中央処理装置の処理リソースを利用する。
新しく識別されたエラー含有メモリ・ブロック中のエラー・ビットの数に対するエラー訂正を提供する能力のあるECLエントリのサブセット中に、利用可能なエントリがないので、利用可能なECLエントリの識別すなわち特定ができない場合、エラー訂正が不可能であることを示す信号を、中央処理装置などの適切なコントローラに送信することができる。例えば、データ・ビット・ブロック112の中への書き込みオペレーションの間に、少なくとも一つの追加の書き込みエラーが発見されて、データ・ビット・ブロック112中の書き込みエラーの合計数がkである場合であって、k以上のエラーを訂正するための、ECLエントリ・ブロック120内のECLエントリのサブセットが、利用可能ないかなるECLエントリも有さない場合、エラー訂正が不可能であることを示す信号を生成し、適切なデバイスに送信することが可能である。
説明のための一例として、図2中の複数のメモリ・ブロック110の最上部から4番目のデータ・ビット・ブロック112が2つの書き込みエラーを含み、図2中の複数のメモリ・ブロック110の最上部から9番目のデータ・ビット・ブロック112が3つの書き込みエラーを含み、図2中の複数のメモリ・ブロック110の最上部から15番目のデータ・ビット・ブロック112が2つの書き込みエラーを含むことがあり得る。対応するポインタ・ビット・ブロック114は、それぞれ、0010、1001、および0011にセットすることができる。この例において、これらのポインタ・ビット・ブロック114中のビットは、2と、対応するデータ・ビット・ブロック112に対するエラー訂正の情報が存在する対応ECLエントリのアドレスを表す数値との数値合計を表す。言い換えれば、ポインタ・ビット・ブロック114の一つによって表された数字から2を減ずると、ECLエントリ・ブロック120中の対応するECLエントリのアドレスに等しい。ECLエントリの第一サブセット122_2の中の最上部のECLエントリは、第四データ・ビット・ブロック112中の2つのエラー・ビットをエラー訂正するための情報を含み、ECLエントリの第一サブセット122_2の中の最上部から2番目のエントリは、第十五データ・ビット・ブロック112中の2つのエラー・ビットをエラー訂正するための情報を含み、ECLエントリの少なくとも一つの第iサブセット122_i中の第一エントリは、第九データ・ビット・ブロック112中の3つのエラー・ビットをエラー訂正するための情報を含む。1を上回る書き込みエラーの存在を示すポインタ・ビット・ブロック114と、1にセットされた対応する占有ビット124により占有されたものとしてフラグされているECLエントリとの間には、一対一のマッピングが設けられる。
一般に、複数のエラー・ビットを含む各エラー含有メモリ・ブロックは、そのメモリ・ブロックに存在する全てのエラーを訂正する能力のある適切なエラー訂正ハードウェア、すなわち、ECLエントリ・ブロック120中の適切なECLエントリにマップされる。しかして、エラー訂正ロジックのためのハードウェア、すなわちECLエントリ・ブロック120は、動的な適応マッピングによって複数のメモリ・ブロック110から切り離され、このマッピングは、メモリ・デバイス100(図1参照)の使用の間に、複数のメモリ・ブロック110中に追加の書き込みエラーが検出されるのに応じて変化する。本明細書での使用において「動的な適応マッピング」とは、いかなる特定のECLエントリに対しても一対一のマッピングを持たない複数のメモリ・ブロックにおいて、何らかの追加エラーが検出されると、必要に応じてECLエントリを割り当てることをいう。
欠陥メモリ・ブロックの最大数は数値Eにセットされ、これはECLエントリ・ブロック120中のECLエントリの合計数である。Eは、複数のメモリ・ブロック110中のブロックの合計数より少なくすることができる。ECLエントリ・ブロック120中のECLエントリの合計数が、複数のメモリ・ブロック110中のブロックの合計数より少なくできるので、従来技術のエラー訂正方法に比べて、ハードウェアの量で測ったエラー訂正ロジックのオーバーヘッドを低減することができる。
図3を参照すると、本開示の第二実施形態による、複数のメモリ・ブロック110のコンポーネントとECLエントリ・ブロック120とが示されている。この第二実施形態において、一つのECLエントリ中の同一のビットが、2つ以上のエラー含有データ・ビット・ブロック112中の書き込みエラーの訂正に使用可能であるという条件で、1を上回る書き込みエラーの存在を示すポインタ・ビット・ブロック114と、エラー含有データ・ビット・ブロック112中のエラーを訂正するための情報を包含するECLエントリとの間で、多対一のマッピングが可能である。
しかして、複数のエラー含有データ・ビット・ブロック112中の2つ以上の書き込みエラーを訂正するために同じエラー訂正コードを用いることが可能である場合、複数のエラー含有データ・ビット・ブロック112に対するポインタ・ビット・ブロック114は、これら複数のエラー含有データ・ビット・ブロック112に共通のエラー訂正コードを含む同一のECLエントリをポイントする。言い換えれば、相異なるメモリ・ブロックが、同じセットのビット位置に欠陥ビット有する場合、メモリ・ブロックのエラー訂正ロジックへの多対一のマッピングが可能になる。
本第二実施形態は、複数のメモリ・ブロックが同一のECLエントリ中に格納された同一のエラー訂正ロジックを共用できるようにすることによって、エラー訂正ロジック・オーバーヘッドの低減を可能にする。同じセットの欠陥ビット位置に書き込みエラーを有する複数のメモリ・ブロックに対し同一のECLエントリの共用を実装するために、エラー訂正ロジックを割り当てるのに先立って、追加のチェックを行い、少なくとも一つの新しい書き込みエラーを含む新しく検出されたエラー含有メモリ・ブロックのものと同じビット位置のエラーを訂正しているECLエントリが、既に割り当てられていないかどうかを判定することができる。
ECLエントリ・ブロック120には、複数の、少なくとも一つの占有ビット124を含めることができる。一つの実施形態において、各ECLエントリに対応する少なくとも一つの占有ビット124は複数のビットとすることが可能である。複数のビットはそれぞれ、いくつのメモリ・ブロックが、各ECLエントリ中に格納された情報を用いることによって訂正が可能な書き込みエラーを含んでいるのか、を示すことができる。例えば、エラー含有データ・ビット・ブロック112のm個が、一つのECLエントリにマップされる場合、対応する複数の占有ビット124に数値mをコード化することが可能である。
説明のための一例として、図3の複数のメモリ・ブロック110の最上部から9番目のデータ・ビット・ブロック112が、あるセットの欠陥ビット位置に2つの書き込みエラーを含み、図3の複数のメモリ・ブロック110の最上部から15番目のデータ・ビット・ブロック112が、同じセットの欠陥ビット位置に2つの書き込みエラーを含むことがあり得る。対応する各ポインタ・ビット・ブロック114は、同じアドレスを指示するようにセットされる。具体的には、第九データ・ビット・ブロック112のポインタ・ビット・ブロック114と、第十五データ・ビット・ブロック112のポインタ・ビット・ブロック114とは、0011の値を有するようにセットされ、これは、ECLエントリ・ブロック120中の0001(2を減算後)のアドレスをポイントする。このECLエントリ・ブロック中の第二ECLエントリに対する複数の占有ビット124は、複数の占有ビット124中のビットの合計数に応じ、例えば、10、010、0010、00010、000010などにセットすることにより、数値2を示すようにセットされる。
一般に、複数の占有ビット124はそれぞれ、対応するECLエントリの利用可能性を(例えば0の値を有することによって)示し、また、いくつのエラー含有データ・ビット・ブロック112が対応するECLエントリにマップされているのかを示すこともできる。
図4を参照すると、ECLマッパ130が示されている。ECLマッパ130は、ECLエントリ・ブロック120内のECLエントリの各サブセットの場所に関する情報を含む。ECLマッパ130は、ECLエントリの各サブセット(122_2、122_i、122_N−1、122_N)のアドレス範囲の識別を可能にする代表アドレスのセットを含む。一例において、ECLマッパ130には、ECLエントリの全サブセット中の第一アドレス群、またはECLエントリの第一サブセット(その第一アドレスは0である)以外の全てのECLエントリのサブセットの第一アドレス群のセットを含めることができる。別の例において、ECLマッパ130には、ECLエントリの全サブセット中の最後のアドレス群、またはECLエントリの最後のサブセット(その最後のアドレスはECLエントリ・ブロック120の最後のECLエントリのアドレスである)以外の全てのECLエントリのサブセットの最後のアドレス群のセットを含めることができる。
ECLマッパ130は、2つの行または2つの列を包含するテーブル・フォーマットで設けることが可能である。第一行または第一列には、ECLエントリの各サブセットが訂正するように設定された、エラー含有データ・ビット・ブロック112当たりの最大ビット数を含めることができる。第二行または第二列には、ECLエントリの対応するサブセットの第一アドレスまたは最後のアドレスを含めることができる。ECLエントリのサブセットの第一アドレスがECLマッパ130中にリストされている場合、図4のケースのように、この場合、ECLエントリの第一サブセットの第一アドレスが0なので、2つの書き込みエラーを訂正するように設定された、ECLエントリの第一サブセットに対するエントリを省略することができる。
図2中のECLエントリ・ブロック120に適用される説明の一例として、ECLマッパ130が、ECLエントリの全サブセット中の第一アドレスのセットを含み、ECLエントリのセットが、2つの書き込みエラーを修復するように設定された6つのECLエントリの第一サブセット122_2と、Kの書き込みエラーを修復するように設定された4つのECLエントリの第iサブセット122_iと、N−1の書き込みエラーを修復するように設定された2つのECLエントリを含む最後から2番目のサブセット122_N−1と、Nの書き込みエラーを修復するように設定された1つのECLエントリの最後のサブセット122_Nと、を含む場合、ECLマッパ130は、図5に示されたテーブルを含み得る。前述のように、ソフトウェアがアドレス0000をECLエントリの第一サブセット122_2の第一アドレスとして認識するようにプログラムできるので、図5のテーブル中の第一列は省略が可能である。
ECLエントリ・ブロック120中のECLエントリは、当該技術分野で既知の任意のエラー訂正スキームを用いてエラー訂正データをコード化できる。ECLエントリ・ブロック120中で使用可能なエラー訂正スキームには、以下に限らないが、Schechterらによって開示されたエラー訂正ポインタ(ECP:error correction pointer)法、またはNak Hee Seongらによって開示された縮退故障エラー修復(SAFER:Stuck−At−Fault Error Recovery)法が含まれる。
図6を参照すると、第一フロー・チャート600は、エラー訂正データをコード化するためECP法を用いる第一の適応マルチビット・エラー訂正法を表している。第一フロー・チャートの最初のステージにおいて、複数のメモリ・ブロック110内のある個別メモリ・ブロック中に書き込みエラーが検出される。図1、2、および3も参照。
ステップ601を参照すると、書き込み要求が行われ、これは、ターゲット・データを複数のメモリ・ブロック110内の指定されたメモリ・ブロック中に書き込む命令である。この指定されたメモリ・ブロックは、データを格納するように設定された第一ビット群と、ポインタを格納するように設定された第二ビット群とを含み、ポインタは、エラー訂正ロジック・エントリ・インデックス(ECLインデックス)である。第一ビット群はデータ・ビット・ブロック112を構成し、第二ビット群はポインタ・ビット・ブロック114を構成する。
ステップ610を参照すると、指定されたメモリ・ブロックに対するECLエントリ・インデックスが読み出される。ECLエントリ・インデックスは、指定されたメモリ・ブロックに対応する、ポインタ・ビット・ブロック114内に格納されたポインタのデータである。
ECLエントリ・インデックスが、指定されたメモリ・ブロック中に書き込みエラーがないことを示す(図2および3中の0000などの)第一状態にある場合、ステップ620は、いかなる追加のオペレーションも導入しない。ECLエントリ・インデックスが、指定されたメモリ・ブロック中に単一の書き込みエラーがあることを示す(図2および3中の0001などの)第二状態にある場合、ステップ620は、その単一ビット書き込みエラーを補正するオペレーションを有効にする。例えば、単一ビット書き込みエラーを補正するオペレーションは、ターゲット・データを指定されたメモリ・ブロックに格納しようとする前にターゲット・データの全ビットを反転させる補数オペレーションとすることができる。
ECLエントリ・インデックスが第一状態または第二状態にない場合は、これまでにその指定されたメモリ・ブロック中で2つ以上の書き込みエラーが検出されており、ECLエントリ・ブロック120内のあるECLエントリが、その指定されたメモリ・ブロックに関連付けられている。ステップ620で、指定されたメモリ・ブロックにマップされた、すなわち関連付けられたECLエントリのアドレスを、対応するポインタ・ビット・ブロック114の内容すなわちECLエントリ・インデックスから、図2および3で示したように2の値を差し引くなど、所定のアルゴリズムによって導出することができる。指定されたメモリ・ブロックにマップされたECLエントリの内容は、その指定されたメモリ・ブロックのデータ・ビット・ブロック112内の破損ビットのビット位置を識別する故障ポインタ、および故障ポインタの各々に対応する修復ビットを含む。
例えば、各ポインタ・ビット・ブロックは、エラーの数またはマップされたECLエントリ・インデックスを示すため、int[log2(E)]個のビットを有することができる。Eは、ECLエントリ・ブロック120中のECLエントリの合計数であり、intはオペラントを次の最も近い整数に切り上げる関数である。ECLエントリ・インデックスが0の場合、対応するデータ・ビット・ブロック112は0のエラーを有する。ECLエントリ・インデックスが1の場合、対応するデータ・ビット・ブロック112は1つのエラーを有する。ECLエントリ・インデックスが2以上E−1以下の値を有する場合、マップされたECLエントリ、すなわち指定されたメモリ・ブロックに関連付けられたECLエントリが存在し、そのアドレスは、ECLエントリ・インデックスの値から2を減じたものである。
ステップ630を参照すると、ターゲット・データは、当初の形もしくは変更された形で、指定されたメモリ・ブロックのデータ・ビット・ブロック112中に書き込まれる。具体的には、ECLエントリ・インデックスが、指定されたメモリ・ブロック中に書き込みエラーがないことを示す第一状態にある場合にあっては、ターゲット・データは、当初の形で指定されたメモリ・ブロックのデータ・ビット・ブロック112中に書き込まれる。ECLエントリ・インデックスが、指定されたメモリ・ブロック中に単一の書き込みエラーがあることを示す第二状態にある場合にあっては、ターゲット・データは、ターゲット・データから導き出された変更された形で指定されたメモリ・ブロックのデータ・ビット・ブロック112に書き込まれ、この変更の形は、例えば、当初のターゲット・データの補数とすることができる。ECLエントリ・インデックスが第一状態または第二状態になく、ECLエントリ・ブロック120内のECLエントリが指定されたメモリ・ブロックに関連付けられている場合、ターゲット・データは別のフォーマットに変換され、このフォーマットは、ECLエントリ・ブロック120内のマップされたECLエントリの内容を使ったエラー訂正の後、当初のターゲット・データを再生する。マップされたECLエントリの内容、具体的にはマップされたECLエントリの修復ビット中のデータは、このデータ書き込みステップの過程で変更される。
ステップ640を参照すると、指定されたメモリ・ブロックのデータ・ビット・ブロック112の中に書き込まれたデータが(必要に応じて、任意のマップされたECLエントリの内容を用いる本明細書に記載のエラー訂正を用いて)読み出され、当初のターゲット・データに対して検証される。
ステップ645を参照すると、ECLコントローラ140または中央処理装置(CPU)で実行される任意の関連プログラムが、ターゲット・データを指定されたメモリ・ブロック中に格納する過程で書き込みエラーが生じているかどうかを判定する。データ・ビット・ブロック112と、対応するポインタ・ビット・ブロック114と、存在する場合、いずれかのマップされたECLエントリとから読み出されたデータが、当初のターゲット・データと一致する場合、書き込みエラーはない。この場合、プロセスの流れはステップ690に続き、ECLコントローラまたはプログラムによって、書き込みの成功完了の信号を生成することができる。
データ・ビット・ブロック112と、対応するポインタ・ビット・ブロック114と、存在する場合、いずれかのマップされたECLエントリとから読み出されたデータが、当初のターゲット・データと一致しない場合、少なくとも一つの書き込みエラーがある。指定されたメモリ・ブロックのデータ・ビット・ブロック112中にある書き込みエラーが合計で一つだけなので、例えば、ECLエントリ・ブロック120を用いることなくこの書き込みエラーの訂正が可能な場合、対応するポインタ・ビット・ブロック中のECLエントリ・インデックスが変更され、ターゲット・データを指定されたメモリ・ブロックに正しく書き込むための別の試みが行われる。この試みが成功した場合、プロセスの流れはステップ690に続き、ECLコントローラまたはプログラムによって、書き込みの成功完了の信号を生成することができる。
例えば、データ・ビット・ブロック112中に合計で複数の書き込みエラーがあるので、ECLエントリ・ブロック120を用いることなくこの書き込みエラーの訂正ができない場合、プロセスの流れはステップ655に続く。データ・ビット・ブロック112中の書き込みエラーの合計数を、本明細書では(k+1)で表すものとする。データ・ビット・ブロック112中の前もって知られたエラーの数は、(k+1)より小さい数字で、0以上k以下の数である。ステップ645の終了までには、少なくとも一つの書き込みエラーの検出が完了する。
第一フロー・チャート600の第二ステージにおいて、指定されたメモリ・ブロック中の書き込みエラーを訂正するために利用可能なECLエントリが、ECLエントリ・ブロック120内で特定される。この利用可能なECLエントリは、エラー含有メモリ・ブロック中、すなわち指定されたメモリ・ブロック中の書き込みエラーの合計数(k+1)と同じ数のビット、またはそれより大きな数のビットに対しエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセットの中で特定される。
少なくとも(k+1)の書き込みエラーを訂正するためのECLエントリが利用可能かどうかは、以下のやり方で判定することができる。前述のように、各ECLエントリは、対応する少なくとも一つの占有ビット124を有し得る。第一実施形態において、この少なくとも一つの占有ビット124は、それが、複数のエラー含有メモリ・ブロックのECLエントリ群への一対一のマッピングにおいて、いずれかのメモリ・ブロックに使用されているかどうかを示す単一のビットである。第二実施形態では、この少なくとも一つの占有ビット124は、所与のECLエントリにマップされているメモリ・ブロックの数を示すカウンタとして機能する複数の占有ビットである。このカウンタは、新たなメモリ・ブロックが、あるECLエントリにマップされるたびにインクリメントされ、メモリ・ブロックのそのECLエントリへのマップが終わるたびにデクリメントされる。カウンタの値がゼロになると、それは、そのECLエントリが解放されていることを示す。
ECLエントリの各サブセット中のECLエントリの合計数は事前設定され、レジスタに事前ロードされる。このオペレーションを遂行するため、前述のECLマッパ130を用いることができる。ECLエントリのサブセットの合計数をLとすれば、図5に示すように、ECLマッパ130に対し、L行またはL列のハードウェア・テーブルを用いることができる。あるいは、図4に示されるように、対応するECLエントリの第一アドレスがテーブルにリストされている場合、上記に換えて、ECLマッパ130に対してL−1行またはL−1列のハードウェア・テーブルを用いることが可能である。メモリ・ブロック当たり、すなわちデータ・ビット・ブロック112当たりに規定された最大数のエラーを訂正する能力のある、ECLエントリの対応するサブセットすなわち対応するECLエントリの群の開始インデックスを示すため、各エントリはint[log2(E)]個のビットを有することができる。
前述のように、第一ECLエントリは、0のアドレスを有する。すなわち、2つの書き込みエラーを訂正する能力のある、ECLエントリの第一サブセットの開始部に位置する。第一実施形態において、(k+1)が2に等しい場合、すなわち指定されたメモリ・ブロックが2つだけのエラーを有する場合、利用可能なECLエントリに対する探索は、ECLエントリ・ブロック120の第一ECLエントリから開始される。例えば、対応する占有ビット124中に「1」が存在することによって、最後に探索されたECLエントリが占有されていることが示されている場合、そのECLエントリのアドレスは1つインクリメントされる。2つの書き込みエラーを訂正する能力のある、ECLエントリの第一サブセットの中に利用可能なECLエントリが見つからない場合、ECLエントリの残りのサブセットの中で最小の数の書き込みエラーを訂正する能力のある、ECLエントリの次のサブセットが探索され、利用可能なECLエントリが見つかるまでこれが繰り返される。
第二実施形態において、(k+1)が2に等しい場合、メモリ・ブロック当たり2つのエラーの訂正ビットを有する、ECLエントリの第一サブセットに対し、その中のいずれかのECLエントリが、指定されたメモリ・ブロック中に存在する2つの書き込みエラーをエラー訂正するために必要な情報を既にコード化しているかどうかが探索される。この探索の過程で、その2つの書き込みエラーをエラー訂正するために必要な情報をコード化しているECLエントリが見出された場合、指定されたメモリ・ブロックのポインタ・ビット・ブロック114は、例えば、そのECLエントリのアドレスに2の値をプラスした和の数を格納することによって、そのECLエントリを参照するビットを使ってコード化される。そのECLエントリの複数の占有ビット124は、もう一つのメモリ・ブロックがそのECLエントリにマップされたことを示すため、1つインクリメントされる。このような整合するECLエントリが見つからない場合、利用可能なECLエントリの探索は、第一実施形態におけるのと同じ仕方で、ECLエントリ・ブロック120の第一ECLエントリから開始される。例えば、対応する複数の占有ビット124中に0以外の何らかの数が存在することによって、最後に探索されたECLエントリが占有されていることが示されている場合、そのECLエントリのアドレスが1つインクリメントされる。2つの書き込みエラーを訂正する能力のある、ECLエントリの第一サブセットの中に利用可能なECLエントリが見つからない場合、ECLエントリの残りのサブセットの中で最小の数の書き込みエラーを訂正する能力のある、ECLエントリの次のサブセットが探索され、利用可能なECLエントリが見つかるまでこれが繰り返される。
第一および第二実施形態において、(k+1)が2より大きい場合、すなわち、指定されたメモリ・ブロックが2つより多いエラーを有する場合、ECLマッパ130を利用することができる。図4を参照すると、ECLマッパ130の中で、ECLエントリのサブセットが提供するエラー訂正ビットの最小の数が探索され、これは(k+1)に等しいか、または(k+1)より大きい。ECLエントリのさまざまなサブセットが、メモリ・ブロック当たり(k+1)のエラー訂正を提供するサブセットを含む場合、図4ではtとして示されている、そのサブセットに対する第一ECLエントリのアドレスが、ECLマッパ130から読み出される。ECLエントリのさまざまなサブセットは、メモリ・ブロック当たり(k+1)のエラー訂正を提供するサブセットを含んでいないが、ECLエントリのサブセットが提供するエラー訂正ビットの最小の数が(k+j)であり、このjが1より大きい場合、(k+j)ビットに対しエラー訂正を提供するように設定された、ECLエントリのサブセットに対する第一ECLエントリのアドレスがECLマッパ130から読み出される。
図6のステップ655に戻って参照すると、第一実施形態において、(k+1)が2より大きい場合、利用可能なECLエントリに対する探索は、メモリ・ブロック当たり(k+1)の書き込みエラーまたは(k+j)の書き込みエラーを訂正するように設定されたサブセットの第一ECLエントリから開始される。例えば、対応する占有ビット124中に「1」が存在することによって、最後に探索されたECLエントリが占有されていることが示されている場合、そのECLエントリのアドレスは1つインクリメントされる。(k+1)の書き込みエラーまたは(k+j)の書き込みエラーを訂正するように設定されたサブセット中に利用可能なECLエントリが見つからない場合、ECLエントリの残りのサブセットの中で最小の数の書き込みエラーを訂正する能力のある、ECLエントリの次のサブセットが探索され、利用可能なECLエントリが見つかるまでこれが繰り返される。
第二実施形態において、(k+1)が2より大きい場合、メモリ・ブロック当たり(k+1)の書き込みエラーまたは(k+j)の書き込みエラーを訂正するように設定されたサブセットに対し、その中のいずれかのECLエントリが、指定されたメモリ・ブロック中に存在する(k+1)の書き込みエラーをエラー訂正するために必要な情報を既にコード化しているかどうかが探索される。この探索の過程で、(k+1)の書き込みエラーをエラー訂正するために必要な情報をコード化しているECLエントリが見出された場合、指定されたメモリ・ブロックのポインタ・ビット・ブロック114は、例えば、そのECLエントリのアドレスに2の値をプラスした和の数を格納することによって、そのECLエントリを参照するビットを使ってコード化される。そのECLエントリの複数の占有ビット124は、もう一つのメモリ・ブロックがそのECLエントリにマップされたことを示すため、1つインクリメントされる。このような整合するECLエントリが見つからない場合、利用可能なECLエントリの探索は、第一実施形態におけるのと同じ仕方で、(k+1)の書き込みエラーまたは(k+j)の書き込みエラーを訂正するように設定されたサブセットから開始される。例えば、対応する複数の占有ビット124中に0以外の何らかの数が存在することによって、最後に探索されたECLエントリが占有されていることが示されている場合、そのECLエントリのアドレスが1つインクリメントされる。(k+1)の書き込みエラーまたは(k+j)の書き込みエラーを訂正するように設定されたサブセットの中に利用可能なECLエントリが見付からない場合、ECLエントリの残りのサブセットの中で最小の数の書き込みエラーを訂正する能力のある、ECLエントリの次のサブセットが探索され、利用可能なECLエントリが見つかるまでこれが繰り返される。
第一実施形態において、利用可能なECLエントリは、空で(いかなるエラー訂正情報も格納していない)、十分なエラー訂正ビット、すなわち、少なくとも(k+1)のエラー訂正ビットを有するECLエントリである。第二実施形態において、利用可能なECLエントリは、新しく見つかったエラー含有メモリ・ブロックを訂正するのに必要な、同じエラー訂正データ・ビットを既にコード化しているECLエントリか、もしくは空で十分なエラー訂正ビットを有するECLエントリのいずれかである。ECLエントリ・ブロック120中に格納されるエラー訂正ビットの数を低減するために、新しく見つかったエラー含有メモリ・ブロックに対しエラー訂正を提供するため一つ以上のECLエントリを用いることが可能な場合、最小の数のエラー訂正ビットを有する利用可能なECLエントリが選択される。
ECLエントリ・ブロック120中の全エントリを探索した後に利用可能なECLエントリ見付けることができない場合、プロセスの流れはステップ699に進む。この場合、エラー訂正が不可能であることを示す信号が生成され、中央処理装置(CPU)などの適切なデバイスに送信される。
利用可能なECLエントリが見つかった場合、プロセスの流れはステップ660に進む。選択されたメモリ・ブロックが、占有されているECLエントリ、すなわち、前の書き込みエラーの検出に基づいて既にマップされた占有済みECLエントリに現在関連付けられている場合、その現在関連付けられているECLエントリは、部分的または全面的に解放される。第一実施形態において、現在関連付けられているECLエントリは、対応する単一占有ビットを「1」から「0」に変更することによって全面的に解放される。第二実施形態において、現在関連付けられているECLエントリは、対応する複数の占有ビットを1の値から0の値に変更することによって全面的に、もしくは、対応する複数の占有ビットを、1より大きい整数から1つデクリメントすることによって部分的に解放される。
適切な利用可能なECLエントリが特定されたならば、その利用可能なECLエントリは、ECLコントローラ140またはメモリ・デバイス100中のメモリ・ストレージを制御するプログラムによって割り当てられる。新規ECLエントリは、指定されたメモリ・ブロックに割り当てられる。新規ECLエントリは、エラー修復スキームに従って更新される。これまでメモリ・ブロックによって保持されていたECLエントリのポインタが更新される。言い換えれば、新規ECLエントリのアドレスが、指定されたエラー含有メモリ・ブロックのポインタ、すなわちECLエントリ・インデックスに格納され、指定されたエラー含有メモリ・ブロック中の全ての書き込みエラーを訂正するための情報が新規のECLエントリに格納される。
ステップ670を参照すると、少なくとも(k+1)の書き込みエラーを訂正するように設定された、ECLエントリのサブセット中の新規ECLエントリが、少なくとも一つの新しい書き込みエラーを包含することが判明した指定のメモリ・ブロック中の書き込みエラーを訂正するために割り当てられる。前述のように、少なくとも(k+1)の書き込みエラーを訂正するように設定された、ECLエントリのサブセットは、指定されたメモリ・ブロック中の(k+1)の書き込みエラーを訂正する能力のある新規のまたは既存の「利用可能なECLエントリ」の有無の如何によって、(k+1)の書き込みエラーを訂正するように設定されたECLエントリのサブセット、あるいは(k+j)の書き込みエラーを訂正するように設定されたECLエントリのサブセットとすることができる。
具体的には、新規ECLエントリの内容は、指定されたメモリ・ブロックのデータ・ビット・ブロック112中に格納された生データをエラー訂正するのに必要な情報をコード化するため適切に変更される。例えば、新規ECLエントリの内容には、故障ポインタおよびデータ・ビット・ブロック112に対する修復ビットを含めることができる。この情報は、第一ビット群、すなわちデータ・ビット・ブロック112中の少なくとも一つの個別エラー・ビットをポイントする少なくとも一つのビット・ポインタを含む。通常、この情報は、データ・ビット・ブロック112中の複数の個別エラー・ビットをポイントする複数のビット・ポインタを含む。
ステップ680を参照すると、指定されたメモリ・ブロックのポインタ・ビット・ブロック114に対するECLエントリ・インデックスが、例えば、2と新規ECLエントリのアドレスとの和に等しい値を格納することによって、新規ECLエントリを参照するために変更される。
次いでプロセスの流れはステップ630に進むことができ、ポインタ・ビット・ブロック114および新規ECLエントリに具現された新しいエラー訂正スキームを用いて、ターゲット・データを、選択されたメモリ・ブロック中に正しく書き込めることを確認する。
図7を参照すると、第二フロー・チャート700が、エラー訂正データをコード化するために縮退故障エラー修復(SAFER)法を用いる、第二適応マルチビット・エラー訂正法を表している。第二フロー・チャート700の最初のステージにおいて、図6中の第一フロー・チャート600におけるのと同じ仕方で、複数のメモリ・ブロック110内のある個別メモリ・ブロック中に書き込みエラーが検出される。
ステップ701を参照すると、第一フロー・チャートのステップ601と同じ仕方で書き込み要求が行われる。
ステップ710を参照すると、図6中の第一フロー・チャートのステップ610と同じ仕方で、指定されたメモリ・ブロックに対するECLエントリ・インデックスが読み出される。
ECLエントリ・インデックスが、指定されたメモリ・ブロック中に書き込みエラーがないことを示す(図2および3中の0000などの)第一状態にある場合、ステップ720はいかなる追加のオペレーションも導入しない。ECLエントリ・インデックスが、指定されたメモリ・ブロック中に単一の書き込みエラーがあることを示す(図2および3中の0001などの)第二状態にある場合、ステップ720は、その単一ビット書き込みエラーを補正するオペレーションを有効にする。例えば、単一ビットの書き込みエラーを補正をするオペレーションは、ターゲット・データを指定されたメモリ・ブロックに格納しようとする前にターゲット・データの全ビットを反転させる補数オペレーションとすることができる。
ECLエントリ・インデックスが第一状態または第二状態にない場合は、これまでに指定されたメモリ・ブロック中に2つ以上の書き込みエラーが検出されており、ECLエントリ・ブロック120内の、あるECLエントリがその指定されたメモリ・ブロックに関連付けられている。ステップ720で、指定されたメモリ・ブロックにマップされた、すなわち関連付けされたECLエントリのアドレスを、対応するポインタ・ビット・ブロック114の内容すなわちECLエントリ・インデックスから、図2および3で示したような2の値の減算など所定のアルゴリズムによって導出することができる。指定されたメモリ・ブロックにマップされたECLエントリの内容は、第二フロー・チャート700中で用いられる異なったエラー訂正アルゴリズムに起因して、第一フロー・チャート600の内容とは異なっている。具体的には指定されたメモリ・ブロックにマップされたECLエントリは、故障用キャッシュおよび補数ビットを含む。ステップ720で、故障用キャッシュおよび補数ビットに関する情報が解析されて、故障位置およびパーティション情報が判定される。
第一フロー・チャート600の方法におけるのと同様に、各ポインタ・ビット・ブロックは、エラーの数またはマップされたECLエントリ・インデックスを示す、int[log2(E)]個のビットを有することができる。ECLエントリ・インデックスが0の場合、対応するデータ・ビット・ブロック112は0のエラーを有する。ECLエントリ・インデックスが1の場合、対応するデータ・ビット・ブロック112は1つのエラーを有する。ECLエントリ・インデックスが2以上E−1以下の値を有する場合、マップされたECLエントリ、すなわち指定されたメモリ・ブロックに関連付けられたECLエントリが存在し、そのアドレスは、ECLエントリ・インデックスの値から2を減じたものである。
ステップ730を参照すると、ターゲット・データは、当初の形もしくは変更された形で、指定されたメモリ・ブロックのデータ・ビット・ブロック112中に書き込まれる。具体的には、ECLエントリ・インデックスが、指定されたメモリ・ブロック中に書き込みエラーがないことを示す第一状態にある場合にあっては、ターゲット・データは、当初の形で指定されたメモリ・ブロックのデータ・ビット・ブロック112中に書き込まれる。ECLエントリ・インデックスが、指定されたメモリ・ブロック中に単一の書き込みエラーがあることを示す第二状態にある場合にあっては、ターゲット・データは、ターゲット・データから導き出された変更された形で指定されたメモリ・ブロックのデータ・ビット・ブロック112に書き込まれ、この変更の形は、例えば、当初のターゲット・データの補数とすることができる。ECLエントリ・インデックスが第一状態または第二状態になく、ECLエントリ・ブロック120内のあるECLエントリが指定されたメモリ・ブロックに関連付けられている場合、ターゲット・データは別のフォーマットに変換され、このフォーマットは、ECLエントリ・ブロック120内のマップされたECLエントリの内容を使ったエラー訂正の後、当初のターゲット・データを再生する。マップされたECLエントリの内容、具体的にはマップされたECLエントリの修復ビット中のデータは、このデータ書き込みステップの過程で適切に変更される。
ステップ740を参照すると、指定されたメモリ・ブロックのデータ・ビット・ブロック112の中に書き込まれたデータが(必要に応じて、任意のマップされたECLエントリの内容を用いる適切なエラー訂正を用いて)読み出され、当初のターゲット・データに対して検証される。
ステップ745を参照すると、ECLコントローラ140または中央処理装置(CPU)で実行される任意の関連プログラムが、指定されたメモリ・ブロック中にターゲット・データを格納する過程で書き込みエラーが生じているかどうかを判定する。データ・ビット・ブロック112と、対応するポインタ・ビット・ブロック114と、存在する場合、いずれかのマップされたECLエントリとから読み出されたデータが、当初のターゲット・データと一致する場合、書き込みエラーはない。プロセスの流れはステップ790に続き、ECLコントローラまたはプログラムによって、書き込みの成功完了の信号を生成することができる。
データ・ビット・ブロック112と、対応するポインタ・ビット・ブロック114と、存在する場合、いずれかのマップされたECLエントリとから読み出されたデータが、当初のターゲット・データと一致しない場合、少なくとも一つの書き込みエラーがある。指定されたメモリ・ブロックのデータ・ビット・ブロック112中にある書き込みエラーが合計で一つだけなので、例えば、ECLエントリ・ブロック120を用いることなくこの書き込みエラーの訂正が可能な場合、対応するポインタ・ビット・ブロック中のECLエントリ・インデックスが適切に変更され、指定されたメモリ・ブロックにターゲット・データを正しく書き込むための別の試みが行われる。この試みが成功した場合、プロセスの流れはステップ790に続き、ECLコントローラまたはプログラムによって、書き込みの成功完了の信号を生成することができる。
例えば、データ・ビット・ブロック112中に合計で複数の書き込みエラーがあるので、ECLエントリ・ブロック120を用いることなく、この書き込みエラーの訂正ができない場合、プロセスの流れはステップ755に続く。データ・ビット・ブロック112中の書き込みエラーの合計数を、本明細書では(k+1)で表すものとする。データ・ビット・ブロック112中の前もって知られたエラーの数は、(k+1)より小さい数字で、0以上k以下の数である。ステップ745の終了までには、少なくとも一つの書き込みエラーの検出が完了する。
第二フロー・チャート700の第二ステージにおいて、指定されたメモリ・ブロック中の書き込みエラーを訂正するために利用可能なECLエントリが、ECLエントリ・ブロック120内で特定される。この利用可能なECLエントリは、エラー含有メモリ・ブロック中、すなわち指定されたメモリ・ブロック中の書き込みエラーの合計数(k+1)と同じ数のビット、またはそれより大きな数のビットに対しエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセットの中で特定される。
少なくとも(k+1)の書き込みエラーを訂正するためのECLエントリが利用可能かどうかは、ステップ755で判定することができ、第一フロー・チャート600のステップ655と同じオペレーションが行われる。
ECLエントリ・ブロック120中の全エントリを探索した後に利用可能なECLエントリを見つけることができない場合、プロセスの流れはステップ799に進む。この場合、エラー訂正が不可能であることを示す信号が生成され、中央処理装置(CPU)などの適切なデバイスに送信される。
利用可能なECLエントリが見つかった場合、プロセスの流れはステップ760に進み、第一フロー・チャート600のステップ660と同じオペレーションが行われる。
ステップ770を参照すると、少なくとも(k+1)の書き込みエラーを訂正するように設定された、ECLエントリのサブセット中の新規ECLエントリが、少なくとも一つの新しい書き込みエラーを包含することが判明した指定されたメモリ・ブロック中の書き込みエラーを訂正するために割り当てられる。前述のように、少なくとも(k+1)の書き込みエラーを訂正するように設定された、ECLエントリのサブセットは、指定されたメモリ・ブロック中の(k+1)の書き込みエラーを訂正する能力のある新規のまたは既存の「利用可能なECLエントリ」の有無の如何によって、(k+1)の書き込みエラーを訂正するように設定された、ECLエントリのサブセット、あるいは(k+j)の書き込みエラーを訂正するように設定された、ECLエントリのサブセットとすることができる。
具体的には、新規ECLエントリの内容は、指定されたメモリ・ブロックのデータ・ビット・ブロック112中に格納された生データをエラー訂正するのに必要な情報をコード化するため、適切に変更される。例えば、新規ECLエントリの内容には、再パーティション情報およびデータ・ビット・ブロック112に対する適切な補数ビットを含めることができ、これらはSAFER法を用いるエラー訂正を提供するために必要である。この再パーティション情報は、SAFER法で用いられるパーティション・カウンタおよびパーティション・フィールドを含む。
ステップ780を参照すると、指定されたメモリ・ブロックのポインタ・ビット・ブロック114に対するECLエントリ・インデックスが、例えば、2と新規ECLエントリのアドレスとの和に等しい値を格納することによって、新規ECLエントリを参照するために変更される。
次いでプロセスの流れはステップ730に進み、ポインタ・ビット・ブロック114および新規ECLエントリに具現された新しいエラー訂正スキームを用いて、ターゲット・データを、選択されたメモリ・ブロック中に正しく書き込めることを確認する。
具体的な実施形態に関連して本開示を説明してきたが、前述の説明を考慮すれば、当業者には数多くの代替案、修改案、および変形案が自明なことは明らかであろう。したがって、本開示は、本開示および添付の請求項の範囲および趣旨内に含まれる、かかる全ての代替案、修改案、および変形案を網羅することが意図されている。
Claims (25)
- メモリ・デバイス中のエラーを訂正する方法であって、
複数のメモリ・ブロック、およびエラー訂正ロジック(ECL)エントリのセットを包含するエラー訂正ロジック(ECL)エントリ・ブロックを少なくとも含む、メモリ・デバイスを提供するステップであって、前記ECLエントリのセットはECLエントリの複数のサブセットを含み、ECLエントリの各サブセットは、前記複数のメモリ・ブロックの一つ以上において、メモリ・ブロック当たり異なる数のビットに対しエラー訂正を提供するように設定され、前記複数のメモリ・ブロックの各々が、前記ECLブロック内のECLエントリへのポインタを格納するように設定される、前記提供するステップと、
前記複数のメモリ・ブロックの中のエラー含有メモリ・ブロック中の書き込みエラーを検出するステップと、
前記ECLエントリ・ブロック中の利用可能なECLエントリを特定するステップと、
前記利用可能なECLエントリのアドレスを前記メモリ・ブロックのポインタに格納し、前記エラー含有メモリ・ブロック中の全ての書き込みエラーを訂正するための情報を前記利用可能なECLエントリ中に格納するステップと、
を含む方法。 - 前記利用可能なECLエントリが、前記エラー含有メモリ・ブロック中の書き込みエラーの合計数と同じ数のビット、またはそれより大きな数のビットに対しエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセットの中で特定される、請求項1に記載の方法。
- ECLエントリの合計ビット・サイズが、前記ECLエントリのセット内のECLエントリの各サブセットに対して異なる、請求項1に記載の方法。
- 前記合計ビット・サイズは、ECLエントリが訂正するように設定されたビットの合計数の狭義単調増加関数である、請求項3に記載の方法。
- 前記ECLエントリの複数のサブセットは、ECLエントリの第一サブセットおよび少なくとも一つのECLエントリを包含する最後のサブセットを含み、前記第一サブセット中の各ECLエントリは、メモリ・ブロック中の2つのビットに対しエラー訂正を提供するように設定され、前記最後のサブセット中の各ECLエントリは、メモリ・ブロック中のN個のビットに対しエラー訂正を提供するように設定されており、Nは2より大きい整数である、請求項1に記載の方法。
- Nは3より大きく、前記ECLエントリの複数のサブセットは、前記第一サブセットと、前記最後のサブセットと、1より大きく(N−1)より小さい少なくとも一つの数iのセットに対する、ECLエントリの少なくとも一つの第iサブセットとを含み、前記第iサブセット中の各ECLエントリは、2より大きくNより小さい合計数のビットに対しエラー訂正を提供するように設定されている、請求項5に記載の方法。
- ECLエントリの各サブセット中のECLエントリの合計数は、各サブセット中の一つのECLエントリが訂正するように設定されたビットの合計数の単調減少関数である、請求項1に記載の方法。
- 前記ECLエントリ・ブロックは、前記ECLエントリの複数のサブセットの一つを各々が含む複数のサブブロックにパーティションされ、一つのECLエントリ中の合計ビットの数は、各サブブロック内では同じであり、どの異なるサブブロック中のECLエントリの合計ビットの数とも異なっている、請求項1に記載の方法。
- 前記ECLエントリ・ブロックは、複数の、少なくとも一つの占有ビットを含み、前記複数の、少なくとも一つの占有ビットの各々は、メモリ・ブロック中の書き込みエラーを訂正するための情報を格納するための対応するECLエントリの利用可能性を示すように設定される、請求項1に記載の方法。
- 前記複数のメモリ・ブロックの各々は、データを格納するための第一ビット群、および前記ECLブロック内のECLエントリへのポインタを格納するための第二ビット群を含み、前記複数の、少なくとも一つの占有ビットの各々は、前記ECLエントリそれぞれが、前記対応するメモリ・ブロック内の第一ビット群中の情報を訂正するためのデータを現在格納しているかどうかを示す単一のビットである、請求項9に記載の方法。
- 前記複数の、少なくとも一つの占有ビットの各々は、前記複数のメモリ・ブロックのいくつが、前記ECLエントリそれぞれに格納された情報を用いることによって訂正が可能な書き込みエラーを含むかを示す複数のビットである、請求項9に記載の方法。
- 前記複数のメモリ・ブロックの各々が、データを格納するための第一ビット群および前記ECLブロック内のECLエントリへのポインタを格納するための第二ビット群を含み、前記情報は、前記第一ビット群中の少なくとも一つの個別エラー・ビットをポイントする少なくとも一つのビット・ポインタを含む、請求項9に記載の方法。
- 前記情報が、縮退故障エラー修復(SAFER)法で用いられるパーティション・カウンタおよびパーティション・フィールドを含む、請求項9に記載の方法。
- 前記ECLエントリ・ブロック内の、ECLエントリの各サブセットの位置に関する情報を含むエラー訂正エントリ(ECL)マッパをさらに含む、請求項1に記載の方法。
- 前記ECLマッパが、ECLエントリの複数のサブセット中の第一アドレスのセットおよび前記ECLエントリの複数のサブセット中の最後のアドレスのセットから選択されたアドレスのセットを含む、請求項14に記載の方法。
- 前記利用可能なECLエントリが、ECLエントリの少なくとも一つのサブセットの中で、最少ビットのエラー訂正を提供するように設定された、ECLエントリのサブセット内から選択される、請求項1に記載の方法。
- 複数のメモリ・ブロックであって、前記複数のメモリ・ブロックの各々は、データを格納するための第一ビット群およびECLブロック内のECLエントリへのポインタを格納するための第二ビット群を含む、前記複数のメモリと、
エラー訂正ロジック(ECL)エントリのセットを含む、エラー訂正ロジック(ECL)エントリ・ブロックであって、前記ECLエントリのセットはECLエントリの複数のサブセットを含み、ECLエントリの各サブセットが、前記複数のメモリ・ブロックの一つ以上において、メモリ・ブロック当たり異なる数のビットに対しエラー訂正を提供するように設定される、エラー訂正ロジック(ECL)エントリ・ブロックと、
を含むメモリ・デバイス。 - ECLエントリの合計ビット・サイズが、前記ECLエントリのセット内のECLエントリの各サブセットに対して異なる、請求項17に記載のメモリ・デバイス。
- 前記合計ビット・サイズは、ECLエントリが訂正するように設定されたビットの合計数の狭義単調増加関数である、請求項18に記載のメモリ・デバイス。
- 前記ECLエントリの複数のサブセットは、ECLエントリの第一サブセットおよび少なくとも一つのECLエントリを包含する最後のサブセットを含み、前記第一サブセット中の各ECLエントリは、メモリ・ブロック中の2つのビットに対しエラー訂正を提供するように設定され、前記最後のサブセット中の各ECLエントリは、メモリ・ブロック中のN個のビットに対しエラー訂正を提供するように設定されており、Nは2より大きい、請求項17に記載のメモリ・デバイス。
- Nは3より大きく、前記ECLエントリの複数のサブセットは、前記第一サブセットと、前記最後のサブセットと、1より大きく(N−1)より小さい少なくとも一つの数iのセットに対する、ECLエントリの少なくとも一つの第iサブセットとを含み、前記第iサブセット中の各ECLエントリは、2より大きくNより小さい合計数のビットに対しエラー訂正を提供するように設定されている、請求項20に記載のメモリ・デバイス。
- ECLエントリの各サブセット中のECLエントリの合計数は、各サブセット中の一つのECLエントリが訂正するように設定されたビットの合計数の単調減少関数である、請求項17に記載のメモリ・デバイス。
- 前記ECLエントリ・ブロックは、前記ECLエントリの複数のサブセットの一つを各々が含む複数のサブブロックにパーティションされ、一つのECLエントリ中の合計ビットの数は、各サブブロック内では同じであり、どの異なるサブブロック中のECLエントリの合計ビットの数とも異なっている、請求項17に記載のメモリ・デバイス。
- 前記複数のメモリ・ブロックの中のエラー含有メモリ・ブロック中の書き込みエラーを検出し、
利用可能なECLエントリを、前記エラー含有メモリ・ブロック中の書き込みエラーの合計数と同じ数のビット、またはそれより大きな数のビットに対しエラー訂正を提供するように設定された、ECLエントリの少なくとも一つのサブセットの中で特定する、
ように設定されたECLコントローラをさらに含む、請求項17に記載のメモリ・デバイス。 - 前記ECLコントローラは、前記利用可能なECLエントリのアドレスを前記メモリ・ブロックのポインタに格納し、前記エラー含有メモリ・ブロック中の全ての書き込みエラーを訂正するための情報を、前記利用可能なECLエントリ中に格納するようにさらに設定される、請求項24に記載のメモリ・デバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/176,092 US8589762B2 (en) | 2011-07-05 | 2011-07-05 | Adaptive multi-bit error correction in endurance limited memories |
US13/176,092 | 2011-07-05 | ||
PCT/US2012/033021 WO2013006222A1 (en) | 2011-07-05 | 2012-04-11 | Adaptive multi-bit error correction in endurance limited memories |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014518423A true JP2014518423A (ja) | 2014-07-28 |
Family
ID=47437339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014518554A Pending JP2014518423A (ja) | 2011-07-05 | 2012-04-11 | 限られた耐久性のメモリにおける適応マルチビット・エラー訂正 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8589762B2 (ja) |
JP (1) | JP2014518423A (ja) |
DE (1) | DE112012002843B4 (ja) |
GB (1) | GB2505823B (ja) |
WO (1) | WO2013006222A1 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274885B2 (en) * | 2011-12-30 | 2016-03-01 | Intel Corporation | Phase change memory with switch (PCMS) write error detection |
US9235465B2 (en) * | 2012-06-06 | 2016-01-12 | University of Pittsburgh—of the Commonwealth System of Higher Education | Recursively determined invertible set approach to correct multiple stuck-at faults in rewritable memory |
US9070483B2 (en) * | 2012-10-10 | 2015-06-30 | HGST Netherlands B.V. | Encoding and decoding redundant bits to accommodate memory cells having stuck-at faults |
US8943388B2 (en) * | 2012-12-12 | 2015-01-27 | HGST Netherlands B.V. | Techniques for encoding and decoding using a combinatorial number system |
KR102104833B1 (ko) * | 2013-03-15 | 2020-06-01 | 삼성전자주식회사 | 메모리 컨트롤러, 및 이의 동작 방법 |
US9343132B2 (en) | 2013-05-22 | 2016-05-17 | Headway Technologies, Inc. | MRAM write pulses to dissipate intermediate state domains |
US9152488B2 (en) * | 2013-06-25 | 2015-10-06 | Sandisk Technologies Inc. | Storage module and low-complexity methods for assessing the health of a flash memory device |
US9875810B2 (en) | 2013-07-24 | 2018-01-23 | Microsoft Technology Licensing, Llc | Self-identifying memory errors |
KR101697052B1 (ko) * | 2013-09-24 | 2017-01-16 | 인텔 코포레이션 | 메모리에서의 에러를 처리하기 위한 에러 정정 포인터의 사용 |
CN108196799B (zh) | 2013-11-22 | 2021-03-30 | 华为技术有限公司 | 存储设备的写入方法及写入装置 |
US9330738B2 (en) | 2014-04-21 | 2016-05-03 | The Mitre Corporation | Data storage using analog coding |
TWI569279B (zh) | 2015-10-15 | 2017-02-01 | 財團法人工業技術研究院 | 記憶體保護裝置與方法 |
GB2550929A (en) | 2016-05-31 | 2017-12-06 | Advanced Risc Mach Ltd | An apparatus and method for generating an error code for a block comprising a plurality of data bits and a plurality of address bits |
US10346232B2 (en) | 2017-08-16 | 2019-07-09 | Western Digital Technologies, Inc. | Non-volatile storage with failure prediction |
DE102018219877A1 (de) * | 2018-11-20 | 2020-05-20 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Erzeugen einer Fehlerkorrekturinformation |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893071A (en) * | 1974-08-19 | 1975-07-01 | Ibm | Multi level error correction system for high density memory |
US5291498A (en) | 1991-01-29 | 1994-03-01 | Convex Computer Corporation | Error detecting method and apparatus for computer memory having multi-bit output memory circuits |
US6035432A (en) | 1997-07-31 | 2000-03-07 | Micron Electronics, Inc. | System for remapping defective memory bit sets |
US6848063B2 (en) | 2001-11-20 | 2005-01-25 | Hewlett-Packard Development Company, L.P. | System and method for scrubbing errors in very large memories |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7200770B2 (en) | 2003-12-31 | 2007-04-03 | Hewlett-Packard Development Company, L.P. | Restoring access to a failed data storage device in a redundant memory system |
US7478307B1 (en) | 2005-05-19 | 2009-01-13 | Sun Microsystems, Inc. | Method for improving un-correctable errors in a computer system |
US7617434B1 (en) | 2005-12-13 | 2009-11-10 | Sprint Communications Company L.P. | Adaptive error correction |
US8171380B2 (en) * | 2006-10-10 | 2012-05-01 | Marvell World Trade Ltd. | Adaptive systems and methods for storing and retrieving data to and from memory cells |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
KR101642819B1 (ko) | 2009-08-31 | 2016-07-26 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 구동 방법, 그것을 포함하는 메모리 시스템 |
US8543863B2 (en) | 2009-11-18 | 2013-09-24 | Microsoft Corporation | Efficiency of hardware memory access using dynamically replicated memory |
-
2011
- 2011-07-05 US US13/176,092 patent/US8589762B2/en not_active Expired - Fee Related
-
2012
- 2012-04-11 WO PCT/US2012/033021 patent/WO2013006222A1/en active Application Filing
- 2012-04-11 DE DE112012002843.0T patent/DE112012002843B4/de not_active Expired - Fee Related
- 2012-04-11 GB GB1322155.1A patent/GB2505823B/en not_active Expired - Fee Related
- 2012-04-11 JP JP2014518554A patent/JP2014518423A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20130013977A1 (en) | 2013-01-10 |
GB201322155D0 (en) | 2014-01-29 |
GB2505823A (en) | 2014-03-12 |
DE112012002843B4 (de) | 2016-09-15 |
GB2505823B (en) | 2014-11-19 |
US8589762B2 (en) | 2013-11-19 |
DE112012002843T5 (de) | 2014-03-20 |
WO2013006222A1 (en) | 2013-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2014518423A (ja) | 限られた耐久性のメモリにおける適応マルチビット・エラー訂正 | |
JP5853040B2 (ja) | ストライプに基づく不揮発性多値メモリ操作 | |
US8631294B2 (en) | Methods and devices to increase memory device data reliability | |
US9003224B2 (en) | Managing unreliable memory in data storage systems | |
TWI407446B (zh) | 記憶體裝置內錯誤更正的動態資料儲存系統及方法 | |
US8688954B2 (en) | Remapping inoperable memory blocks using pointers | |
KR20120114366A (ko) | 비트 값들의 저장된 총계를 이용하여 데이터 에러들을 보정하는 시스템 및 방법 | |
US20230019910A1 (en) | Limiting hot-cold swap wear leveling | |
US11231990B2 (en) | Device and method for generating error correction information | |
US20210019058A1 (en) | Limiting hot-cold swap wear leveling | |
US20210019254A1 (en) | Wear leveling based on sub-group write counts in a memory sub-system | |
US20180090201A1 (en) | Method and apparatus for programming non-volatile memory using a multi-cell storage cell group to provide error location information for retention errors | |
US10963342B2 (en) | Metadata-assisted encoding and decoding for a memory sub-system | |
US11914510B2 (en) | Layer interleaving in multi-layered memory | |
US20220284977A1 (en) | Performing memory testing using error correction code values | |
KR20170009554A (ko) | 테스트 시스템 및 테스트 방법 | |
TWI763050B (zh) | 自適應損耗平衡方法及演算法與相關記憶體裝置及設備 | |
US11789861B2 (en) | Wear leveling based on sub-group write counts in a memory sub-system | |
US20240062839A1 (en) | Performing block-level media management operations for block stripes in a memory device | |
EP4198988A1 (en) | Storage controller using history data, method of operating the same, and method of operating storage device including the same | |
US11106370B2 (en) | Changing of memory components to be used for a stripe based on an endurance condition | |
US20220276957A1 (en) | Controller, semiconductor storage device, and a wear-leveling processing method in the device | |
WO2021011414A1 (en) | Recovery management of retired super management units | |
CN111597126A (zh) | 存取方法 |